Mobile: swipe navigation + scroll-instead-of-clip slides#3
Open
socalindc wants to merge 1 commit into
Open
Conversation
On phones, a slide whose content runs taller than the viewport was clipped at both ends (flex centering + overflow hidden), and the only way to advance was the small dock arrows. - Deck.tsx: quick horizontal swipes page the deck (build reveals included). Vertical drags are left free for slide scrolling; slow or diagonal drags don't page; touches on the dock, rail, grid, presenter, annotator, and form controls are ignored. - base.css (≤640px): slides become scroll containers with `justify-content: safe center` — short slides stay centered, tall ones scroll, with bottom padding so the last content clears the dock. The atmosphere layer is pinned static (its -15% bleed + drift scale created ~140px of phantom scroll on every slide once slides could scroll). Split stacks by content height instead of crushing media into the leftover row. StatGrid compacts to 2-up cards so six stats fit one phone screen. Dock and annotator bar respect safe-area insets. - index.html: viewport-fit=cover for notched phones. - SKILL.md: document the phone behavior per CONTRIBUTING. npx tsc --noEmit and npm run build both pass; desktop (>640px) rendering is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On phones the deck was hard to use two ways: a slide whose content runs taller than the viewport was clipped at both ends (the stage centers and hides overflow, so e.g. a 6-cell
StatGridrendered as a blank slide at 375×812), and the only way to advance was the small dock arrows.Changes
Deck.tsx): a quick horizontal swipe pages the deck, including<Build>reveals. Vertical drags are left free for slide scrolling; slow or diagonal drags don't page; touches on the dock, rail, grid view, presenter panel, annotator, and form controls are ignored. Listeners are passive.base.css≤640px): slides become scroll containers withjustify-content: safe center— short slides stay visually centered, tall ones scroll from the top, with bottom padding so the last content clears the dock. The atmosphere layer is pinned static there (its-15%bleed plus the drift animation's scale created ~140px of phantom scroll on every slide once slides could scroll).Splitstacking (≤640px): the media pane keeps its natural height (minmax(min-content, 1fr)) instead of being crushed into the leftover row, and the slide scrolls when the stack runs long.StatGrid(≤640px): compacts to 2-up cards so six stats fit one phone screen (full-width stacking ran ~1.5 screens tall).min-widthand panning sideways, which buried the right-hand columns.overflow-x: autoremains as the escape hatch for genuinely too-wide tables.env(safe-area-inset-bottom);viewport-fit=coveradded to the viewport meta.Testing
npx tsc --noEmitandnpm run buildboth pass.🤖 Generated with Claude Code