import { Check, Copy } from 'lucide-react' import { ComponentProps, forwardRef, useEffect, useState } from 'react' import { Button, cn, copyToClipboard } from 'ui' type CopyButtonBaseProps = { iconOnly?: boolean copyLabel?: string copiedLabel?: string } type CopyButtonWithText = CopyButtonBaseProps & { text: string asyncText?: never } type CopyButtonWithAsyncText = CopyButtonBaseProps & { text?: never asyncText: () => Promise | string } export type CopyButtonProps = (CopyButtonWithText | CopyButtonWithAsyncText) & ComponentProps const CopyButton = forwardRef( ( { text, asyncText, iconOnly = false, children, onClick, copyLabel = 'Copy', copiedLabel = 'Copied', type = 'primary', icon, className, ...props }, ref ) => { const [showCopied, setShowCopied] = useState(false) useEffect(() => { if (!showCopied) return const timer = setTimeout(() => setShowCopied(false), 2000) return () => clearTimeout(timer) }, [showCopied]) return ( ) } ) CopyButton.displayName = 'CopyButton' export default CopyButton