Pular para o conteúdo
UI

Select

Exibe uma lista de opções para o usuário escolher, aberta por um botão.

Exemplos

Padrão

Label flutuante

Com grupos

Desabilitado

Inválido

Este campo é obrigatório

Com texto de ajuda

Escolha uma opção da lista

Tamanho médio (md)

Com ícones

API

Select

Contém todas as partes de um select.

PropriedadeTipoPadrãoDescrição
defaultValuestring-Valor do select na primeira renderização. Use quando você não precisa controlar o estado do select.
valuestring-Valor controlado do select. Deve ser usado junto com onValueChange.
onValueChange(value: string) => void-Função chamada quando o valor muda.
defaultOpenbooleanfalseEstado de aberto do select na primeira renderização.
openboolean-Estado de aberto controlado do select.
onOpenChange(open: boolean) => void-Função chamada quando o estado de aberto do select muda.
disabledbooleanfalseQuando true, impede o usuário de interagir com o select.
namestring-Nome do select. É enviado com o formulário como parte de um par nome/valor.
requiredbooleanfalseQuando true, indica que o usuário precisa selecionar um valor antes de o formulário ser enviado.
invalidbooleanfalseQuando true, ativa o estilo de erro no trigger e no texto de ajuda (SelectText).
size"md" | "lg""lg"Tamanho do trigger do select. Afeta a altura, o tamanho da fonte e a escala do ícone. As opções da lista ficam um tamanho abaixo: texto de 14px e 40px de altura no lg, texto de 12px e 32px no md.

SelectTrigger

Botão que abre e fecha o select.

PropriedadeTipoPadrãoDescrição
asChildbooleanfalseTroca o elemento renderizado por padrão pelo que for passado como filho, combinando as props e o comportamento.
classNamestring-Classes CSS adicionais aplicadas ao trigger.

SelectValue

Parte que reflete o valor selecionado.

PropriedadeTipoPadrãoDescrição
placeholderReactNode-Conteúdo renderizado dentro do SelectValue quando não há value nem defaultValue definido.

SelectContent

Componente que aparece quando o select está aberto.

PropriedadeTipoPadrãoDescrição
position"item-aligned" | "popper""popper"Modo de posicionamento. "item-aligned" alinha o conteúdo ao trigger; "popper" posiciona como um dropdown comum.
side"top" | "right" | "bottom" | "left""bottom"Lado preferido do trigger onde o conteúdo é renderizado quando aberto. É invertido quando há colisão.
sideOffsetnumber0Distância em pixels a partir do trigger.
align"start" | "center" | "end""start"Alinhamento preferido em relação ao trigger. Pode mudar quando há colisão.
classNamestring-Classes CSS adicionais aplicadas ao conteúdo.

SelectItem

Componente que contém os itens do select.

PropriedadeTipoPadrãoDescrição
valuestring-Valor enviado como dado quando o formulário é submetido com um name. Obrigatório.
disabledbooleanfalseQuando true, impede o usuário de interagir com o item.
textValuestring-Texto opcional usado na busca por digitação (typeahead). Por padrão, o typeahead usa o .textContent da parte SelectItemText.
iconReactNode-Elemento de ícone renderizado à esquerda do texto do item.
classNamestring-Classes CSS adicionais aplicadas ao item.

SelectGroup

Usado para agrupar vários itens.

PropriedadeTipoPadrãoDescrição
asChildbooleanfalseTroca o elemento renderizado por padrão pelo que for passado como filho, combinando as props e o comportamento.

SelectHeader

Usado para renderizar o cabeçalho de um grupo. Não recebe foco pelas setas do teclado.

PropriedadeTipoPadrãoDescrição
asChildbooleanfalseTroca o elemento renderizado por padrão pelo que for passado como filho, combinando as props e o comportamento.
classNamestring-Classes CSS adicionais aplicadas ao label.

SelectSeparator

Usado para separar visualmente os itens do select.

PropriedadeTipoPadrãoDescrição
asChildbooleanfalseTroca o elemento renderizado por padrão pelo que for passado como filho, combinando as props e o comportamento.
classNamestring-Classes CSS adicionais aplicadas ao separador.

SelectWrapper

Componente container necessário para o label flutuante (SelectLabel): é ele que habilita a animação do label.

PropriedadeTipoPadrãoDescrição
classNamestring-Classes CSS adicionais aplicadas ao wrapper.
childrenReactNode-Deve conter o componente Select e o SelectLabel.

SelectLabel

Componente de label flutuante que anima quando o select recebe foco ou tem valor. Deve ser usado dentro de um SelectWrapper.

PropriedadeTipoPadrãoDescrição
htmlForstring-id do trigger do select ao qual o label está associado.
classNamestring-Classes CSS adicionais aplicadas ao label.

SelectText

Componente de texto de ajuda que exibe informações abaixo do trigger do select. Pode mostrar mensagens de erro ou texto de ajuda comum. Detecta o estado de erro automaticamente pela prop invalid do componente Select, por isso precisa ficar dentro do <Select>, depois do SelectContent. Posto fora do Select (por exemplo, como irmão dele no SelectWrapper), ele não fica com a cor de erro.

PropriedadeTipoPadrãoDescrição
classNamestring-Classes CSS adicionais aplicadas ao texto.
childrenReactNode-Texto a ser exibido. Recebe automaticamente o estilo de erro (feedback-error-foreground) quando o Select tem invalid={true}; caso contrário, aparece na cor normal (gray-foreground).