| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | import { useTranslation } from 'react-i18next'import s from './index.module.css'import cn from 'classnames'import type { ProviderHosted } from '@/models/common'interface IOpenaiHostedProviderProps {  provider: ProviderHosted}const OpenaiHostedProvider = ({  provider}: IOpenaiHostedProviderProps) => {  const { t } = useTranslation()  const exhausted = provider.quota_used > provider.quota_limit    return (    <div className={`      border-[0.5px] border-gray-200 rounded-xl      ${exhausted ? 'bg-[#FFFBFA]' : 'bg-gray-50'}    `}>      <div className='pt-4 px-4 pb-3'>        <div className='flex items-center mb-3'>          <div className={s.icon} />          <div className='grow text-sm font-medium text-gray-800'>            {t('common.provider.openaiHosted.openaiHosted')}          </div>          <div className={`            px-2 h-[22px] flex items-center rounded-md border             text-xs font-semibold             ${exhausted ? 'border-[#D92D20] text-[#D92D20]' : 'border-primary-600 text-primary-600'}          `}>            {exhausted ? t('common.provider.openaiHosted.exhausted') : t('common.provider.openaiHosted.onTrial')}          </div>        </div>        <div className='text-[13px] text-gray-500'>{t('common.provider.openaiHosted.desc')}</div>      </div>      <div className='flex items-center h-[42px] px-4 border-t-[0.5px] border-t-[rgba(0, 0, 0, 0.05)]'>        <div className='text-[13px] text-gray-700'>{t('common.provider.openaiHosted.callTimes')}</div>        <div className='relative grow h-2 flex bg-gray-200 rounded-md mx-2 overflow-hidden'>          <div             className={cn(s.bar, exhausted && s['bar-error'], 'absolute top-0 left-0 right-0 bottom-0')}             style={{ width: `${(provider.quota_used / provider.quota_limit * 100).toFixed(2)}%` }}          />          {Array(10).fill(0).map((i, k) => (            <div key={k} className={s['bar-item']} />          ))}        </div>        <div className={`          text-[13px] font-medium ${exhausted ? 'text-[#D92D20]' : 'text-gray-700'}        `}>{provider.quota_used}/{provider.quota_limit}</div>      </div>      {        exhausted && (          <div className='            px-4 py-3 leading-[18px] flex items-center text-[13px] text-gray-700 font-medium            bg-[#FFFAEB] border-t border-t-[rgba(0, 0, 0, 0.05)] rounded-b-xl          '>            {t('common.provider.openaiHosted.usedUp')}          </div>        )      }    </div>  )}export default OpenaiHostedProvider
 |