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(); } }} /> ); }