1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use leptos::*;
use leptos_meta::*;
use regex::Regex;
use stylist::Result;

pub type Children = Box<dyn FnOnce(Scope) -> Fragment>;

#[component]
pub fn Styled(cx: Scope, styles: Result<stylist::Style>, children: Children) -> impl IntoView {
    let style = styles.unwrap();
    let class_name = style.get_class_name().to_owned();
    let style_string = style.get_style_str().to_owned();

    let re = Regex::new(r"(\.stylist-\w+) (\w+)").unwrap();

    let result = re.replace_all(&style_string, "$2$1").to_string();

    view! { cx,
        class=class_name,
        <Style>{result}</Style>
        <div>
            {children(cx)}
        </div>
    }
}