mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import type { FC } from 'react'
 | |
| import { memo } from 'react'
 | |
| import type { BlockEnum } from '../types'
 | |
| import { useTabs } from './hooks'
 | |
| import type { ToolDefaultValue } from './types'
 | |
| import { TabsEnum } from './types'
 | |
| import Blocks from './blocks'
 | |
| import AllTools from './all-tools'
 | |
| import cn from '@/utils/classnames'
 | |
| 
 | |
| export type TabsProps = {
 | |
|   activeTab: TabsEnum
 | |
|   onActiveTabChange: (activeTab: TabsEnum) => void
 | |
|   searchText: string
 | |
|   onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
 | |
|   availableBlocksTypes?: BlockEnum[]
 | |
|   noBlocks?: boolean
 | |
| }
 | |
| const Tabs: FC<TabsProps> = ({
 | |
|   activeTab,
 | |
|   onActiveTabChange,
 | |
|   searchText,
 | |
|   onSelect,
 | |
|   availableBlocksTypes,
 | |
|   noBlocks,
 | |
| }) => {
 | |
|   const tabs = useTabs()
 | |
| 
 | |
|   return (
 | |
|     <div onClick={e => e.stopPropagation()}>
 | |
|       {
 | |
|         !noBlocks && (
 | |
|           <div className='flex items-center px-3 border-b-[0.5px] border-b-black/5'>
 | |
|             {
 | |
|               tabs.map(tab => (
 | |
|                 <div
 | |
|                   key={tab.key}
 | |
|                   className={cn(
 | |
|                     'relative mr-4 h-[34px] text-[13px] leading-[34px] font-medium cursor-pointer',
 | |
|                     activeTab === tab.key
 | |
|                       ? 'text-gray-700 after:absolute after:bottom-0 after:left-0 after:h-0.5 after:w-full after:bg-primary-600'
 | |
|                       : 'text-gray-500',
 | |
|                   )}
 | |
|                   onClick={() => onActiveTabChange(tab.key)}
 | |
|                 >
 | |
|                   {tab.name}
 | |
|                 </div>
 | |
|               ))
 | |
|             }
 | |
|           </div>
 | |
|         )
 | |
|       }
 | |
|       {
 | |
|         activeTab === TabsEnum.Blocks && !noBlocks && (
 | |
|           <Blocks
 | |
|             searchText={searchText}
 | |
|             onSelect={onSelect}
 | |
|             availableBlocksTypes={availableBlocksTypes}
 | |
|           />
 | |
|         )
 | |
|       }
 | |
|       {
 | |
|         activeTab === TabsEnum.Tools && (
 | |
|           <AllTools
 | |
|             searchText={searchText}
 | |
|             onSelect={onSelect}
 | |
|           />
 | |
|         )
 | |
|       }
 | |
|     </div>
 | |
|   )
 | |
| }
 | |
| 
 | |
| export default memo(Tabs)
 | 
