dwind/modules/
sizing.rs

1use dwind_macros::dwgenerate_map;
2
3include!(concat!(env!("OUT_DIR"), "/sizing.rs"));
4
5#[macro_export]
6macro_rules! width_generator {
7    ($width:tt) => {
8        const_format::formatcp!("width: {};", $width)
9    };
10}
11
12#[macro_export]
13macro_rules! height_generator {
14    ($height:tt) => {
15        const_format::formatcp!("height: {};", $height)
16    };
17}
18
19#[macro_export]
20macro_rules! max_width_generator {
21    ($width:tt) => {
22        const_format::formatcp!("max-width: {};", $width)
23    };
24}
25
26#[macro_export]
27macro_rules! max_height_generator {
28    ($width:tt) => {
29        const_format::formatcp!("max-height: {};", $width)
30    };
31}
32
33#[macro_export]
34macro_rules! min_width_generator {
35    ($width:tt) => {
36        const_format::formatcp!("min-width: {};", $width)
37    };
38}
39
40#[macro_export]
41macro_rules! min_height_generator {
42    ($width:tt) => {
43        const_format::formatcp!("min-height: {};", $width)
44    };
45}
46
47dwgenerate_map!(
48    "w",
49    "width-",
50    [
51        // Original percentage classes for backwards compatibility
52        ("p-5", "5%"),
53        ("p-10", "10%"),
54        ("p-15", "15%"),
55        ("p-20", "20%"),
56        ("p-25", "25%"),
57        ("p-30", "30%"),
58        ("p-35", "35%"),
59        ("p-40", "40%"),
60        ("p-45", "45%"),
61        ("p-50", "50%"),
62        ("p-55", "55%"),
63        ("p-60", "60%"),
64        ("p-65", "65%"),
65        ("p-70", "70%"),
66        ("p-75", "75%"),
67        ("p-80", "80%"),
68        ("p-85", "85%"),
69        ("p-90", "90%"),
70        ("p-95", "95%"),
71        ("p-100", "100%"),
72        // Tailwind rem-based scale
73        ("0", "0px"),
74        ("px", "1px"),
75        ("0.5", "0.125rem"),
76        ("1", "0.25rem"),
77        ("1.5", "0.375rem"),
78        ("2", "0.5rem"),
79        ("2.5", "0.625rem"),
80        ("3", "0.75rem"),
81        ("3.5", "0.875rem"),
82        ("4", "1rem"),
83        ("5", "1.25rem"),
84        ("6", "1.5rem"),
85        ("7", "1.75rem"),
86        ("8", "2rem"),
87        ("9", "2.25rem"),
88        ("10", "2.5rem"),
89        ("11", "2.75rem"),
90        ("12", "3rem"),
91        ("13", "3.25rem"),
92        ("14", "3.5rem"),
93        ("15", "3.75rem"),
94        ("16", "4rem"),
95        ("17", "4.25rem"),
96        ("18", "4.5rem"),
97        ("19", "4.75rem"),
98        ("20", "5rem"),
99        ("24", "6rem"),
100        ("28", "7rem"),
101        ("32", "8rem"),
102        ("36", "9rem"),
103        ("40", "10rem"),
104        ("44", "11rem"),
105        ("48", "12rem"),
106        ("52", "13rem"),
107        ("56", "14rem"),
108        ("60", "15rem"),
109        ("64", "16rem"),
110        ("72", "18rem"),
111        ("80", "20rem"),
112        ("96", "24rem"),
113        // Original large sizes for backwards compatibility
114        ("sm", "24rem"),
115        ("md", "48rem"),
116        ("lg", "64rem"),
117        ("xl", "80rem"),
118        ("2xl", "96rem"),
119        ("3xl", "112rem"),
120        ("4xl", "128rem"),
121        ("5xl", "144rem"),
122        ("6xl", "160rem"),
123        ("7xl", "176rem"),
124        ("8xl", "192rem"),
125        ("9xl", "208rem"),
126        ("10xl", "224rem"),
127        // Special values
128        ("auto", "auto"),
129        ("full", "100%"),
130        ("screen", "100vw"),
131        ("min", "min-content"),
132        ("max", "max-content"),
133        // New Tailwind additions
134        ("1/2", "50%"),
135        ("1/3", "33.333333%"),
136        ("2/3", "66.666667%"),
137        ("1/4", "25%"),
138        ("2/4", "50%"),
139        ("3/4", "75%"),
140        ("1/5", "20%"),
141        ("2/5", "40%"),
142        ("3/5", "60%"),
143        ("4/5", "80%"),
144        ("1/6", "16.666667%"),
145        ("2/6", "33.333333%"),
146        ("3/6", "50%"),
147        ("4/6", "66.666667%"),
148        ("5/6", "83.333333%"),
149        ("1/12", "8.333333%"),
150        ("2/12", "16.666667%"),
151        ("3/12", "25%"),
152        ("4/12", "33.333333%"),
153        ("5/12", "41.666667%"),
154        ("6/12", "50%"),
155        ("7/12", "58.333333%"),
156        ("8/12", "66.666667%"),
157        ("9/12", "75%"),
158        ("10/12", "83.333333%"),
159        ("11/12", "91.666667%"),
160        ("svw", "100svw"),
161        ("lvw", "100lvw"),
162        ("dvw", "100dvw"),
163        ("fit", "fit-content")
164    ]
165);
166
167dwgenerate_map!(
168    "min-w",
169    "min-width-",
170    [
171        // Original percentage classes for backwards compatibility
172        ("p-5", "5%"),
173        ("p-10", "10%"),
174        ("p-15", "15%"),
175        ("p-20", "20%"),
176        ("p-25", "25%"),
177        ("p-30", "30%"),
178        ("p-35", "35%"),
179        ("p-40", "40%"),
180        ("p-45", "45%"),
181        ("p-50", "50%"),
182        ("p-55", "55%"),
183        ("p-60", "60%"),
184        ("p-65", "65%"),
185        ("p-70", "70%"),
186        ("p-75", "75%"),
187        ("p-80", "80%"),
188        ("p-85", "85%"),
189        ("p-90", "90%"),
190        ("p-95", "95%"),
191        ("p-100", "100%"),
192        // Tailwind rem-based scale
193        ("0", "0px"),
194        ("px", "1px"),
195        ("0.5", "0.125rem"),
196        ("1", "0.25rem"),
197        ("1.5", "0.375rem"),
198        ("2", "0.5rem"),
199        ("2.5", "0.625rem"),
200        ("3", "0.75rem"),
201        ("3.5", "0.875rem"),
202        ("4", "1rem"),
203        ("5", "1.25rem"),
204        ("6", "1.5rem"),
205        ("7", "1.75rem"),
206        ("8", "2rem"),
207        ("9", "2.25rem"),
208        ("10", "2.5rem"),
209        ("11", "2.75rem"),
210        ("12", "3rem"),
211        ("13", "3.25rem"),
212        ("14", "3.5rem"),
213        ("15", "3.75rem"),
214        ("16", "4rem"),
215        ("17", "4.25rem"),
216        ("18", "4.5rem"),
217        ("19", "4.75rem"),
218        ("20", "5rem"),
219        ("24", "6rem"),
220        ("28", "7rem"),
221        ("32", "8rem"),
222        ("36", "9rem"),
223        ("40", "10rem"),
224        ("44", "11rem"),
225        ("48", "12rem"),
226        ("52", "13rem"),
227        ("56", "14rem"),
228        ("60", "15rem"),
229        ("64", "16rem"),
230        ("72", "18rem"),
231        ("80", "20rem"),
232        ("96", "24rem"),
233        // Original large sizes for backwards compatibility
234        ("sm", "24rem"),
235        ("md", "48rem"),
236        ("lg", "64rem"),
237        ("xl", "80rem"),
238        ("2xl", "96rem"),
239        ("3xl", "112rem"),
240        ("4xl", "128rem"),
241        ("5xl", "144rem"),
242        ("6xl", "160rem"),
243        ("7xl", "176rem"),
244        ("8xl", "192rem"),
245        ("9xl", "208rem"),
246        ("10xl", "224rem"),
247        // Special values
248        ("full", "100%"),
249        ("min", "min-content"),
250        ("max", "max-content"),
251        ("fit", "fit-content")
252    ]
253);
254
255dwgenerate_map!(
256    "max-w",
257    "max-width-",
258    [
259        // Original percentage classes for backwards compatibility
260        ("p-5", "5%"),
261        ("p-10", "10%"),
262        ("p-15", "15%"),
263        ("p-20", "20%"),
264        ("p-25", "25%"),
265        ("p-30", "30%"),
266        ("p-35", "35%"),
267        ("p-40", "40%"),
268        ("p-45", "45%"),
269        ("p-50", "50%"),
270        ("p-55", "55%"),
271        ("p-60", "60%"),
272        ("p-65", "65%"),
273        ("p-70", "70%"),
274        ("p-75", "75%"),
275        ("p-80", "80%"),
276        ("p-85", "85%"),
277        ("p-90", "90%"),
278        ("p-95", "95%"),
279        ("p-100", "100%"),
280        // Tailwind rem-based scale
281        ("0", "0px"),
282        ("px", "1px"),
283        ("0.5", "0.125rem"),
284        ("1", "0.25rem"),
285        ("1.5", "0.375rem"),
286        ("2", "0.5rem"),
287        ("2.5", "0.625rem"),
288        ("3", "0.75rem"),
289        ("3.5", "0.875rem"),
290        ("4", "1rem"),
291        ("5", "1.25rem"),
292        ("6", "1.5rem"),
293        ("7", "1.75rem"),
294        ("8", "2rem"),
295        ("9", "2.25rem"),
296        ("10", "2.5rem"),
297        ("11", "2.75rem"),
298        ("12", "3rem"),
299        ("13", "3.25rem"),
300        ("14", "3.5rem"),
301        ("15", "3.75rem"),
302        ("16", "4rem"),
303        ("17", "4.25rem"),
304        ("18", "4.5rem"),
305        ("19", "4.75rem"),
306        ("20", "5rem"),
307        ("24", "6rem"),
308        ("28", "7rem"),
309        ("32", "8rem"),
310        ("36", "9rem"),
311        ("40", "10rem"),
312        ("44", "11rem"),
313        ("48", "12rem"),
314        ("52", "13rem"),
315        ("56", "14rem"),
316        ("60", "15rem"),
317        ("64", "16rem"),
318        ("72", "18rem"),
319        ("80", "20rem"),
320        ("96", "24rem"),
321        // Tailwind semantic sizes (rem-based)
322        ("none", "none"),
323        ("xs", "20rem"),
324        ("sm", "24rem"),
325        ("md", "28rem"),
326        ("lg", "32rem"),
327        ("xl", "36rem"),
328        ("2xl", "42rem"),
329        ("3xl", "48rem"),
330        ("4xl", "56rem"),
331        ("5xl", "64rem"),
332        ("6xl", "72rem"),
333        ("7xl", "80rem"),
334        // Original large sizes for backwards compatibility (kept as rem)
335        ("8xl", "192rem"),
336        ("9xl", "208rem"),
337        ("10xl", "224rem"),
338        // Special values
339        ("auto", "auto"),
340        ("screen", "100vw"),
341        ("full", "100%"),
342        ("min", "min-content"),
343        ("max", "max-content"),
344        ("fit", "fit-content"),
345        ("prose", "65ch"),
346        // Screen breakpoints
347        ("screen-sm", "40rem"),
348        ("screen-md", "48rem"),
349        ("screen-lg", "64rem"),
350        ("screen-xl", "80rem"),
351        ("screen-2xl", "96rem")
352    ]
353);
354
355dwgenerate_map!(
356    "min-h",
357    "min-height-",
358    [
359        // Original percentage classes for backwards compatibility
360        ("p-5", "5%"),
361        ("p-10", "10%"),
362        ("p-15", "15%"),
363        ("p-20", "20%"),
364        ("p-25", "25%"),
365        ("p-30", "30%"),
366        ("p-35", "35%"),
367        ("p-40", "40%"),
368        ("p-45", "45%"),
369        ("p-50", "50%"),
370        ("p-55", "55%"),
371        ("p-60", "60%"),
372        ("p-65", "65%"),
373        ("p-70", "70%"),
374        ("p-75", "75%"),
375        ("p-80", "80%"),
376        ("p-85", "85%"),
377        ("p-90", "90%"),
378        ("p-95", "95%"),
379        ("p-100", "100%"),
380        // Tailwind rem-based scale
381        ("0", "0px"),
382        ("px", "1px"),
383        ("0.5", "0.125rem"),
384        ("1", "0.25rem"),
385        ("1.5", "0.375rem"),
386        ("2", "0.5rem"),
387        ("2.5", "0.625rem"),
388        ("3", "0.75rem"),
389        ("3.5", "0.875rem"),
390        ("4", "1rem"),
391        ("5", "1.25rem"),
392        ("6", "1.5rem"),
393        ("7", "1.75rem"),
394        ("8", "2rem"),
395        ("9", "2.25rem"),
396        ("10", "2.5rem"),
397        ("11", "2.75rem"),
398        ("12", "3rem"),
399        ("13", "3.25rem"),
400        ("14", "3.5rem"),
401        ("15", "3.75rem"),
402        ("16", "4rem"),
403        ("17", "4.25rem"),
404        ("18", "4.5rem"),
405        ("19", "4.75rem"),
406        ("20", "5rem"),
407        ("24", "6rem"),
408        ("28", "7rem"),
409        ("32", "8rem"),
410        ("36", "9rem"),
411        ("40", "10rem"),
412        ("44", "11rem"),
413        ("48", "12rem"),
414        ("52", "13rem"),
415        ("56", "14rem"),
416        ("60", "15rem"),
417        ("64", "16rem"),
418        ("72", "18rem"),
419        ("80", "20rem"),
420        ("96", "24rem"),
421        // Original large sizes for backwards compatibility
422        ("sm", "24rem"),
423        ("md", "48rem"),
424        ("lg", "64rem"),
425        ("xl", "80rem"),
426        ("2xl", "96rem"),
427        ("3xl", "112rem"),
428        ("4xl", "128rem"),
429        ("5xl", "144rem"),
430        ("6xl", "160rem"),
431        ("7xl", "176rem"),
432        ("8xl", "192rem"),
433        ("9xl", "208rem"),
434        ("10xl", "224rem"),
435        // Special values
436        ("full", "100%"),
437        ("screen", "100vh"),
438        ("svh", "100svh"),
439        ("lvh", "100lvh"),
440        ("dvh", "100dvh"),
441        ("min", "min-content"),
442        ("max", "max-content"),
443        ("fit", "fit-content")
444    ]
445);
446
447dwgenerate_map!(
448    "max-h",
449    "max-height-",
450    [
451        // Original percentage classes for backwards compatibility
452        ("p-5", "5%"),
453        ("p-10", "10%"),
454        ("p-15", "15%"),
455        ("p-20", "20%"),
456        ("p-25", "25%"),
457        ("p-30", "30%"),
458        ("p-35", "35%"),
459        ("p-40", "40%"),
460        ("p-45", "45%"),
461        ("p-50", "50%"),
462        ("p-55", "55%"),
463        ("p-60", "60%"),
464        ("p-65", "65%"),
465        ("p-70", "70%"),
466        ("p-75", "75%"),
467        ("p-80", "80%"),
468        ("p-85", "85%"),
469        ("p-90", "90%"),
470        ("p-95", "95%"),
471        ("p-100", "100%"),
472        // Tailwind rem-based scale
473        ("0", "0px"),
474        ("px", "1px"),
475        ("0.5", "0.125rem"),
476        ("1", "0.25rem"),
477        ("1.5", "0.375rem"),
478        ("2", "0.5rem"),
479        ("2.5", "0.625rem"),
480        ("3", "0.75rem"),
481        ("3.5", "0.875rem"),
482        ("4", "1rem"),
483        ("5", "1.25rem"),
484        ("6", "1.5rem"),
485        ("7", "1.75rem"),
486        ("8", "2rem"),
487        ("9", "2.25rem"),
488        ("10", "2.5rem"),
489        ("11", "2.75rem"),
490        ("12", "3rem"),
491        ("13", "3.25rem"),
492        ("14", "3.5rem"),
493        ("15", "3.75rem"),
494        ("16", "4rem"),
495        ("17", "4.25rem"),
496        ("18", "4.5rem"),
497        ("19", "4.75rem"),
498        ("20", "5rem"),
499        ("24", "6rem"),
500        ("28", "7rem"),
501        ("32", "8rem"),
502        ("36", "9rem"),
503        ("40", "10rem"),
504        ("44", "11rem"),
505        ("48", "12rem"),
506        ("52", "13rem"),
507        ("56", "14rem"),
508        ("60", "15rem"),
509        ("64", "16rem"),
510        ("72", "18rem"),
511        ("80", "20rem"),
512        ("96", "24rem"),
513        // Original large sizes for backwards compatibility
514        ("sm", "24rem"),
515        ("md", "48rem"),
516        ("lg", "64rem"),
517        ("xl", "80rem"),
518        ("2xl", "96rem"),
519        ("3xl", "112rem"),
520        ("4xl", "128rem"),
521        ("5xl", "144rem"),
522        ("6xl", "160rem"),
523        ("7xl", "176rem"),
524        ("8xl", "192rem"),
525        ("9xl", "208rem"),
526        ("10xl", "224rem"),
527        // Special values
528        ("none", "none"),
529        ("auto", "auto"),
530        ("full", "100%"),
531        ("screen", "100vh"),
532        ("svh", "100svh"),
533        ("lvh", "100lvh"),
534        ("dvh", "100dvh"),
535        ("min", "min-content"),
536        ("max", "max-content"),
537        ("fit", "fit-content")
538    ]
539);
540
541dwgenerate_map!(
542    "h",
543    "height-",
544    [
545        // Original percentage classes for backwards compatibility
546        ("p-5", "5%"),
547        ("p-10", "10%"),
548        ("p-15", "15%"),
549        ("p-20", "20%"),
550        ("p-25", "25%"),
551        ("p-30", "30%"),
552        ("p-35", "35%"),
553        ("p-40", "40%"),
554        ("p-45", "45%"),
555        ("p-50", "50%"),
556        ("p-55", "55%"),
557        ("p-60", "60%"),
558        ("p-65", "65%"),
559        ("p-70", "70%"),
560        ("p-75", "75%"),
561        ("p-80", "80%"),
562        ("p-85", "85%"),
563        ("p-90", "90%"),
564        ("p-95", "95%"),
565        ("p-100", "100%"),
566        // Tailwind rem-based scale
567        ("0", "0px"),
568        ("px", "1px"),
569        ("0.5", "0.125rem"),
570        ("1", "0.25rem"),
571        ("1.5", "0.375rem"),
572        ("2", "0.5rem"),
573        ("2.5", "0.625rem"),
574        ("3", "0.75rem"),
575        ("3.5", "0.875rem"),
576        ("4", "1rem"),
577        ("5", "1.25rem"),
578        ("6", "1.5rem"),
579        ("7", "1.75rem"),
580        ("8", "2rem"),
581        ("9", "2.25rem"),
582        ("10", "2.5rem"),
583        ("11", "2.75rem"),
584        ("12", "3rem"),
585        ("13", "3.25rem"),
586        ("14", "3.5rem"),
587        ("15", "3.75rem"),
588        ("16", "4rem"),
589        ("17", "4.25rem"),
590        ("18", "4.5rem"),
591        ("19", "4.75rem"),
592        ("20", "5rem"),
593        ("24", "6rem"),
594        ("28", "7rem"),
595        ("32", "8rem"),
596        ("36", "9rem"),
597        ("40", "10rem"),
598        ("44", "11rem"),
599        ("48", "12rem"),
600        ("52", "13rem"),
601        ("56", "14rem"),
602        ("60", "15rem"),
603        ("64", "16rem"),
604        ("72", "18rem"),
605        ("80", "20rem"),
606        ("96", "24rem"),
607        // Original large sizes for backwards compatibility
608        ("sm", "24rem"),
609        ("md", "48rem"),
610        ("lg", "64rem"),
611        ("xl", "80rem"),
612        ("2xl", "96rem"),
613        ("3xl", "112rem"),
614        ("4xl", "128rem"),
615        ("5xl", "144rem"),
616        ("6xl", "160rem"),
617        ("7xl", "176rem"),
618        ("8xl", "192rem"),
619        ("9xl", "208rem"),
620        ("10xl", "224rem"),
621        // Special values
622        ("auto", "auto"),
623        ("full", "100%"),
624        ("screen", "100vh"),
625        ("min", "min-content"),
626        ("max", "max-content"),
627        // New Tailwind additions
628        ("1/2", "50%"),
629        ("1/3", "33.333333%"),
630        ("2/3", "66.666667%"),
631        ("1/4", "25%"),
632        ("2/4", "50%"),
633        ("3/4", "75%"),
634        ("1/5", "20%"),
635        ("2/5", "40%"),
636        ("3/5", "60%"),
637        ("4/5", "80%"),
638        ("1/6", "16.666667%"),
639        ("2/6", "33.333333%"),
640        ("3/6", "50%"),
641        ("4/6", "66.666667%"),
642        ("5/6", "83.333333%"),
643        ("svh", "100svh"),
644        ("lvh", "100lvh"),
645        ("dvh", "100dvh"),
646        ("fit", "fit-content")
647    ]
648);