'use client'; import React, { useState, useEffect } from 'react'; import { useSearchParams } from 'next/navigation'; import PostCard from '@/components/PostCard'; import SearchBar from '@/components/SearchBar'; import { PostMetadata } from '@/types'; interface SearchClientProps { allPosts: PostMetadata[]; } export default function SearchClient({ allPosts }: SearchClientProps) { const searchParams = useSearchParams(); const query = searchParams.get('q') || ''; const [searchResults, setSearchResults] = useState([]); useEffect(() => { if (!query.trim()) { setSearchResults([]); return; } const searchTerms = query.toLowerCase().trim().split(/\s+/); const filteredPosts = allPosts.filter(post => { const titleMatch = searchTerms.some(term => post.title.toLowerCase().includes(term) ); const excerptMatch = searchTerms.some(term => post.excerpt.toLowerCase().includes(term) ); const tagMatch = post.tags.some(tag => searchTerms.some(term => tag.toLowerCase().includes(term)) ); return titleMatch || excerptMatch || tagMatch; }); setSearchResults(filteredPosts); }, [query, allPosts]); return ( <>
{query.trim() ? ( <>

{searchResults.length} {searchResults.length === 1 ? 'result' : 'results'} for "{query}"

{searchResults.length > 0 ? (
{searchResults.map(post => ( ))}
) : (

No results found for "{query}"

Try using different keywords or browse all posts.

)} ) : (

Enter a search term to find posts

)} ); }