CSS contract table
| Selector | Applied on | Purpose |
|---|---|---|
[data-slot="multi-select"] | Root host | State container and token surface for the multiselect root. |
[data-slot="select-trigger"] | Trigger control | Trigger surface, focus ring, and open/closed state feedback. |
[data-slot="select-overlay"] | Portaled overlay | Panel border, radius, elevation, and max-height constraints. |
[data-slot="multi-select-listbox"] | Listbox host | Option stack spacing and scrolling behavior. |
[data-slot="multi-select-option"] | Option host | Keyboard active highlight, committed selection, and disabled styling. |
State selectors
MultiSelect state selectors
css
[data-slot="multi-select"][data-state="open"] { /* overlay is visible */ }
[data-slot="multi-select-option"][data-active] {
background: #f8fafc;
border-color: #cbd5e1;
}
[data-slot="multi-select-option"][data-selected] {
background: #ecfeff;
border-color: #5eead4;
}
[data-slot="multi-select-option"][data-selected][data-active] {
background: #ccfbf1;
border-color: #2dd4bf;
}
[data-slot="multi-select-option"][data-disabled] {
opacity: 0.52;
cursor: not-allowed;
}Example shells
The primitive contract stays the same while your shell defines the trigger, overlay, and option row treatment.
Categories (Plain-CSS)
Categories
The primitive stays native while your wrapper card and option rows carry the visual style.
Categories (Tailwind CSS)
Categories
The primitive stays native while your wrapper and option rows carry the visual style.
- Accessibility
- Forms
- Overlay
- Documentation
- Theming
Selected: Overlay