model-icon.tsx 975 B

1234567891011121314151617181920212223242526272829303132
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React from 'react'
  4. import cn from 'classnames'
  5. import {
  6. OpenaiGreen,
  7. OpenaiViolet,
  8. } from '@/app/components/base/icons/src/public/llm'
  9. import { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations'
  10. import ProviderConfig from '@/app/components/header/account-setting/model-page/configs'
  11. export type IModelIconProps = {
  12. modelId: string
  13. providerName: ProviderEnum
  14. className?: string
  15. }
  16. const ModelIcon: FC<IModelIconProps> = ({ modelId, providerName, className }) => {
  17. let Icon = <OpenaiGreen className='w-full h-full' />
  18. if (providerName === ProviderEnum.openai)
  19. Icon = modelId.includes('gpt-4') ? <OpenaiViolet className='w-full h-full' /> : <OpenaiGreen className='w-full h-full' />
  20. else
  21. Icon = ProviderConfig[providerName]?.selector.icon
  22. return (
  23. <div className={cn(className, 'w-4 h-4')}>
  24. {Icon}
  25. </div>
  26. )
  27. }
  28. export default React.memo(ModelIcon)