From 75f0a5dd6e88875baebe678d762fd0586d12f80d Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 26 Mar 2026 16:32:37 +0100 Subject: [PATCH] refactor: mobile-friendly goal form design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Full-width inputs throughout the form - Labels above inputs (mobile best practice) - Section headers with emoji (🎯 Zielwert) - Consistent spacing (marginBottom: 16) - Read-only unit display as styled badge - Primary goal checkbox in highlighted section - Full-width buttons (btn-full class) - Scrollable modal with top padding - Error display above form Matches VitalsPage design pattern for consistency. Co-Authored-By: Claude Opus 4.6 --- frontend/src/pages/GoalsPage.jsx | 279 ++++++++++++++++++++----------- 1 file changed, 186 insertions(+), 93 deletions(-) diff --git a/frontend/src/pages/GoalsPage.jsx b/frontend/src/pages/GoalsPage.jsx index d24d35f..bded3b3 100644 --- a/frontend/src/pages/GoalsPage.jsx +++ b/frontend/src/pages/GoalsPage.jsx @@ -440,120 +440,213 @@ export default function GoalsPage() { bottom: 0, background: 'rgba(0,0,0,0.5)', display: 'flex', - alignItems: 'center', + alignItems: 'flex-start', justifyContent: 'center', zIndex: 1000, - padding: 16 + padding: 16, + paddingTop: 40, + overflowY: 'auto' }}>
-

+
{editingGoal ? 'Ziel bearbeiten' : 'Neues Ziel'} -

+
-
-
- - + {error && ( +
+ {error}
+ )} -
- + {/* Zieltyp */} +
+ + +
+ + {/* Name */} +
+ + setFormData(f => ({ ...f, name: e.target.value }))} + placeholder="z.B. Sommerfigur 2026" + /> +
+ + {/* Zielwert */} +
+ 🎯 Zielwert +
+
+ +
setFormData(f => ({ ...f, name: e.target.value }))} - placeholder="z.B. Sommerfigur 2026" + style={{ flex: 1 }} + value={formData.target_value} + onChange={e => setFormData(f => ({ ...f, target_value: e.target.value }))} + placeholder="Zielwert eingeben" /> -
- -
- -
- setFormData(f => ({ ...f, target_value: e.target.value }))} - placeholder="Zielwert" - /> - +
+ {formData.unit}
+
-
- + {/* Zieldatum */} +
+ + setFormData(f => ({ ...f, target_date: e.target.value }))} + /> +
+ + {/* Beschreibung */} +
+ +