@nuvoui/core 1.2.1 → 1.2.3

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.
@@ -117,7 +117,7 @@
117
117
  * @description Sets padding on all sides
118
118
  * @param {Number|String} $val - Padding value
119
119
  */
120
- @mixin p($val) { & { padding: format-unit-value($val); }}
120
+ @mixin p($val) { padding: format-unit-value($val); }
121
121
 
122
122
  /**
123
123
  * @mixin px
@@ -138,38 +138,54 @@
138
138
  */
139
139
  @mixin py($val) {
140
140
  $val: format-unit-value($val);
141
-
141
+
142
142
  padding-top: $val;
143
143
  padding-bottom: $val;
144
144
  }
145
-
145
+
146
146
  /**
147
147
  * @mixin pt
148
148
  * @description Sets padding-top
149
149
  * @param {Number|String} $val - Padding value
150
150
  */
151
- @mixin pt($val) { $val: format-unit-value($val); padding-top: $val; }
151
+ @mixin pt($val) {
152
+ $val: format-unit-value($val);
153
+
154
+ padding-top: $val;
155
+ }
152
156
 
153
157
  /**
154
158
  * @mixin pr
155
159
  * @description Sets padding-right
156
160
  * @param {Number|String} $val - Padding value
157
161
  */
158
- @mixin pr($val) { $val: format-unit-value($val); padding-right: $val; }
162
+ @mixin pr($val) {
163
+ $val: format-unit-value($val);
164
+
165
+ padding-right: $val;
166
+ }
159
167
 
160
168
  /**
161
169
  * @mixin pb
162
170
  * @description Sets padding-bottom
163
171
  * @param {Number|String} $val - Padding value
164
172
  */
165
- @mixin pb($val) { $val: format-unit-value($val); padding-bottom: $val; }
173
+ @mixin pb($val) {
174
+ $val: format-unit-value($val);
175
+
176
+ padding-bottom: $val;
177
+ }
166
178
 
167
179
  /**
168
180
  * @mixin pl
169
181
  * @description Sets padding-left
170
182
  * @param {Number|String} $val - Padding value
171
183
  */
172
- @mixin pl($val) { $val: format-unit-value($val); padding-left: $val; }
184
+ @mixin pl($val) {
185
+ $val: format-unit-value($val);
186
+
187
+ padding-left: $val;
188
+ }
173
189
 
174
190
  // -----------------------------------------------
175
191
  // MARGIN MIXINS
@@ -180,7 +196,11 @@
180
196
  * @description Sets margin on all sides
181
197
  * @param {Number|String} $val - Margin value
182
198
  */
183
- @mixin m($val) { $val: format-unit-value($val); margin: $val; }
199
+ @mixin m($val) {
200
+ $val: format-unit-value($val);
201
+
202
+ margin: $val;
203
+ }
184
204
 
185
205
  /**
186
206
  * @mixin mx
@@ -189,7 +209,7 @@
189
209
  */
190
210
  @mixin mx($val) {
191
211
  $val: format-unit-value($val);
192
-
212
+
193
213
  margin-left: $val;
194
214
  margin-right: $val;
195
215
  }
@@ -211,40 +231,56 @@
211
231
  * @description Sets margin-top
212
232
  * @param {Number|String} $val - Margin value
213
233
  */
214
- @mixin mt($val) { $val: format-unit-value($val); margin-top: $val; }
234
+ @mixin mt($val) {
235
+ $val: format-unit-value($val);
236
+
237
+ margin-top: $val;
238
+ }
215
239
 
216
240
  /**
217
241
  * @mixin mr
218
242
  * @description Sets margin-right
219
243
  * @param {Number|String} $val - Margin value
220
244
  */
221
- @mixin mr($val) { $val: format-unit-value($val); margin-right: $val; }
245
+ @mixin mr($val) {
246
+ $val: format-unit-value($val);
247
+
248
+ margin-right: $val;
249
+ }
222
250
 
223
251
  /**
224
252
  * @mixin mb
225
253
  * @description Sets margin-bottom
226
254
  * @param {Number|String} $val - Margin value
227
255
  */
228
- @mixin mb($val) { $val: format-unit-value($val); margin-bottom: $val; }
256
+ @mixin mb($val) {
257
+ $val: format-unit-value($val);
258
+
259
+ margin-bottom: $val;
260
+ }
229
261
 
