ferrox_front_ui/
ferrox_theme.rs1use 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}