GH GambleHub

Indicateurs de progrès et d'état

1) Principes

1. Réponse instantanée (≤ 100 ms). N'importe quelle action se confirme à la fois visuellement : la pression → ' busy le '/squelette/microanimation.
2. Honnêteté et prévisibilité. Les intérêts reflètent des progrès réels et non « 99 % éternels ». Si l'évaluation n'est pas possible, utilisez une option et une explication non définies (indeterminate).
3. Le contexte est proche de l'action. L'indicateur est là où l'utilisateur regarde/agit (bouton, carte, bloc) et non dans un coin lointain.
4. L'invisibilité après le succès. Le succès est un court chèque/feed et c'est tout. L'erreur est une explication compréhensible et une répétition sûre.
5. Disponibilité par défaut. 'role = « progressbar »,' aria-valuenow ', régions en direct, contraste ≥ AA.

2) Types d'indicateurs et quand les utiliser

Progression linéaire (determinate/indeterminate). Téléchargement/importation/exportation, étapes avec volume compréhensible.
Progrès circulaire (généralement indéterminé). Opérations locales courtes dans des endroits compacts.
Stepper (étape par étape). Étapes successives (« Étape 2 de 4 »), KYC, processus maîtres.
Skeleton. Pour remplacer la structure de contenu par des spinners ; évitez « shimmer » pour les utilisateurs avec 'prefers-reduced-motion'.
Statut-badge (success/warning/danger/info). État de l'objet (En cours de traitement, Rejeté, Terminé).
Bannière/toast de statut. Événements globaux : hors ligne, échec du serveur, synchronisation de la file d'attente.
Inline loader (bouton/ligne). Opérations locales : « Enregistrer »..., « Envoyer »....

3) Certain vs progrès incertains

Determinate : nous connaissons la quantité de travail → montrons les %/étapes.
Indeterminate : volume inconnu → « Traitement en cours »... + contexte (« Habituellement jusqu'à 1-2 min »).
Changement d'état : vous pouvez commencer par indeterminate → aller à determinate quand le score apparaît.
ETA est prudent : montrez la gamme ("~30-60 fouettait") et évitez "les promesses".

4) Hébergement et modèles

Local à l'action : bouton 'aria-busy', spinner dans la ligne du tableau, progression dans la carte.
Au-dessus de l'unité/liste : barre linéaire sous la tête de section en cas d'opérations par lots.
Global : Top subtil progress (route-change), bannières système.
Panneau de sticky (mob.) : Confirmation/progrès sur le CTA dans le quai inférieur.

5) Disponibilité (A11y)

Progrès accomplis :
html
<div role = "progressbar" aria-valuemin =" 0" aria-valuemax =" 100" aria-valuenow =" 42" aria-label = "Load Report "> </div>

Indeterminate : exposez 'role = « progressbar »' sans 'aria-valuenow', ajoutez le texte explicatif dans 'role = « status ».
"aria-live =" polite "pour les mises à jour ordinaires," assertive "pour les mises à jour critiques seulement.
'aria-busy = 'true' sur un conteneur temporairement bloqué par des actions.
Le focus ne « saute » pas : lorsque vous changez d'étape, déplacez le focus sur le titre de l'étape du stepper.

6) Copywriting et sémantique visuelle

Bref et sur l'affaire : « Le téléchargement est en cours »..., « Nous traitons le paiement »....
Ajoutez "quoi d'autre" : "Terminé. Actualisons la page automatiquement".
Couleurs : vert - succès, orange - avertissement/attention, rouge - erreur. La couleur ≠ le seul porteur de sens : donnez une icône/texte.

7) Mises à jour et retours optimistes

Optimisme : nous changeons l'IU immédiatement (par exemple, la marque « Dans les favoris ») et nous confirmons silencieusement par le serveur.
En cas d'erreur, retour doux + explication et « Retry ».
Transactions critiques (taux/paiement) : optionnellement « doux optimisme » (nous enregistrons « Envoyé → En attente de confirmation »...), mais sans changement de cash avant confirmation.

8) Files d'attente et tâches de fond

Montrez la file d'attente : "n'tâches dans le traitement, cartes individuelles avec progrès.
Accordez une pause/annulation pour de longues opérations, si possible.
Traitement de fond : badge « En arrière-plan », toasts à la fin, section « Historique des tâches ».

9) Performance et timings

Première réaction ≤ 100 ms : appliquer skeleton/inline-busy au lieu de vide.
Animations : 120-180 ms (in), 80-140 ms (out), seulement « bou/opacity ».
Processus longs : Mise à jour des progrès 10 à 15 fois/s au maximum ; regroupez les changements.

10) Snappets

Progression locale au bouton

html
<button id="export" class="btn" aria-busy="false">Экспорт CSV</button>
<script>
const btn = document. getElementById('export');
btn. addEventListener('click', async () => {
btn. setAttribute('aria-busy','true'); btn. disabled = true;
try {
const r = await fetch('/api/export', { method:'POST' });
if(!r.ok) throw new Error();
//show toast "Export has begun. We will notify upon readiness"
} catch {
//toast with cause and Retry
} finally {
btn. disabled = false; btn. setAttribute('aria-busy','false');
}
});
</script>

Determinate linéaire

html
<div class="progress">
<div class="bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"></div>
</div>
<style>
.progress{height:4px; background:var(--bg-muted); border-radius:999px; overflow:hidden}
.progress. bar{height:100%;width:0%;background:var(--accent); transition:width. 16s}
</style>
<script>
const bar = document. querySelector('.progress. bar');
let n=0; const t=setInterval(()=>{ n=Math. min(100, n+5); bar. style. width=n+'%'; bar. setAttribute('aria-valuenow',n); if(n===100) clearInterval(t); },160);
</script>

