4.0 KiB
Task: Sidebar-First Navigation Refactor (Remove Top Navbar/Subnav)
Refactor the dashboard so navigation is fully sidebar-driven, with clear recruiter-facing labels and robust responsive behavior. The current layout is still tied to an older navbar/subnav model and shows incorrect scroll behavior in the sidebar area.
Context
Current implementation has separate top navigation (TopBar, SubNav) and a desktop-only sidebar. On upward scrolling in the sidebar, hidden space becomes visible in a way that implies layered layout offsets from the old top navbar/subnav structure.
Requirements
- Remove top navbar/subnav from the rendered dashboard flow and migrate section navigation into the sidebar.
- Replace section labels with recruiter-facing content labels (no GP/internal metaphors as labels):
- Overview
- Projects
- Experience
- Education
- Skills
- Keep iconography that can still evoke the GP-system metaphor, but labels must match actual portfolio content.
- Add a
Navigationsubheader area in the sidebar for section links. - Keep a separate
My Dataarea aboveNavigationin expanded sidebar mode. - Ensure the sidebar no longer reveals hidden spacing/artifacts when scrolling upward.
- Implement mobile sidebar behavior (currently missing):
- Sidebar is collapsed by default.
- A hamburger control appears at the top and toggles expanded/collapsed state.
- In collapsed mode, render a compact vertical rail with:
- hamburger control at the top
- the five section icons directly beneath for one-tap section jumping
- In expanded mode, reveal full sidebar content:
My DatablockNavigationlinks with icon + text labels- tags, alerts, and highlights sections
- Preserve or improve accessibility:
- Keyboard operable controls
- Correct
aria-*labels for menu toggle and navigation regions - Visible focus states
- Preserve smooth section scrolling/anchor behavior from navigation actions.
Suggested GP-Metaphor Icon Mapping (labels remain recruiter-facing)
Use these concrete icon targets (or closest equivalents from existing icon library):
- Overview:
UserRound(profile summary) - Projects:
Pill(interventions/medications metaphor) - Experience:
Workflow(pathway/Sankey metaphor) - Education:
GraduationCap(training/education) - Skills:
Wrench(capabilities/tools)
Label text must stay recruiter-facing:
Overview,Projects,Experience,Education,Skills
Likely Files In Scope
src/components/DashboardLayout.tsxsrc/components/Sidebar.tsxsrc/components/SubNav.tsxsrc/components/TopBar.tsxsrc/index.css- Any related hooks/types/styles needed for section activity and responsive state
Success Criteria
All of the following must be true:
- No top navbar/subnav is rendered in the final dashboard layout.
- Sidebar contains the five required recruiter-facing nav labels under a
Navigationsubheader. - Expanded sidebar includes a distinct
My Dataarea aboveNavigation. - Sidebar scrolling no longer exposes hidden top spacing/artifacts when scrolling upward.
- Desktop navigation from sidebar correctly jumps/scrolls to each section.
- On mobile, sidebar is collapsed by default with hamburger at top and five icon shortcuts visible.
- On mobile expand, sidebar shows
My Data, full navigation links (icon + text), and tags/alerts/highlights. - Navigation controls are keyboard accessible with appropriate ARIA semantics.
npm run lintpasses.npm run typecheckpasses.npm run buildpasses.
Constraints
- Use the existing project stack and conventions (TypeScript + React + current design language).
- Do not reintroduce GP-style labels like "Significant Interventions" or "Patient Summary" for the sidebar nav text.
- Keep changes focused on layout/navigation behavior; avoid unrelated refactors.
Status
Track implementation progress in this file or .ralph/plan.md.
When all success criteria are met, print LOOP_COMPLETE.