"Numeric strip · densest" KPI indicator. Wide table-card layout — most data per pixel:
metric / now / prev / Δ% / vs target columns. No sparkline, no chart chrome — a stripped-down grid for
"spreadsheet-style" scanning. metric and now are mandatory; the other three
columns are independently optional via noPreviousValue, noDeltaPercent, noTargetBar. Each row's hover popover auto-generates from the typed props — no raw
markup needed.
Key Performance Indicators
LIVE- Current
- 87.1%
- Previous
- 84.2%
- Δ absolute
- +2.9pp
- Δ percent
- +3.4%
- Target
- 90.0%
- Current
- $862K
- Previous
- $752K
- Δ absolute
- +$110K
- Δ percent
- +14.6%
- Target
- $900K
- Current
- 24.7°C
- Previous
- 24.5°C
- Δ percent
- +0.8%
- Target
- ≤ 25°C
- Current
- 86.1%
- Previous
- 71.0%
- Δ percent
- +21.3%
- Target
- 80.0%
- Current
- 0.27%
- Previous
- 0.41%
- Δ percent
- -34.6%
- Target
- ≤ 0.50%
- Current
- ¥12.2M
- Previous
- ¥11.2M
- Δ percent
- +8.5%
- Target
- ¥13.0M
Revenue
LIVE- Current
- $862K
- Δ percent
- +14.6%
- Target
- $900K
- Current
- €2.4M
- Δ percent
- +18%
- Current
- 5.7%
- Δ percent
- +1.2%
- Current
- ¥12.2M
- Δ percent
- +8.5%
Infrastructure
LIVE- Current
- 24.7°C
- Previous
- 24.5°C
- Δ percent
- +0.8%
- Current
- 86.1%
- Previous
- 71.0%
- Δ percent
- +21.3%
- Current
- 0.27%
- Previous
- 0.41%
- Δ percent
- -34.6%
- Current
- 99.99%
- Previous
- 99.95%
- Δ percent
- +0.04%
Customer Health
LIVE- Current
- 62
- Previous
- 58
- Δ percent
- +4
- Current
- 94.1%
- Previous
- 94.1%
- Δ percent
- ±0.0%
- Current
- 42.7k
- Previous
- 40.2k
- Δ percent
- +6.2%
- Current
- 3.1%
- Previous
- 2.7%
- Δ percent
- +0.4%
Column variations · composable no* toggles
noPreviousValue, noDeltaPercent, and noTargetBar compose. metric and now are mandatory; any combination of the other three can be dropped
to land on a 2-, 3-, or 4-column shape. Templates and cell-hiding rules are precomputed in the framework,
so consumers just toggle the props.
4-col · noTargetBar
- Current
- $862K
- Previous
- $752K
- Δ percent
- +14.6%
- Current
- 48.2K
- Previous
- 44.0K
- Δ percent
- +9.5%
- Current
- 3.1%
- Previous
- 2.7%
- Δ percent
- +14.8%
3-col · noPreviousValue + noDeltaPercent
- Current
- $862K
- Previous
- $752K
- Δ percent
- +14.6%
- Current
- 48.2K
- Previous
- 44.0K
- Δ percent
- +9.5%
- Current
- 3.1%
- Previous
- 2.7%
- Δ percent
- +14.8%
2-col · all three dropped
- Current
- $862K
- Previous
- $752K
- Δ percent
- +14.6%
- Target
- $900K
- Current
- 48.2K
- Previous
- 44.0K
- Δ percent
- +9.5%
- Current
- 3.1%
- Previous
- 2.7%
- Δ percent
- +14.8%
Usage Guide
When to use
"Spreadsheet-style" KPI scanning: pure tabular numbers, most data per pixel. Best when the operator wants to scan many KPIs side-by-side with consistent column alignment (now / prev / Δ% / vs target). No sparkline, no chart chrome, no decorations. If you need direction or trend at a glance, pick Sparkline list or Terminal grid; if you want headline numbers with restraint, pick Editorial minimal.
Wide-only by design
This showcase has no responsive collapse. The narrow-card "stack each row into a mini-card" pattern was tried first but converged visually with the Comparison gauges showcase. For narrow page-grid placements (1×3 cards, 25 % asymmetric cells) route to Comparison gauges instead. The 25/35/40 page-grid row above demonstrates how cramped the columns get below the design's comfortable width — values can wrap or push past the column tracks. End-developer's call whether that's acceptable.
Composable column toggles
metric and now are mandatory. previousValue, deltaPercent, and targetBar are independently optional via noPreviousValue / noDeltaPercent / noTargetBar on KpiStrip. The modifiers compose freely, so the visible column count lands anywhere from
5 (no toggles) down to 2 (all three optional columns dropped: metric + now only). The framework
precomputes a grid-template-columns selector for every combination, so consumers only
toggle the props — no manual track-width tuning.
Auto-generated header + popovers
The header row renders from the visible columns automatically. Default labels: Metric · Now · Prev · Δ% · vs Target.
Override individual labels with headerLabels={{ now: 'Current', targetBar: 'Goal' }}.
Set detailTitleText on a row and the wrapper builds the popover body from the row's typed
props (Current / Previous / Δ absolute / Δ percent / Target). Sentiment colour cascades from deltaVariant.
Bar + percent in the target column
The "vs target" column carries a tiny progress bar with the percent value pinned below it. Bar fill
is theme-neutral grey via color-mix(in srgb, var(--pa-text-color-1) 40%, transparent);
the percent value (e.g. "97 %" vs "108 %" vs "54 %") signals overshoot/undershoot, so colour
reinforcement isn't needed. Bar is visually capped at 100 % so over-target metrics read as
"fully filled" rather than overflowing.
Component Reference
KpiStrip props
titleText— card title in the header.isLive— show the LIVE pill with animated green dot.footerText— footer caption (plain string). Override viafootersnippet.noPreviousValue— drop the prev column (pa-kpi-strip--no-prev).noDeltaPercent— drop the Δ% column (pa-kpi-strip--no-delta).noTargetBar— drop the vs-target column (pa-kpi-strip--no-target).noHeader— suppress the auto-generated header row.headerLabels— override individual header labels:{ metric, now, previousValue, deltaPercent, targetBar }.headsnippet — fully-custom header markup. Wins overheaderLabels+noHeader.
KpiStripRow props — cells
metricText— metric label.valueText/unit/prefix— focal "now" cell (e.g.$/862/K).previousValueText— previous-period value.deltaText+deltaVariant— Δ% text and sentiment colour.targetBarPercent— bar fill 0–100 (visually capped at 100).targetPercentText— percent label below the bar (may exceed 100).
KpiStripRow props — popover
detailTitleText— popover title. Setting this enables the popover.targetText— target value shown only in the popover.deltaAbsoluteText— absolute delta value shown only in the popover.deltaAbsoluteVariant— sentiment override for the Δ absolute row.detailRows— typed row list, overrides auto-generated body.detailsnippet — fully-custom popover markup, overrides everything.
Delta sentiment variants
positive/negative/neutral— ordinary movement / no change.up-strong/down-strong— outlier positive / negative (deeper colours).