feature-icon.tsx 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import type { FC } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import ModelBadge from '../model-badge'
  4. import {
  5. ModelFeatureEnum,
  6. ModelFeatureTextEnum,
  7. } from '../declarations'
  8. import {
  9. AudioSupportIcon,
  10. DocumentSupportIcon,
  11. // MagicBox,
  12. MagicEyes,
  13. // MagicWand,
  14. // Robot,
  15. VideoSupportIcon,
  16. } from '@/app/components/base/icons/src/vender/solid/mediaAndDevices'
  17. import Tooltip from '@/app/components/base/tooltip'
  18. type FeatureIconProps = {
  19. feature: ModelFeatureEnum
  20. className?: string
  21. }
  22. const FeatureIcon: FC<FeatureIconProps> = ({
  23. className,
  24. feature,
  25. }) => {
  26. const { t } = useTranslation()
  27. // if (feature === ModelFeatureEnum.agentThought) {
  28. // return (
  29. // <Tooltip
  30. // popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.agentThought })}
  31. // >
  32. // <ModelBadge className={`mr-0.5 !px-0 w-[18px] justify-center text-gray-500 ${className}`}>
  33. // <Robot className='w-3 h-3' />
  34. // </ModelBadge>
  35. // </Tooltip>
  36. // )
  37. // }
  38. // if (feature === ModelFeatureEnum.toolCall) {
  39. // return (
  40. // <Tooltip
  41. // popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.toolCall })}
  42. // >
  43. // <ModelBadge className={`mr-0.5 !px-0 w-[18px] justify-center text-gray-500 ${className}`}>
  44. // <MagicWand className='w-3 h-3' />
  45. // </ModelBadge>
  46. // </Tooltip>
  47. // )
  48. // }
  49. // if (feature === ModelFeatureEnum.multiToolCall) {
  50. // return (
  51. // <Tooltip
  52. // popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.multiToolCall })}
  53. // >
  54. // <ModelBadge className={`mr-0.5 !px-0 w-[18px] justify-center text-gray-500 ${className}`}>
  55. // <MagicBox className='w-3 h-3' />
  56. // </ModelBadge>
  57. // </Tooltip>
  58. // )
  59. // }
  60. if (feature === ModelFeatureEnum.vision) {
  61. return (
  62. <Tooltip
  63. popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.vision })}
  64. >
  65. <div className='inline-block cursor-help'>
  66. <ModelBadge className={`!px-0 w-[18px] justify-center text-text-tertiary ${className}`}>
  67. <MagicEyes className='w-3 h-3' />
  68. </ModelBadge>
  69. </div>
  70. </Tooltip>
  71. )
  72. }
  73. if (feature === ModelFeatureEnum.document) {
  74. return (
  75. <Tooltip
  76. popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.document })}
  77. >
  78. <div className='inline-block cursor-help'>
  79. <ModelBadge className={`!px-0 w-[18px] justify-center text-text-tertiary ${className}`}>
  80. <DocumentSupportIcon className='w-3 h-3' />
  81. </ModelBadge>
  82. </div>
  83. </Tooltip>
  84. )
  85. }
  86. if (feature === ModelFeatureEnum.audio) {
  87. return (
  88. <Tooltip
  89. popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.audio })}
  90. >
  91. <div className='inline-block cursor-help'>
  92. <ModelBadge className={`!px-0 w-[18px] justify-center text-text-tertiary ${className}`}>
  93. <AudioSupportIcon className='w-3 h-3' />
  94. </ModelBadge>
  95. </div>
  96. </Tooltip>
  97. )
  98. }
  99. if (feature === ModelFeatureEnum.video) {
  100. return (
  101. <Tooltip
  102. popupContent={t('common.modelProvider.featureSupported', { feature: ModelFeatureTextEnum.video })}
  103. >
  104. <div className='inline-block cursor-help'>
  105. <ModelBadge className={`!px-0 w-[18px] justify-center text-text-tertiary ${className}`}>
  106. <VideoSupportIcon className='w-3 h-3' />
  107. </ModelBadge>
  108. </div>
  109. </Tooltip>
  110. )
  111. }
  112. return null
  113. }
  114. export default FeatureIcon