Commit Graph

22 Commits

Author SHA1 Message Date
c28f8a2f29 Add VenueStep page (wizard step 7) + VenueCard selected prop
- Consolidated 3 baseline steps (venue select + venue detail + venue services) into 1
- CSS Grid venue card layout (1 col mobile, 2 col desktop) with radiogroup ARIA
- VenueCard extended with selected, role, aria-checked, tabIndex props
- Progressive disclosure: venue detail panel + service toggles after selection
- Service toggles via AddOnOption: photo presentation, livestream, recording
- Recording depends on streaming (auto-disabled when streaming off)
- Search input + filter chips for venue filtering
- Results count with aria-live, validation error with role="alert"
- Pre-planning variant with softer copy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:53:36 +11:00
fa20599b67 Add ProvidersStep page (wizard step 2) + audit fixes
ProvidersStep: list-map split layout with provider card list (left)
and map slot (right). SearchBar + filter chips + radiogroup card
selection pattern. Back link, results count with aria-live,
grief-sensitive copy with pre-planning variant. Pure presentation.

Audit fixes (18/20):
- P1: Move role="radio" + aria-checked onto ProviderCard (focusable)
- P3: Add aria-live="polite" on results count
- ProviderCard: extend props to accept HTML/ARIA passthrough, add
  rest spread to Card for role/aria-checked/aria-label support

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:36:27 +11:00
9e10a5e0f1 Add selected prop to ProviderCard
Thread Card's selected state (brand border + warm bg) through
ProviderCard for the radiogroup selection pattern in ProvidersStep.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:29:53 +11:00
4edea043e8 Normalize molecules: fix StepIndicator timing + spacing, ProviderCardCompact consistency
- StepIndicator: transition 300ms → 150ms (system convention)
- StepIndicator: raw px gap/margin strings → MUI spacing values
- StepIndicator: borderRadius '5px' → var(--fa-border-radius-full)
- StepIndicator: mobile font size 10px → 11px (D020 minimum floor)
- ProviderCardCompact: star icon colour → warning.main (match ProviderCard)
- ProviderCardCompact: meta icon fontSize 16 → 14 (match ProviderCard/VenueCard)

Phase 2.1 retroactive review: molecules normalize

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 21:42:00 +11:00
047d913960 format: Apply Prettier to existing codebase
Formatting-only changes across all component and story files.
No logic or behaviour changes — only whitespace, line breaks, and trailing commas.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:42:16 +11:00
92716c08e3 LineItem total: increase top padding for visual balance
mt/pt bumped from 1.5 (12px) to 2 (16px), add pb: 0.5 (4px) so
the text sits more centred between the border-top and the content below.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 08:50:29 +11:00
0ed0adc835 Refine LineItem + PackageDetail from review feedback
LineItem:
- Bump font weight 400 → 500 (D019: Montserrat Regular too light)
- Price text now text.secondary for readability hierarchy (name primary, price quieter)
- Total row stays fully prominent (primary colour)
- Item gap increased 12px → 16px in stories

PackageDetail:
- Restructure: sections (before total) + extras (after total)
  Essentials + Complimentary → Total → Extras (additional cost)
- Add compareLoading prop — loading spinner on Compare button
- Add CompareLoading story with simulated 1.5s load
- T&C line height reduced 1.5 → 1.3
- Section gap increased for breathing room
- Complimentary items now correctly shown before total
- Default story includes onArrange + onCompare handlers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 08:42:16 +11:00
cd44f0c992 Fix P1/P2 audit issues on LineItem + PackageDetail
- LineItem: add aria-label to info icon for screen readers (P1)
- PackageDetail: stack CTA buttons vertically on narrow screens (P2)
- PackageDetail: section headings use component="h3" for hierarchy (P2)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:58:39 +11:00
377ff41aac Add LineItem, ProviderCardCompact, PackageDetail for Package Select page
LineItem (molecule):
- Name + optional info tooltip + optional price
- Allowance asterisk, total variant (bold + top border)
- Reusable for package contents, order summaries, invoices

ProviderCardCompact (molecule):
- Horizontal layout: image left, name + location + rating right
- Used at top of Package Select page to show selected provider

PackageDetail (organism):
- Right-side detail panel for Package Select page
- Name/price header, Make Arrangement + Compare CTAs
- Grouped LineItem sections, total row, T&C footer
- PackageSelectPage story: full page with filter chips, package
  list (ServiceOption), sticky detail panel, and Navigation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:51:40 +11:00
f6b51ae7d4 Fix AddOnOption alignment + quieten "View more" link
- Centre-align heading row so switch aligns with short headings (Flowers edge case)
- Remove margin between heading and price — tucks directly underneath
- "View more" link: caption size + text.secondary colour + weight 400 (both components)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:25:20 +11:00
274671fdc6 Add expandable descriptions + fix AddOnOption layout
AddOnOption:
- Move price to its own row below heading (was squeezed between name and switch)
- Switch pins to top-right with alignItems: flex-start
- Long headings now wrap cleanly without layout pressure

