feat(pipeline): Pipeline kanban board + full-page lead detail with Move Stage #36
Reference in New Issue
Block a user
Delete Branch "feat/pipeline"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds the Pipeline workspace module: a drag-and-drop kanban board of
storm-restoration leads, a slide lead record
reachable from it. All client-side mock data — no backend wiring yet.
1. Pipeline board (
pipeline.tsx,pipeline-data.ts)→ Estimate Sent → Signed → Ino flag columns
(Stuck, Follow-Up) pinned to the right.
3/7) and aprogress bar.
advances the lead's furthest
reachedstage; dropping on a flag column keepsreachedwhere it stalled, ss how far it got.a storm badge and days-in-pipeline. Keyboard accessible (Enter/Space to open).
2. Lead drawer
Click a card for a right slide-over: stage stepper with percent complete, a
Details tab (contact, job dmeline) and an
Activity tab whose stage-change trail is generated from how far the lead
has progressed.
3. Lead detail page (new)
placeholder toast. The board swaps for a full-width lead record; a
"← Pipeline" breadcrumb retur
work-type / storm / age pills.
Completed steps get a check irent step gets a ring.
matching the section layout oodal so the two
screens stay consistent. Retail leads show an empty state in Insurance
instead of blank fields, sinc
4. Move Stage
without going back to the board — previously drag-and-drop was the only way.
The current stage is highlighted, checked and disabled.
and the "Lead moved" toast behave identically whether you drag or pick.
so a stage move updates the pills, progress bar, stepper and page accent
colour live, and the board re
5. Data model (`pipeline-dat
PLeadgains the fields the dephones[](primary mobile +source,tradeType(derived from work type;Multi-Tradewhen a job spanstwo),
urgencyinsurance— company, claim status (tracks the stage), claim and policynumbers, adjuster name and ph
assignment— assigned to, priority, follow-up date, created by / atAll values derive deterministically from the existing rows, with no
Date.now()or
Math.random(), so server a6. Styling (
dashboard.css)pld-*block reusing thes, so the pagerecolours to the lead's current stage.
under 720px.
and a bottom sheet under 720px with safe-area insets and larger touch
rows, so it can never be cliprt viewports
(landscape phones) get a tighter cap.
overflow: hiddenfring the dropdown.The accent bar rounds its own top corners instead.
Notes for review
reference
/owner/leads/:idscreen — field labels and section order may needa pass once the real record i
the detail page. Easy to add ed.