Stepper

html
<nav aria-label = "Progress">
<ol class="steps">
<li class = "done "> <span> 1 </span> Data </li>
<li class = "current" aria-current = "step "> <span> 2 </span> Documents </li>
<li> <span> 3 </span> Confirmation </li>
</ol>
</nav>

11) Skeleton est correct

Utilisez la forme du contenu futur (carte/ligne), sans shimmer infini (ou désactivez avec 'prefers-reduced-motion').
Limite de temps : si le chargement> 300-500 ms, skeleton est justifié ; avec moins de retard, un « micro faid » suffit.

12) Statut-badge (état objet)

Exemples : Brouillon, En cours de traitement, En attente de confirmation, Terminé, Rejeté.

Texte court, couleurs d'icône/arrière-plan stables, contraste ≥ AA.
Icône' aria-hidden = » true » + label texte (pour SR).
En un clic, nous révélons les détails ou ouvrons l'Histoire.

13) Spécificité iGaming

Taux :
  • Appuyez sur CTA → « Envoyé »..., avec un retard> 3 s - « En attente de confirmation... » (indeterminate).
  • Succès - « Taux accepté » + chèque ; erreur - explication honnête (« période de marché fermée/coefficient changé ») et sécurité Retry.
Dépôt/retrait :
  • Determinate par étapes : « Validation de la méthode → Soumission → Confirmation PSP ».
  • Pour la sortie - badge B de traitement, l'écran d'état dans le profil, ETA gamme ; une fois terminé.
Tournois/leaders :
  • Stepper d'inscription (étapes), progrès vers le prix (N/points), badge de statut « Participe ».
  • Mise à jour du temps réel - soigneusement, sans clignotements, avec 'aria-live = « polite ».
KYC:
  • Stepper + badge « Au contrôle ». Montrez ce qui a déjà été accepté (tique) et ce qui reste.

14) Couleurs, contraste et texte

Success/Info/Warning/Danger - quatre tons durables dans le système de conception.
Contraste du texte avec l'arrière-plan badge ≥ AA.
N'utilisez pas la même couleur pour « en traitement » et « avertissement ».

15) Métriques

Time-to-First-Feedback (TTFF) : du clic à la première réponse visuelle.
Completion Time sur les opérations et drop/abort rate pour de longues tâches.
Taux de réussite Retry pour les opérations de progression.
% optimiste qui a réussi (et proportion de retraits).
Temps visible skeleton/spinner (objectif : le moins possible).

16) Anti-modèles

Bouton « muet » (pas de busy/spinner)> 100 ms.
Des filins sans fin sans explication ni alternative.
Faux pourcentage/curseur dépendant de 99 %.
Réinitialiser le contenu en cas d'erreur sans pouvoir le répéter.
Seule la couleur sans texte/icônes pour le statut.
Progression loin du lieu de l'action (l'utilisateur ne voit pas).

17) Tokens de système de conception (exemple)

json
{
"progress": {
"barHeight": 4,
"radius": 999,
"inMs": 160,
"outMs": 120,
"pollHz": 10
},
"status": {
"tones": { "success": "#", "info": "#", "warning": "#", "danger": "#" },
"badge": { "radius": 8, "px": "6 10", "icon": 14 }
},
"skeleton": {
"rowHeight": 16,
"gap": 8,
"reduceMotion": true
},
"a11y": {
"useAriaBusy": true,
"live": "polite",
"contrastAA": true
}
}
Presets CSS :
css
.badge{display:inline-flex; gap:6px; align-items:center; padding:6px 10px; border-radius:8px; font-size:.875rem}
.badge--success{background:var(--bg-success); color:var(--on-success)}
.skeleton{background:linear-gradient(90deg, var(--sk1), var(--sk2), var(--sk1)); border-radius:8px}
@media (prefers-reduced-motion: reduce){.skeleton{background:var(--sk1)} }

18) Liste de vérification QA

Réponse et honnêteté

  • TTFF ≤ 100 ms ; il y a un busy/skeleton local.
  • Determinate est le % réel ; indeterminate - avec explication.

Disponibilité

  • 'role = « progressbar » '/' aria-valuenow' sont corrects ; régions en direct sur les mises à jour.
  • Contraste badge/texte ≥ AA ; la couleur n'est pas le seul porteur de sens.

Comportement

  • Optimiste avec le bon retour en arrière et l'explication.
  • Les files d'attente sont affichées ; il y a annulation/pause (le cas échéant).
  • Progrès près du lieu de l'action, ne chevauche pas la LTC.

Performance

  • Mises à jour 10 à 15 fois/s au maximum ; animations « bou/opacity ».
  • Skeleton ne taquine pas shimmer 'om avec' reduce-motion '.

Textes

  • Bref, sans techjargon ; « quoi d'autre » une fois terminé.
  • Sans « promesses » de l'heure exacte, si elle n'est pas garantie.

19) Documentation dans le système de conception

Компоненты: `ProgressBar`, `ProgressCircle`, `Stepper`, `StatusBadge`, `InlineLoader`, `Skeleton`.
Règles de sélection de type, de copywriting et de couleur pour les statuts.
Modèles : Optimisme, files d'attente, traitement de fond, synchronisation hors ligne.
Do/Don't-gallery : « éternel spinner », faux intérêts, « muet » CTA vs bon TTFF.

Résumé succinct

Les indicateurs de progrès et de statut doivent fournir une rétroaction opportune, honnête et accessible. Placez-les à côté de l'action, distinguez les progrès définis et incertains, respectez a11y et n'abusez pas des animations. Dans iGaming, c'est particulièrement important pour les paris, les paiements, les tournois et KYC - des progrès calmes et prévisibles augmentent directement la confiance et la conversion.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Telegram
@Gamble_GC
Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.