Skip to content

Skeleton

A skeleton loader component for placeholder content during loading.

Basic Usage

blade
<x-basekit-ui::skeleton />

Props

PropTypeDefaultDescription
variantstring'text'Skeleton type (text,circle,rect)
roundedstring'md'Border radius (none,sm,md,lg,full)
widthstring'100%'Skeleton width
heightstringnullSkeleton height

Variants

Supported variants: text, circle, rect.

blade
<x-basekit-ui::skeleton variant="text" width="120px" height="20px" />
<x-basekit-ui::skeleton variant="circle" width="48px" height="48px" />
<x-basekit-ui::skeleton variant="rect" width="120px" height="40px" />

Sizes

Supported sizes: sm,md,lg.

blade
<x-basekit-ui::skeleton width="120px" height="12px" class="mb-2" style="font-size:0.75rem" />
<x-basekit-ui::skeleton width="120px" height="16px" class="mb-2" style="font-size:1rem" />
<x-basekit-ui::skeleton width="120px" height="24px" class="mb-2" style="font-size:1.25rem" />

Rounded Corners

Supported types: none, sm, md, lg, full.

blade
<x-basekit-ui::skeleton rounded="none" width="80px" height="16px" />
<x-basekit-ui::skeleton rounded="sm" width="80px" height="24px" />
<x-basekit-ui::skeleton rounded="md" width="80px" height="32px" />
<x-basekit-ui::skeleton rounded="lg" width="80px" height="40px" />
<x-basekit-ui::skeleton rounded="full" width="48px" height="48px" /> <!-- Circle -->

Pulse Animation

The skeleton includes a default pulse animation. Customize with CSS:

blade
<x-basekit-ui::skeleton class="animate-pulse" />

Card Skeleton Example

blade
<x-basekit-ui::card>
    <div class="flex items-start gap-4">
        <x-basekit-ui::skeleton
            variant="circle"
            width="64px"
            height="64px"
        />

        <div class="flex-1 space-y-3">
            <x-basekit-ui::skeleton width="40%" height="24px" />
            <x-basekit-ui::skeleton width="100%" />
            <x-basekit-ui::skeleton width="90%" />
            <x-basekit-ui::skeleton width="60%" />
        </div>
    </div>
</x-basekit-ui::card>

List Skeleton Example

blade
<div class="space-y-4">
    @foreach(range(1, 3) as $i)
        <div class="flex items-center gap-3">
            <x-basekit-ui::skeleton
                variant="circle"
                width="40px"
                height="40px"
            />
            <div class="flex-1 space-y-2">
                <x-basekit-ui::skeleton width="30%" />
                <x-basekit-ui::skeleton width="70%" />
            </div>
        </div>
    @endforeach
</div>

Product Grid Skeleton Example

blade
<div class="grid grid-cols-3 gap-6">
    @foreach(range(1, 6) as $i)
        <div class="space-y-3">
            <x-basekit-ui::skeleton
                variant="rect"
                height="200px"
                rounded="lg"
            />
            <x-basekit-ui::skeleton width="60%" />
            <x-basekit-ui::skeleton width="40%" />
        </div>
    @endforeach
</div>

Table Skeleton Example

blade
<table class="w-full border-separate border-spacing-y-2">
    <thead>
        <tr>
            <th class="px-3 py-2"><x-basekit-ui::skeleton width="100px" /></th>
            <th class="px-3 py-2"><x-basekit-ui::skeleton width="150px" /></th>
            <th class="px-3 py-2"><x-basekit-ui::skeleton width="120px" /></th>
        </tr>
    </thead>
    <tbody>
        @foreach(range(1, 5) as $i)
            <tr class="bg-white">
                <td class="px-3 py-2"><x-basekit-ui::skeleton /></td>
                <td class="px-3 py-2"><x-basekit-ui::skeleton /></td>
                <td class="px-3 py-2"><x-basekit-ui::skeleton /></td>
            </tr>
        @endforeach
    </tbody>
</table>

Form Skeleton Example

blade
<div class="space-y-6">
    <div>
        <x-basekit-ui::skeleton width="120px" height="20px" class="mb-2" />
        <x-basekit-ui::skeleton height="40px" rounded="md" />
    </div>

    <div>
        <x-basekit-ui::skeleton width="100px" height="20px" class="mb-2" />
        <x-basekit-ui::skeleton height="40px" rounded="md" />
    </div>

    <div>
        <x-basekit-ui::skeleton width="80px" height="20px" class="mb-2" />
        <x-basekit-ui::skeleton height="100px" rounded="md" />
    </div>

    <x-basekit-ui::skeleton width="120px" height="40px" rounded="md" />
</div>

Custom Classes

Override or extend styles with the class attribute:

blade
<x-basekit-ui::skeleton
    variant="text"
    class="mt-2"
/>

CSS Variables

Customize skeleton appearance via CSS variables:

css
:root {
  /* Skeleton - Base */
  --skeleton-bg: var(--color-slate-200);
  --skeleton-radius: var(--radius-md);

  /* Skeleton - Line Heights */
  --skeleton-height-xs: 0.5rem;
  --skeleton-height-sm: 0.75rem;
  --skeleton-height-md: 1rem;
  --skeleton-height-lg: 1.25rem;
  --skeleton-height-xl: 1.5rem;

  /* Skeleton - Circle Sizes */
  --skeleton-circle-xs: 1.5rem;
  --skeleton-circle-sm: 2rem;
  --skeleton-circle-md: 2.5rem;
  --skeleton-circle-lg: 3rem;
  --skeleton-circle-xl: 3.5rem;
}

Configuration

Configure defaults in config/basekit-laravel-ui.php:

php
'skeleton' => [
    'enabled' => true,
    'variants' => ['text', 'circle', 'rect'],
    'rounded' => ['none', 'sm', 'md', 'lg', 'full'],
    'default_variant' => 'text',
    'default_rounded' => 'md',
],

Released under the MIT License.