resolution-picker.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React, { useCallback } from 'react'
  4. import { useTranslation } from 'react-i18next'
  5. import OptionCard from '@/app/components/workflow/nodes/_base/components/option-card'
  6. import { Resolution } from '@/types/app'
  7. const i18nPrefix = 'workflow.nodes.llm'
  8. type Props = {
  9. value: Resolution
  10. onChange: (value: Resolution) => void
  11. }
  12. const ResolutionPicker: FC<Props> = ({
  13. value,
  14. onChange,
  15. }) => {
  16. const { t } = useTranslation()
  17. const handleOnChange = useCallback((value: Resolution) => {
  18. return () => {
  19. onChange(value)
  20. }
  21. }, [onChange])
  22. return (
  23. <div className='flex items-center justify-between'>
  24. <div className='mr-2 text-xs font-medium text-gray-500 uppercase'>{t(`${i18nPrefix}.resolution.name`)}</div>
  25. <div className='flex items-center space-x-1'>
  26. <OptionCard
  27. title={t(`${i18nPrefix}.resolution.high`)}
  28. onSelect={handleOnChange(Resolution.high)}
  29. selected={value === Resolution.high}
  30. />
  31. <OptionCard
  32. title={t(`${i18nPrefix}.resolution.low`)}
  33. onSelect={handleOnChange(Resolution.low)}
  34. selected={value === Resolution.low}
  35. />
  36. </div>
  37. </div>
  38. )
  39. }
  40. export default React.memo(ResolutionPicker)