94 lines
2.1 KiB
TypeScript
94 lines
2.1 KiB
TypeScript
import { createBrowserRouter, createHashRouter, RouterProvider, type RouteObject } from 'react-router-dom'
|
|
import AuthCallBack from './AuthCallBack'
|
|
import MainLayout from './layouts/MainLayout'
|
|
import HomePage from './pages/home'
|
|
import LoginPage from './pages/login'
|
|
import AndroidPage from './pages/android/android'
|
|
import RecipesPage from './pages/recipes/recipes'
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
|
import UploadPage from './pages/upload'
|
|
import { type MenuList } from './components/sidebar'
|
|
import { DashboardIcon, FileTextIcon, RocketIcon, UploadIcon } from '@radix-ui/react-icons'
|
|
|
|
const sideBarMenuList: MenuList = [
|
|
{
|
|
title: 'Home',
|
|
icon: DashboardIcon,
|
|
link: '/'
|
|
},
|
|
{
|
|
title: 'Recipes',
|
|
icon: FileTextIcon,
|
|
link: '/recipes'
|
|
},
|
|
{
|
|
title: 'Android',
|
|
icon: RocketIcon,
|
|
link: '/android'
|
|
},
|
|
{
|
|
title: 'Upload',
|
|
icon: UploadIcon,
|
|
link: '/upload'
|
|
}
|
|
]
|
|
|
|
function router() {
|
|
const routes: RouteObject[] = [
|
|
{
|
|
path: '/',
|
|
element: <MainLayout sidebarMenu={sideBarMenuList} />,
|
|
children: [
|
|
{
|
|
path: '/',
|
|
element: <HomePage />
|
|
},
|
|
{
|
|
path: 'recipes',
|
|
element: <RecipesPage />
|
|
},
|
|
{
|
|
path: 'android',
|
|
element: <AndroidPage />
|
|
},
|
|
{
|
|
path: 'upload',
|
|
element: <UploadPage />
|
|
}
|
|
]
|
|
},
|
|
{
|
|
path: '/login',
|
|
element: <LoginPage />
|
|
},
|
|
{
|
|
path: '/callback',
|
|
element: <AuthCallBack />
|
|
},
|
|
{
|
|
path: '*',
|
|
element: (
|
|
<div className="flex flex-col items-center justify-center h-screen">
|
|
<h1 className="text-3xl font-bold text-gray-900">404</h1>
|
|
<p className="text-gray-500">Page Not Found</p>
|
|
</div>
|
|
)
|
|
}
|
|
]
|
|
if (window.electronRuntime) {
|
|
return createHashRouter(routes)
|
|
}
|
|
return createBrowserRouter(routes)
|
|
}
|
|
|
|
const queryClient = new QueryClient()
|
|
|
|
const App: React.FC = () => {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<RouterProvider router={router()} />
|
|
</QueryClientProvider>
|
|
)
|
|
}
|
|
|
|
export default App
|