Components/Dashboard

Dashboard

A product analytics board with KPI cards, a trend chart, and a plugin table.

Since 0.6.0BETA

This component doc is in progress

This page is still being migrated. Demos and API details may change.

Usage

Tuff Pulse board

Range, dates, brushing, and the legend recompute the whole board. Sample data.

Loading demo...

Ops wall

A dark, real-time screen for watching rather than working: no filters or table, only the present, and no site theme.

Goes live in view, and cloud sync in Tokyo degrades and recovers; pause it at any time. Sample data.

Loading demo...

Overview

The analytics board a launcher team keeps open; every figure follows one time range, and changing the range, the dates, or the brushed span recomputes the page.

  • Switch 7, 30, or 90 days or pick dates: KPI figures roll to new values, compared with the same-length period just before; up to seven days draws by the hour.
  • Drag across the trend chart to zoom, and the whole page counts only that span; the Zoomed pill restores the full range.
  • Click a legend item to hide or show a platform; sort the plugin table by installs or crash-free rate, and its trend column morphs when the range changes.
  • Charts start drawing once in view, and nothing plays by itself; wide (≥ 960px) adds the crash-rate and insight cards, and narrow (< 640px) puts KPIs in two columns and trims the table to three.
  • Ops wall: it goes live once in view, and cloud sync in Tokyo degrades at 18 seconds and recovers at 30; it stops updating when scrolled away or in a background tab.
  • Ops wall: Live pauses every update, and the pointer on the focus card, sankey, or event list holds that part; reduced motion shows one still snapshot.
  • Ops wall: always dark; in the docs column it fills the stage exactly, and narrow (< 640px) is one scrolling column.

Customization

  • To swap the data source, replace daily() with your API's per-day series; total(), average(), and previousWindow() already handle an unfinished today and the same-length comparison.
  • Keep rates out of TxTimeseriesChart, whose y axis always includes 0; chart the counts, or use TxSparkChart with a domain.
  • Pixel props such as chart heights or a table's maxHeight are out of reach of container queries; compute them from the stage size or your own ResizeObserver.
  • To drill into a row, add @row-click to TxDataTable and swap the trend data for that plugin's installs.
  • Ops wall: a local dark scope needs data-theme="dark" and color-scheme: dark on the root plus the few tokens :root derives; keep teleported overlays off the wall.
RegionComponentsRole
Top barTxFlatRadio, TxDatePicker, TxStatusBadgeTime range and degraded notice
KPI cardsTxStatCard, TxTextMorphKPIs against the previous period
TrendTxTimeseriesChart, TxChartLegendItemPer-platform trend with brush zoom
Side railTxAllocationBar, TxDotIndicator, TxSignalMeter, TxProgressBarShare, health, and AI usage
Insights (wide)TxInsightCards, TxSparkChart / TxChartScrubber, TxToastPanelPageable, scrubbable insights
Top pluginsTxDataTable, TxSparkChart, TxSignalMeter, TxStatusBadgeSortable plugin table
Top bar (Ops wall)TxModeChipLive mark and pause switch
Big KPIs (Ops wall)TxTextMorph, TxSparkChartRolling figures and trend strips
City map (Ops wall)TxBubbleMap, TxSkeletonOnline bubbles in 14 cities
Focus rotation (Ops wall)TxInsightCards, TxAllocationBarFocus cards turning every 8 seconds
Search flow (Ops wall)TxSankeyChartInput → plugin → action
Health and events (Ops wall)TxDotIndicator, TxSignalMeter, TxTransitionService health and event stream