Repository navigation
Conversation
In tabbed navigation the project header (z-20, painted later) sits on top of the mobile sidebar (also z-20), so it covers the sidebar's own toggle and only the project icon shows. The sidebar also stayed open after a project was picked, unlike every other sidebar link on mobile. - raise the mobile sidebar overlay above the page headers - collapse the sidebar on mobile when a project is opened Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
Description
With the tabbed project navigation on a phone, the sidebar's own collapse toggle can disappear and leave you with no way to close the sidebar. Steps: open the sidebar from the header icon, pick a project, then try to close the sidebar. The icon at the top left is now the project icon, not the sidebar toggle.
Two causes:
absoluteoverlay atz-20. The tabbed project header (z-20wrapper inprojects/(detail)/[projectId]/layout.tsx, and the same inbrowse/[workItem]/header.tsx) is a flex item that comes later in the DOM, so it wins the tie and its opaque bar paints over the top of the sidebar, covering the sidebar's toggle button.router.push, so on mobile the sidebar stays open over the page. Every other sidebar link (sidebar-item.tsx,project-navigation.tsx, favourites) collapses it below 768px.Changes:
resizable-sidebar.tsx: the mobile overlay usesz-30, above the page headers (dialogs and popovers from propel usez-50and up, so they still sit above it).projects-list-item.tsx: in the non-accordion branch, collapse the sidebar below 768px after navigating, matching the other links. Accordion mode only expands the project's sub-menu, so it is left alone.Desktop is unchanged: the
z-30only applies whenisMobileis true, and the collapse only runs below 768px.Type of Change
Test Scenarios
tsc --noEmit,oxfmt --checkandoxlintclean on the two files (same 3 pre-existing lint warnings as before).cn()over the sidebar's class list for isMobile/isCollapsed in all four combinations: the output is byte-identical to before whenisMobileis false, andz-30replacesz-20when true.z-30it lands on the toggle.References
No existing issue found.
🤖 Generated with Claude Code
Summary by CodeRabbit