Select

An accessible dropdown for choosing a single value from a list. Animated open/close, keyboard-navigable, and fully styled to the bloom palette.

Installation

npm install @bloomkit/react

Usage

import {
  Select,
  SelectTrigger,
  SelectValue,
  SelectContent,
  SelectItem,
  SelectSeparator,
} from "@bloomkit/react";
 
<Select>
  <SelectTrigger>
    <SelectValue placeholder="Pick a mood" />
  </SelectTrigger>
  <SelectContent>
    <SelectItem value="calm">Calm</SelectItem>
    <SelectItem value="focused">Focused</SelectItem>
    <SelectSeparator />
    <SelectItem value="energized">Energized</SelectItem>
  </SelectContent>
</Select>

Controlled

const [value, setValue] = useState("calm");
 
<Select value={value} onValueChange={setValue}>
  <SelectTrigger>
    <SelectValue />
  </SelectTrigger>
  <SelectContent>
    <SelectItem value="calm">Calm</SelectItem>
    <SelectItem value="focused">Focused</SelectItem>
  </SelectContent>
</Select>

Default value

<Select defaultValue="focused">
  <SelectTrigger>
    <SelectValue />
  </SelectTrigger>
  <SelectContent>
    <SelectItem value="calm">Calm</SelectItem>
    <SelectItem value="focused">Focused</SelectItem>
  </SelectContent>
</Select>

Disabled

<Select disabled>
  <SelectTrigger>
    <SelectValue placeholder="Unavailable" />
  </SelectTrigger>
  <SelectContent>
    <SelectItem value="a">Option A</SelectItem>
  </SelectContent>
</Select>

Props

Select

PropTypeDefaultDescription
valuestring—Controlled selected value
defaultValuestring—Initial selected value (uncontrolled)
onValueChange(value: string) => void—Called when the selected value changes
disabledbooleanfalseDisables the entire select

SelectTrigger

PropTypeDefaultDescription
classNamestring""Additional Tailwind classes for the trigger button
childrenReactNode—Typically a SelectValue

SelectValue

PropTypeDefaultDescription
placeholderstring—Text shown when no value is selected

SelectContent

PropTypeDefaultDescription
classNamestring""Additional Tailwind classes for the dropdown panel
childrenReactNode—SelectItem and SelectSeparator elements

SelectItem

PropTypeDefaultDescription
valuestring—The value this item represents
disabledbooleanfalseDisables this specific option
childrenReactNode—The option label

SelectSeparator

PropTypeDefaultDescription
classNamestring""Additional Tailwind classes for the divider