'use client'; import { useSearchParams, useRouter } from 'next/navigation'; import { useState, useEffect, useRef, FormEvent, Suspense } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { Search, ArrowLeft, FileText } from 'lucide-react'; interface SearchResult { title: string; description: string; thumbnail?: string; } function SearchContent() { const searchParams = useSearchParams(); const router = useRouter(); const initialQuery = searchParams.get('query') || ''; const [query, setQuery] = useState(initialQuery); const [results, setResults] = useState([]); const [loading, setLoading] = useState(false); const [searched, setSearched] = useState(false); const lastSearchedQuery = useRef(null); useEffect(() => { if (initialQuery && initialQuery !== lastSearchedQuery.current) { lastSearchedQuery.current = initialQuery; performSearch(initialQuery); } }, [initialQuery]); const performSearch = async (searchQuery: string) => { if (!searchQuery.trim()) return; setLoading(true); setSearched(true); try { const response = await fetch(`/api/search?query=${encodeURIComponent(searchQuery)}`); const data = await response.json(); setResults(data.results || []); } catch (error) { console.error('Search failed:', error); setResults([]); } finally { setLoading(false); } }; const handleSearch = (e: FormEvent) => { e.preventDefault(); if (query.trim()) { router.push(`/search?query=${encodeURIComponent(query.trim())}`); } }; return (
{/* Clean header */}
setQuery(e.target.value)} placeholder="Search Wikipedia..." className="flex-1 bg-transparent outline-none text-foreground placeholder:text-muted-foreground/70 text-[15px]" autoFocus /> {query && ( )}
{/* Results area */}
{loading ? (
{[...Array(5)].map((_, i) => (
))}
) : results.length > 0 ? (

{results.length} result{results.length !== 1 ? 's' : ''} for "{initialQuery}"

{results.map((result, index) => (
{result.thumbnail ? (
) : (
)}

{result.title}

{result.description && (

{result.description}

)}
))}
) : searched ? (

No results found for "{initialQuery}"

Try different keywords or check the spelling

) : (

Enter a search term to find articles

)}
); } export default function SearchPage() { return (
Loading...
}> ); }