mirror of
https://github.com/johndoe6345789/AutoMetabuilder.git
synced 2026-04-25 06:15:01 +00:00
- Created custom hooks: useWorkflowGraph, useWorkflowPlugins, usePluginSearch, useTabNavigation - Decomposed canvas logic into: useCanvasNodes, useCanvasEdges, useCanvasDragDrop - Built atomic node components: NodeHeader, NodeBody, NodePorts - Created canvas UI components: CanvasInfoPanel, CanvasHintPanel - Split builder into: LoadingState, ErrorState, WorkflowBuilderHeader, WorkflowBuilderTabs, WorkflowBuilderContent - Added React Flow for n8n-style visual canvas with drag-and-drop - All components now under 100 LOC following PROMPT.md guidelines Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
41 lines
1.5 KiB
TypeScript
41 lines
1.5 KiB
TypeScript
"use client";
|
|
|
|
import { Paper } from "@mui/material";
|
|
import { useWorkflowGraph } from "../../hooks/useWorkflowGraph";
|
|
import { useWorkflowPlugins } from "../../hooks/useWorkflowPlugins";
|
|
import { useTabNavigation } from "../../hooks/useTabNavigation";
|
|
import LoadingState from "./LoadingState";
|
|
import ErrorState from "./ErrorState";
|
|
import WorkflowBuilderHeader from "./WorkflowBuilderHeader";
|
|
import WorkflowBuilderTabs from "./WorkflowBuilderTabs";
|
|
import WorkflowBuilderContent from "./WorkflowBuilderContent";
|
|
|
|
type VisualWorkflowBuilderProps = {
|
|
t: (key: string, fallback?: string) => string;
|
|
};
|
|
|
|
export default function VisualWorkflowBuilder({ t }: VisualWorkflowBuilderProps) {
|
|
const { graph, loading: graphLoading, error: graphError } = useWorkflowGraph();
|
|
const { plugins, loading: pluginsLoading, error: pluginsError } = useWorkflowPlugins();
|
|
const { selectedTab, handleTabChange } = useTabNavigation(0);
|
|
|
|
const error = graphError || pluginsError;
|
|
const loading = graphLoading || pluginsLoading;
|
|
|
|
if (error) {
|
|
return <ErrorState message={error} />;
|
|
}
|
|
|
|
if (loading || !graph) {
|
|
return <LoadingState message={t("ui.workflow.canvas.loading", "Loading workflow canvas...")} />;
|
|
}
|
|
|
|
return (
|
|
<Paper sx={{ p: 3, backgroundColor: "var(--color-panel-bg)" }}>
|
|
<WorkflowBuilderHeader t={t} />
|
|
<WorkflowBuilderTabs value={selectedTab} onChange={handleTabChange} t={t} />
|
|
<WorkflowBuilderContent selectedTab={selectedTab} graph={graph} plugins={plugins} t={t} />
|
|
</Paper>
|
|
);
|
|
}
|