From b64c7c907233b5684498bbad3862cd5807c36274 Mon Sep 17 00:00:00 2001 From: Atharva Matale Date: Sun, 5 Apr 2026 23:38:48 +0530 Subject: [PATCH] fix: resolve 486 --- .../review-editor/components/CopyButton.tsx | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/review-editor/components/CopyButton.tsx b/packages/review-editor/components/CopyButton.tsx index 823afa6c..407e310f 100644 --- a/packages/review-editor/components/CopyButton.tsx +++ b/packages/review-editor/components/CopyButton.tsx @@ -1,42 +1,39 @@ import type React from 'react'; import { useState } from 'react'; +import { CopyIcon } from '../icons/CopyIcon'; +import { CheckIcon } from '../icons/CheckIcon'; +import { useCopyToClipboard } from '../../hooks/useCopyToClipboard'; interface CopyButtonProps { text: string; className?: string; + variant?: 'overlay' | 'inline'; } /** Hover-reveal copy button with "Copied" flash. Parent needs className="group relative". */ -export const CopyButton: React.FC = ({ text, className = '' }) => { - const [copied, setCopied] = useState(false); +export const CopyButton: React.FC = ({ text, className = '', variant = 'overlay' }) => { + const { copied, copy } = useCopyToClipboard(text, 2000); const handleCopy = async (e: React.MouseEvent) => { e.stopPropagation(); - try { - await navigator.clipboard.writeText(text); - setCopied(true); - setTimeout(() => setCopied(false), 1500); - } catch { - // Clipboard API may not be available - } + copy(); }; + const iconSize = variant === 'inline' ? 'w-3 h-3' : 'w-4 h-4'; + return ( ); -}; +}; \ No newline at end of file