Skip to content

Stacked phone layout: player, title, chat and controls in one column - #29

Open
sbddesign wants to merge 1 commit into
mainfrom
feat/mobile-layout
Open

Stacked phone layout: player, title, chat and controls in one column#29
sbddesign wants to merge 1 commit into
mainfrom
feat/mobile-layout

Conversation

@sbddesign

Copy link
Copy Markdown
Contributor

Why

Stephen: "doesn't work great on mobile". Checked the live site at 375×812:

  • Header buttons overflowed the right edge by 15px (CHAT / SOUND: OFF clipped), "4 watching" wrapped onto two lines.
  • Full-bleed player letterboxed the clip into a ~210px band; ~70% of the screen was black.
  • TAP FOR SOUND hint sat on top of the title box whenever the title wrapped.
  • Chat overlay covered the video completely.
  • 14px inputs make iOS Safari zoom on focus; no safe-area padding under the bottom bar.

What

Below md the page is a flex column: header → aspect-video player → lower third → live chat inline (or "Up next" list when chat is off) → bottom bar. The wrapper around the player column is display: contents on phones so those pieces are laid out directly by <main>; from md up it becomes the positioned column again and everything is the same TV-style overlay as before. Desktop is unchanged.

Phone-only tweaks: viewer count moves into the lower third, sound button is a short 🔊/🔇 toggle, inputs are 16px (md:text-sm), bottom bar pads past the home indicator (viewport export with viewportFit: "cover" + safe-area-inset-bottom).

Everywhere: TAP FOR SOUND is centered on the player instead of overlapping the title. /c/<id> replay page gets the same stacked layout.

ChatPanel loses its open/onClose overlay props and the mobile CHAT button; it is always inline now.

Verified

  • tsc --noEmit clean, next build green.
  • Local screenshots at 375×812 (chat on, chat off, modal, /c/) and 1280×800 (chat on, chat off, /c/): no horizontal overflow, all header buttons inside the viewport, chat input computed at 16px.

Not tested on a physical iPhone — safe-area padding and the no-zoom behavior are the two things worth a real-device tap.

…column

On a portrait phone the full-bleed player letterboxed a 16:9 clip into a
~210px band with ~70% of the screen black, and the header buttons
overflowed the right edge by 15px at 375px wide (CHAT and SOUND were cut
off). The chat overlay also hid the video entirely while open.

Below md the page is now a flex column: header, aspect-video player,
lower third, live chat (inline, always visible when enabled) or an
"Up next" list when chat is off, and the bottom bar. The wrapper around
the player column is `display: contents` on phones so those pieces are
laid out directly by <main>; from md up it turns back into the
positioned column and every piece becomes the same TV-style overlay as
before. Desktop layout is unchanged.

Also on phones: viewer count moves from the header chip into the lower
third, the sound button becomes a short 🔊/🔇 toggle, inputs use 16px so
iOS Safari stops zooming the page on focus, and the bottom bar pads past
the home indicator (viewport-fit=cover + safe-area-inset-bottom).

Everywhere: the TAP FOR SOUND hint is centered on the player instead of
sitting on top of the title when it wraps to two lines.

The /c/<id> replay page gets the same stacked treatment.
@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
infinite Ready Ready Preview Sep 2, 2026 11:06pm UTC

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant