https://framer.com/m/Radiogroup-CnAchZ.js#RadioGroup

Io / UI Basics / RadioGroup

RadioGroup

RadioGroup is one choice from a short, visible list. Options are data, direction and spacing are props, and the colours are left empty so the theme supplies them. The options below are ChartX2’s four real data sources.

Formsingle choicevertical or horizontallabel on either side

Examples

Live specimens for every control the component exposes.

Default

A vertical run of options with the first one selected.

Direction

direction turns the same options from a stacked list into a single row.

direction vertical

direction horizontal

Size

size sets the dot; the label keeps its own type step, so the two scale independently.

size 14

size 18

size 24

Spacing

gap separates the options from each other; itemGap separates a dot from its own label.

gap 4 · itemGap 6

gap 16 · itemGap 14

Label and state

side flips the labels across the dots; disabled dims the whole group without changing the selection.

side right

side left

disabled

Props

The controls exposed on the instance panel.

PropTypeBehaviour
optionsarrayThe choices; each is a label and the value it submits.
defaultstringValue selected on first render.
lockedValuestringPins the selection to one value.
disabledbooleanBlocks interaction across the whole group.
directionenumvertical stacks the options; horizontal runs them across.
orientationenumReading order used for keyboard navigation.
gapnumberSpace between options.
itemGapnumberSpace between a dot and its own label.
sizenumberDiameter of each dot.
borderbooleanDraws an outline around each dot.
widthnumberOutline width when border is on.
activecolorOutline colour of the selected dot.
inactivecolorOutline colour of unselected dots.
activeBGcolorFill of the selected dot.
inactiveBGcolorFill of unselected dots.
dotcolorColour of the inner mark.
hoverBGcolorDot fill while hovered.
focusRingcolorFocus ring for keyboard users.
radiusnumberCorner radius of each dot.
labelbooleanWhether option labels are shown.
sideenumleft or right — which side of the dot its label sits on.
fontSizeenumTheme type step for the labels.
weightenumlight · regular · medium · semibold · bold.
colorcolorLabel colour.
sizingenumfill stretches the group to its container; fit hugs the content.
truncatenumberLine count before a label is clipped; 0 never clips.
namestringField name used on form submission.
requiredbooleanMarks the field as required in a form.
transitiontransitionAnimation used between states.
onValueChangeeventFires whenever the selection changes.
PropTypeBehaviour
optionsarrayThe choices; each is a label and the value it submits.
defaultstringValue selected on first render.
lockedValuestringPins the selection to one value.
disabledbooleanBlocks interaction across the whole group.
directionenumvertical stacks the options; horizontal runs them across.
orientationenumReading order used for keyboard navigation.
gapnumberSpace between options.
itemGapnumberSpace between a dot and its own label.
sizenumberDiameter of each dot.
borderbooleanDraws an outline around each dot.
widthnumberOutline width when border is on.
activecolorOutline colour of the selected dot.
inactivecolorOutline colour of unselected dots.
activeBGcolorFill of the selected dot.
inactiveBGcolorFill of unselected dots.
dotcolorColour of the inner mark.
hoverBGcolorDot fill while hovered.
focusRingcolorFocus ring for keyboard users.
radiusnumberCorner radius of each dot.
labelbooleanWhether option labels are shown.
sideenumleft or right — which side of the dot its label sits on.
fontSizeenumTheme type step for the labels.
weightenumlight · regular · medium · semibold · bold.
colorcolorLabel colour.
sizingenumfill stretches the group to its container; fit hugs the content.
truncatenumberLine count before a label is clipped; 0 never clips.
namestringField name used on form submission.
requiredbooleanMarks the field as required in a form.
transitiontransitionAnimation used between states.
onValueChangeeventFires whenever the selection changes.

Usage

Guidance carried over from the component definition.

Reach for RadioGroup

One choice from a short list that should all be visible at once.

The options are stable data — a label and a value each.

Keyboard navigation and focus rings should come for free.

The field posts a single name and value with a form.

Reach for something else

More than one option can be picked — use Checkbox or TagPicker.

The list is long enough that it belongs in a dropdown — use SelectX.

The options need cards with their own layout — use RadioCards.

Io — UI Basics

Every group above is a live RadioGroup instance over ChartX2’s four real data-source modes. Colour, type and radius resolve from the project theme tokens.

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.