diff --git a/AGENTS.md b/AGENTS.md index 77398f5..edda9d5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -143,6 +143,17 @@ session with **no other memory of this project**. So: profiles now live at **`/lab///`** (`lib/labRoutes.ts` builds it; `/coach/...` still resolves). The bespoke pages have inline contact errors but not the scroll-to behavior (yet). + - **Lab offer wizard (2026-10-04, part 3):** the long offer forms are now + multi-step. **`components/FormWizard.tsx`** (`FormWizard` + `WizardStep`) is a + controlled step shell — non-active steps are hidden with `display:none`, not + unmounted, so stateful children (`LabExtrasFields`) keep their values; the + form owns the step so it can jump to the offending step on a validation + failure. Applied to `CraftProfileForm` (8 crafts, 5 steps: Identity / What + you offer / Rates / Contact / Media) and the coach page (5 steps); the + footer renders Back/Next/Submit + a Preview button. The **4 bespoke pages + keep the one-scroll + progress bar** (their sections have no reliable + boundaries to split) and now **scroll to their contact error** on a failed + submit. A bespoke-page wizard is the remaining optional item. - **Photos**: `PhotoDropzone` (`src/components/PhotoDropzone.tsx`) is the shared image input — **drag & drop + multi-select**, emits `File[]` to its caller (which owns uploads/toasts). Used by `CreateSpotPage`, `EditSpotPage` and