Skip to main content

ferrox_front_ui/
ferrox_theme.rs

1use ferrox_front_core::dom::{div, DomBuilder};
2
3pub enum ThemeMode {
4    Cyber,
5    DarkSlate,
6    Corporate,
7}
8
9impl ThemeMode {
10    pub fn css_vars(&self) -> &'static str {
11        match self {
12            ThemeMode::Cyber => "--bg-glass: rgba(10, 10, 20, 0.7); --border-glass: 1px solid rgba(0, 255, 255, 0.2); --text-primary: #e0f7fa;",
13            ThemeMode::DarkSlate => "--bg-glass: rgba(30, 41, 59, 0.7); --border-glass: 1px solid rgba(148, 163, 184, 0.2); --text-primary: #f8fafc;",
14            ThemeMode::Corporate => "--bg-glass: rgba(255, 255, 255, 0.8); --border-glass: 1px solid rgba(0, 0, 0, 0.1); --text-primary: #1e293b;",
15        }
16    }
17}
18
19pub fn ferrox_theme_provider(theme: ThemeMode, children: Vec<DomBuilder>) -> DomBuilder {
20    let mut container = div()
21        .attr("class", "ferrox-theme-root")
22        .attr("style", &format!("min-height: 100vh; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; {}", theme.css_vars()));
23    
24    for child in children {
25        container = container.child(child);
26    }
27    
28    container
29}