Radio Group

Radio group for single-choice selection with row or column layout, right-aligned indicators, rich item content, and card-style options.

import { RadioGroup } from "@plexui/ui/components/RadioGroup";

Examples

Overview

Notification frequency

With Checkbox

direction
description
Choose how you'd like to be notified.
Select the topics you want to follow.

Descriptions

Choose how you'd like to be notified.

Direction

direction

Orientation

orientation

Group disabled

Item disabled

With description

Standard spacing for most use cases.
More space between elements.
Minimal spacing for dense layouts.

With Field

Choose how you want to receive notifications.

With Field error

Select a plan to continue.

Choice card

orientation

Card selection



Grouped sections

Control who can see project resources.
How often you receive summary emails.

API

RadioGroup (root)

PropTypeDefaultDescription
valuestring—Controlled selected value
defaultValuestring—Initial selected value (uncontrolled)
onChange(value: string) => void—Called when selected option changes
direction"col" | "row""row"Item flow direction
disabledbooleanfalseDisable the whole group
namestring—Name of the hidden radio inputs submitted with the owning form
requiredbooleanfalseMarks the group and every hidden radio input as required
aria-labelstring—Accessible group label
classNamestring—Extra classes on the group element

Other props, such as the id, aria-describedby and aria-invalid a Field passes, land on the group element.

RadioGroup.Item

PropTypeDefaultDescription
valuestring—Item value
disabledbooleanfalseDisable this item only
requiredboolean—Marks this item as required
blockbooleanfalseStretch item to fill available width
orientation"left" | "right""left"Position of the radio indicator relative to the label
descriptionReactNode—Second line below the option's label, linked via aria-describedby
classNamestring—Extra classes on the label element

Other props on RadioGroup.Item land on its wrapper <div>. The arrow keys move focus and check the focused option; Home and End move focus only (roving focus from Radix). Inside a <form>, hidden native radios mirror the selection so the value is submitted with the form.

Styling

Radio Group reads these component tokens. Override them at any scope to restyle it:

  • --radio-group-col-gap: col gap (default spacing(2.5))
  • --radio-group-indicator-background-color: indicator background color (default var(--color-background-primary-solid))
  • --radio-group-indicator-border-color: indicator border color (default var(--color-border-primary-outline))
  • --radio-group-indicator-border-color-hover: indicator border color hover (default var(--alpha-25))
  • --radio-group-indicator-hole-background-color: indicator hole background color (default var(--color-text-primary-solid))
  • --radio-group-indicator-hole-size: indicator hole size (default 0.375rem)
  • --radio-group-indicator-size: indicator size (default var(--font-text-lg-size))
  • --radio-group-item-font-size: item font size (default var(--font-text-sm-size))
  • --radio-group-item-gap: item gap (default spacing(1.5))
  • --radio-group-item-line-height: item line height (default var(--font-text-sm-line-height))
  • --radio-group-row-gap: row gap (default spacing(5))