From c0389558bb69454faa0aa62414d34d018c4aa5c4 Mon Sep 17 00:00:00 2001 From: Stefan Mogeritsch Date: Sat, 21 Mar 2026 16:57:42 +0100 Subject: [PATCH] feat(ui): add LandingPagePreview with Compose-based design preview - Introduced `LandingPagePreview` composable for live UI previews in IntelliJ (Hot-Reload). - Included fallback `main()` for standalone preview in the Design Preview Sandbox. Signed-off-by: Stefan Mogeritsch --- .../src/jvmMain/kotlin/AppPreview.kt | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 frontend/shells/meldestelle-portal/src/jvmMain/kotlin/AppPreview.kt diff --git a/frontend/shells/meldestelle-portal/src/jvmMain/kotlin/AppPreview.kt b/frontend/shells/meldestelle-portal/src/jvmMain/kotlin/AppPreview.kt new file mode 100644 index 00000000..a1d8f4ee --- /dev/null +++ b/frontend/shells/meldestelle-portal/src/jvmMain/kotlin/AppPreview.kt @@ -0,0 +1,52 @@ +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.window.Window +import androidx.compose.ui.window.application +import at.mocode.frontend.core.designsystem.theme.AppTheme +import at.mocode.frontend.core.designsystem.theme.Dimens + +@Preview +@Composable +fun LandingPagePreview() { + AppTheme { + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + Column( + modifier = Modifier.padding(Dimens.SpacingM), + verticalArrangement = Arrangement.spacedBy(Dimens.SpacingM) + ) { + Text( + text = "Landing Page Preview", + style = MaterialTheme.typography.titleLarge, + color = MaterialTheme.colorScheme.primary + ) + Text( + text = "Dies ist eine Live-Vorschau. Du kannst hier deine UI-Komponenten isoliert bauen und sofort sehen, wie sie aussehen. Ändere Text, Farben oder Layouts im Code – die Preview aktualisiert sich automatisch in IntelliJ (Hot-Reload).", + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onBackground + ) + Button(onClick = {}) { + Text("Ein Button im Primary-Design") + } + } + } + } +} + +// Fallback für IntelliJ, falls das Compose Plugin die Preview nicht erkennt +fun main() = application { + Window(onCloseRequest = ::exitApplication, title = "Design Preview Sandbox") { + LandingPagePreview() + } +}