hyperchad 0.2.0

HyperChad package
//! A template-based UI framework for building cross-platform applications.
//!
//! `HyperChad` enables developers to write UI templates once and deploy across desktop
//! (Egui, FLTK), web (HTML, Vanilla JS), and server-side (Actix, Lambda) environments.
//!
//! # Features
//!
//! * **Multi-Renderer Architecture**: Support for Egui, FLTK, HTML, Vanilla JS, and server-side rendering
//! * **Template-Based UI**: Build interfaces using the `container!` macro system
//! * **Routing System**: Async router with navigation support
//! * **Action System**: Event handling and data flow management
//! * **State Persistence**: Key-value state store with optional `SQLite` persistence
//! * **Color Management**: Consistent theming across all renderers
//!
//! # Examples
//!
//! ```rust,no_run
//! # #[cfg(all(feature = "app", feature = "router", feature = "template"))]
//! # {
//! use hyperchad::app::{App, AppBuilder};
//! use hyperchad::router::{Router, RoutePath, RouteRequest};
//! use hyperchad::template::container;
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! let router = Router::new()
//!     .with_route(RoutePath::Literal("/".to_string()), |_req: RouteRequest| async move {
//!         let content = container! {
//!             div {
//!                 h1 { "Welcome to HyperChad" }
//!                 button { "Click Me" }
//!             }
//!         };
//!         content
//!     });
//!
//! let app = AppBuilder::new()
//!     .with_title("My App".to_string())
//!     .with_router(router)
//!     .build_default()?;
//!
//! app.run()?;
//! # Ok(())
//! # }
//! # }
//! ```
//!
//! # Modules
//!
//! The crate re-exports several sub-crates as modules:
//!
//! ## Core Modules
//!
//! * `actions` - Event handling and action system (requires `actions` feature)
//! * `app` - Application builder and runtime (requires `app` feature)
//! * `color` - Color management and theming (requires `color` feature)
//! * `router` - Routing functionality for navigation (requires `router` feature)
//! * `shared_state` - Shared state runtime APIs (requires `shared-state` feature)
//! * `shared_state_bridge` - `HyperChad` routing bridge APIs (requires `shared-state-bridge` feature)
//! * `shared_state_models` - Shared state protocol model APIs (requires `shared-state-models` feature)
//! * `shared_state_transport` - Shared state transport APIs (requires `shared-state-transport` feature)
//! * `shared_state_transport` adapter features:
//!   - `shared-state-transport-adapter-ws-json`
//!   - `shared-state-transport-adapter-sse-post-json`
//! * `state` - State persistence system with optional `SQLite` backend (requires `state` feature)
//! * `template` - Template macro system for building UI components (requires `template` feature)
//! * `transformer` - Container and element types for UI transformations (requires `transformer` feature)
//! * `transformer_models` - Data models for transformers (requires `transformer-models` feature)
//!
//! ## Content Modules
//!
//! * `markdown` - Markdown parsing and rendering support (requires `markdown` feature)
//!
//! ## Renderer Modules
//!
//! * `renderer` - Base renderer traits and shared functionality (requires `renderer` feature)
//! * `renderer_egui` - Egui desktop renderer implementation (requires `renderer-egui` feature)
//! * `renderer_fltk` - FLTK desktop renderer implementation (requires `renderer-fltk` feature)
//! * `renderer_html` - Base HTML rendering support (requires `renderer-html` feature)
//! * `renderer_html_actix` - Actix web server renderer (requires `renderer-html-actix` feature)
//! * `renderer_html_cdn` - CDN-hosted HTML renderer (requires `renderer-html-cdn` feature)
//! * `renderer_html_http` - HTTP server renderer (requires `renderer-html-http` feature)
//! * `renderer_html_lambda` - AWS Lambda serverless renderer (requires `renderer-html-lambda` feature)
//! * `renderer_html_web_server` - Generic web server renderer (requires `renderer-html-web-server` feature)
//! * `renderer_vanilla_js` - Vanilla JavaScript client-side renderer (requires `renderer-vanilla-js` feature)
//!
//! ## Build and Development Modules
//!
//! * `js_bundler` - JavaScript bundling utilities for web targets (requires `js-bundler` feature)
//! * `simulator` - Testing and simulation utilities (requires `simulator` feature)
//! * `test_utils` - Shared testing utilities and helpers (requires `test-utils` feature)

