From d737618312510dc81c97e73df5ee456386b10064 Mon Sep 17 00:00:00 2001
From: hsiegeln <37154749+hsiegeln@users.noreply.github.com>
Date: Fri, 17 Apr 2026 17:41:10 +0200
Subject: [PATCH] feat(search): live debounced search with inline hits and
header dropdown
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Homepage (/):
- Tippen > 3 Zeichen + 300 ms Debounce → lokale Suche feuert automatisch
- Treffer erscheinen direkt unter dem Suchfeld als Karten-Grid
- "Zuletzt hinzugefügt" wird ausgeblendet, sobald aktiv gesucht wird
- 0 Treffer + fertig gesucht → Inline-Button "Im Internet weitersuchen"
Header (nur auf /recipes/[id] und /preview):
- Gleiche Debounce-Logik, aber Treffer in einem Dropdown unterm Feld
- Dropdown: kompakte Zeilen mit Thumbnail, Titel, Domain
- Fußzeile des Dropdown: "Im Internet weitersuchen"
- Click-outside und Escape schließen das Dropdown
- afterNavigate setzt Query nach dem Klick auf einen Treffer zurück
- Header-Breite ist jetzt auf 760 px begrenzt (gleich wie Rezept-Content),
damit die Suchleiste nie breiter wird als das Rezept darunter
Race-Safety: Ein zweites Tippen während laufender Fetch überschreibt
die Ergebnisse des ersten Requests nicht (Query-Vergleich vor Write).
---
src/routes/+layout.svelte | 283 ++++++++++++++++++++++++++++++++------
src/routes/+page.svelte | 103 +++++++++++++-
2 files changed, 337 insertions(+), 49 deletions(-)
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 9057876..b857f75 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,56 +1,159 @@
- Kochwas
- {#if showHeaderSearch}
-
- {/if}
-