Multi Select

Composable multi-select primitives with searchable options, removable animated tokens, and a morphing collision-aware panel.

Preview

designengineering

Install

Add it with the shadcn CLI, or copy the source manually.

$ bunx --bun shadcn add @beui/multi-select

API Reference

MultiSelect

value?
{}
defaultValue?
{}
[]
onValueChange?
((value: {}) => void)
open?
boolean
defaultOpen?
boolean
false
onOpenChange?
((open: boolean) => void)
query?
string
defaultQuery?
string
onQueryChange?
((query: string) => void)
filter?
MultiSelectFilter
(value, query, keywords) => { const needle = query.trim().toLocaleLowerCase(); if (!needle) return true; const haystack = [value, ...keywords].join(" ").toLocaleLowerCase(); let queryIndex = 0; for (const character of haystack) { if (character === needle[queryIndex]) queryIndex += 1; if (queryIndex === needle.length) return true; } return false; }
disabled?
boolean
false
className?
string

MultiSelectInput

ref?
any
showIcon?
boolean
false

MultiSelectTrigger

className?
string

MultiSelectValue

placeholder?
any
Select options
className?
string
chipClassName?
string

MultiSelectContent

side?
"top" | "bottom"
bottom
align?
"start" | "center" | "end"
start
sideOffset?
number
6
avoidCollisions?
boolean
true
className?
string

MultiSelectEmpty

className?
string

MultiSelectGroup

className?
string

MultiSelectItem

value
string
textValue?
string
keywords?
{}
[]
disabled?
boolean
false
onSelect?
((value: string) => void)
className?
string

MultiSelectLabel

className?
string

MultiSelectList

ariaLabel?
string
Options
className?
string

MultiSelectSeparator

className?
string

Updated