{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "copy",
  "title": "CopyButton",
  "description": "Copy-to-clipboard button used by BuzzForm v2 fields.",
  "registryDependencies": [
    "button"
  ],
  "files": [
    {
      "path": "registry/shadcn/components/copy-button.tsx",
      "content": "\"use client\";\n\nimport { useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { IconPlaceholder } from \"@/components/icon-placeholder\";\n\nexport interface CopyButtonProps {\n  value: string;\n  disabled?: boolean;\n  successDuration?: number;\n  className?: string;\n  onCopy?: () => void;\n}\n\nexport function CopyButton({\n  value,\n  disabled = false,\n  successDuration = 2000,\n  className,\n  onCopy,\n}: CopyButtonProps) {\n  const [copied, setCopied] = useState(false);\n\n  const handleCopy = async () => {\n    if (!value || disabled) return;\n    try {\n      await navigator.clipboard.writeText(value);\n      setCopied(true);\n      onCopy?.();\n      setTimeout(() => setCopied(false), successDuration);\n    } catch {\n      // clipboard access denied — fail silently\n    }\n  };\n\n  if (!value) return null;\n\n  return (\n    <Button\n      type=\"button\"\n      variant=\"ghost\"\n      size=\"icon\"\n      className={className}\n      onClick={handleCopy}\n      disabled={disabled || !value}\n      aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n    >\n      {copied ? (\n        <IconPlaceholder\n          hugeicons=\"Tick02Icon\"\n          lucide=\"Check\"\n          tabler=\"IconCheck\"\n          phosphor=\"Check\"\n          remixicon=\"RiCheckLine\"\n          className=\"size-4\"\n        />\n      ) : (\n        <IconPlaceholder\n          hugeicons=\"Copy01Icon\"\n          lucide=\"Copy\"\n          tabler=\"IconCopy\"\n          phosphor=\"Copy\"\n          remixicon=\"RiFileCopyLine\"\n          className=\"size-4\"\n        />\n      )}\n      <span className=\"sr-only\">{copied ? \"Copied\" : \"Copy\"}</span>\n    </Button>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/buzzform/components/copy-button.tsx"
    }
  ],
  "type": "registry:ui"
}