index.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. 'use client'
  2. import React from 'react'
  3. import { t } from 'i18next'
  4. import copy from 'copy-to-clipboard'
  5. import s from './style.module.css'
  6. import Tooltip from '@/app/components/base/tooltip'
  7. type ICopyBtnProps = {
  8. value: string
  9. className?: string
  10. }
  11. const CopyBtn = ({
  12. value,
  13. className,
  14. }: ICopyBtnProps) => {
  15. const [isCopied, setIsCopied] = React.useState(false)
  16. return (
  17. <div className={`${className}`}>
  18. <Tooltip
  19. selector="copy-btn-tooltip"
  20. content={(isCopied ? t('appApi.copied') : t('appApi.copy')) as string}
  21. className='z-10'
  22. >
  23. <div
  24. className={'box-border p-0.5 flex items-center justify-center rounded-md bg-white cursor-pointer'}
  25. style={{
  26. boxShadow: '0px 4px 8px -2px rgba(16, 24, 40, 0.1), 0px 2px 4px -2px rgba(16, 24, 40, 0.06)',
  27. }}
  28. onClick={() => {
  29. copy(value)
  30. setIsCopied(true)
  31. }}
  32. >
  33. <div className={`w-6 h-6 hover:bg-gray-50 ${s.copyIcon} ${isCopied ? s.copied : ''}`}></div>
  34. </div>
  35. </Tooltip>
  36. </div>
  37. )
  38. }
  39. export default CopyBtn