/* 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 (
{/* HEADER */}
Buyer guides · 32 guides · weekly deals

Deals & buyer guides.

Best-of buying guides organized by use case. No sponsored placement. Affiliate disclosed on every link. Updated weekly.

Disclosure

Some links earn us a commission. Rankings are based on lab testing — never paid placement. Read the policy.

{/* DEALS OF THE WEEK */}
This week · {filtered.length} active · refresh in 4d 12h

Deals of the week.

{['All', 'Camera', 'Audio', 'Power', 'Router', 'Pack'].map(c => ( setFilter(c)}>{c} ))}
{filtered.map(d => { const Ic = d.icon; // "Get this deal" — Phase 5 wires the affiliate registry; for now, // mailto for early-access. Review surface lands with MDX in Phase 4. const dealMail = `mailto:hello@livestreamers.org?subject=${encodeURIComponent('Deal: ' + d.name + ' (rank #' + d.rank + ')')}`; return (
{/* product area */}
#{d.rank.toString().padStart(2, '0')} -{d.off}% OFF {d.badge && {d.badge === 'tested' ? 'Lab pick' : d.badge}}

{d.name}

{d.cat}
{/* price row */}
${d.was}
${d.now}
Score
{/* buttons */}
}> Notify me when live
); })}
{/* GUIDE GRID */}
Buyer guides · in production for Phase 4

Pick by use case.

{/* "Full guide index" lands when MDX guides ship in Phase 4. */}
{GUIDES.map(g => (
GUIDE · #{g.id.toString().padStart(2, '0')} {g.badge && {g.badge}}

{g.t}

Price range
${g.low.toLocaleString()} – ${g.high.toLocaleString()}
Picks
{g.count}
SOON
))}
{/* FAQ / TRUST STRIP */}
Why trust these picks

Receipts, not vibes.

{[ { icon: , t: 'Bought, not gifted', s: 'We buy our gear at retail. No vendor swag.' }, { icon: , t: '14-day field test', s: 'Minimum. No reviews after one stream.' }, { icon: ,t: 'Affiliate transparent', s: 'Every link disclosed. Picks never paid for.' }, { icon: , t: 'Updated weekly', s: 'Prices and rankings revalidated every Friday.' }, ].map((it, i) => (
{it.icon}
{it.t}
{it.s}
))}
); }; window.DealsPage = DealsPage;