Feedback

AvatarProgressRing

Avatar circolare con anello di progresso perimetrale, pensato per scenari di gamification (punti, livelli, completamento profilo). Contenuto centrale con fallback immagine → label → icona e slot personalizzabili.

Import

import { AvatarProgressRing } from '@pzeta/vue-components'
// oppure tramite plugin:
import { FeedbackPlugin } from '@pzeta/vue-components'
app.use(FeedbackPlugin)

Esempio Base

Props

PropTipoDefaultDescrizione
valuenumber0Valore corrente del progresso (vincolato all'intervallo [0, max])
maxnumber100Valore massimo, corrisponde al 100% dell'anello
imagestring | nullnullURL dell'immagine avatar
labelstring | nullnullIniziali/label di fallback quando manca l'immagine
iconstring | nullnullIcona di fallback (classe CSS, es. 'pi pi-user') quando mancano immagine e label
altstring''Testo alternativo dell'immagine (vuoto se decorativa)
sizenumber96Diametro totale in px, anello incluso
strokeWidthnumber6Spessore dell'anello di progresso in px
gapnumber4Distanza in px tra anello e avatar interno
valueColorstringundefinedColore dell'arco di valore (sovrascrive severity)
rangeColorstringundefinedColore dell'anello di sfondo (traccia)
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast' | 'help''primary'Severità del design system per colorare l'arco di valore
roundedbooleantrueTerminazione arrotondata dell'arco di valore
ariaLabelstring | nullnullLabel ARIA; se assente usa il fallback "Progresso: N%"

Emits

EventoPayloadDescrizione
errorEventEmesso quando il caricamento dell'immagine avatar fallisce (fallback su label/icona/slot)

Slot

SlotScopeDescrizione
centerSostituisce l'intero contenuto centrale (immagine/label/icona)
badgeBadge sovrapposto (status dot, livello, ecc.) mostrato solo se valorizzato

Contenuto centrale

In assenza dello slot center, il componente sceglie il contenuto con questa priorità:

  1. image — se fornita e caricata correttamente;
  2. label — se nessuna immagine (o immagine non caricata);
  3. icon — se nessuna immagine e nessuna label.

Se l'immagine fallisce il caricamento viene emesso error e si ricade automaticamente su label/icona.

Esempi

Con immagine e badge

Severity e dimensioni

Colori e spessore personalizzati

Slot center personalizzato

Accessibilità

  • L'elemento radice espone role="progressbar" con aria-valuemin, aria-valuemax e aria-valuenow.
  • Fornire ariaLabel per descrivere il progresso; in mancanza viene usato "Progresso: N%".
  • Valorizzare alt con il nome reale dell'utente quando l'immagine veicola informazione, lasciarlo vuoto ('') se l'avatar è puramente decorativo.

TypeScript

import type {
  AvatarProgressRingProps,
  AvatarProgressRingEmits,
} from '@pzeta/vue-components'