import { useState } from 'react' import { useTranslation } from 'react-i18next' import cn from 'classnames' import { XMarkIcon } from '@heroicons/react/24/outline' import NotionPageSelector from '../base' import type { NotionPageSelectorValue } from '../base' import s from './index.module.css' import Modal from '@/app/components/base/modal' type NotionPageSelectorModalProps = { isShow: boolean onClose: () => void onSave: (selectedPages: NotionPageSelectorValue[]) => void datasetId: string } const NotionPageSelectorModal = ({ isShow, onClose, onSave, datasetId, }: NotionPageSelectorModalProps) => { const { t } = useTranslation() const [selectedPages, setSelectedPages] = useState<NotionPageSelectorValue[]>([]) const handleClose = () => { onClose() } const handleSelectPage = (newSelectedPages: NotionPageSelectorValue[]) => { setSelectedPages(newSelectedPages) } const handleSave = () => { onSave(selectedPages) } return ( <Modal className={s.modal} isShow={isShow} onClose={() => {}} > <div className='flex items-center justify-between mb-6 h-8'> <div className='text-xl font-semibold text-gray-900'>{t('common.dataSource.notion.selector.addPages')}</div> <div className='flex items-center justify-center -mr-2 w-8 h-8 cursor-pointer' onClick={handleClose}> <XMarkIcon className='w-4 h-4' /> </div> </div> <NotionPageSelector onSelect={handleSelectPage} canPreview={false} datasetId={datasetId} /> <div className='mt-8 flex justify-end'> <div className={s.operate} onClick={handleClose}>{t('common.operation.cancel')}</div> <div className={cn(s.operate, s['operate-save'])} onClick={handleSave}>{t('common.operation.save')}</div> </div> </Modal> ) } export default NotionPageSelectorModal