UI

Select

Abre uma lista fechada de opções para o usuário escolher uma (ou várias).

Serviço

Instalação

npx shadcn@latest add @lenstech/select

Uso

import { Select, SelectContent, SelectItem, SelectTrigger } from "@/components/ui/select"
<Select name="servico" label="Serviço" placeholder="Selecione um serviço">
  <SelectTrigger />
  <SelectContent>
    <SelectItem id="site">Site institucional</SelectItem>
    <SelectItem id="loja">Loja virtual</SelectItem>
  </SelectContent>
</Select>

A estrutura é a mesma do shadcn: Select › SelectTrigger + SelectContent › SelectItem. O placeholder fica no Select (não no SelectValue).

value, não selectedKey

Cada SelectItem é identificado pelo id. Controle a seleção com value / defaultValue e onChange, que recebe o id escolhido (Key | null) — não o evento. As props selectedKey / onSelectionChange ainda funcionam, mas estão obsoletas no React Aria. O valor enviado no formulário (via name) também é o id.

Exemplos

Com seções

Horário de atendimento

Itens dinâmicos e controlado

Passe items ao SelectContent e uma função como filho. Cada objeto precisa de um id.

Unidade

Endereço: Rua XV de Novembro, 120

Seleção múltipla

Com selectionMode="multiple", value passa a ser um array de ids e a lista fica aberta enquanto o usuário marca.

Formas de pagamento aceitas

Tamanho pequeno

Itens por página

Desabilitado

EstadoDefinido pelo endereço cadastrado.

Obrigatório

Tente continuar sem escolher um serviço.

Serviço

Quando usar

  • Use para escolher entre 5 e 15 opções conhecidas (serviço, unidade, estado).
  • Não use com até 4 opções — um Radio Group deixa todas visíveis.
  • Não use com listas longas ou quando o usuário já sabe o que procura — use Combobox.
  • Não use para ações (editar, excluir) — use Menu.

API

Select

Aceita todas as props do Select do React Aria, mais:

Prop

Type

SelectTrigger

Aceita as props do Button do React Aria. Sem filhos, renderiza <SelectValue />.

Prop

Type

SelectContent

Aceita as props do ListBox (items, renderEmptyState…), mais:

Prop

Type

SelectItem, SelectSection e SelectValue

SelectItem e SelectSection são o mesmo que ListBoxItem e ListBoxSection. SelectValue mostra o valor selecionado — use-o como filho do SelectTrigger para customizar a exibição.

On this page