veza/apps/web/src/components/feedback/LazyToaster.tsx

35 lines
1.1 KiB
TypeScript
Raw Normal View History

/**
* LazyToaster - Composant lazy pour react-hot-toast
*
* CRITICAL FIX: Charge react-hot-toast de manière lazy pour éviter
* les collisions de noms de variables (ie) lors de la minification.
*
* Le problème: react-hot-toast utilise une variable 'ie' qui entre
* en conflit avec d'autres variables minifiées dans le même chunk.
* Solution: Chargement dynamique pour isoler le module.
*/
import { lazy, Suspense } from 'react';
// Import dynamique de react-hot-toast pour éviter les collisions de noms
const Toaster = lazy(() =>
import('react-hot-toast').then((mod) => ({ default: mod.Toaster }))
);
interface LazyToasterProps {
position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
[key: string]: any; // Permet de passer toutes les autres props à Toaster
}
/**
* Composant wrapper qui charge Toaster de manière lazy
* Aucun fallback nécessaire car Toaster est invisible jusqu'à ce qu'un toast soit affiché
*/
export function LazyToaster(props: LazyToasterProps) {
return (
<Suspense fallback={null}>
<Toaster {...props} />
</Suspense>
);
}