--- // / — the landing route map. The smallest page migration in the refactor: // six cards rendered through `RouteCard` inside a `GridGroup`, copy lifted // from the `chapters` collection (`src/content/chapters/landing.json`, // id `landing`). // // Migrated from `index.html` per plans/astro-refactor/task-12-page-landing.md. // The page is the project's static entry point — it ships zero JavaScript. // Wrapped in `ChapterLayout` so the chapters.css palette (the drifted // chapter surface this page has always rendered with) loads before the // components resolve any colour, and so the surrounding chrome (TopBar, // SiteFooter, shared CSS) stays in lock-step with the chapter pages that // already migrated. import { getEntry } from 'astro:content'; import ChapterLayout from '../layouts/ChapterLayout.astro'; import ChapterHero from '../components/blocks/ChapterHero.astro'; import GridGroup from '../components/blocks/GridGroup.astro'; import RouteCard from '../components/blocks/RouteCard.astro'; const landing = await getEntry('chapters', 'landing'); if (!landing) throw new Error('landing page entry missing from chapters collection'); const base = import.meta.env.BASE_URL; // Landing-page copy is English-only today: the existing index.html always // rendered English, and wiring the full bilingual toggle is a separate task // (the language-toggle island in `.agents/rules/astro.md`). When that ship // lands, the `lang` value flows through the same pattern as the other // chapter pages and every `.en` access below becomes a `[lang]` lookup. const lang = 'en'; const data = landing.data; const cards = data.cards ?? []; --- AI FOR DUMMIES 00 / START HERE review desk ↗

{data.lede[lang]}

Take the full field guide
{ cards.map((card) => ( )) }
{data.threadLabel?.[lang]} {data.threadText?.[lang]}
{data.footer?.[lang]}