mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 19:46:16 -08:00
fix(detail): keep the Back button from covering detail content
The shell's sticky Back control floated over its scroll owner: it covered the start of the "Seasons and Episodes" heading and the inline player's top-left corner. While Back is shown, every content column (hero, player, episodes, About, extras) now starts after a 72px lane (16 + 40 + 16), published as --detail-back-lane so content-hero and content-about honour it too; hosts without Back (M3U) keep their inset. At the 640px phone breakpoint a column that wide would clip the player controls, so there the wrapper becomes an in-flow 56px sticky bar on --app-header-bg. The season header now wraps its actions onto their own row before the heading wraps (the pane, not the viewport, decides), and the narrow inline player's title ellipsizes inside its card instead of spilling past both edges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
388fa9e29d
commit
377b22124b
11 files changed
+278
-7
No files matched your search
@@ -627,6 +627,11 @@ and `--app-selection-color`; hover uses the app's neutral surface treatment.
|
||||
Keep these treatments in the shared season components and detail-action
|
||||
partial so Xtream and Stalker share the same behavior.
|
||||
|
||||
The season header's actions wrap onto their own row, starting under the
|
||||
"Seasons and Episodes" heading, before the heading itself would wrap. The
|
||||
detail pane is narrower than the window (context panel, the sticky Back lane),
|
||||
so the header's own width decides, not a viewport breakpoint.
|
||||
|
||||
Browser regression coverage measures the composited neutral edges and selected
|
||||
toggle fill, in addition to capturing light/dark grid and list screenshots.
|
||||
Hero action edges use matching pixels from rendered screenshots with the border
|
||||
|
||||
@@ -30,6 +30,18 @@ The button has an opaque app-themed surface, visible keyboard focus, an Escape
|
||||
shortcut hint via native `title` and Electron `no-drag` hit testing. The hint
|
||||
does not create an overlay that could consume the first Escape press.
|
||||
|
||||
The control floats, so the content makes room for it: while it is shown, every
|
||||
content column (hero content, watch-state player, episodes, About and extras)
|
||||
starts after a 72 px lane — 16 px inset, 40 px button, 16 px gap — and no scroll
|
||||
position puts the arrow over a heading or the player. The shell derives the lane
|
||||
from the button's geometry and publishes it as `--detail-back-lane`, which
|
||||
`content-hero` and `content-about` read too; hosts with `backAvailable=false`
|
||||
keep their own inset. The lane is horizontal because watch state is short of
|
||||
height, not width. The phone breakpoint (640 px) is the exception: a 72 px column
|
||||
would clip the player's controls, so there the wrapper becomes an in-flow 56 px
|
||||
sticky bar on `--app-header-bg` that content scrolls beneath. Electron E2E
|
||||
(`detail-back-lane.e2e.ts`) sweeps both states at 1280 and 780 px.
|
||||
|
||||
The sticky control is route-level Back in both states: it emits `backClicked`
|
||||
whether or not inline playback is active, so the arrow keeps one meaning and
|
||||
the list is one click away while watching. Only Escape unwinds one level: watch
|
||||
|
||||
Reference in new issue
Block a user