Spaces:
Build error
Build error
'use client' | |
import React, { useEffect, useState } from 'react' | |
import copy from 'copy-to-clipboard' | |
import { t } from 'i18next' | |
import s from './style.module.css' | |
import Tooltip from '@/app/components/base/tooltip' | |
type IInputCopyProps = { | |
value?: string | |
className?: string | |
readOnly?: boolean | |
children?: React.ReactNode | |
} | |
const InputCopy = ({ | |
value = '', | |
className, | |
readOnly = true, | |
children, | |
}: IInputCopyProps) => { | |
const [isCopied, setIsCopied] = useState(false) | |
useEffect(() => { | |
if (isCopied) { | |
const timeout = setTimeout(() => { | |
setIsCopied(false) | |
}, 1000) | |
return () => { | |
clearTimeout(timeout) | |
} | |
} | |
}, [isCopied]) | |
return ( | |
<div className={`flex rounded-lg bg-gray-50 hover:bg-gray-50 py-2 items-center ${className}`}> | |
<div className="flex items-center flex-grow h-5"> | |
{children} | |
<div className='flex-grow bg-gray-50 text-[13px] relative h-full'> | |
<div className='absolute top-0 left-0 w-full pl-2 pr-2 truncate cursor-pointer r-0' onClick={() => { | |
copy(value) | |
setIsCopied(true) | |
}}> | |
<Tooltip | |
popupContent={isCopied ? `${t('appApi.copied')}` : `${t('appApi.copy')}`} | |
position='bottom' | |
> | |
{value} | |
</Tooltip> | |
</div> | |
</div> | |
<div className="flex-shrink-0 h-4 bg-gray-200 border" /> | |
<Tooltip | |
popupContent={isCopied ? `${t('appApi.copied')}` : `${t('appApi.copy')}`} | |
position='bottom' | |
> | |
<div className="px-0.5 flex-shrink-0"> | |
<div className={`box-border w-[30px] h-[30px] flex items-center justify-center rounded-lg hover:bg-gray-100 cursor-pointer ${s.copyIcon} ${isCopied ? s.copied : ''}`} onClick={() => { | |
copy(value) | |
setIsCopied(true) | |
}}> | |
</div> | |
</div> | |
</Tooltip> | |
</div> | |
</div> | |
) | |
} | |
export default InputCopy | |