import { IconButton, type IconButtonProps, useTimedBoolean } from "@yaakapp-internal/ui"; import { copyToClipboard } from "../lib/copy"; import { showToast } from "../lib/toast"; interface Props extends Omit { text: string | (() => Promise); } export function CopyIconButton({ text, ...props }: Props) { const [copied, setCopied] = useTimedBoolean(); return ( { const content = typeof text === "function" ? await text() : text; if (content == null) { showToast({ id: "failed-to-copy", color: "danger", message: "Failed to copy", }); } else { copyToClipboard(content, { disableToast: true }); setCopied(); } }} /> ); }