// source: https://usehooks-ts.com/react-hook/use-copy-to-clipboard import { useCallback, useState } from "react" type CopiedValue = string | null type CopyFn = (text: string) => Promise export function useCopyToClipboard(): [CopiedValue, CopyFn] { const [copiedText, setCopiedText] = useState(null) const copy: CopyFn = useCallback(async (text) => { if (!navigator?.clipboard) { console.warn("Clipboard not supported") return false } try { await navigator.clipboard.writeText(text) setCopiedText(text) setTimeout(() => setCopiedText(null), 2000) return true } catch (error) { console.warn("Copy failed", error) setCopiedText(null) return false } }, []) return [copiedText, copy] }