encre_css/plugins/effect/
mod.rs1pub mod background_blend_mode;
3pub mod box_shadow;
4pub mod box_shadow_color;
5pub mod text_shadow;
6pub mod text_shadow_color;
7pub mod mix_blend_mode;
8pub mod opacity;
9
10#[cfg(test)]
11mod tests {
12 use crate::{generate, utils::testing::base_config};
13
14 use pretty_assertions::assert_eq;
15
16 #[test]
17 fn background_blend_mode() {
18 assert_eq!(
19 generate(["bg-blend-multiply"], &base_config()),
20 ".bg-blend-multiply {
21 background-blend-mode: multiply;
22}"
23 );
24 assert_eq!(
25 generate(["bg-blend-luminosity"], &base_config()),
26 ".bg-blend-luminosity {
27 background-blend-mode: luminosity;
28}"
29 );
30 }
31
32 #[test]
33 fn box_shadow() {
34 assert_eq!(
35 generate(["shadow-sm"], &base_config()),
36 ".shadow-sm {
37 --en-shadow: 0 1px 3px 0 var(--en-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--en-shadow-color, rgb(0 0 0 / 0.1));
38 box-shadow: var(--en-inset-shadow, 0 0 #0000), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow);
39}"
40 );
41 assert_eq!(
42 generate(["shadow-2xl"], &base_config()),
43 ".shadow-2xl {
44 --en-shadow: 0 25px 50px -12px var(--en-shadow-color, rgb(0 0 0 / 0.25));
45 box-shadow: var(--en-inset-shadow, 0 0 #0000), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow);
46}"
47 );
48 assert_eq!(
49 generate(["shadow-none"], &base_config()),
50 ".shadow-none {
51 --en-shadow: 0 0 #0000;
52 box-shadow: var(--en-inset-shadow, 0 0 #0000), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow);
53}"
54 );
55 assert_eq!(
56 generate(["shadow-[12px_3rem_12rem_2em_#f00]"], &base_config()),
57 r".shadow-\[12px_3rem_12rem_2em_\#f00\] {
58 --en-shadow: 12px 3rem 12rem 2em var(--en-shadow-color, #f00);
59 box-shadow: var(--en-inset-shadow, 0 0 #0000), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow);
60}"
61 );
62
63 assert_eq!(
64 generate(["inset-shadow-sm"], &base_config()),
65 r".inset-shadow-sm {
66 --en-inset-shadow: 0 2px 4px var(--en-inset-shadow-color, rgb(0 0 0 / 0.05));
67 box-shadow: var(--en-inset-shadow), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow, 0 0 #0000);
68}"
69 );
70
71 assert_eq!(
72 generate(["inset-shadow-[0_2px_2px_rgb(0_0_0_/_0.1)]"], &base_config()),
73 r".inset-shadow-\[0_2px_2px_rgb\(0_0_0_\/_0\.1\)\] {
74 --en-inset-shadow: 0 2px 2px var(--en-inset-shadow-color, rgb(0 0 0 / 0.1));
75 box-shadow: var(--en-inset-shadow), var(--en-inset-ring-shadow, 0 0 #0000), var(--en-ring-offset-shadow, 0 0 #0000), var(--en-ring-shadow, 0 0 #0000), var(--en-shadow, 0 0 #0000);
76}"
77 );
78 }
79
80 #[test]
81 fn box_shadow_color() {
82 assert_eq!(
83 generate(["shadow-red-400"], &base_config()),
84 ".shadow-red-400 {
85 --en-shadow-color: oklch(70.4% .191 22.216);
86}"
87 );
88 assert_eq!(
89 generate(["shadow-[rgb(12,12,12)]"], &base_config()),
90 r".shadow-\[rgb\(12\,12\,12\)\] {
91 --en-shadow-color: rgb(12,12,12);
92}"
93 );
94 assert_eq!(
95 generate(["inset-shadow-red-400"], &base_config()),
96 ".inset-shadow-red-400 {
97 --en-inset-shadow-color: oklch(70.4% .191 22.216);
98}"
99 );
100 }
101
102 #[test]
103 fn text_shadow() {
104 assert_eq!(
105 generate(["text-shadow-2xs"], &base_config()),
106 ".text-shadow-2xs {
107 text-shadow: 0px 1px 0px var(--en-text-shadow-color, rgb(0 0 0 / 0.15));
108}"
109 );
110 assert_eq!(
111 generate(["text-shadow-sm"], &base_config()),
112 ".text-shadow-sm {
113 text-shadow: 0px 1px 0px var(--en-text-shadow-color, rgb(0 0 0 / 0.075)), 0px 1px 1px var(--en-text-shadow-color, rgb(0 0 0 / 0.075)), 0px 2px 2px var(--en-text-shadow-color, rgb(0 0 0 / 0.075));
114}"
115 );
116 assert_eq!(
117 generate(["text-shadow-none"], &base_config()),
118 ".text-shadow-none {
119 text-shadow: none;
120}"
121 );
122 assert_eq!(
123 generate(["text-shadow-[12px_3rem_12rem_#f00]"], &base_config()),
124 r".text-shadow-\[12px_3rem_12rem_\#f00\] {
125 text-shadow: 12px 3rem 12rem var(--en-text-shadow-color, #f00);
126}"
127 );
128 }
129
130 #[test]
131 fn text_shadow_color() {
132 assert_eq!(
133 generate(["text-shadow-red-400"], &base_config()),
134 ".text-shadow-red-400 {
135 --en-text-shadow-color: oklch(70.4% .191 22.216);
136}"
137 );
138 assert_eq!(
139 generate(["text-shadow-[rgb(12,12,12)]"], &base_config()),
140 r".text-shadow-\[rgb\(12\,12\,12\)\] {
141 --en-text-shadow-color: rgb(12,12,12);
142}"
143 );
144 }
145
146 #[test]
147 fn mix_blend_mode() {
148 assert_eq!(
149 generate(["mix-blend-multiply"], &base_config()),
150 ".mix-blend-multiply {
151 mix-blend-mode: multiply;
152}"
153 );
154 assert_eq!(
155 generate(["mix-blend-plus-lighter"], &base_config()),
156 ".mix-blend-plus-lighter {
157 mix-blend-mode: plus-lighter;
158}"
159 );
160 }
161
162 #[test]
163 fn opacity() {
164 assert_eq!(
165 generate(["opacity-12"], &base_config()),
166 ".opacity-12 {
167 opacity: 0.12;
168}"
169 );
170 }
171}