diff --git a/app/analysis/page.tsx b/app/analysis/page.tsx index ad954e8..74ca346 100644 --- a/app/analysis/page.tsx +++ b/app/analysis/page.tsx @@ -456,7 +456,7 @@ function AnalysisPageContent() { {error ? ( - +

{error}

) : null} @@ -597,7 +597,7 @@ function AnalysisPageContent() {
- + {loading ? (

Loading price history...

) : priceSeries.length === 0 ? ( @@ -625,7 +625,7 @@ function AnalysisPageContent() { tickFormatter={(value: number) => `$${value.toFixed(0)}`} /> formatCurrency(value)} + formatter={(value) => formatCurrency(Array.isArray(value) ? value[0] : value)} contentStyle={{ backgroundColor: CHART_TOOLTIP_BG, border: `1px solid ${CHART_TOOLTIP_BORDER}`, @@ -645,6 +645,7 @@ function AnalysisPageContent() {
@@ -712,7 +713,7 @@ function AnalysisPageContent() { ))}
-
+
@@ -750,6 +751,7 @@ function AnalysisPageContent() { {loading ? (

Loading filings...

@@ -789,7 +791,7 @@ function AnalysisPageContent() { ))} -
+
@@ -829,7 +831,7 @@ function AnalysisPageContent() { )} - + {loading ? (

Loading AI reports...

) : !analysis || analysis.recentAiReports.length === 0 ? ( @@ -901,7 +903,7 @@ function AnalysisPageContent() {
- + {journalLoading ? (

Loading research entries...

) : journalEntries.length === 0 ? ( diff --git a/app/filings/page.tsx b/app/filings/page.tsx index 3a7432c..782e155 100644 --- a/app/filings/page.tsx +++ b/app/filings/page.tsx @@ -354,6 +354,7 @@ function FilingsPageContent() { {FINANCIAL_VALUE_SCALE_OPTIONS.map((option) => ( @@ -454,7 +455,7 @@ function FilingsPageContent() { })} -
+
diff --git a/app/financials/page.tsx b/app/financials/page.tsx index 989c69c..d5e8f4d 100644 --- a/app/financials/page.tsx +++ b/app/financials/page.tsx @@ -654,7 +654,7 @@ function FinancialsPageContent() { {error ? ( - +

{error}

) : null} @@ -680,7 +680,7 @@ function FinancialsPageContent() {
- + {loading ? (

Loading trend chart...

) : chartData.length === 0 || trendSeries.length === 0 ? ( @@ -725,7 +725,7 @@ function FinancialsPageContent() { )}
- + {loading ? (

Loading financial matrix...

) : surfaceKind === 'adjusted' || surfaceKind === 'custom_metrics' ? ( @@ -736,7 +736,7 @@ function FinancialsPageContent() { ) : periods.length === 0 || filteredRows.length === 0 ? (

No rows available for the selected filters yet.

) : ( -
+
@@ -804,7 +804,7 @@ function FinancialsPageContent() { )} - + {!selectedRow ? (

Select a row to inspect details.

) : ( @@ -854,7 +854,7 @@ function FinancialsPageContent() { ) : dimensionRows.length === 0 ? (

No dimensional facts were returned for the selected row.

) : ( -
+
@@ -882,7 +882,7 @@ function FinancialsPageContent() { {(surfaceKind === 'income_statement' || surfaceKind === 'balance_sheet' || surfaceKind === 'cash_flow_statement') && financials ? ( - +
Overall status: {financials.metrics.validation?.status ?? 'not_run'} @@ -890,7 +890,7 @@ function FinancialsPageContent() { {(financials.metrics.validation?.checks.length ?? 0) === 0 ? (

No validation checks available yet.

) : ( -
+
diff --git a/app/globals.css b/app/globals.css index 4c6b727..eb60e10 100644 --- a/app/globals.css +++ b/app/globals.css @@ -111,12 +111,26 @@ textarea { border-collapse: collapse; } +.data-surface { + border: 1px solid var(--line-weak); + border-radius: 1rem; + background: linear-gradient(180deg, rgba(40, 43, 49, 0.92), rgba(24, 27, 32, 0.78)); +} + +.data-table-wrap { + overflow-x: auto; + border: 1px solid var(--line-weak); + border-radius: 1rem; + background: linear-gradient(180deg, rgba(34, 37, 42, 0.9), rgba(20, 23, 27, 0.76)); +} + .data-table th, .data-table td { border-bottom: 1px solid var(--line-weak); - padding: 0.75rem 0.65rem; + padding: 0.8rem 0.8rem; text-align: left; font-size: 0.875rem; + vertical-align: top; } .data-table th { diff --git a/app/graphing/page.tsx b/app/graphing/page.tsx index f12e38c..2a7b8bb 100644 --- a/app/graphing/page.tsx +++ b/app/graphing/page.tsx @@ -454,7 +454,7 @@ function GraphingPageContent() { - +
- + {loading ? (

Loading comparison chart...

) : !selectedMetric || !comparison.hasAnyData ? ( @@ -607,8 +607,8 @@ function GraphingPageContent() { )}
- -
+ +
diff --git a/app/page.tsx b/app/page.tsx index ada3304..ab87875 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -151,7 +151,7 @@ export default function CommandCenterPage() { actions={headerActions} > {error ? ( - +

{error}

) : null} @@ -169,7 +169,7 @@ export default function CommandCenterPage() {
- + {loading ? (

Loading tasks...

) : ( @@ -177,7 +177,7 @@ export default function CommandCenterPage() { )}
- + {loading ? (

Loading intelligence output...

) : state.latestInsight ? ( @@ -195,21 +195,21 @@ export default function CommandCenterPage() {
-
- +
+

Analysis

Inspect one company across prices, filings, financials, and AI reports.

- +

Financials

Focus on multi-period filing metrics, margins, leverage, and balance sheet composition.

- +

Graphing

Compare one normalized metric across multiple companies with shareable chart state.

{ void queryClient.prefetchQuery(filingsQueryOptions({ limit: 120 })); @@ -222,7 +222,7 @@ export default function CommandCenterPage() {

Sync SEC filings and trigger AI memo analysis.

prefetchPortfolioSurfaces()} onFocus={() => prefetchPortfolioSurfaces()} @@ -231,7 +231,7 @@ export default function CommandCenterPage() {

Manage the active private portfolio and mark positions to market.

prefetchPortfolioSurfaces()} onFocus={() => prefetchPortfolioSurfaces()} diff --git a/app/portfolio/page.tsx b/app/portfolio/page.tsx index 5cc9643..1c33701 100644 --- a/app/portfolio/page.tsx +++ b/app/portfolio/page.tsx @@ -192,7 +192,7 @@ export default function PortfolioPage() { )} > {error ? ( - +

{error}

) : null} @@ -215,7 +215,7 @@ export default function PortfolioPage() {
- + {loading ? (

Loading chart...

) : allocationData.length > 0 ? ( @@ -228,7 +228,7 @@ export default function PortfolioPage() { ))} formatCurrency(value)} + formatter={(value) => formatCurrency(Array.isArray(value) ? value[0] : value)} contentStyle={{ backgroundColor: CHART_TOOLTIP_BG, border: `1px solid ${CHART_TOOLTIP_BORDER}`, @@ -251,7 +251,7 @@ export default function PortfolioPage() { )}
- + {loading ? (

Loading chart...

) : performanceData.length > 0 ? ( @@ -275,7 +275,7 @@ export default function PortfolioPage() { tick={{ fill: CHART_MUTED }} /> `${asNumber(value).toFixed(2)}%`} + formatter={(value) => `${asNumber(Array.isArray(value) ? value[0] : value).toFixed(2)}%`} contentStyle={{ backgroundColor: CHART_TOOLTIP_BG, border: `1px solid ${CHART_TOOLTIP_BORDER}`, @@ -296,7 +296,7 @@ export default function PortfolioPage() {
- + {loading ? (

Loading holdings...

) : holdings.length === 0 ? ( @@ -409,7 +409,7 @@ export default function PortfolioPage() { ))}
-
+
@@ -514,7 +514,7 @@ export default function PortfolioPage() { )} - +
diff --git a/app/search/page.tsx b/app/search/page.tsx index 0efc8fe..2b7d9b2 100644 --- a/app/search/page.tsx +++ b/app/search/page.tsx @@ -196,7 +196,7 @@ function SearchPageContent() { - + {answer ? (

{answer.answer}

@@ -226,6 +226,7 @@ function SearchPageContent() { {error ?

{error}

: null} {loading ? ( diff --git a/app/watchlist/page.tsx b/app/watchlist/page.tsx index d6df40e..10d086e 100644 --- a/app/watchlist/page.tsx +++ b/app/watchlist/page.tsx @@ -274,6 +274,7 @@ export default function WatchlistPage() { -
+
@@ -621,6 +622,7 @@ export default function WatchlistPage() {
diff --git a/components/dashboard/metric-card.tsx b/components/dashboard/metric-card.tsx index df9c280..984d534 100644 --- a/components/dashboard/metric-card.tsx +++ b/components/dashboard/metric-card.tsx @@ -10,9 +10,9 @@ type MetricCardProps = { export function MetricCard({ label, value, delta, positive = true, className }: MetricCardProps) { return ( -
-

{label}

-

{value}

+
+

{label}

+

{value}

{delta ? (

{delta} diff --git a/components/dashboard/task-feed.tsx b/components/dashboard/task-feed.tsx index 281222c..0a8c974 100644 --- a/components/dashboard/task-feed.tsx +++ b/components/dashboard/task-feed.tsx @@ -20,9 +20,9 @@ export function TaskFeed({ tasks }: TaskFeedProps) { } return ( -

    +
      {tasks.slice(0, 8).map((task) => ( -
    • +
    • {taskLabels[task.task_type]}

      diff --git a/components/financials/control-bar.tsx b/components/financials/control-bar.tsx index 17b5fdd..b5cbbd0 100644 --- a/components/financials/control-bar.tsx +++ b/components/financials/control-bar.tsx @@ -41,12 +41,12 @@ export function FinancialControlBar({ className }: FinancialControlBarProps) { return ( -

      +
      -

      {title}

      +

      {title}

      {subtitle ? ( -

      {subtitle}

      +

      {subtitle}

      ) : null}
      @@ -68,29 +68,29 @@ export function FinancialControlBar({ ) : null}
      -
      - {sections.map((section) => ( -
      - {section.label} -
      - {section.options.map((option) => ( - - ))} -
      +
      + {sections.map((section) => ( +
      + {section.label} +
      + {section.options.map((option) => ( + + ))}
      - ))} +
      + ))}
      ); diff --git a/components/shell/app-shell.tsx b/components/shell/app-shell.tsx index 24cea66..46992fe 100644 --- a/components/shell/app-shell.tsx +++ b/components/shell/app-shell.tsx @@ -447,8 +447,8 @@ export function AppShell({ title, subtitle, actions, activeTicker, breadcrumbs,