import { FC, memo, MouseEventHandler, useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import OLButton from '@/features/ui/components/ol/ol-button' import OLTooltip from '@/features/ui/components/ol/ol-tooltip' import OLIconButton from '@/features/ui/components/ol/ol-icon-button' import { bsVersion } from '@/features/utils/bootstrap-5' export const CopyToClipboard = memo<{ content: string tooltipId: string kind?: 'text' | 'icon' }>(({ content, tooltipId, kind = 'icon' }) => { const { t } = useTranslation() const [copied, setCopied] = useState(false) const handleClick = useCallback(() => { navigator.clipboard.writeText(content).then(() => { setCopied(true) window.setTimeout(() => { setCopied(false) }, 1500) }) }, [content]) if (!navigator.clipboard?.writeText) { return null } return ( {kind === 'text' ? ( ) : ( )} ) }) CopyToClipboard.displayName = 'CopyToClipboard' const TextButton: FC<{ handleClick: MouseEventHandler }> = ({ handleClick }) => { const { t } = useTranslation() return ( {t('copy')} ) } const IconButton: FC<{ handleClick: MouseEventHandler copied: boolean }> = ({ handleClick, copied }) => { const { t } = useTranslation() return ( ) }