| 
                        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
 
 
  |