Sistema de Notificaciones modernas
Biblioteca ligera para mostrar modales y notificaciones con animaciones fluidas. Soporta contenido HTML, formularios, accesibilidad, múltiples botones de acción y personalización de animación.
Documentación — Sistema de Notificaciones
Dark Mode Automático
Las notificaciones detectan automáticamente el tema activo en tu web y ajustan sus colores. Prueba cambiar el tema usando el botón de arriba y luego abre cualquier notificación.
🌞 Modo Claro
- • Fondo blanco (#ffffff)
- • Texto oscuro (#111827)
- • Overlay suave
🌙 Modo Oscuro
- • Fondo oscuro (#0f1724)
- • Texto claro (#e6eef8)
- • Overlay intenso
.dark
al elemento <html>.
Compatible con Tailwind CSS (darkMode: 'class')
y frameworks personalizados.
⚡ Importar mediante CDN
📦 Script Clásico (UMD)
Compatible con cualquier proyecto HTML tradicional. ¡Solo necesitas un tag script! Todas las dependencias se cargan automáticamente.
<!-- FerNotify (todo se carga automáticamente) -->
<script src="https://cdn.jsdelivr.net/gh/Fernandocabal/fernotify@latest/dist/notification-system.js"></script>
<script>
notify.success('¡Todo funcionando!');
</script>
📦 ES Module
Para proyectos modernos con
import/export. Las dependencias se cargan automáticamente. También puedes definir
"buttons"
(array JSON) para diálogos con varios botones desde el playground.
<script type="module">
import NotificationSystem from 'https://cdn.jsdelivr.net/gh/Fernandocabal/fernotify@latest/dist/notification-system.esm.js';
window.notify = new NotificationSystem();
notify.success('¡Funciona con ES Modules!');
</script>
📦 NPM
Para proyectos Node.js con bundler (Webpack, Vite, etc.)
npm install fernotify
import NotificationSystem from 'fernotify';
const notify = new NotificationSystem();
notify.success('¡Instalado vía npm!');
✅ Dependencias Automáticas:
- • anime.js 3.2.1 - Se carga automáticamente desde CDN
- • Boxicons 2.1.4 - Se carga automáticamente desde CDN
💡 Versionado: Puedes usar @latest
para la
última versión o especificar una versión exacta como @1.2.1
⚛️ Uso con React / Frameworks
FerNotify opera completamente fuera del árbol de React — manipula document.body
directamente.
No hay conflicto con el Virtual DOM. Sin embargo, hay patrones recomendados según el entorno.
Desde v1.2.11 incluye tipos TypeScript (types/index.d.ts).
1. Instalar
npm install fernotify
2. Crear instancia
singleton en un módulo separado — src/lib/notify.ts
import NotificationSystem from 'fernotify';
// Una sola instancia para toda la app
const notify = new NotificationSystem();
export default notify;
3. Usar en cualquier componente
import notify from '@/lib/notify';
export function SaveButton() {
const handleSave = async () => {
notify.toastLoading('Guardando...', 'Espera');
try {
await fetch('/api/save', { method: 'POST', body: JSON.stringify(data) });
await notify.closeToastLoading();
notify.toastSuccess('Guardado correctamente');
} catch {
await notify.closeToastLoading();
notify.toastError('Error al guardar');
}
};
return <button onClick={handleSave}>Guardar</button>;
}
🍞 Toast — Notificaciones no bloqueantes
Los toasts son notificaciones ligeras que aparecen en la esquina de la pantalla sin bloquear la interfaz. Se cierran automáticamente (duración configurable), se pueden cerrar con el botón ×, y se acumulan apilándose uno bajo otro.
Métodos abreviados
notify.toastSuccess('Guardado');
notify.toastError('Ocurrió un error');
notify.toastWarning('Revisa los datos');
notify.toastInfo('Nueva actualización');
notify.toastQuestion('¿Continuar?');
// Carga con spinner (no se puede cerrar manualmente)
notify.toastLoading('Enviando...', 'Espera');
notify.closeToastLoading(); // cierra el spinner
Opciones avanzadas
notify.toast('Mensaje', {
type: 'success',
title: 'Título opcional',
duration: 6000, // 0 = sin auto-cierre
position: 'bottom-right',
id: 'mi-toast', // deduplicación
closeable: false // oculta el botón ×
});
toastLoading(msg, title?)
muestra un spinner no cerrable. Solo puede existir uno a la vez. Ciérralo con
closeToastLoading()
para mostrar el resultado de la operación.
🏷️ Deduplicación: asigna un
id
para que, si el toast ya está visible (ej. botón clicado repetidamente), se resetee su
cuenta regresiva en lugar de crear un duplicado.
top-right
top-left
top-center
bottom-right
bottom-left
Ejemplos — Notificaciones
Demostraciones de modales de notificación con uno o varios botones.
Playground — Notificaciones
Ejemplos — Toast
Notificaciones no bloqueantes, apilables y con pausa al pasar el mouse.
Playground — Toast