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>
This commit is contained in:
2026-03-30 08:24:31 +11:00
parent ae4bcef4c9
commit 88e409b019
3 changed files with 10 additions and 13 deletions

View File

@@ -121,7 +121,7 @@ export const ProvidersStep: React.FC<ProvidersStepProps> = ({
mapPanel || (
<Box
sx={{
bgcolor: 'var(--fa-color-sage-50)',
bgcolor: 'var(--fa-color-surface-cool)',
height: '100%',
display: 'flex',
alignItems: 'center',
@@ -144,6 +144,7 @@ export const ProvidersStep: React.FC<ProvidersStepProps> = ({
top: 0,
zIndex: 1,
bgcolor: 'background.default',
pt: 2,
pb: 1,
mx: { xs: -2, md: -3 },
px: { xs: 2, md: 3 },
@@ -201,6 +202,7 @@ export const ProvidersStep: React.FC<ProvidersStepProps> = ({
{/* Provider list — click-to-navigate (D-D) */}
<Box
role="list"
aria-label="Funeral providers"
sx={{ display: 'flex', flexDirection: 'column', gap: 2, pb: 3 }}
>

View File

@@ -181,7 +181,7 @@ export const VenueStep: React.FC<VenueStepProps> = ({
mapPanel || (
<Box
sx={{
bgcolor: 'var(--fa-color-sage-50)',
bgcolor: 'var(--fa-color-surface-cool)',
height: '100%',
display: 'flex',
alignItems: 'center',
@@ -213,6 +213,7 @@ export const VenueStep: React.FC<VenueStepProps> = ({
top: 0,
zIndex: 1,
bgcolor: 'background.default',
pt: 2,
pb: 1,
mx: { xs: -2, md: -3 },
px: { xs: 2, md: 3 },
@@ -232,6 +233,7 @@ export const VenueStep: React.FC<VenueStepProps> = ({
<Box sx={{ display: 'flex', gap: 1, mb: 2, alignItems: 'flex-start' }}>
<TextField
placeholder="Search a town or suburb..."
aria-label="Search venues by town or suburb"
value={values.search}
onChange={(e) => onChange({ ...values, search: e.target.value })}
fullWidth