Reddot UI Library
Docs
Sonner
Sonner
An opinionated toast component for React.
À propos
Sonner est créé et maintenu par emilkowalski_.
Installation
$npx shadcn@latest add https://reddot.dottools.xyz/r/sonner.json
Ajout du composant Toaster
Dans votre app/layout.tsx :
import { Toaster } from "@/components/ui/sonner"
export default function RootLayout({ children }) {
return (
<html lang="en">
<head />
<body>
<main>{children}</main>
<Toaster />
</body>
</html>
)
}Utilisation
Importez la fonction toast :
import { toast } from "sonner"Toast basique :
toast("L'événement a été créé.")Exemple avec description et action :
"use client"
import { toast } from "sonner"
import { Button } from "@/components/ui/button"
export function SonnerDemo() {
return (
<Button
variant="outline"
onClick={() =>
toast("L'événement a été créé", {
description: "Dimanche, 03 décembre 2023 à 09h00",
action: {
label: "Annuler",
onClick: () => console.log("Annuler"),
},
})
}
>
Afficher Toast
</Button>
)
}Exemples
Types de toast
import { toast } from "sonner"
// Succès
toast.success("Email envoyé avec succès")
// Erreur
toast.error("Une erreur est survenue")
// Avertissement
toast.warning("Attention à cette action")
// Information
toast.info("Information importante")
// Toast de chargement
toast.loading("Chargement en cours...")
// Toast personnalisé
toast("Événement personnalisé", {
description: "Ceci est une description personnalisée",
duration: 4000,
})Toast avec action
import { toast } from "sonner"
toast.success("Email envoyé", {
description: "Votre message a été envoyé avec succès",
action: {
label: "Voir",
onClick: () => console.log("Voir email")
}
})Toast avec promesse
import { toast } from "sonner"
const promise = () => new Promise((resolve) =>
setTimeout(resolve, 2000)
)
toast.promise(promise, {
loading: 'Chargement...',
success: (data) => 'Opération réussie',
error: 'Erreur lors de l\'opération',
})API Reference
toast()
Fonction principale pour afficher des toasts.
toast(message, options)| Paramètre | Type | Description |
|---|---|---|
message | string | React.ReactNode | Le contenu du toast. |
options | ToastOptions | Options de configuration du toast. |
ToastOptions
| Propriété | Type | Default | Description |
|---|---|---|---|
description | string | React.ReactNode | - | Description supplémentaire du toast. |
duration | number | 4000 | Durée d'affichage en millisecondes. |
action | { label: string; onClick: () => void } | - | Bouton d'action dans le toast. |
cancel | { label: string; onClick: () => void } | - | Bouton d'annulation dans le toast. |
id | string | number | - | ID unique du toast. |
important | boolean | false | Si true, le toast ne se fermera pas automatiquement. |
onDismiss | (t: Toast) => void | - | Callback appelé lors de la fermeture. |
onAutoClose | (t: Toast) => void | - | Callback appelé lors de la fermeture automatique. |
Méthodes de toast
toast.success(message, options)
toast.error(message, options)
toast.warning(message, options)
toast.info(message, options)
toast.loading(message, options)
toast.promise(promise, { loading, success, error })
toast.custom(jsx, options)
toast.dismiss(id?) // Ferme un ou tous les toastsToaster
Composant à placer dans votre layout.
| Prop | Type | Default | Description |
|---|---|---|---|
theme | "light" | "dark" | "system" | "system" | Thème des toasts. |
position | ToasterPosition | "bottom-right" | Position des toasts sur l'écran. |
expand | boolean | false | Si tous les toasts doivent être développés. |
richColors | boolean | false | Active les couleurs riches pour les toasts. |
closeButton | boolean | false | Affiche un bouton de fermeture. |
toastOptions | ToastOptions | - | Options par défaut pour tous les toasts. |