diff --git a/src/app/analytics/AnalyticsPageClient.tsx b/src/app/analytics/AnalyticsPageClient.tsx index 259e267..b8d17e2 100644 --- a/src/app/analytics/AnalyticsPageClient.tsx +++ b/src/app/analytics/AnalyticsPageClient.tsx @@ -7,7 +7,14 @@ import { useLiveIntents } from "@/hooks/useLiveIntents"; import { computeAnalytics, getStatusDistributionEntries, + computeShareSeries, + computeConcentration, + computeTopMovers, SLA_THRESHOLDS, + type ShareDimension, + type ShareSeriesPoint, + type TopMover, + type ConcentrationResult, type AnalyticsResult, type KpiCard, type KpiDeltaState, @@ -20,6 +27,7 @@ import { downloadBlob, svgToPng } from "@/lib/export/svgToPng"; import { downloadCsv } from "@/lib/csv"; import { secureLogger } from "@/lib/secureLogging"; import { useTranslation } from "@/lib/i18n/I18nProvider"; +import { Tooltip } from "@/components/Tooltip"; // ─── Inline format helper ───────────────────────────────────────────────────── @@ -1149,6 +1157,72 @@ export default function AnalyticsPageClient() { + {/* ── Issue #468: Market-share trends ────────────────────────────── */} +
+
+
+
Market share trends
+

Share over time

+
+
+ {/* Dimension selector */} + {(["srcChain", "dstToken", "solver"] as ShareDimension[]).map((dim) => ( + + ))} + {/* Normalise toggle */} + +
+
+ +
+ + {/* ── Issue #468: Top movers + Concentration ──────────────────────── */} +
+
+
Top movers (7d vs previous 7d)
+

Largest share shifts

+
+ +
+
+ +
+
Solver concentration
+

HHI & top-1/top-3 share

+
+ +
+
+
+ {/* Fill-time / SLA panel (issue #465) */}
Fill-time & SLA
@@ -1162,6 +1236,8 @@ export default function AnalyticsPageClient() {
+ +