CSS contracts
Slots
css
[data-slot='multi-autocomplete']
[data-slot='multi-autocomplete-trigger']
[data-slot='multi-autocomplete-chip']
[data-slot='multi-autocomplete-content']
[data-slot='multi-autocomplete-overlay']
[data-slot='multi-autocomplete-listbox']
[data-slot='multi-autocomplete-option']
[data-slot='multi-autocomplete-empty']State selectors
State hooks
css
[data-slot='multi-autocomplete'][data-state='open']
[data-slot='multi-autocomplete'][data-disabled]
[data-slot='multi-autocomplete'][data-invalid]
[data-slot='multi-autocomplete-option'][data-active]
[data-slot='multi-autocomplete-option'][data-selected]
[data-slot='multi-autocomplete-option'][data-selected][data-active]
[data-slot='multi-autocomplete-option'][data-disabled]Wrapper shell examples
The primitive stays native while your card, chip, and option rows carry the visual language.
Release owners (Plain-CSS)
Release owners
Keep the primitive native while the wrapper card and option rows carry the style.
Release owners (Tailwind CSS)
Release owners
Use a light wrapper card and let the primitive state attributes drive the option styling.
- Abigail ChenDesign systems
- Mina LeeCore UI
- Omar AzizCompliance
- Sanjay PatelDocumentation