Skip to content

Empty States

Empty states appear when there is no data to display. They should be helpful, clear, and guide the user toward the next action — never just a blank space.


No Data State

📋

No payments yet

Your payment history will appear here once you receive your first payment.

<div style="text-align:center; padding:48px 32px; font-family:'Cabin',sans-serif;">
  <div style="font-size:48px; margin-bottom:16px;">📋</div>
  <h3 style="font-size:18px; font-weight:600; color:#333; margin:0 0 8px 0;">No payments yet</h3>
  <p style="font-size:14px; color:#999; margin:0 0 24px 0; max-width:280px; margin-left:auto; margin-right:auto;">
    Your payment history will appear here once you receive your first payment.
  </p>
  <button style="background:#6E96FF; color:white; border:none; border-radius:8px; padding:0 20px; height:42px; font-family:'Cabin',sans-serif; font-size:15px; font-weight:600; cursor:pointer;">
    Create payment link
  </button>
</div>

No Results (Search/Filter)

🔍

No results found

Try adjusting your search or filter criteria.


Error State

⚠️

Something went wrong

We couldn't load your data. Please try again.


Loading State

Loading your payments...

@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

.spinner {
  display: inline-block;
  width: 32px;
  height: 32px;
  border: 3px solid #E5ECFB;
  border-top-color: #6E96FF;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

Payment Confirmation (Success State)

Payment confirmed!

Your payment of $150.00 has been processed.

A receipt has been sent to your email.

<div style="text-align:center; padding:48px 32px; font-family:'Cabin',sans-serif;">
  <!-- Success icon -->
  <div style="width:64px; height:64px; background:#d1fae5; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:28px; margin:0 auto 16px auto; color:#065f46;">
  </div>
  <h3 style="font-size:24px; font-weight:700; color:#333; margin:0 0 8px 0;">Payment confirmed!</h3>
  <p style="font-size:14px; color:#666; margin:0 0 8px 0;">
    Your payment of <strong>$150.00</strong> has been processed.
  </p>
  <p style="font-size:13px; color:#999; margin:0 0 24px 0;">A receipt has been sent to your email.</p>
  <a href="#" style="display:inline-flex; align-items:center; padding:0 20px; height:42px; background:#EBF0FF; color:#6E96FF; border-radius:8px; font-size:15px; font-weight:600; text-decoration:none;">
    Back to catalog
  </a>
</div>

Rules

Empty state rules

  • Always include an icon, a title, a description, and an action button
  • Icon should be an emoji or simple SVG — never complex illustrations
  • Title: font-size: 18px; font-weight: 600
  • Description: font-size: 14px; color: #999; max-width: 280px
  • Action button: use Ghost or Outline variant — never Primary in empty states
  • Exception: "No data yet" states can use Primary to encourage first action
  • Payment confirmation uses a green circle checkmark — never a generic success icon
  • Loading states use the blue spinner — never a full-page overlay