/**
 * modules/ui/messages.js — Cadenas en español (sin detalles técnicos al usuario).
 */
(function (g) {
    g.modules = g.modules || {};
    g.modules.ui = g.modules.ui || {};

    var STR = {
        loading: 'Cargando…',
        loginTitle: 'Iniciar sesión',
        registerTitle: 'Crear cuenta',
        recoverTitle: 'Recuperar acceso',
        gateBrandTitle: 'Acceso seguro',
        tabLogin: 'Entrar',
        tabRegister: 'Registro',
        tabRecover: 'Recuperar',
        methodLabel: 'Método',
        methodPassword: 'Contraseña',
        methodPin: 'PIN',
        methodPattern: 'Patrón',
        methodWebauthn: 'Huella o rostro',
        patternHintLogin: 'Introduce la secuencia con números 1-9 (ej.: 1478).',
        patternLabelProfile: 'Patrón (números 1-9)',
        registerBioLink: 'Registrar huella en este dispositivo',
        email: 'Correo',
        phone: 'Teléfono',
        password: 'Contraseña',
        pin: 'PIN',
        pattern: 'Patrón',
        biometric: 'Huella o rostro',
        identifier: 'Correo o teléfono',
        loginBtn: 'Entrar',
        registerBtn: 'Siguiente',
        finishRegister: 'Finalizar registro',
        recoverBtn: 'Restablecer',
        cancel: 'Cancelar',
        save: 'Guardar',
        back: 'Atrás',
        useAltMethod: 'Usar otro método',
        forgot: '¿No puedes entrar?',
        publicRegisterOff: 'La creación de cuentas está desactivada.',
        sessionRequired: 'Debes iniciar sesión para continuar.',
        logout: 'Salir',
        adminPanel: 'Administración',
        requireLoginLabel: 'Exigir inicio de sesión para abrir el escritorio',
        publicSignupLabel: 'Permitir crear cuenta desde la pantalla de acceso',
        recoveryHint: 'Si guardaste un código de recuperación al registrarte, úsalo aquí.',
        recoveryCode: 'Código de recuperación',
        newPassword: 'Nueva contraseña',
        permTitle: 'Permisos de carpeta',
        permRequireBio: 'Pedir huella o rostro para entrar en esta carpeta',
        permRead: 'Leer (listar)',
        permWrite: 'Escribir',
        permDelete: 'Eliminar',
        permRename: 'Renombrar',
        permSaved: 'Permisos guardados.',
        permNeedLogin: 'Inicia sesión para desbloquear esta carpeta.',
        permNoBioRegistered: 'Tu cuenta no tiene huella registrada. Configúrala en tu perfil.',
        permBioFailed: 'No se pudo verificar la huella. Prueba otra vez o usa otro método.',
        profileTitle: 'Mi cuenta',
        changePw: 'Nueva contraseña',
        saveProfile: 'Guardar cambios',
        loginTypeLabel: 'Método de acceso preferido',
        permMenu: 'Permisos…',
        errGeneric: 'Algo salió mal. Inténtalo de nuevo.',
        errBadCredentials: 'Datos incorrectos.',
        errNotFound: 'No encontramos esa cuenta.',
        errWeakPassword: 'La contraseña es demasiado corta.',
        errPin: 'PIN inválido.',
        errPattern: 'Patrón incompleto.',
    };

    g.modules.ui.messages = {
        text: function (key) {
            return STR[key] || key;
        },

        escape: function (s) {
            var d = document.createElement('div');
            d.textContent = String(s == null ? '' : s);
            return d.innerHTML;
        },

        alert: function (msg, type) {
            var s = String(msg || STR.errGeneric);
            try {
                if (window.appDialog && typeof window.appDialog.alert === 'function') {
                    var opts = type ? { type: type } : undefined;
                    void window.appDialog.alert(s, opts).catch(function () { window.alert(s); });
                    return;
                }
            } catch (_) {}
            window.alert(s);
        },

        toast: function (msg, type) {
            var text = String(msg);
            try {
                if (typeof window.showToast === 'function') {
                    window.showToast(text, 2600, type);
                    return;
                }
            } catch (_) {}
            var resolvedType = type;
            if (!resolvedType && window.appDialog && typeof window.appDialog.detectFeedbackType === 'function') {
                resolvedType = window.appDialog.detectFeedbackType(text, 'alert');
            }
            resolvedType = resolvedType || 'info';
            var iconClass = (window.appDialog && typeof window.appDialog.feedbackIconClass === 'function')
                ? window.appDialog.feedbackIconClass(resolvedType)
                : 'fas fa-circle-info';
            var el = document.createElement('div');
            el.className = 'auth-toast';
            el.dataset.type = resolvedType;
            var iconEl = document.createElement('i');
            iconEl.className = iconClass + ' auth-toast-icon';
            iconEl.setAttribute('aria-hidden', 'true');
            var textEl = document.createElement('span');
            textEl.className = 'auth-toast-text';
            textEl.textContent = text;
            el.appendChild(iconEl);
            el.appendChild(textEl);
            document.body.appendChild(el);
            setTimeout(function () {
                el.classList.add('auth-toast-out');
                setTimeout(function () {
                    if (el.parentNode) el.parentNode.removeChild(el);
                }, 400);
            }, 2600);
        },
    };
})(typeof window !== 'undefined' ? window : this);
