Loading Overlay

Full-container overlay with spinner for blocking UI during async operations. Supports blur, text, fullscreen, and color variants.

This component requires softui.js for interactive behavior.

Default

Dashboard

Revenue this month: $12,450

Active users: 1,283

Analytics

Page views: 45,200

Bounce rate: 32%

<!-- Parent needs position:relative -->
<div class="sui-card" style="position:relative;">
  <h4>Dashboard</h4>
  <p>Revenue this month: $12,450</p>

  <!-- Add .active to show the overlay -->
  <div class="sui-loading-overlay active">
    <div class="sui-spinner sui-spinner-primary" role="status" aria-label="Loading"></div>
  </div>
</div>

<!-- Toggle with JavaScript -->
<script>
  // Show
  overlay.classList.add('active');
  // Hide
  overlay.classList.remove('active');
</script>

With Text

User Profile

Name: John Doe

Email: john@example.com

Role: Admin

Loading...

Settings

Theme: Dark

Language: English

Notifications: On

Saving changes...
<div class="sui-card" style="position:relative;">
  <!-- card content -->
  <div class="sui-loading-overlay active">
    <div class="sui-spinner sui-spinner-primary" role="status" aria-label="Loading"></div>
    <span class="sui-loading-overlay-text">Loading...</span>
  </div>
</div>

Spinner Variants

Default
Wobble
Elastic
Growing
Pulse
Dots
<!-- Use any sui-spinner variant inside the overlay -->

<!-- Default -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-primary" role="status" aria-label="Loading"></div>
</div>

<!-- Wobble -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-wobble" role="status" aria-label="Loading"></div>
</div>

<!-- Elastic -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-elastic" role="status" aria-label="Loading">
    <svg viewBox="0 0 40 40"><circle cx="20" cy="20" r="18"/></svg>
  </div>
</div>

<!-- Growing -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-grow" role="status" aria-label="Loading"></div>
</div>

<!-- Pulse -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-pulse" role="status" aria-label="Loading"></div>
</div>

<!-- Dots -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner-dots sui-spinner-primary" role="status" aria-label="Loading"><span></span><span></span><span></span></div>
</div>

Blur

Order Summary

Items: 3

Subtotal: $89.97

Shipping: $4.99

Total: $94.96

Processing payment...

Inventory

In stock: 142

Reserved: 28

Low stock: 5

Out of stock: 2

Syncing inventory...
<div class="sui-card" style="position:relative;">
  <!-- card content -->
  <div class="sui-loading-overlay sui-loading-blur active">
    <div class="sui-spinner sui-spinner-primary" role="status" aria-label="Loading"></div>
    <span class="sui-loading-overlay-text">Processing payment...</span>
  </div>
</div>

Colors

Primary

Success

Danger

Dots

<!-- Use any sui-spinner variant inside the overlay -->
<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-primary" role="status" aria-label="Loading"></div>
</div>

<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-success" role="status" aria-label="Loading"></div>
</div>

<div class="sui-loading-overlay active">
  <div class="sui-spinner sui-spinner-danger" role="status" aria-label="Loading"></div>
</div>

<div class="sui-loading-overlay active">
  <div class="sui-spinner-dots sui-spinner-primary" role="status" aria-label="Loading"><span></span><span></span><span></span></div>
</div>

Fullscreen

Loading application...
<!-- Fullscreen overlay — covers entire viewport -->
<div class="sui-loading-overlay sui-loading-fullscreen sui-loading-blur active">
  <div class="sui-spinner sui-spinner-primary" role="status" aria-label="Loading" style="width:40px;height:40px;"></div>
  <span class="sui-loading-overlay-text">Loading application...</span>
</div>

<script>
  // Show fullscreen loader
  document.getElementById('loader').classList.add('active');

  // Hide after async operation
  fetch('/api/data').then(function() {
    document.getElementById('loader').classList.remove('active');
  });
</script>

Delete this item?

This action cannot be undone. This will permanently delete the item and remove all associated data.