From d8ee8040195fff449a272c0dd963754fe424d09e Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Fri, 20 Mar 2026 15:48:15 +0100 Subject: [PATCH] =?UTF-8?q?style:=20UI-Verbesserungen=20f=C3=BCr=20EditPro?= =?UTF-8?q?file,=20Imprint=20und=20Statistics=20Views?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/themes/votian-modern/styles.css | 10 +++++++- .../votianlt/pages/view/EditProfileView.java | 5 ++++ .../votianlt/pages/view/ImprintView.java | 20 +++++++++++---- .../votianlt/pages/view/StatisticsView.java | 25 +++---------------- 4 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/main/frontend/themes/votian-modern/styles.css b/src/main/frontend/themes/votian-modern/styles.css index d65148e..db6667f 100644 --- a/src/main/frontend/themes/votian-modern/styles.css +++ b/src/main/frontend/themes/votian-modern/styles.css @@ -1385,7 +1385,14 @@ vaadin-grid-tree-toggle[expanded] .nav-expand-icon { justify-content: flex-end; } -.statistics-header, +.statistics-header { + width: min(1240px, 100%); + margin: 0 auto; + border: none; + background: transparent; + box-shadow: none; +} + .statistics-input-panel { width: min(1240px, 100%); margin: 0 auto; @@ -1402,6 +1409,7 @@ vaadin-grid-tree-toggle[expanded] .nav-expand-icon { background: linear-gradient(180deg, rgba(238, 244, 255, 0.75), rgba(248, 250, 252, 0.96)); border-radius: 30px; box-shadow: var(--app-shadow-lg); + box-sizing: border-box; } .station-tile.validated { diff --git a/src/main/java/de/assecutor/votianlt/pages/view/EditProfileView.java b/src/main/java/de/assecutor/votianlt/pages/view/EditProfileView.java index 6acebff..a7b7ddf 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/EditProfileView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/EditProfileView.java @@ -1,6 +1,7 @@ package de.assecutor.votianlt.pages.view; import com.vaadin.flow.component.button.Button; +import de.assecutor.votianlt.pages.base.ui.component.ViewToolbar; import com.vaadin.flow.component.button.ButtonVariant; import com.vaadin.flow.component.checkbox.Checkbox; import com.vaadin.flow.component.formlayout.FormLayout; @@ -111,6 +112,10 @@ public class EditProfileView extends HorizontalLayout implements HasDynamicTitle formColumn.setHeightFull(); formColumn.setPadding(false); formColumn.setSpacing(false); + + ViewToolbar toolbar = new ViewToolbar(getTranslation("page.title.profile.edit")); + formColumn.add(toolbar); + // TabSheet TabSheet tabSheet = new TabSheet(); tabSheet.setSizeFull(); diff --git a/src/main/java/de/assecutor/votianlt/pages/view/ImprintView.java b/src/main/java/de/assecutor/votianlt/pages/view/ImprintView.java index 31220db..8ff5e1b 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/ImprintView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/ImprintView.java @@ -2,6 +2,7 @@ package de.assecutor.votianlt.pages.view; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.orderedlayout.VerticalLayout; +import de.assecutor.votianlt.pages.base.ui.component.ViewToolbar; import org.springframework.core.io.ClassPathResource; import com.vaadin.flow.router.HasDynamicTitle; import com.vaadin.flow.router.Route; @@ -13,9 +14,16 @@ public class ImprintView extends VerticalLayout implements HasDynamicTitle { public ImprintView() { setSizeFull(); setPadding(true); - setSpacing(true); - setAlignItems(Alignment.CENTER); - addClassNames("data-view", "form-shell"); + setSpacing(false); + addClassName("form-page"); + + VerticalLayout content = new VerticalLayout(); + content.setWidthFull(); + content.setPadding(false); + content.setSpacing(false); + + ViewToolbar toolbar = new ViewToolbar(getTranslation("page.title.imprint")); + content.add(toolbar); try { // Load HTML content from resources @@ -27,15 +35,17 @@ public class ImprintView extends VerticalLayout implements HasDynamicTitle { imprintDiv.addClassNames("form-card", "form-shell"); imprintDiv.getElement().setProperty("innerHTML", htmlContent); - add(imprintDiv); + content.add(imprintDiv); } catch (Exception e) { // Fallback content in case of error Div errorDiv = new Div(); errorDiv.addClassNames("form-card", "form-shell"); errorDiv.setText(getTranslation("imprint.error", e.getMessage())); - add(errorDiv); + content.add(errorDiv); } + + add(content); } @Override diff --git a/src/main/java/de/assecutor/votianlt/pages/view/StatisticsView.java b/src/main/java/de/assecutor/votianlt/pages/view/StatisticsView.java index 76a31fd..1ade87e 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/StatisticsView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/StatisticsView.java @@ -7,7 +7,7 @@ import com.vaadin.flow.component.button.Button; import com.vaadin.flow.component.button.ButtonVariant; import com.vaadin.flow.component.dependency.JavaScript; import com.vaadin.flow.component.html.Div; -import com.vaadin.flow.component.html.H2; +import de.assecutor.votianlt.pages.base.ui.component.ViewToolbar; import com.vaadin.flow.component.html.Paragraph; import com.vaadin.flow.component.html.Span; import com.vaadin.flow.component.icon.Icon; @@ -56,7 +56,7 @@ public class StatisticsView extends VerticalLayout implements HasDynamicTitle { addClassName("statistics-chat-view"); // Header - HorizontalLayout header = createHeader(); + ViewToolbar header = createHeader(); add(header); // Chat Container mit Scroll @@ -81,25 +81,8 @@ public class StatisticsView extends VerticalLayout implements HasDynamicTitle { add(inputArea); } - private HorizontalLayout createHeader() { - HorizontalLayout header = new HorizontalLayout(); - header.setWidthFull(); - header.setPadding(true); - header.setAlignItems(FlexComponent.Alignment.CENTER); - header.addClassName("statistics-header"); - - Icon aiIcon = VaadinIcon.MAGIC.create(); - aiIcon.getStyle().set("color", "var(--lumo-primary-color)"); - - H2 title = new H2(getTranslation("statistics.title")); - title.getStyle().set("margin", "0").set("font-size", "var(--lumo-font-size-xl)"); - - Span subtitle = new Span(getTranslation("statistics.subtitle")); - subtitle.getStyle().set("color", "var(--lumo-secondary-text-color)").set("font-size", "var(--lumo-font-size-s)") - .set("margin-left", "var(--lumo-space-m)"); - - header.add(aiIcon, title, subtitle); - return header; + private ViewToolbar createHeader() { + return new ViewToolbar(getTranslation("statistics.title")); } private HorizontalLayout createInputArea() {