Skip to content

feat(tabs): scroll overflowing tabs instead of overflowing the container - #832

Draft
PeerRich wants to merge 1 commit into
mainfrom
peer/eng-3366-enterprise-dashboard-mobile-responsive-f1e3
Draft

feat(tabs): scroll overflowing tabs instead of overflowing the container#832
PeerRich wants to merge 1 commit into
mainfrom
peer/eng-3366-enterprise-dashboard-mobile-responsive-f1e3

Conversation

@PeerRich

@PeerRich PeerRich commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Tab strips with many tabs (dashboards, settings) ran off the side of the screen on mobile with no way to reach the hidden tabs — TabsList was w-fit with no overflow handling, so it pushed the page sideways instead of scrolling. TabsList now wraps its tabs in a ScrollArea (the same pattern the calcom example uses for its bookings nav), so an overflowing list scrolls horizontally and stays inside its container.

  • scrollable (default true) opts out for lists that need to size themselves freely, e.g. className="w-full" — noted in the docs and changelog since that's the one behaviour change for existing consumers.
  • scrollFade (default false) fades the edges while there is more to scroll to.
  • The scroll viewport is bled by 2px (-m-0.5 + inner p-0.5) so tab focus rings and the active indicator aren't clipped at the edges.

Adds a p-tabs-14 scrollable example, docs props table entries and a changelog entry.

Before/after on a 390px viewport

Verified in the docs app at 390px and 1280px: overflowing lists scroll (pointer + arrow keys scroll the focused tab into view), non-overflowing lists and lists next to flex siblings are unchanged, focus rings are not clipped, and the existing Preview/Code and install tabs in the docs still render correctly. bun run typecheck and bun run lint pass; registry rebuilt and ui:sync run.

TabsList now wraps its tabs in a ScrollArea, so a list that is wider than
its container scrolls horizontally instead of pushing the page sideways on
small screens. The scroll viewport is bled by 2px so focus rings and the
active indicator are not clipped.

Adds `scrollable` (default true) and `scrollFade` props, a scrollable tabs
particle, docs and a changelog entry.

Generated with [Linear](https://linear.app/calcom/issue/ENG-3366/enterprise-dashboard-mobile-responsive#agent-session-77ec4890)

Co-authored-by: linear-code[bot] <222613912+linear-code[bot]@users.noreply.github.com>
@linear-code

linear-code Bot commented Aug 4, 2026

Copy link
Copy Markdown

ENG-3366

@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
coss-com Ready Ready Preview Aug 4, 2026 8:03pm
coss-com-ui Ready Ready Preview Aug 4, 2026 8:03pm
coss-examples-calcom Ready Ready Preview Aug 4, 2026 8:03pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
coss-com-origin Skipped Skipped Aug 4, 2026 8:03pm

Request Review

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant