import { lazy, Suspense } from "react"; import { createBrowserRouter, Navigate } from "react-router-dom"; import { RequireAuth } from "@/features/auth/Login"; import { DEMO_MODE } from "@/features/auth/useAuth"; const Call = lazy(() => import("@/pages/trainee/Call").then((module) => ({ default: module.Call }))); const Instructor = lazy(() => import("@/pages/instructor/Instructor").then((module) => ({ default: module.Instructor }))); const Dds = lazy(() => import("@/pages/dds/Dds").then((module) => ({ default: module.Dds }))); const Admin = lazy(() => import("@/pages/admin/Admin").then((module) => ({ default: module.Admin }))); const Profile = lazy(() => import("@/pages/profile/Profile").then((module) => ({ default: module.Profile }))); const Groups = lazy(() => import("@/pages/groups/Groups").then((module) => ({ default: module.Groups }))); const Wall = lazy(() => import("@/pages/wall/Wall").then((module) => ({ default: module.Wall }))); const Phone = lazy(() => import("@/pages/phone/Phone").then((module) => ({ default: module.Phone }))); const Materials = lazy(() => import("@/pages/materials/Materials").then((module) => ({ default: module.Materials }))); // Четыре интерфейса — одна SPA (docs/arch/FRONTEND.md). // session_id живёт в URL: /instructor?session=..., монитор открывают ссылкой. // Каждый экран за проверкой роли: курсант не открывает пульт даже по прямой // ссылке. Сервер проверяет то же самое на сокетах — здесь только чтобы человек // увидел понятное объяснение вместо пустого экрана (lct-23). const guarded = (screen: string, element: JSX.Element) => (

Загружаем рабочее место…

}> {element}
); export const router = createBrowserRouter([ { path: "/", element: }, { path: "/trainee", element: guarded("/trainee", ) }, { path: "/trainee/completed", element: guarded("/trainee", ) }, { path: "/instructor", element: guarded("/instructor", ) }, { path: "/wall", element: guarded("/wall", ) }, { path: "/profile", element: guarded("/profile", ) }, { path: "/groups", element: guarded("/groups", ) }, { path: "/dds", element: guarded("/dds", ) }, { path: "/phone", element: guarded("/phone", ) }, { path: "/materials", element: guarded("/materials", ) }, { path: "/admin", element: guarded("/admin", ) }, ]);