'use client' import type { FC } from 'react' import React from 'react' import { useTranslation } from 'react-i18next' import { InfoCircle } from '../../base/icons/src/vender/line/general' import ProgressBar from '../progress-bar' import { NUM_INFINITE } from '../config' import Tooltip from '@/app/components/base/tooltip' type Props = { className?: string Icon: any name: string tooltip?: string usage: number total: number unit?: string } const LOW = 50 const MIDDLE = 80 const UsageInfo: FC<Props> = ({ className, Icon, name, tooltip, usage, total, unit = '', }) => { const { t } = useTranslation() const percent = usage / total * 100 const color = (() => { if (percent < LOW) return '#155EEF' if (percent < MIDDLE) return '#F79009' return '#F04438' })() return ( <div className={className}> <div className='flex justify-between h-5 items-center'> <div className='flex items-center'> <Icon className='w-4 h-4 text-gray-700' /> <div className='mx-1 leading-5 text-sm font-medium text-gray-700'>{name}</div> {tooltip && ( <Tooltip htmlContent={<div className='w-[180px]'> {tooltip} </div>} selector='config-var-tooltip'> <InfoCircle className='w-[14px] h-[14px] text-gray-400' /> </Tooltip> )} </div> <div className='flex items-center leading-[18px] text-[13px] font-normal'> <div style={{ color: percent < LOW ? '#344054' : color, }}>{usage}{unit}</div> <div className='mx-1 text-gray-300'>/</div> <div className='text-gray-500'>{total === NUM_INFINITE ? t('billing.plansCommon.unlimited') : `${total}${unit}`}</div> </div> </div> <div className='mt-2'> <ProgressBar percent={percent} color={color} /> </div> </div> ) } export default React.memo(UsageInfo)