Primitives
23

Loader

An indeterminate spinner. The wrapper is role="status" and carries the label; the ring is aria-hidden, because a spinning border has nothing to say. It keeps turning under prefers-reduced-motion — a frozen spinner reads as a hang, not as calm.

plain markup — no library on the page
rendered by aura-react
rendered by aura-vue
rendered by aura-svelte
built from aura-angular's own class helpers

Code

index.html
<div class="aura-group" style="--aura-gap:var(--space-3);--aura-align:center">
  <span role="status" aria-label="Loading, small">
    <span aria-hidden="true" class="aura-loader aura-loader--sm aura-anim-spin"></span>
  </span>
  <span role="status" aria-label="Loading">
    <span aria-hidden="true" class="aura-loader aura-anim-spin"></span>
  </span>
  <span role="status" aria-label="Loading, large">
    <span aria-hidden="true" class="aura-loader aura-loader--lg aura-anim-spin"></span>
  </span>
</div>
Demo.tsx
import { Group, Loader } from '@ilomee/aura-react';

export default function Demo() {
  return (
    <Group align="center">
      <Loader size="sm" label="Loading, small" />
      <Loader label="Loading" />
      <Loader size="lg" label="Loading, large" />
    </Group>
  );
}
Demo.vue
<script setup lang="ts">
import { Loader } from '@ilomee/aura-vue';
</script>

<template>
  <Loader label="Fetching releases" />
</template>
Demo.svelte
<script lang="ts">
  import { Loader } from '@ilomee/aura-svelte';
</script>

<Loader label="Fetching releases" />

Used as aura-loader.

demo.component.ts
import { AuraLoader } from '@ilomee/aura-angular';

@Component({
  standalone: true,
  imports: [AuraLoader],
  template: `<aura-loader label="Fetching releases" />`,
})
export class DemoComponent {}

Props

Plain markup has no props — the classes below are the whole API. The four packages do nothing more than set these same classes for you.
NameTypeDefaultNotes
size'sm' | 'md' | 'lg''md'
labelstring'Loading'
NameTypeDefaultNotes
size'sm' | 'md' | 'lg''md'
labelstring'Loading'
NameTypeDefaultNotes
size'sm' | 'md' | 'lg''md'
labelstring'Loading'
NameTypeDefaultNotes
size'sm' | 'md' | 'lg''md'
labelstring'Loading'

Emitted classes

Every framework emits the same classes — that is what makes the four libraries look identical. You can use them directly, without any component library.

ClassRoleNotes
.aura-loaderbaseRequired. A modifier does nothing without it.
.aura-loader--smmodifier
.aura-loader--lgmodifier

Tokens and rules

components.css
size
var(--loader-sm|md|lg) — modifiers generated from the tokens
stroke
var(--loader-stroke)
motion
.aura-anim-spin