{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "mc-radio-group",
  "title": "MicroClub Radio Group",
  "description": "A radio group component for MicroClub UI",
  "dependencies": [
    "@base-ui/react"
  ],
  "files": [
    {
      "path": "registry/ui/mc-radio-group.tsx",
      "content": "'use client';\n\nimport * as React from 'react';\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst radioGroupVariants = cva(\n  'peer relative flex shrink-0 items-center justify-center rounded-full border transition-colors outline-none disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50',\n  {\n    variants: {\n      size: {\n        sm: 'size-4 [&_[data-slot=radio-group-indicator]>span]:size-2',\n        md: 'size-5 [&_[data-slot=radio-group-indicator]>span]:size-2.5',\n      },\n    },\n    defaultVariants: {\n      size: 'sm',\n    },\n  }\n);\n\nconst radioGroupItemVariants = cva('inline-flex', {\n  variants: {\n    size: {\n      sm: 'gap-2',\n      md: 'gap-3',\n    },\n  },\n  defaultVariants: {\n    size: 'sm',\n  },\n});\n\nconst textVariants = cva('font-medium transition-colors', {\n  variants: {\n    size: {\n      sm: 'text-sm',\n      md: 'text-base',\n    },\n    disabled: {\n      true: 'text-muted-foreground',\n      false: 'text-foreground',\n    },\n  },\n  defaultVariants: {\n    size: 'sm',\n    disabled: false,\n  },\n});\n\nconst supportTextVariants = cva('font-regular', {\n  variants: {\n    size: {\n      sm: 'text-sm',\n      md: 'text-base',\n    },\n    disabled: {\n      true: 'text-muted-foreground',\n      false: 'text-foreground',\n    },\n  },\n  defaultVariants: {\n    size: 'sm',\n    disabled: false,\n  },\n});\n\nfunction McRadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n  return (\n    <RadioGroupPrimitive\n      data-slot=\"radio-group\"\n      className={cn('grid w-full gap-2', className)}\n      {...props}\n    />\n  );\n}\n\nexport interface McRadioGroupItemProps\n  extends RadioPrimitive.Root.Props, VariantProps<typeof radioGroupVariants> {\n  text?: string;\n  supportText?: string;\n}\n\nfunction McRadioGroupItem({\n  className,\n  size = 'sm',\n  text,\n  supportText,\n  id,\n  disabled,\n  value,\n  ...props\n}: McRadioGroupItemProps) {\n  const radioId = React.useId();\n  const finalId = id ?? radioId;\n  const labelId = text ? `${finalId}-label` : undefined;\n  const descriptionId = supportText ? `${finalId}-description` : undefined;\n\n  return (\n    <label\n      htmlFor={finalId}\n      className={cn(\n        radioGroupItemVariants({ size }),\n        supportText ? 'items-start' : 'items-center',\n        disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n        className\n      )}\n    >\n      <RadioPrimitive.Root\n        id={finalId}\n        data-slot=\"radio-group-item\"\n        className={cn(\n          radioGroupVariants({ size }),\n          'self-start mt-0.5',\n          'bg-primary-foreground border-muted-foreground',\n          'hover:border-primary',\n          'focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring',\n          'focus-within:outline-none focus-within:ring-4 focus-within:ring-ring',\n          'data-disabled:border-muted-foreground data-disabled:hover:border-muted-foreground',\n          'data-checked:border-primary'\n        )}\n        disabled={disabled}\n        value={value}\n        aria-labelledby={labelId}\n        aria-describedby={descriptionId}\n        {...props}\n      >\n        <RadioPrimitive.Indicator\n          data-slot=\"radio-group-indicator\"\n          className=\"flex size-4 items-center justify-center\"\n        >\n          <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary\" />\n        </RadioPrimitive.Indicator>\n      </RadioPrimitive.Root>\n\n      {(text || supportText) && (\n        <span className={cn('flex flex-col', size === 'sm' ? 'gap-0' : 'gap-0.5')}>\n          {text && (\n            <span id={labelId} className={textVariants({ size, disabled: !!disabled })}>\n              {text}\n            </span>\n          )}\n          {supportText && (\n            <span\n              id={descriptionId}\n              className={supportTextVariants({ size, disabled: !!disabled })}\n            >\n              {supportText}\n            </span>\n          )}\n        </span>\n      )}\n    </label>\n  );\n}\n\nexport { McRadioGroup, McRadioGroupItem };\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:component"
}