Operational state badge

The selected healthy, attention, broken and action badges, distinguishable by geometry and words. These name operational states, not audit-score bands.

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

Do and don't

Do: Review needed

Rendered by state-badge.ts

Open example: Operational state badge · Do: Review needed Use the full-page example to follow page links.

Diamond and word, not colour alone.

Do: Route a repair

Rendered by state-badge.ts

Open example: Operational state badge · Do: Route a repair Use the full-page example to follow page links.

Arrow and translated word.

Do: Recorded healthy state

Rendered by state-badge.ts

Open example: Operational state badge · Do: Recorded healthy state Use the full-page example to follow page links.

A static example of an explicitly supplied state, not an inferred audit score.

Do: Recorded broken state

Rendered by state-badge.ts

Open example: Operational state badge · Do: Recorded broken state Use the full-page example to follow page links.

The broken shape retains its translated state word; this is an illustrative record value.

Don't: Not a measured score

Rendered by state-badge.ts

Open example: Operational state badge · Don't: Not a measured score Use the full-page example to follow page links.

Health scores have their own bands.

Don't: Not an unlabeled mark

Rendered by state-badge.ts

Open example: Operational state badge · Don't: Not an unlabeled mark Use the full-page example to follow page links.

The word always accompanies the shape.

Generated API variants, rendered live

Generated variants of the first authored example, from selected boolean and enum props. These are API explorations, not authored state declarations or verification results. Hover and focus respond to the pointer and the keyboard in the examples above.

Base authored example

Rendered by state-badge.ts

Open example: Operational state badge · Do: Base authored example Use the full-page example to follow page links.

Diamond and word, not colour alone.

state: healthy

Rendered by state-badge.ts

Open example: Operational state badge · Do: state: healthy Use the full-page example to follow page links.

In the healthy state.

state: attention

Rendered by state-badge.ts

Open example: Operational state badge · Do: state: attention Use the full-page example to follow page links.

In the attention state.

state: broken

Rendered by state-badge.ts

Open example: Operational state badge · Do: state: broken Use the full-page example to follow page links.

In the broken state.

state: action

Rendered by state-badge.ts

Open example: Operational state badge · Do: state: action Use the full-page example to follow page links.

In the action state.

Rules

RuleWhyCheck
Positive specimens declare their rendered initial state and document language; each registered visual variant has a positive example.Machine and Library consumers need the same examples without turning declarations into execution evidence.Automated: tests/unit/v4-example-coverage.test.ts
Use only an explicitly recorded operational state, with its word.An illustration must never silently infer a product result.Review: System owner, at composition review

API

PropTypeRequiredDefaultWhat it does
statehealthy | attention | broken | actionYesExplicit state of the record.
langen | jaNo"en"Label language.

Contract details

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

Identity

AspectValue
Idstate-badge
LayerAtoms
Categorystatus
OwnerSite system lead
Statusdraft
Version1.0.0
Sourceapps/showcase/site/system/atoms/state-badge.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-27Created from the owner-selected V4 direction (D-SITE-019).

Use when

  • A record has an explicit operational state. Why: The mark and word let readers distinguish states without relying on colour.

Do not use when

  • Inferring a state from an audit score. Why: Scores use Band word and its existing thresholds, not these four workflow meanings.

Anatomy

PartWhat it is
rootLabelled badge
markCircle/check, diamond, split bars or arrow
wordVisible state name

Made of: tokens-component.

Used in: identity-playground.

Variants

VariantWhenWhy
healthyThe record states healthy.Geometry and language preserve meaning even in monochrome.
attentionThe record states attention.Geometry and language preserve meaning even in monochrome.
brokenThe record states broken.Geometry and language preserve meaning even in monochrome.
actionThe record states action.Geometry and language preserve meaning even in monochrome.

States

StateRendered or not applicable
defaultdefault
hoverNot applicable: The operational state badge is not interactive, so it has no hover state.
focus-visibleNot applicable: The operational state badge does not take focus; links and buttons inside it carry their own focus ring.
activeNot applicable: The operational state badge cannot be pressed.
disabledNot applicable: The operational state badge has nothing to disable.
loadingNot applicable: The operational state badge is rendered at build time and is complete when the page loads.
emptyNot applicable: The operational state badge is not rendered without content; the builder skips it.
errorNot applicable: The operational state badge shows no data that can fail.
currentNot applicable: The operational state badge has no current item.
visitedNot applicable: The operational state badge is not a link.
expandedNot applicable: The operational state badge does not open or close.

Tokens

PartToken
--state-badge-field-inkvar(--field-ink)
--state-badge-padding-largevar(--space-6)
--state-badge-mark-largevar(--space-12)
--state-badge-surfacevar(--cotton)
--state-badge-inkvar(--ink)
--state-badge-healthyvar(--teal-ink)
--state-badge-attentionvar(--saffron)
--state-badge-brokenvar(--madder-ink)
--state-badge-actionvar(--indigo-ink)
--state-badge-gapvar(--space-4)
--state-badge-captionvar(--type-small)
--state-badge-markvar(--space-11)
--state-badge-rulevar(--rule-hair)
--state-badge-linevar(--line-strong)
--state-badge-paddingvar(--space-5)

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.
wrappingText wraps; nothing scrolls sideways.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internal--space-4
externalInline within its record.
rhythmOne state per record.

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
roleStatic inline state label, without an automatic live-region role
nameThe visible governed state word
keyboardNo keyboard interaction
focusNot focusable
screenReaderReads the explicit state as text. A consumer that updates it must own any live announcement
contrastMeaning has both shape and words; ink on cloth carries the label, with a strong boundary on the saffron diamond
targetNot an interactive target

Content

SlotLengthVoice
stateOne governed wordHealthy, Attention, Broken, Action

Good: “Attention”

Bad: “Everything is perfect”

Japanese: 健全・要確認・破損・対応

Icons and illustrations

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

Decisions and exceptions

Usage

34 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.