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

@tharbakim/proving-theme

v0.6.0

Published

Token-driven React components and CSS for the Ghost theme design system

Readme

Design system (Ghost theme)

This folder holds the source CSS for the Ghost theme (screen.cssghost-theme/assets/css/screen.css) and a small React component layer used in Storybook and embeddable web projects.

Principles (Ghost parity for overlapping patterns): see ../docs/design-system-principles.md.

Node version

From the repository root, always load nvm and run nvm use so your shell matches .nvmrc (required before any npm commands). In scripts or CI shells that do not load your profile, source nvm first:

export NVM_DIR="${NVM_DIR:-$HOME/.nvm}" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && nvm use

Commands (repo root)

Requires Node.js per .nvmrc and package.json engines (>=22.12 — Storybook, Vite, and PostCSS).

| Script | Purpose | | ----------------- | -------------------------------------------- | | npm run storybook | Interactive component preview | | npm run build-storybook | Static Storybook output (storybook-static/) | | npm run typecheck | tsc --noEmit for components + Storybook | | npm run build | Compile design-system CSS into the theme | | npm run example-site:dev | Run canonical example website | | npm run example-site:typecheck | Typecheck canonical website | | npm run lint:design-system-parity | Enforce Storybook + example-site parity checks | | npm run example-site:check-components | Run parity checks directly in example-site workspace | | npm run example-site:build | Build canonical example website |

Canonical website reference

design-system/example-site is the baseline, full-page implementation that demonstrates how to compose a site entirely from library components.

Recommended React setup

Import the shared stylesheet and wrap app content with ThemeProvider so the design-system document hooks are initialized for you.

import "@tharbakim/proving-theme/screen.css";
import { ThemeProvider } from "@tharbakim/proving-theme";

export function AppShell() {
  return (
    <ThemeProvider accentPreset="emerald" colorScheme="system">
      {/* app UI */}
    </ThemeProvider>
  );
}

ThemeProvider applies the library bootstrap hooks that the CSS expects:

  • body.ds-body
  • a .ds-root wrapper around your React app
  • html[data-color-scheme]
  • html.accent-*

If an app already sets those hooks manually, remove the duplicate html / body bootstrap once it adopts ThemeProvider.

Contributor rules for this app:

  • Import visible UI from @tharbakim/proving-theme.
  • Do not add ad-hoc app-local class styling for page composition.
  • Do not render raw semantic UI primitives directly (h1, p, img, button, form controls, table tags); use the design-system components.
  • Run npm run example-site:check-components before merging canonical-site updates.

Adding a component

  1. Add or reuse semantic tokens in styles/03-semantics.css when introducing new global primitives.
  2. Add styles to styles/10-react-components.css (or extend existing 06-components.css patterns) using var(--ds-*) — avoid hard-coded palette values.
  3. Implement the React API under components/ with accessibility defaults (aria-*, labels, keyboard).
  4. Add a Storybook story under stories/ covering default, error/disabled, and keyboard behavior where relevant.
  5. Represent the component in example-site/src by importing and composing at least one export from that module.
  6. Run npm run lint:design-system-parity before opening/merging a PR.

Autocomplete

components/Autocomplete.tsx is a headless, MUI-inspired combobox (single value). It does not bundle Material UI; behavior follows ARIA combobox + listbox patterns and theme tokens for visuals.