dify-run
/
web
/app
/components
/header
/account-setting
/model-provider-page
/model-icon
/index.tsx
import type { FC } from 'react' | |
import type { | |
Model, | |
ModelProvider, | |
} from '../declarations' | |
import { useLanguage } from '../hooks' | |
import { CubeOutline } from '@/app/components/base/icons/src/vender/line/shapes' | |
import { OpenaiViolet } from '@/app/components/base/icons/src/public/llm' | |
type ModelIconProps = { | |
provider?: Model | ModelProvider | |
modelName?: string | |
className?: string | |
} | |
const ModelIcon: FC<ModelIconProps> = ({ | |
provider, | |
className, | |
modelName, | |
}) => { | |
const language = useLanguage() | |
if (provider?.provider === 'openai' && (modelName?.startsWith('gpt-4') || modelName?.includes('4o'))) | |
return <OpenaiViolet className={`w-4 h-4 ${className}`}/> | |
if (provider?.icon_small) { | |
return ( | |
<img | |
alt='model-icon' | |
src={`${provider.icon_small[language] || provider.icon_small.en_US}`} | |
className={`w-4 h-4 ${className}`} | |
/> | |
) | |
} | |
return ( | |
<div className={` | |
flex items-center justify-center w-6 h-6 rounded border-[0.5px] border-black/5 bg-gray-50 | |
${className} | |
`}> | |
<CubeOutline className='w-4 h-4 text-gray-400' /> | |
</div> | |
) | |
} | |
export default ModelIcon | |