Skip to content

Radio Group

A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.

Usage

To display a radio group, list two or more RadioGroupItems within RadioGroup.

import { RadioGroup, RadioGroupItem } from "stylus-ui/RadioGroup";
export default () => (
<RadioGroup defaultValue="default">
<RadioGroupItem value="default" label="Default" />
<RadioGroupItem value="comfortable" label="Comfortable" />
<RadioGroupItem value="compact" label="Compact" />
</RadioGroup>
);

Dark mode

To display radios on a dark background, pass theme="dark".

import { RadioGroup, RadioGroupItem } from "stylus-ui/RadioGroup";
export default () => (
<RadioGroup defaultValue="default" theme="dark">
<RadioGroupItem value="default" label="Default" />
<RadioGroupItem value="comfortable" label="Comfortable" />
<RadioGroupItem value="compact" label="Compact" />
</RadioGroup>
);

Orientation

Display radio buttons horizontally by passing orientation="horizontal".

import { RadioGroup, RadioGroupItem } from "stylus-ui/RadioGroup";
export default () => (
<RadioGroup defaultValue="default" orientation="horizontal">
<RadioGroupItem value="default" label="Default" />
<RadioGroupItem value="comfortable" label="Comfortable" />
<RadioGroupItem value="compact" label="Compact" />
</RadioGroup>
);

Disabled

The entire group can be disabled by using the disabled prop.

import { RadioGroup, RadioGroupItem } from "stylus-ui/RadioGroup";
export default () => (
<RadioGroup defaultValue="default" disabled>
<RadioGroupItem value="default" label="Default" />
<RadioGroupItem value="comfortable" label="Comfortable" />
<RadioGroupItem value="compact" label="Compact" />
</RadioGroup>
);

The disabled prop can also be used to disable a specific RadioGroupItem.

import { RadioGroup, RadioGroupItem } from "stylus-ui/RadioGroup";
export default () => (
<RadioGroup defaultValue="default">
<RadioGroupItem value="default" label="Default" />
<RadioGroupItem value="comfortable" label="Comfortable" />
<RadioGroupItem value="compact" label="Compact" disabled />
</RadioGroup>
);

Controlled state

By default, <RadioGroup> is uncontrolled, meaning it manages its own state locally. To make it controlled, set value and onValueChange.

import { RadioGroup, RadioGroupItem } from "stylus-ui/RadioGroup";
import { useState } from "react";
export default () => {
const [radioValue, setRadioValue] = useState("default");
return (
<RadioGroup
value={radioValue}
onValueChange={(value) => setRadioValue(value)}
>
<RadioGroupItem value="default" label="Default" />
<RadioGroupItem value="comfortable" label="Comfortable" />
<RadioGroupItem value="compact" label="Compact" />
</RadioGroup>
);
};

API Reference

RadioGroup

Contains all the parts of a radio group.

Inherits properties from HTMLElement.

Prop
Type
Default
asChild boolean false
children ReactNode
defaultValue string
dir "ltr""rtl"
disabled boolean
label string
loop boolean true
onValueChange (value: string) => void
orientation "horizontal""vertical" "vertical"
required boolean
theme "light""dark" "light"
value string

RadioGroupItem

An item in the group that can be checked. An input will also render when used within a form to ensure events propagate correctly.

Inherits properties from HTMLButtonElement.

Prop
Type
Default
asChild boolean false
children ReactNode
defaultValue string
disabled boolean
label string
loop boolean true
orientation "horizontal""vertical" "vertical"
required boolean
theme "light""dark" "light"
value string