- 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>
- 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>
- 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>
- 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>
- 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>
- @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>
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>
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>
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>
- 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>
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>
- 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>
- 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>
- [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>
- 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>
- 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>
- 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>
- 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>
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>
MUI ToggleButtonGroup wrapper with FA brand tokens. Exclusive
single-select with fieldset/legend a11y, external label, helper/error
text. Selected state uses brand.50 bg + brand border. Supports
optional description text per option. Used in wizard for binary
choices (Myself/Someone else, Yes/No).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>