1
0
mirror of https://github.com/hexolan/panels.git synced 2026-05-20 11:39:22 +01:00

init frontend

This commit is contained in:
2023-09-27 20:27:25 +01:00
parent 4aa5cd6dfc
commit 9e6659c14e
63 changed files with 4901 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
import { lazy } from 'react'
import { MantineProvider } from '@mantine/core'
import { RouterProvider, createBrowserRouter } from 'react-router-dom'
import AppLayout from './components/AppLayout'
import LoadingBar from './components/LoadingBar'
import ErrorPage from './pages/Error'
const Homepage = lazy(() => import('./pages/Home'))
const SignInPage = lazy(() => import('./pages/SignIn'))
const SignUpPage = lazy(() => import('./pages/SignUp'))
const UserLayout = lazy(() => import('./components/UserLayout'))
const UserPage = lazy(() => import('./pages/User'))
const UserAboutPage = lazy(() => import('./pages/UserAbout'))
const UserSettingsPage = lazy(() => import('./pages/UserSettings'))
const ExplorePanelsPage = lazy(() => import('./pages/ExplorePanels'))
const NewPanelPage = lazy(() => import('./pages/NewPanel'))
const PanelLayout = lazy(() => import('./components/PanelLayout'))
const PanelPage = lazy(() => import('./pages/Panel'))
const PanelSettingsPage = lazy(() => import('./pages/PanelSettings'))
const PanelPostPage = lazy(() => import('./pages/PanelPost'))
const NewPanelPostPage = lazy(() => import('./pages/NewPanelPost'))
const router = createBrowserRouter([
{
element: <AppLayout />,
errorElement: <AppLayout><ErrorPage /></AppLayout>,
children: [
{
index: true,
element: <Homepage />,
},
{
path: '/signin',
element: <SignInPage />,
},
{
path: '/signup',
element: <SignUpPage />,
},
{
path: '/user/:username',
element: <UserLayout />,
children: [
{
index: true,
element: <UserPage />,
},
{
path: '/user/:username/about',
element: <UserAboutPage />,
},
{
path: '/user/:username/settings',
element: <UserSettingsPage />,
},
],
},
{
path: '/panels',
children: [
{
index: true,
element: <ExplorePanelsPage />,
},
{
path: '/panels/new',
element: <NewPanelPage />,
},
]
},
{
path: '/panel/:panelName',
element: <PanelLayout />,
children: [
{
index: true,
element: <PanelPage />,
},
{
path: '/panel/:panelName/settings',
element: <PanelSettingsPage />,
},
{
path: '/panel/:panelName/post/:postId',
element: <PanelPostPage />,
},
{
path: '/panel/:panelName/posts/new',
element: <NewPanelPostPage />,
}
],
},
]
}
])
function App() {
return (
<MantineProvider withGlobalStyles withNormalizeCSS>
<RouterProvider router={router} fallbackElement={<LoadingBar />} />
</MantineProvider>
);
}
export default App