| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 'use client'import type { FC } from 'react'import React, { useEffect, useState } from 'react'import { useTranslation } from 'react-i18next'import { RiCloseLine } from '@remixicon/react'import CSVUploader from './csv-uploader'import CSVDownloader from './csv-downloader'import Button from '@/app/components/base/button'import Modal from '@/app/components/base/modal'import type { DocForm } from '@/models/datasets'export type IBatchModalProps = {  isShow: boolean  docForm: DocForm  onCancel: () => void  onConfirm: (file: File) => void}const BatchModal: FC<IBatchModalProps> = ({  isShow,  docForm,  onCancel,  onConfirm,}) => {  const { t } = useTranslation()  const [currentCSV, setCurrentCSV] = useState<File>()  const handleFile = (file?: File) => setCurrentCSV(file)  const handleSend = () => {    if (!currentCSV)      return    onCancel()    onConfirm(currentCSV)  }  useEffect(() => {    if (!isShow)      setCurrentCSV(undefined)  }, [isShow])  return (    <Modal isShow={isShow} onClose={() => { }} className='px-8 py-6 !max-w-[520px] !rounded-xl'>      <div className='relative pb-1 text-xl font-medium leading-[30px] text-gray-900'>{t('datasetDocuments.list.batchModal.title')}</div>      <div className='absolute right-4 top-4 p-2 cursor-pointer' onClick={onCancel}>        <RiCloseLine className='w-4 h-4 text-gray-500' />      </div>      <CSVUploader        file={currentCSV}        updateFile={handleFile}      />      <CSVDownloader        docForm={docForm}      />      <div className='mt-[28px] pt-6 flex justify-end'>        <Button className='mr-2' onClick={onCancel}>          {t('datasetDocuments.list.batchModal.cancel')}        </Button>        <Button variant="primary" onClick={handleSend} disabled={!currentCSV}>          {t('datasetDocuments.list.batchModal.run')}        </Button>      </div>    </Modal>  )}export default React.memo(BatchModal)
 |