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