"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 5-column grid for "spreadsheet-style" scanning when the operator wants the numbers and nothing else. Each row carries a tiny progress bar in the last column showing actual-vs-target as a percentage, with the percent value pinned below the bar. Wide-only by design — there's no narrow-card collapse because the row-stack form would duplicate the Comparison gauges showcase; if you need this data in a 1×3 or 25/45 cell, use Comparison gauges instead. Rendered as a table card (zero card-body padding, dividers extend edge-to-edge) so the table reads as the card's content rather than a table sitting inside another panel.

Key Performance Indicators

LIVE
Metric
Now
Prev
Δ%
vs Target
Completion Rate
87.1%
84.2%
+3.4%
97%
Monthly Revenue
$862K
$752K
+14.6%
96%
Server Temp
24.7°C
24.5°C
+0.8%
99%
Server Capacity
86.1%
71.0%
+21.3%
108%
Error Rate
0.27%
0.41%
-34.6%
54%
Tokyo Office
¥12.2M
¥11.2M
+8.5%
93%

Revenue

LIVE
Metric
Now
Δ%
Target
MRR
$862K
+14.6%
96%
Bookings
2.4M
+18%
92%
Convert
5.7%
+1.2%
81%
Tokyo
¥12.2M
+8.5%
93%

Infrastructure

LIVE
Metric
Now
Prev
Δ%
Target
Server Temp
24.7°C
24.5°C
+0.8%
99%
Capacity
86.1%
71.0%
+21.3%
108%
Error Rate
0.27%
0.41%
-34.6%
54%
Uptime
99.99%
99.95%
+0.04%
100%

Customer Health

LIVE
Metric
Now
Prev
Δ%
Target
NPS
62
58
+4
89%
CSAT
94.1%
94.1%
±0.0%
99%
DAU
42.7k
40.2k
+6.2%
95%
Churn
3.1%
2.7%
+0.4%
124%

Column variations · composable --no-* toggles

--no-prev, --no-delta, and --no-target 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 modifier classes.

4-col · --no-target

Metric
Now
Prev
Δ%
Target
Revenue
$862K
$752K
+14.6%
Sessions
48.2K
44.0K
+9.5%
Churn
3.1%
2.7%
+14.8%

3-col · --no-prev --no-delta

Metric
Now
Prev
Δ%
Target
Revenue
$862K
$752K
+14.6%
96%
Sessions
48.2K
44.0K
+9.5%
80%
Churn
3.1%
2.7%
+14.8%
62%

2-col · all three dropped

Metric
Now
Prev
Δ%
Target
Revenue
$862K
$752K
+14.6%
Sessions
48.2K
44.0K
+9.5%
Churn
3.1%
2.7%
+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 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.

Table-card mode

.pa-kpi-strip__body applies padding: 0 so each row's border-top divider extends edge-to-edge. The horizontal inset lives on each row (padding: 1.1rem 1.6rem), matching what would have been the body's inline padding. Reads as the card's content rather than a table sitting inside another panel.

Per-row grid (not subgrid)

Each .pa-kpi-strip__row is its own grid sharing the same column template. This gives per-row hover hosts (needed for the cursor-anchored detail popover) while keeping cells aligned across rows because every row uses identical fr-units. CSS subgrid would be more semantically accurate but would duplicate the same effective layout in more lines.

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.

Column toggle modifiers

metric and now are mandatory. prev, delta, and target are independently optional via pa-kpi-strip--no-prev, --no-delta, --no-target on the card root. 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 classes — no manual track-width tuning.

How it works: markup always includes all five cells (data and header) in canonical source order — metric, now, prev, delta, target. Each toggle modifier applies display: none to its column's cells (the framework targets .pa-kpi-strip__prev, __delta, __target data cells and __head--prev, --delta, --target header cells), and a matching compound selector adjusts grid-template-columns to the new visible column count. Source order is preserved so CSS Grid auto-flow places the remaining cells into the right tracks.

Headers need per-column modifier classes for hiding to work — pa-kpi-strip__head--metric, --now, --prev, --delta, --target. Data cells already carry their column-specific class (__metric, __now, etc.) so the data side works without changes.


CSS Classes Reference

Card structure

  • pa-kpi-strip — page-namespace class on .pa-card.
  • pa-kpi-strip--no-prev / --no-delta / --no-target — composable column toggle modifiers. Each hides its column's cells (data + header) and adjusts grid-template-columns via a precomputed compound selector. Visible columns range from 5 (no toggles) to 2 (all three toggles — metric + now only).
  • pa-kpi-header — flex header with title + LIVE indicator.
  • pa-kpi-live / pa-kpi-live__dot — LIVE pill + animated dot.
  • pa-kpi-strip__body — applies padding: 0 so dividers go edge-to-edge.
  • pa-kpi-footer — flex footer caption.

Rows

  • pa-kpi-strip__head-row — header row (uppercase mono labels).
  • pa-kpi-strip__row — data row. Carries hover host for the cursor-anchored popover and per-row inline padding so dividers extend edge-to-edge.
  • pa-kpi-strip__head — header cell (uppercase mono, 42% contrast).
  • pa-kpi-strip__head--num — right-aligned variant (matches the right-aligned numeric cells below).
  • pa-kpi-strip__head--metric / --now / --prev / --delta / --target — per-column modifier classes on header cells. Required for the --no-* toggles to hide the matching header cell along with its data column.

Row cells

  • pa-kpi-strip__metric — uppercase mono metric label (78% contrast, allowed to wrap to two lines).
  • pa-kpi-strip__now — focal "now" value (largest text in the row, right-aligned).
  • pa-kpi-strip__num / pa-kpi-strip__unit — numeric + unit spans inside __now.
  • pa-kpi-strip__prev — previous-period value (lower contrast than __now).
  • pa-kpi-strip__delta — coloured Δ% value (right-aligned).
  • pa-kpi-strip__target — vertical stack: bar + percent below.
  • pa-kpi-strip__bar — progress track (0.5rem tall, theme-neutral background).
  • pa-kpi-strip__fill — bar fill. Width set inline per row via style="width: X%".
  • pa-kpi-strip__bar-pct — percent label pinned below the bar's right edge.

Delta sentiment modifiers

  • pa-kpi-strip__delta--positive — ordinary positive movement.
  • pa-kpi-strip__delta--negative — ordinary negative movement.
  • pa-kpi-strip__delta--neutral — no meaningful change.
  • pa-kpi-strip__delta--up-strong — outlier positive (deeper green).
  • pa-kpi-strip__delta--down-strong — outlier negative (deeper red).

Hover detail popover

  • pa-kpi-detail — popover root (moved to <body> on init; position: fixed, hidden until data-show).
  • pa-kpi-detail__title — uppercase mono header.
  • pa-kpi-detail .pos / .neg / .warn — sentiment-coloured <dd> text.

Framework tokens used by this showcase

  • --pa-very-positive / --pa-positive / --pa-neutral / --pa-negative / --pa-very-negative — 5-step semantic sentiment scale.
  • --pa-warning — orange "off-target / approaching limit" signal.
  • --pa-detail-bg / --pa-detail-text / --pa-detail-row-label / --pa-detail-title / --pa-detail-shadow — popover chrome.
Type / for commands, : to search a category, or just start typing

Settings

Body text size. All elements scale proportionally.
👤

John Doe

Administrator
  • 📊 Dashboard
  • 📝 Forms
  • 📋 Tables
  • 📊 Data Grid