Design System
Components

Multi Select

A multi-value dropdown built on Popover + Checkbox — a real checkbox per option, not a custom listbox.

Selecting a few of many options — the trigger shows the selected label(s) while there are few, then collapses to "N selected" past maxDisplay. For a single choice, reach for Select instead.

Props

Prop

Type

Accessibility

  • Each option is a real <Checkbox> inside a role="group", not role="option" inside a listbox — a screen reader announces each one's checked state directly, which a fully custom listbox role would have to reimplement by hand.
  • Pass aria-label (or aria-labelledby, if a visible label already exists) — the trigger has no visible label of its own beyond the collapsed summary text.

Do / Don't

  • Do keep value/onValueChange controlled from the consumer — this component holds no selection state of its own, so it composes cleanly with a filter panel's existing state or a URL search param.
  • Don't use this for a small, fixed either/or choice — a SegmentedControl or a plain Select reads faster when there's no real "select several" need.

On this page