#![cfg_attr(feature = "fail-on-warnings", deny(warnings))]
#![warn(clippy::all, clippy::pedantic, clippy::nursery, clippy::cargo)]
#![allow(clippy::multiple_crate_versions)]

/// Action system and event handling APIs.
#[cfg(feature = "actions")]
pub use hyperchad_actions as actions;
/// Application builder and runtime APIs.
#[cfg(feature = "app")]
pub use hyperchad_app as app;
/// Color management and theming APIs.
#[cfg(feature = "color")]
pub use hyperchad_color as color;
/// JavaScript bundling utilities for web targets.
#[cfg(feature = "js-bundler")]
pub use hyperchad_js_bundler as js_bundler;
/// Markdown parsing and rendering APIs.
#[cfg(feature = "markdown")]
pub use hyperchad_markdown as markdown;
/// Base renderer traits and shared renderer APIs.
#[cfg(feature = "renderer")]
pub use hyperchad_renderer as renderer;
/// Egui desktop renderer APIs.
#[cfg(feature = "renderer-egui")]
pub use hyperchad_renderer_egui as renderer_egui;
/// FLTK desktop renderer APIs.
#[cfg(feature = "renderer-fltk")]
pub use hyperchad_renderer_fltk as renderer_fltk;
/// Base HTML renderer APIs.
#[cfg(feature = "renderer-html")]
pub use hyperchad_renderer_html as renderer_html;
/// Actix web server renderer APIs.
#[cfg(feature = "renderer-html-actix")]
pub use hyperchad_renderer_html_actix as renderer_html_actix;
/// CDN-hosted HTML renderer APIs.
#[cfg(feature = "renderer-html-cdn")]
pub use hyperchad_renderer_html_cdn as renderer_html_cdn;
/// HTTP server renderer APIs.
#[cfg(feature = "renderer-html-http")]
pub use hyperchad_renderer_html_http as renderer_html_http;
/// AWS Lambda HTML renderer APIs.
#[cfg(feature = "renderer-html-lambda")]
pub use hyperchad_renderer_html_lambda as renderer_html_lambda;
/// Generic web server HTML renderer APIs.
#[cfg(feature = "renderer-html-web-server")]
pub use hyperchad_renderer_html_web_server as renderer_html_web_server;
/// Vanilla JavaScript client-side renderer APIs.
#[cfg(feature = "renderer-vanilla-js")]
pub use hyperchad_renderer_vanilla_js as renderer_vanilla_js;
/// Routing APIs for application navigation.
#[cfg(feature = "router")]
pub use hyperchad_router as router;
/// Shared state runtime APIs.
#[cfg(feature = "shared-state")]
pub use hyperchad_shared_state as shared_state;
/// Shared state bridge APIs for `HyperChad` route integration.
#[cfg(feature = "shared-state-bridge")]
pub use hyperchad_shared_state_bridge as shared_state_bridge;
/// Shared state protocol model APIs.
#[cfg(feature = "shared-state-models")]
pub use hyperchad_shared_state_models as shared_state_models;
/// Shared state transport APIs.
#[cfg(feature = "shared-state-transport")]
pub use hyperchad_shared_state_transport as shared_state_transport;
/// State persistence APIs.
#[cfg(feature = "state")]
pub use hyperchad_state as state;
/// Template macros and UI composition APIs.
#[cfg(feature = "template")]
pub use hyperchad_template as template;
/// Transformer APIs for container and element processing.
#[cfg(feature = "transformer")]
pub use hyperchad_transformer as transformer;
/// Shared data models for transformer APIs.
#[cfg(feature = "transformer-models")]
pub use hyperchad_transformer_models as transformer_models;

/// Testing and simulation utilities.
#[cfg(feature = "simulator")]
pub use hyperchad_simulator as simulator;
/// Shared testing helpers and utilities.
#[cfg(feature = "test-utils")]
pub use hyperchad_test_utils as test_utils;