# Radio API

> Auto-generated API reference for `Radio` from @vuetify/v0 (Vuetify0).
> Source of truth: https://0.vuetifyjs.com/api/radio

## Related

- https://0.vuetifyjs.com/components/forms/radio
- https://0.vuetifyjs.com/composables/selection/create-single
- https://0.vuetifyjs.com/components/providers/single
- https://0.vuetifyjs.com/components/forms/checkbox

## Radio.Root

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `id` | `any` | `useId()` | no | Unique identifier (auto-generated if not provided) |
| `label` | `string \| undefined` | — | no | Optional display label (passed through to slot) |
| `value` | `V \| undefined` | — | no | Value associated with this radio for group selection and form submission |
| `name` | `string \| undefined` | — | no | Form field name - triggers auto hidden input when provided |
| `form` | `string \| undefined` | — | no | Associate with a form by ID (for radios outside the form element) |
| `disabled` | `MaybeRefOrGetter<boolean> \| undefined` | `false` | no | Disables this radio (prevents selection and keyboard focus) |
| `namespace` | `string \| undefined` | `"v0:radio:root"` | no | Namespace for context provision to children (Indicator, HiddenInput) |
| `groupNamespace` | `string \| undefined` | `"v0:radio:group"` | no | Namespace for connecting to parent Radio.Group |
| `ariaLabelledby` | `string \| undefined` | — | no | ID of element that labels this radio |
| `ariaDescribedby` | `string \| undefined` | — | no | ID of element that describes this radio |
| `ariaInvalid` | `boolean \| undefined` | — | no | Marks the radio as invalid for form validation |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `RadioRootSlotProps<V>` | Default slot with radio state, actions, and ARIA attributes |

## Radio.Group

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `namespace` | `string \| undefined` | `"v0:radio:group"` | no | Namespace for dependency injection |
| `disabled` | `boolean \| undefined` | `false` | no | Disables the entire radio group |
| `mandatory` | `boolean \| "force" \| undefined` | `false` | no | Auto-selects the first non-disabled item on mount. Radio groups are inherently mandatory (selection can only be changed, not cleared), so `mandatory="force"` is the only meaningful option. |
| `label` | `string \| undefined` | — | no | Accessible name for the group |
| `ariaLabelledby` | `string \| undefined` | — | no | ID of element that labels this group |
| `ariaDescribedby` | `string \| undefined` | — | no | ID of element that describes this group |
| `ariaRequired` | `boolean \| undefined` | — | no | Whether a selection is required before form submission |
| `name` | `string \| undefined` | — | no | Form field name - enables native form submission for all radios in group |
| `activation` | `any` | `"automatic"` | no | Activation mode controlling when selection occurs: - `automatic` (default): Selection follows focus (arrow keys select) - `manual`: Selection requires explicit Enter/Space key press  Per WAI-ARIA APG, radio groups should have selection follow focus by default. Use `manual` for toolbar radio groups or when deliberate selection is preferred. |
| `modelValue` | `T \| undefined` | — | no | — |

### Events

| Name | Type | Description |
|---|---|---|
| `update:model-value` | `[value: T]` | — |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `RadioGroupSlotProps` | Default slot with group state and ARIA attributes |

## Radio.HiddenInput

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `namespace` | `string \| undefined` | `"v0:radio:root"` | no | Namespace for context injection from parent Radio.Root |
| `name` | `string \| undefined` | — | no | Form field name (defaults to context value from Radio.Group) |
| `value` | `string \| undefined` | — | no | Submitted value when checked (defaults to context value or 'on'). Use to override the Radio.Root value for form submission. |
| `form` | `string \| undefined` | — | no | Associate with form by ID (for inputs outside the form element) |

## Radio.Indicator

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `namespace` | `string \| undefined` | `"v0:radio:root"` | no | Namespace for context injection from parent Radio.Root |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `RadioIndicatorSlotProps` | Default slot for custom indicator content |
