Light/Dark + EN/DE Toggle oben rechts auf allen Onepager-Sites #13
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Light/Dark-Mode-Toggle + EN/DE-Toggle als kombiniertes Widget oben rechts auf allen 59 Onepager-Sites.
m: "Vielleicht einfach oben rechts für EN/DE und light/dark"
Was bereits da ist
shared/i18n.js— EN/DE-Toggle,data-i18n-toggleauf Button, navigator.language-Detection, localStorage-Persistenz, MutationObserver für live updates. Funktioniert auf allen 59 Sites.tools/contrast-audit.py— WCAG-Kontrast-Lint, läuft post-build (Issue #12)person-dark+person-light,product-darketc.)<style>-Block mit hardcoded Dark-PaletteDesign-Fragen (Shift 1 / Inventor löst)
Toggle-Komponente:
shared/toggles.js(EN/DE + Light/Dark) oder zwei separate?☀/🌙+DE/EN? oder reine Text-Buttons?)prefers-color-schemeals initial-default<head>setztdata-themeBEVOR CSS lädt — sonst flackert'sCSS-Pattern für Theme-Switch:
[data-theme="light"]auf<html>als Wurzel<style>-Blocktheme.cssmit Default-Variablen, per-Site nur AccentLight-Palette-Generation pro Site:
Welche Sites kriegen's tatsächlich:
[data-theme="light"]definiert, aber für aesthetisch-grenzwertige Sites kann m nach Pilot entscheiden, ob sie das Toggle ausblenden.Pilot-Sites für Shift-1: 3-4 Stichproben, die das Spektrum abdecken:
Out of Scope
person-dark.htmletc.) als getrennte Dateien beibehalten oder zusammenlegen — separate DiskussionWorkflow
Wichtig: NICHT selbst nach main mergen. Push only auf eigenen Branch, comment auf Issue mit Commit-Link, head reviewed + merged.
Verwandt: #1 (i18n Rollout), #12 (Kontrast-Fix),
tools/contrast-audit.py.Shift Progress [shift-1]
Worker: cronus (role: inventor)
Duration: 13m
Status: progress
Progress
Shift-1 (Inventor / cronus) komplett — Design-Doc + Shared-Bits + 4 Pilot-Sites. Branch mai/cronus/issue-13-light-dark-en commit
a221367. Design: docs/plans/theme-toggle.md. Audit dark 0/59, light 14/59 (per-site overrides für Shift-2). DESIGN READY FOR REVIEW.Next Steps
Shift-1 (Inventor / cronus): Design + Shared-Bits + 4 Pilot-Sites — DESIGN READY FOR REVIEW
Branch:
mai/cronus/issue-13-light-dark-en— commita221367Design-Doc:
docs/plans/theme-toggle.mdArchitektur (kompakt)
shared/theme.js— Logik:data-themeattr auf<html>, localStorage (onepager-theme),prefers-color-schemeInitial-Default,data-theme-lock="dark"Opt-Out.shared/toggles.js— Fixed-top-right Pill, Sun/Moon SVG + DE/EN Button. Auto-Injection, hängt sich an existing[data-i18n-toggle]Pattern.shared/css/theme.css— Neutrale Light-Defaults: cream#faf9f6bg, AA-konforme grays. Linked vor inline<style>→ Site-Overrides gewinnen.<head>setztdata-themeBEVOR CSS lädt → kein Modus-Flackern bei Reload.templates/base.htmlupgedatet — alle 4 Stellen wired (anti-FOUC, theme.css link, theme.js, toggles.js).Design-Entscheidungen
<head>[data-theme="light"]Attribut:root, source-order kontrollierbarPilot-Sites
#e85040#c63a2c(4.7:1 cream), Cream bg#c9a84c#8a6f1edeep gold (5.4:1), parchment#6b8e23#4a6b18, khaki cream#f4f2e8#6366f1#4f46e5, white bgAlle 4 bauen sauber, Audit passed, Anti-FOUC verifiziert lokal.
Audit-Erweiterung
tools/contrast-audit.pyjetzt mit--dark/--light/--bothFlags:Light-Findings sind hardcoded sub-AA Akzent-Vars (z.B.
--green-dim: #22c55eschafft 2.28:1 auf white) — per-Site overrides nötig im Rollout.Pilot-Visuals (zu prüfen)
Ich kann keine Browser-Screenshots schießen aus dem Worker. Lokal prüfen:
Was zu prüfen ist:
Out of Scope (Shift-2)
data-theme-lock="dark") für aesthetisch-grenzwertige Satire-Sites — m entscheidet welche nach Pilot-Review[data-i18n-toggle]Buttons (während Pilot redundant; i18n.js fängt beide ab)Inventor-Self-Assessment (Shift-2 Eignung)
Ich (cronus) wäre gut geeignet für Shift-2 — Pattern + Edge-Cases bereits durch alle 4 Pilot-Stile durchgegangen, Audit liefert fail-fast Liste. Aber Shift-2 ist Bulk-Mechanik (55 Sites ×
<head>editieren) — passt evtl. besser zu dediziertem Coder-Worker. Final-Decision liegt bei head + m.DESIGN READY FOR REVIEW
Stop. Awaiting m's go/no-go vor Shift-2 Rollout. NICHT autonom nach main mergen.
Verwandt: #1 (i18n Pattern), #12 (Kontrast-Baseline).
Shift-2 (Coder / cronus): Rollout abgeschlossen
Branch:
mai/cronus/issue-13-light-dark-en— commita06a94fAlle Aufgaben abgearbeitet. Bereit für Review + Merge.
Was lief in Shift-2
Bulk-Wiring (53 Sites) via
tools/patch-theme.py --all<head>(vor erstem Paint)<link rel="stylesheet" href="/shared/css/theme.css">vor inline<style><script src="/shared/theme.js">+toggles.jsneben i18n.jsPer-Site Light-Overrides (14 Sites) via
tools/patch-light-overrides.pyAudit aus Shift-1 lieferte die Liste — pro Site nur die failing accent-vars darkened, Brand-Akzent erhalten:
data-theme-lock="dark"(4 Satire-Sites) auf<html>toggles.jsblendet Theme-Button automatisch aus, Lang-Button bleibtFooter-Toggle Removal (52 Sites) via
tools/remove-footer-toggle.pyai-disclosure.jsfooter-Disclosure<div class="footer-toggle">(orakil)QA-Resultate
Lokale HTTP-Smoke-Tests auf 4 Stichproben + alle shared Assets: 200 OK.
Tools committed
Idempotent + reproduzierbar für zukünftige Sites:
tools/patch-theme.py—--allwired alle Sites; einzelne Pfade auch möglichtools/patch-light-overrides.py— per-SiteOVERRIDESdict, einfach erweiterbartools/remove-footer-toggle.py— 4 Patterns abgedeckt; Pattern C/D als Fallback für unkonventionelle StrukturenEdge-Cases dokumentiert
--bg/--bg-*-Naming Convention (paragraphenraiter--dark, danosi--cream, kilofant--elephant-dark): Audit ignoriert sie für Auto-Detection. Light-Mode funktioniert trotzdem über shared/css/theme.css fallback und (für paragraphenraiter) explicit[data-theme="light"]block. Andere Sites haben Bg-naming-Konvention die der audit erkennt.Ready to Merge
NICHT selbst nach main gemerged. Branch ist gepusht, head reviewed + merged.
Verwandt: #1 (i18n Pattern), #12 (Kontrast-Baseline), Issue #13 Shift-1 Comment (Design-Doc + Pilot-Test-Anleitung).
Head-Merge: branch ist nach main gemerged (3-way merge commit pushed) und Dokploy zieht in Kürze.
Audit auf merged main:
--dark: 0/59 sub-AA findings--light: 0/60 sub-AA findings (60 = 59 + die neue lexsiebels-Light-Detection)Done-Label gesetzt — m closes.