45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import { lazy, Suspense, useState } from 'react';
|
|
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
|
|
import { ThemeProvider, ColorSchemeType, DensityType } from '@repo/ui/provider';
|
|
import { NotFound, Forbidden, Maintenance, ComingSoon } from '@repo/ui/components';
|
|
|
|
const AuthModule = lazy(() => import('./auth'));
|
|
const AppModule = lazy(() => import('./modules'));
|
|
const ShowcaseView = lazy(() => import('./showcase/showcase-view'));
|
|
|
|
export default function App() {
|
|
const [colorScheme, setColorScheme] = useState<ColorSchemeType>('light');
|
|
const [density, setDensity] = useState<DensityType>('compact');
|
|
|
|
return (
|
|
<ThemeProvider colorScheme={colorScheme} density={density}>
|
|
<BrowserRouter>
|
|
<Suspense fallback={<div>Loading...</div>}>
|
|
<Routes>
|
|
<Route path="/auth/*" element={<AuthModule />} />
|
|
<Route path="/app/*" element={<AppModule />} />
|
|
<Route
|
|
path="/showcase"
|
|
element={
|
|
<ShowcaseView
|
|
colorScheme={colorScheme}
|
|
setColorScheme={setColorScheme}
|
|
density={density}
|
|
setDensity={setDensity}
|
|
/>
|
|
}
|
|
/>
|
|
<Route path="/404" element={<NotFound />} />
|
|
<Route path="/403" element={<Forbidden />} />
|
|
<Route path="/maintenance" element={<Maintenance />} />
|
|
<Route path="/coming-soon" element={<ComingSoon />} />
|
|
{/* <Route path="/" element={<Navigate to="/showcase" />} /> */}
|
|
<Route path="/" element={<Navigate to="/app" />} />
|
|
<Route path="*" element={<Navigate to="/404" />} />
|
|
</Routes>
|
|
</Suspense>
|
|
</BrowserRouter>
|
|
</ThemeProvider>
|
|
);
|
|
}
|