230
262
  /**
231
263
  * @mixin ml
232
264
  * @description Sets margin-left
233
265
  * @param {Number|String} $val - Margin value
234
266
  */
235
- @mixin ml($val) { $val: format-unit-value($val); margin-left: $val; }
267
+ @mixin ml($val) {
268
+ $val: format-unit-value($val);
269
+
270
+ margin-left: $val;
271
+ }
236
272
 
237
273
  /**
238
274
  * @mixin ml-auto
239
275
  * @description Sets margin-left to auto
240
276
  */
241
- @mixin ml-auto { margin-left: auto; }
277
+ @mixin ml-auto { margin-left: auto; }
242
278
 
243
279
  /**
244
280
  * @mixin mr-auto
245
281
  * @description Sets margin-right to auto
246
282
  */
247
- @mixin mr-auto { margin-right: auto; }
283
+ @mixin mr-auto { margin-right: auto; }
248
284
 
249
285
  /**
250
286
  * @mixin mx-auto
@@ -362,39 +398,39 @@
362
398
  // -----------------------------------------------
363
399
 
364
400
  @each $breakpoint, $width in $breakpoints {
365
- @media (min-width: #{$width}) {
366
- .mx-auto\@#{$breakpoint} { @include mx-auto; }
367
- .ml-auto\@#{$breakpoint} { @include ml-auto; }
368
- .mr-auto\@#{$breakpoint} { @include mr-auto; }
369
-
370
- // Generate utilities from spacing map
371
- @each $key, $value in $spacings {
372
- // Padding classes
373
- .p-#{$key}\@#{$breakpoint} { @include p($value); }
374
- .px-#{$key}\@#{$breakpoint} { @include px($value); }
375
- .py-#{$key}\@#{$breakpoint} { @include py($value); }
376
- .pt-#{$key}\@#{$breakpoint} { @include pt($value); }
377
- .pr-#{$key}\@#{$breakpoint} { @include pr($value); }
378
- .pb-#{$key}\@#{$breakpoint} { @include pb($value); }
379
- .pl-#{$key}\@#{$breakpoint} { @include pl($value); }
380
-
381
- // Margin classes
382
- .m-#{$key}\@#{$breakpoint} { @include m($value); }
383
- .mx-#{$key}\@#{$breakpoint} { @include mx($value); }
384
- .my-#{$key}\@#{$breakpoint} { @include my($value); }
385
- .mt-#{$key}\@#{$breakpoint} { @include mt($value); }
386
- .mr-#{$key}\@#{$breakpoint} { @include mr($value); }
387
- .mb-#{$key}\@#{$breakpoint} { @include mb($value); }
388
- .ml-#{$key}\@#{$breakpoint} { @include ml($value); }
389
-
390
- .gap-#{$key}\@#{$breakpoint} { gap: $value; }
391
- .gap-x-#{$key}\@#{$breakpoint} { column-gap: $value; }
392
- .gap-y-#{$key}\@#{$breakpoint} { row-gap: $value; }
393
-
394
- // Space classes
395
- .space-x-#{$key}\@#{$breakpoint} { @include space-x($value); }
396
- .space-y-#{$key}\@#{$breakpoint} { @include space-y($value); }
397
- }
401
+ @media (min-width: #{$width}) {
402
+ .mx-auto\@#{$breakpoint} { @include mx-auto; }
403
+ .ml-auto\@#{$breakpoint} { @include ml-auto; }
404
+ .mr-auto\@#{$breakpoint} { @include mr-auto; }
405
+
406
+ // Generate utilities from spacing map
407
+ @each $key, $value in $spacings {
408
+ // Padding classes
409
+ .p-#{$key}\@#{$breakpoint} { @include p($value); }
410
+ .px-#{$key}\@#{$breakpoint} { @include px($value); }
411
+ .py-#{$key}\@#{$breakpoint} { @include py($value); }
412
+ .pt-#{$key}\@#{$breakpoint} { @include pt($value); }
413
+ .pr-#{$key}\@#{$breakpoint} { @include pr($value); }
414
+ .pb-#{$key}\@#{$breakpoint} { @include pb($value); }
415
+ .pl-#{$key}\@#{$breakpoint} { @include pl($value); }
416
+
417
+ // Margin classes
418
+ .m-#{$key}\@#{$breakpoint} { @include m($value); }
419
+ .mx-#{$key}\@#{$breakpoint} { @include mx($value); }
420
+ .my-#{$key}\@#{$breakpoint} { @include my($value); }
421
+ .mt-#{$key}\@#{$breakpoint} { @include mt($value); }
422
+ .mr-#{$key}\@#{$breakpoint} { @include mr($value); }
423
+ .mb-#{$key}\@#{$breakpoint} { @include mb($value); }
424
+ .ml-#{$key}\@#{$breakpoint} { @include ml($value); }
425
+
426
+ .gap-#{$key}\@#{$breakpoint} { gap: $value; }
427
+ .gap-x-#{$key}\@#{$breakpoint} { column-gap: $value; }
428
+ .gap-y-#{$key}\@#{$breakpoint} { row-gap: $value; }
429
+
430
+ // Space classes
431
+ .space-x-#{$key}\@#{$breakpoint} { @include space-x($value); }
432
+ .space-y-#{$key}\@#{$breakpoint} { @include space-y($value); }
398
433
  }
434
+ }
399
435
  }
400
- }
436
+ }
@@ -0,0 +1,221 @@
1
+ @use '../abstracts' as *;
2
+ @use 'sass:map';
3
+
4
+ /**
5
+ * Transform Utilities
6
+ *
7
+ * - Translate (X, Y, Z)
8
+ * - Scale
9
+ * - Rotate
10
+ * - Skew
11
+ * - Transform origin
12
+ */
13
+
14
+ // Translation mixins
15
+ @mixin translate-x($value) {
16
+ & {
17
+ --translate-x: #{$value};
18
+
19
+ transform: translateX(var(--translate-x)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
20
+ }
21
+ }
22
+
23
+ @mixin translate-y($value) {
24
+ & {
25
+ --translate-y: #{$value};
26
+
27
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
28
+ }
29
+ }
30
+
31
+ @mixin translate-z($value) {
32
+ & {
33
+ --translate-z: #{$value};
34
+
35
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
36
+ }
37
+ }
38
+
39
+ @mixin translate($x, $y: null) {
40
+ & {
41
+ --translate-x: #{$x};
42
+
43
+ @if $y {
44
+ --translate-y: #{$y};
45
+ }
46
+
47
+ transform: translateX(var(--translate-x)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
48
+ }
49
+ }
50
+
51
+ // Scale mixins
52
+ @mixin scale-x($value) {
53
+ & {
54
+ --scale-x: #{$value};
55
+
56
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
57
+ }
58
+ }
59
+
60
+ @mixin scale-y($value) {
61
+ & {
62
+ --scale-y: #{$value};
63
+
64
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y)) scaleZ(var(--scale-z, 1));
65
+ }
66
+ }
67
+
68
+ @mixin scale($value) {
69
+ & {
70
+ --scale-x: #{$value};
71
+ --scale-y: #{$value};
72
+
73
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x)) scaleY(var(--scale-y)) scaleZ(var(--scale-z, 1));
74
+ }
75
+ }
76
+
77
+ // Rotation mixins
78
+ @mixin rotate($value) {
79
+ & {
80
+ --rotate: #{$value};
81
+
82
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
83
+ }
84
+ }
85
+
86
+ // Skew mixins
87
+ @mixin skew-x($value) {
88
+ & {
89
+ --skew-x: #{$value};
90
+
91
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
92
+ }
93
+ }
94
+
95
+ @mixin skew-y($value) {
96
+ & {
97
+ --skew-y: #{$value};
98
+
99
+ transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
100
+ }
101
+ }
102
+
103
+ // Transform origin
104
+ @mixin origin($value) {
105
+ & {
106
+ transform-origin: $value;
107
+ }
108
+ }
109
+
110
+ // Common transform values
111
+ $translate-values: (
112
+ '0': 0,
113
+ '1': 0.25rem,
114
+ '2': 0.5rem,
115
+ '3': 0.75rem,
116
+ '4': 1rem,
117
+ '5': 1.25rem,
118
+ '6': 1.5rem,
119
+ '8': 2rem,
120
+ '10': 2.5rem,
121
+ '12': 3rem,
122
+ '16': 4rem,
123
+ '20': 5rem,
124
+ '25p': 25%,
125
+ '33p': 33.333%,
126
+ '50p': 50%,
127
+ '66p': 66.667%,
128
+ '75p': 75%,
129
+ '100p': 100%,
130
+ '-1': -0.25rem,
131
+ '-2': -0.5rem,
132
+ '-3': -0.75rem,
133
+ '-4': -1rem,
134
+ '-5': -1.25rem,
135
+ '-6': -1.5rem,
136
+ '-8': -2rem,
137
+ '-10': -2.5rem,
138
+ '-12': -3rem,
139
+ '-16': -4rem,
140
+ '-20': -5rem,
141
+ '-25p': 25%,
142
+ '-33p': 33.333%,
143
+ '-50p': 50%,
144
+ '-66p': 66.667%,
145
+ '-75p': 75%,
146
+ '-100p': -100%,
147
+ );
148
+
149
+ // Generate utility classes
150
+ @if $generate-utility-classes {
151
+ // Translate utilities
152
+ @each $key, $value in $translate-values {
153
+ .translate-x-#{$key} { @include translate-x($value); }
154
+ .translate-y-#{$key} { @include translate-y($value); }
155
+ }
156
+
157
+ // Scale utilities
158
+ .scale-0 { @include scale(0); }
159
+ .scale-50 { @include scale(0.5); }
160
+ .scale-75 { @include scale(0.75); }
161
+ .scale-90 { @include scale(0.9); }
162
+ .scale-95 { @include scale(0.95); }
163
+ .scale-100 { @include scale(1); }
164
+ .scale-105 { @include scale(1.05); }
165
+ .scale-110 { @include scale(1.1); }
166
+ .scale-125 { @include scale(1.25); }
167
+ .scale-150 { @include scale(1.5); }
168
+
169
+ // Rotation utilities
170
+ .rotate-0 { @include rotate(0deg); }
171
+ .rotate-45 { @include rotate(45deg); }
172
+ .rotate-90 { @include rotate(90deg); }
173
+ .rotate-180 { @include rotate(180deg); }
174
+ .rotate-270 { @include rotate(270deg); }
175
+ .-rotate-45 { @include rotate(-45deg); }
176
+ .-rotate-90 { @include rotate(-90deg); }
177
+ .-rotate-180 { @include rotate(-180deg); }
178
+ .-rotate-270 { @include rotate(-270deg); }
179
+
180
+ // Origin utilities
181
+ .origin-center { @include origin(center); }
182
+ .origin-top { @include origin(top); }
183
+ .origin-top-right { @include origin(top right); }
184
+ .origin-right { @include origin(right); }
185
+ .origin-bottom-right { @include origin(bottom right); }
186
+ .origin-bottom { @include origin(bottom); }
187
+ .origin-bottom-left { @include origin(bottom left); }
188
+ .origin-left { @include origin(left); }
189
+ .origin-top-left { @include origin(top left); }
190
+
191
+ // Responsive variants
192
+ @each $breakpoint, $width in $breakpoints {
193
+ @media (min-width: #{$width}) {
194
+ @each $key, $value in $translate-values {
195
+ .translate-x-#{$key}\@#{$breakpoint} { @include translate-x($value); }
196
+ .translate-y-#{$key}\@#{$breakpoint} { @include translate-y($value); }
197
+ }
198
+
199
+ // Scale responsive
200
+ .scale-0\@#{$breakpoint} { @include scale(0); }
201
+ .scale-50\@#{$breakpoint} { @include scale(0.5); }
202
+ .scale-75\@#{$breakpoint} { @include scale(0.75); }
203
+ .scale-90\@#{$breakpoint} { @include scale(0.9); }
204
+ .scale-95\@#{$breakpoint} { @include scale(0.95); }
205
+ .scale-100\@#{$breakpoint} { @include scale(1); }
206
+ .scale-105\@#{$breakpoint} { @include scale(1.05); }
207
+ .scale-110\@#{$breakpoint} { @include scale(1.1); }
208
+ .scale-125\@#{$breakpoint} { @include scale(1.25); }
209
+ .scale-150\@#{$breakpoint} { @include scale(1.5); }
210
+
211
+ // Rotation responsive
212
+ .rotate-0\@#{$breakpoint} { @include rotate(0deg); }
213
+ .rotate-45\@#{$breakpoint} { @include rotate(45deg); }
214
+ .rotate-90\@#{$breakpoint} { @include rotate(90deg); }
215
+ .rotate-180\@#{$breakpoint} { @include rotate(180deg); }
216
+ .-rotate-45\@#{$breakpoint} { @include rotate(-45deg); }
217
+ .-rotate-90\@#{$breakpoint} { @include rotate(-90deg); }
218
+ .-rotate-180\@#{$breakpoint} { @include rotate(-180deg); }
219
+ }
220
+ }
221
+ }
@@ -153,4 +153,4 @@ $delays: (
153
153
  }
