import { useState } from 'react'; import { motion } from 'framer-motion'; import { AnimatePresence } from 'framer-motion'; import { CheckSquareIcon, CopyIcon } from 'lucide-react'; import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard'; import { Button } from '@documenso/ui/primitives/button'; import { cn } from '../../lib/utils'; export type CopyTextButtonProps = { value: string; badgeContentUncopied?: React.ReactNode; badgeContentCopied?: React.ReactNode; onCopySuccess?: () => void; }; export const CopyTextButton = ({ value, onCopySuccess, badgeContentUncopied, badgeContentCopied, }: CopyTextButtonProps) => { const [, copy] = useCopyToClipboard(); const [copiedTimeout, setCopiedTimeout] = useState(null); const onCopy = async () => { await copy(value).then(() => onCopySuccess?.()); if (copiedTimeout) { clearTimeout(copiedTimeout); } setCopiedTimeout( setTimeout(() => { setCopiedTimeout(null); }, 2000), ); }; return ( ); };