import { BrowserRouter as Router, Route, Routes, Navigate } from "react-router-dom" import Main from "./pages/Main" import Users from "./pages/Users" import Roles from "./pages/Roles" import NotFound from "./pages/NotFound" import MainLayout from "./layouts/MainLayout" import SignIn from "./pages/auth/SignIn" import ApiTest from "./pages/ApiTest" import SignUp from "./pages/auth/SignUp" import { initAuth, useAuthStore } from "./store/auth" import { useEffect, useState } from "react" import Documents from "./pages/Documents" import Reports from "./pages/Reports" import Boilers from "./pages/Boilers" import Servers from "./pages/Servers" import Settings from "./pages/Settings" import PasswordReset from "./pages/auth/PasswordReset" import MapTest from "./pages/MapTest" import MonitorPage from "./pages/MonitorPage" import DashboardLayout from "./layouts/DashboardLayout" import { IconApi, IconBuildingFactory2, IconComponents, IconDeviceDesktopAnalytics, IconFiles, IconHome, IconLogin, IconLogin2, IconMap, IconPassword, IconReport, IconServer, IconSettings, IconShield, IconTable, IconUsers } from "@tabler/icons-react" import { Box, Loader } from "@mantine/core" import TableTest from "./pages/TableTest" import ComponentTest from "./pages/ComponentTest" // Определение страниц с путями и компонентом для рендера export const pages = [ { label: "", path: "/auth/signin", icon: , component: , drawer: false, dashboard: false, enabled: true, }, { label: "", path: "/auth/signup", icon: , component: , drawer: false, dashboard: false, enabled: false, }, { label: "", path: "/auth/password-reset", icon: , component: , drawer: false, dashboard: false, enabled: true, }, { label: "Настройки", path: "/settings", icon: , component: , drawer: false, dashboard: true, enabled: true, }, { label: "Главная", path: "/", icon: , component:
, drawer: true, dashboard: true, enabled: true, }, { label: "Пользователи", path: "/user", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Роли", path: "/role", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Документы", path: "/documents", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Отчеты", path: "/reports", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Серверы", path: "/servers", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Котельные", path: "/boilers", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "API Test", path: "/api-test", icon: , component: , drawer: true, dashboard: true, enabled: false, }, { label: "ИКС", path: "/map-test", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Монитор", path: "/monitor", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Table test", path: "/table-test", icon: , component: , drawer: true, dashboard: true, enabled: true, }, { label: "Component test", path: "/component-test", icon: , component: , drawer: true, dashboard: true, enabled: true, }, ] function App() { const auth = useAuthStore() const [isLoading, setIsLoading] = useState(true) useEffect(() => { initAuth() }, []) // Once auth is there, set loading to false and render the app useEffect(() => { if (auth) { setIsLoading(false) } }, [auth]) if (isLoading) { return ( ) } else { return ( }> {pages.filter((page) => !page.dashboard).filter((page) => page.enabled).map((page, index) => ( ))} : }> {pages.filter((page) => page.dashboard).filter((page) => page.enabled).map((page, index) => ( ))} } /> ) } } export default App