Files
resolutionflow/frontend/src/router.tsx
Michael Chihlas 4cee013733 Implement Tree Editor with visual preview and documentation updates
Tree Editor Features:
- Zustand store with immer middleware and zundo for undo/redo
- Form-based node editing (Decision, Action, Solution types)
- Visual tree preview with solution connection indicators
- NodePicker with type-grouped dropdown (Decisions/Actions/Solutions)
- SharedLinksMap for detecting nodes with multiple sources
- Modal component with scrollable body, fixed header/footer

New Components:
- TreeEditorLayout, TreeMetadataForm, NodeList, NodeEditorModal
- NodeFormDecision, NodeFormAction, NodeFormResolution
- DynamicArrayField, NodePicker
- TreePreviewPanel, TreePreviewNode

Documentation:
- Updated README.md status to Phase 2
- Added Tree Editor details to CURRENT-STATE.md
- Added modal/Zustand lessons to LESSONS-LEARNED.md
- Updated file structure in CLAUDE-SETUP.md
- Added Tree Editor progress to PROGRESS.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 03:00:00 -05:00

67 lines
1.3 KiB
TypeScript

import { createBrowserRouter, Navigate } from 'react-router-dom'
import { AppLayout, ProtectedRoute } from '@/components/layout'
import { RouteError } from '@/components/common/RouteError'
import {
LoginPage,
RegisterPage,
TreeLibraryPage,
TreeNavigationPage,
TreeEditorPage,
SessionHistoryPage,
SessionDetailPage,
} from '@/pages'
export const router = createBrowserRouter([
{
path: '/login',
element: <LoginPage />,
errorElement: <RouteError />,
},
{
path: '/register',
element: <RegisterPage />,
errorElement: <RouteError />,
},
{
path: '/',
element: (
<ProtectedRoute>
<AppLayout />
</ProtectedRoute>
),
errorElement: <RouteError />,
children: [
{
index: true,
element: <Navigate to="/trees" replace />,
},
{
path: 'trees',
element: <TreeLibraryPage />,
},
{
path: 'trees/new',
element: <TreeEditorPage />,
},
{
path: 'trees/:id/edit',
element: <TreeEditorPage />,
},
{
path: 'trees/:id/navigate',
element: <TreeNavigationPage />,
},
{
path: 'sessions',
element: <SessionHistoryPage />,
},
{
path: 'sessions/:id',
element: <SessionDetailPage />,
},
],
},
])
export default router