docs: record the Lab offer wizard

This commit is contained in:
SkateSpots 2026-10-04 12:29:55 +07:00
parent bbe4ba2e14
commit 122cc871ed

View file

@ -143,6 +143,17 @@ session with **no other memory of this project**. So:
profiles now live at **`/lab/<craft>/<pubkey>/<id>`** (`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