'use client'; import React from 'react'; import * as ContextMenu from '@radix-ui/react-context-menu'; import { Node } from '@xyflow/react'; import { useFlowStoreActions } from '@/stores/flow-store'; import { getNodeId } from '@/utils/react-flow'; import { ChevronRight } from 'lucide-react'; interface CanvasContextMenuProps { children: React.ReactNode; position: { x: number; y: number } | null; } export const CanvasContextMenu: React.FC = ({ children, position }) => { const { addNode } = useFlowStoreActions(); const handleAddNode = (nodeType: string, label: string, data?: any) => { if (!position) return; const newNode: Node = { id: getNodeId(nodeType), type: nodeType, position, data: data ?? { name: label, summary: `A new ${label.toLowerCase()}` }, }; addNode(newNode); }; return ( {children} {/* New Service */} handleAddNode('service', 'Service')} > New Service {/* Messages Submenu */} Messages handleAddNode('event', 'Event')} > New Event handleAddNode('command', 'Command')} > New Command handleAddNode('query', 'Query')} > New Query {/* New Comment Thread */} handleAddNode('commentThread', 'Comment Thread', { name: 'New Comment', summary: 'Add your thoughts here...' })} > New Comment ); }; export default CanvasContextMenu;