SUSupaUI

Registry

The shadcn registry, plus a serif.

SupaUI ships a standard shadcn registry. Each component lives as a JSON manifest under /r/<name>.json, served directly from the docs domain.

Item shape

Every registry item declares its name, type, the files it should write into a consumer project, and any registry dependencies it transitively pulls in. SupaUI items use the registry:uitype for components and registry:theme for the globals.css + token bundle.

json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "registryDependencies": [],
  "dependencies": ["@radix-ui/react-slot", "class-variance-authority", "lucide-react"],
  "files": [
    {
      "path": "registry/ui/button.tsx",
      "type": "registry:ui",
      "target": "components/ui/button.tsx"
    }
  ]
}

Index

The top-level registry.json indexes every item the CLI can resolve. Adding a new component means writing a registry entry and dropping the source file in registry-source/ui/ — the build script then emits public/r/<name>.json.

bash
bun run registry:build

Hosting

Once built, the JSON files are served as static assets — same origin as the docs site. The shadcn CLI fetches them by URL, so every item is addressable as https://supaui.dev/r/<name>.json.