docs(10.1): approve UI design contract and resolve state gaps
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
---
|
||||
phase: "10.1"
|
||||
slug: "runtime-admin-extension-point"
|
||||
status: draft
|
||||
status: approved
|
||||
reviewed_at: "2026-09-28"
|
||||
shadcn_initialized: false
|
||||
preset: none
|
||||
created: "2026-09-28"
|
||||
@@ -278,7 +279,7 @@ Every string is a phrase key with `en` and `pl` entries. There is no hardcoded c
|
||||
|
||||
## UI Considerations
|
||||
|
||||
Applicable state considerations resolved: 17 covered, 3 backstop, 0 unresolved.
|
||||
Applicable state considerations resolved: 20 covered, 3 backstop, 1 dismissed, 0 unresolved.
|
||||
|
||||
| Category | Element(s) | Status | Resolution / Reason |
|
||||
|----------|------------|--------|---------------------|
|
||||
@@ -301,6 +302,10 @@ Applicable state considerations resolved: 17 covered, 3 backstop, 0 unresolved.
|
||||
| form | S3 fill write-back | ✅ covered | Only `field.fill` keys present in `result.fill` are patched. The form becomes dirty, those fields' errors clear, and nothing saves until Save. |
|
||||
| long-text | S3 widget button / S4 toolbar button | 🧪 backstop | Labels are `white-space: nowrap`. The toolbar cluster wraps with the existing `flex-wrap`, and the widget button grows past its 160px min-width. Needs a visual check at 768px with the pl labels. |
|
||||
| loading / error | S4 custom toolbar action | ✅ covered | Disabled with `aria-busy` during the POST. Success toast, then list reload and partial refetch. Failure gives a danger toast. |
|
||||
| long-text | S2 form partial output | ✅ covered | `.summer-partial` sets `overflow-wrap: anywhere`. Long words and URLs wrap inside the row and are never truncated or scrolled horizontally. |
|
||||
| empty | S3 widget with no fill values | ✅ covered | The element still mounts when `fill-values` is `{}` and `record-id` is `""`, and its button stays enabled. The plugin decides what to do with an empty context; the framework never hides or disables the widget. |
|
||||
| long-text / overflow | S5 extension failure box | ✅ covered | The text wraps and the box grows past `min-h-input`, switching to `items-start` with 10px vertical padding once it is multi-line. It never clips, so the pl `widget_failed` copy stays fully readable. |
|
||||
| partial / zero-one-many | S1 header partial host | ➖ dismissed | The host renders one opaque server node tree all-or-nothing (a failure gives the S5 box). Item counts belong to the partial's own content, which the stats strip rows above cover. |
|
||||
| error | S6 CSS bleed across controllers | 🧪 backstop | Links of inactive controllers get `disabled`. `pluginAssets.test.ts` covers the toggle, and a real-browser UAT (A4) confirms that module scripts load under CSP `script-src 'self'`. |
|
||||
|
||||
---
|
||||
@@ -328,12 +333,12 @@ Applicable state considerations resolved: 17 covered, 3 backstop, 0 unresolved.
|
||||
|
||||
## Checker Sign-Off
|
||||
|
||||
- [ ] Dimension 1 Copywriting: PASS
|
||||
- [ ] Dimension 2 Visuals: PASS
|
||||
- [ ] Dimension 3 Color: PASS
|
||||
- [ ] Dimension 4 Typography: PASS
|
||||
- [ ] Dimension 5 Spacing: PASS
|
||||
- [ ] Dimension 6 Registry Safety: PASS
|
||||
- [ ] Dimension 7 Inventory Provenance: PASS
|
||||
- [x] Dimension 1 Copywriting: PASS
|
||||
- [x] Dimension 2 Visuals: FLAG (non-blocking)
|
||||
- [x] Dimension 3 Color: PASS
|
||||
- [x] Dimension 4 Typography: FLAG (non-blocking)
|
||||
- [x] Dimension 5 Spacing: FLAG (non-blocking)
|
||||
- [x] Dimension 6 Registry Safety: PASS
|
||||
- [x] Dimension 7 Inventory Provenance: PASS
|
||||
|
||||
**Approval:** pending
|
||||
**Approval:** approved 2026-09-28 (FLAGs on Visuals, Typography and Spacing are non-blocking recommendations)
|
||||
|
||||
Reference in New Issue
Block a user