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 copyStyle from './style.module.css' | |
import Tooltip from '@/app/components/base/tooltip' | |
type Props = { | |
content: string | |
className?: string | |
} | |
const prefixEmbedded = 'appOverview.overview.appInfo.embedded' | |
const CopyFeedback = ({ content, className }: 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 | |
className={`w-8 h-8 cursor-pointer hover:bg-gray-100 rounded-lg ${ | |
className ?? '' | |
}`} | |
> | |
<div | |
onClick={onClickCopy} | |
onMouseLeave={onMouseLeave} | |
className={`w-full h-full ${copyStyle.copyIcon} ${ | |
isCopied ? copyStyle.copied : '' | |
}`} | |
></div> | |
</div> | |
</Tooltip> | |
) | |
} | |
export default CopyFeedback | |
export const CopyFeedbackNew = ({ content, className }: Pick<Props, 'className' | 'content'>) => { | |
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 | |
className={`w-8 h-8 cursor-pointer hover:bg-gray-100 rounded-lg ${ | |
className ?? '' | |
}`} | |
> | |
<div | |
onClick={onClickCopy} | |
onMouseLeave={onMouseLeave} | |
className={`w-full h-full ${copyStyle.copyIcon} ${ | |
isCopied ? copyStyle.copied : '' | |
}`} | |
></div> | |
</div> | |
</Tooltip> | |
) | |
} | |