Checkboxes

Checkboxes collect one or more independent choices that apply when a form is submitted, from a single opt-in to selecting rows in a list.

Demo

Change the props and copy the result. The component select switches between the full Checkbox field and the bare CheckboxBase; every control is a real prop, including CheckboxBase’s state props.

Component
size
import { Checkbox } from "@/components/base/checkbox/checkbox"; <Checkbox size="md" label="Remember me" hint="Save my login details." />

CheckboxBase is visual only

The base component renders a div and two SVG marks, nothing interactive, which is why its states are plain props you can set here. Composing it into a custom row means supplying your own React Aria Checkbox around it; details are on the Code tab.

The family

Two components from one module: the field most screens use, and the bare visual box it is built around.

The components in this family, with their descriptions and import paths
ComponentDescriptionImport from
CheckboxThe full checkbox field: the box with an optional label and hint, built on React Aria’s Checkbox.@/​components/​base/​checkbox/​checkbox
CheckboxBaseThe bare visual box. Renders a div and two SVG marks, nothing interactive; compose it inside your own rows and menus.@/​components/​base/​checkbox/​checkbox

The variant space

Three check states at two sizes, all live: boxes measure 16×16 (sm) and 20×20 (md), matching the Figma sheet exactly. Indeterminate paints the minus and wins over the check; it is presentational, so these boxes still toggle underneath it. The text forms below add the label and hint the field composes around the box.

sm
unchecked
checked
indeterminate
md
unchecked
checked
indeterminate
sm, label
sm, label and hint
md, label
md, label and hint

The whole row toggles

Box, label, hint, and even the gap between them all live inside one label element, and clicking any of them flips the checkbox, measured with a real browser. Text sits to the right of the box; there is no reversed layout in the kit.

States

Every treatment below is painted by the kit itself: CheckboxBase takes its states as plain props, so nothing here is a hand-copied approximation. Both sizes.

sm
rest
checked
indeterminate
focus-visible
focus-visible, checked
disabled
disabled, checked
disabled, indeterminate
md
rest
checked
indeterminate
focus-visible
focus-visible, checked
disabled
disabled, checked
disabled, indeterminate

There is no hover state

The kit styles no hover treatment anywhere in the family, and that is not an omission: the Figma sheet’s Hover variants are pixel-identical to rest, measured in this page’s parity audit. Disabled is half opacity, which reproduces the sheet’s disabled colors exactly.