Notification toast

Messages éphémères pour confirmer une action ou signaler un événement. Disparaissent automatiquement après quelques secondes. API programmatique via toast() ou déclencheurs déclaratifs.

Démonstration

Structure HTML (aperçu)

Pour la démo, le conteneur est forcé en position relative ; en production il reste fixe dans un coin de la fenêtre.

<div class="bj-toast-container" aria-live="polite" role="status">
  <div class="bj-toast bj-toast--success" role="alert">
    <span class="bj-toast__icon" aria-hidden="true"><i class="ri-check-line"></i></span>
    <div class="bj-toast__body">
      <p class="bj-toast__title">Succès</p>
      <p class="bj-toast__text">Action enregistrée.</p>
    </div>
    <button type="button" class="bj-toast__close" aria-label="Fermer">…</button>
  </div>
</div>

Positions du conteneur

Par défaut : coin supérieur droit. Modificateurs pour les trois autres coins :

<!-- défaut : haut-droite -->
<div class="bj-toast-container">…</div>
<div class="bj-toast-container bj-toast-container--top-left">…</div>
<div class="bj-toast-container bj-toast-container--bottom-right">…</div>
<div class="bj-toast-container bj-toast-container--bottom-left">…</div>

Aperçu des quatre coins

Chaque vignette force le conteneur en position: relative pour l’aperçu ; en production le conteneur reste position: fixed.

<!-- défaut : haut-droite -->
<div class="bj-toast-container">…</div>
<div class="bj-toast-container bj-toast-container--top-left">…</div>
<div class="bj-toast-container bj-toast-container--bottom-right">…</div>
<div class="bj-toast-container bj-toast-container--bottom-left">…</div>

Positions × variantes

Exemple statique : un type sémantique par coin pour illustrer bj-toast-container--* avec bj-toast--info|success|warning|error sur le toast.

<!-- Matrice démo : combiner conteneur + variante -->
<div class="bj-toast-container bj-toast-container--top-left" aria-live="polite" role="status">
  <div class="bj-toast bj-toast--info" role="alert">…</div>
</div>
<div class="bj-toast-container" aria-live="polite" role="status">
  <div class="bj-toast bj-toast--success" role="alert">…</div>
</div>
<div class="bj-toast-container bj-toast-container--bottom-left" aria-live="polite" role="status">
  <div class="bj-toast bj-toast--warning" role="alert">…</div>
</div>
<div class="bj-toast-container bj-toast-container--bottom-right" aria-live="polite" role="status">
  <div class="bj-toast bj-toast--error" role="alert">…</div>
</div>

Usage déclaratif

<button data-bj-toast-trigger
        data-bj-toast-type="success"
        data-bj-toast-title="Succès"
        data-bj-toast-text="Opération terminée.">
  Valider
</button>

Usage programmatique

import { toast } from '@flrxnt/dsbj';

toast({
  title: 'Succès',
  text: 'Le dossier a été soumis.',
  type: 'success',
  duration: 5000,
  position: 'top-right',
});

Classes CSS

ClasseDescription
bj-toast-containerConteneur fixe empilant les toasts.
bj-toastNotification individuelle.
bj-toast--info / success / warning / errorVariante sémantique.
bj-toast--removingClasse transitoire pendant la fermeture animée.
bj-toast__iconZone icône (décorative, aria-hidden sur l’icône).
bj-toast__bodyBloc texte (titre + message).
bj-toast__titleTitre optionnel.
bj-toast__textCorps du message.
bj-toast__closeBouton fermer.
bj-toast__progressBarre de progression du délai.
bj-toast-container--top-leftPosition coin supérieur gauche.
bj-toast-container--bottom-rightPosition coin inférieur droit.
bj-toast-container--bottom-leftPosition coin inférieur gauche.

Accessibilité

Le conteneur utilise aria-live="polite" et role="status" . Chaque toast a role="alert" . Le bouton de fermeture est accessible au clavier.