diff --git a/frontend/src/components/layout/Sidebar.tsx b/frontend/src/components/layout/Sidebar.tsx index 506438a5..b8e2ae82 100644 --- a/frontend/src/components/layout/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar.tsx @@ -5,7 +5,7 @@ import { LayoutGrid, Clock, AlertTriangle, GitBranch, Code2, Wand2, ListChecks, Download, BarChart3, Settings, Pin, PinOff, - History, FileText, + History, FileText, Network, } from 'lucide-react' import { cn } from '@/lib/utils' import { useUserPreferencesStore } from '@/store/userPreferencesStore' @@ -86,10 +86,11 @@ export function Sidebar() { { href: '/trees', icon: GitBranch, label: 'Flows', shortLabel: 'Flows', badge: stats?.tree_counts.total || undefined, - matchPaths: ['/trees', '/flows', '/my-trees', '/step-library', '/review-queue'], + matchPaths: ['/trees', '/flows', '/my-trees', '/step-library', '/review-queue', '/network-diagrams'], children: [ { href: '/trees', label: 'Flow Library', count: stats?.tree_counts.total || undefined }, { href: '/trees?type=procedural', label: 'Projects', count: stats?.tree_counts.procedural || undefined }, + { href: '/network-diagrams', label: 'Network Maps' }, { href: '/step-library', label: 'Solutions Library' }, { href: '/review-queue', label: 'Review Queue' }, ], @@ -134,6 +135,7 @@ export function Sidebar() { { href: '/trees?type=procedural', label: 'Projects', count: stats?.tree_counts.procedural || undefined }, ], }, + { href: '/network-diagrams', icon: Network, label: 'Network Maps', shortLabel: 'NetMap', matchPaths: ['/network-diagrams'] }, { href: '/scripts', icon: Code2, label: 'Scripts', shortLabel: 'Scripts' }, { href: '/script-builder', icon: Wand2, label: 'Script Builder', shortLabel: 'Builder' }, { href: '/review-queue', icon: ListChecks, label: 'Review Queue', shortLabel: 'Review' }, diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index b26ef79f..353dab9f 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -60,6 +60,8 @@ const DevBranchingPage = lazyWithRetry(() => import('@/pages/DevBranchingPage')) const GuidesHubPage = lazyWithRetry(() => import('@/pages/GuidesHubPage')) const GuideDetailPage = lazyWithRetry(() => import('@/pages/GuideDetailPage')) const AccountSettingsPage = lazyWithRetry(() => import('@/pages/AccountSettingsPage')) +const NetworkDiagramsPage = lazyWithRetry(() => import('@/pages/NetworkDiagrams')) +const DiagramEditorPage = lazyWithRetry(() => import('@/pages/NetworkDiagrams/DiagramEditor')) // Admin pages const AdminLayout = lazyWithRetry(() => import('@/components/admin/AdminLayout')) const AdminDashboardPage = lazyWithRetry(() => import('@/pages/admin/DashboardPage')) @@ -195,6 +197,9 @@ export const router = sentryCreateBrowserRouter([ { path: 'scripts', element: page(ScriptLibraryPage) }, { path: 'scripts/manage', element: page(ScriptManagePage) }, { path: 'script-builder', element: page(ScriptBuilderPage) }, + { path: 'network-diagrams', element: page(NetworkDiagramsPage) }, + { path: 'network-diagrams/new', element: page(DiagramEditorPage) }, + { path: 'network-diagrams/:id', element: page(DiagramEditorPage) }, { path: 'kb-accelerator', element: page(KBAcceleratorPage) }, { path: 'assistant', element: page(AssistantChatPage) }, { path: 'assistant/:sessionId', element: page(AssistantChatPage) },