Add Footer + ServiceSelector organisms
Footer: - Dark espresso (brand.950) bg, inverse white text - Logo, tagline, contact (phone/email), link group columns, legal bar - Semantic HTML: <footer>, <nav> per group, <ul> for lists - Critique 38/40, P2 fixes applied (legal link size, nav landmarks) ServiceSelector: - Single-select panel for arrangement flow - Composes ServiceOption × n + Typography + Button (radiogroup) - Auto-disables continue when nothing selected - 7 stories incl. InArrangementFlow with StepIndicator Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -796,7 +796,51 @@ Each entry follows this structure:
|
||||
- **Planned (4 organisms):** ServiceSelector, PricingTable, ArrangementForm, Footer
|
||||
|
||||
**Next steps:**
|
||||
- Build Footer organism (Link + Typography + Divider — dependencies ready)
|
||||
- Build ServiceSelector organism (ServiceOption × n + Typography + Button)
|
||||
- ~~Build Footer organism~~ ✓ Done
|
||||
- ~~Build ServiceSelector organism~~ ✓ Done
|
||||
- Consider FormField molecule if Input's built-in label/helperText proves insufficient
|
||||
- Remaining P3s: InfoOutlinedIcon sizing in ProviderCard, image loading placeholder, accent bar 3px→4px
|
||||
|
||||
### Session 2026-03-25p (continued) — Footer + ServiceSelector organisms
|
||||
|
||||
**Agent(s):** Claude Opus (via conversation)
|
||||
|
||||
**Work completed:**
|
||||
- Built Footer organism (`src/components/organisms/Footer/`):
|
||||
- Dark espresso (brand.950) surface with inverse white text
|
||||
- Logo + tagline + contact info (phone/email with tel:/mailto: links) in left column
|
||||
- Configurable link group columns with heading + `<ul>` list
|
||||
- Bottom legal bar: copyright + legal links (Privacy, Terms, Accessibility)
|
||||
- Semantic HTML: `<footer>`, `<nav aria-label>` per link group, `<ul>` for link lists
|
||||
- Responsive: stacks to single column on mobile, side-by-side on desktop
|
||||
- 5 stories: Default, Minimal, WithContactOnly, TwoColumns, FullPage (Nav + content + Footer)
|
||||
- Critique: 38/40 (Excellent). P2 fixes applied: legal links bumped from 11px → 12px, nav landmarks added
|
||||
- Built ServiceSelector organism (`src/components/organisms/ServiceSelector/`):
|
||||
- Single-select panel composing Typography + ServiceOption × n + Button
|
||||
- Heading + optional subheading + radiogroup of ServiceOption cards + optional continue button
|
||||
- Continue button auto-disables when nothing selected (overridable via `continueDisabled`)
|
||||
- `maxDescriptionLines` pass-through to ServiceOption for truncation
|
||||
- 7 stories: Default, PreSelected, Interactive, CoffinSelection, WithTruncatedDescriptions, WithoutContinue, WithDisabledOptions, InArrangementFlow (with StepIndicator)
|
||||
- No new tokens needed — both organisms reuse existing token system
|
||||
- TypeScript compiles, Storybook builds
|
||||
|
||||
**Decisions made:**
|
||||
- Footer uses brand.950 (espresso) background — darkest brand tone for maximum contrast with white text, warm but professional
|
||||
- Footer link groups get individual `<nav aria-label>` landmarks — better screen reader navigation
|
||||
- ServiceSelector is a controlled component: parent manages `selectedId` + `onSelect`. Keeps state lifting simple for arrangement flow.
|
||||
- Continue button defaults to disabled when nothing selected — prevents empty submissions without explicit error messages
|
||||
|
||||
**Component status at end of session:**
|
||||
- **Done (11 atoms):** Button, Typography, Input, Card, Badge, Chip, Switch, Radio, IconButton, Divider, Link
|
||||
- **Done (6 molecules):** ProviderCard, VenueCard, ServiceOption, SearchBar, AddOnOption, StepIndicator
|
||||
- **Done (1 organism):** Navigation
|
||||
- **Review (2 organisms):** Footer (critique 38/40), ServiceSelector
|
||||
- **Planned (3 atoms):** Icon, Avatar, ColourToggle, Slider
|
||||
- **Planned (2 molecules):** MapCard, FormField
|
||||
- **Planned (2 organisms):** PricingTable, ArrangementForm
|
||||
|
||||
**Next steps:**
|
||||
- User to review Footer + ServiceSelector in Storybook
|
||||
- Build ArrangementForm organism (StepIndicator + ServiceSelector + AddOnOption — multi-step flow)
|
||||
- Consider FormField molecule if Input's built-in label/helperText proves insufficient
|
||||
- P3 cleanup: inverse logo SVG, InfoOutlinedIcon sizing, image placeholder, accent bar 3px→4px
|
||||
|
||||
Reference in New Issue
Block a user