| 'use client' | |
| import type { FC } from 'react' | |
| import React, { useCallback } from 'react' | |
| import { useTranslation } from 'react-i18next' | |
| import CheckboxWithLabel from '../base/checkbox-with-label' | |
| import Field from '../base/field' | |
| import cn from '@/utils/classnames' | |
| import type { CrawlOptions } from '@/models/datasets' | |
| const I18N_PREFIX = 'datasetCreation.stepOne.website' | |
| type Props = { | |
| className?: string | |
| payload: CrawlOptions | |
| onChange: (payload: CrawlOptions) => void | |
| } | |
| const Options: FC<Props> = ({ | |
| className = '', | |
| payload, | |
| onChange, | |
| }) => { | |
| const { t } = useTranslation() | |
| const handleChange = useCallback((key: keyof CrawlOptions) => { | |
| return (value: any) => { | |
| onChange({ | |
| ...payload, | |
| [key]: value, | |
| }) | |
| } | |
| }, [payload, onChange]) | |
| return ( | |
| <div className={cn(className, ' space-y-2')}> | |
| <CheckboxWithLabel | |
| label={t(`${I18N_PREFIX}.crawlSubPage`)} | |
| isChecked={payload.crawl_sub_pages} | |
| onChange={handleChange('crawl_sub_pages')} | |
| /> | |
| <CheckboxWithLabel | |
| label={t(`${I18N_PREFIX}.useSitemap`)} | |
| isChecked={payload.use_sitemap} | |
| onChange={handleChange('use_sitemap')} | |
| tooltip={t(`${I18N_PREFIX}.useSitemapTooltip`) as string} | |
| /> | |
| <div className='flex justify-between space-x-4'> | |
| <Field | |
| className='grow shrink-0' | |
| label={t(`${I18N_PREFIX}.limit`)} | |
| value={payload.limit} | |
| onChange={handleChange('limit')} | |
| isNumber | |
| isRequired | |
| /> | |
| </div> | |
| </div> | |
| ) | |
| } | |
| export default React.memo(Options) | |