Commit Graph

131 Commits

Author SHA1 Message Date
289dc18025 VenueDetailStep redesign + detail-toggles independent scroll
WizardLayout:
- detail-toggles now viewport-locked with independent panel scroll
- Left 55% scrollable, right 45% scrollable with divider border
- Back link rendered inside left panel (same as list-map)

VenueDetailStep redesign:
- Left: hero image, description, features (2-col grid with check icons),
  location map placeholder, address
- Right: venue name, icon meta rows (location, type, capacity),
  price + offset note, full-width Add Venue CTA, address, religion
  chips, service toggles
- MetaRow helper for consistent icon + text metadata display

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:41:02 +11:00
7f05f3812b WizardLayout: fix gap between nav and sticky search on scroll
- Removed top padding from list-map scroll container (pt: 0)
- Back link gets its own pt: 1.5 wrapper for breathing room
- Sticky search bar now pins flush against nav when scrolled

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:31:35 +11:00
ae9347e683 WizardLayout: lock list-map to viewport for independent panel scroll
- list-map variant now uses height: 100vh + overflow: hidden on outer wrapper
- Only the left panel scrolls (overflowY: auto already set)
- Map panel stays fixed, help bar pins to bottom
- Added minHeight: 0 on main element to prevent flex overflow
- Other layout variants unchanged (still use minHeight: 100vh)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:23:53 +11:00
3d339b4b0b ProvidersStep + VenueStep: heading scrolls, search/filters stay pinned
- Heading + subheading now scroll with listings (not sticky)
- Search bar + filters + results count remain sticky at top
- Subtle divider border on sticky section for visual segmentation
- Consistent pattern across both list-map pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:18:00 +11:00
ac6828d925 VenueStep click-to-navigate, new VenueDetailStep, CoffinDetailsStep detail-toggles
- VenueStep: simplified to click-to-navigate (like ProvidersStep)
  - Removed selection state, Continue button, inline detail, service toggles
  - Clicking a venue card triggers onSelectVenue navigation
- VenueDetailStep: new page with detail-toggles layout
  - Left: venue image, description, features
  - Right: name, location, type, price, Add Venue CTA, address, religions, service toggles
- CoffinDetailsStep: switched from centered-form to detail-toggles layout
  - Left: coffin image, description
  - Right: name, price, Add Coffin CTA, specs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:12:12 +11:00
f890110195 DateTimeStep: swap date TextField to Input atom for consistency
- Preferred date fields now use Input atom (external label) instead of MUI TextField
- Removed unused TextField import
- Matches the name field pattern from session 30b

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:00:18 +11:00
562f83a91e Update session log and retroactive review plan for 2026-03-30d
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:31:46 +11:00
577adf7f13 Retroactive review Phase 2.2: audit priority molecules, fix P0/P1
- AddOnOption: add aria-disabled when disabled (P1 a11y)
- ProviderCardCompact: add maxLines={1} on name to prevent overflow (P2 UX)
- ServiceOption: price uses labelLg variant instead of h6 + hardcoded fontWeight (P1 theming)

Audit scores: ServiceOption 13/20, AddOnOption 14/20, ProviderCardCompact 15/20

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:31:04 +11:00
b454911314 Checkbox atom: new FA wrapper with brand theming
- New Checkbox atom wrapping MUI Checkbox (forwardRef, displayName)
- MuiCheckbox theme overrides: warm gold checked, focus ring, disabled muted
- Stories: Default, States, TermsAgreement, Checklist
- PaymentStep: now imports Checkbox from atom instead of MUI directly

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:27:21 +11:00
b5a56b6497 Update session log for 2026-03-30d
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:23:26 +11:00
baaa9802fe Steps 8-15: consistency pass — subheading, spacing, dividers, Link atom
- CrematoriumStep: body1 subheading, mb:5, section dividers between questions
- CemeteryStep, CoffinDetailsStep, AdditionalServicesStep, SummaryStep: mb:5
- CoffinDetailsStep: body1 subheading
- PaymentStep: mb:5, Link atom for terms links (replaces Box component=a)
- ConfirmationStep: Link atom for phone number

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:19:29 +11:00
2d9d0624c7 Update session log and component registry for 2026-03-30c
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:06:57 +11:00
d51752d600 HomePage: initial build with hero, FuneralFinder, features, reviews, FAQ
- Hero section with display3 serif heading, warm bg, 50/50 split with image slot
- FuneralFinderV3 widget integrated as overlapping card (negative margin pattern)
- Partner logos carousel with CSS-only infinite scroll, prefers-reduced-motion
- 4 feature cards (outlined, compact padding, warm circular icon backgrounds)
- Reviews section (dark bg, Google aggregate rating, 3 testimonial cards)
- CTA banner with displaySm serif heading ("We Are Here When You Need Us")
- FAQ accordion (reuses SummaryStep pattern)
- Full a11y: section landmarks, aria-labelledby, heading hierarchy h1→h2→h3
- Grief-sensitive copy throughout (no urgency language, warm tone)
- Chromatic added as devDependency, build script updated
- 4 stories: Default, WithoutReviews, Minimal, Mobile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:05:22 +11:00
ade2f68f07 Update session log and component registry for 2026-03-30b
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:37:23 +11:00
6aca83dc90 DateTimeStep: rework date preferences, remove service tradition, fix inputs
- Heading: display3 for centered-form consistency with IntroStep
- Name fields: swap MUI TextField for Input atom (external label, no clipping)
- Date preferences: single date → up to 3 preferred dates with progressive
  disclosure ("+ Add another date" link, × remove on 2nd/3rd)
