/* global React, Icons, Badge, Btn, Pill, Meter, Score, Stat, Eyebrow */ const { useState } = React; /* ========================================================================= DEALS & BUYER GUIDES — affiliate-commerce ========================================================================= */ const GUIDES = [ { id: 1, t: 'Best beginner streaming setup', count: 7, low: 280, high: 720, badge: 'beginner' }, { id: 2, t: 'Best IRL backpack setup', count: 9, low: 1200, high: 3400, badge: 'pro' }, { id: 3, t: 'Best camera for IRL streaming', count: 6, low: 399, high: 3899, badge: null }, { id: 4, t: 'Best mic for noisy locations', count: 5, low: 119, high: 549, badge: null }, { id: 5, t: 'Best routers for streaming', count: 8, low: 159, high: 1499, badge: 'pro' }, { id: 6, t: 'Best power banks for streamers', count: 7, low: 89, high: 999, badge: null }, { id: 7, t: 'Best data plans for streamers', count: 12,low: 25, high: 100, badge: 'updated' }, { id: 8, t: 'Best budget setup under $500', count: 8, low: 280, high: 480, badge: 'beginner' }, { id: 9, t: 'Best pro setup under $3,000', count: 6, low: 2200, high: 3000, badge: 'pro' }, ]; const DEALS = [ { rank: 1, name: 'DJI Osmo Pocket 3', cat: 'Camera', was: 519, now: 469, off: 10, score: 9.1, badge: 'tested', icon: Icons.camera }, { rank: 2, name: 'Anker 737 PowerCore', cat: 'Power', was: 149, now: 119, off: 20, score: 9.1, badge: null, icon: Icons.battery }, { rank: 3, name: 'Rode Wireless GO 3', cat: 'Audio', was: 349, now: 299, off: 14, score: 9.0, badge: 'tested', icon: Icons.mic }, { rank: 4, name: 'GL.iNet Brume 2', cat: 'Router', was: 159, now: 129, off: 19, score: 7.6, badge: 'deal', icon: Icons.router }, { rank: 5, name: 'Peak Design 30L pack', cat: 'Pack', was: 299, now: 239, off: 20, score: 7.9, badge: null, icon: Icons.backpack }, { rank: 6, name: 'DJI Mic 2', cat: 'Audio', was: 349, now: 319, off: 9, score: 8.7, badge: null, icon: Icons.mic }, ]; const DealsPage = () => { const [filter, setFilter] = useState('All'); const filtered = filter === 'All' ? DEALS : DEALS.filter(d => d.cat === filter); return (
Best-of buying guides organized by use case. No sponsored placement. Affiliate disclosed on every link. Updated weekly.
Some links earn us a commission. Rankings are based on lab testing — never paid placement. Read the policy.