Skeleton

Atom

Animated placeholder shown before content loads. Uses animate-pulse bg-surface-sunken. aria-busy="true" ensures accessibility.

Lines

Preview
Code
<%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-full' }) %>
<%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-3/4' }) %>
<%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-1/2' }) %>

Text block

Preview
Code
<%- include('modules/ui/Skeleton', { variant: 'text', lines: 4 }) %>

Card

Preview
Code
<%- include('modules/ui/Skeleton', { variant: 'card' }) %>

Table rows

Preview
Code
<table class="w-full"><tbody>
  <%- include('modules/ui/Skeleton', { variant: 'tableRow', cols: 4 }) %>
  <%- include('modules/ui/Skeleton', { variant: 'tableRow', cols: 4 }) %>
  <%- include('modules/ui/Skeleton', { variant: 'tableRow', cols: 4 }) %>
</tbody></table>

Dashboard layout

Preview
Code
<%# Stat cards + table skeleton %>
<div class="space-y-4">
  <div class="grid grid-cols-3 gap-3">
    <% for (var i = 0; i < 3; i++) { %>
      <div class="border rounded-lg p-4 space-y-2">
        <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-1/2' }) %>
        <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-3/4' }) %>
        <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-1/3' }) %>
      </div>
    <% } %>
  </div>
  <table><tbody><%- include('modules/ui/Skeleton', { variant: 'tableRow', cols: 4 }) %></tbody></table>
</div>

Article layout

Preview
Code
<%# Blog post / article skeleton %>
<div class="space-y-4">
  <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-1/4' }) %>
  <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-full' }) %>
  <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-3/4' }) %>
  <div class="flex items-center gap-3">
    <%- include('modules/ui/Skeleton', { variant: 'avatar', size: 'sm' }) %>
    <%- include('modules/ui/Skeleton', { variant: 'line', width: 'w-24' }) %>
  </div>
  <div class="h-40 animate-pulse bg-surface-sunken rounded-xl"></div>
  <%- include('modules/ui/Skeleton', { variant: 'text', lines: 4 }) %>
</div>
Source modules/ui/Skeleton.ejs