Radio Group
Single-select controls for choosing exactly one option from a short visible list.
Purpose
Use Radio Group when exactly one option must be selected from a short, visible set.
Single choice
Installation
With the Siteplane registry alias configured, add the component and import the installed source from your app.
CLI
pnpm dlx shadcn@4.16.1 add @siteplane/radio-groupImport
import { Radio, RadioGroup } from "@/components/ui/radio-group";
import { Field, FieldDescription, FieldError, FieldLabel } from "@/components/ui/field";
import { Form } from "@/components/ui/form";
import { Button } from "@/components/ui/button";
import { Label } from "@/components/ui/label";Need the machine-readable source metadata? View registry JSON.
Usage
Use Radio Group for one choice from a visible set. Keep each Radio paired with readable text.
import { Radio, RadioGroup } from "@/components/ui/radio-group";
import { Label } from "@/components/ui/label";
export function Example() {
return (
<RadioGroup aria-label="Digest frequency" defaultValue="weekly">
<Label><Radio value="weekly" />Weekly</Label>
<Label><Radio value="monthly" />Monthly</Label>
</RadioGroup>
);
}Examples
Sizes, states, field integration, option descriptions, card style selection, horizontal layout and form integration are props and compositions of the same primitive.
Sizes
States
With field and error
With descriptions
Card style selection
Horizontal layout
Form integration
API Reference
The reference lists the source-owned exports and props that are easy to miss in visual examples. Inherited Base UI props remain available unless the wrapper narrows them.
RadioGroupaccepts the Base UI group props, controlled or uncontrolled value,disabled,readOnlyandsize="sm" | "default" | "lg" | "xl".- Each
Radiorequires a uniquevalueand can overridedisabled,readOnlyand inherited size. disabledon the group disables every option; use item-leveldisabledonly when individual choices are unavailable.readOnlyprevents changes without applying disabled styling, so accompany it with clear context when the state might otherwise look editable.
Motion
Component motion uses the shared Siteplane motion contract. See the global motion guide for provider setup, tokens and reduced-motion behavior.
- Selection updates the native indicator, border and focus styles without changing layout dimensions.
- Radio Group adds no group-level enter or exit animation. System and provider reduced-motion modes move the indicator directly to its final state instead of interpolating its fade and scale.
Accessibility
- Give every group an accessible name through
aria-labeloraria-labelledby. - Couple visible option labels to their Radio controls and give standalone controls an explicit label.
- Pair invalid state with visible error text; disabled and read-only state must be understandable without relying on color alone.
Implementation Guidance
- Use Checkbox Group for multiple selection and Select when the option set should remain collapsed.
- Prefer group-level
disabledwhen the complete choice is unavailable. - Do not build raw radio inputs outside the Radio Group contract.