Checkbox
Uma caixa de seleção cujo check é desenhado na tela, com pais indeterminados, grupos e rótulos que compartilham seu hover.
pnpm dlx shadcn@latest add https://hextaui.com/r/checkbox.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 @tabler/icons-react cnCopie e cole o código a seguir no seu projeto.
components/ui/checkbox.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Estados
disabled, readOnly, indeterminate e aria-invalid. Uma caixa somente leitura mantém seu valor e continua focável, mas ignora cliques e teclas.
Selecionar tudo
Dentro de um <CheckboxGroup />, um checkbox com parent marca todos os valores de allValues. Fica indeterminado quando apenas alguns estão marcados.
Grupos aninhados
Os grupos podem ser aninhados. Cada pai reflete o estado do grupo logo abaixo dele, e o pai do topo cobre tudo.
Controlado
Passe checked e onCheckedChange para manter o estado no seu próprio código.
Form
Um input oculto envia name e value como um checkbox nativo, e required bloqueia o envio até que seja marcado.
Rótulo ao lado
Quando o rótulo não pode envolver a caixa, renderize o checkbox como um <button> com nativeButton e aponte o rótulo para ele com htmlFor.
Cards
Envolva um card inteiro no rótulo para que o card seja a área de clique, e estilize-o com has-data-checked.
Conteúdo longo
A caixa permanece na primeira linha enquanto um rótulo longo e texto sem quebra quebram ao lado dela.
Da direita para a esquerda
A caixa fica no lado inicial da linha e o rótulo segue a direção de leitura.
| Tecla | Ação |
|---|---|
| Space | Marca ou desmarca o checkbox. |
| Enter | Envia o formulário ao qual o checkbox pertence, como um checkbox nativo. Nunca alterna a caixa. |
| Tab | Move o foco para o próximo checkbox. |
- Envolva o checkbox e seu texto em um
<label>. O rótulo dá nome ao checkbox, e passar o mouse ou pressioná-lo dá à caixa o mesmo feedback de passar o mouse sobre a própria caixa. - Dê a cada
<CheckboxGroup />umaria-labelouaria-labelledbypara que os leitores de tela anunciem para que serve o grupo. - A área de clique se estende além da caixa de 16px e cresce em telas sensíveis ao toque.
- A marca é desenhada ao ser marcada. Com movimento reduzido, ela aparece sem a animação do traço.
Construído sobre o checkbox e o checkbox group do Base UI. Ambos aceitam as props da primitiva que envolvem.
| Prop | Tipo | Padrão |
|---|---|---|
checked | boolean | – |
defaultChecked | boolean | false |
onCheckedChange | (checked: boolean, details) => void | – |
indeterminateMostra um traço: nem marcado nem desmarcado. | boolean | false |
disabled | boolean | false |
readOnlyFocável, mas o valor não pode mudar. | boolean | false |
required | boolean | false |
nameEnviado com o formulário quando marcado. | string | – |
valueIdentifica a caixa dentro de um grupo e é o que o formulário envia. Recorre a name e depois a “on”. | string | – |
uncheckedValueEnviado quando desmarcado. Nada por padrão. | string | – |
parentControla todos os valores de allValues do grupo. Somente dentro de um CheckboxGroup. | boolean | false |
inputRef | Ref<HTMLInputElement> | – |
nativeButtonDefina como true quando render for um <button>. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <span> |
| Atributo | Descrição |
|---|---|
data-slot="checkbox" | Seleciona a caixa no CSS. |
data-checked | Presente quando marcado. |
data-unchecked | Presente quando desmarcado. |
data-indeterminate | Presente quando indeterminado. |
data-disabled | Presente quando desabilitado. |
data-readonly | Presente quando somente leitura. |
data-required | Presente quando obrigatório. |
data-invalid | Presente quando inválido dentro de um Field do Base UI. |
| Prop | Tipo | Padrão |
|---|---|---|
valueValores dos checkboxes marcados. | string[] | – |
defaultValue | string[] | – |
onValueChange | (value: string[], details) => void | – |
allValuesTodos os valores do grupo. Obrigatório para um checkbox pai. | string[] | – |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descrição |
|---|---|
data-slot="checkbox-group" | Selecione o grupo no CSS. |
data-disabled | Presente quando o grupo está desativado. |
- 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.
- 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.
- Input groupUm input com ícones, texto, botões ou uma dica de teclado anexados, compartilhando uma única borda e um único anel de foco.
Usado em blocos
Blocos que se baseiam em Checkbox.
- API keysA página de chaves de API de um produto de IA, como nos consoles da OpenAI e da Anthropic. Crie chaves com permissões restritas e uma expiração, veja o segredo uma única vez com uma cópia que confirma, revogue com desfazer, renomeie no próprio lugar, faça a rotação com um período de tolerância e veja o uso por chave.
- MarkdownMarkdown feito para respostas de IA. Ele faz streaming com suavidade e nunca mostra sintaxe pela metade, com títulos para os quais você pode criar links, tabelas que você pode copiar como Markdown ou CSV, callouts do GitHub, listas de tarefas, notas de rodapé, imagens, citações inline e blocos de código completos.
- NotificationsA seção Notificações das configurações de um produto de IA. Uma grade de canal por evento com alternadores por linha, por coluna e geral, horário de silêncio com uma linha ao vivo do próximo silêncio, um resumo por e-mail, envios de teste reais para desktop, e-mail, push e Slack, tratamento da permissão do navegador e um fluxo de conexão com o Slack. Encaixa em qualquer seção de Configurações.
- SecuritySessões e segurança para um produto de IA. Dispositivos ativos com encerramento de sessão que anima a saída das linhas, troca de senha com um medidor de força em tempo real, configuração de autenticação em duas etapas com um QR code real, uma verificação de 6 dígitos e códigos de recuperação para baixar, passkeys via WebAuthn e exclusão de conta protegida por uma confirmação digitada.