Grid — Flex
A 12-column flexbox grid: .ng-row wraps .ng-col-*. Built for traditional column layouts. For auto-flow dashboards see Grid — Lanes.
A row is a flex container; columns are its children. Widths are twelfths: ng-col-6 is half, ng-col-4 a third, and so on. Mobile-first: below sm (576px) every column becomes full-width and stacks, so you size up from a breakpoint — e.g. ng-col-12 ng-col-md-6.
Columns
Fixed twelfths ng-col-1 … ng-col-12 inside a ng-row; each row sums to 12.
<div class="ng-row ng-gutter-md">
<div class="ng-col-4"><div class="nxi-grid-cell">ng-col-4</div></div>
<div class="ng-col-4"><div class="nxi-grid-cell">ng-col-4</div></div>
<div class="ng-col-4"><div class="nxi-grid-cell">ng-col-4</div></div>
</div>
Fluid columns
Plain ng-col (no number) shares the available space equally — no need to do the math.
<div class="ng-row ng-gutter-md">
<div class="ng-col"><div class="nxi-grid-cell">ng-col</div></div>
<div class="ng-col"><div class="nxi-grid-cell">ng-col</div></div>
<div class="ng-col"><div class="nxi-grid-cell">ng-col</div></div>
</div>
Fixed + fluid
Mix a fixed column with a fluid one: the fixed keeps its width, ng-col fills whatever is left.
<div class="ng-row ng-gutter-md">
<div class="ng-col-3"><div class="nxi-grid-cell">ng-col-3 (fixed)</div></div>
<div class="ng-col"><div class="nxi-grid-cell">ng-col (fills the rest)</div></div>
</div>
Common layouts
Content + aside
The classic 8/4 split: main content with a side panel that stacks under it on mobile.
<div class="ng-row ng-gutter-lg">
<div class="ng-col-12 ng-col-md-8"><div class="nxi-grid-cell">main · ng-col-md-8</div></div>
<div class="ng-col-12 ng-col-md-4"><div class="nxi-grid-cell">aside · ng-col-md-4</div></div>
</div>
Sidebar + content
A 3/9 split for app-style pages — a narrow navigation column next to the main area.
<div class="ng-row ng-gutter-lg">
<div class="ng-col-12 ng-col-md-3"><div class="nxi-grid-cell" style="padding-block: 30px">sidebar · md-3</div></div>
<div class="ng-col-12 ng-col-md-9"><div class="nxi-grid-cell" style="padding-block: 30px">content · md-9</div></div>
</div>
Responsive card grid
Three cards per row on md+, stacked on mobile. same-height keeps them even.
<div class="ng-row ng-gutter-lg same-height">
<div class="ng-col-12 ng-col-md-4">
<div class="ng-card"><div class="ng-card-body">Card one</div></div>
</div>
<div class="ng-col-12 ng-col-md-4">
<div class="ng-card"><div class="ng-card-body">Card two</div></div>
</div>
<div class="ng-col-12 ng-col-md-4">
<div class="ng-card"><div class="ng-card-body">Card three</div></div>
</div>
</div>
Gutter
Space between columns goes on the ng-row (half-gutter model, edge-aligned, never overflows). Don't use an inline gap — it breaks the column math.
ng-gutter-0 ng-gutter-xs ng-gutter-sm ng-gutter-md ng-gutter-lg ng-gutter-xl Alignment
Align columns inside the row with ng-row-justify-* (horizontal) and ng-row-align-* (vertical). Use these for the grid — not the generic flex helpers.
Vertical — ng-row-align-center
<div class="ng-row ng-gutter-md ng-row-align-center">
<div class="ng-col-4"><div class="nxi-grid-cell" style="padding-block: 30px">tall</div></div>
<div class="ng-col-4"><div class="nxi-grid-cell">centered</div></div>
<div class="ng-col-4"><div class="nxi-grid-cell">centered</div></div>
</div>
Horizontal — ng-row-justify-between
<div class="ng-row ng-gutter-md ng-row-justify-between">
<div class="ng-col-3"><div class="nxi-grid-cell">ng-col-3</div></div>
<div class="ng-col-3"><div class="nxi-grid-cell">ng-col-3</div></div>
</div>
All keys
ng-row-justify-start ng-row-justify-center ng-row-justify-end ng-row-justify-between ng-row-justify-around ng-row-justify-evenly ng-row-align-start ng-row-align-center ng-row-align-end ng-row-align-stretch ng-row-align-baseline ng-col-align-{k} Offset & order
Offset — push a column right
ng-offset-4 pushes a ng-col-4 by four twelfths, centering it.
<div class="ng-row ng-gutter-md">
<div class="ng-col-4 ng-offset-4"><div class="nxi-grid-cell">ng-col-4 · ng-offset-4</div></div>
</div>
Order — reorder per breakpoint
Visual order can differ from DOM order: here the first element renders second from md up.
<div class="ng-row ng-gutter-md">
<div class="ng-col-6 ng-order-md-2"><div class="nxi-grid-cell">first in DOM · order-md-2</div></div>
<div class="ng-col-6 ng-order-md-1"><div class="nxi-grid-cell">second in DOM · order-md-1</div></div>
</div>
ng-offset-1 … ng-offset-11 ng-offset-<bp>-<n> ng-order-<bp>-<n> Nested grids
A column is a full row context: drop another ng-row inside any ng-col to subdivide it.
<div class="ng-row ng-gutter-md">
<div class="ng-col-6">
<div class="ng-row ng-gutter-sm">
<div class="ng-col-6"><div class="nxi-grid-cell">nested</div></div>
<div class="ng-col-6"><div class="nxi-grid-cell">nested</div></div>
</div>
</div>
<div class="ng-col-6"><div class="nxi-grid-cell">ng-col-6</div></div>
</div>
Reference
Breakpoints
sm · 576 md · 768 lg · 896 xlg · 1024 xl · 1280 xxl · 1400 Row / column utilities
ng-row ng-col ng-col-1 … 12 ng-col-<bp>-<n> go-column same-height ng-col-stack ng-col-balance-2