MultiCombobox
Combobox with multiple selection — picked options become
removable chips. Supports the same async pattern (inputValue / onInputChange) and
allowCustomValue for free-text entries.
import { MultiCombobox } from '@gg-software/ui';
<MultiCombobox
label="Reviewers"
options={people}
value={reviewers}
onChange={(values) => setReviewers(values)}
/>
// free-text tags
<MultiCombobox options={suggestions} allowCustomValue maxTagCount={3} />Options use the same SelectOption shape as Select.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
options* | SelectOption<T>[] | — | |
value | T[] | — | |
defaultValue | T[] | [] | |
onChange | ((value: T[], options: SelectOption<T>[]) => void) | — | |
inputValue | string | — | controlled input text (for server-side / async filtering) |
onInputChange | ((text: string) => void) | — | |
allowCustomValue | boolean | false | accept typed text that doesn't match any option (best with string options) |
placeholder | string | Type to search… | |
label | ReactNode | — | |
hint | ReactNode | — | |
error | ReactNode | — | |
required | boolean | — | |
size | "sm" | "md" | "lg" | md | |
status | "warning" | "error" | — | |
disabled | boolean | false | |
clearable | boolean | false | |
filterOption | ((query: string, option: SelectOption<T>) => boolean) | — | |
emptyText | ReactNode | No options | |
maxTagCount | number | — | show at most this many tags, then a "+N" overflow tag |
id | string | — | |
name | string | — | |
className | string | — |
* required · generated from packages/ui/src/input/MultiCombobox/MultiCombobox.tsx