@nuvoui/core 1.2.7 → 1.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 (35) hide show
  1. package/dist/nuvoui.css +3252 -2709
  2. package/dist/nuvoui.css.map +1 -1
  3. package/dist/nuvoui.min.css +1 -1
  4. package/dist/nuvoui.min.css.map +1 -1
  5. package/package.json +3 -3
  6. package/src/styles/abstracts/_config.scss +36 -8
  7. package/src/styles/abstracts/_functions.scss +16 -5
  8. package/src/styles/base/_base.scss +2 -2
  9. package/src/styles/base/_reset.scss +0 -2
  10. package/src/styles/build.scss +3 -0
  11. package/src/styles/layouts/_container.scss +8 -1
  12. package/src/styles/layouts/_flex.scss +230 -292
  13. package/src/styles/layouts/_grid.scss +66 -73
  14. package/src/styles/mixins-map.json +1 -0
  15. package/src/styles/mixins-map.scss +1 -1
  16. package/src/styles/themes/_theme.scss +10 -10
  17. package/src/styles/utilities/_alignment.scss +2 -1
  18. package/src/styles/utilities/_animations.scss +20 -32
  19. package/src/styles/utilities/_backdrop-filters.scss +12 -16
  20. package/src/styles/utilities/_borders.scss +3 -5
  21. package/src/styles/utilities/_container-queries.scss +17 -21
  22. package/src/styles/utilities/_cursor.scss +2 -1
  23. package/src/styles/utilities/_display.scss +18 -39
  24. package/src/styles/utilities/_helpers.scss +1 -0
  25. package/src/styles/utilities/_media-queries.scss +3 -5
  26. package/src/styles/utilities/_opacity.scss +52 -67
  27. package/src/styles/utilities/_position.scss +104 -132
  28. package/src/styles/utilities/_shadows.scss +9 -14
  29. package/src/styles/utilities/_sizing.scss +1 -1
  30. package/src/styles/utilities/_spacing.scss +143 -205
  31. package/src/styles/utilities/_tooltips.scss +203 -200
  32. package/src/styles/utilities/_transforms.scss +32 -13
  33. package/src/styles/utilities/_transitions.scss +8 -10
  34. package/src/styles/utilities/_typography.scss +17 -22
  35. package/src/styles/utilities/_z-index.scss +12 -19
@@ -2,510 +2,441 @@
2
2
  // Module: Flex | Flex Inline
3
3
  // Note: Gap utilities are defined in _spacing.scss
4
4
 
5
- /**
6
- * @component Flex
7
- * @description Flexbox layout system for creating flexible page layouts
8
- *
9
- * @example
10
- * <div class="flex row between x-center">
11
- * <div class="w-6">Left column (6 units)</div>
12
- * <div class="w-6">Right column (6 units)</div>
13
- * </div>
14
- *
15
- * <div class="flex col@md row@lg">
16
- * <!-- Changes direction based on breakpoint -->
17
- * </div>
18
- *
19
- * @classes
20
- * Base:
21
- * - flex: Creates a flex container
22
- *
23
- * Direction:
24
- * - row: Sets flex-direction to row
25
- * - col: Sets flex-direction to column
26
- * - row-reverse: Reverses row direction
27
- * - col-reverse: Reverses column direction
28
- *
29
- * Alignment:
30
- * - start/end/center: Controls justify-content
31
- * - x-start/x-end/x-center: Controls align-items
32
- *
33
- * Child elements:
34
- * - w-{1-12}: Sets width based on column count
35
- * - grow: Allows item to grow
36
- * - shrink/no-shrink: Controls shrink behavior
37
- *
38
- * @responsive
39
- * All classes support responsive variants using @breakpoint suffix:
40
- * - row@md: Row direction on medium screens and up
41
- * - between@lg: Space-between on large screens
42
- *
43
- * @see grid
44
- */
5
+ // @component Flex
6
+ // @description Flexbox layout system for creating flexible page layouts
7
+
8
+ // @example
9
+ // <div class="flex row between x-center">
10
+ // <div class="w-6">Left column (6 units)</div>
11
+ // <div class="w-6">Right column (6 units)</div>
12
+ // </div>
13
+
14
+ // <div class="flex col@md row@lg">
15
+ // <!-- Changes direction based on breakpoint -->
16
+ // </div>
17
+
18
+ // @classes
19
+ // Base:
20
+ // - flex: Creates a flex container
21
+
22
+ // Direction:
23
+ // - row: Sets flex-direction to row
24
+ // - col: Sets flex-direction to column
25
+ // - row-reverse: Reverses row direction
26
+ // - col-reverse: Reverses column direction
27
+
28
+ // Alignment:
29
+ // - start/end/center: Controls justify-content
30
+ // - x-start/x-end/x-center: Controls align-items
31
+
32
+ // Child elements:
33
+ // - w-{1-12}: Sets width based on column count
34
+ // - grow: Allows item to grow
35
+ // - shrink/no-shrink: Controls shrink behavior
36
+
37
+ // @responsive
38
+ // All classes support responsive variants using @breakpoint suffix:
39
+ // - row@md: Row direction on medium screens and up
40
+ // - between@lg: Space-between on large screens
41
+
42
+ // @see grid
45
43
 
