RadioCard
- A selectable card component that behaves like a Radio.RadioGroup
- Group wrapper for composing multiple Radio cards.
import { RadioCard, RadioGroup } from "@dreamy-ui/react";
Base usage of the Radio card.
React Router
Next.js
Vue.js
<RadioGroup full defaultValue="rr">
<Group full>
<RadioCard title="React Router" full value="rr" />
<RadioCard title="Next.js" full value="next" />
<RadioCard title="Vue.js" full value="vue" />
</Group>
</RadioGroup>
React Router
Description for React Router
Next.js
Description for Next.js
Vue.js
Description for Vue.js
<RadioGroup full defaultValue="rr">
<Group full>
<RadioCard title="React Router" full value="rr" description="Description for React Router" />
<RadioCard title="Next.js" full value="next" description="Description for Next.js" />
<RadioCard title="Vue.js" full value="vue" description="Description for Vue.js" />
</Group>
</RadioGroup>
Change the Radio variant of the Radio card.
Outline
Description for Outline
Subtle
Description for Subtle
<RadioGroup full defaultValue="outline">
<Group full>
<RadioCard title="Outline" full value="outline" description="Description for Outline" variant={"outline"} />
<RadioCard title="Subtle" full value="subtle" description="Description for Subtle" variant={"subtle"} />
</Group>
</RadioGroup>
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
<RadioGroup full defaultValue="primary">
<Group full orientation="vertical">
<RadioCard title="Primary" full value="primary" description="Description for Primary" scheme={"primary"} />
<RadioCard title="Secondary" full value="secondary" description="Description for Secondary" scheme={"secondary"} />
<RadioCard title="Success" full value="success" description="Description for Success" scheme={"success"} />
<RadioCard title="Warning" full value="warning" description="Description for Warning" scheme={"warning"} />
<RadioCard title="Error" full value="error" description="Description for Error" scheme={"error"} />
<RadioCard title="Info" full value="info" description="Description for Info" scheme={"info"} />
<RadioCard title="None" full value="none" description="Description for None" scheme={"none"} />
</Group>
</RadioGroup>
Change the Radio card size.
Small
Description for Small
Medium
Description for Medium
Large
Description for Large
<RadioGroup full defaultValue="sm">
<Group full wrapped>
<RadioCard title="Small" full value="sm" description="Description for Small" size={"sm"} />
<RadioCard title="Medium" full value="md" description="Description for Medium" size={"md"} />
<RadioCard title="Large" full value="lg" description="Description for Large" size={"lg"} />
</Group>
</RadioGroup>
You can control the Radio state by using value
and onChange
in <RadioGroup />
.
React Router
Description for React Router
Next.js
Description for Next.js
Vue.js
Description for Vue.js
export function ControlledRadioCards() {
const [value, setValue] = useState<string | number>("rr");
return (
<RadioGroup
value={value}
onChange={setValue}
>
<Group
full
wrapped
>
<RadioCard
value="rr"
title="React Router"
description="Description for React Router"
/>
<RadioCard
value="next"
title="Next.js"
description="Description for Next.js"
/>
<RadioCard
value="vue"
title="Vue.js"
description="Description for Vue.js"
/>
</Group>
</RadioGroup>
);
}
You can use custom children in the title
or description
, to create a more complex and flexible Radio card.
React Router
Description for React Router
Next.js
Description for Next.js
Vue.js
Description for Vue.js
<RadioGroup full defaultValue="rr">
<Group full wrapped>
<RadioCard
title={(
<Flex col gap={2}>
<Icon asComp={<SiReactrouter />} boxSize={"5"} color="fg.medium" />
<Text>React Router</Text>
</Flex>
)}
description="Description for React Router"
full
value="rr"
/>
<RadioCard
title={(
<Flex col gap={2}>
<Icon asComp={<RiNextjsLine />} boxSize={"5"} color="fg.medium" />
<Text>Next.js</Text>
</Flex>
)}
description="Description for Next.js"
full
value="next"
/>
<RadioCard
title={(
<Flex col gap={2}>
<Icon asComp={<FaVuejs />} boxSize={"5"} color="fg.medium" />
<Text>Vue.js</Text>
</Flex>
)}
description="Description for Vue.js"
full
value="vue"
/>
</Group>
</RadioGroup>
You can hide the radio indicator by using the hideRadio
prop.
Paypal
Credit Card
Apple
<RadioGroup full defaultValue="paypal">
<Group full wrapped>
<RadioCard
title={(
<Flex full gap={2} row center>
<Icon asComp={<FaPaypal />} boxSize={"5"} color="fg.medium" />
<Text>Paypal</Text>
</Flex>
)}
value="paypal"
full
hideRadio
/>
<RadioCard
title={(
<Flex full gap={2} row center>
<Icon asComp={<FiCreditCard />} boxSize={"5"} color="fg.medium" />
<Text>Credit Card</Text>
</Flex>
)}
full
value="cc"
hideRadio
/>
<RadioCard
title={(
<Flex full gap={2} row center>
<Icon asComp={<SiApple />} boxSize={"5"} color="fg.medium" />
<Text>Apple</Text>
</Flex>
)}
full
value="apple"
hideRadio
/>
</Group>
</RadioGroup>