{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-copy-to-clipboard",
  "title": "Use Copy to Clipboard",
  "description": "React hook for copying text to clipboard with toast notifications",
  "registryDependencies": [
    "sonner"
  ],
  "files": [
    {
      "path": "src/hooks/use-copy-to-clipboard.ts",
      "content": "\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport { toast } from \"sonner\";\n\nexport function useCopyToClipboard() {\n  const [text, setText] = useState<string | null>(null);\n\n  const copy = useCallback(\n    async (\n      text: string,\n      {\n        timeout = 3000,\n        withToast = false,\n        successMessage = \"Copied to clipboard\",\n      }: {\n        timeout?: number;\n        withToast?: boolean | string;\n        successMessage?: string;\n      },\n    ) => {\n      if (!navigator?.clipboard) {\n        console.warn(\"Clipboard not supported\");\n        return false;\n      }\n\n      try {\n        await navigator.clipboard.writeText(text);\n        setText(text);\n\n        if (timeout) {\n          setTimeout(() => {\n            setText(null);\n          }, timeout);\n        }\n\n        if (withToast) {\n          if (typeof withToast === \"string\") {\n            toast.success(withToast);\n          } else {\n            toast.success(successMessage);\n          }\n        }\n\n        return true;\n      } catch (error) {\n        console.warn(\"Copy failed\", error);\n        setText(null);\n        return false;\n      }\n    },\n    [],\n  );\n\n  return { text, copy, isCopied: text !== null };\n}\n",
      "type": "registry:hook",
      "target": "hooks/use-copy-to-clipboard.ts"
    }
  ],
  "type": "registry:hook"
}