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 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" element={<HilfePage />} />
          {/* 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>
  )
}
