{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "switch",
  "title": "Switch",
  "description": "A control that indicates whether a setting is on or off.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/ui/switch.tsx",
      "content": "import { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/registry/lib/utils\";\n\nfunction SwitchRoot(props: BaseSwitch.Root.Props) {\n  return <BaseSwitch.Root data-slot=\"switch\" {...props} />;\n}\n\nfunction SwitchThumb({ className, ...props }: BaseSwitch.Thumb.Props) {\n  return (\n    <BaseSwitch.Thumb\n      className={cn(\"pointer-events-none\", className)}\n      data-slot=\"switch-thumb\"\n      {...props}\n    />\n  );\n}\n\nconst switchVariants = cva(\n  [\n    \"shrink-0 rounded-full border border-transparent peer group/switch relative inline-flex items-center transition-all outline-0\",\n    \"after:absolute after:-inset-x-3 after:-inset-y-2\",\n    \"data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80\",\n    \"focus-visible:outline focus-visible:outline-ring focus-visible:outline-offset-2 focus-visible:ring-4 focus-visible:ring-primary/30\",\n    \"aria-invalid:outline aria-invalid:outline-destructive/80 aria-invalid:ring-4 aria-invalid:ring-destructive/20\",\n    \"aria-invalid:focus-visible:outline-destructive aria-invalid:focus-visible:outline-offset-2 aria-invalid:focus-visible:ring-destructive/20\",\n    \"data-disabled:cursor-default data-disabled:opacity-50\",\n  ],\n  {\n    defaultVariants: {\n      size: \"default\",\n    },\n    variants: {\n      size: {\n        default: \"h-5 w-9\",\n        lg: \"h-6 w-11\",\n        sm: \"h-4 w-7\",\n      },\n    },\n  },\n);\n\nconst switchThumbVariants = cva(\n  [\n    \"bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground\",\n    \"rounded-full pointer-events-none block ring-0 transition-transform\",\n  ],\n  {\n    defaultVariants: {\n      size: \"default\",\n    },\n    variants: {\n      size: {\n        default:\n          \"size-4 data-checked:translate-x-4.5 data-unchecked:translate-x-0\",\n        lg: \"size-5 data-checked:translate-x-5.5 data-unchecked:translate-x-0\",\n        sm: \"size-3 data-checked:translate-x-3.5 data-unchecked:translate-x-0\",\n      },\n    },\n  },\n);\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: BaseSwitch.Root.Props & VariantProps<typeof switchVariants>) {\n  return (\n    <BaseSwitch.Root\n      className={cn(switchVariants({ size }), className)}\n      data-slot=\"switch\"\n      {...props}\n    >\n      <BaseSwitch.Thumb\n        className={cn(switchThumbVariants({ size }))}\n        data-slot=\"switch-thumb\"\n      />\n    </BaseSwitch.Root>\n  );\n}\n\nexport {\n  SwitchRoot,\n  SwitchThumb,\n  // Composite component\n  Switch,\n};\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}