componentes / formulário
Checkbox
Caixa de seleção com estados marcado, desmarcado e parcial.
688 B gzip client componentbase ui · checkbox
checkbox-default.tsx
import { Checkbox } from "@/components/ui/checkbox";
export default function CheckboxDefault() {
return (
<div className="flex flex-col gap-3 text-sm">
<label htmlFor="email" className="flex items-center gap-2">
<Checkbox defaultChecked /> get product updates by email
</label>
<label htmlFor="device" className="flex items-center gap-2">
<Checkbox /> remember this device
</label>
<label htmlFor="disabled" className="flex items-center gap-2 text-muted-foreground">
<Checkbox disabled /> disabled option
</label>
</div>
);
}Instalação
$ npx shadcn@latest add https://cd-ui.vercel.app/r/checkbox.jsonprimeira vez? configure o components.json e o tema antes: veja instalação.
Uso
import { Checkbox } from "@/components/ui/checkbox"
<label className="flex items-center gap-2">
<Checkbox /> I accept the terms
</label>Exemplos
Indeterminado
Um pai que reflete os filhos: marcado, desmarcado ou parcial.
checkbox-indeterminate.tsx
"use client";
import { useState } from "react";
import { Checkbox } from "@/components/ui/checkbox";
const items = ["scheduling", "records", "billing"];
export default function CheckboxIndeterminate() {
const [checked, setChecked] = useState<string[]>(["scheduling"]);
const all = checked.length === items.length;
return (
<div className="flex flex-col gap-3 text-sm">
<label htmlFor="all" className="flex items-center gap-2 font-medium">
<Checkbox
checked={all}
indeterminate={!all && checked.length > 0}
onCheckedChange={(value) => setChecked(value ? items : [])}
/>
all modules
</label>
<div className="flex flex-col gap-3 pl-6">
{items.map((item) => (
<label htmlFor={item} className="flex items-center gap-2" key={item}>
<Checkbox
checked={checked.includes(item)}
onCheckedChange={(value) => setChecked((prev) => (value ? [...prev, item] : prev.filter((i) => i !== item)))}
/>
{item}
</label>
))}
</div>
</div>
);
}API
Checkbox
Base UI · Checkbox.RootCaixa de seleção. O check é um traço SVG que se desenha em 160ms.
| prop | tipo | padrão |
|---|---|---|
checked · defaultCheckedEstado controlado ou inicial. | boolean | - |
onCheckedChangeChamado ao marcar ou desmarcar. | (checked: boolean) => void | - |
indeterminateMostra o traço de "parcial". | boolean | false |
name · valuePara enviar em formulário. | string | - |
classNameClasses extras, mescladas com | string | - |
Teclado
| tecla | ação |
|---|---|
| Space | Marca ou desmarca. |