46
44
  @use "sass:math";
47
45
  @use "../utilities/media-queries" as MC;
48
46
  @use "../abstracts/config" as VAR;
49
47
  @use "../abstracts/functions" as FN;
50
48
 
51
- /**
52
- * @description Establishes a flex container.
53
- */
49
+ // @description Establishes a flex container.
54
50
  @mixin flex {
55
51
  display: flex;
56
52
  }
57
53
 
58
- /**
59
- * @description Establishes a flex-inline container.
60
- */
54
+ // @description Establishes a flex-inline container.
61
55
  @mixin flex-inline {
62
56
  display: inline-flex;
63
57
  }
64
58
 
65
- /**
66
- * @description Sets flex-direction to row.
67
- * @dependencies flex | flex-inline
68
- */
59
+ // @description Sets flex-direction to row.
60
+ // @dependencies flex | flex-inline
69
61
  @mixin row {
70
62
  flex-direction: row;
71
63
  }
72
64
 
73
- /**
74
- * @description Sets flex-direction to row-reverse.
75
- * @dependencies flex | flex-inline
76
- */
65
+ // @description Sets flex-direction to row-reverse.
66
+ // @dependencies flex | flex-inline
77
67
  @mixin row-reverse {
78
68
  flex-direction: row-reverse;
79
69
  }
80
70
 
81
- /**
82
- * @description Sets flex-direction to column.
83
- * @dependencies flex | flex-inline
84
- */
71
+ // @description Sets flex-direction to column.
72
+ // @dependencies flex | flex-inline
85
73
  @mixin col {
86
74
  flex-direction: column;
87
75
  }
88
76
 
89
- /**
90
- * @description Sets flex-direction to column-reverse.
91
- * @dependencies flex | flex-inline
92
- */
77
+ // @description Sets flex-direction to column-reverse.
78
+ // @dependencies flex | flex-inline
93
79
  @mixin col-reverse {
94
80
  flex-direction: column-reverse;
95
81
  }
96
82
 
97
- /**
98
- * @description Sets flex-wrap to wrap.
99
- * @dependencies flex | flex-inline
100
- */
83
+ // @description Sets flex-wrap to wrap.
84
+ // @dependencies flex | flex-inline
101
85
  @mixin wrap {
102
86
  flex-wrap: wrap;
103
87
  }
104
88
 
105
- /**
106
- * @description Sets flex-wrap to nowrap.
107
- * @dependencies flex | flex-inline
108
- */
89
+ // @description Sets flex-wrap to nowrap.
90
+ // @dependencies flex | flex-inline
109
91
  @mixin nowrap {
110
92
  flex-wrap: nowrap;
111
93
  }
112
94
 
113
- /**
114
- * @description Sets flex-wrap to wrap-reverse
115
- * @dependencies flex | flex-inline
116
- */
95
+ // @description Sets flex-wrap to wrap-reverse
96
+ // @dependencies flex | flex-inline
117
97
  @mixin wrap-reverse {
118
98
  flex-wrap: wrap-reverse;
119
99
  }
120
100
 
