Select

Loading...

Installation

Add the component with the CLI.

npx shadcn@latest add @intentui/select

Composed components

When you install this component via the CLI, it automatically loads all composed components, so you don’t need to add them individually.

Manual installation

Install the dependencies, then copy the component source into your project.

npm install react-aria-components @heroicons/react cn

Anatomy

import {
  Select,
  SelectContent,
  SelectItem,
  SelectTrigger,
} from "@/components/ui/select"
const software = [
  { id: 1, name: "Adobe Photoshop" },
  { id: 2, name: "Sketch" },
  { id: 3, name: "Figma" },
  { id: 4, name: "Adobe XD" },
  { id: 5, name: "InVision" },
]

<Select aria-label="Design software" placeholder="Select a software">
  <SelectTrigger />
  <SelectContent items={software}>
    {(item) => (
      <SelectItem id={item.id} textValue={item.name}>
        {item.name}
      </SelectItem>
    )}
  </SelectContent>
</Select>

Examples

Section

A select component can display items grouped together in sections.

Loading...

Searchable select

Use Autocomplete to filter select options as users type.

Loading...

With icon

Loading...

With avatar

Loading...

Multiple select

Enable selecting more than one option by setting selectionMode to multiple.

Loading...

Validation

If a user submits the form without selecting an item, an error message will appear.

Loading...

Label

SelectItem wraps string children in SelectLabel automatically. When an item includes an icon or avatar, wrap its label explicitly:

<SelectItem id="discord" textValue="Discord">
  <BrandDiscordIcon />
  <SelectLabel>Discord</SelectLabel>
</SelectItem>

Details description

Use SelectDescription to add supporting text to an option.

Loading...

Controlled

Pass selectedKey and update it with onSelectionChange to control the selection.

Loading...

Uncontrolled

Use defaultSelectedKey to set the initial selection of an uncontrolled select.

Loading...

Disabled

When the select component is disabled, it cannot be interacted with.

Loading...

Component API

Select

Select extends the React Aria Components <Select> component.

classNamestring
itemsIterable<T, M>

SelectContent

SelectContent extends the React Aria Components <ListBox> component.

classNamestring
itemsIterable<T>
popoverOmit<PopoverProps, "children">

SelectItem

SelectItem extends the Intent UI <DropdownItem> component.

classNamestring
intent"danger" | "warning"

SelectLabel

SelectLabel extends the Intent UI <DropdownLabel> component.

classNamestring

SelectDescription

SelectDescription extends the Intent UI <DropdownDescription> component.

classNamestring

SelectSection

SelectSection extends the Intent UI <DropdownSection> component.

classNamestring
titlestring

SelectSeparator

SelectSeparator extends the Intent UI <DropdownSeparator> component.

classNamestring

SelectTrigger

SelectTrigger extends the React Aria Components <Button> component.

classNamestring
prefixReactNode

See the React Aria for the full API reference.

Design