+ {/* Setup in focus — full width; select a radar row below to swap it */}
+
{(trades.isLoading || activation.isLoading) && }
{trades.isError && Failed to load setups}
{trades.data && activation.data && (
@@ -444,9 +437,54 @@ export default function DashboardPage() {
)
)}
-
+
+ {/* Metric strip — the account ribbons, right above the positions they describe */}
+ {(trades.isLoading || openTrades.isLoading) ? (
+
+
+
+ ) : (
+
+ 0 ? `$${exposure.riskUsd.toFixed(0)}` : '—'}
+ sub={exposure.count > 0 ? `${exposure.count} open · distance to stops` : 'no open trades'}
+ />
+ 0 ? fmtR(exposure.unrealR) : '—'}
+ valueClass={rColor(exposure.rPriced > 0 ? exposure.unrealR : null)}
+ sub={
+ exposure.count > 0
+ ? `${money(exposure.unrealUsd)} · ${exposure.winners}▲ ${exposure.losers}▼`
+ : 'mark-to-market'
+ }
+ />
+ 0 ? money(exposure.alphaUsd) : '—'}
+ valueClass={
+ exposure.alphaPriced > 0
+ ? exposure.alphaUsd >= 0 ? 'text-emerald-300' : 'text-red-300'
+ : 'text-gray-100'
+ }
+ sub="open trades vs buy-and-hold SPY"
+ />
+ 0 ? 'text-blue-300' : 'text-gray-100'}
+ sub={activation.data ? activationSummary(activation.data) : 'setups clearing the gate'}
+ />
+
+ )}
+
+ {/* Open positions | Radar — side by side, half width each */}
+
+
+
+
{trades.isLoading && }
{trades.data && radar.qualified.length === 0 && radar.below.length === 0 && (
@@ -535,50 +573,6 @@ export default function DashboardPage() {
- {/* Metric strip — the account ribbons, right above the positions they describe */}
- {(trades.isLoading || openTrades.isLoading) ? (
-
-
-
- ) : (
-
- 0 ? `$${exposure.riskUsd.toFixed(0)}` : '—'}
- sub={exposure.count > 0 ? `${exposure.count} open · distance to stops` : 'no open trades'}
- />
- 0 ? fmtR(exposure.unrealR) : '—'}
- valueClass={rColor(exposure.rPriced > 0 ? exposure.unrealR : null)}
- sub={
- exposure.count > 0
- ? `${money(exposure.unrealUsd)} · ${exposure.winners}▲ ${exposure.losers}▼`
- : 'mark-to-market'
- }
- />
- 0 ? money(exposure.alphaUsd) : '—'}
- valueClass={
- exposure.alphaPriced > 0
- ? exposure.alphaUsd >= 0 ? 'text-emerald-300' : 'text-red-300'
- : 'text-gray-100'
- }
- sub="open trades vs buy-and-hold SPY"
- />
- 0 ? 'text-blue-300' : 'text-gray-100'}
- sub={activation.data ? activationSummary(activation.data) : 'setups clearing the gate'}
- />
-
- )}
-
- {/* Open positions — full width, right under their ribbons */}
-
-
{/* Performance — the paper book vs the same dollars in SPY */}