From fc7c1f6c98a5b4d0c7a054a96414e35b1f29ad70 Mon Sep 17 00:00:00 2001 From: Thomas Richter Date: Thu, 29 Jan 2026 11:12:51 +0100 Subject: [PATCH] feat(02-03): add CompletedToggle to show/hide completed tasks - Create CompletedToggle component with checkbox UI - Add showCompleted URL param to +page.server.ts load function - Update +page.svelte to sync preferences with URL - Toggle state persists in localStorage via preferences store - Clicking toggle updates URL and invalidates data for server filter --- src/lib/components/CompletedToggle.svelte | 42 +++++++++++++++++++++++ src/routes/+page.server.ts | 8 +++-- src/routes/+page.svelte | 27 ++++++++++++++- 3 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 src/lib/components/CompletedToggle.svelte diff --git a/src/lib/components/CompletedToggle.svelte b/src/lib/components/CompletedToggle.svelte new file mode 100644 index 0000000..1705d8f --- /dev/null +++ b/src/lib/components/CompletedToggle.svelte @@ -0,0 +1,42 @@ + + + diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index c0d6b77..6e9fca2 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -2,11 +2,13 @@ import type { PageServerLoad, Actions } from './$types'; import { fail } from '@sveltejs/kit'; import { entryRepository } from '$lib/server/db/repository'; -export const load: PageServerLoad = async () => { - const entries = entryRepository.getOrdered({ showCompleted: false }); +export const load: PageServerLoad = async ({ url }) => { + const showCompleted = url.searchParams.get('showCompleted') === 'true'; + const entries = entryRepository.getOrdered({ showCompleted }); return { - entries + entries, + showCompleted }; }; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 96d867f..7cb3720 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,8 +1,32 @@ @@ -11,8 +35,9 @@
-
+

TaskPlaner

+