Skip to content

feat: scroll page instead of nested content, Base UI primitives for scroll locking - #102

Merged
barvian merged 4 commits into
mainfrom
max/page-scroll
Aug 26, 2026
Merged

feat: scroll page instead of nested content, Base UI primitives for scroll locking#102
barvian merged 4 commits into
mainfrom
max/page-scroll

Conversation

@barvian

@barvian barvian commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • The app shell no longer traps scroll in a nested content pane. The document (html) is the scroller, with a stable gutter so locking overlays does not shift the page.
  • Banner, sidebar, and topbar are sticky and share the banner's height, so chrome stays put while the page moves, including when the banner dismisses.
  • Vibenet home and the faucet fill short viewports with flex instead of a 100vh calc.
  • Modals and the mobile nav use Base UI Dialog, so focus trapping and document scroll lock work against html rather than a homemade overflow lock on body.
  • Changelog filters are Base UI Select (outline Button trigger) on every breakpoint. The mobile filter sheet is gone.

Test plan

  • Tall page (changelog, explorer): the document scrolls; sidebar and topbar stay put
  • Short page (Vibenet home, faucet): the page still fills the viewport; faucet address chips sit at the bottom
  • Dismiss the banner: sidebar and topbar follow it up
  • Open the mobile menu: it slides in; the page behind it does not scroll; Escape closes it
  • Create Transaction (account demo): focus stays in the dialog; the page behind it does not scroll; Escape / backdrop / Close dismiss it
  • Changelog filters: dropdown is left-aligned to the trigger; Tab shows the button focus outline; picking a value filters the table
  • Changelog on a narrow viewport: same filter pills, no bottom sheet
  • Activity drawer still spans the content column with no horizontal scrollbar
  • Check desktop and mobile banner placement (full-width above the shell vs below the fixed header)

barvian and others added 3 commits August 26, 2026 11:29
Motion rejects null as an animate target, which failed typecheck.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cb-heimdall

cb-heimdall commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

✅ Heimdall Review Status

Requirement Status More Info
Reviews 1/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@vercel

vercel Bot commented Aug 26, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
omni-ui Ready Ready Preview Aug 26, 2026 7:19pm

Request Review

@barvian barvian changed the title Page scroll instead of nested content scroll feat: scroll page instead of nested content, Base UI primitives for scroll locking Aug 26, 2026
@barvian
barvian added this pull request to the merge queue Aug 26, 2026
Merged via the queue into main with commit edcf453 Aug 26, 2026
12 checks passed
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.

3 participants