AvesraAvesrabeta

Spinner

A loading indicator component to show pending states.

Import

import { AvSpinnerComponent } from '@avesra/angular';

Usage

import { Component } from '@angular/core';
import { AvSpinnerComponent } from '@avesra/angular';

@Component({
  selector: 'app-spinner-basic-demo',
  imports: [AvSpinnerComponent],
  host: { class: 'block' },
  template: `<div class="flex items-center gap-4">
      <span av-spinner></span>
    </div>`,
})
export class SpinnerBasicDemo {}

Anatomy

Import the Spinner and apply it with the span[av-spinner] attribute selector. Optional size and color inputs control appearance.

<span av-spinner></span>

<!-- With size and color -->
<span av-spinner size="lg" color="success"></span>

Colors

Current
Accent
Success
Warning
Danger
import { Component } from '@angular/core';
import { AvSpinnerComponent } from '@avesra/angular';

@Component({
  selector: 'app-spinner-colors-demo',
  imports: [AvSpinnerComponent],
  host: { class: 'block' },
  template: `<div class="flex items-center gap-8">
      <div class="flex flex-col items-center gap-2">
        <span av-spinner color="current"></span>
        <span class="text-xs text-muted">Current</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner color="accent"></span>
        <span class="text-xs text-muted">Accent</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner color="success"></span>
        <span class="text-xs text-muted">Success</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner color="warning"></span>
        <span class="text-xs text-muted">Warning</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner color="danger"></span>
        <span class="text-xs text-muted">Danger</span>
      </div>
    </div>`,
})
export class SpinnerColorsDemo {}

Sizes

Small
Medium
Large
Extra Large
import { Component } from '@angular/core';
import { AvSpinnerComponent } from '@avesra/angular';

@Component({
  selector: 'app-spinner-sizes-demo',
  imports: [AvSpinnerComponent],
  host: { class: 'block' },
  template: `<div class="flex items-center gap-8">
      <div class="flex flex-col items-center gap-2">
        <span av-spinner size="sm"></span>
        <span class="text-xs text-muted">Small</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner size="md"></span>
        <span class="text-xs text-muted">Medium</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner size="lg"></span>
        <span class="text-xs text-muted">Large</span>
      </div>
      <div class="flex flex-col items-center gap-2">
        <span av-spinner size="xl"></span>
        <span class="text-xs text-muted">Extra Large</span>
      </div>
    </div>`,
})
export class SpinnerSizesDemo {}

Styling

Passing Tailwind CSS classes

Pass utility classes on the spinner host — span[av-spinner].

import { Component } from '@angular/core';
import { AvSpinnerComponent } from '@avesra/angular';

@Component({
  selector: 'app-spinner-custom-styling-demo',
  imports: [AvSpinnerComponent],
  host: { class: 'block' },
  template: `<div class="flex items-center gap-4 rounded-xl border border-border bg-surface px-5 py-4">
  <span av-spinner class="text-accent" size="sm"></span>
  <span av-spinner class="text-muted" size="md"></span>
  <span av-spinner class="text-success" size="lg"></span>
</div>`,
})
export class SpinnerCustomStylingDemo {}

Customizing the component classes

To customize the Spinner classes, use the @layer components directive. Learn more.

@layer components {
  .av-spinner {
    @apply animate-spin;
  }

  .av-spinner--accent {
    color: var(--av-accent);
  }
}

Avesra follows the BEM methodology so component variants and states stay reusable and easy to customize.

CSS Classes

The Spinner component uses these CSS classes:

Base & Size Classes

  • .av-spinner — Base spinner styles with default size
  • .av-spinner--sm — Small size variant
  • .av-spinner--md — Medium size variant (default)
  • .av-spinner--lg — Large size variant
  • .av-spinner--xl — Extra large size variant

Color Classes

  • .av-spinner--current — Inherits current text color
  • .av-spinner--accent — Accent color variant
  • .av-spinner--danger — Danger color variant
  • .av-spinner--success — Success color variant
  • .av-spinner--warning — Warning color variant

API

Props for span[av-spinner].

PropTypeDefaultDescription
size'sm' | 'md' | 'lg' | 'xl''md'Size of the spinner (av-spinner).
color'current' | 'accent' | 'success' | 'warning' | 'danger''accent'Color variant of the spinner (av-spinner).

Made with ❤ by SyntaxHertz. Open source and available on GitHub.