What runs today table

Every capability on the site with its real state, grouped into Runs today, Runs in part, Coming next and Our commitments, from the claims register.

Organism · stable · v1.0.0 · owner: Site system lead · contract 19 of 20 points (open: figma)

Do and don't

Do: English

Rendered by status-table.ts

Open example: What runs today table · Do: English Use the full-page example to follow page links.

Every claim with its state.

Do: Japanese

Rendered by status-table.ts

Open example: What runs today table · Do: Japanese Use the full-page example to follow page links.

Same register, Japanese copy.

Don't: Build notes

Rendered by status-table.ts

Open example: What runs today table · Don't: Build notes Use the full-page example to follow page links.

The build fails on paths and commands.

Don't: On a marketing page

Rendered by status-table.ts

Open example: What runs today table · Don't: On a marketing page Use the full-page example to follow page links.

States live here only.

Rules

RuleWhyCheck
Rows come from docs/product/claims.json; copy from status-copy.ts.One register; the page can never disagree with it.Automated: scripts/site/status-page.ts (fails on missing or internal copy)

API

PropTypeRequiredDefaultWhat it does
claimsobjectYesThe claims register.
updatedstringNoThe register's date.
langen | jaNo"en"Language.

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Idstatus-table
LayerOrganisms
Categorydata
OwnerSite system lead
Statusstable
Version1.0.0
Sourceapps/showcase/site/system/organisms/status-table.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-26What runs today table as one module: its markup moved out of the page builder (scripts/site) into the system.

Use when

  • /product/status/ only. Why: States live in one place; marketing pages carry no chips (owner, 26 Oct).

Do not use when

  • On marketing pages. Why: No status chips on marketing pages.

Anatomy

PartWhat it is
introp with the register date and counts
grouph2, p lede, Table (status-wrap) with table.status-table
rowth name, td.status-state with data-state, td what it does today

Made of: table, heading, text.

Used in: pages directly.

Variants

VariantWhenWhy
defaultWherever the page declaration places it.One shape per job keeps pages predictable.

States

StateRendered or not applicable
defaultdefault
hoverNot applicable: Rows are not interactive.
focus-visibleThe table region is focusable for scrolling.
activeNot applicable: Not interactive.
disabledNot applicable: Nothing to disable.
loadingNot applicable: Build time.
emptyA group with no claims is not rendered.
errorA claim without plain copy, or with a build note, fails the build.
currentNot applicable: No current row.
visitedNot applicable: Not links.
expandedNot applicable: Does not open.

Tokens

PartToken
state.markA small dye mark beside the state word (data-state)
row.rule--rule-hair --line
--status-table-font-type-small-strongvar(--type-small-strong)
--status-table-color-ink-2var(--ink-2)
--status-table-max-width-w-textvar(--w-text)
--status-table-padding-space-6var(--space-6)
--status-table-border-top-rule-hairvar(--rule-hair)
--status-table-border-top-linevar(--line)
--status-table-border-top-rulevar(--rule)
--status-table-border-top-inkvar(--ink)
--status-table-font-type-h3var(--type-h3)
--status-table-letter-spacing-ls-h3var(--ls-h3)
--status-table-margin-top-space-3var(--space-3)

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; columns stack under 768 px; the wrap keeps a 16 px gutter on phones.
wrappingThe table scrolls inside its focusable region on phones.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internal--space-4 cell padding.
externalIn the wide prose column.
rhythmOne table per group.

Motion

AspectValue
NoneNo intrinsic element animation. The optional claude-entrance consumer profile may translate below-fold structure once (20px, --dur-weave, --ease-enter, --stagger); reduced motion disables it. This preserved baseline entrance is separate from element playback.

Runtime and reuse

  1. Render-only element; mount any registered child enhancements separately. Preserve required Site CSS, fonts, responsive and locale rules from nativeElement.

Accessibility passport

AspectValue
rolea landmark or list, as stated in its parts
nameIts visible text
keyboardLinks and buttons inside, in reading order.
focusThe --focus ring on every link and button inside.
screenReaderRead in source order; decorative weaving is aria-hidden.
contrastInk on cotton 14:1; text on every dye field 4.5:1 or better (checked by check-brand).
targetLinks and buttons are 44 px tall.

Content

SlotLengthVoice
what it does today1 sentenceBuyer-facing; no build notes, no paths

Good: “Runs today · Scores a system against the open rubric.”

Bad: “npm run audit”

Japanese: Japanese names and sentences from status-copy.ts.

Icons and illustrations

None: this element uses no icon or illustration of its own.

Decisions and exceptions

  • None.

Usage

220 uses across the built pages (measured by npm run site:system).

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Open in Storybook

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.