{meta.label}
{allCatProducts.length} products from {brands.length} brands · All compatibility-checked, 2-year warranty, free delivery on 50K+.
No products match these filters
Try widening your price range or clearing brand filters.
// Map category IDs to one or more product cat tags
const CAT_MAP = {
gpu: ["GPU"],
cpu: ["CPU"],
mb: ["MOBO"],
ram: ["RAM"],
ssd: ["SSD"],
psu: ["PSU"],
case: ["CASE", "GAMING PC", "MINI PC", "STREAMER"],
cool: ["COOLING"],
mon: ["MONITOR"],
kb: ["KEYBOARD"],
ms: ["MOUSE"],
head: ["AUDIO"],
};
const ShopPage = () => {
const params = new URLSearchParams(location.search);
const catId = params.get("cat") || "gpu";
const meta = CATEGORIES.find(c => c.id === catId) || CATEGORIES[0];
const [sort, setSort] = React.useState("popular");
const [view, setView] = React.useState("grid");
const [priceMax, setPriceMax] = React.useState(400000);
const [brandFilter, setBrandFilter] = React.useState(new Set());
const [stockOnly, setStockOnly] = React.useState(false);
const [saleOnly, setSaleOnly] = React.useState(false);
const allCatProducts = React.useMemo(() => {
const tags = CAT_MAP[catId] || [];
return [...PRODUCTS, ...PREBUILT].filter(p => tags.includes(p.cat));
}, [catId]);
const brands = React.useMemo(() => [...new Set(allCatProducts.map(p => p.brand))], [allCatProducts]);
const products = React.useMemo(() => {
let list = allCatProducts.filter(p => p.price <= priceMax);
if (brandFilter.size) list = list.filter(p => brandFilter.has(p.brand));
if (stockOnly) list = list.filter(p => p.stock > 0);
if (saleOnly) list = list.filter(p => p.was);
if (sort === "lowhigh") list.sort((a,b) => a.price - b.price);
if (sort === "highlow") list.sort((a,b) => b.price - a.price);
if (sort === "rating") list.sort((a,b) => b.rating - a.rating);
if (sort === "new") list.sort((a,b) => b.id - a.id);
return list;
}, [allCatProducts, sort, priceMax, brandFilter, stockOnly, saleOnly]);
const toggleBrand = (b) => setBrandFilter(prev => {
const n = new Set(prev);
n.has(b) ? n.delete(b) : n.add(b);
return n;
});
return (
{allCatProducts.length} products from {brands.length} brands ·
All compatibility-checked, 2-year warranty, free delivery on 50K+.
Try widening your price range or clearing brand filters.{meta.label}
No products match these filters