feat(ui): admin-configurable glass theme system (5 themes) #101

Merged
KnallerKalle merged 2 commits from feat/admin-theme-system into dev 2026-08-17 19:54:31 +00:00
KnallerKalle commented 2026-08-17 19:54:19 +00:00 (Migrated from github.com)

Plan

Admin-konfigurierbare Design-Themes: viral/trendy Glassmorphism-Familie, im Admin-Panel wählbar, app-weit angewendet (Landing + Interior).

Outcome

  • 5 Glass-Themes: Aurora Klassik (Default), Minzbrise, Lavendeltraum, Sonnenuntergang, Mitternachtsfrost (Dark Glass mit gedimmten Legacy-Flächen + invertierten Text-Variablen für Kontrast)
  • Admin → Einstellungen → Design & Themes: Theme-Karten mit echter Live-Vorschau (Mini-Aurora + Glas-Panel), Klick = sofort angewendet (persistiert via data/app-config.json)
  • html[data-theme] Variable-Blöcke = Single Source of Truth; .app-aurora, .glass-card, .glass-bar, .landing-root konsumieren nur noch Variablen (keine hartcodierte Palette mehr)
  • API: GET /api/admin/theme (öffentlich lesbar, Rendering-Metadaten), PUT admin-only (401/403/400 Pfade abgesichert, id-Validierung gegen Katalog)
  • Layout setzt das Theme server-seitig auf <html data-theme>; Admin sieht den Wechsel sofort, alle anderen beim nächsten Laden
  • i18n: DE + EN Kopie in allen 9 Locales

Impact on release goals

Core Platform um Admin-Konfigurierbarkeit + Personalisierung erweitert. Psychologie-Perspektive: Wahlmöglichkeit („wie soll meine Praxis aussehen?") ist Autonomie-supportiv — kein Zwang, keine Bewertung, passt zur Feldenkrais-Haltung. Units 266 → 274, Blackbox 70 → 79 Checks (Test 21: Round-Trip inkl. Autorisierung, Persistenz, HTML data-theme, Reset).

Blackbox

  • Wird nach Merge auf testing ausgeführt (Test 21 ist im Suite)
  • Lokal: Units 274/274, TSC 0, Build 0

Six-perspectives check

  • Product: viral/trendy Themes (Dark Glass, Aurora-Purpur, Golden Hour) — Share-moment bleibt der gefühlte Wandel, Theme ist der Rahmen dafür
  • Engineering: minimal-diff auf Variablen-Basis, kein Farbwert-Duplikat (CSS = Source of Truth, themes.ts nur Katalog), alle Auth-Pfade getestet
  • Psychology: Autonomie statt Belohnungsmechanik; Dark-Theme respektiert eingeschränkte Bewegung (weniger Helligkeit = weniger Reizüberflutung)
  • Biomechanik/Anatomie: keine Content-Änderungen
  • Feldenkrais: keine Bewertung — Themes sind Einladung, kein Status

Risk

Midnight überschreibt Utility-Flächen (bg-gray-50/100, bg-white, Inputs) — bewusst opak gelassen für Kontrast; falls einzelne Seiten Inkonsistenzen zeigen, ist das ein Folge-Iteration-Punkt (Dark-Kontrast-Audit). :has()-Suppression für die Landing-Aurora unverändert.

Checklist

  • Branch off latest dev
  • Conventional Commits (test-first: rote Guards → Implementierung)
  • Patchlog folgt nach Merge
  • No secrets / no large binaries

This PR was created by an AI agent (OpenHands) on behalf of the user.

## Plan Admin-konfigurierbare Design-Themes: viral/trendy Glassmorphism-Familie, im Admin-Panel wählbar, app-weit angewendet (Landing + Interior). ## Outcome - **5 Glass-Themes**: Aurora Klassik (Default), Minzbrise, Lavendeltraum, Sonnenuntergang, Mitternachtsfrost (Dark Glass mit gedimmten Legacy-Flächen + invertierten Text-Variablen für Kontrast) - Admin → Einstellungen → **Design & Themes**: Theme-Karten mit echter Live-Vorschau (Mini-Aurora + Glas-Panel), Klick = sofort angewendet (persistiert via `data/app-config.json`) - `html[data-theme]` Variable-Blöcke = Single Source of Truth; `.app-aurora`, `.glass-card`, `.glass-bar`, `.landing-root` konsumieren nur noch Variablen (keine hartcodierte Palette mehr) - API: `GET /api/admin/theme` (öffentlich lesbar, Rendering-Metadaten), `PUT` admin-only (401/403/400 Pfade abgesichert, id-Validierung gegen Katalog) - Layout setzt das Theme server-seitig auf `<html data-theme>`; Admin sieht den Wechsel sofort, alle anderen beim nächsten Laden - i18n: DE + EN Kopie in allen 9 Locales ## Impact on release goals Core Platform um Admin-Konfigurierbarkeit + Personalisierung erweitert. Psychologie-Perspektive: Wahlmöglichkeit („wie soll meine Praxis aussehen?") ist Autonomie-supportiv — kein Zwang, keine Bewertung, passt zur Feldenkrais-Haltung. Units 266 → 274, Blackbox 70 → 79 Checks (Test 21: Round-Trip inkl. Autorisierung, Persistenz, HTML `data-theme`, Reset). ## Blackbox - [x] Wird nach Merge auf testing ausgeführt (Test 21 ist im Suite) - [x] Lokal: Units 274/274, TSC 0, Build 0 ## Six-perspectives check - [x] Product: viral/trendy Themes (Dark Glass, Aurora-Purpur, Golden Hour) — Share-moment bleibt der gefühlte Wandel, Theme ist der Rahmen dafür - [x] Engineering: minimal-diff auf Variablen-Basis, kein Farbwert-Duplikat (CSS = Source of Truth, themes.ts nur Katalog), alle Auth-Pfade getestet - [x] Psychology: Autonomie statt Belohnungsmechanik; Dark-Theme respektiert eingeschränkte Bewegung (weniger Helligkeit = weniger Reizüberflutung) - [x] Biomechanik/Anatomie: keine Content-Änderungen - [x] Feldenkrais: keine Bewertung — Themes sind Einladung, kein Status ## Risk Midnight überschreibt Utility-Flächen (`bg-gray-50/100`, `bg-white`, Inputs) — bewusst opak gelassen für Kontrast; falls einzelne Seiten Inkonsistenzen zeigen, ist das ein Folge-Iteration-Punkt (Dark-Kontrast-Audit). `:has()`-Suppression für die Landing-Aurora unverändert. ## Checklist - [x] Branch off latest `dev` - [x] Conventional Commits (test-first: rote Guards → Implementierung) - [x] Patchlog folgt nach Merge - [x] No secrets / no large binaries _This PR was created by an AI agent (OpenHands) on behalf of the user._
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Kalle/ATM!101
No description provided.