Combobox
A pill input with a filtered list: matches highlighted, async results, chips for many, create.
<div className="w-320">
<Combobox label="Model" options={options} placeholder="Search models" emptyText="No models match" defaultValue="gpt-5" />
</div>import { Combobox } from "@logicplanes/kaeso-ui";Props
aria-labelstringThe accessible name, for when there is no visible label.
defaultValuestring | string[] | nullThe value on first render, when the component keeps its own value.
descriptionReactNodeOne sentence of help under the label.
disabledbooleanTurns it off: it can't be used, and it looks dimmed.
emptyTextReactNodeWhat the empty list says: "No models match". Defaults to "No results" in the provider's language.
idstringThe id of the control, so a label elsewhere can point to it.
invalidbooleanShows it as invalid; pair it with a message that says what to fix.
labelReactNodeThe visible label.
layout"horizontal" | "vertical"The label above the control (
vertical) or beside it (horizontal).loadingbooleanShows a quiet progress line at the top of the list (async results).
multiplebooleanAllows choosing more than one option;
valueis then a list.namestringThe field name the value is sent under in a form.
onCreate((label: string) => void)Offers "Create “…”" when nothing matches exactly.
onInputValueChange((value: string) => void)Called with the text typed into the input.
onValueChange((value: string | null) => void) | ((value: string[]) => void)Called with the chosen value, or the list of values with
multiple.optionalbooleanAdds “Optional” to the label, for forms where most fields are required.
optionsComboboxOption[]The options to choose from.
placeholderstringText shown while there is no value.
requiredbooleanMarks it as required in a form.
size"md" | "sm" | "lg" | "xl"The height of the input.
valuestring | string[] | nullThe chosen value, or a list of values with
multiple, when you control it.