121
- /**
122
- * @description Sets justify-content to flex-start
123
- * @dependencies flex | flex-inline
124
- */
101
+ // @description Sets justify-content to flex-start
102
+ // @dependencies flex | flex-inline
125
103
  @mixin start {
126
104
  justify-content: flex-start;
127
105
  }
128
106
 
129
- /**
130
- * @description Sets justify-content to flex-end
131
- * @dependencies flex | flex-inline
132
- */
107
+ // @description Sets justify-content to flex-end
108
+ // @dependencies flex | flex-inline
133
109
  @mixin end {
134
110
  justify-content: flex-end;
135
111
  }
136
112
 
137
- /**
138
- * @description Sets justify-content to center
139
- * @dependencies flex | flex-inline
140
- */
113
+ // @description Sets justify-content to center
114
+ // @dependencies flex | flex-inline
141
115
  @mixin center {
142
116
  justify-content: center;
143
117
  }
144
118
 
145
- /**
146
- * @description Sets justify-content to stretch
147
- * @dependencies flex | flex-inline
148
- */
119
+ // @description Sets justify-content to stretch
120
+ // @dependencies flex | flex-inline
149
121
  @mixin stretch {
150
122
  justify-content: stretch;
151
123
  }
152
124
 
153
- /**
154
- * @description Sets justify-content to space-between
155
- * @dependencies flex | flex-inline
156
- */
125
+ // @description Sets justify-content to space-between
126
+ // @dependencies flex | flex-inline
157
127
  @mixin between {
158
128
  justify-content: space-between;
159
129
  }
160
130
 
161
- /**
162
- * @description Sets justify-content to space-around
163
- * @dependencies flex | flex-inline
164
- */
131
+ // @description Sets justify-content to space-around
132
+ // @dependencies flex | flex-inline
165
133
  @mixin around {
166
134
  justify-content: space-around;
167
135
  }
168
136
 
169
- /**
170
- * @description Sets justify-content to space-evenly
171
- * @dependencies flex | flex-inline
172
- */
137
+ // @description Sets justify-content to space-evenly
138
+ // @dependencies flex | flex-inline
173
139
  @mixin evenly {
174
140
  justify-content: space-evenly;
175
141
  }
176
142
 
177
143
  // Cross Axis Alignment Mixins
178
144
 
179
- /**
180
- * @description Sets align-items to flex-start - aligns items to the start of the cross axis.
181
- * @dependencies flex | flex-inline
182
- */
145
+ // @description Sets align-items to flex-start - aligns items to the start of the cross axis.
146
+ // @dependencies flex | flex-inline
183
147
  @mixin x-start {
184
148
  align-items: flex-start;
185
149
  }
186
150
 
187
- /**
188
- * @description Sets align-items to flex-end - aligns items to the end of the cross axis.
189
- * @dependencies flex | flex-inline
190
- */
151
+ // @description Sets align-items to flex-end - aligns items to the end of the cross axis.
152
+ // @dependencies flex | flex-inline
191
153
  @mixin x-end {
192
154
  align-items: flex-end;
193
155
  }
194
156
 
195
- /**
196
- * @description Sets align-items to center - aligns items to the center of the cross axis.
197
- * @dependencies flex | flex-inline
198
- */
157
+ // @description Sets align-items to center - aligns items to the center of the cross axis.
158
+ // @dependencies flex | flex-inline
199
159
  @mixin x-center {
200
160
  align-items: center;
201
161
  }
202
162
 
203
- /**
204
- * @description Sets align-items to stretch - aligns items to the stretch of the cross axis.
205
- * @dependencies flex | flex-inline
206
- */
163
+ // @description Sets align-items to stretch - aligns items to the stretch of the cross axis.
164
+ // @dependencies flex | flex-inline
207
165
  @mixin x-stretch {
208
166
  align-items: stretch;
209
167
  }
210
168
 
211
- /**
212
- * @description Sets align-items to baseline - aligns items to the baseline of the cross axis.
213
- * @dependencies flex | flex-inline
214
- */
169
+ // @description Sets align-items to baseline - aligns items to the baseline of the cross axis.
170
+ // @dependencies flex | flex-inline
215
171
  @mixin x-baseline {
216
172
  align-items: baseline;
217
173
  }
218
174
 
219
175
  // Cross Axis Content Mixins
