beathers 5.7.3 → 5.7.5

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.

Potentially problematic release.


This version of beathers might be problematic. Click here for more details.

@@ -1,345 +1,345 @@
1
- @use 'sass:meta';
2
- @use 'sass:string';
3
- @use 'sass:map';
4
- @use 'sass:list';
5
- @use '../variables' as vars;
6
- @use '../functions/validations' as val;
7
- @use '../functions/typographic' as typo;
8
- @use '../settings/configs' as configs;
9
- @use '../functions/mediaQueries' as mQ;
10
- @use '../settings/index' as settings;
11
- @use '../settings/defaults' as defs;
12
-
13
- // Definitions
14
- $useFontFamilies: if(vars.$useFontFamilies != null, vars.$useFontFamilies, settings.$useFontFamilies);
15
- $useFontFamiliesMediaQueries: if(
16
- vars.$useFontFamiliesMediaQueries != null,
17
- vars.$useFontFamiliesMediaQueries,
18
- settings.$useFontFamiliesMediaQueries
19
- );
20
- $fonts: if(vars.$fonts != (), vars.$fonts, defs.$fonts);
21
- $fontWeights: if(vars.$fontWeights != (), vars.$fontWeights, defs.$fontWeights);
22
- $fontStyles: if(vars.$fontStyles != (), vars.$fontStyles, defs.$fontStyles);
23
- $fontFormat: if(vars.$fontFormat != (), vars.$fontFormat, defs.$fontFormat);
24
- $defaultFontFamilies: if(vars.$defaultFontFamilies != null, vars.$defaultFontFamilies, defs.$defaultFontFamilies);
25
- $useFontSizes: if(vars.$useFontSizes != null, vars.$useFontSizes, settings.$useFontSizes);
26
- $useFontSizesMediaQueries: if(
27
- vars.$useFontSizesMediaQueries != null,
28
- vars.$useFontSizesMediaQueries,
29
- settings.$useFontSizesMediaQueries
30
- );
31
- $fontSizes: if(vars.$fontSizes != (), vars.$fontSizes, defs.$fontSizes);
32
- $useFontShapes: if(vars.$useFontShapes != null, vars.$useFontShapes, settings.$useFontShapes);
33
- $useFontShapesMediaQueries: if(
34
- vars.$useFontShapesMediaQueries != null,
35
- vars.$useFontShapesMediaQueries,
36
- settings.$useFontShapesMediaQueries
37
- );
38
- $useTextAligns: if(vars.$useTextAligns != null, vars.$useTextAligns, settings.$useTextAligns);
39
- $useTextAlignsMediaQueries: if(
40
- vars.$useTextAlignsMediaQueries != null,
41
- vars.$useTextAlignsMediaQueries,
42
- settings.$useTextAlignsMediaQueries
43
- );
44
- $useTextTruncate: if(vars.$useTextTruncate != null, vars.$useTextTruncate, settings.$useTextTruncate);
45
- $useTextTruncateMediaQueries: if(
46
- vars.$useTextTruncateMediaQueries != null,
47
- vars.$useTextTruncateMediaQueries,
48
- settings.$useTextTruncateMediaQueries
49
- );
50
- $textTruncate: if(vars.$textTruncate != (), vars.$textTruncate, defs.$textTruncate);
51
-
52
- // Typographic Utilities
53
- // --------------------------------------
54
- // This file generates various typographic utility classes and @font-face rules
55
- // based on the settings and variables defined in the project.
56
- // Each section can be enabled or disabled via the `$use...` variables.
57
-
58
- // Font Families & @font-face ----- ----- ----- -----
59
- //
60
- // @description
61
- // Generates @font-face rules based on the `vars.$fonts` map and
62
- // corresponding utility classes for applying font families, weights, and styles.
63
- // The generation of these rules and classes is controlled by the
64
- // `$useFontFamilies` boolean variable.
65
- //
66
- // @see $useFontFamilies
67
- // @see vars.$fonts
68
- // @see vars.$fontWeights
69
- // @see vars.$fontStyles
70
- // @see configs.$fontWeightsValues (for mapping weight names to numerical values)
71
- // @see $defaultFontFamilies (for fallback fonts)
72
- // @see typo.font (mixin used for @font-face generation)
73
- // @see mQ.multiSizes (mixin used for responsive class generation)
74
- //
75
- // @generatedClasses
76
- // - @font-face rules for each font variant.
77
- // - Font family/weight classes:
78
- // - e.g., `.regular`, `.bold`, `.italic`
79
- // - e.g., `.fontName-0`, `.fontName-1` (if multiple fonts with same weight names, indexed by $fI)
80
- // - Responsive font family/weight classes (if `mQ.multiSizes` is configured):
81
- // - e.g., `md:regular`, `lg:bold`
82
- // - Font style classes (applied as modifiers):
83
- // - e.g., `.regular.italic`
84
- //
85
- // @example scss - Configuration in vars.$fonts (simplified)
86
- // vars.$fonts: (
87
- // sans: (
88
- // weights: (regular, bold),
89
- // styles: (normal, italic),
90
- // variants: (
91
- // latin: (title: "OpenSans") // `title` here is used for font-family in @font-face
92
- // )
93
- // )
94
- // );
95
- //
96
- // @example css - Generated CSS (simplified, assuming $fI is 0 for the first font)
97
- // @font-face { font-family: "OpenSans-0"; src: local("OpenSans Regular"); font-weight: 400; font-style: normal; }
98
- // .regular { font-family: "OpenSans-0", "Fallback Font"; font-weight: 400; }
99
- // .regular.italic { font-style: italic; }
100
- // .bold { font-family: "OpenSans-0", "Fallback Font"; font-weight: 700; }
101
- // // ... responsive versions if applicable ...
102
- //
103
-
104
- @if $useFontFamilies {
105
- // Font families ----- -----
106
- $fI: 0;
107
- @each $fontKey, $font in $fonts {
108
- // Validate parameters
109
- $checkedFontKey: val.string($fontKey, 'Typographic.fonts.title');
110
- $checkedFont: val.map($font, 'Typographic.fonts');
111
-
112
- $weights: map.get($font, 'weights');
113
- $weights: if($weights != null, map.get($font, 'weights'), $fontWeights);
114
- $styles: map.get($font, 'styles');
115
- $styles: if($styles != null, map.get($font, 'styles'), $fontStyles);
116
- $variants: map.get($font, 'variants');
117
-
118
- // Validate parameters
119
- $checkedWeights: val.list($weights, 'Typographic.fontFace.weights');
120
- $checkedStyles: val.list($styles, 'Typographic.fontFace.styles');
121
- $checkedVariants: val.map($variants, 'Typographic.fontFace.variants');
122
-
123
- @each $weight in $weights {
124
- @each $style in $styles {
125
- @each $lang, $fontFace in $variants {
126
- $title: map.get($fontFace, 'title');
127
- $unicode: if(map.has-key($fontFace, 'unicode'), map.get($fontFace, 'unicode'), null);
128
- $format: if(map.has-key($fontFace, 'format'), map.get($fontFace, 'format'), $fontFormat);
129
- $isLocal: if(map.has-key($fontFace, 'local'), map.get($fontFace, 'isLocal'), true);
130
- $externalUrl: if(map.has-key($fontFace, 'url'), map.get($fontFace, 'url'), null);
131
-
132
- // Validate parameters
133
- $checkedIsLocal: val.boolean($isLocal, 'Typographic.fontFace.local');
134
- $checkedTitle: val.string($title, 'Typographic.fontFace.title');
135
- $checkedFormat: val.string($format, 'Typographic.fontFace.format');
136
- @if $unicode {
137
- $checkedUnicode: val.string($unicode, 'Typographic.fontFace.unicode');
138
- }
139
-
140
- @include typo.font($fontKey, $title, $weight, $format, $style, $fI, $unicode, $isLocal, $externalUrl);
141
- }
142
- }
143
- }
144
-
145
- @include mQ.multiSizes($useFontFamiliesMediaQueries) using ($size, $divider) {
146
- @each $weight in $weights {
147
- @each $style in $styles {
148
- // Font weights
149
- // Validate parameters
150
- $styleClass: if($fI == 0, $weight, '#{$fontKey}\:#{$weight}');
151
- $weightValue: map.get(configs.$fontWeightsValues, $weight);
152
-
153
- $mainClass: if($size, #{$size}#{$divider}#{$styleClass}, $styleClass);
154
-
155
- .#{$mainClass} {
156
- font-family:
157
- '#{$styleClass}',
158
- $defaultFontFamilies if($size, !important, null);
159
- font-weight: if($size, $weightValue !important, $weightValue);
160
-
161
- @if meta.type-of($styles) == 'list' and list.length($styles) > 0 {
162
- &.#{$style} {
163
- font-style: $style;
164
- }
165
- }
166
- }
167
- }
168
- }
169
- }
170
-
171
- $fI: $fI + 1;
172
- }
173
- }
174
-
175
- // Font Sizes ----- ----- ----- -----
176
- //
177
- // @description
178
- // Generates utility classes for applying predefined font sizes.
179
- // The generation of these classes is controlled by the
180
- // `$useFontSizes` boolean variable.
181
- // Font sizes are defined in `$fontSizes`.
182
- // Responsive variants are generated using the `mQ.multiSizes` mixin.
183
- //
184
- // @see $useFontSizes
185
- // @see $fontSizes
186
- // @see mQ.multiSizes
187
- //
188
- // @generatedClasses
189
- // - Font size classes:
190
- // - e.g., `.text-sm`, `.text-base`, `.text-lg` (based on keys in `$fontSizes`)
191
- // - Responsive font size classes:
192
- // - e.g., `md:text-sm`, `lg:text-base`
193
- //
194
- // @example scss - Configuration in $fontSizes
195
- // $fontSizes: (
196
- // sm: 0.875rem,
197
- // base: 1rem
198
- // );
199
- //
200
- // @example css - Generated CSS (simplified)
201
- // .text-sm { font-size: 0.875rem; }
202
- // .text-base { font-size: 1rem; }
203
- // // ... responsive versions if applicable ...
204
- //
205
- @if $useFontSizes {
206
- @include mQ.multiSizes($useFontSizesMediaQueries) using ($size, $divider) {
207
- @each $fontSize, $value in $fontSizes {
208
- $mainClass: if($size, #{$size}#{$divider}#{$fontSize}, $fontSize);
209
-
210
- .#{$mainClass} {
211
- font-size: $value if($size, !important, null);
212
- }
213
- }
214
- }
215
- }
216
-
217
- // Font Shapes (Text Transformation) ----- ----- ----- -----
218
- //
219
- // @description
220
- // Generates utility classes for text transformations (e.g., uppercase, lowercase)
221
- // and other font-related shape properties like `font-variant`.
222
- // The generation of these classes is controlled by the
223
- // `$useFontShapes` boolean variable.
224
- // Shapes are defined in `configs.$fontShapes` and applied using the `typo.fontShapes` mixin.
225
- // Responsive variants are generated using the `mQ.multiSizes` mixin.
226
- //
227
- // @see $useFontShapes
228
- // @see configs.$fontShapes
229
- // @see typo.fontShapes
230
- // @see mQ.multiSizes
231
- //
232
- // @generatedClasses
233
- // - Text transformation/shape classes:
234
- // - e.g., `.uppercase`, `.lowercase`, `.small-caps` (based on `configs.$fontShapes`)
235
- // - Responsive text transformation/shape classes:
236
- // - e.g., `md:uppercase`, `lg:small-caps`
237
- //
238
- // @example scss - Configuration in configs.$fontShapes
239
- // configs.$fontShapes: (
240
- // text-transform: (uppercase, lowercase, capitalize),
241
- // font-variant: (small-caps)
242
- // );
243
- //
244
- // @example css - Generated CSS (simplified)
245
- // .uppercase { text-transform: uppercase; }
246
- // .small-caps { font-variant: small-caps; }
247
- // // ... responsive versions if applicable ...
248
- //
249
- @if $useFontShapes {
250
- @include mQ.multiSizes($useFontShapesMediaQueries) using ($size, $divider) {
251
- @each $type, $values in configs.$fontShapes {
252
- @each $value in $values {
253
- @include typo.fontShapes(if($size, '#{$size}#{$divider}#{$value}', $value), $type, $value);
254
- }
255
- }
256
- }
257
- }
258
-
259
- // Text Alignment ----- ----- ----- -----
260
- //
261
- // @description
262
- // Generates utility classes for text alignment (e.g., left, center, right).
263
- // The generation of these classes is controlled by the
264
- // `$useTextAligns` boolean variable.
265
- // Alignments are defined in `configs.$aligns`.
266
- // Responsive variants are generated using the `mQ.multiSizes` mixin.
267
- //
268
- // @see $useTextAligns
269
- // @see configs.$aligns
270
- // @see mQ.multiSizes
271
- //
272
- // @generatedClasses
273
- // - Text alignment classes:
274
- // - e.g., `.text-left`, `.text-center`, `.text-right`
275
- // - Responsive text alignment classes:
276
- // - e.g., `md:text-left`, `lg:text-center`
277
- //
278
- // @example scss - Configuration in configs.$aligns
279
- // configs.$aligns: (left, center, right, justify);
280
- //
281
- // @example css - Generated CSS (simplified)
282
- // .text-left { text-align: left; }
283
- // // ... responsive versions if applicable ...
284
- //
285
- @if $useTextAligns {
286
- @include mQ.multiSizes($useTextAlignsMediaQueries) using ($size, $divider) {
287
- @each $dir in configs.$aligns {
288
- // Validate parameters
289
- $checkedDir: val.listItem(configs.$aligns, $dir, 'Typographic.fonts.aligns');
290
-
291
- $mainClass: if($size, '#{$size}#{$divider}text-#{$dir}', 'text-#{$dir}');
292
- .#{$mainClass} {
293
- text-align: if($size, $dir !important, $dir);
294
- }
295
- }
296
- }
297
- }
298
-
299
- // Text Truncation ----- ----- ----- -----
300
- //
301
- // @description
302
- // Generates utility classes for multi-line text truncation (ellipsis).
303
- // The generation of these classes is controlled by the
304
- // `$useTextTruncate` boolean variable.
305
- // The maximum number of lines is controlled by `$textTruncate`.
306
- // Responsive variants are generated using the `mQ.multiSizes` mixin.
307
- //
308
- // @see $useTextTruncate
309
- // @see $textTruncate
310
- // @see mQ.multiSizes
311
- //
312
- // @generatedClasses
313
- // - Text truncation classes:
314
- // - e.g., `.text-lines:1`, `.text-lines:2`, ... up to `$textTruncate`
315
- // - Responsive text truncation classes:
316
- // - e.g., `md:text-lines:1`, `lg:text-lines:2`
317
- //
318
- // @example scss - Configuration in $textTruncate
319
- // $textTruncate: 3;
320
- //
321
- // @example css - Generated CSS (simplified for .text-lines:2)
322
- // .text-lines\:2 { /* Note: CSS escapes the colon */
323
- // display: -webkit-box;
324
- // -webkit-line-clamp: 2;
325
- // line-clamp: 2;
326
- // -webkit-box-orient: vertical;
327
- // overflow: hidden;
328
- // }
329
- // // ... responsive versions if applicable ...
330
- //
331
- @if $useTextTruncate {
332
- @include mQ.multiSizes($useTextTruncateMediaQueries) using ($size, $divider) {
333
- @each $i in $textTruncate {
334
- $mainClass: if($size, '#{$size}#{$divider}text-lines#{\:}#{$i}', 'text-lines#{\:}#{$i}');
335
-
336
- .#{$mainClass} {
337
- display: -webkit-box;
338
- -webkit-line-clamp: #{$i};
339
- line-clamp: #{$i};
340
- -webkit-box-orient: vertical;
341
- overflow: hidden;
342
- }
343
- }
344
- }
345
- }
1
+ @use 'sass:meta';
2
+ @use 'sass:string';
3
+ @use 'sass:map';
4
+ @use 'sass:list';
5
+ @use '../variables' as vars;
6
+ @use '../functions/validations' as val;
7
+ @use '../functions/typographic' as typo;
8
+ @use '../settings/configs' as configs;
9
+ @use '../functions/mediaQueries' as mQ;
10
+ @use '../settings/index' as settings;
11
+ @use '../settings/defaults' as defs;
12
+
13
+ // Definitions
14
+ $useFontFamilies: if(vars.$useFontFamilies != null, vars.$useFontFamilies, settings.$useFontFamilies);
15
+ $useFontFamiliesMediaQueries: if(
16
+ vars.$useFontFamiliesMediaQueries != null,
17
+ vars.$useFontFamiliesMediaQueries,
18
+ settings.$useFontFamiliesMediaQueries
19
+ );
20
+ $fonts: if(vars.$fonts != (), vars.$fonts, defs.$fonts);
21
+ $fontWeights: if(vars.$fontWeights != (), vars.$fontWeights, defs.$fontWeights);
22
+ $fontStyles: if(vars.$fontStyles != (), vars.$fontStyles, defs.$fontStyles);
23
+ $fontFormat: if(vars.$fontFormat != (), vars.$fontFormat, defs.$fontFormat);
24
+ $defaultFontFamilies: if(vars.$defaultFontFamilies != null, vars.$defaultFontFamilies, defs.$defaultFontFamilies);
25
+ $useFontSizes: if(vars.$useFontSizes != null, vars.$useFontSizes, settings.$useFontSizes);
26
+ $useFontSizesMediaQueries: if(
27
+ vars.$useFontSizesMediaQueries != null,
28
+ vars.$useFontSizesMediaQueries,
29
+ settings.$useFontSizesMediaQueries
30
+ );
31
+ $fontSizes: if(vars.$fontSizes != (), vars.$fontSizes, defs.$fontSizes);
32
+ $useFontShapes: if(vars.$useFontShapes != null, vars.$useFontShapes, settings.$useFontShapes);
33
+ $useFontShapesMediaQueries: if(
34
+ vars.$useFontShapesMediaQueries != null,
35
+ vars.$useFontShapesMediaQueries,
36
+ settings.$useFontShapesMediaQueries
37
+ );
38
+ $useTextAligns: if(vars.$useTextAligns != null, vars.$useTextAligns, settings.$useTextAligns);
39
+ $useTextAlignsMediaQueries: if(
40
+ vars.$useTextAlignsMediaQueries != null,
41
+ vars.$useTextAlignsMediaQueries,
42
+ settings.$useTextAlignsMediaQueries
43
+ );
44
+ $useTextTruncate: if(vars.$useTextTruncate != null, vars.$useTextTruncate, settings.$useTextTruncate);
45
+ $useTextTruncateMediaQueries: if(
46
+ vars.$useTextTruncateMediaQueries != null,
47
+ vars.$useTextTruncateMediaQueries,
48
+ settings.$useTextTruncateMediaQueries
49
+ );
50
+ $textTruncate: if(vars.$textTruncate != (), vars.$textTruncate, defs.$textTruncate);
51
+
52
+ // Typographic Utilities
53
+ // --------------------------------------
54
+ // This file generates various typographic utility classes and @font-face rules
55
+ // based on the settings and variables defined in the project.
56
+ // Each section can be enabled or disabled via the `$use...` variables.
57
+
58
+ // Font Families & @font-face ----- ----- ----- -----
59
+ //
60
+ // @description
61
+ // Generates @font-face rules based on the `vars.$fonts` map and
62
+ // corresponding utility classes for applying font families, weights, and styles.
63
+ // The generation of these rules and classes is controlled by the
64
+ // `$useFontFamilies` boolean variable.
65
+ //
66
+ // @see $useFontFamilies
67
+ // @see vars.$fonts
68
+ // @see vars.$fontWeights
69
+ // @see vars.$fontStyles
70
+ // @see configs.$fontWeightsValues (for mapping weight names to numerical values)
71
+ // @see $defaultFontFamilies (for fallback fonts)
72
+ // @see typo.font (mixin used for @font-face generation)
73
+ // @see mQ.multiSizes (mixin used for responsive class generation)
74
+ //
75
+ // @generatedClasses
76
+ // - @font-face rules for each font variant.
77
+ // - Font family/weight classes:
78
+ // - e.g., `.regular`, `.bold`, `.italic`
79
+ // - e.g., `.fontName-0`, `.fontName-1` (if multiple fonts with same weight names, indexed by $fI)
80
+ // - Responsive font family/weight classes (if `mQ.multiSizes` is configured):
81
+ // - e.g., `md:regular`, `lg:bold`
82
+ // - Font style classes (applied as modifiers):
83
+ // - e.g., `.regular.italic`
84
+ //
85
+ // @example scss - Configuration in vars.$fonts (simplified)
86
+ // vars.$fonts: (
87
+ // sans: (
88
+ // weights: (regular, bold),
89
+ // styles: (normal, italic),
90
+ // variants: (
91
+ // latin: (title: "OpenSans") // `title` here is used for font-family in @font-face
92
+ // )
93
+ // )
94
+ // );
95
+ //
96
+ // @example css - Generated CSS (simplified, assuming $fI is 0 for the first font)
97
+ // @font-face { font-family: "OpenSans-0"; src: local("OpenSans Regular"); font-weight: 400; font-style: normal; }
98
+ // .regular { font-family: "OpenSans-0", "Fallback Font"; font-weight: 400; }
99
+ // .regular.italic { font-style: italic; }
100
+ // .bold { font-family: "OpenSans-0", "Fallback Font"; font-weight: 700; }
101
+ // // ... responsive versions if applicable ...
102
+ //
103
+
104
+ @if $useFontFamilies {
105
+ // Font families ----- -----
106
+ $fI: 0;
107
+ @each $fontKey, $font in $fonts {
108
+ // Validate parameters
109
+ $checkedFontKey: val.string($fontKey, 'Typographic.fonts.title');
110
+ $checkedFont: val.map($font, 'Typographic.fonts');
111
+
112
+ $weights: map.get($font, 'weights');
113
+ $weights: if($weights != null, map.get($font, 'weights'), $fontWeights);
114
+ $styles: map.get($font, 'styles');
115
+ $styles: if($styles != null, map.get($font, 'styles'), $fontStyles);
116
+ $variants: map.get($font, 'variants');
117
+
118
+ // Validate parameters
119
+ $checkedWeights: val.list($weights, 'Typographic.fontFace.weights');
120
+ $checkedStyles: val.list($styles, 'Typographic.fontFace.styles');
121
+ $checkedVariants: val.map($variants, 'Typographic.fontFace.variants');
122
+
123
+ @each $weight in $weights {
124
+ @each $style in $styles {
125
+ @each $lang, $fontFace in $variants {
126
+ $title: map.get($fontFace, 'title');
127
+ $unicode: if(map.has-key($fontFace, 'unicode'), map.get($fontFace, 'unicode'), null);
128
+ $format: if(map.has-key($fontFace, 'format'), map.get($fontFace, 'format'), $fontFormat);
129
+ $isLocal: if(map.has-key($fontFace, 'local'), map.get($fontFace, 'isLocal'), true);
130
+ $externalUrl: if(map.has-key($fontFace, 'url'), map.get($fontFace, 'url'), null);
131
+
132
+ // Validate parameters
133
+ $checkedIsLocal: val.boolean($isLocal, 'Typographic.fontFace.local');
134
+ $checkedTitle: val.string($title, 'Typographic.fontFace.title');
135
+ $checkedFormat: val.string($format, 'Typographic.fontFace.format');
136
+ @if $unicode {
137
+ $checkedUnicode: val.string($unicode, 'Typographic.fontFace.unicode');
138
+ }
139
+
140
+ @include typo.font($fontKey, $title, $weight, $format, $style, $fI, $unicode, $isLocal, $externalUrl);
141
+ }
142
+ }
143
+ }
144
+
145
+ @include mQ.multiSizes($useFontFamiliesMediaQueries) using ($size, $divider) {
146
+ @each $weight in $weights {
147
+ @each $style in $styles {
148
+ // Font weights
149
+ // Validate parameters
150
+ $styleClass: if($fI == 0, $weight, '#{$fontKey}\:#{$weight}');
151
+ $weightValue: map.get(configs.$fontWeightsValues, $weight);
152
+
153
+ $mainClass: if($size, #{$size}#{$divider}#{$styleClass}, $styleClass);
154
+
155
+ .#{$mainClass} {
156
+ font-family:
157
+ '#{$styleClass}',
158
+ $defaultFontFamilies if($size, !important, null);
159
+ font-weight: if($size, $weightValue !important, $weightValue);
160
+
161
+ @if meta.type-of($styles) == 'list' and list.length($styles) > 0 {
162
+ &.#{$style} {
163
+ font-style: $style;
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
170
+
171
+ $fI: $fI + 1;
172
+ }
173
+ }
174
+
175
+ // Font Sizes ----- ----- ----- -----
176
+ //
177
+ // @description
178
+ // Generates utility classes for applying predefined font sizes.
179
+ // The generation of these classes is controlled by the
180
+ // `$useFontSizes` boolean variable.
181
+ // Font sizes are defined in `$fontSizes`.
182
+ // Responsive variants are generated using the `mQ.multiSizes` mixin.
183
+ //
184
+ // @see $useFontSizes
185
+ // @see $fontSizes
186
+ // @see mQ.multiSizes
187
+ //
188
+ // @generatedClasses
189
+ // - Font size classes:
190
+ // - e.g., `.text-sm`, `.text-base`, `.text-lg` (based on keys in `$fontSizes`)
191
+ // - Responsive font size classes:
192
+ // - e.g., `md:text-sm`, `lg:text-base`
193
+ //
194
+ // @example scss - Configuration in $fontSizes
195
+ // $fontSizes: (
196
+ // sm: 0.875rem,
197
+ // base: 1rem
198
+ // );
199
+ //
200
+ // @example css - Generated CSS (simplified)
201
+ // .text-sm { font-size: 0.875rem; }
202
+ // .text-base { font-size: 1rem; }
203
+ // // ... responsive versions if applicable ...
204
+ //
205
+ @if $useFontSizes {
206
+ @include mQ.multiSizes($useFontSizesMediaQueries) using ($size, $divider) {
207
+ @each $fontSize, $value in $fontSizes {
208
+ $mainClass: if($size, #{$size}#{$divider}#{$fontSize}, $fontSize);
209
+
210
+ .#{$mainClass} {
211
+ font-size: $value if($size, !important, null);
212
+ }
213
+ }
214
+ }
215
+ }
216
+
217
+ // Font Shapes (Text Transformation) ----- ----- ----- -----
218
+ //
219
+ // @description
220
+ // Generates utility classes for text transformations (e.g., uppercase, lowercase)
221
+ // and other font-related shape properties like `font-variant`.
222
+ // The generation of these classes is controlled by the
223
+ // `$useFontShapes` boolean variable.
224
+ // Shapes are defined in `configs.$fontShapes` and applied using the `typo.fontShapes` mixin.
225
+ // Responsive variants are generated using the `mQ.multiSizes` mixin.
226
+ //
227
+ // @see $useFontShapes
228
+ // @see configs.$fontShapes
229
+ // @see typo.fontShapes
230
+ // @see mQ.multiSizes
231
+ //
232
+ // @generatedClasses
233
+ // - Text transformation/shape classes:
234
+ // - e.g., `.uppercase`, `.lowercase`, `.small-caps` (based on `configs.$fontShapes`)
235
+ // - Responsive text transformation/shape classes:
236
+ // - e.g., `md:uppercase`, `lg:small-caps`
237
+ //
238
+ // @example scss - Configuration in configs.$fontShapes
239
+ // configs.$fontShapes: (
240
+ // text-transform: (uppercase, lowercase, capitalize),
241
+ // font-variant: (small-caps)
242
+ // );
243
+ //
244
+ // @example css - Generated CSS (simplified)
245
+ // .uppercase { text-transform: uppercase; }
246
+ // .small-caps { font-variant: small-caps; }
247
+ // // ... responsive versions if applicable ...
248
+ //
249
+ @if $useFontShapes {
250
+ @include mQ.multiSizes($useFontShapesMediaQueries) using ($size, $divider) {
251
+ @each $type, $values in configs.$fontShapes {
252
+ @each $value in $values {
253
+ @include typo.fontShapes(if($size, '#{$size}#{$divider}#{$value}', $value), $type, $value);
254
+ }
255
+ }
256
+ }
257
+ }
258
+
259
+ // Text Alignment ----- ----- ----- -----
260
+ //
261
+ // @description
262
+ // Generates utility classes for text alignment (e.g., left, center, right).
263
+ // The generation of these classes is controlled by the
264
+ // `$useTextAligns` boolean variable.
265
+ // Alignments are defined in `configs.$aligns`.
266
+ // Responsive variants are generated using the `mQ.multiSizes` mixin.
267
+ //
268
+ // @see $useTextAligns
269
+ // @see configs.$aligns
270
+ // @see mQ.multiSizes
271
+ //
272
+ // @generatedClasses
273
+ // - Text alignment classes:
274
+ // - e.g., `.text-left`, `.text-center`, `.text-right`
275
+ // - Responsive text alignment classes:
276
+ // - e.g., `md:text-left`, `lg:text-center`
277
+ //
278
+ // @example scss - Configuration in configs.$aligns
279
+ // configs.$aligns: (left, center, right, justify);
280
+ //
281
+ // @example css - Generated CSS (simplified)
282
+ // .text-left { text-align: left; }
283
+ // // ... responsive versions if applicable ...
284
+ //
285
+ @if $useTextAligns {
286
+ @include mQ.multiSizes($useTextAlignsMediaQueries) using ($size, $divider) {
287
+ @each $dir in configs.$aligns {
288
+ // Validate parameters
289
+ $checkedDir: val.listItem(configs.$aligns, $dir, 'Typographic.fonts.aligns');
290
+
291
+ $mainClass: if($size, '#{$size}#{$divider}text-#{$dir}', 'text-#{$dir}');
292
+ .#{$mainClass} {
293
+ text-align: if($size, $dir !important, $dir);
294
+ }
295
+ }
296
+ }
297
+ }
298
+
299
+ // Text Truncation ----- ----- ----- -----
300
+ //
301
+ // @description
302
+ // Generates utility classes for multi-line text truncation (ellipsis).
303
+ // The generation of these classes is controlled by the
304
+ // `$useTextTruncate` boolean variable.
305
+ // The maximum number of lines is controlled by `$textTruncate`.
306
+ // Responsive variants are generated using the `mQ.multiSizes` mixin.
307
+ //
308
+ // @see $useTextTruncate
309
+ // @see $textTruncate
310
+ // @see mQ.multiSizes
311
+ //
312
+ // @generatedClasses
313
+ // - Text truncation classes:
314
+ // - e.g., `.text-lines:1`, `.text-lines:2`, ... up to `$textTruncate`
315
+ // - Responsive text truncation classes:
316
+ // - e.g., `md:text-lines:1`, `lg:text-lines:2`
317
+ //
318
+ // @example scss - Configuration in $textTruncate
319
+ // $textTruncate: 3;
320
+ //
321
+ // @example css - Generated CSS (simplified for .text-lines:2)
322
+ // .text-lines\:2 { /* Note: CSS escapes the colon */
323
+ // display: -webkit-box;
324
+ // -webkit-line-clamp: 2;
325
+ // line-clamp: 2;
326
+ // -webkit-box-orient: vertical;
327
+ // overflow: hidden;
328
+ // }
329
+ // // ... responsive versions if applicable ...
330
+ //
331
+ @if $useTextTruncate {
332
+ @include mQ.multiSizes($useTextTruncateMediaQueries) using ($size, $divider) {
333
+ @each $i in $textTruncate {
334
+ $mainClass: if($size, '#{$size}#{$divider}text-lines#{\:}#{$i}', 'text-lines#{\:}#{$i}');
335
+
336
+ .#{$mainClass} {
337
+ display: -webkit-box;
338
+ -webkit-line-clamp: #{$i};
339
+ line-clamp: #{$i};
340
+ -webkit-box-orient: vertical;
341
+ overflow: hidden;
342
+ }
343
+ }
344
+ }
345
+ }