{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "switch",
  "type": "registry:ui",
  "title": "Switch",
  "description": "Tactile capsule toggle switch.",
  "dependencies": [
    "clsx",
    "tailwind-merge"
  ],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "components/ui/switch.tsx",
      "content": "import * as React from 'react'\nimport { motion } from 'motion/react'\nimport { cn } from '@/lib/utils'\n\nexport interface SwitchProps {\n  checked?: boolean\n  defaultChecked?: boolean\n  onCheckedChange?: (checked: boolean) => void\n  label?: string\n  className?: string\n  disabled?: boolean\n}\n\nexport function Switch({\n  checked: controlledChecked,\n  defaultChecked = false,\n  onCheckedChange,\n  label,\n  className,\n  disabled = false,\n}: SwitchProps) {\n  const [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n  const isChecked = controlledChecked !== undefined ? controlledChecked : internalChecked\n\n  const handleToggle = () => {\n    if (disabled) return\n    const next = !isChecked\n    setInternalChecked(next)\n    onCheckedChange?.(next)\n  }\n\n  return (\n    <label\n      onClick={handleToggle}\n      className={cn(\n        'inline-flex items-center gap-3 cursor-pointer select-none group',\n        disabled && 'opacity-50 pointer-events-none',\n        className\n      )}\n    >\n      <motion.div\n        whileTap={{ scale: 0.95 }}\n        className={cn(\n          'w-14 h-8 rounded-full rk-border-sm rk-shadow-sm p-1 transition-colors duration-200 relative flex items-center shrink-0',\n          isChecked ? 'bg-rk-primary' : 'bg-rk-canvas'\n        )}\n      >\n        <motion.div\n          layout\n          transition={{\n            type: 'spring',\n            stiffness: 500,\n            damping: 30,\n          }}\n          className={cn(\n            'w-5 h-5 rounded-full bg-rk-ink rk-shadow-sm shrink-0 aspect-square p-0',\n            isChecked ? 'ml-auto' : 'ml-0'\n          )}\n        />\n      </motion.div>\n      {label && <span className=\"font-extrabold text-sm text-rk-ink\">{label}</span>}\n    </label>\n  )\n}\n",
      "type": "registry:ui",
      "target": "components/ui/switch.tsx"
    }
  ]
}