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>
67 lines
1.3 KiB
TypeScript
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
|