Select
An always-fair select component. The order changes every time you open it.
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@chadcn/ui"
export function SelectDemo() {
return (
<Select>
<SelectTrigger className="w-[180px]">
<SelectValue placeholder="Select a fruit" />
</SelectTrigger>
<SelectContent>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="banana">Banana</SelectItem>
<SelectItem value="blueberry">Blueberry</SelectItem>
<SelectItem value="grapes">Grapes</SelectItem>
<SelectItem value="pineapple">Pineapple</SelectItem>
</SelectContent>
</Select>
)
}How it works
This component uses the same compound component API as shadcn/ui (Select, SelectTrigger, SelectContent, SelectItem), but the options are shuffled every time you open the dropdown.
Installation
Coming SoonPackage not yet published on npm.
pnpm add @chadcn/uiUsage
import "@chadcn/ui/styles.css"
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@chadcn/ui"<Select>
<SelectTrigger className="w-[180px]">
<SelectValue placeholder="Theme" />
</SelectTrigger>
<SelectContent>
<SelectItem value="light">Light</SelectItem>
<SelectItem value="dark">Dark</SelectItem>
<SelectItem value="system">System</SelectItem>
</SelectContent>
</Select>Coming SoonPackage not yet published on npm.
Examples
Scrollable
The select content automatically becomes scrollable when the list of items exceeds the available height.
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@chadcn/ui"
export function SelectScrollable() {
return (
<Select>
<SelectTrigger className="w-[280px]">
<SelectValue placeholder="Select a timezone" />
</SelectTrigger>
<SelectContent>
<SelectItem value="est">Eastern Standard Time (EST)</SelectItem>
<SelectItem value="cst">Central Standard Time (CST)</SelectItem>
<SelectItem value="mst">Mountain Standard Time (MST)</SelectItem>
<SelectItem value="pst">Pacific Standard Time (PST)</SelectItem>
<SelectItem value="gmt">Greenwich Mean Time (GMT)</SelectItem>
<SelectItem value="cet">Central European Time (CET)</SelectItem>
<SelectItem value="kst">Korea Standard Time (KST)</SelectItem>
<SelectItem value="jst">Japan Standard Time (JST)</SelectItem>
</SelectContent>
</Select>
)
}Disabled
Use the disabled prop to prevent interaction.
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@chadcn/ui"
export function SelectDisabled() {
return (
<Select disabled>
<SelectTrigger className="w-[180px]">
<SelectValue placeholder="Select a fruit" />
</SelectTrigger>
<SelectContent>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="banana">Banana</SelectItem>
</SelectContent>
</Select>
)
}API Reference
See the Radix UI Select documentation.