import * as React from "react"; export interface NotificationItem { /** Identifiant stable de l'entrée : sert de clé React et de repère aux callbacks. */ key: string; title: string; /** Corps du message, sur une seconde ligne. */ description?: string; /** * Horodatage déjà mis en forme par l'application : le formatage dépend de la locale et du * fuseau du projet, le composant ne fait que l'afficher. */ date?: string; /** Une entrée non lue est mise en avant et compte dans la pastille. */ read?: boolean; icon?: React.ElementType; /** * Classes de la pastille d'icône : fond et couleur du glyphe, qui hérite de `currentColor` * — par exemple `"bg-blue-500/10 text-blue-500"`. Sans valeur, la pastille est neutre. */ iconClassName?: string; /** Chemin de destination, laissé à la charge de l'appelant dans `onSelect`. */ path?: string; } export interface NotificationsBellProps { /** Entrées déjà ordonnées par l'appelant, la plus récente en premier. */ items: NotificationItem[]; /** Clic sur une entrée : à l'appelant d'ouvrir la page concernée et de la marquer comme lue. */ onSelect?: (item: NotificationItem) => void; /** Sans ce callback, l'action « tout marquer comme lu » n'est pas proposée. */ onMarkAllAsRead?: () => void; /** Sans ce callback, aucune entrée n'affiche de bouton de suppression. */ onRemove?: (item: NotificationItem) => void; /** * Sans ce callback, aucun pied « Voir tout » n'est affiché. Le composant ne navigue pas : * à l'appelant d'ouvrir la page complète (le panneau se referme avant l'appel). */ onSeeAll?: () => void; isLoading?: boolean; /** * Compteur de la pastille. Par défaut, le nombre d'entrées non lues — à renseigner quand la * liste est tronquée côté application et que le total réel est plus grand. */ unreadCount?: number; /** Au-delà, le compteur s'affiche « 9+ ». */ maxBadgeCount?: number; /** Mode contrôlé : sans ces props, le panneau gère son ouverture lui-même. */ open?: boolean; onOpenChange?: (open: boolean) => void; triggerLabel?: string; title?: string; emptyLabel?: string; loadingLabel?: string; markAllAsReadLabel?: string; removeLabel?: string; seeAllLabel?: string; className?: string; /** Classes du panneau : sa largeur par défaut convient rarement à tous les projets. */ contentClassName?: string; /** Classes de la pastille de comptage, pour l'accorder à la charte de l'application. */ badgeClassName?: string; /** Classes ajoutées à chaque entrée de la liste. */ itemClassName?: string; /** * Classes des entrées non lues. Remplace la mise en avant par défaut (`bg-accent/40`) plutôt * que de s'y ajouter : deux fonds concurrents ne se départagent pas, l'ordre des classes * Tailwind ne décidant pas du gagnant. */ unreadItemClassName?: string; } /** * Cloche de notifications : pastille de comptage et panneau listant les messages reçus. * * Purement présentationnel — ni chargement, ni persistance, ni navigation : l'application fournit * les entrées et décide de ce que fait un clic. C'est ce qui lui permet de servir aussi bien un * historique stocké en base qu'une liste tenue en mémoire. */ export declare const NotificationsBell: ({ items, onSelect, onMarkAllAsRead, onRemove, onSeeAll, isLoading, unreadCount, maxBadgeCount, open, onOpenChange, triggerLabel, title, emptyLabel, loadingLabel, markAllAsReadLabel, removeLabel, seeAllLabel, className, contentClassName, badgeClassName, itemClassName, unreadItemClassName, }: NotificationsBellProps) => React.ReactElement; //# sourceMappingURL=NotificationsBell.d.ts.map