Contact Us

Columns

DOC-00115 reference implementor, developer

A generic N-column CSS grid layout that supports three column patterns: equal columns (number), asymmetric layouts (string), and responsive auto-fit (object). Each direct child becomes one column.

File: src/core/components/primitives/Columns.astro

Props

PropTypeDefaultNotes
columnsnumber | string | AutoFitPattern2Number: equal columns. String: explicit grid-template-columns. Object: auto-fit/fill.
gap"none" | "sm" | "md" | "lg" | "xl""md"Gap between columns using primitive space tokens
collapseBelow"sm" | "md" | "lg" | "xl" | "2xl" | "none""md"Breakpoint below which columns collapse to single column. "none" to never collapse.
classstringAdditional CSS classes

AutoFitPattern: { count: "auto-fit" | "auto-fill"; min: string }

Usage

---
import Columns from "@core/components/primitives/Columns.astro";
---

{/* Equal columns (default: 2) */}
<Columns>
  <div>Column 1</div>
  <div>Column 2</div>
</Columns>

{/* Three equal columns */}
<Columns columns={3}>
  <div>Column 1</div>
  <div>Column 2</div>
  <div>Column 3</div>
</Columns>

{/* Asymmetric layout */}
<Columns columns="2fr 1fr">
  <div>Wide column</div>
  <div>Narrow sidebar</div>
</Columns>

{/* Auto-fit responsive */}
<Columns columns={{ count: "auto-fit", min: "16rem" }}>
  <div>Card 1</div>
  <div>Card 2</div>
  <div>Card 3</div>
  <div>Card 4</div>
</Columns>

{/* Never collapse */}
<Columns columns={3} collapseBelow="none">
  <div>Always three columns</div>
  <div>Even on mobile</div>
  <div>No collapse</div>
</Columns>

{/* Collapse below lg instead of md */}
<Columns columns={2} collapseBelow="lg">
  <div>Left</div>
  <div>Right</div>
</Columns>

Accessibility

  • Renders as a plain <div> with CSS grid — no ARIA roles needed for layout.
  • All column patterns collapse to a single column below the collapseBelow breakpoint (default "md" / 768px) for mobile readability.
  • Set collapseBelow="none" to prevent collapse — useful for fixed layouts that should persist at all viewport widths.
  • No keyboard interaction required — purely presentational layout.
REQ-00043 implemented The theme shall include foundational UI primitives.
REQ-00272 implemented The theme shall provide layout and content components covering standard content block patterns (separator, button group, columns, media-text, pullquote, reading time, table, gallery, masonry gallery, cover, timeline).

Search

Search across pages and articles. Use arrow keys to navigate results.

Search across pages and articles.

Loading search...

Search is unavailable. Please try again later.

    No results for ""

    Try different keywords or fewer words.