| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- 'use client'
 
- import type { FC } from 'react'
 
- import React, { useCallback, useEffect, useState } from 'react'
 
- import copy from 'copy-to-clipboard'
 
- import {
 
-   RiClipboardLine,
 
- } from '@remixicon/react'
 
- import { useTranslation } from 'react-i18next'
 
- import { ClipboardCheck } from '../../base/icons/src/vender/line/files'
 
- import Tooltip from '../../base/tooltip'
 
- import cn from '@/utils/classnames'
 
- import ActionButton from '@/app/components/base/action-button'
 
- type Props = {
 
-   label: string
 
-   labelWidthClassName?: string
 
-   value: string
 
-   maskedValue?: string
 
-   valueMaxWidthClassName?: string
 
- }
 
- const KeyValueItem: FC<Props> = ({
 
-   label,
 
-   labelWidthClassName = 'w-10',
 
-   value,
 
-   maskedValue,
 
-   valueMaxWidthClassName = 'max-w-[162px]',
 
- }) => {
 
-   const { t } = useTranslation()
 
-   const [isCopied, setIsCopied] = useState(false)
 
-   const handleCopy = useCallback(() => {
 
-     copy(value)
 
-     setIsCopied(true)
 
-   }, [value])
 
-   useEffect(() => {
 
-     if (isCopied) {
 
-       const timer = setTimeout(() => {
 
-         setIsCopied(false)
 
-       }, 2000)
 
-       return () => {
 
-         clearTimeout(timer)
 
-       }
 
-     }
 
-   }, [isCopied])
 
-   const CopyIcon = isCopied ? ClipboardCheck : RiClipboardLine
 
-   return (
 
-     <div className='flex items-center gap-1'>
 
-       <span className={cn('flex flex-col justify-center items-start text-text-tertiary system-xs-medium', labelWidthClassName)}>{label}</span>
 
-       <div className='flex justify-center items-center gap-0.5'>
 
-         <span className={cn(valueMaxWidthClassName, ' truncate system-xs-medium text-text-secondary')}>
 
-           {maskedValue || value}
 
-         </span>
 
-         <Tooltip popupContent={t(`common.operation.${isCopied ? 'copied' : 'copy'}`)} position='top'>
 
-           <ActionButton onClick={handleCopy}>
 
-             <CopyIcon className='shrink-0 w-3.5 h-3.5 text-text-tertiary' />
 
-           </ActionButton>
 
-         </Tooltip>
 
-       </div>
 
-     </div>
 
-   )
 
- }
 
- export default React.memo(KeyValueItem)
 
 
  |