@cyberpunk-vue/theme-chalk 1.14.0 → 1.14.2

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 (47) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/common/var.scss +247 -247
  5. package/src/components/avatar-group.scss +113 -113
  6. package/src/components/avatar.scss +123 -123
  7. package/src/components/badge.scss +210 -210
  8. package/src/components/breadcrumb.scss +203 -203
  9. package/src/components/button.scss +975 -975
  10. package/src/components/card.scss +699 -696
  11. package/src/components/checkbox-group.scss +22 -22
  12. package/src/components/checkbox.scss +320 -320
  13. package/src/components/col.scss +43 -43
  14. package/src/components/dialog.scss +360 -360
  15. package/src/components/divider.scss +250 -250
  16. package/src/components/empty.scss +99 -99
  17. package/src/components/form-item.scss +189 -189
  18. package/src/components/form.scss +59 -59
  19. package/src/components/icon.scss +83 -83
  20. package/src/components/image-preview.scss +147 -147
  21. package/src/components/image.scss +351 -351
  22. package/src/components/input-number.scss +129 -129
  23. package/src/components/input.scss +362 -362
  24. package/src/components/loading.scss +64 -64
  25. package/src/components/notification.scss +348 -348
  26. package/src/components/pagination.scss +287 -280
  27. package/src/components/pattern-background.scss +18 -18
  28. package/src/components/popover.scss +438 -438
  29. package/src/components/progress.scss +438 -438
  30. package/src/components/radio-group.scss +22 -22
  31. package/src/components/radio.scss +286 -286
  32. package/src/components/row.scss +12 -12
  33. package/src/components/scrollbar.scss +40 -40
  34. package/src/components/segmented.scss +566 -566
  35. package/src/components/select.scss +15 -1
  36. package/src/components/slider.scss +421 -421
  37. package/src/components/status-indicator.scss +206 -206
  38. package/src/components/switch.scss +405 -405
  39. package/src/components/table.scss +474 -474
  40. package/src/components/tag.scss +416 -416
  41. package/src/components/text.scss +310 -271
  42. package/src/components/textarea.scss +106 -104
  43. package/src/components/timeline.scss +379 -379
  44. package/src/components/tree.scss +397 -397
  45. package/src/components/upload.scss +509 -509
  46. package/src/index.scss +60 -60
  47. package/src/mixins/mixins.scss +156 -156
