feat(pferde-feature): introduce Pferde management module with screens, ViewModel, and domain models

- Added `pferde-feature` module for managing horses, including list, detail, and editing views.
- Implemented `MsMasterDetailLayout` for PferdeScreen, integrating `MsDataTable`, `MsFilterBar`, and `MsActionToolbar`.
- Defined domain models (`Pferd`, `Geschlecht`, `PferdeStatus`) with mock data support.
- Updated roadmap to mark `Pferde-Verwaltung (MVP)` as complete.
- Registered the new module in `settings.gradle.kts` and `meldestelle-desktop` build configuration.
- Added previews for Pferde and Reiter components to support IDE render.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-31 12:19:54 +02:00
parent 94306329c9
commit 6bbf6dc966
13 changed files with 481 additions and 18 deletions
@@ -35,6 +35,8 @@ kotlin {
implementation(projects.frontend.features.veranstaltungFeature)
implementation(projects.frontend.features.turnierFeature)
implementation(project(":frontend:features:profile-feature"))
implementation(project(":frontend:features:reiter-feature"))
implementation(project(":frontend:features:pferde-feature"))
implementation(project(":frontend:features:billing-feature"))
// Compose Desktop
@@ -5,12 +5,8 @@ import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.window.singleWindowApplication
import at.mocode.turnier.feature.presentation.TurnierDetailScreen
import at.mocode.veranstalter.feature.presentation.VeranstalterAuswahlScreen
import at.mocode.veranstalter.feature.presentation.VeranstalterDetailScreen
import at.mocode.veranstalter.feature.presentation.VeranstalterNeuScreen
import at.mocode.veranstaltung.feature.presentation.AdminUebersichtScreen
import at.mocode.veranstaltung.feature.presentation.VeranstaltungUebersichtScreen
import at.mocode.frontend.features.pferde.presentation.PferdeScreen
import at.mocode.frontend.features.pferde.presentation.PferdeViewModel
/**
* Hot-Reload Preview Entry Point
@@ -31,6 +27,13 @@ fun main() = singleWindowApplication(title = "🔥 Hot-Reload Preview") {
private fun PreviewContent() {
MaterialTheme {
Surface {
// --- REITER ---
// ReiterScreen(viewModel = ReiterViewModel())
// --- PFERDE ---
PferdeScreen(viewModel = PferdeViewModel())
// ── Hier den gewünschten Screen eintragen ──────────────────────
// VeranstalterAuswahlScreen(onVeranstalterSelected = {}, onNeuerVeranstalter = {})
// VeranstalterNeuScreen(onBack = {}, onSave = {})
@@ -40,11 +43,11 @@ private fun PreviewContent() {
// ──────────────────────────────────────────────────────────────
// Standard: AdminUebersichtScreen (Startseite nach Login)
AdminUebersichtScreen(
onVeranstalterAuswahl = {},
onVeranstaltungOeffnen = {},
onPingService = {}
)
// AdminUebersichtScreen(
// onVeranstalterAuswahl = {},
// onVeranstaltungOeffnen = {},
// onPingService = {}
// )
}
}
}