ComboboxMultiv0.3.3Documentation Under Review
A multi-select combobox component with search, tags, and keyboard navigation for selecting multiple items from a list.
Prefer AI-assisted development?
Catalyst ComboboxMulti combines a text input with a Radix UI Popover to deliver a fully accessible multi-select dropdown — with tag display for selected items, search filtering, keyboard navigation, and design-token styling out of the box.
Installation
npm install @pmi/catalyst-combobox-multiimport {
ComboboxMultiTrigger,
ComboboxMultiInput,
ComboboxMultiItem,
ComboboxMultiSeparator,
ComboboxMultiScrollButton,
} from '@pmi/catalyst-combobox-multi';Variants
Default
A standard multi-select combobox with tag display and search filtering.
Danger
Use the danger variant to indicate validation errors or destructive selections.
Common Patterns
With Badges
Display badges alongside options for additional context such as category or count.
Custom Styling
Override the default Catalyst tokens with custom Tailwind classes and a custom checkbox CVA to match a brand palette.
API Reference
ComboboxMulti is a compound component. The sections below summarize the Catalyst-specific API surface for each part.
ComboboxMultiTrigger
The button that opens the dropdown and displays selected items as tags.
Prop
Type
Extends
HTMLAttributes<HTMLDivElement>.
ComboboxMultiInput
The search input field with icon support rendered inside the popover.
Prop
Type
Extends
HTMLAttributes<HTMLDivElement>.
ComboboxMultiItem
An individual selectable option with checkbox indicator.
Prop
Type
Extends
HTMLAttributes<HTMLDivElement>.
ComboboxMultiSeparator
A visual divider between the search input and the options list.
Prop
Type
ComboboxMultiScrollButton
Scroll control buttons (up/down) for long option lists.
Prop
Type
Accessibility
ComboboxMulti is designed to meet WCAG 2.2 AA standards.
Keyboard Interactions
| Key | Action |
|---|---|
Enter or Space | Opens/closes the dropdown when trigger is focused |
Escape | Closes the dropdown |
↓ / ↑ | Navigates through options |
Tab | Moves focus to the next focusable element |
ARIA
role="combobox"— applied to the trigger and search inputrole="listbox"— applied to the options containerrole="option"— applied to each selectable itemaria-expanded— indicates whether the dropdown is openaria-controls— links the trigger to the listboxaria-selected— indicates selected state of each optionaria-autocomplete="list"— signals filter behaviour on the search inputaria-activedescendant— tracks the currently focused option for screen readers- Tag remove buttons must receive a descriptive
aria-label(e.g.,aria-label="Remove The Great Gatsby") — the consumer is responsible for providing this.
Catalyst adds the visual styling; Radix Popover provides the underlying focus-management and dismissal semantics. See the Radix Popover accessibility docs for inherited baseline behaviour.
Choosing the Right Component
Use ComboboxMulti when users need to search and select multiple items from a list. Reach for a different primitive when:
| If you need… | Use instead |
|---|---|
| Single-item selection with search | Combobox |
| Single-item selection without search | Select |
| A floating panel without selection semantics | Popover |
Related
Checkbox
A compact three-state checkbox component optimized for data-dense product interfaces. Built on Radix UI primitives with accessible keyboard navigation and WCAG 2.2 AA compliance.
Combobox
A searchable dropdown component that combines an input field with a list of filterable options. Built with Radix UI primitives for robust accessibility.