<div class="rtds-spinner rtds-spinner--with-label rtds-grid rtds-font-bold rtds-text-center rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-20" role="status">
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 rtds-animate-spin" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#spinner" />
</svg>
<h2 class="rtds-spinner__label">Caricamento risultati</h2>
</div>
<div class="rtds-spinner rtds-spinner--with-label rtds-grid rtds-font-bold rtds-text-center rtds-gap-8 rtds-justify-center rtds-justify-items-center {{ padding }}{% if classes %} {{ classes }}{% endif %}" role="status">
{% set _iconSize = iconSize if iconSize else 'rtds-w-8 rtds-h-8' %}
{% render '@icon', {id: 'spinner', size: _iconSize, classes: 'rtds-animate-spin'}, true %}
<{{ labelTag | default('h2') }} class="rtds-spinner__label">{{ srLabel | default('Caricamento in corso...') }}</{{ labelTag | default('h2') }}>
</div>
{
"srLabel": "Caricamento risultati",
"padding": "rtds-py-20",
"iconSize": "rtds-w-8 rtds-h-8",
"labelTag": "h2"
}
Indicatore di caricamento animato per stati di attesa. Puro CSS Tailwind — nessun file .css dedicato.
Il componente renderizza un <div role="status"> (live region polite) con layout grid centrato, contenente:
@icon#spinner) con aria-hidden="true" — puramente decorativartds-spinner__label) — visibile o rtds-sr-onlyIl layout grid (rtds-grid rtds-justify-center rtds-justify-items-center rtds-gap-8) centra orizzontalmente icona ed etichetta e li impila con gap uniforme. Il padding verticale è configurabile via param padding (default rtds-py-20).
L’etichetta può essere qualsiasi tag di blocco: <p> (default per with-label), <h2>, <h3>. Usare un heading solo se il componente è l’elemento di stato principale della sezione corrente; in tutti gli altri casi usare <p>.
default: etichetta nascosta visivamente (rtds-sr-only), disponibile agli ATwith-label: etichetta visibile con tag <p> (o quello indicato da labelTag)with-label-heading: etichetta visibile con tag <h2> (o quello indicato da labelTag)La dimensione dell’icona è configurabile via iconSize (default rtds-w-8 rtds-h-8):
| Uso | iconSize |
|---|---|
| Piccolo | rtds-w-5 rtds-h-5 |
| Medio (default) | rtds-w-8 rtds-h-8 |
| Grande | rtds-w-12 rtds-h-12 |
| Parametro | Tipo | Obbligatorio | Default | Descrizione |
|---|---|---|---|---|
srLabel |
stringa | no | 'Caricamento in corso...' |
Testo dell’etichetta — visibile o sr-only |
labelTag |
'p' | 'h2' | 'h3' |
no | 'p' / 'h2' |
Tag HTML dell’etichetta (with-label: p; with-label-heading: h2) |
iconSize |
stringa | no | 'rtds-w-8 rtds-h-8' |
Classi Tailwind per la dimensione dell’icona spinner |
padding |
stringa | no | 'rtds-py-20' |
Classe Tailwind per il padding verticale del wrapper (es. rtds-py-10, rtds-py-0) |
classes |
stringa | no | — | Classi CSS aggiuntive sul wrapper |
Livello AA — criteri pertinenti:
role="status" comunica il caricamento alle AT con annuncio polite<div role="status"> — live region polite; AT annuncia il contenuto testuale al termine della lettura correntearia-hidden="true" — è decorativa; il nome accessibile è fornito dall’etichettartds-sr-only è visivamente nascosta ma rimane nell’albero di accessibilità| Contesto | Tag consigliato |
|---|---|
| Spinner inline (bottone, campo, lista) | <p> + srLabel sr-only (variante default) |
| Spinner come elemento di stato principale della vista | <p> con label visibile (variante with-label) |
| Spinner associato a un titolo di sezione | <h2> o <h3> (variante with-label-heading) |
Il componente non ha un file .css dedicato. Tutti gli stili sono utility Tailwind:
| Classe | Applicata a | Scopo |
|---|---|---|
rtds-spinner |
Wrapper | Hook semantico; porta role="status" |
rtds-grid |
Wrapper | Layout grid per impilare icona ed etichetta |
rtds-font-bold |
Wrapper | Peso testo in grassetto per l’etichetta |
rtds-text-center |
Wrapper | Allineamento testo centrato |
rtds-gap-8 |
Wrapper | Spazio tra icona ed etichetta |
rtds-justify-center |
Wrapper | Centra le tracce del grid sull’asse inline |
rtds-justify-items-center |
Wrapper | Centra gli item del grid sull’asse inline |
rtds-py-20 |
Wrapper | Padding verticale default (sovrascrivibile via padding) |
rtds-spinner--with-label |
Wrapper | Modificatore variante con etichetta visibile |
rtds-spinner__label |
Etichetta | Hook semantico; nessuno stile proprio |
rtds-sr-only |
Etichetta | Nasconde visivamente nella variante default |
<!-- Etichetta sr-only (uso tipico: spinner inline senza testo visibile) -->
<div class="rtds-spinner rtds-grid rtds-font-bold rtds-text-center rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-20" role="status">
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 rtds-animate-spin" aria-hidden="true" focusable="false" role="img">
<use href="./icons.svg#spinner" />
</svg>
<span class="rtds-spinner__label rtds-sr-only">Caricamento in corso...</span>
</div>
<!-- Etichetta visibile con <p> -->
<div class="rtds-spinner rtds-spinner--with-label rtds-grid rtds-font-bold rtds-text-center rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-20" role="status">
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 rtds-animate-spin" aria-hidden="true" focusable="false" role="img">
<use href="./icons.svg#spinner" />
</svg>
<p class="rtds-spinner__label">Caricamento in corso...</p>
</div>
<!-- Etichetta visibile con <h2> (sezione di caricamento principale) -->
<div class="rtds-spinner rtds-spinner--with-label rtds-grid rtds-font-bold rtds-text-center rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-20" role="status">
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 rtds-animate-spin" aria-hidden="true" focusable="false" role="img">
<use href="./icons.svg#spinner" />
</svg>
<h2 class="rtds-spinner__label">Caricamento risultati</h2>
</div>
<!-- Icona grande (rtds-w-12 rtds-h-12) con padding ridotto -->
<div class="rtds-spinner rtds-spinner--with-label rtds-grid rtds-font-bold rtds-text-center rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-10" role="status">
<svg class="rtds-icon rtds-fill-current rtds-w-12 rtds-h-12 rtds-animate-spin" aria-hidden="true" focusable="false" role="img">
<use href="./icons.svg#spinner" />
</svg>
<p class="rtds-spinner__label">Caricamento in corso...</p>
</div>#spinner dallo sprite icons.svg — verificare che lo sprite sia disponibile nel contesto di integrazionerole="status" implica aria-live="polite": inserire il componente nel DOM solo quando il caricamento ha effettivamente inizio; rimuoverlo al terminearia-busy="true" sul contenitore della sezione interessata