1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
//! 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)
/// Action system and event handling APIs.
pub use hyperchad_actions as actions;
/// Application builder and runtime APIs.
pub use hyperchad_app as app;
/// Color management and theming APIs.
pub use hyperchad_color as color;
/// JavaScript bundling utilities for web targets.
pub use hyperchad_js_bundler as js_bundler;
/// Markdown parsing and rendering APIs.
pub use hyperchad_markdown as markdown;
/// Base renderer traits and shared renderer APIs.
pub use hyperchad_renderer as renderer;
/// Egui desktop renderer APIs.
pub use hyperchad_renderer_egui as renderer_egui;
/// FLTK desktop renderer APIs.
pub use hyperchad_renderer_fltk as renderer_fltk;
/// Base HTML renderer APIs.
pub use hyperchad_renderer_html as renderer_html;
/// Actix web server renderer APIs.
pub use hyperchad_renderer_html_actix as renderer_html_actix;
/// CDN-hosted HTML renderer APIs.
pub use hyperchad_renderer_html_cdn as renderer_html_cdn;
/// HTTP server renderer APIs.
pub use hyperchad_renderer_html_http as renderer_html_http;
/// AWS Lambda HTML renderer APIs.
pub use hyperchad_renderer_html_lambda as renderer_html_lambda;
/// Generic web server HTML renderer APIs.
pub use hyperchad_renderer_html_web_server as renderer_html_web_server;
/// Vanilla JavaScript client-side renderer APIs.
pub use hyperchad_renderer_vanilla_js as renderer_vanilla_js;
/// Routing APIs for application navigation.
pub use hyperchad_router as router;
/// Shared state runtime APIs.
pub use hyperchad_shared_state as shared_state;
/// Shared state bridge APIs for `HyperChad` route integration.
pub use hyperchad_shared_state_bridge as shared_state_bridge;
/// Shared state protocol model APIs.
pub use hyperchad_shared_state_models as shared_state_models;
/// Shared state transport APIs.
pub use hyperchad_shared_state_transport as shared_state_transport;
/// State persistence APIs.
pub use hyperchad_state as state;
/// Template macros and UI composition APIs.
pub use hyperchad_template as template;
/// Transformer APIs for container and element processing.
pub use hyperchad_transformer as transformer;
/// Shared data models for transformer APIs.
pub use hyperchad_transformer_models as transformer_models;
/// Testing and simulation utilities.
pub use hyperchad_simulator as simulator;
/// Shared testing helpers and utilities.
pub use hyperchad_test_utils as test_utils;