fix: mobile drawer chrome parity with desktop sidebar (MOBILE-SHELL-PARITY) #27
Reference in New Issue
Block a user
Delete Branch "feat/mobile-shell-parity"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Brings the migrated PrimeVue mobile drawer chrome to parity with the desktop sidebar. Frontend-only (
apps/app/components-v2/layout), perBACKLOG.mdMOBILE-SHELL-PARITY.Defects fixed
SidebarHeaderreadshell.sidebarCollapseddirectly, so a desktop-collapsed state rendered a collapsed brand row inside the full-width (256px) mobile drawer while the nav/switcher were forced expanded. NeweffectiveCollapsedcomputed (!isMobile && sidebarCollapsed) forces the header expanded on mobile.header: 'hidden'(lost to base.p-drawer-headerdisplay in stylesheet order) and overlapped the brand row. Suppressed at source with:show-close-icon="false"(also fixes an a11y trap: with the button merelydisplay:none,Drawer.focus()falls back to focusing it and strands keyboard focus) +header: '!hidden'to collapse the empty band. The mobile close affordance now lives inSidebarHeader's brand row — an X ("Close menu"), reusing the existing handler — mirroring the desktop collapse-chevron slot.@primeuixbase CSS) showed the drawer content is already a correct full-height flex column (.p-drawer-left .p-drawer-content { height:100% }+flex-grow:1); addedmin-h-0flex hygiene rather than fabricate a redundant height fix. Not yet device-verified — if it clips on a real phone, the suspect is dynamic-viewport-height (address bar). Tracked in BACKLOG.Quality gates
components-v2/layout/;vue-tsc --noEmitexit 0.Notes
MobileDrawerStorybook story is the manual verification target (narrow window <1024px).chore: exempt .claude/worktrees/ from protect-files hook) so isolated subagents can edit their own worktree.docs: grant Claude push/PR/merge authority(CLAUDE.md policy change requested by Bert) — this PR is self-merged under that new policy now that the gate is green.🤖 Generated with Claude Code
MOBILE-SHELL-PARITY defect 2. PrimeVue's default drawer header close-X was leaking through 'header: hidden' (non-important 'hidden' lost to PrimeVue's base .p-drawer-header display in stylesheet order) and overlapping the brand row. Force-hide it with the important variant '!hidden' (matching the file's existing !w-64), and provide the mobile close affordance in SidebarHeader's brand row: on mobile the top-right control renders an X ('Sluit menu') and closes the drawer (handleCollapseClick already calls setMobileOpen(false) on mobile), mirroring the slot the desktop sidebar uses for its collapse chevron. Single, non-overlapping close control; showCloseIcon is left at its default. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>