Hero heading was display3 (same as every section h2), giving no visual
distinction. Now display2 (52px/24px) vs display3 (40px/22px). Still
renders as semantic h1 for SEO.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Increase hero top padding, heading-to-subheading gap, and finder card
side padding on mobile. Scale body1 text to 14px on mobile under display3
headings for better hierarchy contrast. Centre-align "Why Use FA" section
on mobile. Remove arrow from "Start exploring" button.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Migrate Gitea remotes to git.tensordesign.com.au. Add assetUrl() utility
that resolves image paths from Gitea ParsonsAssets repo when
STORYBOOK_ASSET_BASE is set, enabling images on Chromatic-published
Storybook while keeping local dev unchanged via staticDirs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pushes to backup (full), fa-dev + sheffield (stripped via worktree),
and Chromatic in one command. Replaces ad-hoc push workflow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Homepage: add "Why Use FA" text+image section and "Three Ways" feature cards,
reorder sections (logos carousel above discover), apply warm-grey alternating
backgrounds from Figma, unify all section headings to display3 serif, increase
section padding, fix heading hierarchy for SEO, and left-align testimonials.
FuneralFinder V3: responsive CTA (medium on mobile), shorten button to "Search",
bump reassurance text to caption variant, tighten location pin-to-text gap.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New molecule: ComparisonColumnCard — desktop column header card extracted
from ComparisonTable (~150 lines removed from organism)
- New molecule: ComparisonTabCard — mobile tab rail card extracted from
ComparisonPage (shared by V1 and V2)
- CellValue "unknown" restyled: icon+text in neutral grey (was Badge),
InfoOutlinedIcon on right at 14px matching item info icons
- Unverified provider story data: all items set to unknown across all
story files (no dashes in essentials)
- Mobile tab rail: recommended badge (replaces star), package price,
shadow/glow, center-on-select scroll, overflow clipping fixed
- ComparisonPackageCard: added shadow, reduced CTA button to medium
- ComparisonTable first column: inline info icon pattern (non-breaking
space + nowrap span) prevents icon orphaning on line wrap
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The mobile package card was previously duplicated inline in both
ComparisonPage (V2) and ComparisonPageV1 — same ~250-line component
pasted twice. Extract it as a proper molecule so card-level tweaks
land in one file and both pages stay in sync.
New molecule: src/components/molecules/ComparisonPackageCard/ with
component, stories (Verified, Unverified, Recommended,
ItemizedUnavailable), and index. API reuses the existing
ComparisonPackage type from ComparisonTable.
Both pages drop their inline MobilePackageCard + MobileCellValue
helpers and a handful of now-unused imports (Tooltip, Badge, Divider,
several icons, ComparisonCellValue type).
The desktop column header inside ComparisonTable is left inline —
it's tightly coupled to the grid/sticky behaviour and has a floating
verified badge + Remove link that differ meaningfully from the mobile
card. Extracting both variants into one molecule would need an
awkward variant prop for marginal gain.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Archive the current ComparisonPage as V1 (viewable under Archive/ in
Storybook) and build V2 as the new production version. In V2, the
recommended package is prepended instead of appended: it appears as the
first column on desktop and the first tab in the mobile rail. On mobile
the initially active tab is the first user-selected package, not the
recommendation — the recommended tab is surfaced as a visible suggestion
rather than the default view, which felt too upsell-y for the audience.
Both V1 and V2 now use a StarRoundedIcon (brand-600) in the mobile tab
label instead of a text star, so the "recommended" marker reads cleanly
against both selected and unselected tab backgrounds.
See decisions-log D040 for rationale.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add .agent/, .mcp.json, CLAUDE.md, AGENTS.md, GEMINI.md, QUICKSTART.md,
bootstrap.sh, docs/memory/, and docs/reference/ (impeccable, vercel,
workflow guides) to .gitignore. Files remain on disk for local use but
are no longer tracked or pushed to remotes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All three components iterated with user feedback and approved.
Registry updated with final APIs. Session log captures all decisions
from the iteration rounds.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hierarchy now matches MiniCard: title → meta → price
- Whole card is clickable (onClick prop) — removed View details link
- Verified badge → icon-only circle in image (matches MiniCard)
- Name truncated at 1 line with tooltip on hover
- No-image fallback shows inline verified icon + text
- Added keyboard support (Enter/Space) and focus ring
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Name is now optional. When omitted, renders a compact single-line
pill with just "From $X" using the bolder name styling. Useful for
denser map views or when provider identity isn't needed at pin level.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Names were too tight against the pill edges, especially on longer
provider names. Bumped token from spacing.2 to spacing.3.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Medium (500) was too thin at 11px — semibold (600) reads better
while still being lighter than the name (700) for hierarchy.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Visually reviewed in Storybook — left-aligned price looked unbalanced.
Centring both lines makes the pin read as a cohesive label rather
than a misaligned mini card.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MiniCard:
- Verified badge → icon-only circle floating in image (top-right)
- Reorder content: title → meta → price → badges → chips
- Truncated titles show tooltip on hover with full text
MapPin: Rethink from price-only pill to two-line label:
- Line 1: Provider name (bold, truncated at 180px)
- Line 2: "From $X" (smaller, secondary colour) — optional
- Communicates who + starting price at a glance
- Verified/unverified palette distinction preserved
- Dot variant removed (name is always required now)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add MiniCard, MapPin, MapPopup to registry. Log session work
including retroactive review completion and new component builds.
Mark all review phases complete in retroactive-review-plan.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Compact provider/venue preview anchored to a MapPin. Image + name +
price + meta row + "View details" link. Downward nub connects to pin.
Drop-shadow filter for floating appearance. Verified badge inside image.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Airbnb-style markers: pill variant (price label + nub) and dot variant
(no price). Verified = brand palette, unverified = neutral grey.
Active state inverts colours + scale-up. Pure CSS for map overlay use.
Keyboard accessible with role="button" and focus ring.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MiniCard: compact vertical card for grids, recommendations, and map
popups. Image + title + optional price/badges/chips/meta. Lighter
than ProviderCard — no verified tiers, no logo. Audit: 20/20.
MapPin tokens added (build next): price-pill markers for map views.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When a continue button is present (selection gates forward progress),
the radiogroup now communicates that a selection is mandatory.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Human-readable reference for day-to-day use: when to use which tool,
typical flows for page tweaking and component building, workflow quick
reference, and how things change when backend work starts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create AGENTS.md (90 lines) as shared foundation for Claude Code + Antigravity
- Slim CLAUDE.md from 113 to 45 lines (Claude-specific only, references AGENTS.md)
- Slim GEMINI.md from 58 to 26 lines (Antigravity-specific only, references AGENTS.md)
- Add 6 Antigravity workflows in .agent/workflows/ (session-start, preflight, token-sync, visual-qa, build-component, page-review)
- Add docs/reference/cross-tool-workflow.md with task routing, quality gates, file ownership, error mitigation
- Zero content overlap between CLAUDE.md and GEMINI.md (was ~80%)
- File ownership boundaries defined for current phase and future backend work
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Features: remove Card containers and circular icon backgrounds.
Clean icon (brand colour) + heading + description in open grid.
Feels authentic, not template-generated.
CTA: remove warm bg, use default surface with subtle divider above.
Heading in display3, understated placement between testimonials and FAQ.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Top: 35% → 55% opacity (darker reading zone for white text)
Middle: 15% → 10% at 60% (landscape stays vibrant)
Bottom: 40% → 30% (lighter, less needed with dark landscape)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pt: 6→20 (xs), 10→24 (md) so "See what you'll discover" heading
sits below the finder card, not underneath it.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero flex-direction: row → column so finder sits below the text,
centred, with bottom half overlapping into the white section.
Matches reference layout: text on image, finder straddles boundary.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- FuneralFinder now renders inside the hero Box (V2 only)
- mb: -18 pulls the next section up so finder straddles hero/content
- No more white gap between hero image and finder
- V1 standalone finder preserved with conditional render
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hero text: alignItems center → flex-start, pt 8 (top of image)
- FuneralFinder: mt -10 → -22 (sits on the hero image, not white bg)
- Heading + subheading + finder all visible above the fold
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New layout inspired by reference designs:
- Full-bleed hero with parsonshero.png + gradient overlay (heroImageUrl prop)
- Trust stats bar: 1,500+ families, 4.9 rating, 300+ directors
- "See what you'll discover" section: map placeholder + featured ProviderCards
- Editorial testimonials: alternating left/right with quote marks (no cards)
- Minimal FAQ: borderless accordion with divider lines
- V1 split hero preserved when heroImage prop used instead
New types: TrustStat, FeaturedProvider.
New props: heroImageUrl, stats, featuredProviders, discoverMapSlot,
onSelectFeaturedProvider.
V1 stories unchanged, new V2 story added.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Matches PackagesStep pattern:
- Left panel: ProviderCardCompact + badge + details + recommendations
- Right panel: warm header band + available info + enquiry CTA
(mirrors PackageDetail structure)
Users navigating between verified/unverified providers see the same
page structure — left panel for browsing, right panel for action.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Page shown when user selects an unverified provider from ProvidersStep.
Displays whatever data we have, offers enquiry CTA, recommends verified
alternatives.
Sections (all conditional based on available data):
- Provider header: ProviderCardCompact + "Listing" info badge
- What we know: definition list grid (pricing, services, area)
- Enquiry CTA: warm-bg card with "Make an Enquiry" button
- Verified recommendations: 2-col grid of ProviderCards
4 story variants: Default (full data), MinimalData, NoData, NoRecommendations.
Uses centered-form WizardLayout.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Sort button: remove fontSize override so it inherits Button small size
- Results count: mt 2 → 3 for more breathing room below controls
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- View toggle: floating in top-left of map panel with shadow + paper bg
- Control bar: just Filters + Sort (consistent heights, no overflow)
- Results count: bumped mt from 1 to 2 for more breathing room
- Both ProvidersStep and VenueStep updated
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All controls on one line: [List|Map] [Filters] [↕ Recommended]
- Sort: compact menu button replaces bulky TextField select
- View toggle: "List" / "Map" text labels alongside icons
- Results count: own line below controls
- Sort pushed right with ml:auto for visual separation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New control bar below search on both listing pages:
- Left: results count (passive)
- Right: sort select (Recommended/Nearest/Price), list/map toggle, filters
Sort: compact TextField select with 4 options, 0.813rem font.
View toggle: MUI ToggleButtonGroup with list/map icons, brand highlight.
Control bar wraps gracefully on narrow panels (flex-wrap).
New types: ProviderSortBy, VenueSortBy, ListViewMode.
Stories updated with interactive sort + view state.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Funeral type chips: wrap instead of horizontal scroll (stacks to 2 rows)
- Price slider: px 1 → 2.5 to accommodate MUI thumb radius (10px)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Price slider: overflow hidden on container prevents horizontal scrollbar
- Funeral type chips: overflow hidden on parent prevents clipping through
- Location: chip-in-input using Autocomplete multiple+freeSolo (real estate
site pattern — chip with X sits inside the search field)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>