import { useEffect, useState } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { ChatPanel } from "@/components/chat" interface SearchResult { title: string url: string snippet: string } function App() { const [appName, setAppName] = useState("My App") const [tab, setTab] = useState<"home" | "search" | "chat">("home") useEffect(() => { fetch("/api/info") .then((res) => res.json()) .then((data) => setAppName(data.app_name)) .catch(() => {}) }, []) return (

{appName}

{tab === "home" && (
{appName}

Welkom! Klik op Assistent om te chatten met de AI-assistent, of pas deze pagina aan voor je eigen applicatie.

)} {tab === "search" && } {tab === "chat" && (
)}
) } function SearchPage() { const [query, setQuery] = useState("") const [results, setResults] = useState([]) const [loading, setLoading] = useState(false) const [searched, setSearched] = useState(false) const search = async () => { if (!query.trim()) return setLoading(true) setSearched(true) try { const r = await fetch("/api/ai/search", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: query.trim() }), }) const data = await r.json() setResults(data.results || []) } catch { setResults([]) } finally { setLoading(false) } } return (
Web Search
setQuery(e.target.value)} onKeyDown={e => e.key === "Enter" && search()} placeholder="Zoek op het web..." disabled={loading} />
{searched && ( {loading ? (

Zoeken...

) : results.length === 0 ? (

Geen resultaten gevonden.

) : (
{results.map((r, i) => (
{r.title}

{r.url}

{r.snippet}

))}
)}
)}
) } export default App