A radio-group component in neobrutalism style.
1"use client"
2
3import * as RadioGroupPrimitive from "@radix-ui/react-radio-group"
4import { Circle } from "lucide-react"
5
6import * as React from "react"
7
8import { cn } from "@/lib/utils"
9
10function RadioGroup({
11 className,
12 ...props
13}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {
14 return (
15 <RadioGroupPrimitive.Root
16 data-slot="radio-group"
17 className={cn("grid gap-2", className)}
18 {...props}
19 />
20 )
21}
22
23function RadioGroupItem({
24 className,
25 ...props
26}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {
27 return (
28 <RadioGroupPrimitive.Item
29 data-slot="radio-group-item"
30 className={cn(
31 "aspect-square size-4 rounded-full border-2 border-border text-black dark:text-white focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
32 className,
33 )}
34 {...props}
35 >
36 <RadioGroupPrimitive.Indicator className="flex items-center justify-center">
37 <Circle className="size-2 fill-current text-current" />
38 </RadioGroupPrimitive.Indicator>
39 </RadioGroupPrimitive.Item>
40 )
41}
42
43export { RadioGroup, RadioGroupItem }
44