unit.gl 0.1.13 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +329 -1
  2. package/css/unit.gl.css +35819 -6
  3. package/css/unit.gl.docs.css +4156 -0
  4. package/css/unit.gl.docs.min.css +2 -0
  5. package/css/unit.gl.min.css +1 -1
  6. package/js/unit.gl.demo.js +708 -0
  7. package/js/unit.gl.demo.js.map +1 -0
  8. package/js/unit.gl.js +25 -0
  9. package/js/unit.gl.js.map +1 -1
  10. package/package.json +16 -3
  11. package/scss/classes/_docs.scss +4690 -0
  12. package/scss/classes/_index.scss +1 -0
  13. package/scss/classes/_utilities.scss +1488 -0
  14. package/scss/docs.scss +11 -0
  15. package/scss/formats.scss +27 -0
  16. package/scss/functions/_density.scss +311 -0
  17. package/scss/functions/_index.scss +3 -0
  18. package/scss/functions/_layer.scss +14 -1
  19. package/scss/functions/_ratio.scss +3 -2
  20. package/scss/functions/_scale.scss +220 -3
  21. package/scss/functions/_sequence.scss +6 -5
  22. package/scss/functions/math/_arithmetic.scss +15 -12
  23. package/scss/functions/unit/_unit_conversion.scss +59 -7
  24. package/scss/functions/unit/_unit_functions.scss +3 -3
  25. package/scss/guide.scss +22 -0
  26. package/scss/maps/_density.scss +141 -0
  27. package/scss/maps/_device.scss +13 -20
  28. package/scss/maps/_index.scss +6 -0
  29. package/scss/maps/_scale.scss +47 -4
  30. package/scss/mixins/_device.scss +1 -3
  31. package/scss/mixins/_display.scss +265 -2
  32. package/scss/mixins/_format.scss +75 -0
  33. package/scss/mixins/_guide.scss +73 -11
  34. package/scss/mixins/_index.scss +2 -1
  35. package/scss/mixins/_unit.scss +115 -6
  36. package/scss/mixins/_utilities.scss +303 -0
  37. package/scss/mixins/_view.scss +43 -12
  38. package/scss/tags/_global.scss +18 -3
  39. package/scss/tags/_unit.scss +1 -3
  40. package/scss/test.scss +17 -0
  41. package/scss/utilities.scss +20 -0
  42. package/scss/variables/_color.scss +9 -9
  43. package/scss/variables/_format.scss +80 -0
  44. package/scss/variables/_guide.scss +17 -0
  45. package/scss/variables/_index.scss +4 -0
  46. package/scss/variables/_scale.scss +434 -63
  47. package/scss/variables/_view.scss +222 -64
  48. package/ts/demo.ts +889 -0
  49. package/ts/index.d.ts +72 -0
  50. package/ts/index.ts +45 -0
  51. package/scss/mixins/_paper.scss +0 -51
