Select
Displays a list of options for the user to pick from—triggered by a button.Usage
1import { Select } from "@raystack/apsara";
Select Props
The Select component is composed of several parts, each with their own props.
The root element is the parent component that holds the select. Using the autocomplete prop, you can enable autocomplete functionality. Autcomplet is built using Ariakit ComboboxProvider
Prop
Type
Select.Trigger Props
The button that triggers the Select.
Prop
Type
Select.Content Props
The container that holds the Select items.
Prop
Type
Select.Item Props
Individual clickable options within the Select.
Prop
Type
Select.Group Props
A way to group related Select items together.
Prop
Type
Select.Label Props
Renders a label in a Select group. This component can only be used inside Select.Group
Prop
Type
Select.Separator Props
Visual divider between Select items or groups.
Prop
Type
Examples
Basic Select
1<Select>2 <Select.Trigger aria-label="Fruit selection">3 <Select.Value placeholder="Select a fruit" />4 </Select.Trigger>5 <Select.Content>6 <Select.Item value="apple">Apple</Select.Item>7 <Select.Item value="banana">Banana</Select.Item>8 </Select.Content>9</Select>
Icon
You can pass leadingIcon prop to Select.Item to include items
1<Select>2 <Select.Trigger aria-label="Fruit selection">3 <Select.Value placeholder="Select a fruit" />4 </Select.Trigger>5 <Select.Content>6 <Select.Item value="apple" leadingIcon={<Info size={16} />}>7 Apple8 </Select.Item>9 <Select.Item value="banana" leadingIcon={<X size={16} />}>10 Banana11 </Select.Item>12 <Select.Item value="grape" leadingIcon={<Home size={16} />}>13 Grape14 </Select.Item>15 <Select.Item value="Orange" leadingIcon={<Laugh size={16} />}>16 Orange17 </Select.Item>18 </Select.Content>19</Select>
Size
1<Flex align="center" gap="large">2 <Select>3 <Select.Trigger size="small">4 <Select.Value placeholder="Small select" />5 </Select.Trigger>6 <Select.Content>7 <Select.Item value="1">Option 1</Select.Item>8 <Select.Item value="2">Option 2</Select.Item>9 </Select.Content>10 </Select>11 <Select>12 <Select.Trigger>13 <Select.Value placeholder="Small select" />14 </Select.Trigger>15 <Select.Content>16 <Select.Item value="1">Option 1</Select.Item>17 <Select.Item value="2">Option 2</Select.Item>18 </Select.Content>19 </Select>20</Flex>
Variant
1<Select>2 <Select.Trigger>3 <Select.Value placeholder="Select..." />4 </Select.Trigger>5 <Select.Content>6 <Select.Item value="all">All</Select.Item>7 <Select.Item value="active">Active</Select.Item>8 <Select.Item value="inactive">Inactive</Select.Item>9 </Select.Content>10</Select>
With Separator
1<Select>2 <Select.Trigger>3 <Select.Value placeholder="Select..." />4 </Select.Trigger>5 <Select.Content>6 <Select.Group>7 <Select.Item value="1">Option 1</Select.Item>8 <Select.Item value="2">Option 2</Select.Item>9 </Select.Group>10 <Select.Separator />11 <Select.Group>12 <Select.Item value="3">Option 3</Select.Item>13 <Select.Item value="4">Option 4</Select.Item>14 </Select.Group>15 </Select.Content>16</Select>
Multiple Selection
To enable multiple selection, pass the multiple prop to the Select root element.
When multiple selection is enabled, the value, onValueChange, and defaultValue will be an array of strings.
1<Select multiple>2 <Select.Trigger>3 <Select.Value placeholder="Select..." />4 </Select.Trigger>5 <Select.Content>6 <Select.Item value="1">Option 1</Select.Item>7 <Select.Item value="2">Option 2</Select.Item>8 <Select.Item value="3">Option 3</Select.Item>9 <Select.Item value="4">Option 4</Select.Item>10 <Select.Item value="5">Option 5</Select.Item>11 <Select.Item value="6">Option 6</Select.Item>12 <Select.Item value="7">Option 7</Select.Item>13 <Select.Item value="8">Option 8</Select.Item>14 <Select.Item value="9">Option 9</Select.Item>15 <Select.Item value="10">Option 10</Select.Item>16 </Select.Content>17</Select>
Autocomplete
To enable autocomplete, pass the autocomplete prop to the Select root element.
By default, only select items are filtered using a simple match. For more advanced control, set autocompleteMode="manual" and implement your own custom filtering logic.
1<Select autocomplete>2 <Select.Trigger>3 <Select.Value placeholder="Select..." />4 </Select.Trigger>5 <Select.Content>6 <Select.Group>7 <Select.Item value="1">Option 1</Select.Item>8 <Select.Item value="2">Option 2</Select.Item>9 </Select.Group>10 <Select.Separator />11 <Select.Group>12 <Select.Item value="3">Option 3</Select.Item>13 <Select.Item value="4">Option 4</Select.Item>14 </Select.Group>15 </Select.Content>16</Select>
Accessibility
The Select component follows WAI-ARIA guidelines:
- Trigger has role
combobox - Content has role
listbox - Items have role
option - ARIA labels and descriptions