"use client"; import { cn } from "@lib/utils"; import { Label1Regular } from "@ui/text/label/label-1-regular"; import { AnimatePresence, motion } from "motion/react"; import * as React from "react"; interface CopyableCellProps extends React.HTMLAttributes { value: string; displayValue?: React.ReactNode; } export function CopyableCell({ value, displayValue, className, children, ...props }: CopyableCellProps) { const [hasCopied, setHasCopied] = React.useState(false); React.useEffect(() => { if (hasCopied) { const timeout = setTimeout(() => { setHasCopied(false); }, 2000); return () => clearTimeout(timeout); } }, [hasCopied]); const handleCopy = async (e: React.MouseEvent) => { e.stopPropagation(); try { await navigator.clipboard.writeText(value); setHasCopied(true); } catch (err) { console.error("Failed to copy:", err); } }; return ( // biome-ignore lint/a11y/noStaticElementInteractions: shadcn // biome-ignore lint/a11y/useKeyWithClickEvents: shadcn
{hasCopied ? ( Copied! ) : ( {displayValue || children || value} )}
); }