"use client"; import { useState } from "react"; interface Query { query: string; region: string; count: number; } interface AiSearchModalProps { onStart: (queries: Query[]) => void; onClose: () => void; } export function AiSearchModal({ onStart, onClose }: 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 { const res = await fetch("/api/ai-search", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ description }), }); 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 */}