From 2881e7598628697d0a786cf840abdc69086d1d24 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Tue, 19 May 2026 00:28:08 -0700 Subject: feat: remove Coverage card from overview tab, move Profile to top of right column Co-Authored-By: Claude Sonnet 4.6 --- frontend/app/page.tsx | 45 +-------------------------------------------- frontend/lib/overview.ts | 7 ------- 2 files changed, 1 insertion(+), 51 deletions(-) (limited to 'frontend') diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 971216c..7ccb781 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -13,7 +13,7 @@ import { TickerHeader } from "@/components/prism/TickerHeader"; import { TopBar } from "@/components/prism/TopBar"; import { ApiError, api } from "@/lib/api"; import { deltaClass, fmtCurrency, fmtLarge, fmtNumber, fmtPct } from "@/lib/format"; -import { availableFieldSummary, buildKpis, limitIndices, marketClock, OVERVIEW_NAV_ITEMS, signalTone, unavailableFields } from "@/lib/overview"; +import { buildKpis, limitIndices, marketClock, OVERVIEW_NAV_ITEMS, signalTone } from "@/lib/overview"; import type { HistoryPoint, MarketIndex, SearchResult, TickerOverview, WatchlistResponse } from "@/types/api"; type LoadState = "idle" | "loading" | "ready" | "invalid" | "error"; @@ -53,8 +53,6 @@ function OverviewClient() { const isSaved = selectedTicker ? watchlistSymbols.has(selectedTicker) : false; const marketCards = useMemo(() => limitIndices(market), [market]); const kpis = useMemo(() => (overview ? buildKpis(overview) : []), [overview]); - const missingFields = useMemo(() => (overview ? unavailableFields(overview) : []), [overview]); - useEffect(() => { const timer = window.setInterval(() => setClockSnapshot(marketClock()), 60_000); return () => window.clearInterval(timer); @@ -314,7 +312,6 @@ function OverviewClient() {
- @@ -425,46 +422,6 @@ function SignalCard({ overview }: { overview: TickerOverview }) { ); } -function DataStatusCard({ overview, missingFields }: { overview: TickerOverview; missingFields: string[] }) { - const entries = Object.entries(overview.meta.sources).slice(0, 6); - const visibleMissing = missingFields.slice(0, 4); - const hiddenMissingCount = Math.max(0, missingFields.length - visibleMissing.length); - - return ( -
-
-
-
Coverage
-

Coverage

-
- {overview.meta.status} -
-

{availableFieldSummary(overview)}

- {overview.meta.is_partial ? ( -
- {missingFields.length ? visibleMissing.map((field) => {field}) : null} - {hiddenMissingCount ? +{hiddenMissingCount} more : null} -
- ) : null} -
- {entries.length ? ( - entries.map(([field, source]) => ( -
- {field} - {source} -
- )) - ) : ( -
- Sources - Unavailable -
- )} -
-
- ); -} - function ProfileCard({ overview }: { overview: TickerOverview }) { return (
diff --git a/frontend/lib/overview.ts b/frontend/lib/overview.ts index 36a3c64..1529933 100644 --- a/frontend/lib/overview.ts +++ b/frontend/lib/overview.ts @@ -91,13 +91,6 @@ export function unavailableFields(overview: TickerOverview): string[] { .map(([field]) => field); } -export function availableFieldSummary(overview: TickerOverview): string { - const fields = Object.values(overview.meta.field_availability); - if (!fields.length) return "Availability metadata unavailable"; - const available = fields.filter(Boolean).length; - return `${available} of ${fields.length} tracked fields filled`; -} - export function watchlistSubtitle(item: WatchlistItem): string { return new Date(item.created_at).toLocaleDateString(undefined, { month: "short", -- cgit v1.3-2-g0d8e