mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 09:01:03 -08:00
* docs(skills): design implementation synchronization * docs(skills): plan implementation synchronization * fix(release): filter internal notes from public body * docs(release): synchronize release workflow guidance * fix(stalker): normalize catalog series flags * fix(stalker): preserve progress with scoped episode IDs * fix(playback): expose strict position persistence * docs(stalker): record series position compatibility * test(skills): validate repository skill contracts * fix(database): keep SQL trace values private * docs(skills): refresh Nx and SQLite ownership * docs(skills): align provider and UI guidance * docs(skills): tighten validated guidance * docs(release): require exact release pushes * style(electron): remove trailing blank line * fix(ci): classify repository skills coverage
2.5 KiB
2.5 KiB
name, description
| name | description |
|---|---|
| iptvnator-theme-style | Use when changing IPTVnator SCSS tokens, shared layout mixins, portal headers, sidebars, detail views, Electron drag regions, or cross-portal visual consistency. |
IPTVnator Theme Style
Canonical Sources
- Theme contexts and app tokens:
apps/web/src/m3-theme.scss - Shared forwarding inventory:
libs/ui/styles/_index.scss - Shared partials:
libs/ui/styles/_portal-layout.scss,libs/ui/styles/_content-grid.scss,libs/ui/styles/_portal-sidebar.scss,libs/ui/styles/_panel-header.scss,libs/ui/styles/_detail-view.scss, andlibs/ui/styles/_detail-view-actions.scss - UI policy and migration debt:
docs/architecture/iptvnator-ui-guidelines.md
The index is a barrel, not a configured Sass include path. Production
consumers currently use relative @use paths to the needed partial.
Token Boundary
- App-owned surfaces, text, separators, hover states, selections, and provider
accents use
--app-*tokens fromm3-theme.scss. - Use
--app-selection-on-colorfor foregrounds placed on the selection accent; do not assume white has enough contrast in both themes. - Angular Material mixins and Material-component overrides may use Material
tokens. Outside Material-owned components, use a
--mat-sys-*token only after proving it is emitted in both light and dark contexts and supplying a real app-token or literal fallback. - Local semantic status colors are acceptable. Existing hard-coded layout, selection, and EPG surface colors are migration debt, not precedent.
Shared Layout Rules
- Extend the matching partial instead of copying a large provider stylesheet. Provider-neutral services and UI use the existing shared data-access/UI libraries; repeated visual structure belongs in a shared Sass partial. Portal-shared consumers use their existing forwarding style modules instead of copied SCSS.
- In an Electron drag region, every interactive descendant—buttons, links,
inputs, overlays, and resize handles—must explicitly use
app-region: no-drag. The shared directive-generated.resize-handledoes not set this centrally yet; consumers in drag regions must cover it themselves and must not assume the generated handle opts out. - A shared change must be checked across M3U, Xtream, Stalker, workspace, portal catalog/shared UI, and unified collections where relevant.
Validation
Run the affected consumer's Nx lint/test/build target. Inspect light and dark themes, selected/hover states, and Electron title-bar drag/no-drag behavior.