use crate::locale::L10n; use crate::{AutoDefault, Getters}; /// Nivel de severidad de un [`StatusMessage`]. #[derive(AutoDefault, Clone, Copy, Debug, PartialEq)] pub enum MessageLevel { /// Mensaje informativo para el usuario. #[default] Info, /// Aviso o advertencia para el usuario. Warning, /// Error comunicado al usuario. Error, } /// Notificación amigable para el usuario generada al procesar una petición web. /// /// Representa un mensaje con carácter informativo, una advertencia o un error. A diferencia de /// [`ComponentError`](super::ComponentError), no está ligado a un fallo interno de renderizado, /// puede generarse en cualquier punto del procesamiento de una petición web (manejadores, /// renderizado, lógica de negocio, etc.). /// /// El texto se almacena como [`L10n`] para resolverse con el idioma del contexto en el momento de /// la visualización. /// /// # Ejemplo /// /// ```rust /// # use pagetop::prelude::*; /// // Mensaje informativo con clave traducible. /// let info = StatusMessage::new(MessageLevel::Info, L10n::l("saved-successfully")); /// /// // Aviso con texto literal sin traducción. /// let warn = StatusMessage::new(MessageLevel::Warning, L10n::n("Formulario incompleto.")); /// ``` #[derive(Debug, Getters)] pub struct StatusMessage { /// Nivel de severidad del mensaje. level: MessageLevel, /// Texto del mensaje. text: L10n, } impl StatusMessage { /// Crea un nuevo mensaje de usuario con el nivel y texto indicados. pub fn new(level: MessageLevel, text: L10n) -> Self { StatusMessage { level, text } } }