encre_css/plugins/sizing/
mod.rs

1//! Sizing utilities
2pub mod height;
3pub mod max_height;
4pub mod max_width;
5pub mod min_height;
6pub mod min_width;
7pub mod width;
8
9#[cfg(test)]
10mod tests {
11    use crate::{generate, utils::testing::base_config};
12
13    use pretty_assertions::assert_eq;
14
15    #[test]
16    fn height() {
17        assert_eq!(
18            generate(["h-px"], &base_config()),
19            ".h-px {
20  height: 1px;
21}"
22        );
23        assert_eq!(
24            generate(["h-2.5"], &base_config()),
25            r".h-2\.5 {
26  height: 0.625rem;
27}"
28        );
29        assert_eq!(
30            generate(["h-60"], &base_config()),
31            ".h-60 {
32  height: 15rem;
33}"
34        );
35        assert_eq!(
36            generate(["-h-60"], &base_config()),
37            ".-h-60 {
38  height: -15rem;
39}"
40        );
41        assert_eq!(
42            generate(["h-auto"], &base_config()),
43            ".h-auto {
44  height: auto;
45}"
46        );
47        assert_eq!(
48            generate(["h-1/3"], &base_config()),
49            r".h-1\/3 {
50  height: 33.333333%;
51}"
52        );
53        assert_eq!(
54            generate(["-h-2/3"], &base_config()),
55            r".-h-2\/3 {
56  height: -66.666667%;
57}"
58        );
59        assert_eq!(
60            generate(["h-full"], &base_config()),
61            ".h-full {
62  height: 100%;
63}"
64        );
65        assert_eq!(
66            generate(["h-screen"], &base_config()),
67            ".h-screen {
68  height: 100vh;
69}"
70        );
71        assert_eq!(
72            generate(["h-lvh"], &base_config()),
73            ".h-lvh {
74  height: 100lvh;
75}"
76        );
77        assert_eq!(
78            generate(["h-fit"], &base_config()),
79            ".h-fit {
80  height: fit-content;
81}"
82        );
83        assert_eq!(
84            generate(["h-[32.555rem]"], &base_config()),
85            r".h-\[32\.555rem\] {
86  height: 32.555rem;
87}"
88        );
89        assert_eq!(
90            generate(["h-[10%]"], &base_config()),
91            r".h-\[10\%\] {
92  height: 10%;
93}"
94        );
95    }
96
97    #[test]
98    fn max_height() {
99        assert_eq!(
100            generate(["max-h-px"], &base_config()),
101            ".max-h-px {
102  max-height: 1px;
103}"
104        );
105        assert_eq!(
106            generate(["max-h-2.5"], &base_config()),
107            r".max-h-2\.5 {
108  max-height: 0.625rem;
109}"
110        );
111        assert_eq!(
112            generate(["max-h-60"], &base_config()),
113            ".max-h-60 {
114  max-height: 15rem;
115}"
116        );
117        assert_eq!(
118            generate(["-max-h-60"], &base_config()),
119            ".-max-h-60 {
120  max-height: -15rem;
121}"
122        );
123        assert_eq!(
124            generate(["max-h-auto"], &base_config()),
125            ".max-h-auto {
126  max-height: auto;
127}"
128        );
129        assert_eq!(
130            generate(["max-h-none"], &base_config()),
131            ".max-h-none {
132  max-height: none;
133}"
134        );
135        assert_eq!(
136            generate(["max-h-1/3"], &base_config()),
137            r".max-h-1\/3 {
138  max-height: 33.333333%;
139}"
140        );
141        assert_eq!(
142            generate(["-max-h-2/3"], &base_config()),
143            r".-max-h-2\/3 {
144  max-height: -66.666667%;
145}"
146        );
147        assert_eq!(
148            generate(["max-h-full"], &base_config()),
149            ".max-h-full {
150  max-height: 100%;
151}"
152        );
153        assert_eq!(
154            generate(["max-h-screen"], &base_config()),
155            ".max-h-screen {
156  max-height: 100vh;
157}"
158        );
159        assert_eq!(
160            generate(["max-h-lvh"], &base_config()),
161            ".max-h-lvh {
162  max-height: 100lvh;
163}"
164        );
165        assert_eq!(
166            generate(["max-h-fit"], &base_config()),
167            ".max-h-fit {
168  max-height: fit-content;
169}"
170        );
171        assert_eq!(
172            generate(["max-h-[32.555rem]"], &base_config()),
173            r".max-h-\[32\.555rem\] {
174  max-height: 32.555rem;
175}"
176        );
177        assert_eq!(
178            generate(["max-h-[10%]"], &base_config()),
179            r".max-h-\[10\%\] {
180  max-height: 10%;
181}"
182        );
183    }
184
185    #[test]
186    fn max_width() {
187        assert_eq!(
188            generate(["max-w-6xl"], &base_config()),
189            ".max-w-6xl {
190  max-width: 72rem;
191}"
192        );
193        assert_eq!(
194            generate(["max-w-prose"], &base_config()),
195            ".max-w-prose {
196  max-width: 65ch;
197}"
198        );
199        assert_eq!(
200            generate(["max-w-screen-xl"], &base_config()),
201            ".max-w-screen-xl {
202  max-width: 1280px;
203}"
204        );
205        assert_eq!(
206            generate(["max-w-px"], &base_config()),
207            ".max-w-px {
208  max-width: 1px;
209}"
210        );
211        assert_eq!(
212            generate(["max-w-2.5"], &base_config()),
213            r".max-w-2\.5 {
214  max-width: 0.625rem;
215}"
216        );
217        assert_eq!(
218            generate(["max-w-60"], &base_config()),
219            ".max-w-60 {
220  max-width: 15rem;
221}"
222        );
223        assert_eq!(
224            generate(["-max-w-60"], &base_config()),
225            ".-max-w-60 {
226  max-width: -15rem;
227}"
228        );
229        assert_eq!(
230            generate(["max-w-none"], &base_config()),
231            ".max-w-none {
232  max-width: none;
233}"
234        );
235        assert_eq!(
236            generate(["max-w-1/3"], &base_config()),
237            r".max-w-1\/3 {
238  max-width: 33.333333%;
239}"
240        );
241        assert_eq!(
242            generate(["-max-w-2/3"], &base_config()),
243            r".-max-w-2\/3 {
244  max-width: -66.666667%;
245}"
246        );
247        assert_eq!(
248            generate(["max-w-full"], &base_config()),
249            ".max-w-full {
250  max-width: 100%;
251}"
252        );
253        assert_eq!(
254            generate(["max-w-screen"], &base_config()),
255            ".max-w-screen {
256  max-width: 100vw;
257}"
258        );
259        assert_eq!(
260            generate(["max-w-fit"], &base_config()),
261            ".max-w-fit {
262  max-width: fit-content;
263}"
264        );
265        assert_eq!(
266            generate(["max-w-[32.555rem]"], &base_config()),
267            r".max-w-\[32\.555rem\] {
268  max-width: 32.555rem;
269}"
270        );
271        assert_eq!(
272            generate(["max-w-[10%]"], &base_config()),
273            r".max-w-\[10\%\] {
274  max-width: 10%;
275}"
276        );
277    }
278
279    #[test]
280    fn min_height() {
281        assert_eq!(
282            generate(["min-h-px"], &base_config()),
283            ".min-h-px {
284  min-height: 1px;
285}"
286        );
287        assert_eq!(
288            generate(["min-h-2.5"], &base_config()),
289            r".min-h-2\.5 {
290  min-height: 0.625rem;
291}"
292        );
293        assert_eq!(
294            generate(["min-h-60"], &base_config()),
295            ".min-h-60 {
296  min-height: 15rem;
297}"
298        );
299        assert_eq!(
300            generate(["-min-h-60"], &base_config()),
301            ".-min-h-60 {
302  min-height: -15rem;
303}"
304        );
305        assert_eq!(
306            generate(["min-h-auto"], &base_config()),
307            ".min-h-auto {
308  min-height: auto;
309}"
310        );
311        assert_eq!(
312            generate(["min-h-1/3"], &base_config()),
313            r".min-h-1\/3 {
314  min-height: 33.333333%;
315}"
316        );
317        assert_eq!(
318            generate(["-min-h-2/3"], &base_config()),
319            r".-min-h-2\/3 {
320  min-height: -66.666667%;
321}"
322        );
323        assert_eq!(
324            generate(["min-h-full"], &base_config()),
325            ".min-h-full {
326  min-height: 100%;
327}"
328        );
329        assert_eq!(
330            generate(["min-h-screen"], &base_config()),
331            ".min-h-screen {
332  min-height: 100vh;
333}"
334        );
335        assert_eq!(
336            generate(["min-h-lvh"], &base_config()),
337            ".min-h-lvh {
338  min-height: 100lvh;
339}"
340        );
341        assert_eq!(
342            generate(["min-h-fit"], &base_config()),
343            ".min-h-fit {
344  min-height: fit-content;
345}"
346        );
347        assert_eq!(
348            generate(["min-h-[32.555rem]"], &base_config()),
349            r".min-h-\[32\.555rem\] {
350  min-height: 32.555rem;
351}"
352        );
353        assert_eq!(
354            generate(["min-h-[10%]"], &base_config()),
355            r".min-h-\[10\%\] {
356  min-height: 10%;
357}"
358        );
359    }
360
361    #[test]
362    fn min_width() {
363        assert_eq!(
364            generate(["min-w-px"], &base_config()),
365            ".min-w-px {
366  min-width: 1px;
367}"
368        );
369        assert_eq!(
370            generate(["min-w-2.5"], &base_config()),
371            r".min-w-2\.5 {
372  min-width: 0.625rem;
373}"
374        );
375        assert_eq!(
376            generate(["min-w-60"], &base_config()),
377            ".min-w-60 {
378  min-width: 15rem;
379}"
380        );
381        assert_eq!(
382            generate(["-min-w-60"], &base_config()),
383            ".-min-w-60 {
384  min-width: -15rem;
385}"
386        );
387        assert_eq!(
388            generate(["min-w-auto"], &base_config()),
389            ".min-w-auto {
390  min-width: auto;
391}"
392        );
393        assert_eq!(
394            generate(["min-w-1/3"], &base_config()),
395            r".min-w-1\/3 {
396  min-width: 33.333333%;
397}"
398        );
399        assert_eq!(
400            generate(["-min-w-2/3"], &base_config()),
401            r".-min-w-2\/3 {
402  min-width: -66.666667%;
403}"
404        );
405        assert_eq!(
406            generate(["min-w-full"], &base_config()),
407            ".min-w-full {
408  min-width: 100%;
409}"
410        );
411        assert_eq!(
412            generate(["min-w-screen"], &base_config()),
413            ".min-w-screen {
414  min-width: 100vw;
415}"
416        );
417        assert_eq!(
418            generate(["min-w-fit"], &base_config()),
419            ".min-w-fit {
420  min-width: fit-content;
421}"
422        );
423        assert_eq!(
424            generate(["min-w-[32.555rem]"], &base_config()),
425            r".min-w-\[32\.555rem\] {
426  min-width: 32.555rem;
427}"
428        );
429        assert_eq!(
430            generate(["min-w-[10%]"], &base_config()),
431            r".min-w-\[10\%\] {
432  min-width: 10%;
433}"
434        );
435    }
436
437    #[test]
438    fn width() {
439        assert_eq!(
440            generate(["w-px"], &base_config()),
441            ".w-px {
442  width: 1px;
443}"
444        );
445        assert_eq!(
446            generate(["w-2.5"], &base_config()),
447            r".w-2\.5 {
448  width: 0.625rem;
449}"
450        );
451        assert_eq!(
452            generate(["w-60"], &base_config()),
453            ".w-60 {
454  width: 15rem;
455}"
456        );
457        assert_eq!(
458            generate(["-w-60"], &base_config()),
459            ".-w-60 {
460  width: -15rem;
461}"
462        );
463        assert_eq!(
464            generate(["w-auto"], &base_config()),
465            ".w-auto {
466  width: auto;
467}"
468        );
469        assert_eq!(
470            generate(["w-1/3"], &base_config()),
471            r".w-1\/3 {
472  width: 33.333333%;
473}"
474        );
475        assert_eq!(
476            generate(["-w-2/3"], &base_config()),
477            r".-w-2\/3 {
478  width: -66.666667%;
479}"
480        );
481        assert_eq!(
482            generate(["w-full"], &base_config()),
483            ".w-full {
484  width: 100%;
485}"
486        );
487        assert_eq!(
488            generate(["w-screen"], &base_config()),
489            ".w-screen {
490  width: 100vw;
491}"
492        );
493        assert_eq!(
494            generate(["w-lvw"], &base_config()),
495            ".w-lvw {
496  width: 100lvw;
497}"
498        );
499        assert_eq!(
500            generate(["w-fit"], &base_config()),
501            ".w-fit {
502  width: fit-content;
503}"
504        );
505        assert_eq!(
506            generate(["w-[32.555rem]"], &base_config()),
507            r".w-\[32\.555rem\] {
508  width: 32.555rem;
509}"
510        );
511        assert_eq!(
512            generate(["w-[10%]"], &base_config()),
513            r".w-\[10\%\] {
514  width: 10%;
515}"
516        );
517    }
518}