FEAT-5: add /genetik route + nav entry + German strings (page stub)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 00:04:03 +02:00
parent e077766cc5
commit f7ba1fa70e
4 changed files with 41 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import BreedersPage from './pages/BreedersPage'
import GerbilsPage from './pages/GerbilsPage' import GerbilsPage from './pages/GerbilsPage'
import GerbilDetailPage from './pages/GerbilDetailPage' import GerbilDetailPage from './pages/GerbilDetailPage'
import GerbilFormPage from './pages/GerbilFormPage' import GerbilFormPage from './pages/GerbilFormPage'
import GenetikPage from './pages/GenetikPage'
import HomePage from './pages/HomePage' import HomePage from './pages/HomePage'
import LittersPage from './pages/LittersPage' import LittersPage from './pages/LittersPage'
import NotFoundPage from './pages/NotFoundPage' import NotFoundPage from './pages/NotFoundPage'
@@ -22,6 +23,7 @@ export default function App() {
</Route> </Route>
<Route path="wuerfe" element={<LittersPage />} /> <Route path="wuerfe" element={<LittersPage />} />
<Route path="zuechter" element={<BreedersPage />} /> <Route path="zuechter" element={<BreedersPage />} />
<Route path="genetik" element={<GenetikPage />} />
<Route path="*" element={<NotFoundPage />} /> <Route path="*" element={<NotFoundPage />} />
</Route> </Route>
</Routes> </Routes>

View File

@@ -6,6 +6,7 @@ const navItems = [
{ to: '/rennmaeuse', label: de.nav.gerbils, icon: '🐭', end: false }, { to: '/rennmaeuse', label: de.nav.gerbils, icon: '🐭', end: false },
{ to: '/wuerfe', label: de.nav.litters, icon: '🍼', end: false }, { to: '/wuerfe', label: de.nav.litters, icon: '🍼', end: false },
{ to: '/zuechter', label: de.nav.breeders, icon: '🧑‍🌾', end: false }, { to: '/zuechter', label: de.nav.breeders, icon: '🧑‍🌾', end: false },
{ to: '/genetik', label: de.nav.genetics, icon: '🧬', end: false },
] ]
/** /**

View File

@@ -0,0 +1,11 @@
import { de } from '../strings/de'
export default function GenetikPage() {
const t = de.pages.genetik
return (
<section className="page">
<h2>{t.title}</h2>
<p className="muted">{t.subtitle}</p>
</section>
)
}

View File

@@ -13,6 +13,7 @@ export const de = {
gerbils: 'Rennmäuse', gerbils: 'Rennmäuse',
litters: 'Würfe', litters: 'Würfe',
breeders: 'Züchter', breeders: 'Züchter',
genetics: 'Genetik',
openMenu: 'Menü öffnen', openMenu: 'Menü öffnen',
closeMenu: 'Menü schließen', closeMenu: 'Menü schließen',
mainNavigation: 'Hauptnavigation', mainNavigation: 'Hauptnavigation',
@@ -123,6 +124,32 @@ export const de = {
message: 'Die angeforderte Seite existiert nicht.', message: 'Die angeforderte Seite existiert nicht.',
backHome: 'Zur Startseite', backHome: 'Zur Startseite',
}, },
// ── FEAT-5 (Kevin): Genetik / Probeverpaarung ──
genetik: {
title: 'Genetik',
subtitle: 'Probeverpaarung Farbschläge der Nachkommen vorhersagen',
father: 'Vater',
mother: 'Mutter',
pickAnimal: 'Tier auswählen',
pickAnimalSearch: 'Name suchen …',
pickAnimalNone: 'Keine passenden Tiere gefunden.',
pickAnimalNoGenotype: 'Für dieses Tier ist kein Genotyp hinterlegt bitte unten eingeben.',
clearAnimal: 'Auswahl entfernen',
genotypeLabel: 'Genotyp',
genotypeHint: 'Format z. B. „Aa CC Dd EE GG Pp Spsp rere“. Unbekannte Allele als „?“.',
genotypeInvalid: 'Der Genotyp ist ungültig.',
genotypePreview: 'Farbschlag',
run: 'Probeverpaarung berechnen',
needBoth: 'Bitte für Vater und Mutter einen gültigen Genotyp angeben.',
resultsTitle: 'Mögliche Nachkommen',
byFarbschlag: 'Nach Farbschlag',
byGenotype: 'Nach Genotyp',
showGenotypes: 'Genotypen anzeigen',
hideGenotypes: 'Genotypen ausblenden',
probability: 'Wahrscheinlichkeit',
noOffspring: 'Keine lebend geborenen Nachkommen möglich.',
warningsTitle: 'Hinweise',
},
}, },
api: { api: {
errors: { errors: {