Pular para o conteúdo
Storybookv2Pacote

AppSelect

Átomos

Abrir no Storybook

Campo de seleção com rótulo, texto de apoio e mensagem de erro, na mesma caixa do AppInput e com a seta arrow_drop_down. Usa o <select> nativo: teclado, leitores de tela e a lista do celular funcionam sem script.

Quando usar: escolher uma opção de uma lista média ou longa (estado, loja, categoria de produto).

Quando não usar: poucas opções sempre visíveis (use AppRadioGroup), várias escolhas (use AppCheckboxGroup) ou busca com digitação.

O ref e as props HTML são repassados ao <select>.

Importar

import { AppSelect } from '@handsondigital/idplugger-ui'

CSS

Para carregar só o CSS deste componente (além do tokens.css), importe o arquivo dele; as dependências vêm por @import:

@import '@handsondigital/idplugger-ui/css/AppSelect.css';

Com Tailwind 4 e camadas, use a variante em @layer idplugger-ui:

@import '@handsondigital/idplugger-ui/css/layer/AppSelect.css';

Exemplos

Default

Exemplo: AppSelect, Default
const Default = () => <AppSelect label="Estado" placeholder="Selecione">{ESTADOS.map(([value, name]) => (
<option key={value} value={value}>
{name}
</option>
))}</AppSelect>;

Sizes

Exemplo: AppSelect, Sizes
const Sizes = () => <div style={{ display: 'grid', gap: 16 }}>
<AppSelect placeholder="Selecione" label="Pequeno (sm)" size="sm">{ESTADOS.map(([value, name]) => (
<option key={value} value={value}>
{name}
</option>
))}</AppSelect>
<AppSelect
label="Médio (md)"
size="md"
defaultValue="sp"
placeholder={undefined}>{ESTADOS.map(([value, name]) => (
<option key={value} value={value}>
{name}
</option>
))}</AppSelect>
</div>;

With Hint

Exemplo: AppSelect, With Hint
const WithHint = () => <AppSelect
label="Estado"
placeholder="Selecione"
hint="Onde você comprou o produto.">{ESTADOS.map(([value, name]) => (
<option key={value} value={value}>
{name}
</option>
))}</AppSelect>;

With Error

Exemplo: AppSelect, With Error
const WithError = () => <AppSelect
label="Estado"
placeholder="Selecione"
error="Escolha o estado da compra.">{ESTADOS.map(([value, name]) => (
<option key={value} value={value}>
{name}
</option>
))}</AppSelect>;

Disabled

Exemplo: AppSelect, Disabled
const Disabled = () => <AppSelect label="Estado" placeholder="Selecione" disabled>{ESTADOS.map(([value, name]) => (
<option key={value} value={value}>
{name}
</option>
))}</AppSelect>;

Props

PropTipoPadrãoDescrição
children*ReactNode—As opções: elementos <option> (e <optgroup>).
label*string—Rótulo visível do campo (obrigatório): vira o nome acessível via <label htmlFor>.
errorstring—Mensagem de erro: troca o hint, pinta o campo de vermelho e marca aria-invalid.
hintstring—Texto de apoio abaixo do campo. Some enquanto houver error.
placeholderstring—Texto exibido enquanto nada foi escolhido (primeira opção, vazia e desabilitada, em cinza).
size"sm" | "md"—Altura do campo: sm (40px) ou md (44px). Padrão: md.