220
176
 
221
- /**
222
- * @description Sets align-content to flex-start - aligns content to the start of the cross axis.
223
- * @dependencies flex | flex-inline
224
- */
177
+ // @description Sets align-content to flex-start - aligns content to the start of the cross axis.
178
+ // @dependencies flex | flex-inline
225
179
  @mixin x-content-start {
226
180
  align-content: flex-start;
227
181
  }
228
182
 
229
- /**
230
- * @description Sets align-content to flex-end - aligns content to the end of the cross axis.
231
- * @dependencies flex | flex-inline
232
- */
183
+ // @description Sets align-content to flex-end - aligns content to the end of the cross axis.
184
+ // @dependencies flex | flex-inline
233
185
  @mixin x-content-end {
234
186
  align-content: flex-end;
235
187
  }
236
188
 
237
- /**
238
- * @description Sets align-content to center - aligns content to the center of the cross axis.
239
- * @dependencies flex | flex-inline
240
- */
189
+ // @description Sets align-content to center - aligns content to the center of the cross axis.
190
+ // @dependencies flex | flex-inline
241
191
  @mixin x-content-center {
242
192
  align-content: center;
243
193
  }
244
194
 
245
- /**
246
- * @description Sets align-content to space-between - aligns content to the space between the cross axis.
247
- * @dependencies flex | flex-inline
248
- */
195
+ // @description Sets align-content to space-between - aligns content to the space between the cross axis.
196
+ // @dependencies flex | flex-inline
249
197
  @mixin x-content-between {
250
198
  align-content: space-between;
251
199
  }
252
200
 
253
- /**
254
- * @description Sets align-content to space-around - aligns content to the space around the cross axis.
255
- * @dependencies flex | flex-inline
256
- */
201
+ // @description Sets align-content to space-around - aligns content to the space around the cross axis.
202
+ // @dependencies flex | flex-inline
257
203
  @mixin x-content-around {
258
204
  align-content: space-around;
259
205
  }
260
206
 
261
- /**
262
- * @description Sets align-content to space-evenly - aligns content to the space evenly between the cross axis.
263
- * @dependencies flex | flex-inline
264
- */
207
+ // @description Sets align-content to space-evenly - aligns content to the space evenly between the cross axis.
208
+ // @dependencies flex | flex-inline
265
209
  @mixin x-content-evenly {
266
210
  align-content: space-evenly;
267
211
  }
268
212
 
269
- /**
270
- * @description Sets align-content to stretch - aligns content to the stretch of the cross axis.
271
- * @dependencies flex | flex-inline
272
- */
213
+ // @description Sets align-content to stretch - aligns content to the stretch of the cross axis.
214
+ // @dependencies flex | flex-inline
273
215
  @mixin x-content-stretch {
274
216
  align-content: stretch;
275
217
  }
276
218
 
277
219
  // Self Alignment Mixins
278
220
 
279
- /**
280
- * @description Sets align-self to auto
281
- * @dependencies flex | flex-inline
282
- */
221
+ // @description Sets align-self to auto
222
+ // @dependencies flex | flex-inline
283
223
  @mixin self-auto {
284
224
  align-self: auto;
285
225
  }
286
226
 
287
- /**
288
- * @description Sets align-self to flex-start
289
- * @dependencies flex | flex-inline
290
- */
227
+ // @description Sets align-self to flex-start
228
+ // @dependencies flex | flex-inline
291
229
  @mixin self-start {
292
230
  align-self: flex-start;
293
231
  }
294
232
 
295
- /**
296
- * @description Sets align-self to flex-end
297
- * @dependencies flex | flex-inline
298
- */
233
+ // @description Sets align-self to flex-end
234
+ // @dependencies flex | flex-inline
299
235
  @mixin self-end {
300
236
  align-self: flex-end;
301
237
  }
302
238
 
303
- /**
304
- * @description Sets align-self to center
305
- * @dependencies flex | flex-inline
306
- */
239
+ // @description Sets align-self to center
240
+ // @dependencies flex | flex-inline
307
241
  @mixin self-center {
308
242
  align-self: center;
309
243
  }
310
244
 
