{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "copy-button", "dependencies": [ "lucide-react" ], "registryDependencies": [ "button", "https://reusables.vercel.app/r/utils.json" ], "files": [ { "path": "registry/reusables/ui/copy-button.tsx", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ClipboardIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, ButtonProps } from \"@/components/ui/button\"\n\ninterface CopyButtonProps extends ButtonProps {\n value: string\n}\n\nexport function CopyButton({\n value,\n className,\n variant = \"ghost\",\n ...props\n}: CopyButtonProps) {\n const [hasCopied, setHasCopied] = React.useState(false)\n\n const copyToClipboard = (value: string) => {\n navigator.clipboard.writeText(value)\n }\n\n React.useEffect(() => {\n setTimeout(() => {\n setHasCopied(false)\n }, 2000)\n }, [hasCopied])\n\n return (\n {\n copyToClipboard(value)\n setHasCopied(true)\n }}\n {...props}\n >\n {hasCopied ?\n \n : }\n \n )\n}\n", "type": "registry:ui", "target": "components/ui/copy-button.tsx" } ], "type": "registry:ui" }