Skip to content
DomainKit
Esc
↑↓navigate↵open⌘Jpreview
On this page

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.json
pnpm dlx shadcn@latest add https://domain-kit.dev/r/domain-flow.json
yarn dlx shadcn@latest add https://domain-kit.dev/r/domain-flow.json
bunx shadcn@latest add https://domain-kit.dev/r/domain-flow.json
nubx shadcn@latest add https://domain-kit.dev/r/domain-flow.json
aube 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.json
pnpm 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
yarn 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
bunx 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
nubx 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
aube 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.

Last updated on

Was this page helpful?