Skip to content

Native Select

A styled native HTML select element with consistent design system integration.

---
import { NativeSelect, NativeSelectOption } from '@bejamas/ui/components/native-select';
---
<NativeSelect class="w-[200px]">
<NativeSelectOption value="">Select a fruit</NativeSelectOption>
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
<NativeSelectOption value="cherry">Cherry</NativeSelectOption>
</NativeSelect>
Terminal window
bunx bejamas add native-select
---
import {
NativeSelect,
NativeSelectOption,
NativeSelectOptGroup,
} from '@bejamas/ui/components/native-select';
---
<NativeSelect>
<NativeSelectOption value="">Select a fruit</NativeSelectOption>
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelect>

Use NativeSelect when you need standard browser form behavior — native validation, mobile-optimized pickers, and zero JavaScript. Use Select when you need a custom-styled dropdown with keyboard navigation, grouped items, and rich content.

---
import { NativeSelect, NativeSelectOptGroup, NativeSelectOption } from '@bejamas/ui/components/native-select';
---
<NativeSelect class="w-[200px]">
<NativeSelectOptGroup label="Fruits">
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelectOptGroup>
<NativeSelectOptGroup label="Vegetables">
<NativeSelectOption value="carrot">Carrot</NativeSelectOption>
<NativeSelectOption value="broccoli">Broccoli</NativeSelectOption>
</NativeSelectOptGroup>
</NativeSelect>
---
import { NativeSelect, NativeSelectOption } from '@bejamas/ui/components/native-select';
---
<div class="flex flex-col items-start gap-4 sm:flex-row">
<NativeSelect class="w-[180px]" size="sm">
<NativeSelectOption value="">Small (h-8)</NativeSelectOption>
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelect>
<NativeSelect class="w-[180px]" size="default">
<NativeSelectOption value="">Default (h-9)</NativeSelectOption>
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelect>
<NativeSelect class="w-[180px]" size="lg">
<NativeSelectOption value="">Large (h-10)</NativeSelectOption>
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelect>
</div>
---
import { NativeSelect, NativeSelectOption } from '@bejamas/ui/components/native-select';
---
<NativeSelect disabled class="w-[200px]">
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelect>
---
import { NativeSelect, NativeSelectOption } from '@bejamas/ui/components/native-select';
---
<NativeSelect aria-invalid="true" class="w-[200px]">
<NativeSelectOption value="">Select a fruit</NativeSelectOption>
<NativeSelectOption value="apple">Apple</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelect>