Shadcn registry
Copy the styled domain flow and the plain DNS display components into your project with the shadcn CLI, then own their markup, classes, and layout.
The registry ships source files, not a package. Use it to put the domain flow, or plain DNS display
components, into your app with the shadcn CLI. It vends two kinds of item, and the CLI installs
either into an initialised components.json project.
The flow
The flow items are written against @domainkit/react and your own kit: ui/button, ui/dialog,
ui/dropdown-menu, ui/input, ui/label, ui/switch, ui/table, and ui/badge. They take render, the
Base UI idiom, so a kit on the base-* styles takes them unchanged.
npx shadcn@latest add https://domain-kit.dev/r/domain-flow.jsonpnpm dlx shadcn@latest add https://domain-kit.dev/r/domain-flow.jsonyarn dlx shadcn@latest add https://domain-kit.dev/r/domain-flow.jsonbunx shadcn@latest add https://domain-kit.dev/r/domain-flow.jsonnubx shadcn@latest add https://domain-kit.dev/r/domain-flow.jsonaube dlx shadcn@latest add https://domain-kit.dev/r/domain-flow.json| Item | Renders |
|---|---|
domain-flow |
The whole of one domain’s setup, on Domain.useFlow |
provider-row |
Who serves the zone, and the one action, heading the records card |
records-table |
The records to add, with the plan or the observation on each row |
plan-action |
The one press that approves a plan’s digest and applies it |
connect-dialog |
The provider’s methods, one decision at a time |
disconnect-dialog |
Releasing a provider, with the records DomainKit added under a switch |
domain-field |
One input over every zone the workspace’s accounts reach |
outcome |
A failed step in the catalog’s words |
provider-artwork |
Your logo per provider id, shared by the items above |
The files land in components/domainkit/ and are yours after the copy: change their classes, their
icons, and their layout to fit your design system. What they must not change is where the boundary
sits, because the behaviour behind them still runs through your transport.
The display components
The display items take plain props and import no DomainKit runtime: no domainkit, no Effect, no
transport, no provider client. They suit a product that already has its own state and only needs
the surface.
npx shadcn@latest add https://domain-kit.dev/r/dns-table.json https://domain-kit.dev/r/dns-operation.json https://domain-kit.dev/r/dns-status.json https://domain-kit.dev/r/provider-mark.json https://domain-kit.dev/r/copy-value.json https://domain-kit.dev/r/async-state.jsonpnpm dlx shadcn@latest add https://domain-kit.dev/r/dns-table.json https://domain-kit.dev/r/dns-operation.json https://domain-kit.dev/r/dns-status.json https://domain-kit.dev/r/provider-mark.json https://domain-kit.dev/r/copy-value.json https://domain-kit.dev/r/async-state.jsonyarn dlx shadcn@latest add https://domain-kit.dev/r/dns-table.json https://domain-kit.dev/r/dns-operation.json https://domain-kit.dev/r/dns-status.json https://domain-kit.dev/r/provider-mark.json https://domain-kit.dev/r/copy-value.json https://domain-kit.dev/r/async-state.jsonbunx shadcn@latest add https://domain-kit.dev/r/dns-table.json https://domain-kit.dev/r/dns-operation.json https://domain-kit.dev/r/dns-status.json https://domain-kit.dev/r/provider-mark.json https://domain-kit.dev/r/copy-value.json https://domain-kit.dev/r/async-state.jsonnubx shadcn@latest add https://domain-kit.dev/r/dns-table.json https://domain-kit.dev/r/dns-operation.json https://domain-kit.dev/r/dns-status.json https://domain-kit.dev/r/provider-mark.json https://domain-kit.dev/r/copy-value.json https://domain-kit.dev/r/async-state.jsonaube dlx shadcn@latest add https://domain-kit.dev/r/dns-table.json https://domain-kit.dev/r/dns-operation.json https://domain-kit.dev/r/dns-status.json https://domain-kit.dev/r/provider-mark.json https://domain-kit.dev/r/copy-value.json https://domain-kit.dev/r/async-state.json| Item | Renders |
|---|---|
dns-table |
DNS records in a compact table, with an optional status cell |
dns-operation |
One planned create, no-op, conflict, or delete |
dns-status |
A compact status label with an explicit tone |
provider-mark |
An accessible wrapper around a provider logo |
copy-value |
A DNS value with a copy action |
async-state |
Loading, empty, and error states |
Without a shadcn kit
A project with no components.json composes @domainkit/react directly. The hooks
are the whole contract; the registry is one way of spending them.
Browse the registry catalog for a preview, the source, the install command, and the props of every item.