Swirski UI

CLI and registry

Three ways to install Swirski UI.

Swirski can be used as a normal package, copied with the Swirski CLI, or installed through the hosted shadcn-compatible registry. Pick the workflow based on how much source ownership you want.

Registry URL

ui.swirski.dev

Hosted JSON for shadcn plus a local manifest for the Swirski CLI.

01

Component library

Apps that want the simplest setup and package updates.

pnpm add @swirski/ui
02

Swirski CLI

Apps that want copied source they can edit directly.

pnpm add -D @swirski/cli
03

shadcn registry

Apps that already use shadcn and want remote registry items.

pnpm dlx shadcn@latest add https://ui.swirski.dev/r/button.json

Package

Use Swirski as a regular component library.

This is the fastest path for most apps. Install the package, import styles once, then import components from @swirski/ui.

Package setup
pnpm add @swirski/ui
import "@swirski/ui/styles.css";
import { Button, Card, Title } from "@swirski/ui";

Swirski CLI

Copy one component, several, or everything.

The Swirski CLI reads registry/swirski.registry.json and copies source folders into your app. Copied components become local code that you can edit, rename, or reshape.

CommandWhat it does
pnpm exec swirski initCreates swirski.config.json with the component output path.
pnpm exec swirski listPrints every component and hook in the Swirski registry.
pnpm exec swirski add buttonCopies one component folder into your configured app path.
pnpm exec swirski add button card dialogCopies several registry entries in one command.
pnpm exec swirski add --allCopies the full local Swirski registry into your app.
pnpm exec swirski add select --dry-runShows what would be copied without writing files.

shadcn registry

Use Swirski through shadcn.

The hosted registry lives at https://ui.swirski.dev/registry.json. Use direct item URLs for one-off installs, or add a namespace to components.json if you want shorter commands.

shadcn is best for selected registry items. If you want the full Swirski source copied at once, use pnpm exec swirski add --all.

pnpm dlx shadcn@latest view https://ui.swirski.dev/r/button.json
pnpm dlx shadcn@latest add https://ui.swirski.dev/r/button.json
{
  "registries": {
    "@swirski": "https://ui.swirski.dev/r/{name}.json"
  }
}
pnpm dlx shadcn@latest add @swirski/button @swirski/dialog

Config

Configure the Swirski copy target.

pnpm exec swirski init creates this config in your app. Use --path on swirski add to override the component destination for one command.

{
  "componentsPath": "src/components/ui",
  "stylePath": "src/styles.css"
}
Quick choice

Package for updates. CLI for ownership. shadcn for registry access.

These are three doors into the same Swirski design language. The right one depends on whether you want imports, local source, or shadcn-compatible registry installs.

Browse components