import React, {useState, useEffect} from 'react'; import {createBrowserRouter, Outlet, RouterProvider} from 'react-router-dom'; import '@fontsource/inter/300.css'; import '@fontsource/inter/400.css'; import '@fontsource/inter/500.css'; import '@fontsource/inter/600.css'; import '@fontsource/inter/700.css'; import "@/common/styles/default.sass"; import "@/common/styles/spinner.sass"; import HeaderComponent from "./common/components/Header"; import {SpeedtestProvider} from "./common/contexts/Speedtests"; import {ConfigProvider} from "./common/contexts/Config"; import {StatusProvider} from "./common/contexts/Status"; import {AlertProvider} from "@/common/contexts/Alert"; import {ThemeProvider} from "@/common/contexts/Theme"; import {PreferencesProvider} from "@/common/contexts/Preferences"; import i18n from './i18n'; import Loading from "@/pages/Loading"; import Error from "@/pages/Error"; import RouteError from "@/pages/RouteError"; import {ToastNotificationProvider} from "@/common/contexts/ToastNotification"; import {NodeProvider} from "@/common/contexts/Node"; import {library} from '@fortawesome/fontawesome-svg-core'; import {faBell, faBellConcierge, faDatabase, faGlobe, faHeartPulse} from '@fortawesome/free-solid-svg-icons'; import {faDiscord, faTelegram} from "@fortawesome/free-brands-svg-icons"; import {PushOverIcon} from "@/common/assets/icons/pushover"; import Nodes from "@/pages/Nodes"; import Statistics from "@/pages/Statistics"; import Home from "@/pages/Home"; library.add(faBell, faBellConcierge, faDatabase, faGlobe, faHeartPulse, faDiscord, faTelegram); library.add(PushOverIcon); const Providers = ({children}) => ( {children} ); const App = () => { const [translationsLoaded, setTranslationsLoaded] = useState(false); const [translationError, setTranslationError] = useState(false); useEffect(() => { i18n.on("initialized", () => setTranslationsLoaded(true)); i18n.on("failedLoading", () => setTranslationError(true)); }, []); const router = createBrowserRouter([ { path: "/", element: (
), errorElement: , children: [ {path: "/", element: }, {path: "/nodes", element: }, {path: "/statistics", element: } ] } ]); if (!translationsLoaded && !translationError) { return ; } if (translationError) { return ; } return ; }; export default App;