import type { FC } from 'react' import { memo } from 'react' import { useAllBuiltInTools, useAllCustomTools, useAllMCPTools, useAllWorkflowTools } from '@/service/use-tools' import type { BlockEnum, NodeDefault, OnSelectBlock, ToolWithProvider, } from '../types' import { TabsEnum } from './types' import Blocks from './blocks' import AllTools from './all-tools' import DataSources from './data-sources' import cn from '@/utils/classnames' export type TabsProps = { activeTab: TabsEnum onActiveTabChange: (activeTab: TabsEnum) => void searchText: string tags: string[] onSelect: OnSelectBlock availableBlocksTypes?: BlockEnum[] blocks: NodeDefault[] dataSources?: ToolWithProvider[] tabs: Array<{ key: TabsEnum name: string }> filterElem: React.ReactNode noBlocks?: boolean noTools?: boolean } const Tabs: FC = ({ activeTab, onActiveTabChange, tags, searchText, onSelect, availableBlocksTypes, blocks, dataSources = [], tabs = [], filterElem, noBlocks, noTools, }) => { const { data: buildInTools } = useAllBuiltInTools() const { data: customTools } = useAllCustomTools() const { data: workflowTools } = useAllWorkflowTools() const { data: mcpTools } = useAllMCPTools() return (
e.stopPropagation()}> { !noBlocks && (
{ tabs.map(tab => (
onActiveTabChange(tab.key)} > {tab.name}
)) }
) } {filterElem} { activeTab === TabsEnum.Blocks && !noBlocks && (
) } { activeTab === TabsEnum.Sources && !!dataSources.length && (
) } { activeTab === TabsEnum.Tools && !noTools && ( ) }
) } export default memo(Tabs)