fix(ui): declare Material system tokens and migrate dead --mdc overrides

The theme is built with the legacy mat.define-theme config, whose component
mixins never declare the --mat-sys-* system variables, so every app style
that read one resolved to nothing. Declare them with mat.system-level-* for
the light (html) and dark (.dark-theme) contexts.

Material 22 reads only --mat-* component tokens, so the remaining --mdc-*
overrides compiled but did nothing. Move them to the mat.*-overrides()
mixins (which reject unknown names at build time) and add a CI guard,
styles:material-tokens:validate, that rejects retired --mdc-* names.

Where a now-resolving token changed a shipped surface for the worse, keep
the shipped look:
- form fields keep the theme's outline roles (the hairline app token gave
  inputs a 1.4:1 boundary) and default text sizes (a 13px field floated a
  10px label);
- M3U and collection live views and the radio hero sit on --app-content-bg
  like the Xtream/Stalker live views, instead of the M3 neutral surface;
- the rail brand stays untiled.

Adds the global .app-destructive-button class (adopted by the follow-up
confirmation change) and the theme-tokens Electron E2E, and updates the
token policy in the UI guidelines and the theme skill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 committed 2026-10-01 06:43:00 +02:00
1 parent adb4889b0f
commit cccb7bff1c
27 files changed
+448 -77

No files matched your search

+3
View File
@@ -375,6 +375,9 @@ jobs:
- name: Validate stylesheet Nx inputs
run: pnpm run styles:inputs:validate
- name: Validate Angular Material token overrides
run: pnpm run styles:material-tokens:validate
- name: Typecheck web and Electron entry points
run: pnpm run typecheck:ci