@@ -0,0 +1,303 @@
1
+ ////
2
+ ///
3
+ /// Utilities Mixin Module
4
+ /// ===========================================================================
5
+ ///
6
+ /// Mixins for generating granular utility classes based on q() units.
7
+ /// These mixins provide a systematic way to generate spacing, sizing,
8
+ /// positioning, and border utility classes using the curated q_steps scale.
9
+ ///
10
+ /// @group Mixins
11
+ /// @author Scape Agency
12
+ /// @link https://unit.gl
13
+ /// @since 0.1.0 initial release
14
+ /// @todo None
15
+ /// @access public
16
+ ///
17
+ ////
18
+
19
+ // ============================================================================
20
+ // Use
21
+ // ============================================================================
22
+
23
+ @use "sass:map";
24
+ @use "sass:list";
25
+ @use "../maps" as maps;
26
+ @use "../variables" as variables;
27
+
28
+ // ============================================================================
29
+ // Mixin: Padding Utilities
30
+ // ============================================================================
31
+
32
+ /// Generate padding utility classes
33
+ /// @mixin padding-utilities
34
+ /// @param {Map} $steps - Map of step name to multiplier value
35
+ /// @param {List} $breakpoints - Optional breakpoints for responsive variants
36
+ /// @example
37
+ /// @include padding-utilities($q_steps);
38
+ /// @include padding-utilities($q_steps, (md, lg));
39
+ ///
40
+ @mixin padding-utilities($steps: maps.$q_steps, $breakpoints: null) {
41
+ @each $key, $value in $steps {
42
+ .p_q#{$key} {
43
+ padding: variables.q($value);
44
+ }
45
+ .pt_q#{$key} {
46
+ padding-top: variables.q($value);
47
+ }
48
+ .pr_q#{$key} {
49
+ padding-right: variables.q($value);
50
+ }
51
+ .pb_q#{$key} {
52
+ padding-bottom: variables.q($value);
53
+ }
54
+ .pl_q#{$key} {
55
+ padding-left: variables.q($value);
56
+ }
57
+ .px_q#{$key} {
58
+ padding-left: variables.q($value);
59
+ padding-right: variables.q($value);
60
+ }
61
+ .py_q#{$key} {
62
+ padding-top: variables.q($value);
63
+ padding-bottom: variables.q($value);
64
+ }
65
+ }
66
+ }
67
+
68
+ // ============================================================================
69
+ // Mixin: Margin Utilities
70
+ // ============================================================================
71
+
72
+ /// Generate margin utility classes
73
+ /// @mixin margin-utilities
74
+ /// @param {Map} $steps - Map of step name to multiplier value
75
+ /// @param {List} $breakpoints - Optional breakpoints for responsive variants
76
+ /// @example
77
+ /// @include margin-utilities($q_steps);
78
+ /// @include margin-utilities($q_steps, (md, lg));
79
+ ///
80
+ @mixin margin-utilities($steps: maps.$q_steps, $breakpoints: null) {
81
+ @each $key, $value in $steps {
82
+ .m_q#{$key} {
83
+ margin: variables.q($value);
84
+ }
85
+ .mt_q#{$key} {
86
+ margin-top: variables.q($value);
87
+ }
88
+ .mr_q#{$key} {
89
+ margin-right: variables.q($value);
90
+ }
91
+ .mb_q#{$key} {
92
+ margin-bottom: variables.q($value);
93
+ }
94
+ .ml_q#{$key} {
95
+ margin-left: variables.q($value);
96
+ }
97
+ .mx_q#{$key} {
98
+ margin-left: variables.q($value);
99
+ margin-right: variables.q($value);
100
+ }
101
+ .my_q#{$key} {
102
+ margin-top: variables.q($value);
103
+ margin-bottom: variables.q($value);
104
+ }
105
+ }
106
+ }
107
+
108
+ // ============================================================================
109
+ // Mixin: Gap Utilities
110
+ // ============================================================================
111
+
112
+ /// Generate gap utility classes for grid/flex
113
+ /// @mixin gap-utilities
114
+ /// @param {Map} $steps - Map of step name to multiplier value
115
+ /// @example
116
+ /// @include gap-utilities($q_steps);
117
+ ///
118
+ @mixin gap-utilities($steps: maps.$q_steps) {
119
+ @each $key, $value in $steps {
120
+ .gap_q#{$key} {
121
+ gap: variables.q($value);
122
+ }
123
+ .gap_col_q#{$key} {
124
+ column-gap: variables.q($value);
125
+ }
126
+ .gap_row_q#{$key} {
127
+ row-gap: variables.q($value);
128
+ }
129
+ }
130
+ }
131
+
132
+ // ============================================================================
133
+ // Mixin: Width Utilities
134
+ // ============================================================================
135
+
136
+ /// Generate width utility classes
137
+ /// @mixin width-utilities
138
+ /// @param {Map} $steps - Map of step name to multiplier value
139
+ /// @example
140
+ /// @include width-utilities($q_steps);
141
+ ///
142
+ @mixin width-utilities($steps: maps.$q_steps) {
143
+ @each $key, $value in $steps {
144
+ .w_q#{$key} {
145
+ width: variables.q($value);
146
+ }
147
+ .min_w_q#{$key} {
148
+ min-width: variables.q($value);
149
+ }
150
+ .max_w_q#{$key} {
151
+ max-width: variables.q($value);
152
+ }
153
+ }
154
+ }
155
+
156
+ // ============================================================================
157
+ // Mixin: Height Utilities
158
+ // ============================================================================
159
+
160
+ /// Generate height utility classes
161
+ /// @mixin height-utilities
162
+ /// @param {Map} $steps - Map of step name to multiplier value
163
+ /// @example
164
+ /// @include height-utilities($q_steps);
165
+ ///
166
+ @mixin height-utilities($steps: maps.$q_steps) {
167
+ @each $key, $value in $steps {
168
+ .h_q#{$key} {
169
+ height: variables.q($value);
170
+ }
171
+ .min_h_q#{$key} {
172
+ min-height: variables.q($value);
173
+ }
174
+ .max_h_q#{$key} {
175
+ max-height: variables.q($value);
176
+ }
177
+ }
178
+ }
179
+
180
+ // ============================================================================
181
+ // Mixin: Inset Utilities (Positioning)
182
+ // ============================================================================
183
+
184
+ /// Generate inset (top/right/bottom/left) utility classes
185
+ /// @mixin inset-utilities
186
+ /// @param {Map} $steps - Map of step name to multiplier value
187
+ /// @example
188
+ /// @include inset-utilities($q_steps);
189
+ ///
190
+ @mixin inset-utilities($steps: maps.$q_steps) {
191
+ @each $key, $value in $steps {
192
+ .inset_q#{$key} {
193
+ top: variables.q($value);
194
+ right: variables.q($value);
195
+ bottom: variables.q($value);
196
+ left: variables.q($value);
197
+ }
198
+ .top_q#{$key} {
199
+ top: variables.q($value);
200
+ }
201
+ .right_q#{$key} {
202
+ right: variables.q($value);
203
+ }
204
+ .bottom_q#{$key} {
205
+ bottom: variables.q($value);
206
+ }
207
+ .left_q#{$key} {
208
+ left: variables.q($value);
209
+ }
210
+ .inset_x_q#{$key} {
211
+ left: variables.q($value);
212
+ right: variables.q($value);
213
+ }
214
+ .inset_y_q#{$key} {
215
+ top: variables.q($value);
216
+ bottom: variables.q($value);
217
+ }
218
+ }
219
+ }
220
+
221
+ // ============================================================================
222
+ // Mixin: Border Width Utilities
223
+ // ============================================================================
224
+
225
+ /// Generate border-width utility classes
226
+ /// @mixin border-width-utilities
227
+ /// @param {Map} $steps - Map of step name to multiplier value
228
+ /// @example
229
+ /// @include border-width-utilities($q_steps);
230
+ ///
231
+ @mixin border-width-utilities($steps: maps.$q_steps) {
232
+ @each $key, $value in $steps {
233
+ .border_q#{$key} {
234
+ border-width: variables.q($value);
235
+ }
236
+ .border_t_q#{$key} {
237
+ border-top-width: variables.q($value);
238
+ }
239
+ .border_r_q#{$key} {
240
+ border-right-width: variables.q($value);
241
+ }
242
+ .border_b_q#{$key} {
243
+ border-bottom-width: variables.q($value);
244
+ }
245
+ .border_l_q#{$key} {
246
+ border-left-width: variables.q($value);
247
+ }
248
+ .border_x_q#{$key} {
249
+ border-left-width: variables.q($value);
250
+ border-right-width: variables.q($value);
251
+ }
252
+ .border_y_q#{$key} {
253
+ border-top-width: variables.q($value);
254
+ border-bottom-width: variables.q($value);
255
+ }
256
+ }
257
+ }
258
+
259
+ // ============================================================================
260
+ // Mixin: Border Radius Utilities
261
+ // ============================================================================
262
+
263
+ /// Generate border-radius utility classes
264
+ /// @mixin border-radius-utilities
265
+ /// @param {Map} $steps - Map of step name to multiplier value
266
+ /// @example
267
+ /// @include border-radius-utilities($q_steps);
268
+ ///
269
+ @mixin border-radius-utilities($steps: maps.$q_steps) {
270
+ @each $key, $value in $steps {
271
+ .rounded_q#{$key} {
272
+ border-radius: variables.q($value);
273
+ }
274
+ .rounded_t_q#{$key} {
275
+ border-top-left-radius: variables.q($value);
276
+ border-top-right-radius: variables.q($value);
277
+ }
278
+ .rounded_r_q#{$key} {
279
+ border-top-right-radius: variables.q($value);
280
+ border-bottom-right-radius: variables.q($value);
281
+ }
282
+ .rounded_b_q#{$key} {
283
+ border-bottom-left-radius: variables.q($value);
284
+ border-bottom-right-radius: variables.q($value);
285
+ }
286
+ .rounded_l_q#{$key} {
287
+ border-top-left-radius: variables.q($value);
288
+ border-bottom-left-radius: variables.q($value);
289
+ }
290
+ .rounded_tl_q#{$key} {
291
+ border-top-left-radius: variables.q($value);
292
+ }
293
+ .rounded_tr_q#{$key} {
294
+ border-top-right-radius: variables.q($value);
295
+ }
296
+ .rounded_br_q#{$key} {
297
+ border-bottom-right-radius: variables.q($value);
298
+ }
299
+ .rounded_bl_q#{$key} {
300
+ border-bottom-left-radius: variables.q($value);
301
+ }
302
+ }
303
+ }
@@ -21,6 +21,7 @@
21
21
  // ============================================================================
