From 83ee3001924a9fba127e3e2d1153d89c5e331564 Mon Sep 17 00:00:00 2001 From: Lars Date: Tue, 5 May 2026 12:39:15 +0200 Subject: [PATCH] refactor: enhance layout and responsiveness across multiple pages - Updated app.css to improve responsive design, introducing new classes for consistent page widths and grid layouts. - Refactored various page components to utilize the new layout classes, ensuring better adaptability on different screen sizes. - Adjusted padding and margin properties for improved visual consistency and user experience across the application. --- frontend/src/app.css | 84 ++++++++++++++++++- frontend/src/pages/AccountSettingsPage.jsx | 2 +- frontend/src/pages/AdminCatalogsPage.jsx | 2 +- frontend/src/pages/AdminHierarchyPage.jsx | 2 +- frontend/src/pages/ClubsPage.jsx | 4 +- frontend/src/pages/Dashboard.jsx | 8 +- frontend/src/pages/ExerciseDetailPage.jsx | 2 +- frontend/src/pages/ExerciseFormPage.jsx | 2 +- frontend/src/pages/ExercisesListPage.jsx | 2 +- frontend/src/pages/MediaWikiImportPage.jsx | 2 +- frontend/src/pages/SkillsPage.jsx | 4 +- frontend/src/pages/TrainerContextsPage.jsx | 2 +- .../TrainingFrameworkProgramEditPage.jsx | 12 +-- .../TrainingFrameworkProgramsListPage.jsx | 4 +- frontend/src/pages/TrainingPlanningPage.jsx | 54 ++++++------ frontend/src/pages/TrainingUnitRunPage.jsx | 2 +- 16 files changed, 130 insertions(+), 58 deletions(-) diff --git a/frontend/src/app.css b/frontend/src/app.css index 956501d..7aaf75e 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -71,6 +71,76 @@ body { font-family: var(--font); background: var(--bg); color: var(--text1); -we } } .app-logo { font-size: 18px; font-weight: 700; color: var(--accent); letter-spacing: -0.02em; } + +/* === Seiten-Inhalt: einheitlich volle Breite bis 1023px; ab Desktop optionale Max-Breite === */ +.app-page { + width: 100%; + max-width: 100%; + min-width: 0; + box-sizing: border-box; +} + +@media (min-width: 1024px) { + .app-page--constrained-lg { + max-width: 1200px; + margin-left: auto; + margin-right: auto; + } + .app-page--constrained-md { + max-width: 900px; + margin-left: auto; + margin-right: auto; + } + .app-page--constrained-sm { + max-width: 720px; + margin-left: auto; + margin-right: auto; + } + .app-page--reading { + max-width: 640px; + margin-left: auto; + margin-right: auto; + } +} + +/* Form-Grids: minmax(0,…) verhindert Grid-Overflow; eine Spalte bis zum ersten Breakpoint */ +.responsive-grid-2 { + display: grid; + gap: 12px; + grid-template-columns: minmax(0, 1fr); +} +@media (min-width: 480px) { + .responsive-grid-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +.responsive-grid-3 { + display: grid; + gap: 1rem; + grid-template-columns: minmax(0, 1fr); +} +@media (min-width: 560px) { + .responsive-grid-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } +} + +.responsive-grid-4 { + display: grid; + gap: 1rem; + grid-template-columns: minmax(0, 1fr); +} +@media (min-width: 560px) { + .responsive-grid-4 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} +@media (min-width: 900px) { + .responsive-grid-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} /* unten: Tab-Leiste + Abstand nach oben zur Leiste + Home-Indicator (iPhone) */ .app-main { flex: 1; @@ -163,6 +233,7 @@ body { font-family: var(--font); background: var(--bg); color: var(--text1); -we gap: 8px; padding: 0; margin-bottom: 16px; + min-width: 0; } .form-label { @@ -183,6 +254,7 @@ body { font-family: var(--font); background: var(--bg); color: var(--text1); -we .form-input { width: 100%; + min-width: 0; padding: 10px 12px; text-align: left; font-family: var(--font); @@ -2741,14 +2813,16 @@ a.analysis-split__nav-item { /* Rahmenprogramm bearbeiten — Mobile: Stammdaten | Plan; Desktop: untereinander Ziele → Slots (synchron zu FRAMEWORK_DESKTOP_MIN_PX) */ .framework-edit { - max-width: 800px; - margin: 0 auto; + max-width: 100%; + margin: 0; width: 100%; min-width: 0; } @media (min-width: 900px) { .framework-edit { max-width: min(1200px, 100%); + margin-left: auto; + margin-right: auto; } .framework-edit__tabbar { display: none !important; @@ -2834,6 +2908,12 @@ a.analysis-split__nav-item { scrollbar-gutter: stable; } +@media (max-width: 1023px) { + .framework-slots-board-outer { + scrollbar-gutter: auto; + } +} + .framework-slots-board { display: flex; flex-direction: row; diff --git a/frontend/src/pages/AccountSettingsPage.jsx b/frontend/src/pages/AccountSettingsPage.jsx index 0edb2c0..e2c9895 100644 --- a/frontend/src/pages/AccountSettingsPage.jsx +++ b/frontend/src/pages/AccountSettingsPage.jsx @@ -98,7 +98,7 @@ function AccountSettingsPage() { } return ( -
+

Einstellungen

Konto & Sicherheit diff --git a/frontend/src/pages/AdminCatalogsPage.jsx b/frontend/src/pages/AdminCatalogsPage.jsx index a5952d7..b92f66a 100644 --- a/frontend/src/pages/AdminCatalogsPage.jsx +++ b/frontend/src/pages/AdminCatalogsPage.jsx @@ -313,7 +313,7 @@ export default function AdminCatalogsPage() { } return ( -

+

Stammdaten-Kataloge

diff --git a/frontend/src/pages/AdminHierarchyPage.jsx b/frontend/src/pages/AdminHierarchyPage.jsx index 1361d83..f44845b 100644 --- a/frontend/src/pages/AdminHierarchyPage.jsx +++ b/frontend/src/pages/AdminHierarchyPage.jsx @@ -93,7 +93,7 @@ function AdminHierarchyPage() { ] return ( -
+

Admin: Katalog-Hierarchie

diff --git a/frontend/src/pages/ClubsPage.jsx b/frontend/src/pages/ClubsPage.jsx index 470fae2..e9ef58b 100644 --- a/frontend/src/pages/ClubsPage.jsx +++ b/frontend/src/pages/ClubsPage.jsx @@ -143,8 +143,7 @@ function ClubsPage() { } return ( -
-
+

Vereinsverwaltung

Für die Trainingsplanung wird mindestens ein Verein und eine Trainingsgruppe gebraucht. @@ -696,7 +695,6 @@ function ClubsPage() {

)} -
) } diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx index a0212eb..069cca3 100644 --- a/frontend/src/pages/Dashboard.jsx +++ b/frontend/src/pages/Dashboard.jsx @@ -30,7 +30,7 @@ function Dashboard() { if (loading) { return ( -
+

Laden...

@@ -38,8 +38,7 @@ function Dashboard() { } return ( -
-
+

Dashboard

Willkommen, {user?.name || user?.email}! @@ -56,7 +55,7 @@ function Dashboard() { {/* Status Grid */}

@@ -122,7 +121,6 @@ function Dashboard() {
)} -
) } diff --git a/frontend/src/pages/ExerciseDetailPage.jsx b/frontend/src/pages/ExerciseDetailPage.jsx index ddf901c..bcdaac8 100644 --- a/frontend/src/pages/ExerciseDetailPage.jsx +++ b/frontend/src/pages/ExerciseDetailPage.jsx @@ -144,7 +144,7 @@ function ExerciseDetailPage() { if (error) { const msg = error.message || String(error) return ( -
+

Übung

{msg}

diff --git a/frontend/src/pages/ExerciseFormPage.jsx b/frontend/src/pages/ExerciseFormPage.jsx index ee89dfe..01327ae 100644 --- a/frontend/src/pages/ExerciseFormPage.jsx +++ b/frontend/src/pages/ExerciseFormPage.jsx @@ -699,7 +699,7 @@ function ExerciseFormPage() { } return ( -
+