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
valuestringControlled selected value
defaultValuestringInitial selected value (uncontrolled)
onValueChange(value: string) => voidCalled when the selected value changes
disabledbooleanfalseDisables the entire select

SelectTrigger

PropTypeDefaultDescription
classNamestring""Additional Tailwind classes for the trigger button
childrenReactNodeTypically a SelectValue

SelectValue

PropTypeDefaultDescription
placeholderstringText shown when no value is selected

SelectContent

PropTypeDefaultDescription
classNamestring""Additional Tailwind classes for the dropdown panel
childrenReactNodeSelectItem and SelectSeparator elements

SelectItem

PropTypeDefaultDescription
valuestringThe value this item represents
disabledbooleanfalseDisables this specific option
childrenReactNodeThe option label

SelectSeparator

PropTypeDefaultDescription
classNamestring""Additional Tailwind classes for the divider