import { useCallback, useRef, useState } from "react" import { toast } from "sonner" type UseCopyToClipboardProps = { text: string copyMessage?: string } export function useCopyToClipboard({ text, copyMessage = "Copied to clipboard!", }: UseCopyToClipboardProps) { const [isCopied, setIsCopied] = useState(false) const timeoutRef = useRef(null) const handleCopy = useCallback(() => { navigator.clipboard .writeText(text) .then(() => { toast.success(copyMessage) setIsCopied(true) if (timeoutRef.current) { clearTimeout(timeoutRef.current) timeoutRef.current = null } timeoutRef.current = setTimeout(() => { setIsCopied(false) }, 2000) }) .catch(() => { toast.error("Failed to copy to clipboard.") }) }, [text, copyMessage]) return { isCopied, handleCopy } }