npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nswds/app

v2.0.1

Published

Components, patterns and design tokens for building accessible NSW Government applications with Next.js.

Readme

NSW Application Design System

Components, patterns and design tokens for building accessible NSW Government applications with Next.js.

Documentation: https://app.designsystem.nsw.gov.au

Installation

npm install @nswds/app

Peer dependencies

@nswds/app does not bundle React or Next.js — it expects your application to provide them, so that only one copy of React is ever loaded:

| Package | Required version | | ------------- | ---------------- | | react | ^19.2.6 | | react-dom | ^19.2.6 | | next | ^16.2.6 | | next-themes | ^0.4.6 |

npm 7 and later install missing peer dependencies automatically. If your project is on an older version of React or Next.js, npm install will report an ERESOLVE conflict — upgrade rather than using --legacy-peer-deps, since two copies of React break hooks at runtime.

Everything else the components need is a regular dependency and is installed for you.

Usage

Import the stylesheet once, in your root layout. It ships pre-compiled, so you do not need Tailwind CSS configured in your own project:

// app/layout.tsx
import '@nswds/app/globals.css'

Components are then imported from the package root:

import { Button } from '@nswds/app'

export default function Page() {
  return <Button>Continue</Button>
}

Theming

Light and dark themes are keyed on a data-theme attribute, so ThemeProvider must be configured with attribute='data-theme' — the next-themes default of class will not apply the design system's dark theme:

'use client'

import { ThemeProvider } from '@nswds/app'

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <ThemeProvider
      attribute='data-theme'
      defaultTheme='system'
      enableSystem
      disableTransitionOnChange
    >
      {children}
    </ThemeProvider>
  )
}

Add suppressHydrationWarning to your <html> element, as next-themes sets the attribute before React hydrates.

To read or change the theme, import useTheme from next-themes directly — it is not re-exported here. This is why next-themes is a peer dependency: the provider above and your useTheme call must resolve to the same copy, or the hook reads a different React context and silently returns default values.

import { useTheme } from 'next-themes'