Enforce shared metric and description layouts
Dependency Audit / dependency-audit (push) Successful in 1m39s
Deployment Installer / deployment-installer (push) Successful in 6s
Security Audit / security-audit (push) Successful in 11m3s

This commit is contained in:
2026-08-18 11:30:39 +02:00
parent 5efb0eea6f
commit 5bb8028147
4 changed files with 230 additions and 25 deletions
@@ -115,18 +115,29 @@ The current structural vocabulary is:
- `FormSection` owns form-section heading, description, actions, content flow,
separation, and panel presentation. It does not own field values,
validation, permissions, or domain wording.
- `MetricGrid` owns the responsive grouping around `MetricCard`: fixed one-to-five
columns or auto-fit, minimum card width, density, surrounding rhythm, and a
named collapse point. Modules provide the metric, tone, and consequence;
they do not recreate the group grid or reach across module CSS to size it.
- `DescriptionList` and `DescriptionItem` own semantic property presentation.
The stacked variant supports compact multi-column facts; the inline variant
supports one-column term/value rows with a standard term width. Both own
density, wrapping, and responsive collapse while modules retain the terms,
values, provenance, and actions.
- `Dialog` owns size and administration variants, body padding, description,
notices, and fixed footer placement. `DialogActions`, `DialogForm`, and
`DialogSection` own the footer action flow, native form flow, and body
grouping used inside it. Modules compose fields and consequences rather than
recreating dialog anatomy.
Raw toolbar tags, the former generic grid classes, raw dialog-form wrappers,
and module-local definitions of these contracts are rejected by the focused
workspace checks. The next promotion candidates are metric groups,
description/property lists, filter/search composition, responsive data
summaries, and unified empty/error state composition. Their APIs must remain
composable; a central component is not a single oversized page template.
Raw toolbar tags, the former generic grid and property-list classes, raw
dialog-form wrappers, and module-local definitions of these contracts are
rejected by the focused workspace checks. Dialog widths matching the Core size
scale must use `Dialog size`; other local widths require a reviewed exception
and may only decrease. The next promotion candidates are assignment/picker
composition, filter/search composition, and unified empty/error state
composition. Their APIs must remain composable; a central component is not a
single oversized page template.
## Surface Archetypes