refactor(planner): extract Suggestion type to $lib/planner/types.ts

Removes the inline interface from RecipePicker.svelte and replaces
any[] in +page.svelte with Suggestion[] — compile-time safety.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-09 12:16:02 +02:00
parent 539ca5d231
commit f7a239655a
3 changed files with 15 additions and 13 deletions

View File

@@ -1,16 +1,5 @@
<script lang="ts">
interface Recipe {
id: string;
name: string;
effort?: string;
cookTimeMin?: number;
}
interface Suggestion {
recipe: Recipe;
scoreDelta: number;
hasConflict: boolean;
}
import type { Recipe, Suggestion } from '$lib/planner/types';
let {
planId,

View File

@@ -0,0 +1,12 @@
export interface Recipe {
id: string;
name: string;
effort?: string;
cookTimeMin?: number;
}
export interface Suggestion {
recipe: Recipe;
scoreDelta: number;
hasConflict: boolean;
}

View File

@@ -11,6 +11,7 @@
import BottomSheet from '$lib/components/BottomSheet.svelte';
import UndoBar from '$lib/planner/UndoBar.svelte';
import { prevWeek, nextWeek, getWeekStart, weekDays, formatDayLabel, formatDayAbbr, formatWeekRange, sortEasiestFirst } from '$lib/planner/week';
import type { Suggestion } from '$lib/planner/types';
let { data, form = null }: { data: { weekPlan: any; varietyScore: any; weekStart: string; recipes: any[] }; form?: any } = $props();
@@ -69,7 +70,7 @@
: null
);
let suggestions: any[] = $state([]);
let suggestions: Suggestion[] = $state([]);
let isLoadingSuggestions = $state(false);
// Recipes already in any slot this week — used for ⚠ overlap warnings