OXY-151: responsive TopBar overflow "More" menu - #301
Conversation
Collapse TopBar nav items into a single overflow "More" dropdown below `md`, reusing the OXY-152 DropdownMenu component (the handoff OXY-152 was built for). The inline<->overflow swap is pure CSS `@media` (no JS / matchMedia), so it is SSR/hydration safe. - TopBar.nav(...) / .moreLabel / .moreId; nav items are typed DropdownMenu.Item so inline + collapsed layouts never diverge. - TopBar.responsiveSheet registered in coreOxygenStyleSheets. - package-private accessors on DropdownMenu.Item for inline rendering. - Showcase: ResponsiveTopBarPage (+ sideNav + routes); builders.md docs. - Test: responsiveSheet emits the correct md swap rules. Scope: TopBar overflow only; the rest of OXY-151 (hamburger->Drawer side nav, MatchMedia.isMobile, CenteredCard mobile) remains follow-up. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011YxWKdsz97QT9BD7AdpSq6
🤖 Automated multi-agent review (confirmed findings)MediumReusing These are AI-generated, adversarially-verified findings and may still contain false positives. |
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011YxWKdsz97QT9BD7AdpSq6
OXY-151 — Responsive TopBar overflow "More" menu
Mobile/responsive counterpart to the OXY-152 TopBar dropdown work. Collapses TopBar nav items into a single overflow "More" dropdown on narrow viewports, reusing the OXY-152
DropdownMenucomponent rather than duplicating it — which is exactly the handoff OXY-152 was designed for.What's included
TopBar.nav(items: DropdownMenu.Item*)(+.moreLabel(...),.moreId(...)): nav items declared once as typedDropdownMenu.Items (label / icon /onClickPush/onSelect/disabled/ separator).@media(TopBar.responsiveSheet, registered incoreOxygenStyleSheets) — no JS /matchMedia, so it's SSR/hydration safe (no FOUC):.oxy-topbar-nav— inline items, hidden belowmd..oxy-topbar-overflow— collapsed "More"DropdownMenu, hidden at/abovemd.private[component]accessors onDropdownMenu.Item, so inline + collapsed layouts never diverge.ResponsiveTopBarPage(live bar + forced-narrow 360px frame), wired intoShowcaseLayoutsideNav +UIMainroutes.builders.md"Responsive TopBar (overflow menu)" subsection + updated mobile-shell WIP note.OxygenColorSystemSpecassertsresponsiveSheetemits the correctmdswap rules.Scope
OXY-151 is a broad umbrella (hamburger→
Drawerside nav,MatchMedia.isMobile,CenteredCardmobile TODO). This PR delivers the TopBar overflow "More" menu slice — the specific piece OXY-152 hands off. The remaining sub-scopes are left as documented follow-up.Verification
oxygen-ui-web/compile✓ ·example-ui-web/compile✓ ·oxygen-ui-web/test✓ (46 passed, incl. new)sbt fmtclean.🤖 Generated with Claude Code
https://claude.ai/code/session_011YxWKdsz97QT9BD7AdpSq6