Combobox

Type to filter a list. One pick, or chips.

Installation

This component is primitive-agnostic — same source under both flavors.

Basic

Options live on the root, while ComboboxList renders the rows. Type, then press Enter to choose the highlighted option.

Inspect

With icons

Inspect

Multiple selection

ComboboxChips keeps each selection visible and supports Backspace removal when the query is empty.

Inspect

Create from the query

Inspect

States

Inspect
Pick a framework to continue.

API Reference — Combobox

PropTypeDefaultDescription
itemsreadonly (string | { value: string; label: string })[]Options. Strings use the same value and label; objects can carry richer row data.
multiplebooleanfalseAllow multiple picks; values become string[].
value / defaultValuestring | string[]Controlled or initial selection.
onValueChange(value: string | string[]) => voidCalled when the selection changes.
filter(item, query: string) => booleanCustom matching function; the default is case-insensitive label matching.
onCreate(query: string) => item | voidCreate a final option from a query that has no exact label match.
hideSelectedbooleanfalseMultiple mode only: remove selected options from the list.
disabled / name / requiredboolean / string / booleanDisable the field or expose a form field with native required semantics.

API Reference — field parts

PropTypeDefaultDescription
variant"bordered" | "borderless""bordered"Field surface treatment.
iconIconComponentLeading icon.
placeholderstring"Search…"Prompt shown while empty.
errorstringValidation message and aria-invalid state.
clearable / sizeboolean / "default" | "compact"Reserve a clear affordance and choose a size-ladder step.

API Reference — content and list

PropTypeDefaultDescription
children(item, index: number) => ReactNodeRender one item row for each filtered option.
side / align / sideOffset"top" | "bottom" / "start" | "center" | "end" / numberControl popup placement relative to the field.