Components
1,839 addressable components over fifty-nine pages, built to match shadcn/ui rather than to resemble it. This page is about working with them: where things sit, how to change one, and what to watch for when you add your own.
How a page is laid out
Every component has its own page. Most carry the same two frames; thirteen carry only the Components frame, where a usage example would repeat the matrix rather than add to it.
The split matters as soon as you start editing. The Components frame holds the mains; the usage frame holds copies. Change a main and every copy in the file follows. Change a copy and you have made an override, which will quietly stop tracking the main from then on.
Editing a component
Almost nothing here is a raw value. Fills, strokes, padding, gaps and radii are bound to tokens, so the edit you want is usually to the binding rather than to the number.
Badge is 53×20, with 8px of horizontal padding and a fully rounded end. Suppose it should be roomier and squarer.
Open the Badge page and select the main inside the variant container, not an instance from the usage frame.
Its horizontal padding is bound to spacing.2. Rebind left and right to spacing.3.
Its corners are bound to radius.4xl. Rebind them to radius.md.
Every badge in the file updates, including the ones nested inside other components.
The same edit in code is px-2 to px-3 and rounded-full to rounded-md. The names line up because the tokens are the Tailwind scale.
Variants are properties
A variant is not a separate component. Button is one component with three axes and 144 combinations behind them.
The State axis is the one that departs from code. In a browser those are pseudo-classes; here every one of them has to be drawn, because a design file has no hover. That is why the counts grow - Switch carries 192 variants for the same reason.
Two rules about optional parts, both learned by getting them wrong first.
Adding a variant
Say the kit needs a warning button alongside destructive.
warning and warning-foreground in theme, resolved in both mode sets. The Theming page covers that part.
Six states across four sizes, twenty-four boards.
From the destructive names to the new ones. Nothing else changes, because padding, radius and type already come from tokens.
Add the boards to the variant container and set Variant to Warning on each of them.
Making a new component
New components are welcome. The only real constraint is that once built, it should be impossible to tell yours from the rest.
Handing it over
The point of binding everything is that a design change reads as a code change without translation.
So the useful handover note is not a screenshot. It is two token names, before and after, and the component they sit on. A developer can act on that without opening the file.
None of this is ceremony. The kit is only worth using while it stays consistent, and consistency here is almost entirely a matter of editing the main rather than the copy, and the token rather than the value.