12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- '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)
|