Components
Radio Group
A set of checkable buttons, known as radio buttons, where no more than one can be checked at a time.
You might be looking for:
Playground
<RadioGroup defaultValue="comfortable" className="w-fit"> <div className="flex items-center gap-2"> <RadioGroupItem value="default" id="default" /> <Label htmlFor="default">Default</Label> </div> <div className="flex items-center gap-2"> <RadioGroupItem value="comfortable" id="comfortable" /> <Label htmlFor="comfortable">Comfortable</Label> </div> <div className="flex items-center gap-2"> <RadioGroupItem value="compact" id="compact" /> <Label htmlFor="compact">Compact</Label> </div></RadioGroup>Usage
import { RadioGroup, RadioGroupItem } from "@sophic/portal-ui/components/ui/radio-group";<RadioGroup value={value} onValueChange={setValue}>
<RadioGroupItem value="one" id="one" />
<RadioGroupItem value="two" id="two" />
</RadioGroup>In app forms, RadioGroup is a controlled input wired through react-hook-form's
Controller inside the Field family; the demo here
is standalone.
Props
RadioGroup and RadioGroupItem have no props of their own — they accept every
Radix RadioGroup.Root prop (value, defaultValue, onValueChange,
disabled, ...) and RadioGroup.Item prop (value, disabled, ...)
respectively.
Tokens
Radio Group reads --radio-* for size, border, fill, and the center
dot. Fallbacks keep apps without those tokens on the previous look.
Changelog
- 4 October 2026 — Unchecked ring is
neutral-500in both modes (was 400 on light). Full notes - 3 October 2026 — Dark checked fill is Soil on a lifted card; the brand-green control stays light-only. Full notes
- 3 October 2026 — Same
--control-sizeand inset ring as Checkbox; Field rows align to the label line. Full notes - 19 August 2026 — Styles live in a CSS module; look and tokens unchanged. Full notes
- 19 August 2026 — “You might be looking for” map to Switch and Checkbox. Full notes
- 22 July 2026 — Unchecked hover darkens the border (matches checkbox). Full notes
- 15 July 2026 — Brand-green selected fill; 20px circles via
--radio-*. Full notes