@@ -1,22 +1,22 @@
1
- // CpRadioGroup 组件样式
2
-
3
- @use '../common/var' as *;
4
- @use '../mixins/mixins' as *;
5
-
6
- @include b(radio-group) {
7
- display: inline-flex;
8
- flex-wrap: wrap;
9
- gap: 16px;
10
-
11
- // 水平布局 (默认)
12
- @include m(horizontal) {
13
- flex-direction: row;
14
- align-items: center;
15
- }
16
-
17
- // 垂直布局
18
- @include m(vertical) {
19
- flex-direction: column;
20
- align-items: flex-start;
21
- }
22
- }
1
+ // CpRadioGroup 组件样式
2
+
3
+ @use '../common/var' as *;
4
+ @use '../mixins/mixins' as *;
5
+
6
+ @include b(radio-group) {
7
+ display: inline-flex;
8
+ flex-wrap: wrap;
9
+ gap: 16px;
10
+
11
+ // 水平布局 (默认)
12
+ @include m(horizontal) {
13
+ flex-direction: row;
14
+ align-items: center;
15
+ }
16
+
17
+ // 垂直布局
18
+ @include m(vertical) {
19
+ flex-direction: column;
20
+ align-items: flex-start;
21
+ }
22
+ }
@@ -1,185 +1,185 @@
1
- // CpRadio 组件样式
2
- // 赛博朋克/机甲风格 — 八边形指示器 + 菱形内点
3
-
4
- @use 'sass:map';
5
- @use '../common/var' as *;
6
- @use '../mixins/mixins' as *;
7
-
8
- // Radio 尺寸变量
9
- $radio-sizes: (
10
- sm: (
11
- size: 14px,
12
- dot-size: 6px,
13
- font-size: 12px,
14
- ),
15
- md: (
16
- size: 18px,
17
- dot-size: 8px,
18
- font-size: 14px,
19
- ),
20
- lg: (
21
- size: 22px,
22
- dot-size: 10px,
23
- font-size: 16px,
24
- ),
25
- );
26
-
27
- // 八边形 clip-path(通用函数)
28
- // 切掉四个角,形成八边形外框
29
- @function octagon-clip($cut: 30%) {
30
- @return polygon(
31
- #{$cut} 0%, #{100% - $cut} 0%,
32
- 100% #{$cut}, 100% #{100% - $cut},
33
- #{100% - $cut} 100%, #{$cut} 100%,
34
- 0% #{100% - $cut}, 0% #{$cut}
35
- );
36
- }
37
-
38
- @include b(radio) {
39
- // 基础样式
40
- position: relative;
41
- display: inline-flex;
42
- align-items: center;
43
- gap: 8px;
44
- cursor: pointer;
45
- user-select: none;
46
- vertical-align: middle;
47
- font-family: var(--cp-font-family-ui);
48
- color: var(--cp-text-secondary);
49
- transition: color 0.2s ease;
50
-
51
- // CSS 变量默认值
52
- --cp-radio-active-color: var(--cp-color-primary);
53
- --cp-radio-active-color-light: var(--cp-color-primary-light);
54
- --cp-radio-dot-color: var(--cp-color-primary-text);
55
- --cp-radio-size: 18px;
56
- --cp-radio-dot-size: 8px;
57
-
58
- &:hover:not(.is-disabled) {
59
- color: var(--cp-text-primary);
60
-
61
- .cp-radio__indicator {
62
- border-color: var(--cp-radio-active-color);
63
-
64
- &::before {
65
- opacity: 1;
66
- border-color: var(--cp-radio-active-color);
67
- }
68
- }
69
- }
70
-
71
- // Glow 模式基线 filter — 0 模糊 + 目标颜色
72
- // 确保 transition 只插值模糊半径,避免从 transparent 插值产生橙色闪烁
73
- &.is-glow:not(.is-disabled) .cp-radio__indicator-wrap {
74
- filter: drop-shadow(0 0 0px var(--cp-radio-active-color))
75
- drop-shadow(0 0 0px var(--cp-radio-active-color-light))
76
- drop-shadow(0 0 0px var(--cp-radio-active-color-light));
77
- }
78
-
79
- // 带辉光的 hover 效果 — 使用 drop-shadow 跟随八边形形状
80
- &.is-glow:hover:not(.is-disabled):not(.is-checked) {
81
- .cp-radio__indicator-wrap {
82
- filter: drop-shadow(0 0 3px var(--cp-radio-active-color))
83
- drop-shadow(0 0 6px var(--cp-radio-active-color-light))
84
- drop-shadow(0 0 10px var(--cp-radio-active-color-light));
85
- }
86
- }
87
-
88
- // ===== 隐藏原生 input =====
89
- @include e(input) {
90
- position: absolute;
91
- width: 0;
92
- height: 0;
93
- opacity: 0;
94
- margin: 0;
95
- pointer-events: none;
96
- }
97
-
98
- // ===== 指示器外层包裹 =====
99
- // drop-shadow 应用在此层,跟随子元素 clip-path 的八边形形状
100
- @include e(indicator-wrap) {
101
- display: flex;
102
- align-items: center;
103
- justify-content: center;
104
- flex-shrink: 0;
105
- transition: filter 0.25s ease;
106
- }
107
-
108
- // ===== 八边形指示器 =====
109
- @include e(indicator) {
110
- position: relative;
111
- display: flex;
112
- align-items: center;
113
- justify-content: center;
114
- width: var(--cp-radio-size);
115
- height: var(--cp-radio-size);
116
- background: var(--cp-surface-variant);
117
- border: 1px solid var(--cp-border);
118
- clip-path: #{octagon-clip(28%)};
119
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
120
- flex-shrink: 0;
121
- overflow: hidden;
122
-
123
- // 角落强调线装饰
124
- &::before {
125
- content: '';
126
- position: absolute;
127
- inset: 0;
128
- clip-path: #{octagon-clip(28%)};
129
- border: 1px solid transparent;
130
- opacity: 0;
131
- transition: all 0.25s ease;
132
- }
133
-
134
- // 扫描线纹理
135
- &::after {
136
- content: '';
137
- position: absolute;
138
- inset: 0;
139
- background: repeating-linear-gradient(
140
- 0deg,
141
- transparent,
142
- transparent 2px,
143
- rgba(255, 255, 255, 0.02) 2px,
144
- rgba(255, 255, 255, 0.02) 4px
145
- );
146
- clip-path: #{octagon-clip(28%)};
147
- pointer-events: none;
148
- }
149
- }
150
-
151
- // ===== 选中时的菱形内点 =====
152
- @include e(dot) {
153
- position: absolute;
154
- width: var(--cp-radio-dot-size);
155
- height: var(--cp-radio-dot-size);
156
- background: currentColor;
157
- color: var(--cp-radio-dot-color);
158
- clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
159
- animation: cp-radio-dot-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both;
160
- z-index: 1;
161
- }
162
-
163
- // ===== 标签 =====
164
- @include e(label) {
165
- font-weight: 500;
166
- transition: color 0.2s ease;
167
- letter-spacing: 0.02em;
168
- }
169
-
170
- // ===== 尺寸变体 =====
171
- @each $size-name, $size-config in $radio-sizes {
172
- @include m(#{$size-name}) {
173
- --cp-radio-size: #{map.get($size-config, size)};
174
- --cp-radio-dot-size: #{map.get($size-config, dot-size)};
175
-
176
- .cp-radio__label {
177
- font-size: map.get($size-config, font-size);
178
- }
179
- }
180
- }
181
-
182
- // ===== 自定义尺寸 =====
1
+ // CpRadio 组件样式
2
+ // 赛博朋克/机甲风格 — 八边形指示器 + 菱形内点
3
+
4
+ @use 'sass:map';
5
+ @use '../common/var' as *;
6
+ @use '../mixins/mixins' as *;
7
+
8
+ // Radio 尺寸变量
9
+ $radio-sizes: (
10
+ sm: (
11
+ size: 14px,
12
+ dot-size: 6px,
13
+ font-size: 12px,
14
+ ),
15
+ md: (
16
+ size: 18px,
17
+ dot-size: 8px,
18
+ font-size: 14px,
19
+ ),
20
+ lg: (
21
+ size: 22px,
22
+ dot-size: 10px,
23
+ font-size: 16px,
24
+ ),
25
+ );
26
+
27
+ // 八边形 clip-path(通用函数)
28
+ // 切掉四个角,形成八边形外框
29
+ @function octagon-clip($cut: 30%) {
30
+ @return polygon(
31
+ #{$cut} 0%, #{100% - $cut} 0%,
32
+ 100% #{$cut}, 100% #{100% - $cut},
33
+ #{100% - $cut} 100%, #{$cut} 100%,
34
+ 0% #{100% - $cut}, 0% #{$cut}
35
+ );
36
+ }
37
+
38
+ @include b(radio) {
39
+ // 基础样式
40
+ position: relative;
41
+ display: inline-flex;
42
+ align-items: center;
43
+ gap: 8px;
44
+ cursor: pointer;
45
+ user-select: none;
46
+ vertical-align: middle;
47
+ font-family: var(--cp-font-family-ui);
48
+ color: var(--cp-text-secondary);
49
+ transition: color 0.2s ease;
50
+
51
+ // CSS 变量默认值
52
+ --cp-radio-active-color: var(--cp-color-primary);
53
+ --cp-radio-active-color-light: var(--cp-color-primary-light);
54
+ --cp-radio-dot-color: var(--cp-color-primary-text);
55
+ --cp-radio-size: 18px;
56
+ --cp-radio-dot-size: 8px;
57
+
58
+ &:hover:not(.is-disabled) {
59
+ color: var(--cp-text-primary);
60
+
61
+ .cp-radio__indicator {
62
+ border-color: var(--cp-radio-active-color);
63
+
64
+ &::before {
65
+ opacity: 1;
66
+ border-color: var(--cp-radio-active-color);
67
+ }
68
+ }
69
+ }
70
+
71
+ // Glow 模式基线 filter — 0 模糊 + 目标颜色
72
+ // 确保 transition 只插值模糊半径,避免从 transparent 插值产生橙色闪烁
73
+ &.is-glow:not(.is-disabled) .cp-radio__indicator-wrap {
74
+ filter: drop-shadow(0 0 0px var(--cp-radio-active-color))
75
+ drop-shadow(0 0 0px var(--cp-radio-active-color-light))
76
+ drop-shadow(0 0 0px var(--cp-radio-active-color-light));
77
+ }
78
+
79
+ // 带辉光的 hover 效果 — 使用 drop-shadow 跟随八边形形状
80
+ &.is-glow:hover:not(.is-disabled):not(.is-checked) {
81
+ .cp-radio__indicator-wrap {
82
+ filter: drop-shadow(0 0 3px var(--cp-radio-active-color))
83
+ drop-shadow(0 0 6px var(--cp-radio-active-color-light))
84
+ drop-shadow(0 0 10px var(--cp-radio-active-color-light));
85
+ }
86
+ }
87
+
88
+ // ===== 隐藏原生 input =====
89
+ @include e(input) {
90
+ position: absolute;
91
+ width: 0;
92
+ height: 0;
93
+ opacity: 0;
94
+ margin: 0;
95
+ pointer-events: none;
96
+ }
97
+
98
+ // ===== 指示器外层包裹 =====
99
+ // drop-shadow 应用在此层,跟随子元素 clip-path 的八边形形状
100
+ @include e(indicator-wrap) {
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: center;
104
+ flex-shrink: 0;
105
+ transition: filter 0.25s ease;
106
+ }
107
+
108
+ // ===== 八边形指示器 =====
109
+ @include e(indicator) {
110
+ position: relative;
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ width: var(--cp-radio-size);
115
+ height: var(--cp-radio-size);
116
+ background: var(--cp-surface-variant);
117
+ border: 1px solid var(--cp-border);
118
+ clip-path: #{octagon-clip(28%)};
119
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
120
+ flex-shrink: 0;
121
+ overflow: hidden;
122
+
123
+ // 角落强调线装饰
124
+ &::before {
125
+ content: '';
126
+ position: absolute;
127
+ inset: 0;
128
+ clip-path: #{octagon-clip(28%)};
129
+ border: 1px solid transparent;
130
+ opacity: 0;
131
+ transition: all 0.25s ease;
132
+ }
133
+
134
+ // 扫描线纹理
135
+ &::after {
136
+ content: '';
137
+ position: absolute;
138
+ inset: 0;
139
+ background: repeating-linear-gradient(
140
+ 0deg,
141
+ transparent,
142
+ transparent 2px,
143
+ rgba(255, 255, 255, 0.02) 2px,
144
+ rgba(255, 255, 255, 0.02) 4px
145
+ );
146
+ clip-path: #{octagon-clip(28%)};
147
+ pointer-events: none;
148
+ }
149
+ }
150
+
151
+ // ===== 选中时的菱形内点 =====
152
+ @include e(dot) {
153
+ position: absolute;
154
+ width: var(--cp-radio-dot-size);
155
+ height: var(--cp-radio-dot-size);
156
+ background: currentColor;
157
+ color: var(--cp-radio-dot-color);
158
+ clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
159
+ animation: cp-radio-dot-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both;
160
+ z-index: 1;
161
+ }
162
+
163
+ // ===== 标签 =====
164
+ @include e(label) {
165
+ font-weight: 500;
166
+ transition: color 0.2s ease;
167
+ letter-spacing: 0.02em;
168
+ }
169
+
170
+ // ===== 尺寸变体 =====
171
+ @each $size-name, $size-config in $radio-sizes {
172
+ @include m(#{$size-name}) {
173
+ --cp-radio-size: #{map.get($size-config, size)};
174
+ --cp-radio-dot-size: #{map.get($size-config, dot-size)};
175
+
176
+ .cp-radio__label {
177
+ font-size: map.get($size-config, font-size);
178
+ }
179
+ }
180
+ }
181
+
182
+ // ===== 自定义尺寸 =====
183
183
  @include when(custom-size) {
184
184
  .cp-radio__indicator {
185
185
  clip-path: #{octagon-clip(28%)};
@@ -224,50 +224,50 @@ $radio-sizes: (
224
224
 
225
225
  // ===== 选中状态 =====
226
226
  @include when(checked) {
227
- .cp-radio__indicator {
228
- background: var(--cp-radio-active-color);
229
- border-color: var(--cp-radio-active-color);
230
-
231
- &::before {
232
- opacity: 1;
233
- border-color: rgba(255, 255, 255, 0.4);
234
- }
235
-
236
- // 选中时扫描线更强
237
- &::after {
238
- background: repeating-linear-gradient(
239
- 0deg,
240
- transparent,
241
- transparent 2px,
242
- rgba(255, 255, 255, 0.06) 2px,
243
- rgba(255, 255, 255, 0.06) 4px
244
- );
245
- }
246
- }
247
-
248
- color: var(--cp-text-primary);
249
-
250
- // 选中 + 辉光 — drop-shadow 跟随八边形
251
- &.is-glow .cp-radio__indicator-wrap {
252
- filter: drop-shadow(0 0 3px var(--cp-radio-active-color))
253
- drop-shadow(0 0 8px var(--cp-radio-active-color-light))
254
- drop-shadow(0 0 14px var(--cp-radio-active-color-light));
255
- }
256
- }
257
-
258
- // ===== 边框模式 =====
227
+ .cp-radio__indicator {
228
+ background: var(--cp-radio-active-color);
229
+ border-color: var(--cp-radio-active-color);
230
+
231
+ &::before {
232
+ opacity: 1;
233
+ border-color: rgba(255, 255, 255, 0.4);
234
+ }
235
+
236
+ // 选中时扫描线更强
237
+ &::after {
238
+ background: repeating-linear-gradient(
239
+ 0deg,
240
+ transparent,
241
+ transparent 2px,
242
+ rgba(255, 255, 255, 0.06) 2px,
243
+ rgba(255, 255, 255, 0.06) 4px
244
+ );
245
+ }
246
+ }
247
+
248
+ color: var(--cp-text-primary);
249
+
250
+ // 选中 + 辉光 — drop-shadow 跟随八边形
251
+ &.is-glow .cp-radio__indicator-wrap {
252
+ filter: drop-shadow(0 0 3px var(--cp-radio-active-color))
253
+ drop-shadow(0 0 8px var(--cp-radio-active-color-light))
254
+ drop-shadow(0 0 14px var(--cp-radio-active-color-light));
255
+ }
256
+ }
257
+
258
+ // ===== 边框模式 =====
259
259
  @include when(border) {
260
260
  padding: 8px 16px;
261
261
  border: 1px solid var(--cp-border);
262
262
  background: var(--cp-surface);
263
- clip-path: polygon(
264
- 10px 0,
265
- 100% 0,
266
- 100% calc(100% - 10px),
267
- calc(100% - 10px) 100%,
268
- 0 100%,
269
- 0 10px
270
- );
263
+ clip-path: polygon(
264
+ 10px 0,
265
+ 100% 0,
266
+ 100% calc(100% - 10px),
267
+ calc(100% - 10px) 100%,
268
+ 0 100%,
269
+ 0 10px
270
+ );
271
271
  transition: all 0.25s ease;
272
272
 
273
273
  &.cp-radio--shape-no-clip {
@@ -290,67 +290,67 @@ $radio-sizes: (
290
290
 
291
291
  // 切角装饰线
292
292
  &::before {
293
- content: '';
294
- position: absolute;
295
- top: 0;
296
- left: 0;
297
- width: 14px;
298
- height: 14px;
299
- border-left: 1px solid var(--cp-border);
300
- border-top: 1px solid var(--cp-border);
301
- clip-path: polygon(0 0, 0 100%, 100% 0);
302
- opacity: 0.6;
303
- transition: all 0.25s ease;
304
- }
305
-
306
- &:hover:not(.is-disabled) {
307
- border-color: var(--cp-radio-active-color);
308
-
309
- &::before {
310
- border-color: var(--cp-radio-active-color);
311
- opacity: 1;
312
- }
313
- }
314
-
315
- &.is-checked {
316
- border-color: var(--cp-radio-active-color);
317
- background: color-mix(in srgb, var(--cp-radio-active-color) 15%, transparent);
318
-
319
- &::before {
320
- border-color: var(--cp-radio-active-color);
321
- opacity: 1;
322
- }
323
- }
324
-
325
- // 边框模式不用 indicator drop-shadow,改用自身 drop-shadow
326
- // 但 border 模式自身也带 clip-path,所以 box-shadow 同样失效
327
- // 这里的辉光靠外层容器或不加
328
- }
329
-
330
- // ===== 禁用状态 =====
331
- @include when(disabled) {
332
- opacity: 0.45;
333
- cursor: not-allowed;
334
- filter: grayscale(0.7);
335
-
336
- .cp-radio__indicator {
337
- background: var(--cp-surface-bright);
338
- }
339
- }
340
- }
341
-
342
- // ===== 动画 =====
343
- @keyframes cp-radio-dot-in {
344
- 0% {
345
- opacity: 0;
346
- transform: scale(0) rotate(0deg);
347
- }
348
- 60% {
349
- opacity: 1;
350
- transform: scale(1.2) rotate(45deg);
351
- }
352
- 100% {
353
- opacity: 1;
354
- transform: scale(1) rotate(0deg);
355
- }
356
- }
293
+ content: '';
294
+ position: absolute;
295
+ top: 0;
296
+ left: 0;
297
+ width: 14px;
298
+ height: 14px;
299
+ border-left: 1px solid var(--cp-border);
300
+ border-top: 1px solid var(--cp-border);
301
+ clip-path: polygon(0 0, 0 100%, 100% 0);
302
+ opacity: 0.6;
303
+ transition: all 0.25s ease;
304
+ }
305
+
306
+ &:hover:not(.is-disabled) {
307
+ border-color: var(--cp-radio-active-color);
308
+
309
+ &::before {
310
+ border-color: var(--cp-radio-active-color);
311
+ opacity: 1;
312
+ }
313
+ }
314
+
315
+ &.is-checked {
316
+ border-color: var(--cp-radio-active-color);
317
+ background: color-mix(in srgb, var(--cp-radio-active-color) 15%, transparent);
318
+
319
+ &::before {
320
+ border-color: var(--cp-radio-active-color);
321
+ opacity: 1;
322
+ }
323
+ }
324
+
325
+ // 边框模式不用 indicator drop-shadow,改用自身 drop-shadow
326
+ // 但 border 模式自身也带 clip-path,所以 box-shadow 同样失效
327
+ // 这里的辉光靠外层容器或不加
328
+ }
329
+
330
+ // ===== 禁用状态 =====
331
+ @include when(disabled) {
332
+ opacity: 0.45;
333
+ cursor: not-allowed;
334
+ filter: grayscale(0.7);
335
+
336
+ .cp-radio__indicator {
337
+ background: var(--cp-surface-bright);
338
+ }
339
+ }
340
+ }
341
+
342
+ // ===== 动画 =====
343
+ @keyframes cp-radio-dot-in {
344
+ 0% {
345
+ opacity: 0;
346
+ transform: scale(0) rotate(0deg);
347
+ }
348
+ 60% {
349
+ opacity: 1;
350
+ transform: scale(1.2) rotate(45deg);
351
+ }
352
+ 100% {
353
+ opacity: 1;
354
+ transform: scale(1) rotate(0deg);
355
+ }
356
+ }
@@ -1,12 +1,12 @@
1
- @use '../mixins/mixins' as *;
2
-
3
- // ===== CpRow 栅格行容器 =====
4
-
5
- @include b(row) {
6
- display: flex;
7
- flex-wrap: wrap;
8
-
9
- @include when(no-wrap) {
10
- flex-wrap: nowrap;
11
- }
12
- }
1
+ @use '../mixins/mixins' as *;
2
+
3
+ // ===== CpRow 栅格行容器 =====
4
+
5
+ @include b(row) {
6
+ display: flex;
7
+ flex-wrap: wrap;
8
+
9
+ @include when(no-wrap) {
10
+ flex-wrap: nowrap;
11
+ }
12
+ }