Skip to content

Radio

An independent React adapter where Ark UI provides the parts and Zag maintains exclusive selection, roving focus, keyboard, and form behavior.

Design

Functional preview

Running with the independent Ark UI adapter and Zag behavior.

Loading functional preview…

Anatomy

4 Select a plan 5
1 Label (.ds-radio-label) — wraps radio + text, extends click target.
2 Input (.ds-radio) — styled native <input type="radio">.
3 Dot — CSS pseudo-element, visible when selected.
4 Group (.ds-radio-group) — <fieldset> wrapping related radios.
5 Legend (.ds-radio-group__legend) — group heading, provides context to screen readers.

Radio Group

Notification preference

Sizes

Error Group

Select a plan Please select a plan to continue.

Disabled

States

StateCSS triggerVisual changeToken
Unselected---Neutral control fill and bordercomponent.radio.control.fill.unselected.default, component.radio.control.border-color.unselected.default
Unselected hover:hoverDarker neutral control border/fillcomponent.radio.control.fill.unselected.hover, component.radio.control.border-color.unselected.hover
Selected:checkedPrimary control fill with dotcomponent.radio.control.fill.selected.default, component.radio.dot.fill.selected.default
Selected hover:checked:hoverDarker primary control fillcomponent.radio.control.fill.selected.hover, component.radio.dot.fill.selected.hover
Focus:focus-visible2px outline ringcomponent.radio.focus-ring.radius.default + component.focus-ring.*
Error group.ds-radio-group--errorError border on controls and message below groupcomponent.radio.control.border-color.unselected.error, semantic.feedback.error.content-default
Disabled[disabled]Muted control, dot and labelcomponent.radio.control.fill.*.disabled, semantic.content.disabled

Figma properties

PropertyTypeDefaultDescription
Show LabelBooleantrueShows or hides the control label
LabelText"Rótulo"Label text (label/md)
Show DescriptionBooleanfalseShows descriptive text below the label
DescriptionText"Texto descritivo"Multiline description text (body/sm)
Show Helper TextBooleanfalseShows helper text below the description
Helper TextText"Texto auxiliar"Caption/sm annotation (content/secondary)