311
- /**
312
- * @description Sets align-self to stretch
313
- * @dependencies flex | flex-inline
314
- */
245
+ // @description Sets align-self to stretch
246
+ // @dependencies flex | flex-inline
315
247
  @mixin self-stretch {
316
248
  align-self: stretch;
317
249
  }
318
250
 
319
- /**
320
- * @description Sets align-self to baseline
321
- * @dependencies flex | flex-inline
322
- */
251
+ // @description Sets align-self to baseline
252
+ // @dependencies flex | flex-inline
323
253
  @mixin self-baseline {
324
254
  align-self: baseline;
325
255
  }
326
256
 
327
- /**
328
- * @description Sets flex-shrink to 1 - allows the item to shrink.
329
- * @dependencies flex | flex-inline
330
- */
257
+ // @description Sets flex-shrink to 1 - allows the item to shrink.
258
+ // @dependencies flex | flex-inline
331
259
  @mixin shrink {
332
260
  flex-shrink: 1;
333
261
  }
334
262
 
335
- /**
336
- * @description Sets flex-shrink to 0 - prevents the item from shrinking.
337
- * @dependencies flex | flex-inline
338
- */
263
+ // @description Sets flex-shrink to 0 - prevents the item from shrinking.
264
+ // @dependencies flex | flex-inline
339
265
  @mixin no-shrink {
340
266
  flex-shrink: 0;
341
267
  }
342
268
 
343
- /**
344
- * @description Sets flex-shrink to 2 - allows the item to shrink twice as much as the other items.
345
- * @dependencies flex | flex-inline
346
- */
269
+ // @description Sets flex-shrink to 2 - allows the item to shrink twice as much as the other items.
270
+ // @dependencies flex | flex-inline
347
271
  @mixin shrink-twice {
348
272
  flex-shrink: 2;
349
273
  }
350
274
 
351
275
  // Flex Child Mixins
352
276
 
353
- /**
354
- * @description Sets flex to 0 0 100%
355
- */
277
+ // @description Sets flex to 0 0 100%
356
278
  @mixin fill-full {
357
279
  flex: 0 0 100%;
358
280
  }
359
281
 
360
- /**
361
- * @description Sets flex to 1 1 auto - allows the item to grow and shrink.
362
- */
282
+ // @description Sets flex to 1 1 auto - allows the item to grow and shrink.
363
283
  @mixin fill-auto {
364
284
  flex: 1 1 auto;
365
285
  }
366
286
 
367
- /**
368
- * @description Sets flex to 1 1 0% - allows the item to grow but not shrink.
369
- */
287
+ // @description Sets flex to 1 1 0% - allows the item to grow but not shrink.
370
288
  @mixin grow {
371
289
  flex: 1 1 0%;
372
290
  }
373
291
 
374
- /**
375
- * @description Sets flex to none - prevents the item from growing.
376
- */
292
+ // @description Sets flex to none - prevents the item from growing.
377
293
  @mixin no-grow {
378
294
  flex: none;
379
295
  }
380
296
 
381
- /**
382
- * @description Sets flex to 1 0 auto - allows the item to grow but not shrink.
383
- */
297
+ // @description Sets flex to 1 0 auto - allows the item to grow but not shrink.
384
298
  @mixin grow-only {
385
299
  flex: 1 0 auto;
386
300
  }
387
301
 
