Toast
De 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.
pnpm dlx shadcn@latest add https://hextaui.com/r/toast.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 @base-ui/react @tabler/icons-react cnCopiez et collez le code suivant dans votre projet.
components/ui/toast.tsx components/ui/button.tsx components/ui/spinner.tsx Mettez à jour les chemins d’import selon la configuration de votre projet.
Ajoutez <Toaster /> une seule fois, près de la racine de votre application.
Appelez ensuite toast depuis n'importe où, y compris en dehors des composants React.
Les toasts s'empilent proprement, le plus récent devant. Survolez ou focalisez la pile pour la déployer ; tous les minuteurs se mettent en pause pendant que vous lisez. Balayez un toast vers son bord pour le fermer.
Types
Tous les toasts utilisent la même surface calme ; seule l'icône porte la couleur.
Promise
toast.promise affiche un spinner, puis se transforme sur place en toast de succès ou d'erreur, l'icône surgissant au changement.
Action
Passez action pour un bouton comme Annuler. Un clic dessus ferme aussi le toast.
Mise à jour sur place
Conservez l'id de toast.loading et modifiez-le avec toast.update, y compris son type.
Pas de doublons
Donnez un id à un toast : l'appeler de nouveau met à jour l'existant au lieu d'empiler une copie.
| Touche | Action |
|---|---|
| F6 | Place le focus dans les toasts et les déploie en éventail. |
| Tab | Se déplace entre les actions des toasts et les boutons de fermeture. |
| Esc | Ferme le toast qui a le focus. |
- Les toasts sont annoncés poliment ;
toast.errorest annoncé immédiatement. - Les minuteurs se mettent en pause tant que le pointeur ou le focus est sur les toasts, personne n'a donc à courir contre un compte à rebours.
- Les boutons de fermeture apparaissent au survol et au focus, et sont toujours visibles sur écran tactile.
- Avec la réduction des animations, les toasts apparaissent en fondu au lieu de glisser.
| Prop | Type | Par défaut |
|---|---|---|
positionLes téléphones utilisent toujours toute la largeur. | "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | "bottom-right" |
limitToasts affichés en même temps ; les plus anciens s'estompent. | number | 3 |
timeoutDurée d'affichage par défaut, en ms. | number | 5000 |
| Attribut | Description |
|---|---|
data-slot="toaster" | Le viewport, avec data-position. |
data-slot="toast" | Chaque toast, avec data-type, data-expanded et data-swiping. |
| Prop | Type | Par défaut |
|---|---|---|
description | ReactNode | – |
action | { label: ReactNode; onClick?: (event) => void } | – |
idÀ réutiliser pour mettre à jour au lieu de dupliquer. | string | – |
timeoutReprend par défaut le délai du Toaster. Les longs messages restent plus longtemps, à environ 250 mots par minute. | number | – |
priority | "low" | "high" | "low" |
onClose | () => void | – |
onRemove | () => void | – |
Aussi toast.success, toast.error, toast.warning, toast.info, toast.loading, toast.promise, toast.update et toast.dismiss. Chacun renvoie ou prend l'id du toast.
- ButtonDes boutons dans toutes les variantes et tailles, avec un flux de chargement, de succès et d’erreur intégré qui évite le spinner pour les requêtes rapides.
- SpinnerUn 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.
- 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.
Utilisé dans les blocks
Des blocks qui s’appuient sur Toast.
- API keysLa page des clés d’API d’un produit d’IA, comme les consoles d’OpenAI et d’Anthropic. Créez des clés avec des permissions limitées et une expiration, voyez le secret une seule fois avec une copie qui confirme, révoquez avec annulation, renommez sur place, effectuez une rotation avec période de grâce et consultez l’utilisation par clé.
- 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.
- HextaAIUne application de chat IA complète construite avec tous les blocks IA de HextaUI. Des conversations dans une barre latérale, la réflexion avec sources, des appels d’outils avec diffs et approbations, un plan à relire avant l’exécution de l’agent, du Markdown et du code en streaming, et un mode vocal silencieux, le tout piloté par les message parts d’AI SDK.