From a5e77041d0ccfae46dad022ed2773e3f74f9dc5c Mon Sep 17 00:00:00 2001 From: shrimbly Date: Mon, 26 Jan 2026 22:56:04 +1300 Subject: [PATCH] feat(32-01): integrate ChatPanel with toggle button in WorkflowCanvas - Add isChatOpen state for chat visibility - Add chat toggle button positioned above MiniMap - Render ChatPanel conditionally when open - Style toggle button with active/inactive states --- src/components/WorkflowCanvas.tsx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/components/WorkflowCanvas.tsx b/src/components/WorkflowCanvas.tsx index 929bf343..27db712c 100644 --- a/src/components/WorkflowCanvas.tsx +++ b/src/components/WorkflowCanvas.tsx @@ -38,6 +38,7 @@ import { NodeType, NanoBananaNodeData } from "@/types"; import { detectAndSplitGrid } from "@/utils/gridSplitter"; import { logger } from "@/utils/logger"; import { WelcomeModal } from "./quickstart"; +import { ChatPanel } from "./ChatPanel"; const nodeTypes: NodeTypes = { imageInput: ImageInputNode, @@ -184,6 +185,7 @@ export function WorkflowCanvas() { const [dropType, setDropType] = useState<"image" | "workflow" | "node" | null>(null); const [connectionDrop, setConnectionDrop] = useState(null); const [isSplitting, setIsSplitting] = useState(false); + const [isChatOpen, setIsChatOpen] = useState(false); const reactFlowWrapper = useRef(null); // Detect if canvas is empty for showing quickstart @@ -1326,6 +1328,29 @@ export function WorkflowCanvas() { {/* Global image history */} + + {/* Chat toggle button - positioned above minimap */} + + + {/* Chat panel */} + setIsChatOpen(false)} /> ); }