388
- /**
389
- * @description Sets how many columns this would take using percentage of VAR.$column-count.
390
- * @param {Number} $size - The number of columns to span.
391
- */
302
+ // @description Sets how many columns this would take using percentage of VAR.$column-count.
303
+ // @param {Number} $size - The number of columns to span.
392
304
  @mixin fill($size) {
393
- flex: 0 0 math.percentage(math.div($size, VAR.$column-count));
305
+ $percentage: math.percentage(math.div($size, VAR.$column-count));
306
+
307
+ $n: math.div(VAR.$column-count, $size); // How many items fit in a row
308
+ $gap-adjustment: calc(var(--flex-gap, 0px) * #{$n - 1} / #{$n});
309
+
310
+ // The width calculation accounts for the gap proportionally
311
+ flex: 0 0 calc(#{$percentage} - #{$gap-adjustment});
394
312
  }
395
313
 
396
- @if VAR.$generate-utility-classes {
397
- // Base flex container
398
- #{VAR.$parent-selector} .flex {
399
- display: flex;
314
+ @if FN.feature-enabled("flex") {
315
+ // Build flat selector list for all flex containers
316
+ $flex-selectors: "#{VAR.$parent-selector} .flex";
317
+
318
+ @each $breakpoint, $width in VAR.$breakpoints {
319
+ $flex-selectors: "#{$flex-selectors}, #{VAR.$parent-selector} .flex\\@#{$breakpoint}";
320
+ }
321
+
322
+ // Apply base flex styles to all flex variants at once
323
+ #{$flex-selectors} {
324
+ @include flex;
325
+
326
+ &.inline {
327
+ @include flex-inline;
328
+ }
400
329
 
401
330
  // Direction modifiers
402
331
  &.row {
403
- flex-direction: row;
332
+ @include row;
404
333
  }
405
334
 
406
335
  &.row-reverse {
407
- flex-direction: row-reverse;
336
+ @include row-reverse;
408
337
  }
409
338
 
410
339
  &.col {
411
- flex-direction: column;
340
+ @include col;
412
341
  }
413
342
 
414
343
  &.col-reverse {
415
- flex-direction: column-reverse;
344
+ @include col-reverse;
416
345
  }
417
346
 
418
347
  // Wrap modifiers
419
348
  &.wrap {
420
- flex-wrap: wrap;
349
+ @include wrap;
421
350
  }
422
351
 
423
352
  &.nowrap {
424
- flex-wrap: nowrap;
353
+ @include nowrap;
425
354
  }
426
355
 
427
356
  &.wrap-reverse {
428
- flex-wrap: wrap-reverse;
357
+ @include wrap-reverse;
429
358
  }
430
359
 
431
360
  // Justify modifiers
432
361
  &.start {
433
- justify-content: flex-start;
362
+ @include start;
434
363
  }
435
364
 
436
365
  &.end {
437
- justify-content: flex-end;
366
+ @include end;
438
367
  }
439
368
 
440
369
  &.center {
441
- justify-content: center;
370
+ @include center;
442
371
  }
443
372
 
444
373
  &.stretch {
445
- justify-content: stretch;
446
- } // todo: document
374
+ @include stretch;
375
+ }
376
+
447
377
  &.between {
448
- justify-content: space-between;
378
+ @include between;
449
379
  }
450
380
 
451
381
  &.around {
452
- justify-content: space-around;
382
+ @include around;
453
383
  }
454
384
 
455
385
  &.evenly {
456
- justify-content: space-evenly;
386
+ @include evenly;
457
387
  }
458
388
 
459
389
  // Align modifiers
460
390
  &.x-start {
461
- align-items: flex-start;
391
+ @include x-start;
462
392
  }
463
393
 
464
394
  &.x-end {
465
- align-items: flex-end;
395
+ @include x-end;
466
396
  }
467
397
 
468
398
  &.x-center {
469
- align-items: center;
399
+ @include x-center;
470
400
  }
471
401
 
472
402
  &.x-baseline {
473
- align-items: baseline;
403
+ @include x-baseline;
474
404
  }
475
405
 
476
406
  &.x-stretch {
477
- align-items: stretch;
407
+ @include x-stretch;
478
408
  }
479
409
 
410
+ // Content alignment
480
411
  &.x-content-start {
481
- align-content: flex-start;
412
+ @include x-content-start;
482
413
  }
483
414
 
484
415
  &.x-content-end {
485
- align-content: flex-end;
416
+ @include x-content-end;
486
417
  }
487
418
 
488
419
  &.x-content-center {
489
- align-content: center;
420
+ @include x-content-center;
490
421
  }
491
422
 
492
423
  &.x-content-between {
493
- align-content: space-between;
424
+ @include x-content-between;
494
425
  }
495
426
 
496
427
  &.x-content-around {
497
- align-content: space-around;
428
+ @include x-content-around;
498
429
  }
499
430
 
500
431
  &.x-content-evenly {
501
- align-content: space-evenly;
432
+ @include x-content-evenly;
502
433
  }
503
434
 
504
435
  &.x-content-stretch {
505
- align-content: stretch;
436
+ @include x-content-stretch;
506
437
  }
507
438
 
508
- // Child flex items (using column count)
439
+ // Child flex items
509
440
  > .fill-auto {
510
441
  @include fill-auto;
511
442
  }
@@ -574,164 +505,171 @@
574
505
  > .fill-#{$i} {
575
506
  @include fill($i);
576
507
  }
577
-
578
508
  > .order-#{$i} {
579
509
  order: $i;
580
510
  }
581
511
  }
