euv-example 0.28.0

An example application demonstrating the euv UI framework with reactive signals, custom components, and WebAssembly.
Documentation
/// The HTML id for the name input element.
pub(crate) const KEEP_ALIVE_NAME_ID: &str = "keep-alive-name";

/// The HTML id for the email input element.
pub(crate) const KEEP_ALIVE_EMAIL_ID: &str = "keep-alive-email";

/// The HTML id for the message textarea element.
pub(crate) const KEEP_ALIVE_MESSAGE_ID: &str = "keep-alive-message";

/// The HTML name attribute for the name input element.
pub(crate) const KEEP_ALIVE_NAME_NAME: &str = "name";

/// The HTML name attribute for the email input element.
pub(crate) const KEEP_ALIVE_EMAIL_NAME: &str = "email";

/// The HTML name attribute for the message textarea element.
pub(crate) const KEEP_ALIVE_MESSAGE_NAME: &str = "message";

/// The HTML input type for text.
pub(crate) const KEEP_ALIVE_TEXT_TYPE: &str = "text";

/// The HTML input type for email.
pub(crate) const KEEP_ALIVE_EMAIL_TYPE: &str = "email";

/// The HTML autocomplete attribute value for name.
pub(crate) const KEEP_ALIVE_AUTOCOMPLETE_NAME: &str = "name";

/// The HTML autocomplete attribute value for email.
pub(crate) const KEEP_ALIVE_AUTOCOMPLETE_EMAIL: &str = "email";

/// The HTML autocomplete attribute value for off.
pub(crate) const KEEP_ALIVE_AUTOCOMPLETE_OFF: &str = "off";

/// The HTML placeholder for the name input element.
pub(crate) const KEEP_ALIVE_NAME_PLACEHOLDER: &str = "Enter your name...";

/// The HTML placeholder for the email input element.
pub(crate) const KEEP_ALIVE_EMAIL_PLACEHOLDER: &str = "Enter your email...";

/// The HTML placeholder for the message textarea element.
pub(crate) const KEEP_ALIVE_MESSAGE_PLACEHOLDER: &str = "Write a message...";

/// The HTML rows attribute for the message textarea element.
pub(crate) const KEEP_ALIVE_MESSAGE_ROWS: &str = "3";

/// The description text for the keep-alive "How It Works" section.
pub(crate) const KEEP_ALIVE_DESCRIPTION: &str = "In euv, using match or if to switch between components destroys and recreates them, resetting all hook state. To preserve state (keep-alive), render all tabs simultaneously and toggle visibility with CSS display: none / block. This way, all DynamicNodes and their HookContexts stay alive — signals retain values, intervals keep running, and form inputs are preserved. Watch the console to see that the counter and timer continue working even when their tab is hidden.";