Files
govoplan/docs/evidence/SHARED_WEBUI_PRIMITIVE_INVENTORY.md
T
zemion a1b80eda27
Dependency Audit / dependency-audit (push) Successful in 1m43s
Deployment Installer / deployment-installer (push) Successful in 6s
Security Audit / security-audit (push) Successful in 11m17s
Enforce the shared WebUI pattern language
2026-08-18 13:17:22 +02:00

5.5 KiB

Shared WebUI Primitive Inventory

This 2026-08-18 inventory records the implementation state after the product-wide structural consolidation and second duplicate-rule audit. It is evidence for enforcement, not a substitute for the normative interface pattern language.

Implemented And Enforced

Contract Adoption evidence Ownership now enforced
ActionToolbar and groups 50 source files Raw module-prefixed toolbar elements and local toolbar definitions are rejected. Distribution, wrapping, density, grouping and panel/section surfaces are Core-owned.
PageLayout / WorkspaceLayout / WorkspaceFrame 25 / 16 / 17 source files Headed page anatomy, full-height viewport frames and navigation/list-detail panes no longer repeat inset, heading, notices, loading, shell height, surface, overflow or pane geometry. The raw page-frame and raw workspace exception baselines are both empty.
FilterBar 14 source files Catalogue and pane search/filter rows share width, surface, layout and wrapping.
SelectionList family 19 source files Resource navigation shares selection, title/description, leading-icon and truncation anatomy.
StatePanel 25 source files Whole-surface, compact and fill empty/blocked/error states replace module-local state shells.
CountBadge 8 source files Notification, folder, search, postbox and graph counts use one compact badge contract.
ContentSection 5 source files Repeated bordered/subtle editor sections and compact provenance panels share surface, density, flow and rhythm.
ContentGrid 22 source files Equal-column content geometry and former dashboard/settings/assignment copies are Core-owned.
FormGrid and FormLayout 53 source files Former generic/admin grids and equal-column dialog/editor copies use named collapse points and native form semantics.
MetricGrid / MetricCard 31 / 33 source files Module-local metric helpers, grids and card visual definitions were removed.
DescriptionList and DescriptionItem 28 source files Former generic property grids use semantic dl/dt/dd composition with central density and collapse.
DefinitionPalette, node/canvas visuals and FloatingStatus 2 Dataflow/Workflow consumers each The copied graph palette, canvas controls, minimap, node icon/port, empty overlay and activity overlay definitions are Core-owned; graph semantics remain local.
DialogActions, DialogForm, DialogSection every Core footer / 6 / 6 source files Footer action flow, native dialog form flow and dialog content grouping are Core-owned.
Standard dialog sizing 61 reviewed specialized selectors Any width matching the Core 460/560/680/1040/1440px scale must use Dialog size; the remaining decrease-only exceptions are explicit.

tools/checks/check-shared-webui-primitives.py verifies Core exports and ownership, representative consumers, the absence of the retired raw anatomy, and composition of every Dialog footer through DialogActions. tools/checks/check-shared-webui-layouts.py additionally requires the reviewed Core and module consumers and rejects any raw page or workspace frame; there are no remaining allow-listed layout exceptions.

Dialog Width Classification

The remaining 61 width selectors do not duplicate the Core 460/560/680/1040/ 1440px scale. They cover bounded editor widths between scale steps, high-density definition and governance editors, preview/chooser canvases, message and file overlays with coupled height behavior, and responsive full-canvas workflows. Their exact selector set lives in tools/checks/shared-webui-dialog-width-exceptions.txt. The focused check fails for a new selector, a stale baseline entry, or any local width that duplicates the Core scale.

Audit Result And Deliberate Local Ownership

The second scan compared exact CSS declaration bodies and JSX anatomy across every WebUI module after migration. All repeated generic structural candidates found in that pass were promoted: viewport frames, catalogue/list shells, filters, selectable lists, state panels, count badges, section frames, equal-column grids, section headers, metrics, and definition-editor chrome. The final legacy-baseline pass also migrated Access administration, Core Settings, Docs, Mail bounce processing, and Organizations to the shared page and workspace layouts and removed their copied responsive geometry.

The remaining cross-module declaration matches are not independent component anatomy. They are small token-based rules such as ellipsis, muted captions, uppercase terms, or flex-column containment applied to different semantic elements. Moving those rules into a component would erase meaning; their visual values already come from Core tokens. Remaining larger local layouts are deliberately domain-owned:

  • unequal-track editors, import mappings and schema/data tables;
  • calendar time grids, charts, graph node shapes and graph edge semantics;
  • file/mail/postbox/records explorer panes whose interaction contracts differ;
  • timelines, evidence histories, recipient compositions and policy-specific detail sections;
  • compact list-row internals that cannot preserve their semantics through SelectionListItemContent.

A future candidate is promoted only when a new audit identifies repeated structure plus the same responsive, accessibility and interaction contract. The enforcement script prevents regression for the patterns centralized in this pass and maintains the reviewed dialog-width baseline.