"use client"; import React, { useState, useMemo } from 'react'; import { Product } from '@/types/types'; import { ProductCard } from './ProductCard'; import { SlidersHorizontal, X, Search } from 'lucide-react'; interface ProductsGridProps { products: Product[]; } export function ProductsGrid({ products }: ProductsGridProps) { const [selectedBrands, setSelectedBrands] = useState([]); const [selectedCategories, setSelectedCategories] = useState([]); const [sortBy, setSortBy] = useState('recommended'); const [showFiltersMobile, setShowFiltersMobile] = useState(false); // Pobranie unikalnych wartości do filtrów const brands = useMemo(() => Array.from(new Set(products.map(p => p.brand))), [products]); const categoryLabels: Record = { 'scienne': 'Ścienne', 'multisplit': 'Multisplit', 'kasetonowe': 'Kasetonowe', 'przenosne': 'Przenośne', }; const categories = useMemo(() => Array.from(new Set(products.map(p => p.category))), [products]); // Logika filtrowania i sortowania const filteredProducts = useMemo(() => { let result = [...products]; if (selectedBrands.length > 0) { result = result.filter(p => selectedBrands.includes(p.brand)); } if (selectedCategories.length > 0) { result = result.filter(p => selectedCategories.includes(p.category)); } if (sortBy === 'price-asc') { result.sort((a, b) => a.price - b.price); } else if (sortBy === 'price-desc') { result.sort((a, b) => b.price - a.price); } else if (sortBy === 'power-asc') { result.sort((a, b) => a.power - b.power); } else if (sortBy === 'power-desc') { result.sort((a, b) => b.power - a.power); } return result; }, [products, selectedBrands, selectedCategories, sortBy]); const toggleBrand = (brand: string) => { setSelectedBrands(prev => prev.includes(brand) ? prev.filter(b => b !== brand) : [...prev, brand] ); }; const toggleCategory = (category: string) => { setSelectedCategories(prev => prev.includes(category) ? prev.filter(c => c !== category) : [...prev, category] ); }; return (
{/* Mobile Filter Toggle */}
{filteredProducts.length} wyników
{/* Sidebar (Filtry) */} {/* Główna sekcja (Narzędzia + Siatka) */}
{/* Pasek narzędzi */}
{filteredProducts.length} wyników
{/* Siatka */} {filteredProducts.length > 0 ? (
{filteredProducts.map(product => ( ))}
) : (

Brak wyników

Spróbuj zmienić kryteria filtrowania.

)}
); }