deckhearth/.convoys/pricing-online-local/brief-13-local-stores-ui.md

48 lines
1.5 KiB
Markdown
Raw Normal View History

---
convoy: pricing-online-local
brief_number: 13
depends_on: [9, 11, 12]
recommended_model: composer-2.5
model_tier: standard
files:
- components/card-detail/CardDetailLocalStores.js
- components/CardDetailView.js
- lib/use-card-detail.js
- test/components/CardDetailLocalStores.test.js
cross_brief_commitments:
- brief: 9
description: |
Inserts local stores section into the purchase tab area using the
slot Brief 9 reserved. Does not rework purchase pricing UI.
---
# Brief 13: Local stores card detail UI
## Goal (1 sentence)
Show “Game stores near you” on card detail using saved home zip and the nearby stores API.
## Files in scope (do not edit anything else)
- `components/card-detail/CardDetailLocalStores.js`
- `components/CardDetailView.js`
- `lib/use-card-detail.js`
- `test/components/CardDetailLocalStores.test.js`
## Conventions to follow
- Fetch `/api/stores/nearby` when purchase tab active (auth required).
- List: name, address, distance, phone/website links, OSM link — no in-store prices.
- Empty states: no zip → link to Settings; no stores → gentle copy.
- Liquid Glass styling consistent with Brief 9 components.
## Acceptance criteria
- [ ] Stores render when user has home zip configured
- [ ] Prompt to set zip when missing
- [ ] No scraped in-store pricing shown
- [ ] Component test covers empty + populated states
- [ ] Tests pass
- [ ] No scope expansion
## Rationale (≤3 sentences)
Completes Phase 2 user-facing goal on card detail. Depends on pricing UI shell from Brief 9 and backend from Briefs 11–12.