pub use manganis::{self, asset};
pub mod theme_variables {
pub const PRIMARY: &str = "#409EFF";
pub const SUCCESS: &str = "#67C23A";
pub const WARNING: &str = "#E6A23C";
pub const DANGER: &str = "#F56C6C";
pub const INFO: &str = "#909399";
pub const TEXT_PRIMARY: &str = "#303133";
pub const TEXT_SECONDARY: &str = "#606266";
pub const TEXT_PLACEHOLDER: &str = "#C0C4CC";
pub const BORDER_BASE: &str = "#DCDFE6";
pub const BORDER_LIGHT: &str = "#E4E7ED";
pub const BORDER_LIGHTER: &str = "#EBEEF5";
pub const BACKGROUND_BASE: &str = "#F5F7FA";
pub const BACKGROUND_WHITE: &str = "#FFFFFF";
pub const BORDER_RADIUS_BASE: &str = "4px";
pub const BORDER_RADIUS_SMALL: &str = "2px";
pub const BORDER_RADIUS_ROUND: &str = "20px";
pub const FONT_SIZE_BASE: &str = "14px";
pub const FONT_SIZE_LARGE: &str = "18px";
pub const FONT_SIZE_SMALL: &str = "12px";
}
pub mod typography {
pub const FONT_FAMILY_BASE: &str = "'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Arial', sans-serif";
pub const FONT_FAMILY_MONO: &str = "'Courier New', Courier, monospace";
pub const LINE_HEIGHT_BASE: f32 = 1.5;
pub const LINE_HEIGHT_HEADING: f32 = 1.2;
}
pub mod spacing {
pub const UNIT: u8 = 4;
pub const XS: u8 = UNIT;
pub const SM: u8 = UNIT * 2;
pub const MD: u8 = UNIT * 4;
pub const LG: u8 = UNIT * 6;
pub const XL: u8 = UNIT * 8;
}
pub mod prebuilt {
}
pub mod class_names {
pub mod button {
pub const BASE: &str = "el-button";
pub const PRIMARY: &str = "el-button--primary";
pub const SUCCESS: &str = "el-button--success";
pub const WARNING: &str = "el-button--warning";
pub const DANGER: &str = "el-button--danger";
pub const INFO: &str = "el-button--info";
pub const LARGE: &str = "el-button--large";
pub const MEDIUM: &str = "el-button--medium";
pub const SMALL: &str = "el-button--small";
pub const MINI: &str = "el-button--mini";
}
pub mod input {
pub const BASE: &str = "el-input";
pub const INNER: &str = "el-input__inner";
pub const LARGE: &str = "el-input--large";
pub const MEDIUM: &str = "el-input--medium";
pub const SMALL: &str = "el-input--small";
pub const MINI: &str = "el-input--mini";
}
pub mod layout {
pub const CONTAINER: &str = "el-container";
pub const HEADER: &str = "el-header";
pub const MAIN: &str = "el-main";
pub const FOOTER: &str = "el-footer";
pub const ASIDE: &str = "el-aside";
pub const ROW: &str = "el-row";
pub const COL: &str = "el-col";
}
}
pub mod helpers {
pub fn css_var(key: &str, value: &str) -> String {
format!("{}: {}", key, value)
}
pub fn css_rule(selector: &str, properties: &[&str]) -> String {
let props = properties.join("; ");
format!("{} {{ {}; }}", selector, props)
}
pub fn css_media(query: &str, rules: &str) -> String {
format!("@media {} {{ {} }}", query, rules)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_theme_constants() {
assert_eq!(theme_variables::PRIMARY, "#409EFF");
assert_eq!(theme_variables::SUCCESS, "#67C23A");
assert_eq!(theme_variables::WARNING, "#E6A23C");
assert_eq!(theme_variables::DANGER, "#F56C6C");
assert_eq!(theme_variables::INFO, "#909399");
}
#[test]
fn test_css_helpers() {
let var = helpers::css_var("--color", "red");
assert_eq!(var, "--color: red");
let rule = helpers::css_rule(".test", &["color: blue", "margin: 0"]);
assert_eq!(rule, ".test { color: blue; margin: 0; }");
let media = helpers::css_media("(max-width: 768px)", ".hide { display: none; }");
assert_eq!(media, "@media (max-width: 768px) { .hide { display: none; } }");
}
}