{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "radio",
  "title": "Radio",
  "description": "Glass radio buttons in a radio group.",
  "dependencies": [
    "@base-ui/react@^1.8.0"
  ],
  "registryDependencies": [
    "https://liquikit.dev/r/core.json",
    "https://liquikit.dev/r/glass.json",
    "https://liquikit.dev/r/press.json"
  ],
  "files": [
    {
      "path": "src/radio.tsx",
      "content": "\"use client\";\n\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport type { ReactNode } from \"react\";\nimport { GlassPane, type GlassRefraction } from \"./glass\";\nimport { usePressGlass } from \"./press\";\nimport { cx, type GlassOptions } from \"./types\";\nimport \"./liquikit.css\";\n\nexport type RadioProps = Omit<\n\tBaseRadio.Root.Props,\n\t\"className\" | \"render\" | \"children\"\n> &\n\tGlassOptions & {\n\t\trefraction?: GlassRefraction;\n\t\tclassName?: string;\n\t\tchildren?: ReactNode;\n\t};\n\nexport function Radio({\n\tchildren,\n\ttheme,\n\tlens,\n\tliquid,\n\trefraction,\n\tclassName,\n\tdisabled,\n\tonPointerDown,\n\tonPointerEnter,\n\tonPointerLeave,\n\tonKeyDown,\n\tonKeyUp,\n\tonBlur,\n\t...rootProps\n}: RadioProps) {\n\tconst { press, pressHandlers } = usePressGlass(disabled, {\n\t\tonPointerDown,\n\t\tonPointerEnter,\n\t\tonPointerLeave,\n\t\tonKeyDown,\n\t\tonKeyUp,\n\t\tonBlur,\n\t});\n\n\tconst button = (\n\t\t<BaseRadio.Root\n\t\t\t{...rootProps}\n\t\t\t{...pressHandlers}\n\t\t\tdisabled={disabled}\n\t\t\tclassName=\"glass-ui-radio\"\n\t\t\trender={(props, state) => (\n\t\t\t\t<span {...props}>\n\t\t\t\t\t<GlassPane\n\t\t\t\t\t\tradius=\"capsule\"\n\t\t\t\t\t\ttint={state.checked ? \"var(--glass-accent)\" : undefined}\n\t\t\t\t\t\ttintOpacity={state.checked ? 1 : undefined}\n\t\t\t\t\t\tpress={press}\n\t\t\t\t\t\ttheme={theme}\n\t\t\t\t\t\tlens={lens}\n\t\t\t\t\t\tliquid={liquid}\n\t\t\t\t\t\trefraction={refraction}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"glass-ui-radio__box\">{props.children}</span>\n\t\t\t\t\t</GlassPane>\n\t\t\t\t</span>\n\t\t\t)}\n\t\t>\n\t\t\t<BaseRadio.Indicator keepMounted className=\"glass-ui-radio__dot\" />\n\t\t</BaseRadio.Root>\n\t);\n\n\tif (!children) return <span className={cx(className)}>{button}</span>;\n\treturn (\n\t\t// biome-ignore lint/a11y/noLabelWithoutControl: the radio inside is the control\n\t\t<label\n\t\t\tclassName={cx(\"glass-ui-choice\", className)}\n\t\t\tdata-disabled={disabled ? \"\" : undefined}\n\t\t>\n\t\t\t{button}\n\t\t\t<span className=\"glass-ui-choice__label\">{children}</span>\n\t\t</label>\n\t);\n}\n\nexport type RadioGroupProps = Omit<BaseRadioGroup.Props, \"className\"> & {\n\tclassName?: string;\n};\n\nexport function RadioGroup({ className, ...groupProps }: RadioGroupProps) {\n\treturn (\n\t\t<BaseRadioGroup\n\t\t\t{...groupProps}\n\t\t\tclassName={cx(\"glass-ui-choices\", className)}\n\t\t/>\n\t);\n}\n",
      "type": "registry:ui",
      "target": "@components/liquikit/radio.tsx"
    }
  ],
  "type": "registry:ui"
}