| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- 'use client'
 
- import { useTranslation } from 'react-i18next'
 
- import { Fragment } from 'react'
 
- import { Menu, Transition } from '@headlessui/react'
 
- import cn from 'classnames'
 
- import NotionIcon from '../../notion-icon'
 
- import s from './index.module.css'
 
- 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>
 
-   )
 
- }
 
 
  |