22
22
  // Use
23
23
  // ============================================================================
24
+ @use "sass:map";
24
25
 
25
26
  @use "../variables" as *;
26
27
 
@@ -43,7 +44,7 @@
43
44
  /// }
44
45
  ///
45
46
  @mixin breakpoint($size) {
46
- @if map-has-key($breakpoints, $size) {
47
+ @if map.has-key($breakpoints, $size) {
47
48
  @media (min-width: map.get($breakpoints, $size)) {
48
49
  @content;
49
50
  }
@@ -53,7 +54,37 @@
53
54
  }
54
55
 
55
56
  ///
56
- /// Applies styles for extra-small devices and up (min-width: 320px).
57
+ /// Applies styles for ultra-small devices and up (min-width: 240px).
58
+ ///
59
+ /// @name media_us
60
+ /// @example scss - Usage
61
+ /// @include media_us {
62
+ /// // Styles for ultra-small devices and up
63
+ /// }
64
+ ///
65
+ @mixin media_us {
66
+ @media (min-width: $media_us) {
67
+ @content;
68
+ }
69
+ }
70
+
71
+ ///
72
+ /// Applies styles for super-small devices and up (min-width: 360px).
73
+ ///
74
+ /// @name media_ss
75
+ /// @example scss - Usage
76
+ /// @include media_ss {
77
+ /// // Styles for super-small devices and up
78
+ /// }
79
+ ///
80
+ @mixin media_ss {
81
+ @media (min-width: $media_ss) {
82
+ @content;
83
+ }
84
+ }
85
+
86
+ ///
87
+ /// Applies styles for extra-small devices and up (min-width: 540px).
57
88
  ///
58
89
  /// @name media_xs
59
90
  /// @example scss - Usage
@@ -68,7 +99,7 @@
68
99
  }
69
100
 
70
101
  ///
71
- /// Applies styles for small devices and up (min-width: 480px).
102
+ /// Applies styles for small devices and up (min-width: 720px).
72
103
  ///
73
104
  /// @name media_sm
74
105
  /// @example scss - Usage
@@ -83,7 +114,7 @@
83
114
  }
