fix(frontend): zirkuläre CSS-Variablen endgültig behoben - kein @theme-Namespace mehr
CI / backend-tests (push) Failing after 2m8s
CI / frontend-build (push) Successful in 21s

Vorheriger Fix (--mabea-* Zwischen-Variablen) hat den Zirkel nur eine Ebene verschoben statt aufgelöst: da @theme weiterhin --color-primary selbst neu definierte (höherer Layer als global.css), zeigte --mabea-primary auf --color-primary, welches wiederum auf --mabea-primary zeigte - derselbe Zirkel, nur indirekt. Coming from CSS-Spec: eine zirkuläre var()-Kette macht die Property zur "guaranteed-invalid value", unabhängig davon über wie viele Zwischenschritte sie läuft.

Echter Fix: kein @theme-Mapping auf --color-* mehr, damit keine Namenskollision mit global.css überhaupt erst entstehen kann. Alle betroffenen Tailwind-Klassen (bg-primary, text-danger, border-l-warning, bg-surface-sunken, text-muted-foreground, ring-primary, etc.) auf Arbitrary-Value-Syntax umgestellt (z.B. bg-[var(--color-primary)]) - referenziert global.css-Variablen direkt, ohne je einen neuen Property-Namen im Theme-Layer zu belegen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
2026-09-07 14:35:48 +02:00
co-authored by Claude Sonnet 5
parent adb4aeef46
commit e6eda26eb2
14 changed files with 122 additions and 94 deletions
+11 -47
View File
@@ -10,50 +10,14 @@
@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/utilities.css" layer(utilities);
/* Zwischen-Variablen mit eigenem Namen: @theme unten braucht dieselben Namen
wie Tailwinds Farb-Namespace (--color-primary etc.), das sind aber EXAKT
dieselben Namen wie in global.css. "--color-primary: var(--color-primary)"
ist eine zirkuläre Referenz auf sich selbst (gleiche Custom Property,
gleiches Element) - laut CSS-Spec wird das zur "guaranteed-invalid value",
die Property bricht dadurch überall weg, nicht nur für Tailwind-Utilities,
sondern auch für jede alte global.css-Regel wie .btn-primary, die dieselbe
Property liest. Über diesen Umweg mit eigenem Namen keine Kollision mehr. */
@layer global-css {
:root {
--mabea-bg: var(--color-bg);
--mabea-surface: var(--color-surface);
--mabea-surface-sunken: var(--color-surface-sunken);
--mabea-border: var(--color-border);
--mabea-border-strong: var(--color-border-strong);
--mabea-text: var(--color-text);
--mabea-text-muted: var(--color-text-muted);
--mabea-primary: var(--color-primary);
--mabea-primary-hover: var(--color-primary-hover);
--mabea-primary-soft: var(--color-primary-soft);
--mabea-danger: var(--color-danger);
--mabea-danger-bg: var(--color-danger-bg);
--mabea-warning: var(--color-warning);
--mabea-warning-bg: var(--color-warning-bg);
--mabea-success: var(--color-success);
--mabea-success-bg: var(--color-success-bg);
}
}
@theme {
--color-background: var(--mabea-bg);
--color-surface: var(--mabea-surface);
--color-surface-sunken: var(--mabea-surface-sunken);
--color-border: var(--mabea-border);
--color-border-strong: var(--mabea-border-strong);
--color-foreground: var(--mabea-text);
--color-muted-foreground: var(--mabea-text-muted);
--color-primary: var(--mabea-primary);
--color-primary-hover: var(--mabea-primary-hover);
--color-primary-soft: var(--mabea-primary-soft);
--color-danger: var(--mabea-danger);
--color-danger-bg: var(--mabea-danger-bg);
--color-warning: var(--mabea-warning);
--color-warning-bg: var(--mabea-warning-bg);
--color-success: var(--mabea-success);
--color-success-bg: var(--mabea-success-bg);
}
/* KEIN @theme-Mapping auf --color-primary/--color-danger/etc.! Das wurde
zweimal versucht (auch über Zwischen-Variablen) und ist beide Male an
zirkulären CSS-Custom-Property-Referenzen gescheitert: sobald Tailwinds
Theme-Namespace denselben Property-Namen wie global.css belegt, gewinnt der
höher priorisierte Theme-Layer die Kaskade für GENAU diesen Namen - jede
var()-Kette, die (auch indirekt) wieder bei diesem Namen landet, wird zur
"guaranteed-invalid value" und bricht app-weit, nicht nur für Tailwind-
Utilities. Statt eigener Theme-Tokens werden bestehende global.css-Variablen
deshalb überall direkt per Tailwind-Arbitrary-Value-Syntax genutzt, z. B.
`bg-[var(--color-primary)]` statt `bg-primary` - keine Namenskollision mehr
möglich, da kein neuer Property-Name im Theme-Layer definiert wird. */