'use client' import { useState } from 'react' import ProductCard from '@/components/shop/ProductCard' import { Product } from '@/types' import { Button } from '@/components/ui/button' interface ProductGridProps { products: Product[] categoryFilter?: string initialLoadCount?: number loadMoreCount?: number } export default function ProductGrid({ products, categoryFilter, initialLoadCount = 8, loadMoreCount = 4 }: ProductGridProps) { const [displayCount, setDisplayCount] = useState(initialLoadCount) const filteredProducts = categoryFilter ? products.filter(product => product.category.name.toLowerCase().includes(categoryFilter.toLowerCase()) || product.name.toLowerCase().includes(categoryFilter.toLowerCase()) ) : products const displayedProducts = filteredProducts.slice(0, displayCount) const hasMoreProducts = displayCount < filteredProducts.length const remainingProducts = filteredProducts.length - displayCount const loadMore = () => { setDisplayCount(prev => Math.min(prev + loadMoreCount, filteredProducts.length)) } const showLess = () => { setDisplayCount(initialLoadCount) } if (filteredProducts.length === 0) { return (

No products found in this category.

Check back soon for new products!

) } return (
{/* Products Grid */}
{displayedProducts.map((product, index) => ( ))}
{/* Load More / Show Less Controls */} {filteredProducts.length > initialLoadCount && (
{/* Products Counter */}

Showing {displayedProducts.length} of{' '} {filteredProducts.length} products

{/* Action Buttons */}
{hasMoreProducts && ( )} {displayCount > initialLoadCount && ( )}
)}
) }