{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "switch",
  "title": "switch",
  "description": "switch",
  "dependencies": [
    "react-aria-components",
    "cn"
  ],
  "registryDependencies": [
    "https://intentui.com/r/field",
    "https://intentui.com/r/primitive"
  ],
  "files": [
    {
      "path": "src/components/ui/switch.tsx",
      "content": "import {\n  SwitchButton,\n  type SwitchButtonProps,\n  SwitchField as SwitchFieldPrimitive,\n  type SwitchFieldProps,\n} from \"react-aria-components/Switch\"\nimport { twJoin, cn } from \"cn\"\nimport { Label } from \"@/components/ui/field\"\nimport { cx } from \"@/lib/primitive\"\n\nexport function SwitchField({ className, ...props }: SwitchFieldProps) {\n  return (\n    <SwitchFieldPrimitive\n      {...props}\n      data-slot=\"control\"\n      className={cx(\"has-[[slot=description]]:**:data-[slot=control-label]:font-medium\", className)}\n      style={({ defaultStyle }) => ({\n        ...defaultStyle,\n        WebkitTapHighlightColor: \"transparent\",\n      })}\n    />\n  )\n}\n\nexport function Switch({ children, className, ...props }: SwitchButtonProps) {\n  return (\n    <SwitchButton\n      className={cx(\n        \"[--switch-bg-ring:var(--color-blue-700)]/90 [--switch-bg:var(--color-blue-600)] dark:[--switch-bg-ring:transparent]\",\n        \"[--switch-ring:var(--color-blue-700)]/90 [--switch-shadow:var(--color-blue-900)]/20 [--switch:white]\",\n        \"group relative grid cursor-default gap-x-6 gap-y-1 ltr:grid-cols-[1fr_auto] rtl:grid-cols-[auto_1fr]\",\n        \"*:data-[slot=control-label]:row-start-1 ltr:*:data-[slot=control-label]:col-start-1 rtl:*:data-[slot=control-label]:col-start-2\",\n        \"*:[[slot=description]]:row-start-2 ltr:*:[[slot=description]]:col-start-1 rtl:*:[[slot=description]]:col-start-2\",\n        \"disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      {(values) => (\n        <>\n          <span\n            data-slot=\"indicator\"\n            className={cn(\n              \"relative isolate inline-flex h-6 w-10 cursor-default self-start rounded-full p-0.75 sm:mt-0.5 sm:h-5 sm:w-8 ltr:col-start-2 rtl:col-start-1\",\n              \"transition duration-200 ease-in-out\",\n              \"inset-ring inset-ring-input bg-input/30\",\n              \"forced-colors:outline forced-colors:[--switch-bg:Highlight]\",\n              values.isHovered && \"inset-ring-muted-foreground/30\",\n              values.isFocusVisible &&\n                \"inset-ring-ring/70 selected:inset-ring-(--switch-bg)/30 bg-(--switch-bg)/20 ring-(--switch-bg)/20 ring-2 dark:inset-ring-(--switch-bg)/70\",\n              values.isSelected &&\n                \"inset-ring-(--switch-shadow) bg-(--switch-bg) dark:inset-ring-(--switch-bg-ring) dark:bg-(--switch-bg)\",\n              values.isDisabled &&\n                \"dark:group-disabled:bg-muted-foreground/30 dark:group-disabled:group-selected:inset-ring-muted-foreground/30 dark:group-disabled:group-selected:bg-(--switch-bg)\"\n            )}\n          >\n            <span\n              aria-hidden=\"true\"\n              className={twJoin(\n                \"pointer-events-none relative inline-block size-4.5 translate-x-0 rounded-full border border-transparent bg-white shadow-sm ring ring-foreground/5 transition duration-200 ease-in-out sm:size-3.5\",\n                values.isSelected &&\n                  \"bg-(--switch) shadow-(--switch-shadow) ring-(--switch-ring) group-disabled:shadow-sm group-disabled:ring-secondary-foreground/5 ltr:translate-x-4 ltr:sm:translate-x-3 rtl:-translate-x-4 rtl:sm:-translate-x-3\"\n              )}\n            />\n          </span>\n          {typeof children === \"function\" ? (\n            children(values)\n          ) : typeof children === \"string\" ? (\n            <Label elementType=\"span\" data-slot=\"control-label\">\n              {children}\n            </Label>\n          ) : (\n            children\n          )}\n        </>\n      )}\n    </SwitchButton>\n  )\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}