model-trigger.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import type { FC } from 'react'
  2. import { RiArrowDownSLine } from '@remixicon/react'
  3. import type {
  4. Model,
  5. ModelItem,
  6. } from '../declarations'
  7. import {
  8. MODEL_STATUS_TEXT,
  9. ModelStatusEnum,
  10. } from '../declarations'
  11. import { useLanguage } from '../hooks'
  12. import ModelIcon from '../model-icon'
  13. import ModelName from '../model-name'
  14. import { AlertTriangle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback'
  15. import Tooltip from '@/app/components/base/tooltip'
  16. type ModelTriggerProps = {
  17. open: boolean
  18. provider: Model
  19. model: ModelItem
  20. className?: string
  21. readonly?: boolean
  22. }
  23. const ModelTrigger: FC<ModelTriggerProps> = ({
  24. open,
  25. provider,
  26. model,
  27. className,
  28. readonly,
  29. }) => {
  30. const language = useLanguage()
  31. return (
  32. <div
  33. className={`
  34. group flex items-center px-2 h-8 rounded-lg bg-gray-100
  35. ${!readonly && 'hover:bg-gray-200 cursor-pointer'}
  36. ${className}
  37. ${open && '!bg-gray-200'}
  38. ${model.status !== ModelStatusEnum.active && '!bg-[#FFFAEB]'}
  39. `}
  40. >
  41. <ModelIcon
  42. className='shrink-0 mr-1.5'
  43. provider={provider}
  44. modelName={model.model}
  45. />
  46. <ModelName
  47. className='grow'
  48. modelItem={model}
  49. showMode
  50. showFeatures
  51. />
  52. {!readonly && (
  53. <div className='shrink-0 flex items-center justify-center w-4 h-4'>
  54. {
  55. model.status !== ModelStatusEnum.active
  56. ? (
  57. <Tooltip popupContent={MODEL_STATUS_TEXT[model.status][language]}>
  58. <AlertTriangle className='w-4 h-4 text-[#F79009]' />
  59. </Tooltip>
  60. )
  61. : (
  62. <RiArrowDownSLine
  63. className='w-3.5 h-3.5 text-gray-500'
  64. />
  65. )
  66. }
  67. </div>
  68. )}
  69. </div>
  70. )
  71. }
  72. export default ModelTrigger