Label
Um rótulo que acompanha seu controle, escurecendo quando ele está desabilitado e marcando-o como obrigatório ou opcional por conta própria.
pnpm dlx shadcn@latest add https://hextaui.com/r/label.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react cnCopie e cole o código a seguir no seu projeto.
components/ui/label.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Aponte htmlFor para o id de um controle, ou envolva o controle. De qualquer forma o rótulo o encontra e acompanha seu estado. Dentro de um <Field />, use <FieldLabel />, que configura o id para você.
Acompanha seu controle
O rótulo escurece e mostra o cursor not-allowed enquanto seu controle está desabilitado, e expõe data-required, data-invalid e data-readonly para seus próprios estilos. Ele acompanha as mudanças do controle.
Obrigatório e opcional
indicator="optional" marca os controles sem required, e indicator="required" adiciona um asterisco aos controles que o têm. A marca fica oculta dos leitores de tela, que já anunciam os campos obrigatórios.
Checkbox
Envolva um checkbox para que o rótulo inteiro o alterne, ou coloque o rótulo ao lado dele com htmlFor. Um checkbox desabilitado escurece seu rótulo de qualquer forma.
Ícone
Os ícones dentro de um rótulo são dimensionados e atenuados para ficar ao lado do texto.
Conteúdo longo
Rótulos longos quebram linha, e strings sem quebras são quebradas em vez de alargar o layout.
Da direita para a esquerda
Os espaçamentos e o indicador seguem a direção de leitura.
- Clicar no rótulo foca ou alterna seu controle, então ele é uma área de clique maior que o controle sozinho.
- Clicar duas vezes no texto do rótulo não o seleciona. Cliques duplos em um controle dentro do rótulo funcionam normalmente.
- Todo controle precisa de um nome. Quando não há rótulo visível, use
aria-labelno controle.
Renderiza um <label> e aceita seus atributos.
| Prop | Tipo | Padrão |
|---|---|---|
htmlForO id do controle. Omita quando o rótulo envolve o controle. | string | – |
indicatorMarque o rótulo a partir do estado obrigatório do controle. Desativado por padrão. | "required" | "optional" | – |
optionalText | ReactNode | "Optional" |
render | ReactElement | (props, state) => ReactElement | <label> |
| Atributo | Descrição |
|---|---|
data-slot="label" | Seleciona os rótulos no CSS. |
data-disabled | Presente enquanto o controle está desabilitado. |
data-required | Presente enquanto o controle é obrigatório. |
data-invalid | Presente enquanto o controle é inválido, depois que o usuário interagiu ou quando aria-invalid está definido. |
data-readonly | Presente enquanto o controle é somente leitura. |
data-slot="label-indicator" | A marca de obrigatório ou opcional. |
- CalendarUma grade de datas para seleção única, de intervalo e múltipla, com meses deslizantes, prévias de intervalo e dias com tamanho adequado ao toque.
- CheckboxUma caixa de seleção cujo check é desenhado na tela, com pais indeterminados, grupos e rótulos que compartilham seu hover.
- ComboboxUm select filtrável com chips, grupos e resultados assíncronos, em um popup que se redimensiona conforme você digita.
- Date pickerUm botão que abre um calendário em um popover, ou em um bottom sheet no celular, para datas únicas e intervalos.
- FieldRótulos, descrições e erros ligados ao seu controle, com estados de validação e layouts para formulários.
- InputUm campo de texto com três tamanhos, estados inválido e somente leitura, estilo de validação nativa e fonte de 16px no toque para que os celulares nunca façam zoom.
Usado em blocos
Blocos que se baseiam em Label.
- Agent TodosMostre o plano de um agente enquanto ele trabalha. Cada etapa passa de backlog para a fazer, em andamento e concluída, com tempos ao vivo, falhas e as chamadas de ferramenta por trás dela. Uma pílula de status para acima do composer, mudanças no plano que você consegue ver e uma etapa de revisão para editar o plano antes de executá-lo.
- Chat SidebarA barra lateral de um app de chat. Logo, busca e Novo chat no topo, seus próprios links abaixo, chats fixados, projetos que se expandem para mostrar seus chats, recentes agrupados por dia e linhas com menus de hover e de clique direito, renomeação inline, exclusão com desfazer e estados de resposta ao vivo.
- TeamMembros da equipe e convites para as configurações do workspace de um produto de IA. Um medidor de vagas que pré-visualiza os convites que você está digitando, uma caixa de convite que transforma uma lista colada em chips verificados, membros com funções, busca, filtros e ordenação, convites pendentes com intervalo para reenvio e links copiáveis, transferência de propriedade com confirmação digitada e remoção com desfazer.