154
154
  }
155
155
  }
156
- }
156
+ }
@@ -2,6 +2,7 @@
2
2
  // Module: Text
3
3
 
4
4
  @use 'sass:map';
5
+ @use 'sass:meta';
5
6
 
6
7
  // Import variables
7
8
  @use '../abstracts' as VAR;
@@ -31,12 +32,11 @@
31
32
  * @param {string} $size - The size of the text.
32
33
  */
33
34
  @mixin text-size($size) {
34
- @if map.has-key(VAR.$font-sizes, $size) {
35
- font-size: map.get(VAR.$font-sizes, $size);
36
- } @else {
37
- font-size: $size;
38
- }
39
-
35
+ @if map.has-key(VAR.$font-sizes, $size) {
36
+ font-size: map.get(VAR.$font-sizes, $size);
37
+ } @else {
38
+ font-size: $size;
39
+ }
40
40
  }
41
41
 
42
42
  // Font weights
@@ -50,13 +50,34 @@
50
50
  @mixin font-extrabold { font-weight: 800; }
51
51
  @mixin font-black { font-weight: 900; }
52
52
 
53
+
54
+ @mixin leading($value){
55
+ @if meta.type-of($value) == 'number' {
56
+ line-height: $value;
57
+ } @else if $value == 'none' {
58
+ line-height: 1;
59
+ } @else if $value == 'tight' {
60
+ line-height: 1.25;
61
+ } @else if $value == 'snug' {
62
+ line-height: 1.375;
63
+ } @else if $value == 'normal' {
64
+ line-height: 1.5;
65
+ } @else if $value == 'relaxed' {
66
+ line-height: 1.625;
67
+ } @else if $value == 'loose' {
68
+ line-height: 2;
69
+ } @else {
70
+ line-height: $value;
71
+ }
72
+ }
73
+
53
74
  // Line heights
