| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- import type { FC } from 'react'
 
- import { useTranslation } from 'react-i18next'
 
- import type {
 
-   DefaultModel,
 
-   Model,
 
-   ModelItem,
 
- } from '../declarations'
 
- import {
 
-   useLanguage,
 
-   useUpdateModelList,
 
-   useUpdateModelProviders,
 
- } from '../hooks'
 
- import ModelIcon from '../model-icon'
 
- import ModelName from '../model-name'
 
- import {
 
-   ConfigurationMethodEnum,
 
-   MODEL_STATUS_TEXT,
 
-   ModelStatusEnum,
 
- } from '../declarations'
 
- import { Check } from '@/app/components/base/icons/src/vender/line/general'
 
- import { useModalContext } from '@/context/modal-context'
 
- import { useProviderContext } from '@/context/provider-context'
 
- import Tooltip from '@/app/components/base/tooltip'
 
- type PopupItemProps = {
 
-   defaultModel?: DefaultModel
 
-   model: Model
 
-   onSelect: (provider: string, model: ModelItem) => void
 
- }
 
- const PopupItem: FC<PopupItemProps> = ({
 
-   defaultModel,
 
-   model,
 
-   onSelect,
 
- }) => {
 
-   const { t } = useTranslation()
 
-   const language = useLanguage()
 
-   const { setShowModelModal } = useModalContext()
 
-   const { modelProviders } = useProviderContext()
 
-   const updateModelList = useUpdateModelList()
 
-   const updateModelProviders = useUpdateModelProviders()
 
-   const currentProvider = modelProviders.find(provider => provider.provider === model.provider)!
 
-   const handleSelect = (provider: string, modelItem: ModelItem) => {
 
-     if (modelItem.status !== ModelStatusEnum.active)
 
-       return
 
-     onSelect(provider, modelItem)
 
-   }
 
-   const handleOpenModelModal = () => {
 
-     setShowModelModal({
 
-       payload: {
 
-         currentProvider,
 
-         currentConfigurationMethod: ConfigurationMethodEnum.predefinedModel,
 
-       },
 
-       onSaveCallback: () => {
 
-         updateModelProviders()
 
-         const modelType = model.models[0].model_type
 
-         if (modelType)
 
-           updateModelList(modelType)
 
-       },
 
-     })
 
-   }
 
-   return (
 
-     <div className='mb-1'>
 
-       <div className='flex items-center px-3 h-[22px] text-xs font-medium text-gray-500'>
 
-         {model.label[language] || model.label.en_US}
 
-       </div>
 
-       {
 
-         model.models.map(modelItem => (
 
-           <Tooltip
 
-             key={modelItem.model}
 
-             popupContent={modelItem.status !== ModelStatusEnum.active ? MODEL_STATUS_TEXT[modelItem.status][language] : undefined}
 
-             position='right'
 
-           >
 
-             <div
 
-               key={modelItem.model}
 
-               className={`
 
-                 group relative flex items-center px-3 py-1.5 h-8 rounded-lg
 
-                 ${modelItem.status === ModelStatusEnum.active ? 'cursor-pointer hover:bg-gray-50' : 'cursor-not-allowed hover:bg-gray-50/60'}
 
-               `}
 
-               onClick={() => handleSelect(model.provider, modelItem)}
 
-             >
 
-               <ModelIcon
 
-                 className={`
 
-                   shrink-0 mr-2 w-4 h-4
 
-                   ${modelItem.status !== ModelStatusEnum.active && 'opacity-60'}
 
-                 `}
 
-                 provider={model}
 
-                 modelName={modelItem.model}
 
-               />
 
-               <ModelName
 
-                 className={`
 
-                   grow text-sm font-normal text-gray-900
 
-                   ${modelItem.status !== ModelStatusEnum.active && 'opacity-60'}
 
-                 `}
 
-                 modelItem={modelItem}
 
-                 showMode
 
-                 showFeatures
 
-               />
 
-               {
 
-                 defaultModel?.model === modelItem.model && defaultModel.provider === currentProvider.provider && (
 
-                   <Check className='shrink-0 w-4 h-4 text-primary-600' />
 
-                 )
 
-               }
 
-               {
 
-                 modelItem.status === ModelStatusEnum.noConfigure && (
 
-                   <div
 
-                     className='hidden group-hover:block text-xs font-medium text-primary-600 cursor-pointer'
 
-                     onClick={handleOpenModelModal}
 
-                   >
 
-                     {t('common.operation.add').toLocaleUpperCase()}
 
-                   </div>
 
-                 )
 
-               }
 
-             </div>
 
-           </Tooltip>
 
-         ))
 
-       }
 
-     </div>
 
-   )
 
- }
 
- export default PopupItem
 
 
  |