acton_htmx/template/framework/
mod.rs

1//! Framework template system with XDG-compliant storage
2//!
3//! This module provides runtime-loadable templates for framework-generated HTML
4//! (forms, flash messages, validation errors, error pages, etc.).
5//!
6//! Templates are resolved in order:
7//! 1. User customizations in `$XDG_CONFIG_HOME/acton-htmx/templates/framework/`
8//! 2. Cached defaults in `$XDG_CACHE_HOME/acton-htmx/templates/framework/`
9//! 3. Embedded fallbacks compiled into the binary
10//!
11//! # Example
12//!
13//! ```rust,no_run
14//! use acton_htmx::template::framework::FrameworkTemplates;
15//!
16//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
17//! let templates = FrameworkTemplates::new()?;
18//!
19//! // Render a form input
20//! let html = templates.render("forms/input.html", minijinja::context! {
21//!     input_type => "text",
22//!     name => "email",
23//!     id => "email",
24//! })?;
25//! # Ok(())
26//! # }
27//! ```
28
29mod loader;
30
31pub use loader::{FrameworkTemplateError, FrameworkTemplates};
32
33/// Names of all framework templates
34pub const TEMPLATE_NAMES: &[&str] = &[
35    // Forms
36    "forms/form.html",
37    "forms/field-wrapper.html",
38    "forms/input.html",
39    "forms/textarea.html",
40    "forms/select.html",
41    "forms/checkbox.html",
42    "forms/radio-group.html",
43    "forms/submit-button.html",
44    "forms/help-text.html",
45    "forms/label.html",
46    "forms/csrf-input.html",
47    // Validation
48    "validation/field-errors.html",
49    "validation/validation-summary.html",
50    // Flash messages
51    "flash/container.html",
52    "flash/message.html",
53    // HTMX
54    "htmx/oob-wrapper.html",
55    // Error pages
56    "errors/400.html",
57    "errors/401.html",
58    "errors/403.html",
59    "errors/404.html",
60    "errors/422.html",
61    "errors/500.html",
62];