"use client"; import { useState } from "react"; interface Query { query: string; region: string; count: number; } interface AiSearchModalProps { onStart: (queries: Query[]) => void; onClose: () => void; searchMode?: string; } export function AiSearchModal({ onStart, onClose, searchMode = "custom" }: AiSearchModalProps) { const [description, setDescription] = useState(""); const [loading, setLoading] = useState(false); const [queries, setQueries] = useState([]); const [selected, setSelected] = useState>(new Set()); const [error, setError] = useState(""); async function generate() { if (!description.trim() || loading) return; setLoading(true); setError(""); setQueries([]); try { // Load history for this mode let history: Array<{ query: string; region: string }> = []; if (searchMode !== "custom") { try { const hRes = await fetch(`/api/search-history?mode=${searchMode}`); if (hRes.ok) history = await hRes.json() as Array<{ query: string; region: string }>; } catch { /* ignore */ } } const res = await fetch("/api/ai-search", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ description, searchMode, history }), }); const data = await res.json() as { queries?: Query[]; error?: string }; if (!res.ok || !data.queries) throw new Error(data.error || "Fehler"); setQueries(data.queries); setSelected(new Set(data.queries.map((_, i) => i))); } catch (e) { setError(e instanceof Error ? e.message : "Unbekannter Fehler"); } finally { setLoading(false); } } function toggle(i: number) { setSelected(prev => { const n = new Set(prev); if (n.has(i)) n.delete(i); else n.add(i); return n; }); } function handleStart() { const chosen = queries.filter((_, i) => selected.has(i)); if (!chosen.length) return; onStart(chosen); } return (
e.stopPropagation()} > {/* Header */}

KI-gestützte Suche

Beschreibe deine Zielgruppe — die KI generiert passende Suchanfragen.

{/* Textarea */}