diff --git a/src/components/pages/CemeteryStep/CemeteryStep.tsx b/src/components/pages/CemeteryStep/CemeteryStep.tsx index 6c04ece..e1b70a4 100644 --- a/src/components/pages/CemeteryStep/CemeteryStep.tsx +++ b/src/components/pages/CemeteryStep/CemeteryStep.tsx @@ -134,12 +134,14 @@ export const CemeteryStep: React.FC = ({ Cemetery - + {isPrePlanning ? 'If you haven\u2019t decided on a cemetery yet, the funeral provider can help with this later.' : 'Choose where the burial will take place.'} + + = ({ > {/* ─── Sidebar (left panel) ─── */} - {/* Heading */} - + {/* Heading — matches VenueStep / ProvidersStep list layout */} + Choose a coffin - - + {isPrePlanning ? 'Browse the range to get an idea of styles and pricing.' : 'Browse our selection of bespoke designer coffins.'} @@ -457,7 +456,7 @@ export const CoffinsStep: React.FC = ({ {/* ─── Categories menu — single-select with expandable subcategories ─── */} - + Categories @@ -518,7 +517,7 @@ export const CoffinsStep: React.FC = ({ {/* ─── Price range slider with editable inputs ─── */} - + Price @@ -568,7 +567,7 @@ export const CoffinsStep: React.FC = ({ {/* ─── Sort by ─── */} - + Sort by alert('View plan')} nextSteps={[ - { label: 'Start detailed arrangement', onClick: () => alert('Arrangement') }, + { label: 'Start another arrangement', onClick: () => alert('Arrangement') }, { label: 'Go to dashboard', onClick: () => alert('Dashboard') }, ]} navigation={nav} @@ -86,3 +87,12 @@ export const PrePlanning: Story = { export const Minimal: Story = { render: () => , }; + +// ─── No email ─────────────────────────────────────────────────────────────── + +/** At-need without email — phone callback only */ +export const NoEmail: Story = { + render: () => ( + alert('View plan')} navigation={nav} /> + ), +}; diff --git a/src/components/pages/ConfirmationStep/ConfirmationStep.tsx b/src/components/pages/ConfirmationStep/ConfirmationStep.tsx index 53834c0..c45ddaf 100644 --- a/src/components/pages/ConfirmationStep/ConfirmationStep.tsx +++ b/src/components/pages/ConfirmationStep/ConfirmationStep.tsx @@ -1,12 +1,69 @@ import React from 'react'; import Box from '@mui/material/Box'; -import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import Card from '@mui/material/Card'; import type { SxProps, Theme } from '@mui/material/styles'; +import { keyframes } from '@mui/material/styles'; import { WizardLayout } from '../../templates/WizardLayout'; import { Typography } from '../../atoms/Typography'; import { Button } from '../../atoms/Button'; +import { Divider } from '../../atoms/Divider'; import { Link } from '../../atoms/Link'; +// ─── Animated tick ────────────────────────────────────────────────────────── + +const scaleIn = keyframes` + 0% { transform: scale(0.85); opacity: 0; } + 60% { transform: scale(1.04); opacity: 1; } + 100% { transform: scale(1); opacity: 1; } +`; + +/** Animated success tick — circle draws, then checkmark appears */ +const AnimatedTick: React.FC<{ size?: number }> = ({ size = 80 }) => ( + + + + + + +); + // ─── Types ─────────────────────────────────────────────────────────────────── /** Next step link shown on the confirmation page */ @@ -26,6 +83,8 @@ export interface ConfirmationStepProps { phone?: string; /** Expected callback timeframe (at-need) */ callbackTimeframe?: string; + /** Business contact phone number for making changes */ + contactPhone?: string; /** Navigation links to next steps */ nextSteps?: ConfirmationLink[]; /** Callback for "View your plan" */ @@ -60,6 +119,7 @@ export const ConfirmationStep: React.FC = ({ email, phone, callbackTimeframe = 'within 2 hours', + contactPhone = '1800 987 888', nextSteps = [], onViewPlan, navigation, @@ -68,73 +128,124 @@ export const ConfirmationStep: React.FC = ({ }) => { return ( - - {/* Success icon — muted, not celebratory */} - + + {/* Animated success tick */} + + + {/* Heading */} {isPrePlanning ? 'Your plan has been saved' : 'Your arrangement has been submitted'} - {/* Body text */} - {isPrePlanning ? ( - - - You can return and update it anytime. - {email && ` We've sent a copy to ${email}.`} - - - When the time comes, your family can contact us and we'll have everything ready. - - - ) : ( - - - A funeral arranger will call you - {phone && ` on ${phone}`} {callbackTimeframe} to confirm the details. - {email && ` A confirmation has been sent to ${email}.`} - - - If you need to make changes before then, call us on{' '} - - 1300 000 000 - - . - - - )} + {/* Brief reassurance line */} + + {isPrePlanning + ? 'Everything is safely stored. You can come back and update it anytime.' + : `We've received your arrangement and someone will be in touch shortly.`} + - {/* View plan CTA */} + {/* What happens next — warm card */} + + + What happens next + + + {isPrePlanning ? ( + + {email && ( + + We've sent a copy of your plan to {email} + + )} + + You can return and make changes at any time — your plan will be here + + + When the time comes, your family can contact us and we'll have everything ready + + + ) : ( + + + A funeral arranger will call you + {phone && ( + <> + {' '} + on {phone} + + )}{' '} + {callbackTimeframe} to confirm the details + + {email && ( + + A confirmation has been sent to {email} + + )} + + Need to make changes before then? Call us on{' '} + + {contactPhone} + + + + )} + + + {/* Primary CTA */} {onViewPlan && ( - )} - {/* Next steps */} + {/* Secondary links */} {nextSteps.length > 0 && ( - - {nextSteps.map((link) => ( - - ))} - + <> + + + {nextSteps.map((link) => ( + { + e.preventDefault(); + link.onClick?.(); + } + : undefined + } + underline="hover" + sx={{ fontWeight: 500 }} + > + {link.label} + + ))} + + )} diff --git a/src/components/pages/CrematoriumStep/CrematoriumStep.tsx b/src/components/pages/CrematoriumStep/CrematoriumStep.tsx index c5f5644..9b01501 100644 --- a/src/components/pages/CrematoriumStep/CrematoriumStep.tsx +++ b/src/components/pages/CrematoriumStep/CrematoriumStep.tsx @@ -128,7 +128,7 @@ export const CrematoriumStep: React.FC = ({ Crematorium - + {isPrePlanning ? 'Review the crematorium details. You can update this later.' : isCremationOnly @@ -136,6 +136,8 @@ export const CrematoriumStep: React.FC = ({ : 'Confirm the crematorium and let us know about any preferences.'} + + = ({ A few important details - + {isAtNeed ? 'We just need a few details to help arrange the service.' : "If you're not sure about dates yet, that's fine. You can update this later."} + + = ({ Let's get started - + {SUBHEADING} + + = ({ top: 0, zIndex: 1, bgcolor: 'background.default', - pt: 1.5, + pt: 3, pb: 1.5, mx: { xs: -2, md: -3 }, px: { xs: 2, md: 3 }, @@ -224,7 +224,16 @@ export const ProvidersStep: React.FC = ({ {providers.map((provider) => ( = ({ top: 0, zIndex: 1, bgcolor: 'background.default', - pt: 1.5, + pt: 3, pb: 1.5, mx: { xs: -2, md: -3 }, px: { xs: 2, md: 3 }, @@ -205,7 +205,16 @@ export const VenueStep: React.FC = ({ {venues.map((venue) => (