"use client" import { useState, useEffect, useRef, useCallback } from "react" import clsx from "clsx" import dynamic from "next/dynamic" import { TooltipProps } from "../Tooltip" import SpinnerLoading from "../Loading/Spinner" const Tooltip = dynamic(async () => import("../Tooltip"), { loading: () => , }) as React.FC export type CopyButtonProps = { text: string buttonClassName?: string tooltipClassName?: string } & React.HTMLAttributes const CopyButton = ({ text, buttonClassName = "", tooltipClassName = "", children, }: CopyButtonProps) => { const [isCopied, setIsCopied] = useState(false) const copyTimeout = useRef(undefined) const handleCopy = useCallback(async () => { const copy = (await import("copy-text-to-clipboard")).default copy(text) setIsCopied(true) copyTimeout.current = window.setTimeout(() => { setIsCopied(false) }, 1000) }, [text]) useEffect(() => () => window.clearTimeout(copyTimeout.current), []) return ( {children} ) } export default CopyButton