encre_css/plugins/spacing/
mod.rs

1//! Spacing utilities
2pub mod margin;
3pub mod padding;
4pub mod space_between;
5
6#[cfg(test)]
7mod tests {
8    use crate::{generate, utils::testing::base_config};
9
10    use pretty_assertions::assert_eq;
11
12    #[test]
13    fn margin() {
14        assert_eq!(
15            generate(["m-2"], &base_config()),
16            ".m-2 {
17  margin: 0.5rem;
18}"
19        );
20        assert_eq!(
21            generate(["mt-auto"], &base_config()),
22            ".mt-auto {
23  margin-top: auto;
24}"
25        );
26        assert_eq!(
27            generate(["mx-[2px]"], &base_config()),
28            r".mx-\[2px\] {
29  margin-inline: 2px;
30}"
31        );
32        assert_eq!(
33            generate(["my-[20%]"], &base_config()),
34            r".my-\[20\%\] {
35  margin-block: 20%;
36}"
37        );
38    }
39
40    #[test]
41    fn padding() {
42        assert_eq!(
43            generate(["p-2"], &base_config()),
44            ".p-2 {
45  padding: 0.5rem;
46}"
47        );
48        assert_eq!(
49            generate(["pt-auto"], &base_config()),
50            ".pt-auto {
51  padding-top: auto;
52}"
53        );
54        assert_eq!(
55            generate(["px-[2px]"], &base_config()),
56            r".px-\[2px\] {
57  padding-inline: 2px;
58}"
59        );
60        assert_eq!(
61            generate(["py-[20%]"], &base_config()),
62            r".py-\[20\%\] {
63  padding-block: 20%;
64}"
65        );
66    }
67
68    #[test]
69    fn space_between() {
70        assert_eq!(
71            generate(["space-x-42"], &base_config()),
72            ".space-x-42 > :not(:last-child) {
73  --en-space-x-reverse: 0;
74  margin-inline-start: calc(10.5rem * var(--en-space-x-reverse));
75  margin-inline-end: calc(10.5rem * calc(1 - var(--en-space-x-reverse)));
76}"
77        );
78        assert_eq!(
79            generate(["space-x-[42px]"], &base_config()),
80            r".space-x-\[42px\] > :not(:last-child) {
81  --en-space-x-reverse: 0;
82  margin-inline-start: calc(42px * var(--en-space-x-reverse));
83  margin-inline-end: calc(42px * calc(1 - var(--en-space-x-reverse)));
84}"
85        );
86        assert_eq!(
87            generate(["space-x-reverse"], &base_config()),
88            ".space-x-reverse > :not(:last-child) {
89  --en-space-x-reverse: 1;
90}"
91        );
92        assert_eq!(
93            generate(["space-y-reverse"], &base_config()),
94            ".space-y-reverse > :not(:last-child) {
95  --en-space-y-reverse: 1;
96}"
97        );
98        assert_eq!(
99            generate(["space-y-[12%]"], &base_config()),
100            r".space-y-\[12\%\] > :not(:last-child) {
101  --en-space-y-reverse: 0;
102  margin-block-start: calc(12% * var(--en-space-y-reverse));
103  margin-block-end: calc(12% * calc(1 - var(--en-space-y-reverse)));
104}"
105        );
106    }
107}