Session 28: Parlay builder, line movement tracker, book comparison — 3 features, zero credits (1623 tests)
This commit is contained in:
@@ -11,6 +11,10 @@ import { useAuth } from '@/contexts/AuthContext';
|
||||
import StatFilterPills from '@/components/StatFilterPills';
|
||||
import StreaksPanel from '@/components/StreaksPanel';
|
||||
import HotListPanel from '@/components/HotListPanel';
|
||||
// Session 28 — line-movement + book-comparison read-only panels. Both
|
||||
// self-hide when empty; free users see a top-3 teaser.
|
||||
import MoversPanel from '@/components/MoversPanel';
|
||||
import BestLinesPanel from '@/components/BestLinesPanel';
|
||||
|
||||
/**
|
||||
* The Slate (Session 13).
|
||||
@@ -762,6 +766,11 @@ export default function Slate({ initialTab = 'all', tier = 'free' }: SlateProps)
|
||||
an off-hours slate with no warm logs simply shows the games. */}
|
||||
<StreaksPanel sport={tab === 'all' ? 'nba' : tab} tier={tier} stat={activeStat} />
|
||||
<HotListPanel sport={tab === 'all' ? 'mlb' : tab} tier={tier} stat={activeStat} />
|
||||
{/* Session 28 — market layers: how lines are MOVING and where the
|
||||
BEST price sits. Both read cached data (zero credits) and
|
||||
self-hide until there's something to show. */}
|
||||
<MoversPanel sport={tab === 'all' ? 'mlb' : tab} tier={tier} />
|
||||
<BestLinesPanel sport={tab === 'all' ? 'mlb' : tab} tier={tier} />
|
||||
|
||||
{/* Session 24 — removed the developer-facing "odds endpoint not
|
||||
configured yet" footer note. A sport with no data simply doesn't
|
||||
|
||||
Reference in New Issue
Block a user