Search, filter, and pick a route from one input.
Installation
npx shadcn@latest add @iconiq/b-comboboxReducedMotion
Pass reducedMotionwhen you want the installed component to settle into its quieter motion path immediately. Leaving the prop unset still respects the user's system-level reduced motion preference.
Search, filter, and pick a route from one input.
Props
Combobox
9 props
Root combobox controller. Compose ComboboxInput, ComboboxContent, ComboboxList, and ComboboxItem inside it.
items
readonly Item[]Optional item collection used by Base UI for filtering and render-function lists.
value
Item | Item[] | nullControlled selected value. Use an array when multiple is true.
defaultValue
Item | Item[] | nullInitial selected value for uncontrolled usage.
onValueChange
(value: Item | Item[] | null) => voidCalled when an item is selected, a chip is removed, or the clear action resets the selection.
itemToStringLabel
(item: Item) => stringMaps object values to the label shown in the input and used for text filtering.
itemToStringValue
(item: Item) => stringMaps object values to the hidden form value.
inputValue
stringControlled search text. Leave uncontrolled for Base UI to manage query state.
open
booleanControlled popup state. Pair with onOpenChange.
reducedMotion
booleanForces the Iconiq motion layer into reduced-motion mode.
Notes
The root wraps Base UI's combobox primitive in the same Iconiq reduced-motion config used by the previous wrapper.
Filtering, selection, typeahead, keyboard navigation, and clear behavior are delegated to Base UI while the visual treatment stays Iconiq.
ComboboxInput
5 props
Styled input shell with the previous border, focus ring, clear button, and rotating trigger icon.
placeholder
stringShown when no item is selected and the input is empty.
showClear
booleanDefault
trueControls whether ComboboxClear is rendered in the input.
showTrigger
booleanDefault
trueControls whether the rotating trigger icon is rendered in the input.
className
stringMerged onto the input shell so width and local layout can be adjusted.
disabled
booleanDefault
falseDisables the input, clear button, and trigger while applying the previous reduced-opacity presentation.
ComboboxContent
4 props
Portaled dropdown surface with the previous white/dark panel, border, shadow, and fade-slide motion.
side
"top" | "right" | "bottom" | "left" | "inline-start" | "inline-end"Default
"bottom"Preferred side for the popup.
align
"start" | "center" | "end"Default
"start"Popup alignment relative to the input anchor.
sideOffset
numberDefault
4Gap between the input shell and dropdown.
className
stringMerged onto the animated popup panel.
Notes
The popup remains mounted while closing so the motion exit can complete before Base UI unmounts it.
The panel width matches the input anchor and the list scrolls at the same max height as before.
ComboboxList and ComboboxItem
3 props
Scrollable item list and animated rows with the previous active highlight, description layout, and selected checkmark spring.
ComboboxList.children
ReactNode | ((item, index) => ReactNode)Render explicit children or a render function when using the root items prop.
ComboboxItem.value
ItemStable value used by Base UI for selection.
ComboboxItem.description
ReactNodeOptional secondary line rendered below the item label, matching the prior option description UI.
Notes
ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxCollection, and chip helpers are exported for larger compositions.
Keyboard navigation and filtering are handled by Base UI; the visual hover highlight and checkmark animation stay Iconiq.