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

@zero.sc/kit

v0.1.2

Published

Zero Kit CLI — copy a component into your app to own it, or take it as a package to keep it updated. Init, add, drift check, doctor.

Downloads

321

Readme


The problem this solves

There are two honest ways to use someone else's component, and they are not the same choice.

Install it and updates arrive for free, but the internals are not yours. The day you need the dropdown to close on a different event, you are writing a wrapper around behaviour you cannot see, or opening an issue and waiting.

Copy it and you own every line — including the bug fixed upstream last week that you will never hear about.

Most libraries pick one and pretend it is the only sensible option. This CLI makes both available from the same source, and — more usefully — makes the second one maintainable. A copied file keeps its hash, so diff can still tell you what changed upstream even though the file is now yours.

Use it

npx zero-kit init            # wire the stylesheet, choose package or copy mode
npx zero-kit add button card # the files land in your repo
npx zero-kit list            # what is available
npx zero-kit diff            # what changed upstream since you copied
npx zero-kit doctor          # why is it not working

Nothing to install first. The registry is bundled inside the package, so add works on a plane.

What arrives

Asking for one component brings what it actually needs and nothing else.

$ npx zero-kit add accordion

  components/accordion.tsx
  components/collapsible.tsx      ← required by accordion
  hooks/use-controllable.ts       ← required by collapsible
  lib/cn.ts

  Required: pnpm add clsx tailwind-merge

Local imports are resolved and followed; external packages are reported rather than installed, because installing into someone's project without asking is not a convenience.

Modified files are never overwritten

Run add again after editing a file and the new version is written beside yours as <file>.new. You merge it, or you don't.

This is the part most copy-based tools get wrong. Silently overwriting is a data-loss bug that presents as a helpful update, and it teaches people never to run the command twice.

The contract it keeps

  • Every file carries a hash, verified on arrival. A truncated download or a tampered registry is a failure, not a subtly broken component.
  • Licence headers survive the copy. The file that lands in your repo says where it came from.
  • No runtime. After copying, this package is not a dependency of your app. Uninstall it and nothing breaks.
  • --dry-run before anything writes. Knowing what a command will do is not an advanced feature.
  • The registry is bundled. A CLI that needs the network to list what it already contains is a CLI that fails in CI.

Honest limits

  • 32 of the 168 entries have no description. list shows them by name and category only. The components work; the catalogue text is incomplete.
  • Copy mode is a fork, and forks drift. diff tells you that something changed upstream. It does not merge it for you.
  • Tailwind is assumed. The components are written against utility classes and the shell tokens. Copying one into a project without them produces unstyled markup.
  • React 19 and the App Router. Client components carry "use client"; that directive is meaningless elsewhere.
  • init edits your global stylesheet. It adds one import line and says so, but it does touch a file you own.
  • This is 0.1.x. The registry format is the part most likely to change; copied files are unaffected when it does, since they are already yours.

Around it

| | | |---|---| | Docs and live gallery | kit.zero.sc | | The same components, installed | @zero.sc/ui | | Motion | @zero.sc/motion | | A whole app instead | @zero.sc/create | | Everything | @zero.sc |

License

MIT OR Zero License v1.0 — take whichever you prefer. Choosing MIT is enough; nothing further is required of you.

The Zero name, marks and logos are not covered — build anything you like with this code, just don't present it as a Zero product.

Copyright (c) 2026 Zero. Source Code begins at Zero.