Native Select
Select nativo estilizado — preferível em mobile ou quando o comportamento do OS importa.
Campos e formulários
Carregando demonstração…
Código da demo
"use client";
import * as React from "react";
import { Field, FieldLabel } from "@/components/ui/field";
import {
NativeSelect,
NativeSelectOptGroup,
NativeSelectOption,
} from "@/components/ui/native-select";
export function Demo() {
const [value, setValue] = React.useState("apple");
return (
<Field className="w-full max-w-xs">
<FieldLabel htmlFor="fruit-native">Fruta</FieldLabel>
<NativeSelect
id="fruit-native"
value={value}
onChange={(e) => setValue(e.target.value)}
aria-label="Fruta"
>
<NativeSelectOption value="">Selecione…</NativeSelectOption>
<NativeSelectOptGroup label="Comuns">
<NativeSelectOption value="apple">Maçã</NativeSelectOption>
<NativeSelectOption value="banana">Banana</NativeSelectOption>
</NativeSelectOptGroup>
<NativeSelectOptGroup label="Outras">
<NativeSelectOption value="blueberry">Mirtilo</NativeSelectOption>
<NativeSelectOption value="pineapple">Abacaxi</NativeSelectOption>
</NativeSelectOptGroup>
</NativeSelect>
<p className="fe-caption text-muted-foreground">
Valor: <span className="font-mono">{value || "(vazio)"}</span>
</p>
</Field>
);
}- Acessibilidade
- Elemento select nativo; associe Label/FieldLabel; use aria-invalid para erro.
- Importar
import { NativeSelect, NativeSelectOption, NativeSelectOptGroup } from "@financeequity/ui/native-select"Neste repositório:
import { NativeSelect, NativeSelectOption, NativeSelectOptGroup } from "@/components/ui/native-select"- Dependências
- lucide-react