"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} )}
) }