Both AddOnOption + ServiceOption:
- Add optional maxDescriptionLines prop for CSS line-clamp truncation
- "View more" / "View less" toggle appears only when text is actually truncated
- Omit prop for no limit (default, backwards compatible)
- stopPropagation on toggle so clicking it doesn't trigger card selection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:20:58 +11:00
c56aed3f74 Fix SearchBar — increase gap so focus ring doesn't touch button
- Gap 6px → 10px (gap: 2.5) to clear the 5px focus ring

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:14:49 +11:00
c4e651ac6e Fix SearchBar — align button height with input, tighten icon gap
- Explicit button height via input token CSS vars for pixel-perfect alignment
- Reduced InputAdornment start margin (mr: 0.5) to bring search icon closer to text

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:13:17 +11:00
43e7191ead Add StepIndicator molecule — horizontal segmented progress bar
- Maps to Figma Progress Bar - Steps (2375:47468)
- Segmented bars: brand gold for completed/current, grey for incomplete
- Current step label bolded, responsive bar height (10px/6px)
- role="navigation" + aria-current="step" for accessibility
- 7 stories: Default, AllStates, TwoSteps, ManySteps, Interactive,
  Completed, NarrowContainer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:57:18 +11:00
1e7fbc0dc5 Add AddOnOption molecule — toggleable add-on with Switch
- Composes Card (interactive, selected) + Typography + Switch
- Maps to Figma ListItemAddItem (2350:40658) — toggle for optional extras
- Heading + optional price + description + Switch right-aligned
- Selected state via Card brand border + warm bg when checked
- Clicking anywhere on card toggles the switch (stopPropagation on switch)
- aria-labelledby connects switch to heading text
- 7 stories: Default, Checked, ServiceAddOns (interactive list with total),
  WithoutPrice, WithoutDescription, Disabled, EdgeCases

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:52:15 +11:00
667c97a237 Add SearchBar molecule — search input with optional submit button
- Composes Input + IconButton + Button for provider/venue search
- Enter-to-submit, progressive clear button, inline loading spinner
- Two sizes aligned with Input/Button (medium 48px, small 40px)
- Guards empty submissions, refocuses input after clear
- role="search" landmark for screen reader navigation
- Critique: 35/40 — P2 fixes applied (empty submit, inline loading, refocus)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:50:05 +11:00
dfa599d567 Add ServiceOption molecule — selectable service item for arrangement flow
- Composes Card (interactive, selected) + Typography
- Heading row with name + optional price (brand colour, right-aligned)
- Optional description text below heading
- Selected state via Card's built-in brand border + warm bg
- Disabled state with opacity token + pointer-events: none
- role="radio" + aria-checked for single-select group semantics
- 7 stories: Default, Selected, ServiceTypeSelection (interactive),
  CoffinSelection (interactive), WithoutPrice, Disabled, EdgeCases
- Maps to Figma ListItemPurchaseOption (2349:39505)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:34:33 +11:00
74a5469ba7 Fix P2 audit issues in ProviderCard — image a11y, token compliance
- Add role="img" + aria-label to hero image for screen readers
- Logo shadow: hardcoded rgba → var(--fa-shadow-sm)
- Logo border: hardcoded white → var(--fa-color-white) for theme consistency
- Audit score: 17/20 (Good), 0 P0/P1, 3 P2 fixed, 3 P3 noted

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 19:57:23 +11:00
9323b52376 Add VenueCard molecule — venue listing card for service venue select screen
- 3 component tokens (image.height, content.padding, content.gap)
- Composes Card (interactive) + Typography, consistent with ProviderCard patterns
- Hero image with role="img" aria-label for screen readers
- Meta row: location (pin icon) + capacity with "guests" suffix for clarity
- Price with "From" qualifier for transparency (split typography like ProviderCard)
- 6 Storybook stories: Default, ListLayout, EdgeCases, Responsive, OnDifferentBackgrounds, InteractiveDemo
- Critique score: 33/40 (Good) — P2 fixes applied (capacity label, price context, image a11y)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 19:51:53 +11:00
891ded2fdb Refine ProviderCard v2 — logo, price, badges, footer, unverified treatment
- Logo: circle → 64px rounded rectangle (8px radius), positioned fully
  inside image area with white border + shadow
- Footer removed — redundant since whole card is clickable and price
  is already in content area
- Price: split "Packages from" (body2) + price (h6/500wt) for lighter
  ecommerce feel, replaces blocky labelLg/700
- Verified badge bumped to medium size for visibility
- Capability badge: medium size, trailing info icon + capabilityDescription
  tooltip prop for plain-language definitions on hover
- Unverified cards: 3px top accent bar, list on neutral.50 background
- Caption/CaptionSm weight: 400 → 500 system-wide (extends D019)
- Meta row: body2 → caption size for clearer tertiary hierarchy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 18:28:28 +11:00
811736dbb9 Fix ProviderCard from user feedback + /critique
User feedback:
- "Trusted Partner" → "Verified" badge text
- Override Card hover bg fill (grey blended with shadow) — shadow lift only
- Logo 48px → 56px, removed white border (shadow only)
- Tightened spacing: content padding 16→12px, gap 8→4px, footer py 12→8px

/critique findings (27/40 → fixes applied):
- P1: Price promoted from footer into content area as bold primary text
- P2: Footer simplified to "View packages >" CTA with space-between
- Image fallback changed from grey to warm brand.50
- Name truncation relaxed to maxLines={2} for mobile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:52:01 +11:00
f31e37c837 Add ProviderCard molecule — first molecule in design system
First molecule component. Listing card for funeral providers on the
provider select screen (map + scrollable list layout).

- Verified providers: hero image, 48px logo overlay, "Trusted Partner"
  badge, name, location, reviews, capability badge, footer with price
- Unverified providers: text-only with same content alignment
- 7 component tokens (image height, logo size, footer/content spacing)
- Composes Card (interactive, padding="none") + Badge + Typography
- Capability badges accept arbitrary label + colour (categories may change)
- Footer bar with warm brand.100 bg, "Packages from $X >"
- 9 Storybook stories including mixed list layout demo
- Decisions D026-D030 logged

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:39:03 +11:00