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

cyanideui

v0.1.3

Published

Scaffold Atrium-styled apps and copy components, shells, templates, and hooks from the Cyanide UI registry.

Downloads

559

Readme

cyanideui

Scaffold Atrium-styled apps and copy components, shells, templates, and hooks from the public registry into your project.

Same model as shadcn/ui: the CLI copies source files into your repo. You own them — modify freely, no version lock.

Usage

# Add a component (copies source + transitive deps into src/)
npx cyanideui add button

# Bootstrap a new app (guides framework setup, adds the shell)
npx cyanideui init

# Add a registry item (and its dependencies) to the current project
npx cyanideui add shell-doc

# Browse what's available
npx cyanideui list
npx cyanideui list components

npx is universal. pnpm / yarn / bun users: pnpm dlx cyanideui …, yarn dlx cyanideui …, bunx cyanideui ….

Commands

atrium init

Walks you through framework choice (Next.js or Vite + React Router), prints the base scaffold + Tailwind wiring, then optionally runs atrium add shell-doc.

atrium add <item>

Copies a registry item into the current project. Resolves transitive registry dependencies (a shell pulls in its hooks), detects your framework, transforms router-specific code, and writes the files. Records what was added in .atrium/manifest.json.

Flags:

  • --overwrite — overwrite existing files without prompting
  • --dry-run — print the plan, write nothing
  • --framework <next|vite-react-router> — force a framework instead of auto-detecting

atrium list [category]

Browse the registry. Optional category filter: shells, templates, blocks, hooks.

How framework transforms work

Registry source files wrap framework-specific lines in markers:

// @atrium:if next
import Link from "next/link"
// @atrium:endif
// @atrium:if vite-react-router
import { Link } from "react-router-dom"
// @atrium:endif

At copy time, the CLI keeps the block matching your framework and strips the rest (markers included). One source file, correct output for each framework. No leftover markers — the CLI refuses to write a file that still contains them.

Local development

Point the CLI at a local registry instead of GitHub:

ATRIUM_REGISTRY=file:./registry atrium list
ATRIUM_REGISTRY=file:./registry atrium add shell-doc --dry-run

Registry items

Components (copy-paste — Path 2, shadcn-style): all 59 library components are available as copy-paste source. add button copies src/components/ui/button.tsx + its transitive deps (e.g. spinner, src/lib/utils.ts) using @/ aliases. No @cyanideui/ui install — the code becomes yours.

atrium add button
atrium add table badge modal select
atrium add doc-shell          # the full app shell (pulls ~17 components transitively)

You can omit the category prefix: add button resolves to component-button, add dashboardtemplate-dashboard, etc.

| Category | Examples | |---|---| | component-* | All 59 UI components (button, table, modal, select, …) | | shell-doc | Full chrome — sidebar + topbar + palette + shortcuts | | template-* | dashboard, crud-list, settings, detail | | hook-* | theme, shortcut-toasts, cheatsheet | | lib-* | utils (cn), use-scroll-overlay |

Where the registry lives

The registry ships inside this package at dist/registry/, and the public source of truth is the raw GitHub URL (the repo is public). The CLI fetches the public URL by default; override for local dev:

ATRIUM_REGISTRY=file:./registry atrium list