From 4c2b2204823cf9de9aae6a5efecb046fd2302f3b Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 30 Apr 2026 19:08:11 +0200 Subject: [PATCH] feat(week): day selection with URL-driven state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - weekKey and selectedDay driven by ?week=&?day= query params - Bare /week canonicalizes via replaceState (adds week+day params) - Chip clicks: replaceState (no history push, no scroll jump) - Week prev/next: goto with history push (back/forward works) - Default day when week changes: today if in week, else Monday - Keyboard navigation: ArrowLeft/Right cycles through chips - Selected chip scrolls into view on selection change - DayDetail always rendered for selectedDay (not just today) - detailCaps reactive on closedDaysMap — updates immediately after close/reopen/mark without extra load() - Chips now wired: selected prop, onclick handler - DayChip tabindex: 0 for selected chip, -1 for others (roving tabindex) --- web/src/routes/week/+page.svelte | 177 +++++++++++++++++++++---------- 1 file changed, 122 insertions(+), 55 deletions(-) diff --git a/web/src/routes/week/+page.svelte b/web/src/routes/week/+page.svelte index ac0d157..7027fa5 100644 --- a/web/src/routes/week/+page.svelte +++ b/web/src/routes/week/+page.svelte @@ -1,14 +1,73 @@
- +

Week {weekKey}

- +
{#if error}

{error}

{/if} -
+ +
{#each dayKeys as dk, i (dk)} - + + selectDay(dk)} + /> + {/each}
@@ -175,12 +243,11 @@ {/if} - {#if detailDayKey && detailCaps} -
-

{detailDayKey}

- -
- {/if} + +
+

{selectedDay}

+ +