'use client'; import * as React from 'react'; import { Button } from '@/components/ui/button'; import { Select } from '@/components/ui/select'; import type { ListingDetail, PaginatedResult } from '@/lib/listings-api'; import { PropertyCard } from './property-card'; interface SearchResultsProps { result: PaginatedResult | null; loading: boolean; error?: boolean; onRetry?: () => void; page: number; sort: string; onPageChange: (page: number) => void; onSortChange: (sort: string) => void; } export function SearchResults({ result, loading, error, onRetry, page, sort, onPageChange, onSortChange, }: SearchResultsProps) { if (loading) { return (
); } if (error) { return (

Không thể tải kết quả tìm kiếm

Đã xảy ra lỗi. Vui lòng thử lại.

{onRetry && ( )}
); } if (!result || result.data.length === 0) { return (

Không tìm thấy kết quả

Hãy thử thay đổi bộ lọc để tìm kiếm rộng hơn

); } return (

{result.total} kết quả

    {result.data.map((listing) => (
  • ))}
{result.totalPages > 1 && (
{Array.from({ length: Math.min(result.totalPages, 5) }, (_, i) => { let pageNum: number; if (result.totalPages <= 5) { pageNum = i + 1; } else if (page <= 3) { pageNum = i + 1; } else if (page >= result.totalPages - 2) { pageNum = result.totalPages - 4 + i; } else { pageNum = page - 2 + i; } return ( ); })}
)}
); }