| 'use client' | |
| import type { FC } from 'react' | |
| import React from 'react' | |
| import { useTranslation } from 'react-i18next' | |
| import s from './index.module.css' | |
| import { Icon3Dots } from '@/app/components/base/icons/src/vender/line/others' | |
| import Button from '@/app/components/base/button' | |
| import { DataSourceProvider } from '@/models/common' | |
| const I18N_PREFIX = 'datasetCreation.stepOne.website' | |
| type Props = { | |
| onConfig: () => void | |
| provider: DataSourceProvider | |
| } | |
| const NoData: FC<Props> = ({ | |
| onConfig, | |
| provider, | |
| }) => { | |
| const { t } = useTranslation() | |
| const providerConfig = { | |
| [DataSourceProvider.jinaReader]: { | |
| emoji: <span className={s.jinaLogo} />, | |
| title: t(`${I18N_PREFIX}.jinaReaderNotConfigured`), | |
| description: t(`${I18N_PREFIX}.jinaReaderNotConfiguredDescription`), | |
| }, | |
| [DataSourceProvider.fireCrawl]: { | |
| emoji: '🔥', | |
| title: t(`${I18N_PREFIX}.fireCrawlNotConfigured`), | |
| description: t(`${I18N_PREFIX}.fireCrawlNotConfiguredDescription`), | |
| }, | |
| } | |
| const currentProvider = providerConfig[provider] | |
| return ( | |
| <> | |
| <div className='max-w-[640px] p-6 rounded-2xl bg-gray-50 mt-4'> | |
| <div className='flex w-11 h-11 items-center justify-center bg-gray-50 rounded-xl border-[0.5px] border-gray-100 shadow-lg'> | |
| {currentProvider.emoji} | |
| </div> | |
| <div className='my-2'> | |
| <span className='text-gray-700 font-semibold'>{currentProvider.title}<Icon3Dots className='inline relative -top-3 -left-1.5' /></span> | |
| <div className='mt-1 pb-3 text-gray-500 text-[13px] font-normal'> | |
| {currentProvider.description} | |
| </div> | |
| </div> | |
| <Button variant='primary' onClick={onConfig}> | |
| {t(`${I18N_PREFIX}.configure`)} | |
| </Button> | |
| </div> | |
| </> | |
| ) | |
| } | |
| export default React.memo(NoData) | |