Caixa de seleção
Nesta página
checkbox() desenha um <label> a envolver um <input type="checkbox"> a sério e a caixa que vês. O input está escondido visualmente mas continua lá, por isso recebe foco, é submetido, e a etiqueta toda é área de clique — o visto é desenhado a partir do próprio estado :checked do input, sem script nenhum pelo meio.
Caixa básica
stack({ direction: 'row', gap: 'lg' },
checkbox({ label: 'Enviar-me novidades por email', name: 'updates' }),
checkbox({ label: 'Selecionada', name: 'checked', checked: true }),
)Cores
stack({ direction: 'row', gap: 'lg', wrap: true },
checkbox({ label: 'Primary', checked: true, color: 'primary' }),
checkbox({ label: 'Neutral', checked: true, color: 'neutral' }),
checkbox({ label: 'Success', checked: true, color: 'success' }),
checkbox({ label: 'Warning', checked: true, color: 'warning' }),
checkbox({ label: 'Danger', checked: true, color: 'danger' }),
)Desativado
stack({ direction: 'row', gap: 'lg' },
checkbox({ label: 'Indisponível', disabled: true }),
checkbox({ label: 'Ligada e bloqueada', checked: true, disabled: true }),
)Etiquetas longas
A caixa mantém-se alinhada com a primeira linha em vez de se centrar perante um parágrafo.
checkbox({
label: 'Correr uma auditoria Lighthouse depois de cada construção, e falhar a construção quando uma pontuação descer abaixo do limiar.',
name: 'lighthouse',
checked: true,
})Grupos
choiceGroup() constrói um conjunto de caixas a partir de dados, com legenda e name partilhados. Passa um array em value para selecionar várias.
choiceGroup({
legend: 'Gerar',
name: 'generate',
type: 'checkbox',
value: ['sitemap', 'rss'],
options: [
{ value: 'sitemap', label: 'sitemap.xml' },
{ value: 'rss', label: 'rss.xml' },
{ value: 'pagefind', label: 'Índice Pagefind' },
],
help: 'Cada um é escrito em dist/ no fim da construção.',
})Em linha
choiceGroup({
legend: 'Categorias',
name: 'categories',
type: 'checkbox',
direction: 'row',
value: ['performance'],
options: ['performance', 'accessibility', 'seo'],
})Com um field
Uma caixa isolada raramente precisa também de uma etiqueta por cima. Quando um grupo precisa, field() dá-lhe o mesmo tratamento de etiqueta, ajuda e erro que a um campo de texto.
field({ label: 'Termos', error: 'Tens de aceitar os termos para continuar.' },
checkbox({ label: 'Aceito os termos', name: 'terms', color: 'danger' }),
)Props
| Prop | Tipo | Predefinição | Descrição |
|---|---|---|---|
label | Child | — | Texto ao lado da caixa. Omite-o para um controlo nu. |
color | 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'primary' | Cor quando selecionada. |
checked | boolean | false | Se começa selecionada. |
name | string | — | Nome do campo do formulário. |
value | string | number | — | Valor submetido quando selecionada. |
disabled | boolean | false | Desativa o input e esbate a etiqueta. |
Tudo o resto aterra no <input>, não na etiqueta — por isso required, onchange e data-* vão para onde esperas. Usa class para estilizar a própria etiqueta.
Para um conjunto construído a partir de dados, vê choiceGroup() na página Grupo de opções — aceita as mesmas opções em qualquer dos casos, comutado por type: 'checkbox'.