Command Palette
Search for a command to run...
Radio Group
A set of checkable buttons where only one can be checked at a time.
A radio group component built on top of Radix UI Radio Group.
Installation
npx shadcn@latest add radio-group
Usage
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"import { Label } from "@/components/ui/label"
<RadioGroup defaultValue="option-one"><div className="flex items-center space-x-2"> <RadioGroupItem value="option-one" id="option-one" /> <Label htmlFor="option-one">Option One</Label></div><div className="flex items-center space-x-2"> <RadioGroupItem value="option-two" id="option-two" /> <Label htmlFor="option-two">Option Two</Label></div></RadioGroup>
Examples
Default
import { Label } from "@/components/ui/label"import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"export default function RadioGroupDemo() {return ( <RadioGroup defaultValue="comfortable"> <div className="flex items-center space-x-2"> <RadioGroupItem value="default" id="r1" /> <Label htmlFor="r1">Default</Label> </div> <div className="flex items-center space-x-2"> <RadioGroupItem value="comfortable" id="r2" /> <Label htmlFor="r2">Comfortable</Label> </div> <div className="flex items-center space-x-2"> <RadioGroupItem value="compact" id="r3" /> <Label htmlFor="r3">Compact</Label> </div> </RadioGroup>)}
Form
"use client"import { zodResolver } from "@hookform/resolvers/zod"import { useForm } from "react-hook-form"import { z } from "zod"import { toast } from "sonner"import { Button } from "@/components/xfork-ui/button"import {Form,FormControl,FormField,FormItem,FormLabel,FormMessage,} from "@/components/ui/form"import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"const FormSchema = z.object({type: z.enum(["all", "mentions", "none"], { required_error: "You need to select a notification type.",}),})export default function RadioGroupForm() {const form = useForm<z.infer<typeof FormSchema>>({ resolver: zodResolver(FormSchema),})function onSubmit(data: z.infer<typeof FormSchema>) { toast({ title: "You submitted the following values:", description: ( <pre className="mt-2 w-[340px] rounded-md bg-slate-950 p-4"> <code className="text-white">{JSON.stringify(data, null, 2)}</code> </pre> ), })}return ( <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)} className="w-2/3 space-y-6"> <FormField control={form.control} name="type" render={({ field }) => ( <FormItem className="space-y-3"> <FormLabel>Notify me about...</FormLabel> <FormControl> <RadioGroup onValueChange={field.onChange} defaultValue={field.value} className="flex flex-col space-y-1" > <FormItem className="flex items-center space-x-3 space-y-0"> <FormControl> <RadioGroupItem value="all" /> </FormControl> <FormLabel className="font-normal"> All new messages </FormLabel> </FormItem> <FormItem className="flex items-center space-x-3 space-y-0"> <FormControl> <RadioGroupItem value="mentions" /> </FormControl> <FormLabel className="font-normal"> Direct messages and mentions </FormLabel> </FormItem> <FormItem className="flex items-center space-x-3 space-y-0"> <FormControl> <RadioGroupItem value="none" /> </FormControl> <FormLabel className="font-normal">Nothing</FormLabel> </FormItem> </RadioGroup> </FormControl> <FormMessage /> </FormItem> )} /> <Button type="submit">Submit</Button> </form> </Form>)}