Applies hover:bg-[var(--color-subtle)] to inactive nav links for
visual feedback on pointer devices.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Renders emoji icons in MobileTabBar (stacked above label),
TabletNavBar (inline), and DesktopSidebar (16px, 20px column).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Proves active state logic generalizes beyond /planner by testing
all 4 mobile nav routes with writable page store.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extracts isActiveRoute() into shared nav module. Matches exact path
or path + '/' prefix, preventing /settings from matching /settings-advanced.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes non-null assertions on householdId/householdName. Users who
haven't joined a household get a fallback name in the sidebar.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Appends ?redirect= with the original pathname so the login page
can redirect back after successful authentication.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Prevents redirect loop when backend is down — login page CSS/JS
would otherwise be redirected to /login.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Verified: SvelteKit's plugin overrides resolve.conditions for SSR
builds. The global 'browser' condition only affects vitest and dev.
Build output confirmed correct with npm run build.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- (app) group with AppShell layout, loads user/household from locals
- (public) group with full-viewport split layout, /login placeholder
- Root / redirects to /planner for authenticated users
- Placeholder stubs for planner, recipes, shopping, settings, members
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Validates session cookie via GET /v1/auth/me, populates event.locals
with benutzer and haushalt, redirects to /login if unauthenticated.
Public routes (/login, /register, /invite) bypass auth.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>