"use client"; import { ProductCard } from "@/components/molecules/cards"; import { useCart } from "@/lib/cart-context"; import { MENU_CATEGORIES, MOCK_PRODUCTS } from "@/lib/constants"; import { useMenu } from "@/lib/menu-context"; import type { ProductGridProps } from "./ProductGrid.types"; export default function ProductGrid({ searchQuery = "", isSidebarOpen = false, }: ProductGridProps) { const { activeCategory, setActiveCategory } = useMenu(); const { addToCart } = useCart(); const filteredProducts = MOCK_PRODUCTS.filter((p) => { const isAvailable = p.available !== false; const matchesCategory = activeCategory === "all" || p.category === activeCategory; const matchesSearch = searchQuery.trim() === "" || p.name.toLowerCase().includes(searchQuery.toLowerCase()) || p.description.toLowerCase().includes(searchQuery.toLowerCase()); return isAvailable && matchesCategory && matchesSearch; }); const activeCategoryLabel = MENU_CATEGORIES.find((c) => c.id === activeCategory)?.name ?? "Tất cả"; const gridCols = isSidebarOpen ? "grid-cols-1 min-[480px]:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4" : "grid-cols-1 min-[480px]:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5"; return ( <> {/* ── Mobile category menu — visible only on < md ── */}
{MENU_CATEGORIES.map((cat) => { const isActive = activeCategory === cat.id; return ( ); })}
{/* ── Product grid ── */} {filteredProducts.length > 0 ? (
{filteredProducts.map((product) => ( addToCart(product)} /> ))}
) : ( /* Empty state */

{searchQuery ? `Không tìm thấy món nào cho "${searchQuery}"` : "Chưa có món trong danh mục này"}

)} ); }