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:
@@ -1,16 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
interface Recipe {
|
import type { Recipe, Suggestion } from '$lib/planner/types';
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
effort?: string;
|
|
||||||
cookTimeMin?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Suggestion {
|
|
||||||
recipe: Recipe;
|
|
||||||
scoreDelta: number;
|
|
||||||
hasConflict: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let {
|
let {
|
||||||
planId,
|
planId,
|
||||||
|
|||||||
12
frontend/src/lib/planner/types.ts
Normal file
12
frontend/src/lib/planner/types.ts
Normal 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;
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
import BottomSheet from '$lib/components/BottomSheet.svelte';
|
import BottomSheet from '$lib/components/BottomSheet.svelte';
|
||||||
import UndoBar from '$lib/planner/UndoBar.svelte';
|
import UndoBar from '$lib/planner/UndoBar.svelte';
|
||||||
import { prevWeek, nextWeek, getWeekStart, weekDays, formatDayLabel, formatDayAbbr, formatWeekRange, sortEasiestFirst } from '$lib/planner/week';
|
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();
|
let { data, form = null }: { data: { weekPlan: any; varietyScore: any; weekStart: string; recipes: any[] }; form?: any } = $props();
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@
|
|||||||
: null
|
: null
|
||||||
);
|
);
|
||||||
|
|
||||||
let suggestions: any[] = $state([]);
|
let suggestions: Suggestion[] = $state([]);
|
||||||
let isLoadingSuggestions = $state(false);
|
let isLoadingSuggestions = $state(false);
|
||||||
|
|
||||||
// Recipes already in any slot this week — used for ⚠ overlap warnings
|
// Recipes already in any slot this week — used for ⚠ overlap warnings
|
||||||
|
|||||||
Reference in New Issue
Block a user