'use client'; import * as React from 'react'; import { DropdownMenuTriggerProps } from '@radix-ui/react-dropdown-menu'; import { CheckIcon, CopyIcon } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Button } from '@/components/shared/ui/button'; interface CopyButtonProps extends React.HTMLAttributes { value: string; src?: string; } export async function copyToClipboardWithMeta(value: string) { navigator.clipboard.writeText(value); } interface CopyButtonProps extends DropdownMenuTriggerProps { value: string; copyText?: string; copiedText?: string; size?: 'default' | 'sm' | 'lg' | 'xl' | 'icon' | 'unsized'; className?: string; } export function CopyButton({ value, copyText = 'Copy to clipboard', copiedText = 'Copied!', size = 'default', className, ...props }: CopyButtonProps) { const [hasCopied, setHasCopied] = React.useState(false); React.useEffect(() => { setTimeout(() => { setHasCopied(false); }, 2000); }, [hasCopied]); const copyToClipboard = React.useCallback((value: string) => { copyToClipboardWithMeta(value); setHasCopied(true); }, []); return ( ); }