feat: 添加左侧面板和节点库组件,整合模板和节点功能

feat: 实现可折叠的模板面板,支持搜索和安装模板
feat: 更新流程工具栏,增加导入模板和模拟运行功能
feat: 增强属性面板,支持标签和产物管理
feat: 优化提示模板节点,增加执行状态和阶段显示
This commit is contained in:
catlog22
2026-02-06 11:56:48 +08:00
parent c8f9bc7994
commit 248daa1d00
9 changed files with 929 additions and 106 deletions

View File

@@ -1,12 +1,11 @@
// ========================================
// Flow Toolbar Component
// ========================================
// Toolbar for flow operations: New, Save, Load, Export
// Toolbar for flow operations: Save, Load, Import Template, Export, Simulate, Run
import { useState, useCallback, useEffect } from 'react';
import { useIntl } from 'react-intl';
import {
Plus,
Save,
FolderOpen,
Download,
@@ -16,6 +15,8 @@ import {
Loader2,
ChevronDown,
Library,
Play,
FlaskConical,
} from 'lucide-react';
import { cn } from '@/lib/utils';
import { Button } from '@/components/ui/Button';
@@ -39,7 +40,6 @@ export function FlowToolbar({ className, onOpenTemplateLibrary }: FlowToolbarPro
const isModified = useFlowStore((state) => state.isModified);
const flows = useFlowStore((state) => state.flows);
const isLoadingFlows = useFlowStore((state) => state.isLoadingFlows);
const createFlow = useFlowStore((state) => state.createFlow);
const saveFlow = useFlowStore((state) => state.saveFlow);
const loadFlow = useFlowStore((state) => state.loadFlow);
const deleteFlow = useFlowStore((state) => state.deleteFlow);
@@ -56,13 +56,6 @@ export function FlowToolbar({ className, onOpenTemplateLibrary }: FlowToolbarPro
setFlowName(currentFlow?.name || '');
}, [currentFlow?.name]);
// Handle new flow
const handleNew = useCallback(() => {
const newFlow = createFlow('Untitled Flow', 'A new workflow');
setFlowName(newFlow.name);
toast.success('Flow Created', 'New flow created successfully');
}, [createFlow]);
// Handle save
const handleSave = useCallback(async () => {
if (!currentFlow) {
@@ -186,11 +179,7 @@ export function FlowToolbar({ className, onOpenTemplateLibrary }: FlowToolbarPro
{/* Action Buttons */}
<div className="flex items-center gap-2">
<Button variant="outline" size="sm" onClick={handleNew}>
<Plus className="w-4 h-4 mr-1" />
New
</Button>
{/* Save & Load Group */}
<Button
variant="outline"
size="sm"
@@ -290,17 +279,31 @@ export function FlowToolbar({ className, onOpenTemplateLibrary }: FlowToolbarPro
)}
</div>
<Button variant="outline" size="sm" onClick={handleExport} disabled={!currentFlow}>
<Download className="w-4 h-4 mr-1" />
Export
</Button>
<div className="w-px h-6 bg-border" />
{/* Import & Export Group */}
<Button variant="outline" size="sm" onClick={onOpenTemplateLibrary}>
<Library className="w-4 h-4 mr-1" />
Templates
Import Template
</Button>
<Button variant="outline" size="sm" onClick={handleExport} disabled={!currentFlow}>
<Download className="w-4 h-4 mr-1" />
Export Flow
</Button>
<div className="w-px h-6 bg-border" />
{/* Run Group */}
<Button variant="outline" size="sm" disabled title="Coming soon">
<FlaskConical className="w-4 h-4 mr-1" />
Simulate
</Button>
<Button variant="default" size="sm" disabled title="Coming soon">
<Play className="w-4 h-4 mr-1" />
Run Workflow
</Button>
</div>
</div>
);