style: UI-Verbesserungen für EditProfile, Imprint und Statistics Views

This commit is contained in:
2026-03-20 15:48:15 +01:00
parent c2bc4e4900
commit d8ee804019
4 changed files with 33 additions and 27 deletions

View File

@@ -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 {

View File

@@ -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();

View File

@@ -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

View File

@@ -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() {