Type {name} literally. It is the registry's URL template, and the shadcn CLI substitutes the component name per request.
@blode/ui is the design system. It writes Blode's tokens into your CSS, and component variants reference them directly (rounded-[var(--field-radius)], h-[var(--field-height)]). Skip it and components install but render unstyled.
Quickstart
tsx
import { useState } from "react";import { Button } from "@/components/ui/button";export function SaveButton() { const [saving, setSaving] = useState(false); return ( <Button loading={saving} onClick={() => setSaving(true)} size="input"> Save changes </Button> );}
loading swaps the label for a spinner without changing the button's width, and sets aria-busy and disabled for you.
Design system
What @blode/ui writes into your project:
Fields: a 48px control height, a --radius-2xl corner, and one shared padding scale across input, select, and button.
Shadows: layered --shadow-xs through --shadow-lg, plus a dedicated --shadow-popover, instead of a flat border.
Icons:blode-icons-react is set as the project icon library, so generated code reaches for it.
Dark mode: a .dark class variant, not Tailwind's built-in media strategy.
Agent skills
Teach your coding agent the registry, the install flow, and the visual defaults: