fix(design-system): glass-panel rules now actually apply backdrop-filter #98

Merged
varutasu merged 1 commit from fix-glass-panel-backdrop-stripped into main 2026-06-03 22:38:38 -04:00

View file

@ -439,18 +439,29 @@ body {
from Tailwind (the class itself doesn't set border-radius
because consumers vary between rounded-xl and rounded-2xl).
============================================================ */
/* IMPORTANT backdrop-filter quirks with Next.js 16's Lightning CSS:
1) `backdrop-filter: blur(var(--X)) saturate(var(--Y))` is silently
stripped from the compiled CSS (same root cause that emptied
`.mobile-nav-backdrop` in production). Use LITERAL values.
2) Writing both `backdrop-filter` and `-webkit-backdrop-filter` with
identical values triggers Lightning CSS's de-dup; it keeps only the
`-webkit-` form which Chrome/Edge/Firefox ignore. Write only the
unprefixed `backdrop-filter` and let Lightning CSS's autoprefixer
add the vendor prefix per browserslist (it does for ios_saf <18).
If the blur radii ever need to change, change them here AND in the
matching --glass-blur-* tokens (kept for `<GlassSurface>` JSX consumers
which set `backdropFilter` via inline style those are unaffected by
the Lightning CSS optimizer). */
.glass-panel {
background-color: var(--glass-surface-mid);
backdrop-filter: blur(var(--glass-blur-mid)) saturate(var(--glass-saturate));
-webkit-backdrop-filter: blur(var(--glass-blur-mid)) saturate(var(--glass-saturate));
backdrop-filter: blur(12px) saturate(180%);
border: 1px solid var(--rim-light-outer);
box-shadow: var(--elevation-ambient), inset 0 1px 0 var(--rim-light-inner);
}
.glass-panel-strong {
background-color: var(--glass-surface-high);
backdrop-filter: blur(var(--glass-blur-high)) saturate(var(--glass-saturate));
-webkit-backdrop-filter: blur(var(--glass-blur-high)) saturate(var(--glass-saturate));
backdrop-filter: blur(20px) saturate(180%);
border: 1px solid var(--rim-light-outer);
box-shadow: var(--elevation-pronounced), inset 0 1px 0 var(--rim-light-inner);
}