Aliases
radio buttons
RadioGroupSingle-choice group with visible options and descriptions.
Aliases
radio buttons
Foundations
RadioGroup when the number of options is small enough to display together.RadioGroup for many options; use Select or Combobox.RadioGroup for rapid segmented view switching; use SegmentedControl.radio group
group Wraps the full set of mutually exclusive choices.
single radio option
item Each selectable option with label and optional description.
| Name | Type | Default | Description |
|---|---|---|---|
value | string | — | Controlled selected value. |
items | Array<{ value: string; label: string; description?: string; disabled?: boolean }> | — | Available radio options. |
orientation | 'vertical' | 'horizontal' | 'vertical' | Chooses how the options are laid out. |
label | string | — | Visible group label. |
description | string | — | Supporting helper copy for the full group. |
error | string | — | Problem copy for validation or blocked flows. |
required | boolean | false | Marks the group as required. |
disabled | boolean | false | Disables the whole group. |
name | string | — | Native radio group name. |
size | 'sm' | 'md' | 'md' | Chooses the size recipe. |
onChange | (detail: { value: string }) => void | — | Runs when selection changes. |
theme | ThemeContract | — | Sets the theme used to resolve component styles. |
| Name | Payload | Description |
|---|---|---|
change | { value: string } | Fires with the selected option value. |
| Name | Description |
|---|---|
default | RadioGroup is data-driven and does not expose option slots. |
Variants
vertical: Stacked options with more room for descriptions.horizontal: Compact single-line grouping for shorter labels.Sizes
sm: Compact groupmd: Default group sizeStates
unselected: No option chosenselected: One option chosendisabled: Whole group or item disabledSemantics
Keyboard
Screen readers
Checklist
A small mutually exclusive option set.
<RadioGroup label="Digest cadence" items={cadenceItems} value="daily" /> Horizontal orientation fits short labels.
<RadioGroup orientation="horizontal" items={sizeItems} value="md" /> Descriptions help when the options are subtle.
<RadioGroup label="Review cadence" items={[{ value: 'daily', label: 'Daily', description: 'Fast status rhythm.' }, { value: 'weekly', label: 'Weekly', description: 'Lower-noise update cadence.' }]} /> Calculated fixtures; browser evidence is not collected. Layout estimates use declared text behavior and maximum token values.
orientation=vertical|size=sm
orientation=horizontal|size=sm
orientation=vertical|size=md
orientation=horizontal|size=md
orientation=vertical|size=lg
orientation=horizontal|size=lg
orientation=vertical|size=sm
orientation=horizontal|size=sm
orientation=vertical|size=md
orientation=horizontal|size=md
orientation=vertical|size=lg
orientation=horizontal|size=lg