Skip to content
Velkin LogoVelkin Logo
Velkin
VELKIN/UI

Modern UI components for product teams and their AI agents. Lit core, typed wrappers, live MCP.

sales@velkinui.com

Product

  • Docs
  • Components
  • Studio
  • Pricing

Resources

  • Quick start
  • Blog
  • Changelog
  • Roadmap
  • Status

Project

  • About
  • Contact
  • License
  • Privacy
  • Terms

© 2026 Velkin. MIT core · Pro licenses available.

VELKIN

Combobox

A combobox component with search, single or multi select, and validation.

vu-combobox · @velkin/react/combobox

Copy page

Import

React
npm i @velkin/react

import { VuCombobox } from "@velkin/react/combobox";

Examples

API

Props

PropTypeDefaultDescription
variantVuComboboxVariant"default"Field chrome recipe. Default: `"default"`.
toneVuComboboxTone"normal"Neutral chrome weight. Default: `"normal"`.
sizeVuComboboxSize"md"Field scale. Default: `"md"`.
radiusVuComboboxRadius"md"Corner preset (`none`/`sm`/`md`/`lg`/`full`). Default: `md`.
blockbooleanfalseStretches the trigger to the container width. Default: `false`.
namestring—Form field name. Default: `""`.
defaultValuestring—Uncontrolled initial value; HTML attribute is `value`. Default: `""`.
formIdstring | null—ID of an external `<form>`; HTML attribute is `formid`. Default: `null`.
disabledbooleanfalseNon-interactive state. Default: `false`.
readonlybooleanfalseRead-only; keeps focus without editing. Default: `false`.
requiredbooleanfalseMarks the field required for form validation. Default: `false`.
requiredMessagestring"Selection is required."Message when `required` fails. Default: `"Selection is required."`.
valueVuComboboxValue""Current selection; string or array when `multiple`.
placeholderstring"Select An Option"Empty-state hint and filter placeholder when `searchable`.
labelstring""Plain-text label; slotted `label` wins when assigned.
hintstring""Helper text; `hint` slot wins when assigned.
optionsVuComboboxOption[][]Option list (`string` or `{ label, value }`).
renderernull | (context: VuComboboxRendererContext) => TemplateResult | string | null | undefinednullPer-row dropdown renderer; omit for default label.
clearablebooleanfalseShows a clear control when a value is present. Default: `false`.
loadingbooleanfalseShows a loading row in the options panel. Default: `false`.
searchablebooleanfalseFilter-as-you-type in the field. Default: `false`.
multiplebooleanfalseMulti-select chips instead of a single value. Default: `false`.
visibleChipsnumber2Max chips shown inline before +N overflow. Default: `2`.
showErrorsbooleanfalseRenders validation errors below the field. Default: `false`.
addOptionbooleanfalseAllows creating a new option from the filter query. Default: `false`.
idstring""Host id; also prefixes internal control ids when set.
ariaLabelstring""Accessible name when no visible label is present.
validationActivebooleanfalseShows validation affordances after first interaction. Default: `false`.
invalidbooleanfalseReflects validation failure state. Default: `false`.
querystring""Current field filter for controlled filtering.

Events

EventDetailDescription
vu-changeVuComboboxChangeDetailFired whenever selection changes.
vu-inputVuComboboxInputDetailFired when the field filter query changes.
vu-invalidVuComboboxInvalidDetailFired when validation messages are recomputed.
vu-addVuComboboxAddDetailFired when the user confirms adding a new option.

Slots

SlotDescription
labelRich label markup; takes precedence over string `label` when assigned.
hintOptional helper copy (HTML); overrides string `hint` when assigned.
errorReplaces default validation message list when assigned.
startLeading unit or symbol inside the field container.
endTrailing unit or symbol inside the field container.

CSS parts

PartDescription
fieldColumn stacking label, control row, hint, and error.
labelLabel wired to the trigger.
startLeading affix wrapper.
endTrailing affix wrapper.
containerInteractive field trigger (chips, placeholder, actions).
valueChip + filter input row when `searchable` or `addOption`.
placeholder-labelPlaceholder when no value is selected.
clear-buttonClear selection control.
dropdown-buttonChevron toggle control.
dropdown-loadingLoading row in the options panel.
dropdown-loading-indicatorSpinner inside the dropdown loading row.
dropdown-loading-labelLoading copy in the dropdown panel.
chip-containerMulti-select chip row.
chipIndividual chip in multi-select mode.
single-select-chipSingle-select value label.
overflow-chip+N overflow chip.
remove-chip-iconRemove icon on chips.
hidden-chips-dropdownOverflow chip popover panel.
hidden-chip-innerRow inside the overflow panel.
hidden-chip-labelLabel in overflow panel rows.
dropdownMain options popover panel.
inputField filter text input when `searchable` or `addOption`.
add-option-iconAdd-new-option affordance in the field.
select-allSelect-all row in multi-select mode.
optionOne selectable option row.
option-contentCustom or default label region inside an option row.
highlighted-textSearch-highlighted label text.
no-optionsEmpty filter message row.
dropdown-scrollerScrollable options region.
hintHelper text region.
error-messageValidation error region.
error-lineOne default validation string.

Methods

MethodDescription
openDropdownOpens the options panel.
closeDropdownCloses the options panel.
clearSelectionClears current selection if allowed.
resetResets combobox state and clears validation UI.

Types

NameDefinition
VuComboboxAddDetail
{ value: string; }
VuComboboxChangeDetail
{
  value: VuComboboxValue;
  selectedItems: VuComboboxOption[];
}
VuComboboxInputDetail
{ query: string; }
VuComboboxInvalidDetail
{ errors: string[]; }
VuComboboxRadius
"sm" | "md" | "lg" | "none" | "full"
VuComboboxRendererFn | null
null
| (context: VuComboboxRendererContext) => TemplateResult
| string
| null
| undefined
VuComboboxSize
"sm" | "md" | "lg"
VuComboboxTone
"subtle" | "normal" | "strong"
VuComboboxValue
string | string[]
VuComboboxVariant
"outline" | "default" | "underline"

Related

Inputs

  • Advanced FilterAn advanced filter component with expression input and visual builder.
  • ButtonA clickable button component with multiple variants and states.
  • Button GroupA button group component with shared styling and optional selection.
  • CheckboxA checkbox component with label, hint, and validation.
  • Checkbox GroupA checkbox group component with shared label and validation.
  • Color AreaA two-dimensional color picker component for saturation and brightness.

Guides

  • FormsFormData, VuForm, and validation
  • EventsonVu* / v-model / e.detail
  • Appearancevariant, color, tone, size

Browse

  • Previous: Color Swatch PickerEarlier in the sidebar
  • Next: CounterLater in the sidebar
  • All componentsBrowse the full index