// shared/public/js/notifications.js

/**
 * Muestra una notificación tipo "toast".
 * @param {string} message El mensaje a mostrar.
 * @param {string} type El tipo de notificación ('success', 'error', 'info').
 * @param {number} duration La duración en milisegundos.
 */
function showNotification(message, type = 'info', duration = 3000) {
    // Crear el contenedor de notificaciones si no existe
    let container = document.getElementById('notification-container');
    if (!container) {
        container = document.createElement('div');
        container.id = 'notification-container';
        document.body.appendChild(container);

        // Añadir estilos al head
        const style = document.createElement('style');
        style.innerHTML = `
            #notification-container {
                position: fixed;
                top: 20px;
                right: 20px;
                z-index: 9999;
                display: flex;
                flex-direction: column;
                gap: 10px;
            }
            .toast-notification {
                padding: 15px 20px;
                border-radius: 8px;
                box-shadow: 0 4px 12px rgba(0,0,0,0.15);
                color: white;
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
                font-size: 14px;
                opacity: 0;
                transform: translateX(100%);
                transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55);
            }
            .toast-notification.show {
                opacity: 1;
                transform: translateX(0);
            }
            .toast-notification.success { background-color: #28a745; }
            .toast-notification.error { background-color: #dc3545; }
            .toast-notification.info { background-color: #17a2b8; }
        `;
        document.head.appendChild(style);
    }

    const notification = document.createElement('div');
    notification.className = `toast-notification ${type}`;
    notification.textContent = message;

    container.appendChild(notification);

    // Trigger the animation
    setTimeout(() => {
        notification.classList.add('show');
    }, 10);

    // Hide and remove the notification after the duration
    setTimeout(() => {
        notification.classList.remove('show');
        setTimeout(() => {
            notification.remove();
            if (container.children.length === 0) {
                container.remove();
            }
        }, 500); // Wait for fade out animation
    }, duration);
}
