From 28eb76a9d873a53be0b5248ec2adf0ac434b01bb Mon Sep 17 00:00:00 2001 From: Matt Date: Thu, 21 May 2026 18:45:23 +0200 Subject: [PATCH] docs(uat): SHIPPED annotation for PR20 (form-error UX primitives) Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/superpowers/audits/alpha-uat-master.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/superpowers/audits/alpha-uat-master.md b/docs/superpowers/audits/alpha-uat-master.md index 3392b03a..70b63b0a 100644 --- a/docs/superpowers/audits/alpha-uat-master.md +++ b/docs/superpowers/audits/alpha-uat-master.md @@ -189,7 +189,7 @@ _Component refactors, multi-file edits, single-service tweaks, new validators._ > - **(d) Consistent inline error rendering:** standardize the per-field error block into a small `` helper so we don't keep open-coding the `{errors.X &&

{errors.X.message}

}` block in every form. Migrate the existing 29 surfaces opportunistically. > - **Behavior on success:** unchanged — submit proceeds, drawer/dialog closes, toast fires. > - **Mobile consideration:** on tall mobile-bottom-sheet forms, scroll-to-first-error needs to scroll the sheet content, not the page (otherwise nothing visible changes). The hook detects the scrolling ancestor at runtime. -> - **Effort:** ~3-4h end-to-end (hook + summary component + 29-form audit + zod-message fixes). Captured 2026-05-21 from UAT. +> - **Effort:** ~3-4h end-to-end (hook + summary component + 29-form audit + zod-message fixes). Captured 2026-05-21 from UAT. **SHIPPED (primitives + first adoption) in ec6f90f:** new `useFormScrollToError` hook (handles drawer/dialog scrolling-ancestor detection) + new `` component (top-of-form alert, renders only when ≥2 errors). Expense-form-dialog adopts both as the validation site. Remaining ~28 form surfaces parked for follow-up sweep. > - **Berths list "Active interests" column: static count → click/hover popover with interest details + stage-colored count chip** — _src/components/berths/berth-columns.tsx:288-297_ (current static number cell) + _src/lib/services/berths.service.ts (list endpoint extension)_ + new component ``. Today renders just `1` / `3` / `—` — unscannable when a rep wants to know WHO has interest in a berth. > - **Design (locked recommendation, can revisit at remediation):** > - **Cell:** count chip (`1`, `3`) with subtle outline + hover/focus indicator. Color-coded by the **highest-active-stage** interest on the berth (e.g., border-red-500 if any at Contract, border-amber-500 at Reservation, border-emerald-500 at EOI+, neutral when only at earlier stages). Encodes stage urgency without expanding.