Sonner
An opinionated toast component for PRISM.
Sonner — système de toast opinionné (stacking, swipe-to-dismiss, promise/loading states). Composant unique Toaster à monter une seule fois dans le layout ; les toasts sont ensuite déclenchés depuis un island via window.dispatchEvent(new CustomEvent("bext-toast", {...})).
Alternative "batteries incluses" au primitif Toast de shadcn (nous n'exposons pas encore ce dernier — utiliser Sonner par défaut).
Installation
$ bext ui add sonner
Copy and paste the following into src/components/ui/sonner.tsx.
This component is interactive — make sure the shared island is loaded (see Islands). It reacts to data-ui="sonner" hooks.
Usage
Anatomy
<Toaster position="bottom-right" richColors? />
API Reference
Toaster
| Prop | Type | Default | Description |
|---|---|---|---|
| position | "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | "bottom-right" | undefined |
| richColors | boolean | — | success/error/warning tinted au lieu de neutre. |
| closeButton | boolean | — | Bouton × sur chaque toast. |
| duration | number | 4000 | Ms avant auto-dismiss. |
Data Attributes
Attributs qu'on peut cibler en CSS custom pour override le style par état.
| Attribute | On | Values | Description |
|---|---|---|---|
| data-ui="sonner" | Toaster root | undefined | undefined |
| data-position | container | "bottom-right" | ... | undefined |
Keyboard
| Key | Action |
|---|---|
| Escape | Ferme le toast focus. |
Accessibility
Chaque toast porte role="status" pour un update passif, ou role="alert" pour une erreur importante. Le container est un <section aria-label="Notifications">.
Edit this component live in the bext playground. The PRISM + signals version is the bext-native idiom — fine-grained reactivity, no virtual DOM.
On This Page