🍙 Onigiri

The Crunchyroll design system, rendered live from its own tokens and components. It cannot drift from what ships.

Docs draft

Checkbox

When to use it

useIndependent yes/no choices, alone or in lists; deferred until a submit.
avoidSettings that take effect immediately. switch
avoidMutually exclusive options. radio

States

uncheckedNot selected; only the control boundary shows.

checkedSelected; the fill and glyph show the on state.

disabledNot interactive; rendered with the lifted disabled tokens so it stays perceivable.

checked disabledSelected and not interactive; the selection stays perceivable.

Design specifications

box20px, radius.none (the old sharp square kept), inside a 44px touch target
border-restcolor.border.strong (3:1 contracted)
border-disabledcolor.border.subtle
fill-checkedcolor.accent.base
check-checkedcolor.accent.on-accent — the old white check was 2.9:1 and died
fill-checked-disabledcolor.text.disabled
check-checked-disabledcolor.bg.primary
labeltype.body via FormField or the children slot
glyphIcon / Check at 16 in Figma; CSS-drawn in code

Accessibility

SpaceToggles.

TabFocus ring: 2px text.primary offset 3.

color.border.strong on color.bg.primaryContracted at ≥ 3:1 by the build gate.

color.accent.on-accent on color.accent.baseContracted at ≥ 4.5:1 by the build gate.

Native input styled with appearance:none — never a div. Label wraps the input, so the text is the click target too.