- Remove service style/religion field — tradition flows from provider/package
  selection and is confirmed on summary step
- Add dividers between question sections for visual separation
- Fix spacing between sections (mb: 5, mb: 3 on headings)
- FormLabels styled with fontWeight 600 for readability
- Updated types: preferredDates: string[] replaces funeralDateSpecific,
  removed religion field

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:34:55 +11:00
1faa320f4b Feedback iteration: DialogShell, page consistency, popup standardisation
- Add DialogShell atom — shared dialog container (header, scrollable body, footer)
- Refactor FilterPanel to use DialogShell (Popover → centered Dialog)
- Refactor ArrangementDialog to use DialogShell
- Remove PreviewStep + AuthGateStep pages (consolidated into ArrangementDialog, D-E)
- IntroStep: static subheading, top-left aligned toggle button content
- ProvidersStep: h4 heading "Find a funeral director", location search with pin icon,
  filter moved below search right-aligned, map fill fix, hover scrollbar
- VenueStep: same consistency fixes (h4 heading, filter layout, location icon, map fix)
- PackagesStep: grouped packages ("Matching your preferences" / "Other packages from
  [Provider]"), removed budget filter + Most Popular badge, clickable provider card,
  onArrange replaces onContinue, h4 heading
- WizardLayout: list-map left panel gets thin scrollbar visible on hover

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:20:26 +11:00
5c3e0c4e56 Update session log: tooling upgrades + workflow evaluation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 11:08:10 +11:00
e4ce243e57 Add GEMINI.md for Antigravity IDE project rules
- Mirrors CLAUDE.md conventions for cross-tool consistency
- Hard rules: no hardcoded values, token access patterns, atomic tiers
- Scoped for visual polish work in Antigravity browser agent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 11:07:42 +11:00
2208e8cd30 Add Storybook addons (a11y, storysource) and Playwright MCP
- @storybook/addon-a11y: real-time axe-core accessibility panel per story
- @storybook/addon-storysource: story source code panel in addons bar
- @playwright/mcp: browser automation for visual screenshot feedback loop

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 10:30:31 +11:00
1b6a66b4ca Update session log with quality pass results and remaining items
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:28:44 +11:00
88e409b019 Quality pass 2: sticky header breathing room, a11y labels, semantic tokens
Visual fixes:
- Sticky headers: add pt: 2 so scrolling content doesn't bleed
  flush against the heading (ProvidersStep, VenueStep)

Accessibility:
- ProvidersStep: add role="list" to provider list container
  (aria-label needs a semantic role to be announced)
- VenueStep: add aria-label to search TextField (placeholder
  alone is not a reliable label for screen readers)

Token consistency:
- Map placeholders: var(--fa-color-sage-50) → var(--fa-color-surface-cool)
  (use semantic token, not primitive) in ProvidersStep, VenueStep
- ArrangementDialog: var(--fa-color-brand-50) → var(--fa-color-surface-warm)
  for package summary background
- ArrangementDialog: replace Box component="a" with Link atom
  for terms and conditions (consistent focus/hover styling)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:24:31 +11:00
ae4bcef4c9 Quality pass: fix P0 audit findings across FilterPanel, ArrangementDialog, steps
FilterPanel (4 P0 + 2 P1 fixes):
- Add forwardRef (project convention)
- Use React.useId() for unique popover/heading IDs (was static)
- Change aria-describedby to aria-controls (correct ARIA pattern)
- Add role="dialog" + aria-labelledby on Popover paper
- Popover header now uses label prop (was hardcoded "Filters")
- Clear all font size uses theme.typography.caption (was hardcoded)
- Badge uses aria-hidden + visually-hidden text (cleaner SR output)
- Add maxHeight + overflow scroll to body, aria-label on Done button

ArrangementDialog (3 P0 + 1 P1 fixes):
- Add forwardRef
- Focus management: titleRef focused on step change via useEffect
- Add aria-live region announcing step transitions to screen readers
- Fix borderRadius from 3 to 2 (theme convention)

Sticky header padding (visual fix):
- ProvidersStep + VenueStep: mx/px now responsive { xs: -2/2, md: -3/3 }
  matching the panel's px: { xs: 2, md: 3 } — fixes mobile misalignment

CoffinDetailsStep:
- Wrap CTA area in form element with onSubmit + aria-busy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:22:06 +11:00
4ff18d6a9f Update session log with Batches 4-5 progress
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:33:35 +11:00
1e73cd2a89 Batch 5: ArrangementDialog organism — two-step modal (D-E)
New organism consolidating PreviewStep + AuthGateStep into a
single MUI Dialog with two internal steps:

- Step 1 (preview): ProviderCardCompact, package summary with
  sections/items/total, "What happens next" checklist, Continue CTA
  (pre-planning adds "Explore other options")
- Step 2 (auth): SSO buttons (Google/Microsoft), email entry,
  progressive disclosure for details (name, phone, contact pref),
  verification code, terms

Parent controls step state + auth form values. Dialog has back
arrow to return from auth → preview, close button on both steps.

Stories: Default (full flow), AuthStep, AuthDetails, PrePlanning

PreviewStep and AuthGateStep kept for now — to be deprecated
once ArrangementDialog is wired into the flow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:33:01 +11:00
be99acd51e Batch 4: Click-to-navigate providers (D-D), simplify coffin details (D-G)
ProvidersStep (D-D):
- Remove selection state (selectedProviderId) and Continue button
- Clicking a provider card triggers navigation directly
- Remove radiogroup pattern, error, loading props
- Cards are now simple interactive links, not radio buttons
- Stories updated: removed WithSelection, WithError, Loading

CoffinDetailsStep (D-G):
- Remove all customisation (handles, lining, nameplate)
- Remove OptionSection helper, ProductOption/CoffinDetailsStepValues types
- Simplified to coffin profile (image, specs, price) + Continue CTA
- Changed from detail-toggles split to centered-form layout
- Customisation noted as future enhancement
- Updated index.ts re-exports to match simplified API
- Stories simplified: Default, PrePlanning, MinimalInfo, Loading

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:29:24 +11:00
c5581c6e9f Batch 3: FilterPanel molecule + integration across 3 steps (D-C, D-F)
New molecule:
- FilterPanel: Popover-based reusable filter trigger with active
  count badge, Clear all, Done actions. D-C: Popover for MVP.

Step integrations:
- ProvidersStep: inline Chip filter bar → FilterPanel Popover,
  search bar + filter button side-by-side in sticky header
- VenueStep: same pattern, filter chips moved into Popover
- CoffinsStep (D-F): grid-sidebar layout → wide-form (full-width
  4-col grid), category + price selects moved into FilterPanel

WizardLayout:
- Added wide-form variant (maxWidth lg, single column) for
  card grids that benefit from full width
- wide-form included in STEPPER_VARIANTS for progress bar

Storybook:
- FilterPanel stories: Default, WithActiveFilters, SelectFilters,
  CustomLabel

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:24:54 +11:00
1c3cdbc101 Batch 2: List-map layout rework — 420px fixed column, sticky headers
- WizardLayout ListMapLayout: 420px fixed left column (D-B), flex:1
  right panel, back link rendered inside left panel instead of above
  the split (eliminates gap above map)
- LAYOUT_MAP type updated to accept backLink prop for list-map variant
- ProvidersStep: heading + search + filters wrapped in sticky Box
  that pins at top of scrollable left panel while card list scrolls
- VenueStep: same sticky header treatment, heading moved inside form
  for consistent wrapper structure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:18:52 +11:00
6ebd52f36f Batch 1: ToggleButtonGroup fixes, heading standardisation, spacing normalisation
- ToggleButtonGroup: increase label-to-options spacing (mb 1→2),
  top-align button content (flex-start), fix selected border
  CSS specificity by adding .Mui-selected in grouped selector
- Standardise all split-layout step headings from h4 to display3
  (ProvidersStep, PackagesStep, PreviewStep, VenueStep, CoffinsStep,
  CoffinDetailsStep) — matches D-A decision for brand warmth
- DateTimeStep: normalise section gaps (scheduling fieldset mb 3→4)
- CrematoriumStep: add subheading for consistency, normalise
  witness section spacing (mb 3→4)
- Fix input label clipping in PackagesStep and DateTimeStep
  (add pt: 0.5 to TextField containers for float-label clearance)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:13:03 +11:00
626b099cd9 Update session log with review checkpoint and iteration plan
User reviewed all 15 steps, provided feedback. 7-batch iteration plan
created with all design decisions resolved. Next: Batch 1 (atom fixes).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:06:21 +11:00
595ca33779 Update session log, mark D034 resolved, document roadmap
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:50:41 +11:00
884e79c0d2 D034: Unify form error styling to copper across theme
- MuiOutlinedInput: error border and focus ring now use copper
  (ColorTextBrand #B0610F) instead of red (ColorFeedbackError #BC2F2F)
- MuiFormHelperText: error text colour overridden to copper
- MuiFormLabel: error state stays neutral text (D024 reinforcement)
- ToggleButtonGroup: error border changed from error.main to copper

palette.error.main remains red for non-form uses (destructive buttons,
system alerts). Form validation is now fully warm/copper end-to-end.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:49:12 +11:00
ed046e29fb Add D034: form error copper styling (pending) to decisions log
- Documented the two-layer error styling inconsistency and recommended fix
- Added form error colour normalisation as Phase 4 item in review plan

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:37:42 +11:00
d66c59c56b Update session log with grooming pass details
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:33:37 +11:00
87249b6d9b Groom wizard steps 1-15: critique/harden/polish pass
- [P0] CrematoriumStep: Fix <option> → <MenuItem> in priority select
- [P1] All form steps: Add aria-busy={loading} + loading guard on submit
- [P1] Error messages: Replace color="error" (red) with copper
  (var(--fa-color-text-brand)) across ProvidersStep, PackagesStep,
  VenueStep, CrematoriumStep, CemeteryStep, CoffinsStep, PaymentStep
- [P2] IntroStep: "Has the person died?" → "Has this person passed away?"
- [P2] DateTimeStep: "About the person who died" → "who has passed"
- [P2] ProvidersStep: "Showing results from X" → "X providers found"
- [P2] Empty states: Add guidance text for ProvidersStep, PackagesStep,
  VenueStep, CoffinsStep empty results

Steps 4, 13, 15 passed with no issues.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:33:01 +11:00
826496e645 Update session log with layout fix details
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:18:19 +11:00
1e91929411 Fix layout variants for VenueStep, CoffinsStep, CoffinDetailsStep
- VenueStep: centered-form → list-map (venue cards left, map slot right)
  Matches ProvidersStep pattern with vertical card stack + map placeholder
- CoffinsStep: centered-form → grid-sidebar (filter sidebar left, card grid right)
  Filters now in dedicated sidebar, cards fill the wider main area
- CoffinDetailsStep: centered-form → detail-toggles (profile left, options right)
  Coffin image + specs on left, option RadioGroups on right

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:16:01 +11:00
a6524a82fe Update session log and registry with steps 5-15 progress
- All 15 wizard steps now first-pass complete
- Session log: detailed summary of steps 5-15 build
- Component registry: 11 new page components added

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:09:53 +11:00
36757bcdb0 Add SummaryStep, PaymentStep, ConfirmationStep (wizard steps 13-15)
SummaryStep (step 13):
- Accordion sections with edit IconButtons linking back to each step
- dl/dt/dd definition list for label-value pairs
- Total bar with prominent price display (aria-live)
- Share plan icon button, deposit display
- Pre-planning: "Save your plan" CTA; at-need: "Confirm" CTA

PaymentStep (step 14):
- Payment plan (full/deposit) shown before method (amount before how)
- ToggleButtonGroup for plan + method selection
- Card: PayWay iframe slot with placeholder; Bank: account details display
- Terms checkbox with service agreement + privacy links
- Security reassurance (lock icon, no-surprise copy)

ConfirmationStep (step 15):
- Terminal page — no back button, no progress indicator
- At-need: "submitted" + callback timeframe + arranger contact
- Pre-planning: "saved" + return-anytime + family-ready copy
- Muted success icon (not celebratory), next-steps link buttons
- VenueCard selected prop also staged (from step 7 work)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:08:41 +11:00
77bac1478f Add AdditionalServicesStep page (wizard step 12)
- Merged from baseline steps 14 (optionals) + 15 (extras) per Rec #2
- Section 1: Complimentary inclusions (dressing, viewing, prayers, announcement)
- Section 2: Paid extras (catering, music, bearing, newspaper notice)
- Progressive disclosure: viewing → same venue radio, music → live musician → type
- Dependent field resets when parent toggled off
- AddOnOption reuse for all toggle rows
- Bearing as RadioGroup (family/professional/both)
- No upsell language — toggle design is inherently low-pressure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:02:18 +11:00
f8db8c19b2 Add CoffinDetailsStep page (wizard step 11)
- Coffin profile: image + specs grid + description + price note
- Three product option sections: handles, lining, name plate
- RadioGroup per section with branded selected state (brand border + warm bg)
- Price impact inline: "Included" for allowance items, "+$X" for upgrades
- Options hidden when not offered by provider (graceful empty state)
- Responsive: image stacks above details on mobile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 15:00:41 +11:00
26a6d615da Add CoffinsStep page (wizard step 10)
- Coffin card grid (1/2/3 col responsive) with radiogroup pattern
- Category + price range filter dropdowns (reset page on filter change)
- "Most Popular" badge on popular coffins (Rec #10)
- Card shows image, name, category, price
- Pagination for large catalogues
- Australian terminology: "coffin" not "casket"
- Results count with aria-live, validation error with role="alert"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:59:09 +11:00
41901ed81d Add CemeteryStep page (wizard step 9)
- Progressive disclosure: "Have a plot?" → "Choose cemetery?" → card grid
- Dependent field resets (changing parent answer clears child selections)
- Cemetery card grid with radiogroup pattern + roving tabindex
- Pre-planning variant: softer subheading about provider arranging later
- "Provider can arrange this" shortcut skips grid entirely
- Grief-sensitive copy: "we need to find one" not "I don't have a plot"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:57:19 +11:00
1f9f7e2611 Add CrematoriumStep page (wizard step 8)
- Single crematorium: confirmation card (pre-selected), most common case
- Multiple crematoriums: card grid with radiogroup pattern + roving tabindex
- Witness question: "Will anyone follow the hearse?" with personalised helper text
- Special instructions: radio + progressive disclosure textarea via Collapse
- Personalised copy with deceased name ("escort [Name] to the crematorium")
- Pre-planning variant with softer helper text
- Australian terminology: "crematorium" not "crematory"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:55:34 +11:00
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
2004fe10c0 Add DateTimeStep page (wizard step 6)
- Centered-form layout with two fieldset sections: name + scheduling
- Grief-sensitive labels: "Their first name", "About the person who died"
- Pre-planning variant: softer copy, "About the person" (no "who died")
- Date preference: ASAP / specific with progressive disclosure date picker
- Time preference: 5-option radio (no preference, morning, midday, afternoon, evening)
- Religion/service style: Autocomplete with 22 options
- Save-and-exit tertiary CTA
- showNameFields + showScheduling props for conditional visibility per funeral type

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:51:09 +11:00
9738e6e893 Add AuthGateStep page (wizard step 5)
- Centered-form layout with 3 progressive sub-steps: SSO/email → details → verify
- Google/Microsoft SSO buttons + email entry (sub-step 1)
- Name, phone, contact preference fields (sub-step 2) — phone optional when email-only
- 6-digit verification code entry (sub-step 3)
- Benefit framing ("Save your plan") not gate framing
- Responsive name fields (stacked on mobile, side-by-side on desktop)
- autoComplete + inputMode on all fields per WCAG 3.3.8
- Audit: 18/20 (Excellent), P1 fixed (responsive name fields)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:49:32 +11:00
57e485ee8b Update session log and registry with steps 1-4 progress
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:42:08 +11:00
42d87293fd Add PreviewStep page (wizard step 4)
Informational review step — no form fields. List-detail split:
ProviderCardCompact + "What happens next" numbered checklist + CTAs
(left), PackageDetail breakdown (right). Pre-planning variant shows
"Explore other options" tertiary CTA. Checklist reduces anxiety about
remaining steps. Pure presentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:41:16 +11:00
a721f9cb1b Add PackagesStep page (wizard step 3)
List-detail split: ProviderCardCompact + selectable ServiceOption cards
(left), PackageDetail breakdown (right). Budget range filter (4 options),
"Most Popular" badge on qualifying packages. Radiogroup selection pattern
(ServiceOption has built-in role="radio"). Mobile Continue button visible
when detail panel stacks below. Grief-sensitive copy, pre-planning
variant. Pure presentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 14:39:28 +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