{
  "$schema": "https://blode.co/ui/schema/registry-item.json",
  "name": "use-copy-to-clipboard",
  "title": "Use Copy To Clipboard",
  "author": "Matthew Blode",
  "description": "A hook that copies text to the clipboard and resets after a timeout.",
  "files": [
    {
      "path": "hooks/use-copy-to-clipboard.ts",
      "content": "\"use client\";\n\nimport { useState } from \"react\";\n\nexport const useCopyToClipboard = ({\n  timeout = 2000,\n  onCopy,\n}: {\n  timeout?: number;\n  onCopy?: () => void;\n} = {}) => {\n  const [isCopied, setIsCopied] = useState(false);\n\n  const copyToClipboard = async (value: string) => {\n    if (typeof window === \"undefined\" || !navigator.clipboard.writeText) {\n      return;\n    }\n\n    if (!value) {\n      return;\n    }\n\n    try {\n      await navigator.clipboard.writeText(value);\n      setIsCopied(true);\n\n      if (onCopy) {\n        onCopy();\n      }\n\n      if (timeout !== 0) {\n        setTimeout(() => {\n          setIsCopied(false);\n        }, timeout);\n      }\n    } catch (error) {\n      console.error(error);\n    }\n  };\n\n  return { copyToClipboard, isCopied };\n};\n",
      "type": "registry:lib",
      "target": ""
    }
  ],
  "type": "registry:lib"
}
