Skip to content

MultiSelect

MultiSelect

<MultiSelect label="Tags" defaultSelectedKeys={['design']}>
<MultiSelectOption id="design">Design</MultiSelectOption>
<MultiSelectOption id="engineering">Engineering</MultiSelectOption>
<MultiSelectOption id="research">Research</MultiSelectOption>
</MultiSelect>

Install: @helixui/core

import { MultiSelect, MultiSelectOption } from '@helixui/core'

status: beta · since: 0.1.0

Tags: combobox, tags, chips, multi

Anatomy

[ chip × ][ chip × ][ chip × ] type… ▾
└─ popover listbox ─┐
• option 1 │
• option 2 │
▼ load more

Layout

  • displayblock
  • widthfill
  • heightcontent
  • intrinsicSizefills width, hugs height + chip rows
  • stackablefalse
  • fullBleedfalse

Visual

A combobox-style input with selected values rendered as inline removable tags. Typing filters the popover listbox below; selecting an option adds another chip.

Props

NameTypeDefaultDescription
labelReactNodeVisible label.
descriptionReactNodeHelper text.
errorMessagestring | (v: ValidationResult) => stringError text.
placeholderstringAdd…Combobox input placeholder.
selectedKeysSelectionControlled selected ids.
defaultSelectedKeysIterable<string | number>Uncontrolled initial selection.
onSelectionChange(keys: Selection) => voidSelection change handler.

Slots

  • children — MultiSelectOption components

Tokens used

color.bg.surface.default, color.bg.action.neutral.default, color.bg.action.brand.subtle, color.bg.action.brand.default, color.text.primary, color.text.secondary, color.text.muted, color.text.action.brand, color.text.on.brand, color.text.action.danger, color.border.default, color.border.focus, radius.md, radius.sm, radius.full, space.1, space.2, space.3, font.family.sans, font.size.sm, font.size.xs, font.weight.medium, shadow.md

Accessibility

Notes

  • Composes react-aria-components ComboBox + TagGroup. ComboBox handles input typing & list selection; TagGroup handles selected-tag removal with Backspace and Delete.
  • Provide aria-label on the container if no label is shown.

Composes with

ComponentRelationNote
SelectalternativeUse Select for single-value.

Prompt examples

These are the AI prompt → JSX mappings used by the helixui prompt DSL and integrations like Cursor / Claude Code.

pick multiple tags

“multi-select for tags”

<MultiSelect value={tags} onChange={setTags}>
<MultiSelectOption value="design">Design</MultiSelectOption>
<MultiSelectOption value="ai">AI</MultiSelectOption>
</MultiSelect>