Neues client/src/lib/theme.ts verwaltet die Wahl (system/light/dark) in localStorage. Umschalter-Button im Header (zyklisch: System -> Hell -> Dunkel), Icon zeigt den aktuellen Modus. CSS-Variablen (--bg/--card/--text/--muted/ --bor/--cyan) bekommen einen Hell-Override über [data-theme="light"] bzw. @media(prefers-color-scheme:light) ohne explizites [data-theme="dark"] - so gewinnt eine manuelle Wahl in beide Richtungen gegen die Systemeinstellung. Header/Tabs/Login bleiben bewusst immer dunkel-navy (Markenidentität), nur der Content-Bereich wechselt. Inline-Script in index.html verhindert ein kurzes Aufblitzen des falschen Farbschemas vor dem ersten Paint. Temporärer test-build-only.yml Workflow zur Verifikation ohne Registry-Push. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
851 B
HTML
24 lines
851 B
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1" />
|
||
<meta name="theme-color" content="#0a1622" />
|
||
<link rel="icon" href="/icons/favicon-32.png" sizes="32x32" />
|
||
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
|
||
<title>BergVOLT Elektrotechnik – Materialschein</title>
|
||
<script>
|
||
// Vor dem ersten Paint anwenden, damit bei explizit gewähltem Theme (abweichend
|
||
// von der Systemeinstellung) kein kurzes Aufblitzen des falschen Farbschemas passiert.
|
||
try {
|
||
var t = localStorage.getItem('bv_theme');
|
||
if (t === 'light' || t === 'dark') document.documentElement.setAttribute('data-theme', t);
|
||
} catch (e) {}
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<div id="root"></div>
|
||
<script type="module" src="/src/main.tsx"></script>
|
||
</body>
|
||
</html>
|