54
- @mixin leading-none { line-height: 1; }
55
- @mixin leading-tight { line-height: 1.25; }
56
- @mixin leading-snug { line-height: 1.375; }
57
- @mixin leading-normal { line-height: 1.5; }
58
- @mixin leading-relaxed { line-height: 1.625; }
59
- @mixin leading-loose { line-height: 2; }
75
+ @mixin leading-none { @include leading(none);}
76
+ @mixin leading-tight { @include leading(tight);}
77
+ @mixin leading-snug { @include leading(snug);}
78
+ @mixin leading-normal { @include leading(normal);}
79
+ @mixin leading-relaxed { @include leading(relaxed);}
80
+ @mixin leading-loose { @include leading(loose);}
60
81
 
61
82
  // Text alignment
62
83
  @mixin text-left { text-align: left; }
@@ -72,16 +93,28 @@
72
93
  @mixin normal-case { text-transform: none; }
73
94
 
74
95
  // Font style mixins
75
- @mixin italic { font-style: italic; }
76
- @mixin not-italic { font-style: normal; }
96
+ @mixin italic { font-style: italic; }
97
+ @mixin not-italic { font-style: normal; }
77
98
 
78
99
  // Text decoration mixins
79
- @mixin underline { text-decoration: underline; }
80
- @mixin line-through { text-decoration: line-through; }
81
- @mixin no-underline { text-decoration: none; }
100
+ @mixin underline { text-decoration: underline; }
101
+ @mixin line-through { text-decoration: line-through; }
102
+ @mixin no-underline { text-decoration: none; }
82
103
 
