Spaces:
Build error
Build error
'use client' | |
import type { FC } from 'react' | |
import React from 'react' | |
import { useTranslation } from 'react-i18next' | |
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 | |
popupContent={ | |
<div className='w-[180px]'> | |
{tooltip} | |
</div> | |
} | |
/> | |
)} | |
</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) | |