From 92e334dcd23eccc231777795047d4751feac1c47 Mon Sep 17 00:00:00 2001 From: Lars Date: Fri, 17 Apr 2026 20:57:31 +0200 Subject: [PATCH] feat: Enhance Admin Activity Attribute Profiles UI and styling - Introduced a new layout for the Admin Activity Attribute Profiles page, improving the user interface with a dedicated class for styling. - Added new CSS styles for input fields, labels, and layout structures to enhance the visual presentation and usability of the attribute profiles. - Updated the form structure to include clearer labels and organization for input fields, ensuring better accessibility and user experience. - Improved responsiveness of the layout for mobile devices, ensuring a consistent experience across different screen sizes. --- frontend/src/app.css | 135 +++++ .../AdminActivityAttributeProfilesPage.jsx | 507 +++++++++++------- 2 files changed, 461 insertions(+), 181 deletions(-) diff --git a/frontend/src/app.css b/frontend/src/app.css index a237ef6..899e532 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -440,6 +440,141 @@ a.analysis-split__nav-item { } } +/* Admin: Session-Metriken / Attributprofile — volle Breite, linksbündig (nicht globale 90px-Zahlfelder) */ +.activity-attribute-profiles .aaf-stack { + max-width: 42rem; +} +.activity-attribute-profiles .aaf-field { + margin-bottom: 1rem; +} +.activity-attribute-profiles .aaf-label { + display: block; + font-size: 14px; + font-weight: 600; + color: var(--text1); + text-align: left; + margin-bottom: 6px; + line-height: 1.35; +} +.activity-attribute-profiles .aaf-sublabel { + display: block; + font-size: 12px; + font-weight: 600; + color: var(--text2); + text-align: left; + margin-bottom: 4px; +} +.activity-attribute-profiles .aaf-hint { + font-size: 12px; + color: var(--text3); + text-align: left; + margin: 6px 0 0; + line-height: 1.45; +} +.activity-attribute-profiles .aaf-input, +.activity-attribute-profiles textarea.aaf-input { + display: block; + width: 100%; + box-sizing: border-box; + padding: 10px 12px; + text-align: left; + font-family: var(--font); + font-size: 15px; + font-weight: 500; + color: var(--text1); + background: var(--surface2); + border: 1.5px solid var(--border2); + border-radius: 8px; + transition: border-color 0.15s; +} +.activity-attribute-profiles textarea.aaf-input { + resize: vertical; + min-height: 4.5rem; + font-weight: 400; +} +.activity-attribute-profiles .aaf-input:focus { + outline: none; + border-color: var(--accent); +} +.activity-attribute-profiles .aaf-split { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; +} +@media (max-width: 560px) { + .activity-attribute-profiles .aaf-split { + grid-template-columns: 1fr; + } +} +.activity-attribute-profiles .aaf-field-select { + padding: 12px 0; + border-bottom: 1px solid var(--border); +} +.activity-attribute-profiles .aaf-field-select:last-child { + border-bottom: none; +} +.activity-attribute-profiles .aaf-field-select .form-label { + display: block; + text-align: left; + margin-bottom: 6px; + font-weight: 600; + flex: unset; +} +.activity-attribute-profiles .aaf-field-select .form-input, +.activity-attribute-profiles .aaf-field-select select.form-input { + width: 100%; + max-width: none; + min-width: 0; + text-align: left; + box-sizing: border-box; + padding: 10px 12px; +} +.activity-attribute-profiles .aaf-toolbar { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + gap: 12px; + padding: 12px 0; + border-bottom: 1px solid var(--border); +} +.activity-attribute-profiles .aaf-toolbar .form-label { + display: block; + text-align: left; + margin-bottom: 6px; + font-weight: 600; + flex: unset; +} +.activity-attribute-profiles .aaf-toolbar__grow { + flex: 1 1 240px; + min-width: 0; +} +.activity-attribute-profiles .aaf-toolbar .form-input, +.activity-attribute-profiles .aaf-toolbar select.form-input { + width: 100%; + min-width: 140px; + max-width: none; + text-align: left; + box-sizing: border-box; + padding: 10px 12px; +} +.activity-attribute-profiles .aaf-toolbar__compact { + flex: 0 0 auto; +} +.activity-attribute-profiles .aaf-toolbar__compact .form-input, +.activity-attribute-profiles .aaf-toolbar__compact select.form-input { + width: 100%; + min-width: 5rem; +} +.activity-attribute-profiles .aaf-inline-edit .form-input, +.activity-attribute-profiles .aaf-inline-edit select.form-input { + text-align: left; + min-width: 4.5rem; + width: auto; + max-width: none; + box-sizing: border-box; + padding: 8px 10px; +} + /* Erfassung: Sub-Navigation (Mobil = Chips, Desktop = linke Spalte) */ .capture-shell { width: 100%; diff --git a/frontend/src/pages/AdminActivityAttributeProfilesPage.jsx b/frontend/src/pages/AdminActivityAttributeProfilesPage.jsx index 89b0af2..da5f762 100644 --- a/frontend/src/pages/AdminActivityAttributeProfilesPage.jsx +++ b/frontend/src/pages/AdminActivityAttributeProfilesPage.jsx @@ -279,7 +279,7 @@ export default function AdminActivityAttributeProfilesPage() { } return ( -
+
← Training (Hub) @@ -378,87 +378,151 @@ export default function AdminActivityAttributeProfilesPage() { style={{ border: '1px solid var(--border)', borderRadius: 8, - padding: 12, + padding: 16, marginBottom: 12, background: 'var(--surface2)', }} > -
- - setParamForm((f) => ({ ...f, key: e.target.value }))} - /> -
-
- - setParamForm((f) => ({ ...f, name_de: e.target.value }))} - /> - setParamForm((f) => ({ ...f, name_en: e.target.value }))} - /> -
-
- -