feat(verein-feature): add Vereinsverwaltung module with screens, ViewModel, and integration

- Introduced `verein-feature` module for managing Vereine, including list, detail, and editor views using `MsMasterDetailLayout`.
- Added new domain models (`Verein`, `VereinStatus`) and integrated mock data for development.
- Registered the new feature in `settings.gradle.kts` and `DesktopMainLayout.kt`, including breadcrumb navigation and entry point.
- Updated `VeranstaltungenUebersichtV2` to add Vereine as a quick-access KPI tile.
- Removed unnecessary logout functionality and adjusted the root navigation for consistency.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-31 15:00:19 +02:00
parent 1699c24875
commit 496e801943
15 changed files with 1109 additions and 151 deletions
@@ -1,6 +1,7 @@
package at.mocode.veranstaltung.feature.presentation
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
@@ -9,8 +10,8 @@ import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -39,6 +40,7 @@ fun AdminUebersichtScreen(
onVeranstalterAuswahl: () -> Unit,
onVeranstaltungOeffnen: (Long) -> Unit,
onPingService: () -> Unit = {},
onVereineOeffnen: () -> Unit = {},
) {
// Placeholder-Daten für die UI-Struktur (sichtbar als Cards)
val sample = listOf(
@@ -66,6 +68,7 @@ fun AdminUebersichtScreen(
inVorbereitung = 0,
gesamt = 0,
archiv = 0,
onVereineClick = onVereineOeffnen
)
// Toolbar
@@ -155,6 +158,7 @@ private fun KpiKachelRow(
inVorbereitung: Int,
gesamt: Int,
archiv: Int,
onVereineClick: () -> Unit = {},
) {
Row(
modifier = Modifier
@@ -175,10 +179,10 @@ private fun KpiKachelRow(
modifier = Modifier.weight(1f),
)
KpiKachel(
label = "GESAMT",
wert = gesamt.toString(),
label = "VEREINE",
wert = "4", // Mock
akzentFarbe = Color(0xFF6B7280),
modifier = Modifier.weight(1f),
modifier = Modifier.weight(1f).clickable { onVereineClick() },
)
KpiKachel(
label = "ARCHIV",