Empty state
A centered layout for “no data yet” or “get started” screens. Supports an icon, title, description, and optional action buttons.
Basic empty state
Preview
No failed payments yet
When Stripe reports a failed charge we'll queue retries and show them here.
<div class="nano-empty">
<div class="nano-empty__icon"><svg ...></svg></div>
<h3 class="nano-empty__title">No failed payments yet</h3>
<p class="nano-empty__description">When Stripe reports a failed charge we'll queue retries and show them here.</p>
<div class="nano-empty__actions">
<button class="nano-btn nano-btn--primary">Connect Stripe</button>
</div>
</div>
Bordered (dashed outline)
Preview
Nothing here
Add your first item to get started.
<div class="nano-empty nano-empty--bordered">
<h3 class="nano-empty__title">Nothing here</h3>
<p class="nano-empty__description">Add your first item to get started.</p>
</div>
Variants
.nano-empty--bordered— dashed outline for empty panels/tables.nano-empty--compact— tighter padding for smaller zones
Elements
.nano-empty__icon— optional icon, muted circular background.nano-empty__title— primary heading.nano-empty__description— supporting text (muted).nano-empty__actions— optional button row