| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 'use client'import { useTranslation } from 'react-i18next'import { Fragment } from 'react'import { Menu, Transition } from '@headlessui/react'import NotionIcon from '../../notion-icon'import s from './index.module.css'import cn from '@/utils/classnames'import type { DataSourceNotionWorkspace } from '@/models/common'type WorkspaceSelectorProps = {  value: string  items: Omit<DataSourceNotionWorkspace, 'total'>[]  onSelect: (v: string) => void}export default function WorkspaceSelector({  value,  items,  onSelect,}: WorkspaceSelectorProps) {  const { t } = useTranslation()  const currentWorkspace = items.find(item => item.workspace_id === value)  return (    <Menu as="div" className="relative inline-block text-left">      {        ({ open }) => (          <>            <Menu.Button className={`flex items-center justify-center h-7 rounded-md hover:bg-gray-50 ${open && 'bg-gray-50'} cursor-pointer`}>              <NotionIcon                className='ml-1 mr-2'                src={currentWorkspace?.workspace_icon}                name={currentWorkspace?.workspace_name}              />              <div className='mr-1 w-[90px] text-left text-sm font-medium text-gray-700 truncate' title={currentWorkspace?.workspace_name}>{currentWorkspace?.workspace_name}</div>              <div className='mr-1 px-1 h-[18px] bg-primary-50 rounded-lg text-xs font-medium text-primary-600'>{currentWorkspace?.pages.length}</div>              <div className={cn(s['down-arrow'], 'mr-2 w-3 h-3')} />            </Menu.Button>            <Transition              as={Fragment}              enter="transition ease-out duration-100"              enterFrom="transform opacity-0 scale-95"              enterTo="transform opacity-100 scale-100"              leave="transition ease-in duration-75"              leaveFrom="transform opacity-100 scale-100"              leaveTo="transform opacity-0 scale-95"            >              <Menu.Items                className={cn(                  s.popup,                  `absolute left-0 top-8 w-80                  origin-top-right rounded-lg bg-white                  border-[0.5px] border-gray-200`,                )}              >                <div className="p-1 max-h-50 overflow-auto">                  {                    items.map(item => (                      <Menu.Item key={item.workspace_id}>                        <div                          className='flex items-center px-3 h-9 hover:bg-gray-50 cursor-pointer'                          onClick={() => onSelect(item.workspace_id)}                        >                          <NotionIcon                            className='shrink-0 mr-2'                            src={item.workspace_icon}                            name={item.workspace_name}                          />                          <div className='grow mr-2 text-sm text-gray-700 truncate' title={item.workspace_name}>{item.workspace_name}</div>                          <div className='shrink-0 text-xs font-medium text-primary-600'>                            {item.pages.length} {t('common.dataSource.notion.selector.pageSelected')}                          </div>                        </div>                      </Menu.Item>                    ))                  }                </div>              </Menu.Items>            </Transition>          </>        )      }    </Menu>  )}
 |