fix(ui): align compact channel row consumers

This commit is contained in:
4gray committed 2026-07-30 02:20:22 +02:00
1 parent 13f76fceb1
commit e243a44c6b
34 files changed
+404 -30

No files matched your search

+10 -5
View File
@@ -138,17 +138,22 @@ The shared row should be reused instead of rebuilding channel markup per view.
### Responsive Information Priority
- EPG-enabled, noncompact rows keep a fixed `68px` height that matches the
virtual-scroll stride. EPG-disabled, compact rows retain their existing
`52px` minimum height.
virtual-scroll stride. EPG-disabled, compact rows use a matching fixed `52px`
row and virtual-scroll size.
- At `310px` and below, hide the end time while keeping the start time and
progress bar.
- At `270px` and below, hide the decorative logo while retaining program
context and actions, and tighten horizontal padding to preserve the remaining
content.
- At `220px` and below, hide the start time while keeping the progress bar.
- Narrow width alone must not remove the channel name, program title or
no-program placeholder, progress bar, drag affordance when applicable, or
enabled actions.
- In EPG-preview rows, narrow width alone must not remove the channel name,
program title or no-program placeholder, progress bar, drag affordance when
applicable, or enabled actions.
- Radio consumers without EPG render the row as compact instead of showing a
false no-program placeholder. Compact rows keep the logo at `270px`, then
hide the logo and actions at `220px`.
- `isRadio` alone must not change row height inside a fixed-size mixed virtual
list; the consumer's `showEpg` state and virtual-scroll item size own density.
- Loading skeletons mirror the same responsive hierarchy and row geometry.
### Logo Rules
@@ -245,7 +245,9 @@ Replace the current `max-width: 220px` action-hiding rule with:
The end time is already hidden by the wider breakpoint. Channel name, current
programme or placeholder, progress, drag affordance, and every enabled action
remain available in EPG rows. The `.compact` branch deliberately preserves the
existing radio/non-EPG degradation.
existing non-EPG degradation; radio-only consumers without EPG opt into that
branch through `showEpg=false`, rather than changing mixed-list height through
`isRadio`.
- [ ] **Step 4: Match skeleton degradation to the live row**
@@ -54,8 +54,10 @@ loading content does not jump between incompatible layouts.
and global channel lists. The contract therefore applies consistently wherever
the host becomes narrow. This PR does not add provider-specific overrides.
Radio rows and compact rows without EPG keep their existing behavior. The
change does not add EPG data where a consumer currently disables it.
Compact rows without EPG keep their existing behavior. Radio-only consumers
that do not expose EPG mark their rows compact; `isRadio` alone never changes
height inside a fixed-size mixed virtual list. The change does not add EPG data
where a consumer currently disables it.
## Alternatives Considered