diff --git a/src/lib/components/SeasonSelect.svelte b/src/lib/components/SeasonSelect.svelte index b243fa6..aa6d0bd 100644 --- a/src/lib/components/SeasonSelect.svelte +++ b/src/lib/components/SeasonSelect.svelte @@ -92,6 +92,7 @@ input[type=checkbox]::after {#each months as month}
+
{/each} diff --git a/src/routes/[recipeLang=recipeLang]/tips-and-tricks/+page.svelte b/src/routes/[recipeLang=recipeLang]/tips-and-tricks/+page.svelte index f5ce103..0cbacba 100644 --- a/src/routes/[recipeLang=recipeLang]/tips-and-tricks/+page.svelte +++ b/src/routes/[recipeLang=recipeLang]/tips-and-tricks/+page.svelte @@ -9,11 +9,6 @@ h1{ margin-bottom: 0; font-size: 4rem; } -.subheading{ - text-align: center; - margin-top: 0; - font-size: 1.5rem; -} .content{ max-width: 800px; margin: 0 auto; diff --git a/src/routes/cospend/payments/add/+page.svelte b/src/routes/cospend/payments/add/+page.svelte index 24a00a4..315d663 100644 --- a/src/routes/cospend/payments/add/+page.svelte +++ b/src/routes/cospend/payments/add/+page.svelte @@ -54,11 +54,12 @@ let exchangeRateError = $state(null); let exchangeRateTimeout = $state(); - // Initialize users from server data for no-JS support - let users = $state(predefinedMode ? [...data.predefinedUsers] : (data.currentUser ? [data.currentUser] : [])); - - // Initialize split amounts for server-side users - users.forEach(user => { + // Initialize users from server data for no-JS support (use data directly to avoid reactivity warning) + const initialUsers = data.predefinedUsers.length > 0 ? [...data.predefinedUsers] : (data.currentUser ? [data.currentUser] : []); + let users = $state(initialUsers); + + // Initialize split amounts for server-side users (use initialUsers to avoid reactivity warning) + initialUsers.forEach(user => { splitAmounts[user] = 0; personalAmounts[user] = 0; }); diff --git a/src/routes/cospend/recurring/+page.svelte b/src/routes/cospend/recurring/+page.svelte index 6265470..fa617cf 100644 --- a/src/routes/cospend/recurring/+page.svelte +++ b/src/routes/cospend/recurring/+page.svelte @@ -657,10 +657,6 @@ align-items: stretch; } - .header-actions { - justify-content: space-between; - } - .payments-grid { grid-template-columns: 1fr; } diff --git a/src/routes/cospend/settle/+page.svelte b/src/routes/cospend/settle/+page.svelte index f6abd27..3f90005 100644 --- a/src/routes/cospend/settle/+page.svelte +++ b/src/routes/cospend/settle/+page.svelte @@ -170,8 +170,11 @@

Money You're Owed

{#each debtData.whoOwesMe as debt}
selectSettlement('receive', debt.username, debt.netAmount)}> + onclick={() => selectSettlement('receive', debt.username, debt.netAmount)} + onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); selectSettlement('receive', debt.username, debt.netAmount); } }}>
@@ -192,8 +195,11 @@

Money You Owe

{#each debtData.whoIOwe as debt}
selectSettlement('pay', debt.username, debt.netAmount)}> + onclick={() => selectSettlement('pay', debt.username, debt.netAmount)} + onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); selectSettlement('pay', debt.username, debt.netAmount); } }}>
@@ -259,7 +265,7 @@
-
@@ -668,11 +674,6 @@ cursor: not-allowed; } - .back-actions { - text-align: center; - margin-top: 2rem; - } - .actions { margin-top: 1.5rem; } diff --git a/src/routes/fitness/+layout.server.ts b/src/routes/fitness/+layout.server.ts deleted file mode 100644 index 095d32a..0000000 --- a/src/routes/fitness/+layout.server.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { LayoutServerLoad } from './$types'; - -export const load: LayoutServerLoad = async ({ locals }) => { - return { - session: await locals.auth() - }; -}; \ No newline at end of file diff --git a/src/routes/fitness/+layout.svelte b/src/routes/fitness/+layout.svelte deleted file mode 100644 index 65e7e13..0000000 --- a/src/routes/fitness/+layout.svelte +++ /dev/null @@ -1,139 +0,0 @@ - - -
- - -
- {@render children()} -
-
- - \ No newline at end of file diff --git a/src/routes/fitness/+page.svelte b/src/routes/fitness/+page.svelte deleted file mode 100644 index 39e7173..0000000 --- a/src/routes/fitness/+page.svelte +++ /dev/null @@ -1,432 +0,0 @@ - - -
-
-