582
512
  }
583
513
 
514
+ // Handle responsive variants
584
515
  @each $breakpoint, $width in VAR.$breakpoints {
585
- // Get breakpoint value using FN function
586
516
  $bp-val: FN.get-breakpoint-value($breakpoint);
587
517
 
588
518
  @media (min-width: #{$bp-val}) {
589
- #{VAR.$parent-selector} .flex {
590
- // Direction
519
+ #{$flex-selectors} {
520
+ // Direction modifiers
591
521
  &.row\@#{$breakpoint} {
592
- flex-direction: row;
522
+ @include row;
593
523
  }
594
524
  &.row-reverse\@#{$breakpoint} {
595
- flex-direction: row-reverse;
525
+ @include row-reverse;
596
526
  }
597
527
  &.col\@#{$breakpoint} {
598
- flex-direction: column;
528
+ @include col;
599
529
  }
600
530
  &.col-reverse\@#{$breakpoint} {
601
- flex-direction: column-reverse;
531
+ @include col-reverse;
602
532
  }
603
533
 
604
- // Wrap
534
+ // Wrap modifiers
605
535
  &.wrap\@#{$breakpoint} {
606
- flex-wrap: wrap;
536
+ @include wrap;
607
537
  }
608
538
  &.nowrap\@#{$breakpoint} {
609
- flex-wrap: nowrap;
539
+ @include nowrap;
610
540
  }
611
541
  &.wrap-reverse\@#{$breakpoint} {
612
- flex-wrap: wrap-reverse;
542
+ @include wrap-reverse;
613
543
  }
614
544
 
615
- // Justify
545
+ // Justify modifiers
616
546
  &.start\@#{$breakpoint} {
617
- justify-content: flex-start;
547
+ @include start;
618
548
  }
619
549
  &.end\@#{$breakpoint} {
620
- justify-content: flex-end;
550
+ @include end;
621
551
  }
622
552
  &.center\@#{$breakpoint} {
623
- justify-content: center;
553
+ @include center;
554
+ }
555
+ &.stretch\@#{$breakpoint} {
556
+ @include stretch;
624
557
  }
625
558
  &.between\@#{$breakpoint} {
626
- justify-content: space-between;
559
+ @include between;
627
560
  }
628
- &.stretch\@#{$breakpoint} {
629
- justify-content: stretch;
630
- } // todo: document
631
561
  &.around\@#{$breakpoint} {
632
- justify-content: space-around;
562
+ @include around;
633
563
  }
634
564
  &.evenly\@#{$breakpoint} {
635
- justify-content: space-evenly;
565
+ @include evenly;
636
566
  }
637
567
 
638
- // Align
568
+ // Align modifiers
639
569
  &.x-start\@#{$breakpoint} {
640
- align-items: flex-start;
570
+ @include x-start;
641
571
  }
642
572
  &.x-end\@#{$breakpoint} {
643
- align-items: flex-end;
573
+ @include x-end;
644
574
  }
645
575
  &.x-center\@#{$breakpoint} {
646
- align-items: center;
576
+ @include x-center;
647
577
  }
648
578
  &.x-baseline\@#{$breakpoint} {
649
- align-items: baseline;
579
+ @include x-baseline;
650
580
  }
651
581
  &.x-stretch\@#{$breakpoint} {
652
- align-items: stretch;
582
+ @include x-stretch;
653
583
  }
654
584
 
585
+ // Content alignment
655
586
  &.x-content-start\@#{$breakpoint} {
656
- align-content: flex-start;
587
+ @include x-content-start;
657
588
  }
658
589
  &.x-content-end\@#{$breakpoint} {
659
- align-content: flex-end;
590
+ @include x-content-end;
660
591
  }
661
592
  &.x-content-center\@#{$breakpoint} {
