# Conflicts: # gerbil-manager-web/e2e/mock-data.ts # gerbil-manager-web/src/App.tsx
107 lines
5.1 KiB
TypeScript
107 lines
5.1 KiB
TypeScript
import { BrowserRouter, Navigate, Route, Routes, useParams } from 'react-router-dom'
|
|
import AppShell from './components/AppShell'
|
|
import BeckenPage from './pages/BeckenPage'
|
|
import BeckenDetailPage from './pages/BeckenDetailPage'
|
|
import BeckenFormPage from './pages/BeckenFormPage'
|
|
import GerbilsPage from './pages/GerbilsPage'
|
|
import GerbilDetailPage from './pages/GerbilDetailPage'
|
|
import GerbilFormPage from './pages/GerbilFormPage'
|
|
import GenetikPage from './pages/GenetikPage'
|
|
import AbgabePage from './pages/AbgabePage'
|
|
import KontaktePage from './pages/KontaktePage'
|
|
import KontaktDetailPage from './pages/KontaktDetailPage'
|
|
import KontaktFormPage from './pages/KontaktFormPage'
|
|
import WuerfeListPage from './pages/WuerfeListPage'
|
|
import WurfDetailPage from './pages/WurfDetailPage'
|
|
import WurfFormPage from './pages/WurfFormPage'
|
|
import NotFoundPage from './pages/NotFoundPage'
|
|
import StammbaumPage from './pages/StammbaumPage'
|
|
import StatistikPage from './pages/StatistikPage'
|
|
import HilfePage from './pages/HilfePage'
|
|
import TicketsPage from './pages/TicketsPage'
|
|
import RennmausProImportPage from './pages/RennmausProImportPage'
|
|
import FarbkatalogPage from './pages/FarbkatalogPage'
|
|
import VertraegeListPage from './pages/VertraegeListPage'
|
|
import VertragWizardPage from './pages/VertragWizardPage'
|
|
import EinstellungenPage from './pages/EinstellungenPage'
|
|
import WebseitePage from './pages/WebseitePage'
|
|
import WebseiteEditorPage from './pages/WebseiteEditorPage'
|
|
import WebseiteVorschauPage from './pages/WebseiteVorschauPage'
|
|
import AnfragenPage from './pages/AnfragenPage'
|
|
import AnfrageDetailPage from './pages/AnfrageDetailPage'
|
|
|
|
function BeckenRedirect() {
|
|
const { '*': splat } = useParams()
|
|
return <Navigate to={`/gehege${splat ? `/${splat}` : ''}`} replace />
|
|
}
|
|
|
|
export default function App() {
|
|
return (
|
|
<BrowserRouter>
|
|
<Routes>
|
|
<Route element={<AppShell />}>
|
|
<Route index element={<Navigate to="/rennmaeuse" replace />} />
|
|
<Route path="rennmaeuse">
|
|
<Route index element={<GerbilsPage />} />
|
|
<Route path="neu" element={<GerbilFormPage />} />
|
|
<Route path=":id" element={<GerbilDetailPage />} />
|
|
<Route path=":id/bearbeiten" element={<GerbilFormPage />} />
|
|
<Route path=":id/stammbaum" element={<StammbaumPage />} />
|
|
</Route>
|
|
<Route path="wuerfe">
|
|
<Route index element={<WuerfeListPage />} />
|
|
<Route path="neu" element={<WurfFormPage />} />
|
|
<Route path=":id" element={<WurfDetailPage />} />
|
|
<Route path=":id/bearbeiten" element={<WurfFormPage />} />
|
|
</Route>
|
|
{/* FEAT-2: Kontakte ersetzt das Züchter-Platzhalter-Routing (Breeder -> Contact) */}
|
|
{/* GEHEGE-RENAME: /becken → /gehege; redirect preserves bookmarks */}
|
|
<Route path="becken/*" element={<BeckenRedirect />} />
|
|
<Route path="gehege">
|
|
<Route index element={<BeckenPage />} />
|
|
<Route path="neu" element={<BeckenFormPage />} />
|
|
<Route path=":id" element={<BeckenDetailPage />} />
|
|
<Route path=":id/bearbeiten" element={<BeckenFormPage />} />
|
|
</Route>
|
|
<Route path="kontakte">
|
|
<Route index element={<KontaktePage />} />
|
|
<Route path="neu" element={<KontaktFormPage />} />
|
|
<Route path=":id" element={<KontaktDetailPage />} />
|
|
<Route path=":id/bearbeiten" element={<KontaktFormPage />} />
|
|
</Route>
|
|
<Route path="genetik" element={<GenetikPage />} />
|
|
<Route path="abgabe" element={<AbgabePage />} />
|
|
<Route path="statistik" element={<StatistikPage />} />
|
|
<Route path="hilfe">
|
|
<Route index element={<HilfePage />} />
|
|
{/* FEEDBACK-TICKETS: "Meine Tickets" — verwaltet eingereichte Fehlerberichte */}
|
|
<Route path="tickets" element={<TicketsPage />} />
|
|
{/* RPRO3: RennmausPro-III-Backup-Import (Rubrik unter „Hilfe") */}
|
|
<Route path="rennmauspro-import" element={<RennmausProImportPage />} />
|
|
</Route>
|
|
<Route path="farbkatalog" element={<FarbkatalogPage />} />
|
|
{/* FEAT-13: Abgabeverträge + Einstellungen (Zuchtprofil) */}
|
|
<Route path="vertraege">
|
|
<Route index element={<VertraegeListPage />} />
|
|
<Route path="neu" element={<VertragWizardPage />} />
|
|
</Route>
|
|
<Route path="einstellungen" element={<EinstellungenPage />} />
|
|
{/* WEB-0b: CMS-Verwaltung der öffentlichen Webseite */}
|
|
<Route path="webseite">
|
|
<Route index element={<WebseitePage />} />
|
|
{/* WEB-3: lokale Vorschau (statischer Pfad gewinnt vor :slug) */}
|
|
<Route path="vorschau" element={<WebseiteVorschauPage />} />
|
|
<Route path=":slug" element={<WebseiteEditorPage />} />
|
|
</Route>
|
|
{/* INBOX-1: Anfragen-Posteingang */}
|
|
<Route path="anfragen">
|
|
<Route index element={<AnfragenPage />} />
|
|
<Route path=":id" element={<AnfrageDetailPage />} />
|
|
</Route>
|
|
<Route path="*" element={<NotFoundPage />} />
|
|
</Route>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
)
|
|
}
|