'use client'; import { Package, Search, X } from 'lucide-react'; import * as React from 'react'; import { TransferListingCard } from '@/components/chuyen-nhuong/transfer-listing-card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { type SearchTransferListingsParams, type TransferCategory, type TransferListingStatus, CATEGORY_ICONS, CATEGORY_LABELS, STATUS_LABELS, } from '@/lib/chuyen-nhuong-api'; import { useTransferListingsSearch } from '@/lib/hooks/use-chuyen-nhuong'; const PAGE_SIZE = 12; const DISTRICTS = [ 'Quận 1', 'Quận 2', 'Quận 3', 'Quận 4', 'Quận 5', 'Quận 6', 'Quận 7', 'Quận 8', 'Quận 9', 'Quận 10', 'Quận 11', 'Quận 12', 'Bình Thạnh', 'Gò Vấp', 'Phú Nhuận', 'Tân Bình', 'Tân Phú', 'Thủ Đức', ]; export default function ChuyenNhuongPage() { const [filters, setFilters] = React.useState({ page: 1, limit: PAGE_SIZE, }); const [searchInput, setSearchInput] = React.useState(''); const { data, isLoading, isError } = useTransferListingsSearch(filters); const handleSearch = (e: React.FormEvent) => { e.preventDefault(); setFilters((prev) => ({ ...prev, q: searchInput.trim() || undefined, page: 1 })); window.scrollTo({ top: 0, behavior: 'smooth' }); }; const handleCategoryChange = (category: TransferCategory | undefined) => { setFilters((prev) => ({ ...prev, category, page: 1 })); window.scrollTo({ top: 0, behavior: 'smooth' }); }; const updateFilter = (key: keyof SearchTransferListingsParams, value: string) => { setFilters((prev) => ({ ...prev, [key]: value || undefined, page: 1 })); }; const handlePageChange = (page: number) => { setFilters((prev) => ({ ...prev, page })); window.scrollTo({ top: 0, behavior: 'smooth' }); }; const handleClear = () => { setSearchInput(''); setFilters({ page: 1, limit: PAGE_SIZE }); }; const hasFilters = filters.q || filters.category || filters.status || filters.district; return (
{/* Page header */}

Chuyển Nhượng

Tìm kiếm nội thất, thiết bị và mặt bằng chuyển nhượng

{/* Search bar */}
setSearchInput(e.target.value)} className="pl-9" />
{/* Filters */}
{hasFilters && ( )}
{/* Category tabs */}
{(Object.entries(CATEGORY_LABELS) as [TransferCategory, string][]).map(([key, label]) => ( ))}
{/* Results */}
{isLoading ? (
{Array.from({ length: 6 }).map((_, i) => (
))}
) : isError ? (

Không thể tải danh sách chuyển nhượng. Vui lòng thử lại.

) : data && data.data.length > 0 ? ( <>

{data.total} tin chuyển nhượng được tìm thấy

{data.data.map((listing) => ( ))}
{/* Pagination */} {data.totalPages > 1 && (
Trang {data.page} / {data.totalPages}
)} ) : (

Không tìm thấy tin chuyển nhượng

Thử thay đổi bộ lọc để tìm kiếm nhiều hơn

)}
); }