'use client'; import { useState, Suspense } from 'react'; import { useSearchParams } from 'next/navigation'; import { SearchFilters } from '@/components/search/filters'; import { SearchResults } from '@/components/search/results'; import { SearchFilters as FilterType } from '@/types/search'; import { useSearch } from '@/hooks/use-search'; import { Loader2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { ChevronLeft, ChevronRight } from 'lucide-react'; const PAGE_SIZE = 20; function SearchContent() { const searchParams = useSearchParams(); const query = searchParams.get('q') || ''; const typeParam = searchParams.get('type'); const statusParam = searchParams.get('status'); const [filters, setFilters] = useState({ types: typeParam ? [typeParam] : [], statuses: statusParam ? [statusParam] : [], }); const [page, setPage] = useState(1); const searchDto = { q: query, type: filters.types?.length ? filters.types[0] : undefined, status: filters.statuses?.length ? filters.statuses[0] : undefined, page, limit: PAGE_SIZE, }; const { data: results, isLoading, isError } = useSearch(searchDto); const total = results?.meta?.total ?? 0; const totalPages = Math.ceil(total / PAGE_SIZE); const handleFilterChange = (newFilters: FilterType) => { setFilters(newFilters); setPage(1); }; return ( <>

Search Results

{isLoading ? 'Searching...' : `Found ${total} results${query ? ` for "${query}"` : ''}`}

{isError ? (
Failed to load search results.
) : ( <> {totalPages > 1 && (
Page {page} of {totalPages}
)} )}
); } export default function SearchPage() { return (
} > ); }