# Issue #124: Nav sidebar clicks don't navigate between views ## Summary The `NcAppNavigationItem` components in `App.vue` use `@click` handlers to call `router.push()`, but the component internally renders an `` that intercepts the click event, navigating to `#` (root hash) before the Vue click handler fires. The fix is to use `NcAppNavigationItem`'s built-in `:to` prop which renders the element as a ``, handling navigation natively. ## Plan ### Step 1: Modify `src/App.vue` navigation items For each `NcAppNavigationItem`: 1. Replace `@click="navigate('routeName')"` with `:to="{ name: 'routeName' }"` 2. Remove the `:active` binding since `NcAppNavigationItem` auto-detects active state from `:to` 3. Keep icon template slots unchanged ### Step 2: Remove the `navigate()` function and `useRouter` import Since navigation is now handled by the `:to` prop: - Remove `const router = useRouter()` - Remove the `navigate()` function - Remove `useRouter` from the import (keep `useRoute` since `currentRoute` still needs it) ### Step 3: Keep `currentRoute` if needed, OR remove Actually, with `:to` prop, `NcAppNavigationItem` automatically sets active state. But for routes like `member-detail` that should highlight "Mitglieder", we need the `:active` prop for parent route matching. The `:to` prop only auto-activates on exact route match. **Decision**: Keep `:active` bindings for nav items that have sub-routes (Mitglieder, Familien, Lager) to handle parent-route highlighting. For items with no sub-routes (Beiträge, Berichte, Audit-Log, Einstellungen), `:to` auto-active is sufficient — but for consistency, keep all `:active` bindings. Actually, let me reconsider: the `:to` prop with vue-router uses `router-link-active` class which matches prefix. So `/members/5` would still match `{ name: 'members' }` route... but only if the path matches. Since named routes have exact paths, it depends on `router-link` behavior. **Safest approach**: Keep `:active` bindings for items with child routes, remove them for simple routes. No -- for consistency and zero regression risk, keep ALL `:active` bindings. ### Step 4: Verify build compiles Run `npm run build` to ensure no errors. ## Acceptance Criteria Checklist 1. [ ] Each `NcAppNavigationItem` uses `:to` prop with the correct route object 2. [ ] No `@click="navigate(...)"` handlers remain on navigation items 3. [ ] The `navigate()` function is removed 4. [ ] The `useRouter` import is removed (no longer needed) 5. [ ] `:active` bindings are preserved for parent-route highlighting 6. [ ] Build succeeds without errors 7. [ ] All existing routes still work (no route names changed)