import React, { Suspense } from 'react' import { Navigate, Outlet, Routes, Route } from 'react-router-dom' import { LoginPage } from '@/features/auth/pages/LoginPage' import { RegisterPage } from '@/features/auth/pages/RegisterPage' import { ProtectedRoute } from '@/features/auth/components/ProtectedRoute' import { DashboardPage } from '@/features/dashboard/pages/DashboardPage' import { SimulationPage } from '@/features/simulations/pages/SimulationPage' import { SujetsPage } from '@/features/simulations/pages/SujetsPage' import { RapportPage } from '@/features/simulations/pages/RapportPage' import { SimulationFlowProvider } from '@/features/simulations/state/SimulationFlowProvider' import { AppLayout } from './AppLayout' const DesignSystemPage = import.meta.env.DEV ? React.lazy(() => import('@/features/design-system/DesignSystemPage')) : () => null function ComingSoon() { return (

Page en cours de développement

Disponible dans une prochaine version.

) } function PrivateLayout() { return ( ) } function SimulationFlowLayout() { return ( ) } export function AppRouter() { return ( {/* ── Routes publiques ─────────────────────────────────────── */} } /> } /> {/* ── Routes privées — ProtectedRoute + AppLayout ──────────── */} }> } /> } /> {/* Simulation — /simulation/ee, /sujets et /rapport/:id partagent le SimulationFlowProvider. L'instance est préservée entre ces routes par React Router tant que le layout parent reste monté, ce qui permet à RapportPage.reset() d'agir sur le même state que SimulationPage (bouton « Nouvelle simulation » + breadcrumb). */} } /> }> } /> } /> } /> } /> {/* Autres sections — Sprint 4+ */} } /> } /> } /> } /> } /> } /> {/* ── Dev only ─────────────────────────────────────────────── */} {import.meta.env.DEV && ( Loading…}> } /> )} ) }