Coverage
Every component against every value that works on it, built from the manifest rather than counted by hand.
168 combinations across 32 components. Every one of them is on the component's own page behind the value switcher, and this is the shape of the whole set: which presets reach which hosts, and where a pair composes.
A filled cell means the value is offered on that component, and every filled cell is a link to it running there. Two things have to hold: the manifest's hosts list has to allow the preset on that host, and a layout preset has to be one the component was built for. See collapse for the second half of that.
| Component | Host | fade | scale-fade | slide-up | collapse | fade collapse | fade slide-up | scale-fade slide-up |
|---|---|---|---|---|---|---|---|---|
| Dialog | Radix UI | |||||||
| Alert dialog | Radix UI | |||||||
| Popover | Radix UI | |||||||
| Dropdown menu | Radix UI | |||||||
| Context menu | Radix UI | |||||||
| Menubar | Radix UI | |||||||
| Hover card | Radix UI | |||||||
| Tooltip | Radix UI | |||||||
| Select | Radix UI | |||||||
| Navigation menu | Radix UI | |||||||
| Toast | Radix UI | |||||||
| Collapsible | Radix UI | |||||||
| Accordion | Radix UI | |||||||
| Tabs | Radix UI | |||||||
| Scroll area | Radix UI | |||||||
| Dialog | Base UI | |||||||
| Alert dialog | Base UI | |||||||
| Popover | Base UI | |||||||
| Menu | Base UI | |||||||
| Context menu | Base UI | |||||||
| Preview card | Base UI | |||||||
| Tooltip | Base UI | |||||||
| Select | Base UI | |||||||
| Navigation menu | Base UI | |||||||
| Toast | Base UI | |||||||
| Collapsible | Base UI | |||||||
| Accordion | Base UI | |||||||
| Tabs | Base UI | |||||||
| Scroll area | Base UI | |||||||
| Native dialog | No library | |||||||
| Native popover | No library | |||||||
| Plain [hidden] | No library |
What the empty cells are
56 of the 224 cells are empty, and every one of them sits in a collapse column. That preset animates a panel between zero and its natural height, which is a claim about the component rather than about the host, so it is offered on the four components built for it and nowhere else. Nothing else in the vocabulary is restricted at all.
Being valid on a host is not the same as being right on a component, and the manifest's hosts list only knows the first. collapse on a dialog passes that test and still looks broken: the preset takes a single element child, a dialog has three plus its own padding, so the grid collapses the title and leaves the description and the buttons at full height.
A conflicting pair cannot show up as an empty cell, because it never becomes a column. The columns are the 7 values the manifest declares, which is every preset plus only the pairs it says compose, so collapse scale-fade is absent from the table rather than present and blank.
The two overlay presets and the slide reach everything. That is the honest shape of this library: what limits it is the size of its vocabulary rather than how far the vocabulary reaches.