diff --git a/src/features/category/ui/Product.tsx b/src/features/category/ui/Product.tsx index 9cc6f31..c99889d 100644 --- a/src/features/category/ui/Product.tsx +++ b/src/features/category/ui/Product.tsx @@ -7,22 +7,22 @@ import { GlobalPagination } from '@/shared/ui/global-pagination'; import { Skeleton } from '@/shared/ui/skeleton'; import { ProductCard } from '@/widgets/categories/ui/product-card'; import { useQuery } from '@tanstack/react-query'; -import { ArrowLeft } from 'lucide-react'; +import { ArrowLeft, ShoppingBag } from 'lucide-react'; import { useTranslations } from 'next-intl'; import { useParams, useSearchParams } from 'next/navigation'; -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; const PAGE_SIZE = 36; const Product = () => { const { subId } = useParams(); - const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); - const [page, setPage] = useState(1); const t = useTranslations(); + const [page, setPage] = useState(1); + useEffect(() => { const urlPage = Number(searchParams.get('page')) || 1; setPage(urlPage); @@ -48,6 +48,10 @@ const Product = () => { enabled: !!subId, }); + const activeProducts = useMemo(() => { + return product?.results?.filter((item) => item.state === 'A') ?? []; + }, [product]); + const handleBack = () => { router.back(); }; @@ -62,7 +66,7 @@ const Product = () => { }; return ( -
+
{/* Header */}
@@ -74,38 +78,50 @@ const Product = () => { {t('Orqaga')} -

- {product?.total} {t('ta mahsulot')} +

+ {product?.total ?? 0} {t('ta mahsulot')}

- {/* Products grid */} + {/* Products */}
+ {/* Loading */} {isLoading && Array.from({ length: 6 }).map((_, index) => ( - + ))} - {product && - !isLoading && - product.results - .filter((product) => product.state === 'A') - .map((item) => ( - - ))} + + {/* Empty state */} + {!isLoading && activeProducts.length === 0 && ( +
+
+ +
+

+ {t("Hozirchali bu kategoriyada mahsulot yo'q")} +

+
+ )} + + {/* Products list */} + {!isLoading && + activeProducts.map((item) => ( + + ))}
- {/* Pagination at the bottom */} - {product && ( -
+ {/* Pagination */} + {product && product.total > PAGE_SIZE && ( +