--- # nuzlocke-tracker-h205 title: Auth-aware navigation menu status: completed type: task priority: normal created_at: 2026-03-21T10:06:20Z updated_at: 2026-03-21T10:22:34Z parent: nuzlocke-tracker-ce4o blocked_by: - nuzlocke-tracker-5svj --- Update the Layout component to show different nav links based on auth state and admin role. ## Checklist - [x] Replace static \`navLinks\` array with dynamic links based on \`useAuth()\` state - [x] **Logged out**: Home, Runs, Genlockes, Stats (no New Run, no Admin) - [x] **Logged in (non-admin)**: New Run, My Runs, Genlockes, Stats - [x] **Logged in (admin)**: New Run, My Runs, Genlockes, Stats, Admin - [x] Update both desktop and mobile nav (they share the same \`navLinks\` array, so this should be automatic) - [x] Verify menu updates reactively on login/logout ## Files to change - \`frontend/src/components/Layout.tsx\` — make \`navLinks\` dynamic based on auth state ## Summary of Changes - Removed static `navLinks` array from module scope - Added dynamic `navLinks` computation inside `Layout` component using `useMemo` - Navigation now depends on `user` and `isAdmin` from `useAuth()`: - Logged out: Home, Runs, Genlockes, Stats - Logged in (non-admin): New Run, My Runs, Genlockes, Stats - Logged in (admin): New Run, My Runs, Genlockes, Stats, Admin - Updated `isActive` function to handle Home route (`/`) correctly - Both desktop and mobile nav automatically use the same dynamic `navLinks` array