pnpm dlx dreamy add radio-cardRadio Card is a multipart component. The hidden radio input is rendered automatically inside RadioCard.Root — pass all radio props to Root.
React Router
Next.js
Vue.js
<RadioGroup full defaultValue="rr">
<Group full>
<RadioCard.Root full value="rr">
<RadioCard.Header>
<RadioCard.Title>React Router</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
</RadioCard.Root>
<RadioCard.Root full value="next">
<RadioCard.Header>
<RadioCard.Title>Next.js</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
</RadioCard.Root>
<RadioCard.Root full value="vue">
<RadioCard.Header>
<RadioCard.Title>Vue.js</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
</RadioCard.Root>
</Group>
</RadioGroup>Add RadioCard.Description below the header for supporting text.
React Router
Description for React Router
Next.js
Description for Next.js
Vue.js
Description for Vue.js
<RadioCard.Root full value="rr">
<RadioCard.Header>
<RadioCard.Title>React Router</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
<RadioCard.Description>Description for React Router</RadioCard.Description>
</RadioCard.Root>Change the Radio variant of the Radio card.
Outline
Description for Outline
Subtle
Description for Subtle
<RadioCard.Root full value="outline" variant="outline">
<RadioCard.Header>
<RadioCard.Title>Outline</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
<RadioCard.Description>Description for Outline</RadioCard.Description>
</RadioCard.Root>Change the color scheme of the Radio card.
Primary
Description for Primary
Secondary
Description for Secondary
Success
Description for Success
Warning
Description for Warning
Error
Description for Error
Info
Description for Info
None
Description for None
<RadioCard.Root full value="primary" scheme="primary">
<RadioCard.Header>
<RadioCard.Title>Primary</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
<RadioCard.Description>Description for Primary</RadioCard.Description>
</RadioCard.Root>Change the Radio card size.
Small
Description for Small
Medium
Description for Medium
Large
Description for Large
<RadioCard.Root full value="sm" size="sm">
<RadioCard.Header>
<RadioCard.Title>Small</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
<RadioCard.Description>Description for Small</RadioCard.Description>
</RadioCard.Root>You can control the Radio state by using value and onChange in <RadioGroup />.
export function ControlledRadioCards() {
const [value, setValue] = useState<string | number>("rr");
return (
<RadioGroup
value={value}
onChange={setValue}
>
<Group
full
wrapped
>
<RadioCard.Root
value="rr"
full
>
<RadioCard.Header>
<RadioCard.Title>React Router</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
<RadioCard.Description>Description for React Router</RadioCard.Description>
</RadioCard.Root>
</Group>
</RadioGroup>
);
}Use custom content inside RadioCard.Title or RadioCard.Description for richer layouts.
React Router
Description for React Router
Next.js
Description for Next.js
Vue.js
Description for Vue.js
<RadioCard.Root full value="rr">
<RadioCard.Header>
<RadioCard.Title>
<Flex col gap={2}>
<Icon as={<SiReactrouter />} boxSize="5" color="fg.medium" />
<Text>React Router</Text>
</Flex>
</RadioCard.Title>
<RadioCard.Radio />
</RadioCard.Header>
<RadioCard.Description>Description for React Router</RadioCard.Description>
</RadioCard.Root>Omit RadioCard.Radio to hide the radio indicator.
Paypal
Credit Card
Apple
<RadioCard.Root full value="paypal">
<RadioCard.Header>
<RadioCard.Title>
<Flex full gap={2} row center>
<Icon as={<FaPaypal />} boxSize="5" color="fg.medium" />
<Text>Paypal</Text>
</Flex>
</RadioCard.Title>
</RadioCard.Header>
</RadioCard.Root>