| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | import type { FC } from 'react'import { useTranslation } from 'react-i18next'import { useContext } from 'use-context-selector'import type {  FormValue,  Provider,  ProviderConfigItem,  ProviderWithConfig,} from '../declarations'import Indicator from '../../../indicator'import Selector from '../selector'import Quota from './Quota'import { IS_CE_EDITION } from '@/config'import I18n from '@/context/i18n'import { Plus } from '@/app/components/base/icons/src/vender/line/general'type ModelCardProps = {  currentProvider?: Provider  modelItem: ProviderConfigItem  onOpenModal: (v?: FormValue) => void  onOperate: (v: Record<string, any>) => void}const ModelCard: FC<ModelCardProps> = ({  currentProvider,  modelItem,  onOpenModal,  onOperate,}) => {  const { locale } = useContext(I18n)  const { t } = useTranslation()  const custom = currentProvider?.providers.find(p => p.provider_type === 'custom') as ProviderWithConfig  return (    <div className='rounded-xl border-[0.5px] border-gray-200 shadow-xs'>      <div className={`flex px-4 pt-4 pb-3 rounded-t-lg ${modelItem.bgColor}`}>        <div className='grow mr-3'>          <div className='mb-1'>            {modelItem.titleIcon[locale]}          </div>          <div className='h-9 text-xs text-black opacity-60'>{modelItem.desc?.[locale]}</div>        </div>        {modelItem.subTitleIcon}      </div>      {        !IS_CE_EDITION && currentProvider && <Quota currentProvider={currentProvider} />      }      {        custom?.is_valid          ? (            <div className='flex items-center px-4 h-12'>              <Indicator color='green' className='mr-2' />              <div className='grow text-[13px] font-medium text-gray-700'>API key</div>              <div                className='mr-1 px-2 leading-6 rounded-md text-xs font-medium text-gray-500 hover:bg-gray-50 cursor-pointer'                onClick={() => onOpenModal(custom?.config)}              >                {t('common.operation.edit')}              </div>              <Selector                onOperate={onOperate}                value={currentProvider?.preferred_provider_type}                hiddenOptions={IS_CE_EDITION}              />            </div>          )          : (            <div              className='inline-flex items-center px-4 h-12 text-gray-500 cursor-pointer hover:text-primary-600'              onClick={() => onOpenModal()}            >              <Plus className='mr-1.5 w-4 h-4'/>              <div className='text-xs font-medium'>{t('common.modelProvider.addApiKey')}</div>            </div>          )      }    </div>  )}export default ModelCard
 |