Spaces:
Build error
Build error
'use client' | |
import React, { useState } from 'react' | |
import { useTranslation } from 'react-i18next' | |
import { debounce } from 'lodash-es' | |
import copy from 'copy-to-clipboard' | |
import Tooltip from '../tooltip' | |
import { | |
Clipboard, | |
ClipboardCheck, | |
} from '@/app/components/base/icons/src/vender/line/files' | |
type Props = { | |
content: string | |
} | |
const prefixEmbedded = 'appOverview.overview.appInfo.embedded' | |
export const CopyIcon = ({ content }: Props) => { | |
const { t } = useTranslation() | |
const [isCopied, setIsCopied] = useState<boolean>(false) | |
const onClickCopy = debounce(() => { | |
copy(content) | |
setIsCopied(true) | |
}, 100) | |
const onMouseLeave = debounce(() => { | |
setIsCopied(false) | |
}, 100) | |
return ( | |
<Tooltip | |
popupContent={ | |
(isCopied | |
? t(`${prefixEmbedded}.copied`) | |
: t(`${prefixEmbedded}.copy`)) || '' | |
} | |
> | |
<div onMouseLeave={onMouseLeave}> | |
{!isCopied | |
? ( | |
<Clipboard className='mx-1 w-3 h-3 text-gray-500 cursor-pointer' onClick={onClickCopy} /> | |
) | |
: ( | |
<ClipboardCheck className='mx-1 w-3 h-3 text-gray-500' /> | |
) | |
} | |
</div> | |
</Tooltip> | |
) | |
} | |
export default CopyIcon | |