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>
This commit is contained in:
2026-03-29 15:33:01 +11:00
parent 826496e645
commit 87249b6d9b
12 changed files with 112 additions and 29 deletions

View File

@@ -191,9 +191,10 @@ export const CoffinsStep: React.FC<CoffinsStepProps> = ({
<Box
component="form"
noValidate
aria-busy={loading}
onSubmit={(e: React.FormEvent) => {
e.preventDefault();
onContinue();
if (!loading) onContinue();
}}
>
{/* Page heading */}
@@ -293,11 +294,26 @@ export const CoffinsStep: React.FC<CoffinsStepProps> = ({
</Box>
</Card>
))}
{coffins.length === 0 && (
<Box sx={{ py: 6, textAlign: 'center', gridColumn: '1 / -1' }}>
<Typography variant="body1" color="text.secondary" sx={{ mb: 1 }}>
No coffins match your selected filters.
</Typography>
<Typography variant="body2" color="text.secondary">
Try adjusting the category or price range.
</Typography>
</Box>
)}
</Box>
{/* Validation error */}
{errors?.selectedCoffinId && (
<Typography variant="body2" color="error" sx={{ mb: 2 }} role="alert">
<Typography
variant="body2"
sx={{ mb: 2, color: 'var(--fa-color-text-brand)' }}
role="alert"
>
{errors.selectedCoffinId}
</Typography>
)}