| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 'use client'import type { FC } from 'react'import React from 'react'import { useTranslation } from 'react-i18next'import {  RiDeleteBinLine,} from '@remixicon/react'import Indicator from '../../../indicator'import Operate from '../data-source-notion/operate'import { DataSourceType } from './types'import s from './style.module.css'import cn from '@/utils/classnames'export type ConfigItemType = {  id: string  logo: any  name: string  isActive: boolean  notionConfig?: {    total: number  }}type Props = {  type: DataSourceType  payload: ConfigItemType  onRemove: () => void  notionActions?: {    onChangeAuthorizedPage: () => void  }  readOnly: boolean}const ConfigItem: FC<Props> = ({  type,  payload,  onRemove,  notionActions,  readOnly,}) => {  const { t } = useTranslation()  const isNotion = type === DataSourceType.notion  const isWebsite = type === DataSourceType.website  const onChangeAuthorizedPage = notionActions?.onChangeAuthorizedPage || function () { }  return (    <div className={cn(s['workspace-item'], 'flex items-center mb-1 py-1 pr-1 bg-white rounded-lg')} key={payload.id}>      <payload.logo className='ml-3 mr-1.5' />      <div className='grow py-[7px] leading-[18px] text-[13px] font-medium text-gray-700 truncate' title={payload.name}>{payload.name}</div>      {        payload.isActive          ? <Indicator className='shrink-0 mr-[6px]' />          : <Indicator className='shrink-0 mr-[6px]' color='yellow' />      }      <div className='shrink-0 mr-3 text-xs font-medium uppercase'>        {          payload.isActive            ? t(isNotion ? 'common.dataSource.notion.connected' : 'common.dataSource.website.active')            : t(isNotion ? 'common.dataSource.notion.disconnected' : 'common.dataSource.website.inactive')        }      </div>      <div className='mr-2 w-[1px] h-3 bg-gray-100' />      {isNotion && (        <Operate payload={{          id: payload.id,          total: payload.notionConfig?.total || 0,        }} onAuthAgain={onChangeAuthorizedPage}        />      )}      {        isWebsite && !readOnly && (          <div className='p-2 text-gray-500 cursor-pointer rounded-md hover:bg-black/5' onClick={onRemove} >            <RiDeleteBinLine className='w-4 h-4 ' />          </div>        )      }    </div>  )}export default React.memo(ConfigItem)
 |