Spinner
Un indicateur de chargement avec des graduations façon Apple ou un anneau qui respire, pouvant attendre avant de s’afficher et rester assez longtemps pour ne pas clignoter.
pnpm dlx shadcn@latest add https://hextaui.com/r/spinner.jsonAjoute le composant, les tokens de thème HextaUI et les composants HextaUI dont il dépend.
Ajoutez les tokens de thème à votre CSS global, si ce n’est pas déjà fait.
Installez les dépendances.
pnpm add class-variance-authority cnCopiez et collez le code suivant dans votre projet.
components/ui/spinner.tsx Mettez à jour les chemins d’import selon la configuration de votre projet.
Par défaut, c'est l'indicateur à huit branches des plateformes Apple. variant="ring" tourne pendant que son arc grandit et rétrécit, pour donner l'impression de travailler plutôt que d'être bloqué. Les deux sont dessinés dans la couleur de texte courante.
Sans scintillement
Passez loading et le spinner attend delay (150ms) avant de s'afficher, pour que les chargements rapides ne le fassent jamais clignoter, puis reste au moins minDuration (400ms) une fois visible.
Tailles
sm, default, lg et xl pour les deux variantes.
En ligne
À côté d'un texte, marquez le spinner aria-hidden pour que les mots parlent. Seul, il annonce son label.
Dans les boutons
Button et Command utilisent ce spinner pour leurs états de chargement, dimensionné sur les icônes du bouton.
- Seul, le spinner est un
statusnommé parlabel(« Loading »). - Avec
aria-hidden, il perd son rôle, pour l'utiliser à côté d'un texte visible ou dans un bouton occupé. - Avec la réduction des animations, il pulse doucement au lieu de tourner, pour montrer qu'il se passe quelque chose.
| Prop | Type | Par défaut |
|---|---|---|
variant | "ticks" | "ring" | "ticks" |
sizenull laisse le parent décider de la taille. | "sm" | "default" | "lg" | "xl" | null | "default" |
label | string | "Loading" |
loadingActive l'affichage différé. Omettez-le pour toujours afficher. | boolean | – |
delay | number | 150 |
minDuration | number | 400 |
animatedMet l'animation en pause sans la masquer. | boolean | true |
| Attribut | Description |
|---|---|
data-slot="spinner" | Le SVG, avec data-variant. |
Le même timing sous forme de hook, pour les skeletons, les overlays ou tout ce qui ne doit pas clignoter. Consultez le guide de useDelayedLoading.
- useDelayedLoadingN'affiche un état de chargement que lorsque le travail est vraiment lent, puis le garde assez longtemps pour qu'il ne scintille jamais.
- AlertDes messages en ligne pour le statut et les retours, avec une surface neutre, une icône colorée et une fermeture qui se replie en douceur.
- EmptyUn espace réservé pour les écrans sans contenu à afficher, avec une icône, un message et l’action suivante.
- ProgressUne barre ou un anneau qui montre l’avancement d’une tâche, s’adoucit entre les mises à jour et glisse tant que le total est inconnu.
- SkeletonDes placeholders qui attendent 150ms avant de s’afficher, prennent la taille exacte du contenu qu’ils enveloppent et l’affichent en fondu sans rien déplacer.
- ToastDe brefs messages qui s’empilent proprement, se déploient au survol, se balayent pour disparaître et transforment un état de chargement en succès ou en erreur sur place.
Utilisé dans les blocks
Des blocks qui s’appuient sur Spinner.
- ArtifactLe panneau à côté d’un chat IA qui montre ce que le modèle a produit. Pages web, SVG, documents et code arrivent en direct, puis passent à un aperçu isolé en sandbox, avec des versions à comparer et à restaurer, une séparation redimensionnable et une bottom sheet sur mobile.
- Chat SidebarLa barre latérale d’une application de chat. Logo, recherche et Nouveau chat en haut, vos propres liens en dessous, chats épinglés, projets qui se déploient pour montrer leurs chats, récents regroupés par jour, et des lignes avec menus au survol et au clic droit, renommage en ligne, suppression avec annulation et états de réponse en direct.
- Diff ReviewRelisez les modifications d’un agent dans plusieurs fichiers avant qu’elles ne soient appliquées. Une arborescence de fichiers avec compteurs, acceptation ou rejet de chaque changement, de chaque fichier ou de tout, des commentaires sur n’importe quelle ligne ou plage renvoyés à l’agent, des vues unifiée et côte à côte, des surlignages au niveau du mot, l’annulation, des modifications en streaming et un résumé « 4 fichiers modifiés » pour le chat.
- ProfileLa section Profil des paramètres d’un produit d’IA. Recadrez une photo en cercle, choisissez un nom d’utilisateur vérifié pendant la saisie, confirmez une nouvelle adresse e-mail avec un code à 6 chiffres, ajoutez des liens qui reconnaissent le site et voyez une carte en direct de ce que les autres voient de vous.