Menu
Overview
General
ButtonBadgeAvatarBrand lockupLayout
ContainerGrid & RowSurface & text utilitiesApp shellData Display
CardTableStatsBulletsLeadersLogo wallCollapse & DisclosureValue chainFeedback
AlertModalForms
Field & InputLead form & CTA rowNavigation
NavTheming
Product themesLayout
Grid & Row
Token-gapped grid, and a wrapping flex line for button groups.
.grid · .row
One
Two
Three
<div class="grid" style="grid-template-columns:repeat(auto-fit,minmax(140px,1fr))">
<div class="card">One</div>
<div class="card">Two</div>
<div class="card">Three</div>
</div>
Row 1 · A
Row 1 · B
Row 1 · C
Row 2 · A
Row 2 · B
Row 2 · C
<div class="grid" style="grid-template-columns:repeat(auto-fit,minmax(180px,1fr));max-width:40rem">
<div class="card">Row 1 · A</div>
<div class="card">Row 1 · B</div>
<div class="card">Row 1 · C</div>
<div class="card">Row 2 · A</div>
<div class="card">Row 2 · B</div>
<div class="card">Row 2 · C</div>
</div>
99.8% uptime
novapay
<div class="row" style="max-width:22rem">
<button class="btn btn--primary">Talk to us</button>
<button class="btn btn--secondary">Download</button>
<button class="btn btn--ghost">Ghost</button>
<span class="badge badge--success"><span class="badge__dot"></span> 99.8% uptime</span>
<span class="badge badge--accent">novapay</span>
</div>
Usage
- The grid wraps items into new rows on its own: more items than columns simply continue on the next row, and narrower screens get fewer columns.
- Mobile-first: use
auto-fit/minmax()columns so layouts stack on phones instead of squeezing. .rowis a wrapping flex line for buttons, badges, and chips: when space runs out it flows onto the next row (the demo is width-constrained so you can see it happen).- Gaps come from the spacing scale (
--space-*), never ad-hoc pixel values.