import { Box, darkTheme, FaencyProvider, lightTheme } from '@traefiklabs/faency' import { Suspense, useEffect } from 'react' import { Helmet, HelmetProvider } from 'react-helmet-async' import { HashRouter, Navigate, Route, Routes as RouterRoutes, useLocation } from 'react-router-dom' import { SWRConfig } from 'swr' import Page from './layout/Page' import fetch from './libs/fetch' import { useIsDarkMode } from 'hooks/use-theme' import useVersion from 'hooks/use-version' import ErrorSuspenseWrapper from 'layout/ErrorSuspenseWrapper' import { Dashboard, HTTPPages, NotFound, TCPPages, UDPPages } from 'pages' import { DashboardSkeleton } from 'pages/dashboard/Dashboard' export const LIGHT_THEME = lightTheme('blue') export const DARK_THEME = darkTheme('blue') // TODO: Restore the loader. const PageLoader = () => ( {/**/} ) const ScrollToTop = () => { const { pathname } = useLocation() useEffect(() => { window.scrollTo(0, 0) }, [pathname]) return null } export const Routes = () => { const { showHubButton } = useVersion() return ( }> {showHubButton && ( )} }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) } const isDev = import.meta.env.NODE_ENV === 'development' const App = () => { const isDarkMode = useIsDarkMode() useEffect(() => { if (isDarkMode) { document.documentElement.classList.remove(LIGHT_THEME) document.documentElement.classList.add(DARK_THEME) } else { document.documentElement.classList.remove(DARK_THEME) document.documentElement.classList.add(LIGHT_THEME) } }, [isDarkMode]) return ( ) } export default App