Installation

pnpm dlx shadcn@latest add @cortexcn/native-selectUsage
import { NativeSelect, NativeSelectOptGroup, NativeSelectOption } from "@/components/native-select";Examples
Basic
import { NativeSelect, NativeSelectOption } from "@/components/native-select"export function NativeSelectBasic() { return ( <div className="flex flex-col gap-6"> <NativeSelect> <NativeSelectOption value="">Select a fruit</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> <NativeSelectOption value="grapes" disabled> Grapes </NativeSelectOption> <NativeSelectOption value="pineapple">Pineapple</NativeSelectOption> </NativeSelect> </div> )}With groups
import { NativeSelect, NativeSelectOptGroup, NativeSelectOption } from "@/components/native-select"export function NativeSelectWithGroups() { return ( <div className="flex flex-col gap-6"> <NativeSelect> <NativeSelectOption value="">Select a food</NativeSelectOption> <NativeSelectOptGroup label="Fruits"> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelectOptGroup> <NativeSelectOptGroup label="Vegetables"> <NativeSelectOption value="carrot">Carrot</NativeSelectOption> <NativeSelectOption value="broccoli">Broccoli</NativeSelectOption> <NativeSelectOption value="spinach">Spinach</NativeSelectOption> </NativeSelectOptGroup> </NativeSelect> </div> )}Sizes
import { NativeSelect, NativeSelectOption } from "@/components/native-select"export function NativeSelectSizes() { return ( <div className="flex flex-col gap-6"> <div className="flex flex-col gap-4"> <NativeSelect size="sm"> <NativeSelectOption value="">Select a fruit</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelect> <NativeSelect size="default"> <NativeSelectOption value="">Select a fruit</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelect> </div> </div> )}With field
Select your country of residence.
import { Field, FieldDescription, FieldLabel } from "@/components/field"import { NativeSelect, NativeSelectOption } from "@/components/native-select"export function NativeSelectWithField() { return ( <div className="flex flex-col gap-6"> <Field> <FieldLabel htmlFor="native-select-country">Country</FieldLabel> <NativeSelect id="native-select-country"> <NativeSelectOption value="">Select a country</NativeSelectOption> <NativeSelectOption value="us">United States</NativeSelectOption> <NativeSelectOption value="uk">United Kingdom</NativeSelectOption> <NativeSelectOption value="ca">Canada</NativeSelectOption> <NativeSelectOption value="au">Australia</NativeSelectOption> </NativeSelect> <FieldDescription>Select your country of residence.</FieldDescription> </Field> </div> )}Disabled
import { NativeSelect, NativeSelectOption } from "@/components/native-select"export function NativeSelectDisabled() { return ( <div className="flex flex-col gap-6"> <NativeSelect disabled> <NativeSelectOption value="">Disabled</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelect> </div> )}Invalid
import { NativeSelect, NativeSelectOption } from "@/components/native-select"export function NativeSelectInvalid() { return ( <div className="flex flex-col gap-6"> <NativeSelect aria-invalid="true"> <NativeSelectOption value="">Error state</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelect> </div> )}Adapted from the shadcn/ui Native Select (MIT).
