use styrust::*;
struct Hover<'a>{
id: &'a str,
color: [u8;3],
bg_color: [u8;3],
font_size: f32,
width: f32,
height: f32,
padding: f32,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let hover = Hover {
id: ".btn", color: [200, 255, 255], bg_color: [100, 100, 100],
font_size: 11.0,
width: 200.0,
height: 100.0,
padding: 10.0,
};
let style = hover_style(hover)?;
println!("{}", style);
Ok(())
}
fn hover_style(p: Hover) -> Result<String, Box<dyn std::error::Error>> {
let selector = p.id;
let color = Color::rgb(p.color[0], p.color[1], p.color[2]);
let bg_color = BackgroundColor::rgb(p.bg_color[0], p.bg_color[1], p.bg_color[2]);
let font_size = FontSize::px(p.font_size)?;
let width = Width::px(p.width)?;
let height = Height::px(p.height)?;
let padding = Padding::px(p.padding)?;
let style = css_style!{
selector!(unsafe{$selector}{
text!(color(color),size(font_size),);
bg!(w(width),h(height),p(padding),color(bg_color));
});
};
Ok(style)
}