polished-css 0.1.0

Craft polished CSS in Rust following CSSWG standards. Achieve type-safety, modularity, atomicity, and ergonomic styling for front-end applications.
Documentation
crate::create_property!(
    TextDecoration,
    display = "",
    atomic = "txt-d",
    custom = false,
    data_type = "",
    initial_value = None,
    keywords = "none",
);

crate::create_property!(
    TextDecorationColor,
    display = "",
    atomic = "txt-d-c",
    custom = false,
    data_type = "<color>",
    initial_value = CurrentColor,
    keywords = "currentColor",
);

crate::create_property!(
    TextDecorationLine,
    display = "",
    atomic = "txt-d-l",
    custom = false,
    data_type = "",
    initial_value = None,
    keywords = "none,underline,overline,line-through,blink",
);

crate::create_property!(
    TextDecorationSkipLink,
    display = "",
    atomic = "txt-d-sl",
    custom = false,
    data_type = "",
    initial_value = Auto,
    keywords = "none,auto,all",
);

crate::create_property!(
    TextDecorationStyle,
    display = "",
    atomic = "txt-d-s",
    custom = false,
    data_type = "",
    initial_value = Solid,
    keywords = "solid,double,dotted,dashed,wavy",
);

crate::create_property!(
    TextDecorationThickness,
    display = "",
    atomic = "txt-d-t",
    custom = false,
    data_type = "<length-percentage>",
    initial_value = Auto,
    keywords = "auto,from-front",
);

#[cfg(test)]
mod test {
    #[test]
    fn color() {
        let name = "text-decoration-color";
        crate::test_property_initial_value!(TextDecorationColor, CurrentColor);
        crate::test_global_keywords!(TextDecorationColor, name);
        crate::test_function_var!(TextDecorationColor, name);
        #[cfg(feature = "atomic")]
        crate::test_atomic_property!(TextDecorationColor, "txt-d-c");
    }

    #[test]
    fn line() {
        let name = "text-decoration-line";
        crate::test_property_initial_value!(TextDecorationLine, None);
        crate::test_global_keywords!(TextDecorationLine, name);
        crate::test_function_var!(TextDecorationLine, name);
        #[cfg(feature = "atomic")]
        crate::test_atomic_property!(TextDecorationLine, "txt-d-l");
    }

    #[test]
    fn skip_link() {
        let name = "text-decoration-skip-link";
        crate::test_property_initial_value!(TextDecorationSkipLink, Auto);
        crate::test_global_keywords!(TextDecorationSkipLink, name);
        crate::test_function_var!(TextDecorationSkipLink, name);
        #[cfg(feature = "atomic")]
        crate::test_atomic_property!(TextDecorationSkipLink, "txt-d-sl");
    }

    #[test]
    fn style() {
        let name = "text-decoration-style";
        crate::test_property_initial_value!(TextDecorationStyle, Solid);
        crate::test_global_keywords!(TextDecorationStyle, name);
        crate::test_function_var!(TextDecorationStyle, name);
        #[cfg(feature = "atomic")]
        crate::test_atomic_property!(TextDecorationStyle, "txt-d-s");
    }

    #[test]
    fn thickness() {
        let name = "text-decoration-thickness";
        crate::test_property_initial_value!(TextDecorationThickness, Auto);
        crate::test_global_keywords!(TextDecorationThickness, name);
        crate::test_function_var!(TextDecorationThickness, name);
        #[cfg(feature = "atomic")]
        crate::test_atomic_property!(TextDecorationThickness, "txt-d-t");
    }
}