https://framer.com/m/Checkbox-dhPHlA.js#Checkbox

Io / UI Basics / Checkbox

Checkbox

Checkbox is a single binary choice with an optional label. Checked and disabled states, size, label side and truncation are all props; every colour is left empty so the theme supplies it.

Formchecked · disabled4 sizeslabel on either side

Examples

Live specimens for every control the component exposes.

Default

A box and a label. Nothing else is configured.

State

checked and disabled are independent, so all four combinations are reachable.

checked false

checked true

disabled

checked and disabled

Size

size drives the box; the label keeps its own type step so the two scale independently.

size 16

size 20

size 26

Radius

radius takes the box from a square tick to a round one.

radius 0

radius 6

radius 99

Label

side moves the label across the box, gap sets the distance, and fontSize picks a theme type step.

side right · gap 10

side left · gap 10

fontSize Detail · gap 16

Props

The controls exposed on the instance panel.

PropTypeBehaviour
checkedbooleanWhether the box starts ticked.
disabledbooleanBlocks interaction and dims the control.
sizenumberBox size in pixels.
borderbooleanDraws an outline around the box.
widthnumberOutline width when border is on.
activecolorOutline colour in the checked state.
inactivecolorOutline colour when unchecked.
activeBGcolorBox fill when checked.
inactiveBGcolorBox fill when unchecked.
checkcolorTick mark colour.
hoverBGcolorBox fill while hovered.
focusRingcolorFocus ring for keyboard users.
thicknessnumberStroke weight of the tick.
radiusnumberCorner radius of the box.
labelbooleanWhether the label is shown at all.
textstringThe label text itself.
sideenumleft or right — which side of the box the label sits on.
gapnumberSpace between box and label.
fontSizeenumTheme type step for the label.
weightenumLabel font weight.
colorcolorLabel colour.
sizingenumfill stretches the control to its container; fit hugs the content.
truncatenumberLine count before the label is clipped; 0 never clips.
namestringField name used on form submission.
valuestringValue submitted when checked.
requiredbooleanMarks the field as required in a form.
transitiontransitionAnimation used between states.
onToggleeventFires on every state change.
onCheckeventFires when it becomes checked.
onUncheckeventFires when it becomes unchecked.
PropTypeBehaviour
checkedbooleanWhether the box starts ticked.
disabledbooleanBlocks interaction and dims the control.
sizenumberBox size in pixels.
borderbooleanDraws an outline around the box.
widthnumberOutline width when border is on.
activecolorOutline colour in the checked state.
inactivecolorOutline colour when unchecked.
activeBGcolorBox fill when checked.
inactiveBGcolorBox fill when unchecked.
checkcolorTick mark colour.
hoverBGcolorBox fill while hovered.
focusRingcolorFocus ring for keyboard users.
thicknessnumberStroke weight of the tick.
radiusnumberCorner radius of the box.
labelbooleanWhether the label is shown at all.
textstringThe label text itself.
sideenumleft or right — which side of the box the label sits on.
gapnumberSpace between box and label.
fontSizeenumTheme type step for the label.
weightenumLabel font weight.
colorcolorLabel colour.
sizingenumfill stretches the control to its container; fit hugs the content.
truncatenumberLine count before the label is clipped; 0 never clips.
namestringField name used on form submission.
valuestringValue submitted when checked.
requiredbooleanMarks the field as required in a form.
transitiontransitionAnimation used between states.
onToggleeventFires on every state change.
onCheckeventFires when it becomes checked.
onUncheckeventFires when it becomes unchecked.

Usage

Guidance carried over from the component definition.

Reach for Checkbox

A single yes/no choice that stands on its own.

The choice needs a label the user can click.

You want the checked, hover, focus and disabled states handled for you.

The field posts a name and value with a form.

Reach for something else

You need an indeterminate or tri-state box.

It is really a single choice among several — use RadioGroup.

The control reads better as an on/off toggle — use Switch.

Io — UI Basics

Every checkbox above is a live Checkbox instance. Colour, type and radius resolve from the project theme tokens — the colour props are deliberately left empty.

io

An experiment in what a design system becomes when AI can consume it.

© 2026 io

Contact me

Create a free website with Framer, the website builder loved by startups, designers and agencies.