| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | 
                        - 'use client'
 - import type { FC } from 'react'
 - import React from 'react'
 - import { useTranslation } from 'react-i18next'
 - import { RiAddLine } from '@remixicon/react'
 - import type { ConfigItemType } from './config-item'
 - import ConfigItem from './config-item'
 - 
 - import s from './style.module.css'
 - import { DataSourceType } from './types'
 - import { DataSourceProvider } from '@/models/common'
 - import cn from '@/utils/classnames'
 - 
 - type Props = {
 -   type: DataSourceType
 -   provider: DataSourceProvider
 -   isConfigured: boolean
 -   onConfigure: () => void
 -   readOnly: boolean
 -   isSupportList?: boolean
 -   configuredList: ConfigItemType[]
 -   onRemove: () => void
 -   notionActions?: {
 -     onChangeAuthorizedPage: () => void
 -   }
 - }
 - 
 - const Panel: FC<Props> = ({
 -   type,
 -   provider,
 -   isConfigured,
 -   onConfigure,
 -   readOnly,
 -   configuredList,
 -   isSupportList,
 -   onRemove,
 -   notionActions,
 - }) => {
 -   const { t } = useTranslation()
 -   const isNotion = type === DataSourceType.notion
 -   const isWebsite = type === DataSourceType.website
 - 
 -   return (
 -     <div className='mb-2 bg-background-section-burn rounded-xl'>
 -       <div className='flex items-center px-3 py-[9px]'>
 -         <div className={cn(s[`${type}-icon`], 'w-8 h-8 mr-3 border border-divider-subtle rounded-lg bg-background-default')} />
 -         <div className='grow'>
 -           <div className='flex items-center h-5'>
 -             <div className='text-sm font-medium text-text-primary'>{t(`common.dataSource.${type}.title`)}</div>
 -             {isWebsite && (
 -               <div className='ml-1 leading-[18px] px-1.5 rounded-md bg-white border border-gray-100 text-xs font-medium text-gray-700'>
 -                 <span className='text-gray-500'>{t('common.dataSource.website.with')}</span> { provider === DataSourceProvider.fireCrawl ? '🔥 Firecrawl' : 'Jina Reader'}
 -               </div>
 -             )}
 -           </div>
 -           {
 -             !isConfigured && (
 -               <div className='system-xs-medium text-text-tertiary'>
 -                 {t(`common.dataSource.${type}.description`)}
 -               </div>
 -             )
 -           }
 -         </div>
 -         {isNotion && (
 -           <>
 -             {
 -               isConfigured
 -                 ? (
 -                   <div
 -                     className={
 -                       `flex items-center ml-3 px-3 h-7 bg-white border border-gray-200
 -                   rounded-md text-xs font-medium text-gray-700
 -                   ${!readOnly ? 'cursor-pointer' : 'grayscale opacity-50 cursor-default'}`
 -                     }
 -                     onClick={onConfigure}
 -                   >
 -                     {t('common.dataSource.configure')}
 -                   </div>
 -                 )
 -                 : (
 -                   <>
 -                     {isSupportList && <div
 -                       className={
 -                         `flex items-center px-3 py-1 min-h-7 bg-components-button-secondary-bg border-[0.5px] border-components-button-secondary-border system-sm-medium text-components-button-secondary-accent-text rounded-md
 -                   ${!readOnly ? 'cursor-pointer' : 'grayscale opacity-50 cursor-default'}`
 -                       }
 -                       onClick={onConfigure}
 -                     >
 -                       <RiAddLine className='w-4 h-4 text-components-button-secondary-accent-text mr-[5px]' />
 -                       {t('common.dataSource.connect')}
 -                     </div>}
 -                   </>
 -                 )
 -             }
 -           </>
 -         )}
 - 
 -         {isWebsite && !isConfigured && (
 -           <div
 -             className={
 -               `flex items-center ml-3 px-3 h-7 bg-components-button-secondary-bg border-[0.5px] border-components-button-secondary-border
 -               rounded-md text-xs font-medium text-components-button-secondary-accent-text
 -               ${!readOnly ? 'cursor-pointer' : 'grayscale opacity-50 cursor-default'}`
 -             }
 -             onClick={!readOnly ? onConfigure : undefined}
 -           >
 -             {t('common.dataSource.configure')}
 -           </div>
 -         )}
 - 
 -       </div>
 -       {
 -         isConfigured && (
 -           <>
 -             <div className='flex items-center px-3 h-[18px]'>
 -               <div className='system-xs-medium text-text-tertiary'>
 -                 {isNotion ? t('common.dataSource.notion.connectedWorkspace') : t('common.dataSource.website.configuredCrawlers')}
 -               </div>
 -               <div className='grow ml-3 border-t border-t-divider-subtle' />
 -             </div>
 -             <div className='px-3 pt-2 pb-3'>
 -               {
 -                 configuredList.map(item => (
 -                   <ConfigItem
 -                     key={item.id}
 -                     type={type}
 -                     payload={item}
 -                     onRemove={onRemove}
 -                     notionActions={notionActions}
 -                     readOnly={readOnly}
 -                   />
 -                 ))
 -               }
 -             </div>
 -           </>
 -         )
 -       }
 -     </div>
 -   )
 - }
 - export default React.memo(Panel)
 
 
  |