You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

conversion.tsx 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import React, { useCallback, useState } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import Button from '../base/button'
  4. import PipelineScreenShot from './screenshot'
  5. import Confirm from '../base/confirm'
  6. const Conversion = () => {
  7. const { t } = useTranslation()
  8. const [showConfirmModal, setShowConfirmModal] = useState(false)
  9. const handleConvert = useCallback(() => {
  10. setShowConfirmModal(false)
  11. // todo: Add conversion logic here
  12. }, [])
  13. const handleShowConfirmModal = useCallback(() => {
  14. setShowConfirmModal(true)
  15. }, [])
  16. const handleCancelConversion = useCallback(() => {
  17. setShowConfirmModal(false)
  18. }, [])
  19. return (
  20. <div className='flex h-full w-full items-center justify-center bg-background-body p-6 pb-16'>
  21. <div className='flex rounded-2xl border-[0.5px] border-components-card-border bg-components-card-bg shadow-sm shadow-shadow-shadow-4'>
  22. <div className='flex max-w-[480px] flex-col justify-between p-10'>
  23. <div className='flex flex-col gap-y-2.5'>
  24. <div className='title-4xl-semi-bold text-text-primary'>
  25. {t('datasetPipeline.conversion.title')}
  26. </div>
  27. <div className='body-md-medium'>
  28. <span className='text-text-secondary'>{t('datasetPipeline.conversion.descriptionChunk1')}</span>
  29. <span className='text-text-tertiary'>{t('datasetPipeline.conversion.descriptionChunk2')}</span>
  30. </div>
  31. </div>
  32. <div className='flex items-center gap-x-4'>
  33. <Button
  34. variant='primary'
  35. className='w-32'
  36. onClick={handleShowConfirmModal}
  37. >
  38. {t('datasetPipeline.operations.convert')}
  39. </Button>
  40. <span className='system-xs-regular text-text-warning'>
  41. {t('datasetPipeline.conversion.warning')}
  42. </span>
  43. </div>
  44. </div>
  45. <div className='pb-8 pl-[25px] pr-0 pt-6'>
  46. <div className='rounded-l-xl border border-effects-highlight bg-background-default p-1 shadow-md shadow-shadow-shadow-5 backdrop-blur-[5px]'>
  47. <div className='overflow-hidden rounded-l-lg'>
  48. <PipelineScreenShot />
  49. </div>
  50. </div>
  51. </div>
  52. </div>
  53. {showConfirmModal && (
  54. <Confirm
  55. title={t('datasetPipeline.conversion.confirm.title')}
  56. content={t('datasetPipeline.conversion.confirm.content')}
  57. isShow={showConfirmModal}
  58. onConfirm={handleConvert}
  59. onCancel={handleCancelConversion}
  60. />
  61. )}
  62. </div>
  63. )
  64. }
  65. export default React.memo(Conversion)