Native selectstandard
브라우저 기본 선택 상자(native select)를 입력 모양으로 다듬은 것입니다. shadcn base-nova 의 `native-select` 를 그대로 싣습니다. 검색이나 사용자 지정 모양이 필요하면 `select` 나 `combobox` 를 씁니다.
설치
pnpm
pnpm dlx shadcn@4.23.0 add @uikit/native-selectDefault
native-select-example.tsx
import { Example, ExampleWrapper,} from "@/components/example"import { Field, FieldDescription, FieldLabel,} from "@/components/ui/field"import { NativeSelect, NativeSelectOptGroup, NativeSelectOption,} from "@/components/ui/native-select"
export default function NativeSelectExample() { return ( <ExampleWrapper> <NativeSelectBasic /> <NativeSelectWithGroups /> <NativeSelectSizes /> <NativeSelectWithField /> <NativeSelectDisabled /> <NativeSelectInvalid /> </ExampleWrapper> )}
function NativeSelectBasic() { return ( <Example title="Basic"> <NativeSelect aria-label="Select option"> <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> </Example> )}
function NativeSelectWithGroups() { return ( <Example title="With Groups"> <NativeSelect aria-label="Select option"> <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> </Example> )}
function NativeSelectSizes() { return ( <Example title="Sizes"> <div className="flex flex-col gap-4"> <NativeSelect aria-label="Select option" 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 aria-label="Select option" 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> </Example> )}
function NativeSelectWithField() { return ( <Example title="With Field"> <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> </Example> )}
function NativeSelectDisabled() { return ( <Example title="Disabled"> <NativeSelect aria-label="Select option" disabled> <NativeSelectOption value="">Disabled</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelect> </Example> )}
function NativeSelectInvalid() { return ( <Example title="Invalid"> <NativeSelect aria-label="Select option" aria-invalid="true"> <NativeSelectOption value="">Error state</NativeSelectOption> <NativeSelectOption value="apple">Apple</NativeSelectOption> <NativeSelectOption value="banana">Banana</NativeSelectOption> <NativeSelectOption value="blueberry">Blueberry</NativeSelectOption> </NativeSelect> </Example> )}