Checkbox
Choosing · researchedA box a person ticks to turn an option on or off, or to pick several items from a list.
atom
Each block is the real component from that system’s own package, in an isolated frame. They are live: hover, focus and press them. Frames are drawn on white so systems compare on one ground, and a font a system licenses only for its own site (GOV.UK’s Transport) falls back to what the system itself specifies.
Ant Design
Checkbox native: yes antd 6.6.5- Variants
- —
- Sizes
- —
- States documented
- default, disabled
- Accessibility guidance
- no
Docs describe native input elements; indeterminate state demonstrated. Docs page lists no size or variant names.
2 corrected on re-read
- states_documented: ["default","disabled","error"] → ["default","disabled"] disabled prop; indeterminate prop; no status/error prop documented
- a11y_documented: "unread" → "no" Page read in full; no accessibility section or aria guidance
Carbon
Checkbox native: yes @carbon/react 1.117.0GOV.UK
Checkboxes superset native: yes govuk-frontend 6.5.1Material Web
Checkbox native: yes @material/web 2.5.0Primer
Checkbox native: yes @primer/react 38.40.1- Variants
- —
- Sizes
- —
- States documented
- disabled, error
- Accessibility guidance
- yes
Native input confirmed in source (Checkbox.tsx). Page directs validation to CheckboxGroup; has indeterminate prop and validationStatus error/success.
1 corrected on re-read
- a11y_documented: "unread" → "yes" Read /accessibility/: Accessibility and usability expectations, Keyboard, Screen reader, Built-in features
Spectrum
Checkbox native: yes @spectrum-web-components/button 1.12.4- Variants
- —
- Sizes
- S, M, L, XL
- States documented
- default, hover, active, focus, disabled, error
- Accessibility guidance
- yes
Docs page is the React Spectrum-labelled page; sizes from its Checkbox data file, which has an isEmphasized boolean but no named variants. Native check is Spectrum Web Components 1st-gen, which renders an <input>.
USWDS
Checkbox native: yes @uswds/uswds 3.14.0Platform facts
Anatomy
- control — The checkbox itself (role checkbox); APG gives no part names beyond role and group.
- label — Accessible name via label element, aria-labelledby or aria-label.
- group optional — APG: elements with role group and aria-labelledby pointing at the group label. fieldset/legend is the HTML equivalent (stated in the APG switch page, not the checkbox page).
- description optional — aria-describedby text, optional.
Keys the APG binds
- SpaceWhen the checkbox has focus, pressing the Space key changes the state of the checkbox.
The seven states
| default | Unchecked (aria-checked false) unless checked attribute is set. |
|---|---|
| hover | Pointer-only CSS state; not defined by the sources. |
| focus | Tab focus; Space toggles. |
| active | Momentary press state (CSS :active); the checked/mixed state is the persistent one, not 'active'. |
| disabled | disabled attribute; value not submitted. |
| error | A required unchecked checkbox fails validation (valueMissing). |
| loading | n/a — Not defined by APG or HTML; a checkbox records a choice and does not load. |
Every cell was read twice, the second time from raw sources by a separate pass. 3 of 35 fields changed on the second read — open any “corrected” note to see what it said before.