83
104
  // Text overflow mixin
84
- @mixin truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
105
+ @mixin truncate {
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ white-space: nowrap;
109
+ }
110
+
111
+ @mixin overflow-label {
112
+ white-space: nowrap;
113
+ word-break: break-all;
114
+ text-overflow: ellipsis;
115
+ overflow: hidden;
116
+ min-width: 0;
117
+ }
85
118
 
86
119
  @mixin truncate-lines($lines: 2) {
87
120
  display: -webkit-box;
@@ -92,7 +125,11 @@
92
125
  }
93
126
 
94
127
 
95
- @mixin break-normal { overflow-wrap: normal; word-break: normal; }
128
+ @mixin break-normal {
129
+ overflow-wrap: normal;
130
+ word-break: normal;
131
+ }
132
+
96
133
  @mixin break-words { overflow-wrap: break-word; }
97
134
  @mixin break-all { word-break: break-all; }
98
135
  @mixin whitespace-normal { white-space: normal; }
@@ -102,6 +139,35 @@
102
139
  @mixin whitespace-pre-wrap { white-space: pre-wrap; }
103
140
 
104
141
 
142
+ // Custom letter spacing mixin with value
143
+ @mixin tracking($value) {
144
+ @if meta.type-of($value) == 'number' {
145
+ letter-spacing: $value;
146
+ } @else if $value == 'tighter' {
147
+ letter-spacing: -0.05em;
148
+ } @else if $value == 'tight' {
149
+ letter-spacing: -0.025em;
150
+ } @else if $value == 'normal' {
151
+ letter-spacing: 0;
152
+ } @else if $value == 'wide' {
153
+ letter-spacing: 0.025em;
154
+ } @else if $value == 'wider' {
155
+ letter-spacing: 0.05em;
156
+ } @else if $value == 'widest' {
157
+ letter-spacing: 0.1em;
158
+ } @else {
159
+ letter-spacing: $value;
160
+ }
161
+ }
162
+
163
+ @mixin tracking-tighter { @include tracking(tighter) };
164
+ @mixin tracking-tight { @include tracking(tight) };
165
+ @mixin tracking-normal { @include tracking(normal) };
166
+ @mixin tracking-wide { @include tracking(wide) };
167
+ @mixin tracking-wider { @include tracking(wider) };
168
+ @mixin tracking-widest { @include tracking(widest) };
169
+
170
+
105
171
  @mixin responsive-typography($breakpoint: null) {
106
172
  $suffix: if($breakpoint, "\\@#{$breakpoint}", "");
107
173
 
@@ -153,6 +219,15 @@
153
219
  .truncate-3#{$suffix} { @include truncate-lines(3); }
154
220
  .truncate-4#{$suffix} { @include truncate-lines(4); }
155
221
  .truncate-5#{$suffix} { @include truncate-lines(5); }
222
+
223
+ .tracking-tighter#{$suffix} { @include tracking(tighter) };
224
+ .tracking-tight#{$suffix} { @include tracking(tight) };
225
+ .tracking-normal#{$suffix} { @include tracking(normal) };
226
+ .tracking-wide#{$suffix} { @include tracking(wide) };
227
+ .tracking-wider#{$suffix} { @include tracking(wider) };
228
+ .tracking-widest#{$suffix} { @include tracking(widest) };
229
+
230
+ .overflow-label#{$suffix}{@include overflow-label};
156
231
  }
157
232
 
158
233
  @if VAR.$generate-utility-classes {
@@ -167,12 +242,11 @@
167
242
  .whitespace-pre-wrap { @include whitespace-pre-wrap; }
168
243
 
169
244
  @each $breakpoint, $width in VAR.$breakpoints {
170
- @media (min-width: #{$width}) {
171
- @each $size, $val in VAR.$font-sizes {
172
- .text-#{$size}\@#{$breakpoint} { @include text-size($size); }
173
- }
174
- @include responsive-typography($breakpoint);
245
+ @media (min-width: #{$width}) {
246
+ @each $size, $val in VAR.$font-sizes {
247
+ .text-#{$size}\@#{$breakpoint} { @include text-size($size); }
175
248
  }
249
+ @include responsive-typography($breakpoint);
250
+ }
176
251
  }
177
-
178
- }
252
+ }