662
- align-content: center;
593
+ @include x-content-center;
663
594
  }
664
595
  &.x-content-between\@#{$breakpoint} {
665
- align-content: space-between;
596
+ @include x-content-between;
666
597
  }
667
598
  &.x-content-around\@#{$breakpoint} {
668
- align-content: space-around;
599
+ @include x-content-around;
669
600
  }
670
601
  &.x-content-evenly\@#{$breakpoint} {
671
- align-content: space-evenly;
602
+ @include x-content-evenly;
672
603
  }
673
604
  &.x-content-stretch\@#{$breakpoint} {
674
- align-content: stretch;
605
+ @include x-content-stretch;
675
606
  }
676
607
 
677
- // Width (using column count)
678
- & > .fill-auto\@#{$breakpoint} {
608
+ // Child elements
609
+ > .fill-auto\@#{$breakpoint} {
679
610
  @include fill-auto;
680
611
  }
681
- & > .fill-full\@#{$breakpoint} {
612
+ > .fill-full\@#{$breakpoint} {
682
613
  @include fill-full;
683
614
  }
684
- & > .grow\@#{$breakpoint} {
615
+ > .grow\@#{$breakpoint} {
685
616
  @include grow;
686
617
  }
687
- & > .no-grow\@#{$breakpoint} {
618
+ > .no-grow\@#{$breakpoint} {
688
619
  @include no-grow;
689
620
  }
690
- & > .order-first\@#{$breakpoint} {
621
+ > .order-first\@#{$breakpoint} {
691
622
  order: -1;
692
623
  }
693
- & > .order-last\@#{$breakpoint} {
624
+ > .order-last\@#{$breakpoint} {
694
625
  order: 9999;
695
626
  }
696
- & > .order-none\@#{$breakpoint} {
627
+ > .order-none\@#{$breakpoint} {
697
628
  order: 0;
698
629
  }
699
- & > .shrink\@#{$breakpoint} {
630
+ > .shrink\@#{$breakpoint} {
700
631
  @include shrink;
701
632
  }
702
- & > .no-shrink\@#{$breakpoint} {
633
+ > .no-shrink\@#{$breakpoint} {
703
634
  @include no-shrink;
704
635
  }
705
- & > .shrink-twice\@#{$breakpoint} {
636
+ > .shrink-twice\@#{$breakpoint} {
706
637
  @include shrink-twice;
707
638
  }
708
- & > .self-end\@#{$breakpoint} {
639
+ > .self-end\@#{$breakpoint} {
709
640
  @include self-end;
710
641
  }
711
- & > .self-start\@#{$breakpoint} {
642
+ > .self-start\@#{$breakpoint} {
712
643
  @include self-start;
713
644
  }
714
- & > .self-center\@#{$breakpoint} {
645
+ > .self-center\@#{$breakpoint} {
715
646
  @include self-center;
716
647
  }
717
- & > .self-stretch\@#{$breakpoint} {
648
+ > .self-stretch\@#{$breakpoint} {
718
649
  @include self-stretch;
719
650
  }
720
- & > .self-baseline\@#{$breakpoint} {
651
+ > .self-baseline\@#{$breakpoint} {
721
652
  @include self-baseline;
722
653
  }
723
- & > .self-auto\@#{$breakpoint} {
654
+ > .self-auto\@#{$breakpoint} {
724
655
  @include self-auto;
725
656
  }
657
+
726
658
  @for $i from 1 through VAR.$column-count {
727
- & > .fill-#{$i}\@#{$breakpoint} {
659
+ > .fill-#{$i}\@#{$breakpoint} {
728
660
  @include fill($i);
729
661
  }
730
- & > .order-#{$i}\@#{$breakpoint} {
662
+ > .order-#{$i}\@#{$breakpoint} {
731
663
  order: $i;
732
664
  }
733
665
  }
734
666
  }
667
+
668
+ // Special case for inline@breakpoint
669
+ #{VAR.$parent-selector} .flex.inline\@#{$breakpoint},
670
+ #{VAR.$parent-selector} .flex\@#{$breakpoint}.inline\@#{$breakpoint} {
671
+ @include flex-inline;
672
+ }
735
673
  }
736
674
  }
737
675
  }