more.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import type { FC } from 'react'
  2. import { memo } from 'react'
  3. import { useTranslation } from 'react-i18next'
  4. import type { ChatItem } from '../../types'
  5. import { formatNumber } from '@/utils/format'
  6. type MoreProps = {
  7. more: ChatItem['more']
  8. }
  9. const More: FC<MoreProps> = ({
  10. more,
  11. }) => {
  12. const { t } = useTranslation()
  13. return (
  14. <div className='flex items-center mt-1 h-[18px] text-xs text-gray-400 opacity-0 group-hover:opacity-100'>
  15. {
  16. more && (
  17. <>
  18. <div
  19. className='mr-2 shrink-0 truncate max-w-[33.3%]'
  20. title={`${t('appLog.detail.timeConsuming')} ${more.latency}${t('appLog.detail.second')}`}
  21. >
  22. {`${t('appLog.detail.timeConsuming')} ${more.latency}${t('appLog.detail.second')}`}
  23. </div>
  24. <div
  25. className='shrink-0 truncate max-w-[33.3%]'
  26. title={`${t('appLog.detail.tokenCost')} ${formatNumber(more.tokens)}`}
  27. >
  28. {`${t('appLog.detail.tokenCost')} ${formatNumber(more.tokens)}`}
  29. </div>
  30. <div className='shrink-0 mx-2'>·</div>
  31. <div
  32. className='shrink-0 truncate max-w-[33.3%]'
  33. title={more.time}
  34. >
  35. {more.time}
  36. </div>
  37. </>
  38. )
  39. }
  40. </div>
  41. )
  42. }
  43. export default memo(More)