// Agora Browse — dense filter rail + product grid. const Browse = ({ route, setRoute, watchlist, toggleWatch }) => { const data = window.AG_DATA; const [sort, setSort] = useState('newest'); const [view, setView] = useState('grid'); const [activeCat, setActiveCat] = useState(route.cat || 'all'); const [activeBrands, setActiveBrands] = useState(new Set(route.brand ? [route.brand] : [])); const [conds, setConds] = useState(new Set()); const [cities, setCities] = useState(new Set()); const [priceRange, setPriceRange] = useState([0, 20000]); const [offersOnly, setOffersOnly] = useState(false); const [newOnly, setNewOnly] = useState(false); useEffect(()=>{ setActiveCat(route.cat || 'all'); }, [route.cat]); const cat = data.categories.find(c => c.id === activeCat); // Filter let items = data.items; if (activeCat !== 'all') items = items.filter(i => i.cat === activeCat); if (activeBrands.size) items = items.filter(i => activeBrands.has(i.brand)); if (conds.size) items = items.filter(i => conds.has(i.cond)); if (cities.size) items = items.filter(i => cities.has(i.city)); if (offersOnly) items = items.filter(i => i.acceptOffers); if (newOnly) items = items.filter(i => i.new); items = items.filter(i => i.eur >= priceRange[0] && i.eur <= priceRange[1]); // Sort const sorted = [...items].sort((a,b)=>{ if (sort==='price-low') return a.eur - b.eur; if (sort==='price-high') return b.eur - a.eur; if (sort==='watched') return b.watchers - a.watchers; return 0; // newest = original order }); const allCities = [...new Set(data.items.map(i => i.city))]; const allConds = ['New','Excellent','Very Good','Good']; return (