Inventory parity
128/128 families
354/354 variants accounted for.
- Public
- 122 public families / 336 public variants
- Hidden
- 6 hidden families / 18 hidden variants
Standalone icons are excluded; icon-bearing component families remain in the accounting.
Design system
Reusable JudgmentKit components and states, informed by the breadth of Simple Design System without copying its styling.
Simple Design System sets the breadth benchmark. All 128 families and 354 variants are accounted for; JudgmentKit's current library contains 17 reusable components and 65 state examples.
Standalone icons are excluded from this count because JudgmentKit maintains its icon library separately.
Inventory parity
354/354 variants accounted for.
Standalone icons are excluded; icon-bearing component families remain in the accounting.
Semantic normalization
304/354 reference variants are axis-bearing and semantically normalized; the remaining 50 are singleton masters with no variant axes.
Family disposition and variant-axis semantics are recorded separately.
Runtime candidate
0/65 required states currently verified
Choose the component that matches the user's task, then inspect every state the interface needs to handle. The examples below use the same JudgmentKit components intended for product interfaces, not look-alike specimen controls.
Explore each component in the states it needs to handle. Interact with the controls directly; supporting details stay collapsed until requested.
Trigger one bounded user action
Unavailable until receipt evidence is complete.
The decision is being recorded.
None
{
"id": "action_button",
"purpose": "Trigger one bounded user action",
"required_states": [
"ready",
"disabled",
"focus-visible",
"loading"
],
"verified_states": [],
"pending_states": [
"ready",
"disabled",
"focus-visible",
"loading"
],
"anatomy": [
"visible label",
"optional icon",
"state affordance",
"progress indicator"
],
"token_bindings": [
"text",
"border",
"focus",
"decision",
"risk"
],
"accessibility_checks": [
"accessible name",
"keyboard activation",
"focus visible",
"target size",
"loading exposes aria-busy",
"every state exposes a complete, task-specific accessible name"
],
"review_checks": [
"action comes from the workflow",
"risky actions have approval-boundary evidence",
"the visible label is a complete, task-specific action phrase and remains on one line at every supported viewport",
"for English copy, prefer one to four words when clarity permits; localization may use the wording needed for an unambiguous action",
"responsive layout allocates enough width or uses shorter copy instead of wrapping, clipping, or truncating the action",
"ready, disabled, focus-visible, and loading use semantic state and visual treatment instead of appending state metadata to the visible label",
"loading pairs a progress indicator with a concise progress label, exposes aria-busy, and prevents repeat activation"
],
"failure_signals": [
"icon-only button has no accessible name",
"destructive action appears without confirmation evidence",
"visible action label wraps onto multiple lines",
"state metadata is appended to the visible action label",
"a truncated or clipped label hides the complete action",
"button label overflows its container at a supported viewport"
]
}
Group related actions with clear priority and boundaries
None
{
"id": "action_group",
"purpose": "Group related actions with clear priority and boundaries",
"required_states": [
"ready",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"disabled",
"focus-visible"
],
"anatomy": [
"primary action",
"secondary actions",
"group label or context"
],
"token_bindings": [
"decision",
"risk",
"border",
"spacing"
],
"accessibility_checks": [
"logical tab order",
"visible grouping",
"target size"
],
"review_checks": [
"primary action is singular",
"secondary actions remain adjacent to their object"
],
"failure_signals": [
"multiple primary actions compete",
"actions are detached from the evidence they affect"
]
}
Collect one labeled value with help, error, and disabled affordances
None
{
"id": "form_field",
"purpose": "Collect one labeled value with help, error, and disabled affordances",
"required_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"anatomy": [
"label",
"control",
"help text",
"error text"
],
"token_bindings": [
"text",
"border",
"focus",
"status",
"disabled"
],
"accessibility_checks": [
"programmatic label",
"error association",
"instructions available"
],
"review_checks": [
"label uses domain vocabulary",
"disabled reason is readable"
],
"failure_signals": [
"placeholder is the only label",
"error is color-only"
]
}
Collect short text or numeric values
None
{
"id": "text_field",
"purpose": "Collect short text or numeric values",
"required_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"anatomy": [
"label",
"input",
"help text",
"error text"
],
"token_bindings": [
"text",
"border",
"focus",
"status"
],
"accessibility_checks": [
"programmatic label",
"input purpose when known",
"error association"
],
"review_checks": [
"input type matches the value",
"validation is visible and textual"
],
"failure_signals": [
"raw input replaces approved primitive",
"invalid state lacks text feedback"
]
}
Collect longer written input
None
{
"id": "text_area",
"purpose": "Collect longer written input",
"required_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"anatomy": [
"label",
"multi-line control",
"help text",
"error text"
],
"token_bindings": [
"text",
"border",
"focus",
"spacing"
],
"accessibility_checks": [
"programmatic label",
"resize or stable height",
"error association"
],
"review_checks": [
"expected content is clear",
"long content does not collapse nearby controls"
],
"failure_signals": [
"text area is used for structured choices",
"long text overlaps following content"
]
}
Choose one value from a bounded option set
None
{
"id": "select_field",
"purpose": "Choose one value from a bounded option set",
"required_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"anatomy": [
"label",
"trigger or native select",
"selected value",
"trailing indicator slot",
"indicator",
"options",
"help or error text"
],
"token_bindings": [
"text",
"border",
"focus",
"surface",
"spacing",
"density"
],
"accessibility_checks": [
"name role value",
"keyboard operation",
"error association"
],
"review_checks": [
"empty option is clear when optional",
"selected value is visible, logical-start aligned, and truncates before the trailing indicator slot",
"custom field indicators are centered in a governed trailing slot while compact triggers use their declared compact composition",
"native select indicators remain browser-owned unless native appearance is replaced by a declared design-system indicator"
],
"failure_signals": [
"custom select lacks keyboard evidence",
"unassigned state is ambiguous",
"custom field equates selected-value start padding with the chevron's physical end inset",
"selected value overlaps or enters the trailing indicator slot",
"field and compact select composition are conflated"
]
}
Choose independent options from a set
None
{
"id": "checkbox_group",
"purpose": "Choose independent options from a set",
"required_states": [
"ready",
"error",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"error",
"disabled",
"focus-visible"
],
"anatomy": [
"legend",
"checkbox options",
"help or error text"
],
"token_bindings": [
"text",
"border",
"focus",
"spacing"
],
"accessibility_checks": [
"fieldset and legend",
"checked state",
"keyboard operation"
],
"review_checks": [
"long labels wrap cleanly",
"options remain independent"
],
"failure_signals": [
"checkboxes behave like radios",
"group has no legend"
]
}
Choose exactly one option from a set
None
{
"id": "radio_group",
"purpose": "Choose exactly one option from a set",
"required_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"empty",
"ready",
"error",
"disabled",
"focus-visible"
],
"anatomy": [
"legend",
"radio options",
"help or error text"
],
"token_bindings": [
"text",
"border",
"focus",
"spacing"
],
"accessibility_checks": [
"fieldset and legend",
"selected state",
"arrow-key operation"
],
"review_checks": [
"option labels are comparable",
"default selection is intentional"
],
"failure_signals": [
"mutually exclusive options are shown as checkboxes",
"selected state is visual-only"
]
}
Switch a binary setting on or off
None
{
"id": "toggle",
"purpose": "Switch a binary setting on or off",
"required_states": [
"ready",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"disabled",
"focus-visible"
],
"anatomy": [
"visible label",
"switch control",
"current state text"
],
"token_bindings": [
"status",
"focus",
"disabled"
],
"accessibility_checks": [
"name role value",
"keyboard operation",
"state text"
],
"review_checks": [
"label names the setting",
"state change is reversible or bounded"
],
"failure_signals": [
"toggle hides the current state",
"toggle performs a destructive action"
]
}
Switch between peer sections without changing the task object
None
{
"id": "tabs",
"purpose": "Switch between peer sections without changing the task object",
"required_states": [
"ready",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"disabled",
"focus-visible"
],
"anatomy": [
"tab list",
"tabs",
"active tab",
"tab panels"
],
"token_bindings": [
"surface",
"border",
"focus",
"text"
],
"accessibility_checks": [
"tablist semantics",
"keyboard operation",
"active panel association"
],
"review_checks": [
"tabs are peers",
"active state is visible"
],
"failure_signals": [
"tabs are used as a wizard",
"inactive panels are unreachable by keyboard"
]
}
Reveal a compact set of contextual commands
None
{
"id": "menu",
"purpose": "Reveal a compact set of contextual commands",
"required_states": [
"ready",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"disabled",
"focus-visible"
],
"anatomy": [
"trigger",
"menu",
"menu items",
"dismiss behavior"
],
"token_bindings": [
"surface",
"border",
"focus",
"text"
],
"accessibility_checks": [
"trigger name",
"keyboard operation",
"dismissal",
"focus return"
],
"review_checks": [
"commands are contextual",
"primary path remains visible"
],
"failure_signals": [
"required action is hidden in a menu",
"menu traps focus"
]
}
Interrupt the current surface for a bounded decision or focused form
None
{
"id": "dialog",
"purpose": "Interrupt the current surface for a bounded decision or focused form",
"required_states": [
"ready",
"loading",
"error",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"loading",
"error",
"focus-visible"
],
"anatomy": [
"title",
"body",
"dismiss action",
"primary action"
],
"token_bindings": [
"surface",
"border",
"focus",
"decision",
"risk"
],
"accessibility_checks": [
"dialog semantics",
"focus management",
"escape or dismiss",
"no keyboard trap"
],
"review_checks": [
"primary action is visually final",
"cancel or dismiss precedes primary action"
],
"failure_signals": [
"dialog lacks dismiss path",
"focus is not returned after close"
]
}
Call attention to important status, risk, or required action
None
{
"id": "alert",
"purpose": "Call attention to important status, risk, or required action",
"required_states": [
"ready",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"focus-visible"
],
"anatomy": [
"status indicator",
"message",
"optional action"
],
"token_bindings": [
"status",
"risk",
"receipt",
"text"
],
"accessibility_checks": [
"status or alert semantics",
"non-color cue",
"readable message"
],
"review_checks": [
"severity matches the action needed",
"message explains next step"
],
"failure_signals": [
"color is the only severity cue",
"alert repeats unrelated information"
]
}
Compare structured rows and columns
| Request | Review status |
|---|---|
No refund requests need review. | |
| Request | Review status | Next action |
|---|---|---|
| RF-1842 | Needs decision | |
| RF-1843 | Needs evidence |
| Request | Review status |
|---|---|
Loading current refund requests. | |
| Request | Review status |
|---|---|
The refund queue could not be loaded. | |
| Request | Review status | Next action |
|---|---|---|
| RF-1842 | Needs decision | |
| RF-1843 | Needs evidence |
None
{
"id": "table",
"purpose": "Compare structured rows and columns",
"required_states": [
"empty",
"ready",
"loading",
"error",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"empty",
"ready",
"loading",
"error",
"focus-visible"
],
"anatomy": [
"caption or heading",
"headers",
"rows",
"cells",
"empty state"
],
"token_bindings": [
"surface",
"border",
"text",
"spacing"
],
"accessibility_checks": [
"header associations",
"caption or label",
"keyboard reachable controls"
],
"review_checks": [
"columns support decisions",
"empty and loading states are clear"
],
"failure_signals": [
"fields are shown only because they exist",
"wide table overflows without review"
]
}
Group related work, evidence, or controls in a bounded region
None
{
"id": "panel",
"purpose": "Group related work, evidence, or controls in a bounded region",
"required_states": [
"ready",
"loading",
"error"
],
"verified_states": [],
"pending_states": [
"ready",
"loading",
"error"
],
"anatomy": [
"heading",
"content region",
"optional actions"
],
"token_bindings": [
"surface",
"border",
"spacing",
"text"
],
"accessibility_checks": [
"heading hierarchy",
"region label when useful",
"responsive no overflow"
],
"review_checks": [
"panel groups one coherent concern",
"actions are adjacent to content"
],
"failure_signals": [
"card inside card nesting creates visual clutter",
"panel title is generic"
]
}
Summarize one repeated item or choice
None
{
"id": "card",
"purpose": "Summarize one repeated item or choice",
"required_states": [
"ready",
"disabled",
"focus-visible"
],
"verified_states": [],
"pending_states": [
"ready",
"disabled",
"focus-visible"
],
"anatomy": [
"item title",
"summary",
"metadata",
"optional action"
],
"token_bindings": [
"surface",
"border",
"spacing",
"text"
],
"accessibility_checks": [
"clear heading",
"focus target when clickable",
"non-text contrast"
],
"review_checks": [
"card represents one object",
"interactive area is clear"
],
"failure_signals": [
"page sections are styled as cards",
"clickable card lacks keyboard evidence"
]
}
Report progress, result, validation, or completion
None
{
"id": "status_message",
"purpose": "Report progress, result, validation, or completion",
"required_states": [
"ready",
"loading",
"error"
],
"verified_states": [],
"pending_states": [
"ready",
"loading",
"error"
],
"anatomy": [
"status text",
"severity or result",
"optional next action"
],
"token_bindings": [
"status",
"risk",
"receipt",
"text"
],
"accessibility_checks": [
"live-region behavior when async",
"non-color cue",
"plain-language message"
],
"review_checks": [
"message names the user-relevant result",
"completion leaves a receipt"
],
"failure_signals": [
"spinner has no status text",
"success state lacks receipt or next action"
]
}
| Component | Use | States | Quality |
|---|---|---|---|
| Action button | Trigger one bounded user action | ready, disabled, focus visible, loading | action comes from the workflow; risky actions have approval-boundary evidence; the visible label is a complete, task-specific action phrase and remains on one line at every supported viewport; for English copy, prefer one to four words when clarity permits; localization may use the wording needed for an unambiguous action; responsive layout allocates enough width or uses shorter copy instead of wrapping, clipping, or truncating the action; ready, disabled, focus-visible, and loading use semantic state and visual treatment instead of appending state metadata to the visible label; loading pairs a progress indicator with a concise progress label, exposes aria-busy, and prevents repeat activation |
| Action group | Group related actions with clear priority and boundaries | ready, disabled, focus visible | primary action is singular; secondary actions remain adjacent to their object |
| Form field | Collect one labeled value with help, error, and disabled affordances | empty, ready, error, disabled, focus visible | label uses domain vocabulary; disabled reason is readable |
| Text field | Collect short text or numeric values | empty, ready, error, disabled, focus visible | input type matches the value; validation is visible and textual |
| Text area | Collect longer written input | empty, ready, error, disabled, focus visible | expected content is clear; long content does not collapse nearby controls |
| Select field | Choose one value from a bounded option set | empty, ready, error, disabled, focus visible | empty option is clear when optional; selected value is visible, logical-start aligned, and truncates before the trailing indicator slot; custom field indicators are centered in a governed trailing slot while compact triggers use their declared compact composition; native select indicators remain browser-owned unless native appearance is replaced by a declared design-system indicator |
| Checkbox group | Choose independent options from a set | ready, error, disabled, focus visible | long labels wrap cleanly; options remain independent |
| Radio group | Choose exactly one option from a set | empty, ready, error, disabled, focus visible | option labels are comparable; default selection is intentional |
| Toggle | Switch a binary setting on or off | ready, disabled, focus visible | label names the setting; state change is reversible or bounded |
| Tabs | Switch between peer sections without changing the task object | ready, disabled, focus visible | tabs are peers; active state is visible |
| Menu | Reveal a compact set of contextual commands | ready, disabled, focus visible | commands are contextual; primary path remains visible |
| Dialog | Interrupt the current surface for a bounded decision or focused form | ready, loading, error, focus visible | primary action is visually final; cancel or dismiss precedes primary action |
| Alert | Call attention to important status, risk, or required action | ready, focus visible | severity matches the action needed; message explains next step |
| Table | Compare structured rows and columns | empty, ready, loading, error, focus visible | columns support decisions; empty and loading states are clear |
| Panel | Group related work, evidence, or controls in a bounded region | ready, loading, error | panel groups one coherent concern; actions are adjacent to content |
| Card | Summarize one repeated item or choice | ready, disabled, focus visible | card represents one object; interactive area is clear |
| Status message | Report progress, result, validation, or completion | ready, loading, error | message names the user-relevant result; completion leaves a receipt |