84
115
 
85
116
  ///
86
- /// Applies styles for medium devices and up (min-width: 768px).
117
+ /// Applies styles for medium devices and up (min-width: 1440px).
87
118
  ///
88
119
  /// @name media_md
89
120
  ///
@@ -99,7 +130,7 @@
99
130
  }
100
131
 
101
132
  ///
102
- /// Applies styles for large devices and up (min-width: 1024px).
133
+ /// Applies styles for large devices and up (min-width: 2160px).
103
134
  ///
104
135
  /// @name media_lg
105
136
  ///
@@ -115,7 +146,7 @@
115
146
  }
116
147
 
117
148
  ///
118
- /// Applies styles for extra-large devices and up (min-width: 1280px).
149
+ /// Applies styles for extra-large devices and up (min-width: 2880px).
119
150
  ///
120
151
  /// @name media_xl
121
152
  ///
@@ -131,17 +162,17 @@
131
162
  }
132
163
 
133
164
  ///
134
- /// Applies styles for super-large devices and up (min-width: 1440px).
165
+ /// Applies styles for ultra-large devices and up (min-width: 4320px).
135
166
  ///
136
- /// @name media_sl
167
+ /// @name media_ul
137
168
  ///
138
169
  /// @example scss - Usage
139
- /// @include media_sl {
140
- /// // Styles for super-large devices and up
170
+ /// @include media_ul {
171
+ /// // Styles for ultra-large devices and up
141
172
  /// }
