--- /** * A `
` of term/description pairs on an auto-fitting grid. * * EXTRACTED AT STEP 4 ON `adversarial-reviewer`'S FINDING, and the finding was * that `/mediation/`'s `.formats` and `/arbitration/`'s `.cols` were the same * component under two names — identical markup, near-identical CSS, and * `.cols` was already serving two different content types on one page. * `/practice/*` at step 5 wants it a fourth time. Same argument that extracted * `ContactBand`: two call sites, one already divergent, pages to come. * * `
` RATHER THAN A DIV GRID, for `CredentialRow`'s reason: each pair is a * term and its description, so a screen reader gets them as an associated pair * rather than as a visual arrangement. Wrapping each `
`/`
` in a `
` * inside the `
` is valid HTML and is what makes the grid tractable. * * A `
` IS NOT A HEADING and must not become one. These sit under the * section's `

`; promoting them to `

` would be a heading level that adds * nothing to the outline, and `docs/02` forbids skipped levels either way. */ interface Props { items: ReadonlyArray<{ name: string; body: string }>; /** The grid's per-column floor, passed to `.grid-autofit` as `--grid-min`. * The `min(N, 100%)` guard lives there, in one place. */ minColumn?: string; } const { items, minColumn = '17rem' } = Astro.props; ---
{ items.map((item) => (
{item.name}
{item.body}
)) }