111 lines
4.6 KiB
JavaScript
111 lines
4.6 KiB
JavaScript
import { lazy } from 'react';
|
|
import { Navigate, createBrowserRouter } from 'react-router-dom';
|
|
import AppShell from './components/AppShell';
|
|
import SectionLayout from './components/SectionLayout';
|
|
|
|
import ArtikelUebersichtPage from './routes/artikel';
|
|
import ArtikelKategorienPage from './routes/artikel/kategorien';
|
|
import RedirectArtikelKategorien from './routes/artikel/RedirectArtikelKategorien';
|
|
import ArtikelLagerPage from './routes/artikel/lager';
|
|
import ArtikelMarkenPage from './routes/artikel/marken';
|
|
import ArtikelVorlagenPage from './routes/artikel/vorlagen';
|
|
import ArtikelMerkmalePage from './routes/artikel/merkmale';
|
|
import ArtikelSkuPage from './routes/artikel/_sku';
|
|
import LieferungListePage from './routes/lieferung';
|
|
import LieferungNeuPage from './routes/lieferung/neu';
|
|
import LieferungLieferantenPage from './routes/lieferung/lieferanten';
|
|
import LieferungEditPage from './routes/lieferung/_deliveryId';
|
|
import AuftragAngebotPage from './routes/auftrag';
|
|
import AuftragAngebotNeuPage from './routes/auftrag/neu';
|
|
import AuftragAngebotEditPage from './routes/auftrag/_quoteId';
|
|
import AuftragBestellungPage from './routes/auftrag/bestellung';
|
|
import AuftragBestellungNeuPage from './routes/auftrag/bestellung/neu';
|
|
import AuftragBestellungEditPage from './routes/auftrag/bestellung/_orderId';
|
|
import KundeListePage from './routes/kunde';
|
|
import KundeNeuPage from './routes/kunde/neu';
|
|
import KundeGruppenPage from './routes/kunde/gruppen';
|
|
import KundeEditPage from './routes/kunde/_entityId';
|
|
import StatisticsPage from './routes/infos/StatisticsPage';
|
|
|
|
const ArticleHistoryPage = lazy(() => import('./routes/infos/ArticleHistoryPage'));
|
|
const GlobalHistoryPage = lazy(() => import('./routes/infos/GlobalHistoryPage'));
|
|
|
|
const routes = [
|
|
{
|
|
path: '/',
|
|
element: <AppShell />,
|
|
children: [
|
|
{ index: true, element: <Navigate to="/artikel" replace /> },
|
|
{
|
|
path: 'lieferung',
|
|
element: <SectionLayout sectionPath="/lieferung" />,
|
|
children: [
|
|
{ index: true, element: <LieferungListePage /> },
|
|
{ path: 'neu', element: <LieferungNeuPage /> },
|
|
{ path: 'lieferanten', element: <LieferungLieferantenPage /> },
|
|
{ path: ':deliveryId', element: <LieferungEditPage /> },
|
|
],
|
|
},
|
|
{
|
|
path: 'infos',
|
|
element: <SectionLayout sectionPath="/infos" />,
|
|
children: [
|
|
{ index: true, element: <ArticleHistoryPage /> },
|
|
{ path: 'articlehistory', element: <ArticleHistoryPage /> },
|
|
{ path: 'globalhistory', element: <GlobalHistoryPage /> },
|
|
{ path: 'statistics', element: <StatisticsPage /> },
|
|
],
|
|
},
|
|
{
|
|
path: 'kategorien/*',
|
|
element: <SectionLayout sectionPath="/artikel" />,
|
|
children: [{ path: '*', element: <ArtikelKategorienPage /> }],
|
|
},
|
|
{
|
|
path: 'artikel',
|
|
element: <SectionLayout sectionPath="/artikel" />,
|
|
children: [
|
|
{ index: true, element: <ArtikelUebersichtPage /> },
|
|
{ path: 'kategorien/*', element: <RedirectArtikelKategorien /> },
|
|
{ path: 'lager', element: <ArtikelLagerPage /> },
|
|
{ path: 'marken', element: <ArtikelMarkenPage /> },
|
|
{ path: 'vorlagen', element: <ArtikelVorlagenPage /> },
|
|
{ path: 'merkmale', element: <ArtikelMerkmalePage /> },
|
|
{ path: ':sku/:tab?', element: <ArtikelSkuPage /> },
|
|
],
|
|
},
|
|
{
|
|
path: 'auftrag',
|
|
element: <SectionLayout sectionPath="/auftrag" />,
|
|
children: [
|
|
{ index: true, element: <AuftragAngebotPage /> },
|
|
{ path: 'neu', element: <AuftragAngebotNeuPage /> },
|
|
{ path: 'bestellung', element: <AuftragBestellungPage /> },
|
|
{ path: 'bestellung/neu', element: <AuftragBestellungNeuPage /> },
|
|
{ path: 'bestellung/:orderId', element: <AuftragBestellungEditPage /> },
|
|
{ path: ':quoteId', element: <AuftragAngebotEditPage /> },
|
|
],
|
|
},
|
|
{
|
|
path: 'kunde',
|
|
element: <SectionLayout sectionPath="/kunde" />,
|
|
children: [
|
|
{ index: true, element: <KundeListePage /> },
|
|
{ path: 'neu', element: <KundeNeuPage /> },
|
|
{ path: 'gruppen', element: <KundeGruppenPage /> },
|
|
{ path: ':entityId', element: <KundeEditPage /> },
|
|
],
|
|
},
|
|
{ path: '*', element: <Navigate to="/artikel" replace /> },
|
|
],
|
|
},
|
|
];
|
|
|
|
/** Keep one router across Vite HMR — recreating breaks navigate()/Link mid-session. */
|
|
export const router =
|
|
import.meta.hot?.data?.router ?? createBrowserRouter(routes);
|
|
|
|
if (import.meta.hot) {
|
|
import.meta.hot.data.router = router;
|
|
}
|