| 02-planning-threads |
02 |
ui |
| react |
| tanstack-router |
| tanstack-query |
| zustand |
| tabs |
| threads |
| candidates |
|
| phase |
provides |
| 02-planning-threads |
Thread and candidate API endpoints at /api/threads |
|
| phase |
provides |
| 01-foundation-and-collection |
SlideOutPanel, ConfirmDialog, ItemCard, ItemForm, CategoryPicker, ImageUpload, uiStore pattern |
|
|
| Tabbed home page with gear/planning views |
| Thread list with card UI showing candidate count and price range |
| Thread detail page with candidate card grid |
| Candidate add/edit via slide-out panel with same fields as items |
| Thread resolution flow with confirmation dialog and collection integration |
| TanStack Query hooks for thread and candidate CRUD |
|
|
| added |
patterns |
|
|
| tab navigation via URL search params |
| dual slide-out panel pattern |
| cross-query invalidation on resolution |
|
|
| created |
modified |
| src/client/hooks/useThreads.ts |
| src/client/hooks/useCandidates.ts |
| src/client/components/ThreadTabs.tsx |
| src/client/components/ThreadCard.tsx |
| src/client/components/CandidateCard.tsx |
| src/client/components/CandidateForm.tsx |
| src/client/routes/threads/$threadId.tsx |
|
| src/client/stores/uiStore.ts |
| src/client/routes/index.tsx |
| src/client/routes/__root.tsx |
|
|
| Tab navigation uses URL search params (?tab=gear|planning) via TanStack Router validateSearch for shareable URLs |
| Candidate panel runs alongside item panel as separate SlideOutPanel instance, controlled by independent uiStore state |
| Resolution invalidates threads, items, and totals queries for cross-tab data freshness |
| FAB hidden on thread detail pages to avoid confusion between item add and candidate add |
|
| Tab navigation pattern: URL search params with z.enum().catch() for default, ThreadTabs renders underline indicator |
| Dual panel pattern: root layout renders two SlideOutPanel instances with independent open/close state |
| Cross-query invalidation: useResolveThread invalidates threads + items + totals on success |
|
| THRD-01 |
| THRD-02 |
| THRD-03 |
| THRD-04 |
|
4min |
2026-03-15 |