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

newtui

v2.3.0

Published

CLI for newt/ui — Discord-native UI components for React, Vue and Nuxt (shadcn-style registry). Part of the WolfStar toolchain.

Readme

newtui

CLI for newt/ui — Discord-native UI components for React, Vue and Nuxt, distributed shadcn-style: the source is copied into your project, you own it.

npx newtui init          # writes components.json, lib/utils.ts, appends --newt-* tokens to your CSS
npx newtui add button    # copies components + resolves registryDependencies + installs npm deps
npx newtui list          # lists registry items
npx newtui diff button   # compares local files with the registry

npx newtui init --template next --preset nt1.…   # create the project, then wear the preset
npx newtui apply --preset nt1.…                  # restyle a project that already ran init
npx newtui preset decode nt1.…                   # read what a preset code carries

Framework

init detects whether the project is React or Vue and records the result as framework in components.json. Override it with --framework react|vue. Vue projects also record a bundler (nuxt or vite), which decides where the stylesheet lives and which setup instructions are printed — pass --bundler nuxt|vite to force it.

Every command reads framework back from components.json, so add, diff and list all target the right registry without being told again.

Registry

Each framework has its own registry, and every item carries a framework field naming which one it came from:

| Framework | Registry | | --------- | ----------------------------------------------------- | | React | https://newtui.dev/r/styles/<style>/<name>.json | | Vue | https://newtui.dev/vue/r/styles/<style>/<name>.json |

Override the base url with --registry <url> or NEWT_REGISTRY_URL, or set "registry" in components.json.

Older components.json files

An existing components.json keeps working — it is migrated on read:

  • framework: "nuxt" | "vite" (the old Vue build tool) becomes bundler, and framework becomes "vue".
  • tsx (the old React flag) is read as typescript.
  • A config with neither field is matched to a framework by the aliases it declares.

Legacy HTML/CSS registry

The original framework-less HTML/CSS CLI is still shipped:

npx newtui --legacy init
npx newtui-html init      # same thing

Development

pnpm build       # tsdown -> dist/index.js
pnpm typecheck   # tsc --noEmit