Checkboxes provide users with a range of options for a given statement where the user may select any number of choices, including zero, one or multiple. In a form, always place checkboxes underneath each other to aid in a user’s ability to scan the form.
Usage
The Checkbox
component maps to a checkbox input and a label. The label is
provided as children
to the component. If you need custom label behaviour use
the CheckboxPrimitive
component.
Controlled
The Checkbox
component passes on the original event through the onChange handler. Use the event target's checked
property to get the latest value and update state accordingly.
Size
The Checkbox
is available in a "small" size. Reserve this appearance for data-rich, dense interfaces.
Guidelines
- Avoid checkboxes with actions that are the opposite of what the user expects.
- The default view for checkboxes has no option selected.
- Checkbox options should be listed in a logical order (alphabetical, numerical, time-based, etc).
Groups
Use the CheckboxGroup
to implement a group of checkboxes. Each Checkbox
within a group must have a "value" prop.
Primitive
Use the CheckboxPrimitive
to implement custom behaviours and appearances.
Indeterminate state
The indeterminate state of a checkbox input element is controlled by JavaScript, not HTML attribution. To make things more declarative and less confusing Balance checkboxes accept a "tri-state"; the checked value for a checkbox may be true | false | 'mixed'
, where "mixed" indicates an indeterminate state aligning with the aria-checked attribute.