offplan · online
Workstream · sales-app

sales-app-react — Selection

Activeworkstreamsales-apppriority P0
Owner
roman
Created
2026-05-09
Plan
sales-app-react-module-sequence
Priority
P0
Tags
ux, architecture, domain

Goal

Implement the floorplate-first buyer flow Nadezhda demands — replace dot-on-façade IA with filter-by-shape. Modules: floorplate-selection, layout-detail, unit-detail, plus the shared status-pill component.

Council Review (CONV-30) amendments apply — see plans/sales-app-react-module-sequence.md §Council Review. Phase 3 amendments: A-BUYUX-1 (CRITICAL — first save = anonymous, NO modal), A-BUYUX-3 (sticky price chip in TopBar via Phase 4), A-BUYUX-4 (building filter chip + Building type), A-DEMO-2 (filter empty state), A-SALESUX-3 (broker-shortlist mode), A-HEALTH-3 (savedUnits hydration default), A-HEALTH-4 (status pill sole consumer of --color-status-*), A-BRAND-2 (status pill via tokens, no hex). State access uses Zustand selectors per A-SCALE-1: useBuyerProfile(s => s.savedUnits), useBuyerProfile(s => s.mode), useBuyerProfile.getState().addSavedUnit(unitId).

Per-module 4-step design loop (A-DEVUX-1): FloorplateSelection + UnitDetail + BuyerProfileCaptureModal-stub-trigger are density modules → use /wireframe to produce 2-3 lo-fi variants BEFORE coding. LayoutDetail is photo-heavy → skip wireframe.

Tasks

Status pill (foundation for the phase)

FloorplateSelection module (density)

LayoutDetail module (photo-heavy)

UnitDetail module (density)

Type + fixture additive changes

What's Next

Confirm Phase 2 (sales-app-react-anchor) is complete and exterior-360 + hotspot + poi-detail render correctly in Storybook. Then start with src/components/status-pill.tsx (smallest piece; reused by layout-detail + unit-detail). Then FloorplateSelection (the IA-defining filter screen). Then LayoutDetail, then UnitDetail.

Key Context

Session Log