Skip to content

Retail UX blocks (P0): LocationHero, HoursStatusStrip, StickyShopBar, StoreSwitcher #1

Description

@NicholasNewman

Summary

Child of chesapeakedev/chesapeake#333. Add P0 retail UX blocks to @chesapeake/stack under components/retail/.

Scope — P0 blocks

Block Purpose
LocationHero Local headline + dual CTA (primary commerce, secondary directions)
HoursStatusStrip Open/closed, pre-order cutoff, today's hours
StickyShopBar Mobile persistent commerce CTA
StoreSwitcher Cookie/geo-backed store selection; fixes wrong-location bugs

Also in this issue

  • types/retail-location.ts — export RetailLocation and supporting types (coordinate with chesapeakedev/chesapeake#485)
  • examples/retail-location-page.tsx — compose P0 blocks into a working example
  • Export blocks from package index
  • Patch release of @chesapeake/stack

Out of scope (follow-up issue)

P1: CategoryGrid, LocalGuideSection, FaqAccordion, LocalBusinessJsonLd
P2: QuickContactBar, DealsRow, ReviewsStrip, MapAndAccess

Acceptance criteria

  • All four P0 components render in the example page with sample props
  • Components use existing stack primitives (Button, Card, etc.) — no stack fork
  • StoreSwitcher persists selected location (cookie or localStorage)
  • HoursStatusStrip correctly shows open/closed from WeeklyHours input
  • StickyShopBar visible on mobile viewport; fires onShopClick callback
  • Types exported and documented in README or CHANGELOG
  • Lint/format pass; example compiles

Dependencies

  • Blocks: none (can start in parallel with #485)
  • Unblocks: retail-starter Vite scaffold, Forest Baltimore demo

Phase

Phase A


Parent epic: chesapeakedev/chesapeake#333

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions