{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "masai-radio-button", "title": "Masai Radio Button", "description": "Standalone radio button with default and default-with-label variants in regular/large sizes.", "dependencies": [ "@radix-ui/react-radio-group" ], "files": [ { "path": "registry/components/masai-radio-button.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cn } from \"@/lib/utils\";\n\ntype MasaiRadioButtonSize = \"regular\" | \"large\";\n\nexport type MasaiRadioButtonProps = {\n size?: MasaiRadioButtonSize;\n isSelected?: boolean;\n disabled?: boolean;\n label?: string;\n description?: string;\n onSelect?: (selected: boolean) => void;\n className?: string;\n};\n\nconst radioSizeClasses: Record = {\n regular: { root: \"h-5 w-5\", dot: \"h-2.5 w-2.5\" },\n large: { root: \"h-6 w-6\", dot: \"h-3 w-3\" },\n};\n\n/**\n * MasaiRadioButton — single radio wrapper on Radix RadioGroup.\n * Useful for standalone previews and custom layouts.\n */\nexport function MasaiRadioButton({\n size = \"regular\",\n isSelected = false,\n disabled = false,\n label,\n description,\n onSelect,\n className,\n}: MasaiRadioButtonProps) {\n const value = isSelected ? \"selected\" : \"unselected\";\n const { root, dot } = radioSizeClasses[size];\n const labelClassName = size === \"large\" ? \"type-b1-regular text-gray-900\" : \"type-b2-regular text-gray-900\";\n\n return (\n onSelect?.(next === \"selected\")}\n disabled={disabled}\n className={cn(\"inline-flex items-start\", className)}\n >\n \n \n );\n}\n", "type": "registry:ui" } ], "type": "registry:ui" }