Radio Group
Allows users to select a single option from a list of mutually exclusive choices.
	<script lang="ts">
  import { Label, RadioGroup } from "bits-ui";
</script>
 
<RadioGroup.Root class="flex flex-col gap-4 text-sm font-medium">
  <div
    class="group flex select-none items-center text-foreground transition-all"
  >
    <RadioGroup.Item
      id="amazing"
      value="amazing"
      class="size-5 shrink-0 cursor-default rounded-full border border-border-input bg-background transition-all duration-100 ease-in-out hover:border-dark-40 data-[state=checked]:border-6 data-[state=checked]:border-foreground"
    />
    <Label.Root for="amazing" class="pl-3">Amazing</Label.Root>
  </div>
  <div
    class="group flex select-none items-center text-foreground transition-all"
  >
    <RadioGroup.Item
      id="average"
      value="average"
      class="size-5 shrink-0 cursor-default rounded-full border border-border-input bg-background transition-all duration-100 ease-in-out hover:border-dark-40 data-[state=checked]:border-6 data-[state=checked]:border-foreground"
    />
    <Label.Root for="average" class="pl-3">Average</Label.Root>
  </div>
  <div
    class="group flex select-none items-center text-foreground transition-all"
  >
    <RadioGroup.Item
      id="terrible"
      value="terrible"
      class="size-5 shrink-0 cursor-default rounded-full border border-border-input bg-background transition-all duration-100 ease-in-out hover:border-dark-40 data-[state=checked]:border-6 data-[state=checked]:border-foreground"
    />
    <Label.Root for="terrible" class="pl-3">Terrible</Label.Root>
  </div>
</RadioGroup.Root>
	
Structure
	<script lang="ts">
	import { RadioGroup } from "bits-ui";
</script>
 
<RadioGroup.Root>
	<RadioGroup.Item>
		<RadioGroup.ItemIndicator />
	</RadioGroup.Item>
</RadioGroup.Root>
	
API Reference
The radio group component used to group radio items under a common name for form submission.
| Property | Type | Description | 
|---|---|---|
| disabled | boolean | Whether or not the radio group is disabled. This prevents the user from interacting with it. Default:  false | 
| required | boolean | Whether or not the radio group is required. Default:  false | 
| loop | boolean | Whether or not the radio group should loop through the items when navigating with the arrow keys. Default:  false | 
| orientation | enum | The orientation of the radio group. Default:  'vertical' | 
| value | string | The value of the currently selected radio item. You can bind to this value to control the radio group's value from outside the component. Default:  undefined | 
| onValueChange | function | A callback that is fired when the radio group's value changes. Default:  undefined | 
| asChild | boolean | Whether to use render delegation with this component or not. Default:  false | 
| el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:  undefined | 
| Slot Property | Type | Description | 
|---|---|---|
| builder | object | The builder attributes and actions to apply to the element if using the  | 
| Data Attribute | Value | Description | 
|---|---|---|
| data-orientation | enum | The orientation of the radio group. | 
| data-radio-group-root | —— | Present on the root element. | 
An radio item, which must be a child of the RadioGroup.Root component.
| Property | Type | Description | 
|---|---|---|
| disabled | boolean | Whether or not the radio item is disabled. This prevents the user from interacting with it. Default:  false | 
| value*Required | string | The value of the radio item. This should be unique for each radio item in the group. Default:  undefined | 
| asChild | boolean | Whether to use render delegation with this component or not. Default:  false | 
| el | HTMLButtonElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:  undefined | 
| Slot Property | Type | Description | 
|---|---|---|
| builder | object | The builder attributes and actions to apply to the element if using the  | 
| Data Attribute | Value | Description | 
|---|---|---|
| data-disabled | —— | Present when the radio item is disabled. | 
| data-value | —— | The value of the radio item. | 
| data-state | enum | The radio item's checked state. | 
| data-orientation | enum | The orientation of the parent radio group. | 
| data-radio-group-item | —— | Present on the radio item element. | 
A hidden input that is used to submit the radio group's value with a form. It can receive all the same props/attributes as a normal HTML input.
| Property | Type | Description | 
|---|---|---|
| asChild | boolean | Whether to use render delegation with this component or not. Default:  false | 
| el | HTMLInputElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:  undefined | 
A component which is used to indicate the radio item's checked state. Any children of this component will only be visible when the radio item is checked.
| Property | Type | Description | 
|---|---|---|
| asChild | boolean | Whether to use render delegation with this component or not. Default:  false | 
| el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:  undefined | 
| Slot Property | Type | Description | 
|---|---|---|
| attrs | object | Additional attributes to apply to the element if using the  | 
| checked | boolean | Whether or not the radio item is checked. | 
| Data Attribute | Value | Description | 
|---|---|---|
| data-radio-item-indicator | —— | Present on the indicator element. |