Select

Composable select primitives whose panel bouncily unfolds out of the trigger and separates, plus a Morph variant where the trigger grows into the panel via shared layout.

Select

select.tsx

Composable primitives (Select, SelectTrigger, SelectValue, SelectContent, SelectItem); the panel pinches off the trigger and separates, with staggered items. Position-aware (opens upward when needed).

Install

$ bunx --bun shadcn add @beui/select

API Reference

Select

value?
string
defaultValue?
string
onValueChange?
((value: string) => void)
disabled?
boolean
false
className?
string

SelectTrigger

className?
string

SelectValue

placeholder?
string
className?
string

SelectContent

className?
string

SelectItem

value
string
disabled?
boolean
false
className?
string

Morph Select

select-morph.tsx

Composable primitives (MorphSelect, MorphSelectTrigger, MorphSelectValue, MorphSelectContent, MorphSelectItem) where the trigger morphs into the panel via a shared layoutId — one continuous surface that grows open and shrinks back, never detaching.

Install

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

API Reference

MorphSelect

value?
string
defaultValue?
string
onValueChange?
((value: string) => void)
disabled?
boolean
false
className?
string

MorphSelectValue

placeholder?
string
className?
string

MorphSelectTrigger

className?
string

MorphSelectContent

className?
string

MorphSelectItem

value
string
disabled?
boolean
false
className?
string

Keep in mind

Some components on this site are inspired by or recreated from existing work across the web. I'm not here to take credit; just to learn, experiment, and sometimes push things a bit further. If something looks familiar and I forgot to mention you, reach out and I'll fix that right away.

Updated