diff --git a/src/lib/components/IconLayout.svelte b/src/lib/components/IconLayout.svelte
index a1096446..4cbf1033 100644
--- a/src/lib/components/IconLayout.svelte
+++ b/src/lib/components/IconLayout.svelte
@@ -6,6 +6,8 @@
export let active_icon
export let routePrefix = '/rezepte'
export let lang = 'de'
+ export let recipes = []
+ export let onSearchResults = (ids, categories) => {}
{label} {data.category}
:
-
+
- {#each rand_array(data.recipes) as recipe}
+ {#each rand_array(filteredRecipes) as recipe}
{/each}
diff --git a/src/routes/[recipeLang=recipeLang]/favorites/+page.svelte b/src/routes/[recipeLang=recipeLang]/favorites/+page.svelte
index bcb9c566..ff4c700a 100644
--- a/src/routes/[recipeLang=recipeLang]/favorites/+page.svelte
+++ b/src/routes/[recipeLang=recipeLang]/favorites/+page.svelte
@@ -27,6 +27,24 @@
: 'Besuche ein Rezept und klicke auf das Herz-Symbol, um es zu deinen Favoriten hinzuzufügen.',
recipesLink: isEnglish ? 'recipe' : 'Rezept'
});
+
+ // Search state
+ let matchedRecipeIds = $state(new Set());
+ let hasActiveSearch = $state(false);
+
+ // Handle search results from Search component
+ function handleSearchResults(ids, categories) {
+ matchedRecipeIds = ids;
+ hasActiveSearch = ids.size < data.favorites.length;
+ }
+
+ // Filter recipes based on search
+ const filteredFavorites = $derived.by(() => {
+ if (!hasActiveSearch) {
+ return data.favorites;
+ }
+ return data.favorites.filter(r => matchedRecipeIds.has(r._id));
+ });
{label} {data.tag}
:
-
+
- {#each rand_array(data.recipes) as recipe}
+ {#each rand_array(filteredRecipes) as recipe}
{/each}