142
173
  ///
143
- @mixin media_sl {
144
- @media (min-width: $media_sl) {
174
+ @mixin media_ul {
175
+ @media (min-width: $media_ul) {
145
176
  @content;
146
177
  }
147
178
  }
@@ -1,3 +1,21 @@
1
+ ////
2
+ ///
3
+ /// Global Tags Module
4
+ /// =========================================================================
5
+ ///
6
+ /// Base element resets and global defaults for `html`, `body`, and
7
+ /// universal selectors. Provides consistent box-sizing, text adjustments,
8
+ /// and baseline resets that apply across the application.
9
+ ///
10
+ /// @group Tags
11
+ /// @author Scape Agency
12
+ /// @link https://unit.gl
13
+ /// @since 0.1.0 initial release
14
+ /// @todo None
15
+ /// @access public
16
+ ///
17
+ ////
18
+
1
19
  // Base | Body
2
20
  // ============================================================================
3
21
 
@@ -16,9 +34,6 @@ html {
16
34
  body {
17
35
  min-height: 100%;
18
36
  margin: 0;
19
- position: absolute;
20
- height: 100vh;
21
- width: 100vw;
22
37
  }
23
38
 
24
39
  html,
@@ -12,7 +12,6 @@
12
12
  ///
13
13
  ////
14
14
 
15
-
16
15
  // ============================================================================
17
16
  // Use
18
17
  // ============================================================================
@@ -20,12 +19,11 @@
20
19
  @use "../variables" as *;
21
20
  @use "../mixins" as *;
22
21
 
23
-
24
22
  // ============================================================================
25
23
  // Classes
26
24
  // ============================================================================
27
25
 
28
26
  // Example usage of fluid typography for the html element
29
27
  html {
30
- @include fluid_type($media_xs, $media_sl, $font_min, $font_max);
28
+ @include fluid_type($media_ss, $media_ul, $font_min, $font_max);
31
29
  }
package/scss/test.scss CHANGED
@@ -0,0 +1,17 @@
1
+ ////
2
+ ///
3
+ /// Test Styles Module
4
+ /// =========================================================================
5
+ ///
6
+ /// Placeholder for ad-hoc style tests and experiments. Not included in
7
+ /// production builds; used locally to validate mixins, functions, and
8
+ /// variables during development.
9
+ ///
10
+ /// @group Dev
11
+ /// @author Scape Agency
12
+ /// @link https://unit.gl
13
+ /// @since 0.1.0 initial release
14
+ /// @todo Replace with targeted component/style demos when needed
15
+ /// @access private
16
+ ///
17
+ ////
@@ -0,0 +1,20 @@
1
+ ////
2
+ ///
3
+ /// unit.gl/utilities
4
+ /// ===========================================================================
5
+ ///
6
+ /// Modular entrypoint for utility class generation.
7
+ /// Use this when you only need the Tailwind-like q() utility classes.
8
+ ///
9
+ /// @example scss - Usage
10
+ /// @use "unit.gl/utilities";
11
+ ///
12
+ /// @group Utilities
13
+ /// @author Scape Agency
14
+ /// @link https://unit.gl
15
+ /// @since 0.3.0
16
+ /// @access public
17
+ ///
18
+ ////
19
+
20
+ @forward "classes/utilities";
@@ -19,6 +19,7 @@
19
19
  // ============================================================================
20
20
  // Use
21
21
  // ============================================================================
22
+ @use "sass:color";
22
23
 
23
24
  // ============================================================================
24
25
  // Variables
@@ -29,10 +30,9 @@ $guide--baseline_secondary: rgb(125, 181, 203);
29
30
 
30
31
  $guide--color: rgb(0, 200, 255);
31
32
 
32
- $guide--graph_primary: rgba(111, 124, 126, 0.483);
33
-
34
- $guide--bleed_primary: rgba(178, 51, 170, 0.5);
33
+ $guide--graph_primary: color.change(rgb(111, 124, 126), $alpha: 0.483);
35
34
 
35
+ $guide--bleed_primary: color.change(rgb(178, 51, 170), $alpha: 0.5);
36
36
 
37
37
  ///
38
38
  /// Primary Guide Color
@@ -40,7 +40,7 @@ $guide--bleed_primary: rgba(178, 51, 170, 0.5);
40
40
  ///
41
41
  /// Neutral gray for general guide overlays
42
42
  ///
43
- $guide--color_primary: rgba(50, 50, 50, 0.25);
43
+ $guide--color_primary: color.change(rgb(50, 50, 50), $alpha: 0.25);
44
44
 
45
45
  ///
46
46
  /// Secondary Guide Color
@@ -48,7 +48,7 @@ $guide--color_primary: rgba(50, 50, 50, 0.25);
48
48
  ///
49
49
  /// Highlight color for key guides or emphasis
50
50
  ///
51
- $guide--color_secondary: rgba(178, 51, 170, 0.5);
51
+ $guide--color_secondary: color.change(rgb(178, 51, 170), $alpha: 0.5);
52
52
 
53
53
  ///
54
54
  /// Tertiary Guide Color (Extended)
@@ -56,7 +56,7 @@ $guide--color_secondary: rgba(178, 51, 170, 0.5);
56
56
  ///
57
57
  /// A warm orange for alternate guide markings
58
58
  ///
59
- $guide--color_tertiary: rgba(255, 102, 0, 0.3);
59
+ $guide--color_tertiary: color.change(rgb(255, 102, 0), $alpha: 0.3);
60
60
 
61
61
  ///
62
62
  /// Quaternary Guide Color (Extended)
@@ -64,7 +64,7 @@ $guide--color_tertiary: rgba(255, 102, 0, 0.3);
64
64
  ///
65
65
  /// A cool blue for additional grid or alignment lines
66
66
  ///
67
- $guide--color_quaternary: rgba(0, 102, 255, 0.3);
67
+ $guide--color_quaternary: color.change(rgb(0, 102, 255), $alpha: 0.3);
68
68
 
69
69
  ///
70
70
  /// Light Guide Color (Extended)
@@ -72,7 +72,7 @@ $guide--color_quaternary: rgba(0, 102, 255, 0.3);
72
72
  ///
73
73
  /// Light color for subtle or background guides
74
74
  ///
75
- $guide--color_light: rgba(255, 255, 255, 0.2);
75
+ $guide--color_light: color.change(rgb(255, 255, 255), $alpha: 0.2);
76
76
 
77
77
  ///
78
78
  /// Dark Guide Color (Extended)
@@ -80,4 +80,4 @@ $guide--color_light: rgba(255, 255, 255, 0.2);
80
80
  ///
81
81
  /// Dark color for use on lighter backgrounds
82
82
  ///
83
- $guide--color_dark: rgba(0, 0, 0, 0.2);
83
+ $guide--color_dark: color.change(rgb(0, 0, 0), $alpha: 0.2);
@@ -0,0 +1,80 @@
1
+ ////
2
+ ///
3
+ /// Format Variables
4
+ /// ===========================================================================
5
+ ///
6
+ /// A curated, user-extensible page/print format map.
7
+ ///
8
+ /// Users can extend formats via Sass module configuration:
9
+ /// @use "unit.gl" with (
10
+ /// $format_overrides: (
11
+ /// "my-format": (100mm, 200mm)
12
+ /// )
13
+ /// );
14
+ ///
15
+ /// @group Format
16
+ /// @author Scape Agency
17
+ /// @link https://unit.gl
18
+ /// @since 0.3.0
19
+ /// @access public
20
+ ///
21
+ ////
22
+
23
+ @use "sass:map";
24
+
25
+ ///
26
+ /// Format map.
27
+ ///
28
+ /// Keys are lowercase strings (e.g. "a4", "letter", "q00", "q00+", "q10").
29
+ /// Values are 2-item lists: (width, height) in any CSS length units.
30
+ ///
31
+ /// Q-series values are based on the resources in `res/`.
32
+ ///
33
+ $format_defaults: (
34
+ // ISO A series (portrait)
35
+ "a0": (841mm, 1189mm),
36
+ "a1": (594mm, 841mm),
37
+ "a2": (420mm, 594mm),
38
+ "a3": (297mm, 420mm),
39
+ "a4": (210mm, 297mm),
40
+ "a5": (148mm, 210mm),
41
+ "a6": (105mm, 148mm),
42
+ // US common sizes (portrait)
43
+ "letter": (216mm, 279mm),
44
+ "legal": (216mm, 356mm),
45
+ "tabloid": (279mm, 432mm),
46
+ // Q series (portrait) — Q00..Q12
47
+ // (width, height) in millimeters
48
+ "q00": (720mm, 1080mm),
49
+ "q0": (720mm, 1080mm),
50
+ "q01": (540mm, 720mm),
51
+ "q1": (540mm, 720mm),
52
+ "q02": (360mm, 540mm),
53
+ "q2": (360mm, 540mm),
54
+ "q03": (270mm, 360mm),
55
+ "q3": (270mm, 360mm),
56
+ "q04": (180mm, 270mm),
57
+ "q4": (180mm, 270mm),
58
+ "q05": (135mm, 180mm),
59
+ "q5": (135mm, 180mm),
60
+ "q06": (90mm, 135mm),
61
+ "q6": (90mm, 135mm),
62
+ "q07": (62.5mm, 90mm),
63
+ "q7": (62.5mm, 90mm),
64
+ "q08": (45mm, 62.5mm),
65
+ "q8": (45mm, 62.5mm),
66
+ "q09": (31.25mm, 45mm),
67
+ "q9": (31.25mm, 45mm),
68
+ "q10": (22.5mm, 31.25mm),
69
+ "q11": (15.625mm, 22.5mm),
70
+ "q12": (11.25mm, 15.625mm),
71
+ // Q00 variants
72
+ "q00+": (1080mm, 1440mm),
73
+ "q00++": (1440mm, 2160mm)
74
+ );
75
+
76
+ /// User overrides/extensions for $format_defaults.
77
+ $format_overrides: () !default;
78
+
79
+ /// Final, user-extensible format map.
80
+ $format_map: map.merge($format_defaults, $format_overrides) !default;
@@ -0,0 +1,17 @@
1
+ ////
2
+ ///
3
+ /// Guide Variables Module
4
+ /// =========================================================================
5
+ ///
6
+ /// Reserved for variables related to visual guides (grid overlays,
7
+ /// baselines, alignment helpers). Centralizing guide-specific variables
8
+ /// here keeps concerns separated from general color or layout variables.
9
+ ///
10
+ /// @group Variables
11
+ /// @author Scape Agency
12
+ /// @link https://unit.gl
13
+ /// @since 0.1.0 initial release
14
+ /// @todo Populate with guide-specific tokens as they are formalized
15
+ /// @access public
16
+ ///
17
+ ////
@@ -61,6 +61,10 @@
61
61
  ///
62
62
  @forward "unit"; // Measurement units and spacing
63
63
 
64
+ ///
65
+ /// Forwards page/print formats used by the `format()` mixin.
66
+ ///
67
+ @forward "format";
64
68
 
65
69
  //////
66
70
  /// Forwards variables that define layout layers and z-indexing to manage the