Every page in this template is an .mdx file under content/pages/. The body is Markdown with a few capitalised tags dropped in wherever a section needs more structure than a paragraph can carry. Write a # heading, get a heading. Write a Hero tag, get the same hero section every other page uses, with the same spacing, the same responsive behaviour, the same tokens.

A whole page

Frontmatter, one Block, one paragraph. This is complete and it works:

---
title: Pricing
description: Simple plans that scale with your team.
---

<Hero
  variant="centered"
  title="Pricing that stays out of the way"
  lede="Start free. Upgrade when the team outgrows it."
/>

Every plan includes unlimited projects and a 30-day trial. Cancel from the billing
page whenever you like. We do not ask why.

No import statement. No layout file to register it in.

Why there are no imports

MdxContent compiles the body and hands it a components map: the Block registry, plus overrides for Markdown headings, paragraphs, lists, tables, and the rest. When the compiled MDX runs, a Hero tag resolves against that map the way an h1 resolves against the browser's built-in tags.

A Block is available because its name is in the registry. Nothing else is going on. That is also why content files may not import anything: an import would be a second, unaudited route for code onto a page, and the registry exists so there is only one.

Getting a prop wrong

Each Block ships a Zod schema and validates when it renders. Miss a title, or pass a primary link with no href, and the build stops with the file and the prop named:

Error: Hero: invalid props
  - title: Required
  - primary.href: Required

We wanted that loud. Content which breaks quietly is content nobody trusts enough to edit, and an agent reading an error message can fix its own mistake before a human ever sees it. If a page renders, its props were valid.

Picking Blocks

Composing a page means picking Blocks roughly the way you would pick paragraphs. A landing page might run Hero, then FeatureGrid for what the product does, Testimonial for proof, CTA to close. An about page might be almost entirely prose. The same file mixes both freely, which is the point.

The blocks gallery has every Block in the registry, rendered live with the props it expects. The style guide has the type scale and tokens they are built from.