import * as React from 'react' import * as RadioGroupPrimitive from '@radix-ui/react-radio-group' import { cva, type VariantProps } from 'class-variance-authority' import { cn } from '@/lib/utils' const rootVariants = cva('grid gap-2', { variants: { orientation: { vertical: 'grid-flow-row', horizontal: 'grid-flow-col auto-cols-max', }, }, defaultVariants: { orientation: 'vertical' }, }) const itemVariants = cva( 'shrink-0 rounded-full border border-border-tertiary outline-offset-2 cursor-pointer transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-border disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-text data-[state=checked]:bg-text data-[state=checked]:text-bg-base', { variants: { size: { sm: 'size-3.5', md: 'size-4', lg: 'size-5' }, }, defaultVariants: { size: 'md' }, } ) const indicatorSizeMap: Record<'sm' | 'md' | 'lg', string> = { sm: 'size-1.5', md: 'size-2', lg: 'size-2.5', } export interface RadioGroupProps extends Omit, 'orientation'>, VariantProps {} export interface RadioGroupItemProps extends React.ComponentPropsWithoutRef, VariantProps {} const RadioGroup = React.forwardRef< React.ElementRef, RadioGroupProps >(({ className, orientation = 'vertical', ...props }, ref) => ( )) RadioGroup.displayName = 'RadioGroup' const RadioGroupItem = React.forwardRef< React.ElementRef, RadioGroupItemProps >(({ className, size = 'md', ...props }, ref) => ( )) RadioGroupItem.displayName = 'RadioGroupItem' export { RadioGroup, RadioGroupItem, rootVariants as radioGroupVariants, itemVariants as radioGroupItemVariants }