RadioGroup

A mutually exclusive choice control for forms, option lists, and descriptive cards.

Preview#

Controls
import { RadioGroup, RadioGroupItem } from "raft-ui";

<RadioGroup defaultValue="option" aria-label="Options">
  <RadioGroupItem value="option" />
</RadioGroup>

Option list#

Descriptive cards#

Custom indicator#

Customization#

With Field#

Choose one mode before confirming.

States#

API#WIP

PropTypeDefaultDescription
valueTControlled selected value.
defaultValueTInitial selected value for uncontrolled usage.
onValueChange(value: T, details) => voidCalled when a different item is selected.
aria-labelstringNative ARIA attribute naming the group for assistive tech. Set it when the group has no visible label.
namestringNative form field name passed to the hidden radio inputs.
disabledbooleanfalseDisables selection across the whole group.
readOnlybooleanfalseKeeps the group focusable but prevents changing the selection.
requiredbooleanfalseMarks the hidden native inputs required for form validation.
...propsBase UI RadioGroup.Props<T>Owns one selected value, roving keyboard behavior, form metadata, and remaining Base UI root props.
PropTypeDefaultDescription
valueTOption value selected when this item is chosen.
appearance"default" | "none""default"Use "none" when the surrounding row or card owns the selected visual and the control should stay visually hidden.
...propsBase UI Radio.Root.Props<T>Compose inside a clickable label or descriptive option row. Children replace the default RadioGroupIndicator.
PropTypeDefaultDescription
childrenReactNodeOptional custom mark. Defaults to the themed inner dot.
...propsBase UI Radio.Indicator.PropsOptional visual indicator rendered by RadioGroupItem by default. Pass as children when you need a custom mark.