You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(landing): add map teaser section linking to /map (#5649)
## Summary
Adds a new section to the landing page that teases the recently
introduced `/map` page and links to it. Sits between `SpecsSection` and
`LibrariesSection` — the natural follow-up to the curated featured grid
is "and here's the visual way to browse all of them".
- Two-column layout that mirrors `SpecsSection` / `PaletteSection`:
short description on the left, decorative preview on the right.
- Description copy is dynamic — uses the live spec count when available
(`all 327 specs on a single canvas — clustered by tag similarity,
coloured by plot type, searchable.`).
- Preview is a hand-positioned SVG of three loose clusters connected by
hairlines, in the same Okabe-Ito palette as `MapPage`'s
`CLUSTER_COLORS`. Purely static — no data fetch, no force simulation —
so the landing page stays cheap.
- Whole right column is a `RouterLink` to `/map` with the same hover
treatment as the featured thumbs (lift + green accent bar). A secondary
`map.open()` `MethodLink` lives under the description for keyboard
users.
- Analytics: `nav_click` events with `source: 'map_teaser_link'` (text
link) and `source: 'map_teaser_preview'` (visual). The `SectionHeader`
link already tracks itself.
## Design proposal
I weighed three options for the right column:
1. **Live mini-graph** — re-render `ForceGraph2D` at small size.
Rejected: ~70 KB gzip on the landing page, force simulation cost, layout
flicker.
2. **Real screenshot** — would need a curated PNG asset that goes stale
every time the catalog grows.
3. **Static SVG cluster** *(picked)* — light, on-brand, ages gracefully,
communicates the clustering aesthetic without pretending to be the real
thing.
## Test plan
- [x] `yarn type-check` — clean
- [x] `yarn test src/pages/LandingPage.test.tsx` — 5/5 pass (existing
tests still hit the right elements)
- [x] `yarn build` — landing page bundle 24.51 kB → 7.23 kB gzip
- [x] `yarn lint src/pages/LandingPage.tsx` — clean (pre-existing
warnings in other files unaffected)
- [ ] Manual smoke: open `/`, scroll to map section, verify hover lift +
click navigates to `/map`
- [ ] Manual smoke: light + dark theme — palette, surfaces, rule borders
all read correctly
https://claude.ai/code/session_011dPWC8Z43EGZdj6rrE9gav
---
_Generated by [Claude
Code](https://claude.ai/code/session_011dPWC8Z43EGZdj6rrE9gav)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments