From 8015ee523381850908aebb538f0f2c763fb8a37c Mon Sep 17 00:00:00 2001 From: VPS 4 Deploy Agent Date: Mon, 11 May 2026 07:39:23 +0200 Subject: [PATCH] fix(flow-builder): mover componentes para _components para evitar prerender do Next.js --- .../flow-builder/_components/MessageNode.tsx | 59 +++++++++++++++++++ .../flow-builder/_components/TriggerNode.tsx | 46 +++++++++++++++ .../frontend/pages/flow-builder/index.tsx | 4 +- 3 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 clube67/newwhats.local/frontend/pages/flow-builder/_components/MessageNode.tsx create mode 100644 clube67/newwhats.local/frontend/pages/flow-builder/_components/TriggerNode.tsx diff --git a/clube67/newwhats.local/frontend/pages/flow-builder/_components/MessageNode.tsx b/clube67/newwhats.local/frontend/pages/flow-builder/_components/MessageNode.tsx new file mode 100644 index 0000000..cc245c7 --- /dev/null +++ b/clube67/newwhats.local/frontend/pages/flow-builder/_components/MessageNode.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import { Handle, Position } from '@xyflow/react'; +import { MessageSquare, Settings2, Image as ImageIcon } from 'lucide-react'; + +interface MessageNodeProps { + data: { + label: string; + text?: string; + image?: string; + }; + isConnectable: boolean; +} + +export default function MessageNode({ data, isConnectable }: MessageNodeProps) { + return ( +
+ + + + {/* Header */} +
+
+
+ +
+ Envia Mensagem +
+ +
+ + {/* Body */} +
+ {data.image && ( +
+ + Midia +
+ )} +
+ {data.text || "Olá, como posso ajudar? Isso é um nó de mensagem."} +
+
+ + +
+ ); +} diff --git a/clube67/newwhats.local/frontend/pages/flow-builder/_components/TriggerNode.tsx b/clube67/newwhats.local/frontend/pages/flow-builder/_components/TriggerNode.tsx new file mode 100644 index 0000000..21934e5 --- /dev/null +++ b/clube67/newwhats.local/frontend/pages/flow-builder/_components/TriggerNode.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { Handle, Position } from '@xyflow/react'; +import { Zap, Settings2 } from 'lucide-react'; + +interface TriggerNodeProps { + data: { + label: string; + keyword?: string; + }; + isConnectable: boolean; +} + +export default function TriggerNode({ data, isConnectable }: TriggerNodeProps) { + return ( +
+ {/* Header */} +
+
+
+ +
+ Trigger +
+ +
+ + {/* Body */} +
+

On exact match

+
+ {data.keyword || '#welcome'} +
+
+ + {/* Source Handle (Bottom or Right) */} + +
+ ); +} diff --git a/clube67/newwhats.local/frontend/pages/flow-builder/index.tsx b/clube67/newwhats.local/frontend/pages/flow-builder/index.tsx index 5e70f48..0d50f8e 100644 --- a/clube67/newwhats.local/frontend/pages/flow-builder/index.tsx +++ b/clube67/newwhats.local/frontend/pages/flow-builder/index.tsx @@ -18,8 +18,8 @@ import { ArrowLeft, Save, Play, MessageSquare, Zap, Clock, Image as ImageIcon } import Link from 'next/link'; // --- Custom Nodes Types Implementation --- -import MessageNode from './components/MessageNode'; -import TriggerNode from './components/TriggerNode'; +import MessageNode from './_components/MessageNode'; +import TriggerNode from './_components/TriggerNode'; const nodeTypes = { messageNode: MessageNode,