Prospects metric row — the single strip

Six stat cards become one bordered strip with hairline dividers: 6×1 wide, 3×2 when tight. Captured from the branch's own dev server, so the PR carries something a reviewer can look at while Actions is down and no preview can be built.

6 Aug 2026 · branch origin/smith/metric-strip-a · captured against propflow-stage · at 5973a4068+local

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · The strip, six across

What was six separate cards in a gap-4 grid is now one bordered container with hairline dividers between compartments. The argument for it is that these six numbers are read as a single sentence about the pipeline — vacant, active, inquiries, tours, applications, signed — and six floating cards asked the eye to re-anchor six times to read one row.

Every compartment is still individually clickable and still expands in place at its row (CardExpandGroup keeps its per-card contract; only the chrome moved to the group's grid container). The dividers ride each cell by index, which is what lets them track the 3↔6 column flip below.

Asserted in the captured DOMVacant Units · Active Prospects · Inquiries · Tours · Applications · Signed Leases. All six compartments are present in text as well as pixels — a strip that silently dropped one would still look like a strip.

Prospects page with the six-compartment metric strip across the top

2 · Three across, when it is tight

The same strip at a narrow width: grid-cols-3 lg:grid-cols-6. Never fewer than three columns, because a two-column strip stops reading as a row and starts reading as a list. Note the divider logic holding: cells 0, 1, 3 and 4 divide right, and the second row picks up a top border that the six-across layout does not have.

This is the section that most needs a picture. "6×1 wide, 3×2 when tight" is a claim about a breakpoint, and the only honest way to make it is to shoot the page at both widths.

Asserted in the captured DOMVacant Units · Signed Leases

The same metric strip wrapped to three columns by two rows at a narrow width

3 · Registered in the component arsenal

The new primitive is in the registry with a preview, per the arsenal rule ("register what you build") — so the next person building a compact metric row finds it instead of redrawing it. MetricStripCell is MetricRow's interactive sibling: same label/value anatomy at the same compact scale, but the cells are siblings the host grid controls, which is what CardExpandGroup's measure-and-unmount contract requires and a container-owning component cannot serve.

Asserted in the captured DOMMetricStripCell. The registry entry exists — a component that ships unregistered is one the next person re-invents.

The component arsenal page listing the MetricStripCell preview

What this page is, and what it is not

This is not a replacement for preview-smith-metric-strip-a.propflowai.co. A preview is the thing you poke at — hover the cells, click one open, resize the window yourself. This page is the thing you read: it survives when Actions is down and no preview can be built, it carries the assertions that were checked rather than only the pixels, and it is still here in six months when the preview host is long gone. Offer both when both exist.

It was generated, not assembled: npx tsx scripts/ui-evidence.ts evidence/pr-5489.json --publish. The generator refused to start until the running dev server proved, from its own /api/health, which DynamoDB table it was bound to.

PropFlow Docs