// Activity — live sales feed + leaderboards + trending. function SaleRow({ event, isNew }) { return (
{event.name}
#{event.num}
{event.buyer} ← {event.seller} · {fmtRel(event.when)}
{fmtRub(event.rub)}
); } function TrendingRow({ kind, count, change }) { const g = GIFT_KINDS[kind]; return (
{g.name}
{count} продаж за 24ч
= 0 ? 'chip-green' : 'chip-red')}> {change >= 0 ? : } {change >= 0 ? '+' : ''}{change}%
); } function LeaderRow({ user, gifts, spent, rank }) { const colors = ['#f59e0b', '#9aa3ad', '#b87333']; const c = rank <= 3 ? colors[rank - 1] : 'var(--text-mute)'; return (
{rank}
{user}
{gifts} подарков · {fmtRubShort(spent)}
{rank <= 3 && }
); } function ActivityScreen({ live }) { const events = useTicker(live); const [tab, setTab] = React.useState('feed'); const newest = events[0]?.id; const trending = [ { kind: 'HeartLocket', count: 248, change: 18 }, { kind: 'DurovsCap', count: 42, change: 24 }, { kind: 'EternalRose', count: 186, change: 12 }, { kind: 'DiamondRing', count: 94, change: -6 }, { kind: 'PartySparkler', count: 71, change: 8 }, ]; const leaders = [ { user: '@maximus_88', gifts: 47, spent: 184200 }, { user: '@sofiakaty', gifts: 38, spent: 142500 }, { user: '@arsen_d', gifts: 31, spent: 96800 }, { user: '@vera_velv', gifts: 22, spent: 71400 }, { user: '@yago_p', gifts: 18, spent: 52100 }, ]; return (
Объём за 24 часа
+24% к вчера
Сделок
Math.round(v).toLocaleString('ru-RU')}/>
live
{[['feed','Лента'],['trend','Тренды'],['top','Лидеры']].map(([k, l]) => ( ))}
{tab === 'feed' && events.slice(0, 14).map((e, i) => ( ))} {tab === 'trend' && ( {trending.map((t, i) => ( {i < trending.length - 1 &&
} ))} )} {tab === 'top' && ( <> {leaders.map((l, i) => ( {i < leaders.length - 1 &&
} ))}
#48
Твоё место
осталось 4 подарка до топ-10
)}
); } window.ActivityScreen = ActivityScreen;