Taobin-Recipe-Manager/client-electron/src/App.tsx
2024-02-05 16:24:11 +07:00

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