---
/**
* 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}
))
}