{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "spin",
  "title": "Spin Theme Toggle",
  "files": [
    {
      "path": "src/Spin.tsx",
      "content": "import { type ButtonHTMLAttributes, type CSSProperties, useId } from \"react\";\n\nexport interface SpinProps extends Omit<\n  ButtonHTMLAttributes<HTMLButtonElement>,\n  \"children\"\n> {\n  duration?: number;\n  [key: `data-${string}`]: string | number | boolean | null | undefined;\n}\n\nexport function Spin({\n  duration = 400,\n  className,\n  type = \"button\",\n  title = \"Toggle theme\",\n  \"aria-label\": ariaLabel = \"Toggle theme\",\n  ...props\n}: SpinProps) {\n  const toggleId = useId();\n\n  const clipMainId = `toggles.dev-spin-main-${toggleId}`;\n\n  return (\n    <button\n      type={type}\n      title={title}\n      aria-label={ariaLabel}\n      className={className}\n      {...props}\n    >\n      <svg\n        width=\"1em\"\n        height=\"1em\"\n        viewBox=\"0 0 24 24\"\n        aria-hidden=\"true\"\n        style={{ \"--toggles-spin--duration\": `${duration}ms` } as CSSProperties}\n      >\n        <defs>\n          <clipPath id={clipMainId}>\n            <path\n              d={\"M0 0h25a1 1 0 0010 10v14H0Z\"}\n              className=\"transition-[d,translate] duration-(--toggles-spin--duration) dark:delay-[calc(var(--toggles-spin--duration)*0.15)] dark:[d:path('M0_2h13a1_1_0_0010_10v14H0Z')] dark:not-supports-[d:path('M0_0')]:-translate-x-3.25 dark:not-supports-[d:path('M0_0')]:translate-y-0.5\"\n            />\n          </clipPath>\n        </defs>\n        <g stroke={\"currentColor\"} strokeLinecap={\"round\"}>\n          <circle\n            cx={12}\n            cy={12}\n            r={5}\n            fill={\"currentColor\"}\n            clipPath={`url(#${clipMainId})`}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) dark:scale-170\"\n          />\n          <path\n            d={\"M12 1.4v2.4\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"m20.3 3.7-2.5 2.5\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"M22.6 12h-2.4\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"M12 22.6v-2.4\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"M1.4 12h2.4\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"m20.3 20.3-2.5-2.5\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"m3.7 20.3 2.5-2.5\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n          <path\n            d={\"m3.7 3.7 2.5 2.5\"}\n            fill={\"none\"}\n            strokeWidth={2}\n            strokeLinejoin={\"round\"}\n            strokeMiterlimit={0}\n            paintOrder={\"stroke markers fill\"}\n            className=\"origin-center transition-transform duration-(--toggles-spin--duration) delay-[calc(var(--toggles-spin--duration)*0.15)] dark:delay-0 dark:rotate-45 dark:scale-0\"\n          />\n        </g>\n      </svg>\n    </button>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/spin-theme-toggle.tsx"
    }
  ],
  "type": "registry:block"
}