Files

2.2 KiB

shadcn

Everything shadcn-lineage at Hanzo, in one repo: the CLI, the component registry it serves, the docs sites that publish that registry, and the project templates it scaffolds.

npx shadcn@latest add button       # the CLI
pnpm add @hanzo/shadcn             # the components, as a package

What is here

Path
pkg/cli the shadcn CLI — add, init, build, create, mcp
pkg/components @hanzo/shadcn — the same components as a published package
pkg/tests integration tests that drive the built CLI against fixture projects
app ui.hanzo.ai — the docs site, and app/registry/**, the component SOURCE
apps/v4 the upstream shadcn v4 docs and registry
templates the projects shadcn create scaffolds
tests Playwright e2e of the docs site
skills/shadcn the agent skill for the CLI

Two ways to consume the same components, on purpose. The CLI copies source into your project so you own and edit it; @hanzo/shadcn installs them as a dependency you upgrade. Same Radix behaviour, same standard shadcn tokens.

Registry

app/registry/** is the source of truth. pnpm registry:build compiles it to the JSON the CLI reads, and the docs site serves it at https://ui.hanzo.ai/r/{name}.json.

The index is Index[style][name], not Index[name] — reading it the flat way renders nothing and reports no error.

Tailwind here is the deliverable, not a defect: these files are what the CLI hands to customers. Do not "clean up" a registry.

Develop

pnpm install
pnpm --filter shadcn build          # the CLI
pnpm --filter @hanzo/shadcn build   # the package
pnpm app:dev                        # the docs site, :3333
pnpm v4:dev                         # the upstream v4 app, :4000

Relationship to @hanzo/ui

@hanzo/ui@8 is a different library with a different substrate — it renders on @hanzo/gui so one import serves web, native and desktop, and it carries no Radix and no Tailwind. It lives in hanzoai/ui. The shadcn line lives here.

Licensed MIT OR Apache-2.0. Component patterns from shadcn/ui under MIT — see NOTICE.