"use client"; import type React from "react"; import { useState } from "react"; import { User, MessageSquare, Filter, Clock, Plus, MenuSquare, Layers, MoveRight, } from "lucide-react"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { cn } from "@/lib/utils"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { useDnD } from "@/contexts/DnDContext"; export function NodePanel() { const [activeTab, setActiveTab] = useState("content"); const { setType } = useDnD(); const nodeTypes = { content: [ { id: "agent-node", name: "Agent", icon: User, color: "text-blue-400", bgColor: "bg-blue-950/40", borderColor: "border-blue-500/30", hoverColor: "group-hover:bg-blue-900/50", glowColor: "group-hover:shadow-blue-500/20", description: "Add an AI agent to process messages and execute tasks", }, { id: "message-node", name: "Message", icon: MessageSquare, color: "text-orange-400", bgColor: "bg-orange-950/40", borderColor: "border-orange-500/30", hoverColor: "group-hover:bg-orange-900/50", glowColor: "group-hover:shadow-orange-500/20", description: "Send a message to users or other nodes in the workflow", }, ], logic: [ { id: "condition-node", name: "Condition", icon: Filter, color: "text-purple-400", bgColor: "bg-purple-950/40", borderColor: "border-purple-500/30", hoverColor: "group-hover:bg-purple-900/50", glowColor: "group-hover:shadow-purple-500/20", description: "Create a decision point with multiple outcomes based on conditions", }, { id: "delay-node", name: "Delay", icon: Clock, color: "text-yellow-400", bgColor: "bg-yellow-950/40", borderColor: "border-yellow-500/30", hoverColor: "group-hover:bg-yellow-900/50", glowColor: "group-hover:shadow-yellow-500/20", description: "Add a time delay between workflow operations", }, ], }; const onDragStart = (event: React.DragEvent, nodeType: string) => { event.dataTransfer.setData("application/reactflow", nodeType); event.dataTransfer.effectAllowed = "move"; setType(nodeType); }; const handleNodeAdd = (nodeType: string) => { setType(nodeType); }; return (
Drag nodes to the canvas or click to add
{node.name} Node
{node.description}
{node.name} Node
{node.description}