, so the whole row is the click target.
## Keyboard
- Tab — Moves into the group, and out of it — the whole group is one stop.
- ↑ / ↓ / ← / → — Moves between options AND selects as it goes.
## RadioGroup
A set of mutually exclusive choices. Radix owns the roving tabindex, so the whole group is ONE tab stop and the arrow keys move between options — which is what the ARIA radiogroup pattern requires and what a stack of hand-rolled ` ` wrappers usually gets wrong. Inside a `Field` the group takes its name from that label, by pointing back at it: the root is a `` and `` does not bind to one, so the words above it click through no more than a `` does. Standing alone, it still needs an `aria-label` of its own — an unnamed group is three unlabelled radios.
Also accepts: `ComponentProps`.
## RadioGroupItem
One option, and its label, as a single click target. The `` wraps both, so the whole row is clickable — a bare 18px circle is below every pointer-target guideline and is miserable on a phone. It is also what gives the control its accessible name: remove the wrapper and the radio has no name at all. Selection follows focus, which is the half of the pattern that makes a radiogroup usable from the keyboard: moving to an option chooses it, so nobody has to press an extra key to commit. That is implemented here rather than inherited, because the upstream primitive gates it on a flag cleared by `keyup` and loses the race against its own focus move — see ARROW_GRACE_MS. Re-selecting an already-selected option is a no-op, so this stays correct even where the upstream path does fire.
### Props
- `children` (required) — `ReactNode`. The visible label. Rendered inside the `` that wraps the control.
Also accepts: `Omit, 'children'>`.
## Example — default
```tsx
import { RadioGroup, RadioGroupItem } from '@misoto22/folio'
Light
Dark
Match the system
```
## Example — options with detail
```tsx
import { RadioGroup, RadioGroupItem, Text } from '@misoto22/folio'
{PLANS.map((plan) => (
{plan.name}
{plan.detail}
))}
```
## Example — a way back
```tsx
import { RadioGroup, RadioGroupItem } from '@misoto22/folio'
Any time
Morning — 8am to 12pm
Afternoon — 12pm to 5pm
Evening — 5pm to 8pm
```