A searchable palette in two states, the row it is built from in twelve, and the group, heading and rule that go between them.
Five components, fourteen variants
Command / Item - Variant × State × Selected × Show Shortcut: Default · Icon × Default · Hover · Disabled, with Selected on Default only and Show Shortcut on Icon only
CommandGroup · Label · Separator - none: a heading with its rows, a 249 × 28 heading, and a 1px rule
Using the Command
Why twelve rows and not twenty-four?
Because the two variants take different second axes. Default pairs with Selected and never shows a shortcut; Icon pairs with Show Shortcut and is never selected. A row either records a choice or fires an action, and the file will not draw one claiming both. Three states each, so six and six.
What does the Empty variant do?
Swaps the whole result area for a single centred line reading No results found., which takes the palette from 272 down to 112. The search row is unchanged, so the box shrinks around the message rather than leaving an empty well below it.
Why is the search field filled rather than underlined?
The file draws it as an InputGroup at base.border with a 10px radius, sitting inside the 4px padding of the palette. shadcn/ui underlines it instead. Filling it makes the field read as part of the popover rather than as a border cutting across it, which is the call this kit made.
Where does the tick sit?
At the end of the row, as a 16px check, and it belongs to Command / Item rather than to the list. A theme picker or any single-choice palette works without a wrapper, because the row already knows whether it is the chosen one.
Does Disabled grey out the text?
No. It drops the whole row to 50% and leaves every colour alone. That keeps the shortcut column reading as one thing down the right-hand side, which it would not if disabled rows recoloured their labels and their shortcuts by different amounts.