react-toast-kit
Version:
A modern, accessible toast notification system for React applications with automatic CSS injection
55 lines (49 loc) • 1.52 kB
text/typescript
// __CSS_CONTENT__ is replaced at compile time by tsup's `define` option —
// see tsup.config.ts. At runtime this is already a plain string literal.
declare const __CSS_CONTENT__: string;
let cssInjected = false;
export const injectCSS = () => {
if (typeof document === 'undefined' || cssInjected) return;
if (document.getElementById('react-toast-kit-styles')) {
cssInjected = true;
return;
}
try {
const style = document.createElement('style');
style.id = 'react-toast-kit-styles';
style.textContent = __CSS_CONTENT__;
document.head.insertBefore(style, document.head.firstChild ?? null);
cssInjected = true;
} catch (e) {
console.warn('[react-toast-kit] Could not inject CSS:', e);
}
};
if (typeof window !== 'undefined') {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', injectCSS);
} else {
injectCSS();
}
}
// Core exports — optimized for tree shaking
export { toast } from './toast';
export { ToastProvider } from './ToastProvider';
export { useToast, useToastConfig, useToastStats } from './useToast';
export { useToastStore } from './toast';
export { registerPlugin, unregisterPlugin, cleanup } from './toast';
export { useToastProvider } from './ToastProvider';
export type {
Toast,
ToastOptions,
ToastPosition,
ToastVariant,
ToastTheme,
ToastAnimation,
ToastStyle,
ToastAction,
ProgressBarStyle,
CustomAnimation,
ToastPlugin,
StrictToastOptions,
ToastStoreConfig,
} from './toast';