NS Design System
v3.0.0 · 257 tokens

37Empty state

Three required parts: what is not here, why, and the one thing to do about it. Dashed border = "nothing here yet". An empty state with no action is a dead end.

Use it for

  • First-run screens, filtered-to-nothing lists, empty dashboards

Not for

  • Failures — Error state (solid border, status code)

Default

No courses yet

Courses you start appear here so you can pick up where you left off.

markup
<div class="ns-empty" style="max-inline-size:26rem">
  <i class="ph ph-folder-open ns-empty__icon" aria-hidden="true"></i>
  <p class="ns-empty__title">No courses yet</p>
  <p class="ns-empty__text">Courses you start appear here so you can pick up where you left off.</p>
  <div class="ns-empty__action"><button class="ns-btn ns-btn--primary ns-btn--sm">Browse courses</button></div>
</div>

Accessibility contract

  • If there is genuinely nothing to do, say so in the description — never leave the user to guess