Spinner
Animated loading indicator for asynchronous operations. Supports multiple sizes and color variants for different contexts.
Sizes
Spinners come in three sizes: small (16px), medium (24px), and large (32px).
Small (16px)
Medium (24px)
Large (32px)
Color Variants
Spinners support multiple color variants to match different contexts and backgrounds.
Primary
Secondary
Neutral
Success
Warning
Error
On Dark Backgrounds
Use on-primary or on-secondary colors for spinners on dark backgrounds.
On Primary Background
On Secondary Background
Usage in Buttons
Spinners are commonly used in buttons to indicate loading states.
Use Cases
Loading Data
Loading risk data...
Inline Loading
Fetching latest alerts...
Form Submission
Accessibility
- Uses
role="status"for proper ARIA semantics - Includes
aria-label="Loading"for screen readers - Hidden "Loading..." text for screen reader users
- Animation respects
prefers-reduced-motionsettings - Sufficient color contrast in all variants (WCAG AA compliant)
- When used in buttons, ensure button has descriptive text or aria-label
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| size | string | 'md' | sm (16px), md (24px), lg (32px) |
| color | string | 'primary' | primary, secondary, neutral, on-primary, on-secondary, success, warning, error |
| class | string | '' | Additional CSS classes |
Usage Example
<x-building-blocks.spinner />
<x-building-blocks.spinner size="lg" color="primary" />
<button class="flex items-center gap-2 px-4 py-2 bg-primary-500 text-white rounded-lg">
<x-building-blocks.spinner size="sm" color="on-primary" />
<span>Loading...</span>
</button>
<div class="flex flex-col items-center gap-3">
<x-building-blocks.spinner size="lg" />
<p>Loading data...</p>
</div>