mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-13 04:26:16 -08:00
fix(ui): make the workspace usable on phone-sized screens
The shell was half-adapted below 640px: the rail flipped to a horizontal bar but the link lists inside it kept stacking downwards, so the navigation was drawn outside the bar and over the header (#1100). Three resizable rails — the shell context panel, the live-layout channel sidebar and the M3U channel drawer — kept their persisted desktop width, which left the content around 50px on a 375px screen. They now span the full width and stack above the content. The inline width written by ResizableDirective is why these rules need `!important`. Found while walking the rest of the UI at 375px and 768px: - The detail hero kept poster and details side by side, squeezing the action row below its own labels until "Play" was clipped to its icon. - The settings section list did not scroll and painted over the footer, which also affected short desktop windows. - Hiding the M3U channel list on a phone was one-way: the restore handle was hidden and only Cmd/Ctrl+B could bring it back. - The live header drew the channel count and the paginator on top of each other up to tablet width, because the paginator does not shrink and the meta collapsed to zero width and overflowed its box. - The search scope checkbox was pushed off the right edge. Live TV states a floor for the player instead of a ceiling for the lists, so the video keeps a usable share of the screen under the categories panel and the channel list. Closes #1100 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
814161274b
commit
52d47a5a39
19 files changed
+406
-19
No files matched your search
@@ -253,9 +253,11 @@ remain local when the meaning is explicit.
|
||||
width is preserved so uncollapsing restores the user's previous resized
|
||||
width. Both rails share the same 180 ms width transition so motion stays in
|
||||
lockstep.
|
||||
- Below 600 px viewport, the M3U layout's mobile bottom-drawer rule overrides
|
||||
the desktop collapse to `height: 0` instead of `width: 0`, and the floating
|
||||
restore handle is hidden.
|
||||
- At the phone breakpoint the M3U layout's bottom-drawer rule overrides the
|
||||
desktop collapse to `height: 0` instead of `width: 0`. The floating restore
|
||||
handle stays visible there: the collapse toggle is reachable by touch, so
|
||||
hiding the handle left a phone with no way to bring the list back short of
|
||||
`Cmd/Ctrl+B`.
|
||||
|
||||
### EPG Card
|
||||
|
||||
@@ -331,6 +333,50 @@ Settings use the same system but are flatter than content-heavy views.
|
||||
- Neutral rows can use low-opacity dark overlays
|
||||
- Keep strong blue tint reserved for active sections and selected items
|
||||
|
||||
## Phone Layout
|
||||
|
||||
`640px` is the phone breakpoint. Use `@media (max-width: 640px)` rather than
|
||||
inventing a nearby value: several surfaces cooperate at this width, and a
|
||||
component that picks `599px` leaves a band where the shell has already stacked
|
||||
but the component has not.
|
||||
|
||||
### Rails become rows or stacks
|
||||
|
||||
- The workspace shell rail turns into a horizontal top bar. Everything inside
|
||||
it has to opt into the row direction — a nested list that keeps
|
||||
`flex-direction: column` stacks its links out of the bar and over the header.
|
||||
The bar scrolls sideways once a portal contributes its sections, and the
|
||||
settings link is `position: sticky` so it never scrolls out of reach.
|
||||
- Side rails stack above the content instead of beside it: the shell context
|
||||
panel, the live-layout channel sidebar, and the M3U channel drawer.
|
||||
|
||||
### Resizable rails need `!important`
|
||||
|
||||
`ResizableDirective` writes the persisted desktop width as an inline style, so
|
||||
a phone rule must be `width: 100% !important` to win. Hide `.resize-handle` in
|
||||
the same rule — dragging is meaningless at full width. Since there is no global
|
||||
`border-box` reset, a full-width rail with its own padding also needs
|
||||
`box-sizing: border-box` or it overflows the viewport.
|
||||
|
||||
### State the content's floor, not the list's ceiling
|
||||
|
||||
On routes that stack two lists above the player (live TV shows the categories
|
||||
panel and the channel list), capping both lists still leaves the video a
|
||||
sliver. Give the player container a `min-height` instead and let the lists
|
||||
shrink into what is left.
|
||||
|
||||
### What to drop
|
||||
|
||||
Prefer removing a control over shrinking everything around it:
|
||||
|
||||
- Keyboard-only affordances — the `⌘K` badge, the shortcuts button.
|
||||
- The `mat-paginator` page-size select, which is the widest part of the
|
||||
control and the least useful one on a phone. The range and arrows stay.
|
||||
- Counts and subtitles that a neighbouring control already states.
|
||||
|
||||
Never drop the only way back to a hidden surface. A collapse toggle that is
|
||||
reachable by touch needs its restore affordance to be reachable too.
|
||||
|
||||
## Theme Guidance
|
||||
|
||||
### Light Theme
|
||||
|
||||
Reference in new issue
Block a user