---
// / — 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]}