Fitness Dashboard

-

Track your progress and stay motivated!

-
- -
-
-
💪
-
-
{stats.totalSessions}
-
Total Workouts
-
-
- -
-
📋
-
-
{stats.totalTemplates}
-
Templates
-
-
- -
-
🔥
-
-
{stats.thisWeek}
-
This Week
-
-
-
- -
-
-
-

Recent Workouts

- View All -
- - {#if recentSessions.length === 0} -
-

No workouts yet. Start your first workout!

-
- {:else} -
- {#each recentSessions as session} -
-
-

{session.name}

-

{formatDate(session.startTime)}

-
-
- {formatDuration(session.duration)} - {session.exercises.length} exercises -
-
- {/each} -
- {/if} -
- -
-
-

Workout Templates

- View All -
- - {#if templates.length === 0} -
-

No templates yet.

-
- Create your first template! - -
-
- {:else} -
- {#each templates as template} -
-

{template.name}

- {#if template.description} -

{template.description}

- {/if} -
- {template.exercises.length} exercises -
- -
- {/each} -
- {/if} -
-
-
- - \ No newline at end of file diff --git a/src/routes/fitness/sessions/+page.svelte b/src/routes/fitness/sessions/+page.svelte deleted file mode 100644 index fde996e..0000000 --- a/src/routes/fitness/sessions/+page.svelte +++ /dev/null @@ -1,457 +0,0 @@ - - -
- - - {#if loading} -
Loading sessions...
- {:else if sessions.length === 0} -
-
💪
-

No workout sessions yet

-

Start your fitness journey by creating your first workout!

- Start Your First Workout -
- {:else} -
- {#each sessions as session} -
-
-

{session.name}

-
-
{formatDate(session.startTime)}
-
{formatTime(session.startTime)}
-
-
- -
-
- Duration - {formatDuration(session.duration)} -
-
- Exercises - {session.exercises.length} -
-
- Sets - {getCompletedSets(session)}/{getTotalSets(session)} -
-
- -
-

Exercises:

-
    - {#each session.exercises as exercise} -
  • - {exercise.name} - {exercise.sets.filter(s => s.completed).length}/{exercise.sets.length} sets -
  • - {/each} -
-
- - {#if session.notes} -
-

Notes:

-

{session.notes}

-
- {/if} - -
- {#if session.templateId} - - 🔄 Repeat Workout - - {/if} - -
-
- {/each} -
- {/if} -
- - \ No newline at end of file diff --git a/src/routes/fitness/templates/+page.svelte b/src/routes/fitness/templates/+page.svelte deleted file mode 100644 index bbd2406..0000000 --- a/src/routes/fitness/templates/+page.svelte +++ /dev/null @@ -1,765 +0,0 @@ - - -
- - - {#if showCreateForm} -
-
-
-

Create New Template

- -
- -
-
- - -
- -
- - -
- -
-

Exercises

- - {#each newTemplate.exercises as exercise, exerciseIndex} -
-
- -
- - - sec -
- {#if newTemplate.exercises.length > 1} - - {/if} -
- -
-
- Sets - -
- - {#each exercise.sets as set, setIndex} -
- Set {setIndex + 1} -
- - - -
- {#if exercise.sets.length > 1} - - {/if} -
- {/each} -
-
- {/each} - - -
- -
- -
- -
- - -
-
-
-
- {/if} - -
- {#if templates.length === 0} -
-

No templates found. Create your first template to get started!

-
- {:else} - {#each templates as template} -
-
-

{template.name}

- {#if template.isPublic} - Public - {/if} -
- - {#if template.description} -

{template.description}

- {/if} - -
-

Exercises ({template.exercises.length}):

-
    - {#each template.exercises as exercise} -
  • - {exercise.name} - {exercise.sets.length} sets - (Rest: {formatRestTime(exercise.restTime || 120)}) -
  • - {/each} -
-
- -
- Created: {new Date(template.createdAt).toLocaleDateString()} -
- -
- - 🏋️ Start Workout - - -
-
- {/each} - {/if} -
-
- - \ No newline at end of file diff --git a/src/routes/fitness/workout/+page.svelte b/src/routes/fitness/workout/+page.svelte deleted file mode 100644 index b121db8..0000000 --- a/src/routes/fitness/workout/+page.svelte +++ /dev/null @@ -1,808 +0,0 @@ - - -
- {#if restTimer.active} -
-
-

Rest Time

-
-
{formatTime(restTimer.timeLeft)}
-
-
-
-
-
- - - -
-
-
- {/if} - -
-
- -
- Started: {currentSession.startTime.toLocaleTimeString()} -
-
-
- - -
-
- -
- {#each currentSession.exercises as exercise, exerciseIndex} -
-
- -
- -
-
- -
-
- Set - Previous - Weight (kg) - Reps - RPE - Actions -
- - {#each exercise.sets as set, setIndex} -
-
{setIndex + 1}
-
- {#if template?.exercises[exerciseIndex]?.sets[setIndex]} - {@const prevSet = template.exercises[exerciseIndex].sets[setIndex]} - {prevSet.weight || 0}kg × {prevSet.reps} - {#if prevSet.rpe}@ {prevSet.rpe}{/if} - {:else} - - - {/if} -
-
- -
-
- -
-
- -
-
- {#if !set.completed} - - {:else} - - {/if} - {#if exercise.sets.length > 1} - - {/if} -
-
- {/each} - -
- - -
-
- -
- -
-
- {/each} - -
- -
-
- -
- - -
-
- - \ No newline at end of file diff --git a/src/routes/glaube/rosenkranz/+page.svelte b/src/routes/glaube/rosenkranz/+page.svelte index a8cca4e..e337aac 100644 --- a/src/routes/glaube/rosenkranz/+page.svelte +++ b/src/routes/glaube/rosenkranz/+page.svelte @@ -162,20 +162,19 @@ function getMysteryForWeekday(date, includeLuminous) { } // Determine which mystery to use based on current weekday -let selectedMystery = $state(getMysteryForWeekday(new Date(), includeLuminous)); -let todaysMystery = $state(selectedMystery); // Track today's auto-selected mystery -let currentMysteries = $state(mysteries[selectedMystery]); -let currentMysteriesLatin = $state(mysteriesLatin[selectedMystery]); -let currentMysteryTitles = $state(mysteryTitles[selectedMystery]); -// Reactive statement to update mystery descriptions when selectedMystery changes +const initialMystery = getMysteryForWeekday(new Date(), true); // Use literal true to avoid capturing reactive state +let selectedMystery = $state(initialMystery); +let todaysMystery = $state(initialMystery); // Track today's auto-selected mystery + +// Derive these values from selectedMystery so they update automatically +let currentMysteries = $derived(mysteries[selectedMystery]); +let currentMysteriesLatin = $derived(mysteriesLatin[selectedMystery]); +let currentMysteryTitles = $derived(mysteryTitles[selectedMystery]); let currentMysteryDescriptions = $derived(data.mysteryDescriptions[selectedMystery] || []); // Function to switch mysteries function selectMystery(mysteryType) { selectedMystery = mysteryType; - currentMysteries = mysteries[mysteryType]; - currentMysteriesLatin = mysteriesLatin[mysteryType]; - currentMysteryTitles = mysteryTitles[mysteryType]; } // Function to handle toggle change