@skewedaspect/sleekspace-ui 0.5.0 → 0.6.0

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 (41) hide show
  1. package/dist/components/Card/SkCard.vue.d.ts +13 -1
  2. package/dist/components/Panel/SkPanel.vue.d.ts +15 -1
  3. package/dist/components/Panel/types.d.ts +1 -0
  4. package/dist/components/Select/SkSelect.vue.d.ts +61 -0
  5. package/dist/components/Select/SkSelectItem.vue.d.ts +134 -0
  6. package/dist/components/Select/SkSelectSeparator.vue.d.ts +2 -0
  7. package/dist/components/Select/index.d.ts +4 -0
  8. package/dist/components/Select/types.d.ts +3 -0
  9. package/dist/components/Sidebar/SkSidebar.vue.d.ts +8 -1
  10. package/dist/components/Sidebar/types.d.ts +1 -0
  11. package/dist/components/Skeleton/SkSkeleton.vue.d.ts +1 -1
  12. package/dist/components/Theme/types.d.ts +18 -3
  13. package/dist/index.d.ts +7 -0
  14. package/dist/sleekspace-ui.css +494 -74
  15. package/dist/sleekspace-ui.es.js +2014 -283
  16. package/dist/sleekspace-ui.umd.js +2013 -282
  17. package/docs/guides/design-tokens/advanced.md +6 -1
  18. package/docs/guides/theming.md +11 -1
  19. package/package.json +1 -1
  20. package/src/components/Card/SkCard.vue +17 -1
  21. package/src/components/Panel/SkPanel.vue +29 -4
  22. package/src/components/Panel/types.ts +3 -0
  23. package/src/components/Select/SkSelect.vue +210 -0
  24. package/src/components/Select/SkSelectItem.vue +112 -0
  25. package/src/components/Select/SkSelectSeparator.vue +40 -0
  26. package/src/components/Select/index.ts +10 -0
  27. package/src/components/Select/types.ts +10 -0
  28. package/src/components/Sidebar/SkSidebar.vue +39 -2
  29. package/src/components/Sidebar/types.ts +2 -0
  30. package/src/components/Theme/types.ts +20 -3
  31. package/src/global.d.ts +2 -0
  32. package/src/index.ts +10 -0
  33. package/src/styles/components/_button.scss +45 -9
  34. package/src/styles/components/_card.scss +45 -9
  35. package/src/styles/components/_index.scss +1 -0
  36. package/src/styles/components/_listbox.scss +1 -0
  37. package/src/styles/components/_panel.scss +119 -13
  38. package/src/styles/components/_select.scss +439 -0
  39. package/src/styles/components/_sidebar.scss +83 -4
  40. package/src/styles/themes/README.md +6 -2
  41. package/web-types.json +148 -1
@@ -2,12 +2,29 @@
2
2
  // Theme Component Types
3
3
  //----------------------------------------------------------------------------------------------------------------------
4
4
 
5
+ /**
6
+ * Registry of available theme names. Augment this interface to register custom themes:
7
+ *
8
+ * ```ts
9
+ * declare module '@skewedaspect/sleekspace-ui' {
10
+ * interface SkThemeNameMap {
11
+ * ocean : true;
12
+ * midnight : true;
13
+ * }
14
+ * }
15
+ * ```
16
+ */
17
+ export interface SkThemeNameMap
18
+ {
19
+ greyscale : true;
20
+ colorful : true;
21
+ }
22
+
5
23
  /**
6
24
  * Available theme names that control the overall color scheme of the application.
7
- * - 'greyscale': A monochromatic theme with neutral grays and subtle accents
8
- * - 'colorful': A vibrant theme with saturated colors and stronger contrasts
25
+ * Derived from {@link SkThemeNameMap} augment that interface to add custom themes.
9
26
  */
10
- export type SkThemeName = 'greyscale' | 'colorful';
27
+ export type SkThemeName = keyof SkThemeNameMap;
11
28
 
12
29
  //----------------------------------------------------------------------------------------------------------------------
13
30
 
package/src/global.d.ts CHANGED
@@ -49,6 +49,8 @@ declare module '@vue/runtime-core' {
49
49
  SkProgress: DefineComponent<import('./components/Progress/SkProgress.vue').SkProgressComponentProps>;
50
50
  SkRadio: DefineComponent<import('./components/Radio/SkRadio.vue').SkRadioComponentProps>;
51
51
  SkRadioGroup: DefineComponent<import('./components/Radio/SkRadioGroup.vue').SkRadioGroupComponentProps>;
52
+ SkSelect: DefineComponent<import('./components/Select/SkSelect.vue').SkSelectComponentProps>;
53
+ SkSelectItem: DefineComponent<import('./components/Select/SkSelectItem.vue').SkSelectItemComponentProps>;
52
54
  SkSidebar: DefineComponent<import('./components/Sidebar/SkSidebar.vue').SkSidebarComponentProps>;
53
55
  SkSidebarItem: DefineComponent<import('./components/Sidebar/SkSidebarItem.vue').SkSidebarItemComponentProps>;
54
56
  SkSidebarSection: DefineComponent<import('./components/Sidebar/SkSidebarSection.vue').SkSidebarSectionComponentProps>;
package/src/index.ts CHANGED
@@ -50,6 +50,9 @@ import SkPopover, { type SkPopoverComponentProps } from './components/Popover/Sk
50
50
  import SkProgress, { type SkProgressComponentProps } from './components/Progress/SkProgress.vue';
51
51
  import SkRadio, { type SkRadioComponentProps } from './components/Radio/SkRadio.vue';
52
52
  import SkRadioGroup, { type SkRadioGroupComponentProps } from './components/Radio/SkRadioGroup.vue';
53
+ import SkSelect, { type SkSelectComponentProps } from './components/Select/SkSelect.vue';
54
+ import SkSelectItem, { type SkSelectItemComponentProps } from './components/Select/SkSelectItem.vue';
55
+ import SkSelectSeparator from './components/Select/SkSelectSeparator.vue';
53
56
  import SkSidebar, { type SkSidebarComponentProps } from './components/Sidebar/SkSidebar.vue';
54
57
  import SkSidebarItem, { type SkSidebarItemComponentProps } from './components/Sidebar/SkSidebarItem.vue';
55
58
  import SkSidebarSection, { type SkSidebarSectionComponentProps } from './components/Sidebar/SkSidebarSection.vue';
@@ -108,6 +111,7 @@ export * from './components/Panel/types';
108
111
  export * from './components/Popover/types';
109
112
  export * from './components/Progress/types';
110
113
  export * from './components/Radio/types';
114
+ export * from './components/Select/types';
111
115
  export * from './components/Sidebar/types';
112
116
  export * from './components/Skeleton/types';
113
117
  export * from './components/Slider/types';
@@ -166,6 +170,9 @@ export { SkPopover, type SkPopoverComponentProps };
166
170
  export { SkProgress, type SkProgressComponentProps };
167
171
  export { SkRadio, type SkRadioComponentProps };
168
172
  export { SkRadioGroup, type SkRadioGroupComponentProps };
173
+ export { SkSelect, type SkSelectComponentProps };
174
+ export { SkSelectItem, type SkSelectItemComponentProps };
175
+ export { SkSelectSeparator };
169
176
  export { SkSidebar, type SkSidebarComponentProps };
170
177
  export { SkSidebarItem, type SkSidebarItemComponentProps };
171
178
  export { SkSidebarSection, type SkSidebarSectionComponentProps };
@@ -229,6 +236,9 @@ const SleekSpaceUI : Plugin = {
229
236
  app.component('SkProgress', SkProgress);
230
237
  app.component('SkRadio', SkRadio);
231
238
  app.component('SkRadioGroup', SkRadioGroup);
239
+ app.component('SkSelect', SkSelect);
240
+ app.component('SkSelectItem', SkSelectItem);
241
+ app.component('SkSelectSeparator', SkSelectSeparator);
232
242
  app.component('SkSidebar', SkSidebar);
233
243
  app.component('SkSidebarItem', SkSidebarItem);
234
244
  app.component('SkSidebarSection', SkSidebarSection);
@@ -103,10 +103,10 @@
103
103
  --sk-button-outline-bg: rgba(5, 5, 5, 0.15);
104
104
 
105
105
  /// Subtle variant background opacity (references global foundation token)
106
- --sk-button-subtle-opacity: var(--sk-opacity-subtle);
106
+ --sk-button-subtle-opacity: 0.35;
107
107
 
108
108
  /// Subtle variant hover background opacity (references global foundation token)
109
- --sk-button-subtle-opacity-hover: var(--sk-opacity-subtle-hover);
109
+ --sk-button-subtle-opacity-hover: 0.65;
110
110
 
111
111
  /// Subtle variant border opacity (references global foundation token)
112
112
  --sk-button-subtle-border-opacity: var(--sk-opacity-subtle-border);
@@ -260,10 +260,9 @@
260
260
 
261
261
  &:hover:not(:disabled)
262
262
  {
263
- --sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
264
263
  --sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
265
264
 
266
- background-color: oklch(from var(--sk-button-bg) l c h / var(--sk-button-subtle-opacity-hover));
265
+ background-color: var(--sk-button-bg-hover);
267
266
  }
268
267
 
269
268
  &:active:not(:disabled)
@@ -534,6 +533,12 @@
534
533
  @include button-subtle-kind($kind);
535
534
  }
536
535
 
536
+ &:disabled,
537
+ &.sk-loading
538
+ {
539
+ background-color: oklch(from var(--sk-button-bg) l c h / 0.45);
540
+ }
541
+
537
542
  // Special case: neutral text and border are lighter (halfway to white) for better differentiation
538
543
  &.sk-neutral
539
544
  {
@@ -624,20 +629,51 @@
624
629
 
625
630
  &.sk-pressed
626
631
  {
627
- &.sk-outline,
628
- &.sk-ghost
632
+ &.sk-solid
629
633
  {
630
- background-color: oklch(from var(--sk-button-bg) l c h / var(--sk-button-subtle-opacity));
634
+ --sk-button-border-color: var(--sk-button-border-hover);
635
+ background-color: var(--sk-button-bg-hover);
636
+ color: var(--sk-button-text);
637
+
638
+ &:hover:not(:disabled)
639
+ {
640
+ --sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
641
+ background-color: color-mix(in oklch, var(--sk-button-bg) 70%, white 30%);
642
+ }
631
643
  }
632
644
 
633
- &.sk-solid
645
+ &.sk-outline
634
646
  {
635
- background-color: var(--sk-button-bg-active);
647
+ --sk-button-border-color: var(--sk-button-border-hover);
648
+ background-color: var(--sk-button-bg);
649
+ color: var(--sk-button-text);
636
650
  }
637
651
 
638
652
  &.sk-subtle
639
653
  {
654
+ --sk-button-border-color: transparent;
640
655
  background-color: var(--sk-button-bg);
656
+ color: var(--sk-button-text);
657
+
658
+ &:hover:not(:disabled)
659
+ {
660
+ --sk-button-border-color: transparent;
661
+ --sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
662
+ background-color: var(--sk-button-bg-hover);
663
+ }
664
+ }
665
+
666
+ &.sk-ghost
667
+ {
668
+ --sk-button-border-color: color-mix(in oklch, var(--sk-button-border-base) 50%, transparent 50%);
669
+ border-color: color-mix(in oklch, var(--sk-button-border-base) 50%, transparent 50%);
670
+ background-color: var(--sk-button-outline-bg);
671
+ color: var(--sk-button-text);
672
+ }
673
+
674
+ &.sk-link
675
+ {
676
+ color: var(--sk-button-text);
641
677
  }
642
678
  }
643
679
 
@@ -3,7 +3,6 @@
3
3
  //----------------------------------------------------------------------------------------------------------------------
4
4
 
5
5
  @use '../theme/variables' as *;
6
- @use '../mixins' as *;
7
6
 
8
7
  //----------------------------------------------------------------------------------------------------------------------
9
8
  // Card Design Tokens
@@ -42,10 +41,34 @@
42
41
 
43
42
  .sk-card-header
44
43
  {
44
+ // Header cut is reduced by margin to align with panel bevel
45
+ --sk-card-header-cut-tl: calc(var(--sk-panel-cut-tl) - 2px);
46
+ --sk-card-header-cut-tr: calc(var(--sk-panel-cut-tr) - 2px);
47
+
45
48
  padding: var(--sk-card-header-padding-vertical) var(--sk-card-padding);
46
- //border-bottom: var(--sk-border-width-thin) solid oklch(from currentColor l c h / 0.3);
47
49
  background-color: oklch(from currentColor l c h / 0.2);
48
50
  margin: 2px;
51
+
52
+ // Beveled top corners (modern path)
53
+ @supports (corner-shape: bevel)
54
+ {
55
+ border-top-left-radius: max(0px, var(--sk-card-header-cut-tl));
56
+ border-top-right-radius: max(0px, var(--sk-card-header-cut-tr));
57
+ corner-shape: bevel;
58
+ }
59
+
60
+ // Beveled top corners (clip-path fallback)
61
+ @supports not (corner-shape: bevel)
62
+ {
63
+ clip-path: polygon(
64
+ max(0px, var(--sk-card-header-cut-tl)) 0,
65
+ calc(100% - max(0px, var(--sk-card-header-cut-tr))) 0,
66
+ 100% max(0px, var(--sk-card-header-cut-tr)),
67
+ 100% 100%,
68
+ 0 100%,
69
+ 0 max(0px, var(--sk-card-header-cut-tl))
70
+ );
71
+ }
49
72
  }
50
73
 
51
74
  .sk-card-title
@@ -100,13 +123,26 @@
100
123
  padding: var(--sk-card-footer-padding-vertical) var(--sk-card-padding);
101
124
  background-color: oklch(from currentColor l c h / 0.05);
102
125
 
103
- // Apply cut-border mixin for beveled corner (bottom-right only)
104
- @include cut-border(
105
- $cut: var(--sk-panel-cut-size),
106
- $border-width: 0,
107
- $border-color: tranparent,
108
- $corners: (bottom-right)
109
- );
126
+ // Beveled bottom corners (modern path)
127
+ @supports (corner-shape: bevel)
128
+ {
129
+ border-bottom-right-radius: var(--sk-panel-cut-br);
130
+ border-bottom-left-radius: var(--sk-panel-cut-bl);
131
+ corner-shape: bevel;
132
+ }
133
+
134
+ // Beveled bottom corners (clip-path fallback)
135
+ @supports not (corner-shape: bevel)
136
+ {
137
+ clip-path: polygon(
138
+ 0 0,
139
+ 100% 0,
140
+ 100% calc(100% - var(--sk-panel-cut-br)),
141
+ calc(100% - var(--sk-panel-cut-br)) 100%,
142
+ var(--sk-panel-cut-bl) 100%,
143
+ 0 calc(100% - var(--sk-panel-cut-bl))
144
+ );
145
+ }
110
146
 
111
147
  border-top: var(--sk-border-width-thin) solid oklch(from currentColor l c h / 0.1);
112
148
  }
@@ -29,6 +29,7 @@
29
29
  @include meta.load-css('popover');
30
30
  @include meta.load-css('progress');
31
31
  @include meta.load-css('radio');
32
+ @include meta.load-css('select');
32
33
  @include meta.load-css('sidebar');
33
34
  @include meta.load-css('skeleton');
34
35
  @include meta.load-css('slider');
@@ -12,6 +12,7 @@
12
12
 
13
13
  position: relative;
14
14
  display: inline-flex;
15
+ width: 100%;
15
16
 
16
17
  // Size variants
17
18
  &.sk-sm
@@ -3,7 +3,6 @@
3
3
  //----------------------------------------------------------------------------------------------------------------------
4
4
 
5
5
  @use '../theme/variables' as *;
6
- @use '../mixins' as *;
7
6
 
8
7
  //----------------------------------------------------------------------------------------------------------------------
9
8
  // Panel Design Tokens
@@ -27,6 +26,12 @@
27
26
  /// Default cut size for md panels (height / factor)
28
27
  --sk-panel-cut-size: calc(var(--sk-panel-min-height) / var(--sk-panel-radius-factor));
29
28
 
29
+ /// Per-corner cut sizes (toggled on by .sk-cut-* classes)
30
+ --sk-panel-cut-tl: 0px;
31
+ --sk-panel-cut-tr: 0px;
32
+ --sk-panel-cut-br: 0px;
33
+ --sk-panel-cut-bl: 0px;
34
+
30
35
  //------------------------------------------------------------------------------------------------------------------
31
36
  // Border Tokens
32
37
  //------------------------------------------------------------------------------------------------------------------
@@ -141,13 +146,86 @@
141
146
  color: var(--sk-kind-color, var(--sk-panel-color-base));
142
147
  }
143
148
 
144
- // Apply cut-border mixin for beveled corner (bottom-right only)
145
- @include cut-border(
146
- $cut: var(--sk-panel-cut-size),
147
- $border-width: var(--sk-panel-border-width),
148
- $border-color: var(--sk-panel-border-color),
149
- $corners: (bottom-right)
150
- );
149
+ //------------------------------------------------------------------------------------------------------------------
150
+ // Corner toggle classes
151
+ //------------------------------------------------------------------------------------------------------------------
152
+
153
+ &.sk-cut-top-left { --sk-panel-cut-tl: var(--sk-panel-cut-size); }
154
+ &.sk-cut-top-right { --sk-panel-cut-tr: var(--sk-panel-cut-size); }
155
+ &.sk-cut-bottom-right { --sk-panel-cut-br: var(--sk-panel-cut-size); }
156
+ &.sk-cut-bottom-left { --sk-panel-cut-bl: var(--sk-panel-cut-size); }
157
+
158
+ //------------------------------------------------------------------------------------------------------------------
159
+ // Beveled corners (modern path)
160
+ //------------------------------------------------------------------------------------------------------------------
161
+
162
+ @supports (corner-shape: bevel)
163
+ {
164
+ border: var(--sk-panel-border-width) solid var(--sk-panel-border-color);
165
+ border-top-left-radius: var(--sk-panel-cut-tl);
166
+ border-top-right-radius: var(--sk-panel-cut-tr);
167
+ border-bottom-right-radius: var(--sk-panel-cut-br);
168
+ border-bottom-left-radius: var(--sk-panel-cut-bl);
169
+ corner-shape: bevel;
170
+ }
171
+
172
+ //------------------------------------------------------------------------------------------------------------------
173
+ // Beveled corners (clip-path fallback)
174
+ //------------------------------------------------------------------------------------------------------------------
175
+
176
+ @supports not (corner-shape: bevel)
177
+ {
178
+ border: none;
179
+
180
+ // 8-point polygon; when a corner var is 0px its two points collapse into the corner
181
+ clip-path: polygon(
182
+ var(--sk-panel-cut-tl) 0,
183
+ calc(100% - var(--sk-panel-cut-tr)) 0,
184
+ 100% var(--sk-panel-cut-tr),
185
+ 100% calc(100% - var(--sk-panel-cut-br)),
186
+ calc(100% - var(--sk-panel-cut-br)) 100%,
187
+ var(--sk-panel-cut-bl) 100%,
188
+ 0 calc(100% - var(--sk-panel-cut-bl)),
189
+ 0 var(--sk-panel-cut-tl)
190
+ );
191
+
192
+ // ::before draws the border via double-polygon clip-path
193
+ &::before
194
+ {
195
+ content: '';
196
+ position: absolute;
197
+ top: 0;
198
+ left: 0;
199
+ right: 0;
200
+ bottom: 0;
201
+ background-color: var(--sk-panel-border-color);
202
+ z-index: -1;
203
+
204
+ clip-path: polygon(
205
+ // Outer ring (clockwise)
206
+ var(--sk-panel-cut-tl) 0,
207
+ calc(100% - var(--sk-panel-cut-tr)) 0,
208
+ 100% var(--sk-panel-cut-tr),
209
+ 100% calc(100% - var(--sk-panel-cut-br)),
210
+ calc(100% - var(--sk-panel-cut-br)) 100%,
211
+ var(--sk-panel-cut-bl) 100%,
212
+ 0 calc(100% - var(--sk-panel-cut-bl)),
213
+ 0 var(--sk-panel-cut-tl),
214
+ var(--sk-panel-cut-tl) 0,
215
+
216
+ // Inner ring (counter-clockwise)
217
+ calc(var(--sk-panel-cut-tl) + var(--sk-panel-border-width)) var(--sk-panel-border-width),
218
+ var(--sk-panel-border-width) calc(var(--sk-panel-cut-tl) + var(--sk-panel-border-width)),
219
+ var(--sk-panel-border-width) calc(100% - var(--sk-panel-cut-bl) - var(--sk-panel-border-width)),
220
+ calc(var(--sk-panel-cut-bl) + var(--sk-panel-border-width)) calc(100% - var(--sk-panel-border-width)),
221
+ calc(100% - var(--sk-panel-cut-br) - var(--sk-panel-border-width)) calc(100% - var(--sk-panel-border-width)),
222
+ calc(100% - var(--sk-panel-border-width)) calc(100% - var(--sk-panel-cut-br) - var(--sk-panel-border-width)),
223
+ calc(100% - var(--sk-panel-border-width)) calc(var(--sk-panel-cut-tr) + var(--sk-panel-border-width)),
224
+ calc(100% - var(--sk-panel-cut-tr) - var(--sk-panel-border-width)) var(--sk-panel-border-width),
225
+ calc(var(--sk-panel-cut-tl) + var(--sk-panel-border-width)) var(--sk-panel-border-width)
226
+ );
227
+ }
228
+ }
151
229
 
152
230
  //------------------------------------------------------------------------------------------------------------------
153
231
  // Corner decoration line
@@ -161,11 +239,40 @@
161
239
  height: 2px;
162
240
  background: var(--sk-panel-border-base);
163
241
  border-radius: 1px;
242
+ transform-origin: center;
243
+ pointer-events: none;
244
+ }
245
+
246
+ // Bottom-right decoration (default)
247
+ &.sk-decoration-bottom-right::after
248
+ {
164
249
  right: var(--sk-panel-decoration-offset);
165
250
  bottom: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
166
251
  transform: rotate(135deg);
167
- transform-origin: center;
168
- pointer-events: none;
252
+ }
253
+
254
+ // Top-left decoration (same diagonal as bottom-right)
255
+ &.sk-decoration-top-left::after
256
+ {
257
+ left: var(--sk-panel-decoration-offset);
258
+ top: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
259
+ transform: rotate(135deg);
260
+ }
261
+
262
+ // Top-right decoration
263
+ &.sk-decoration-top-right::after
264
+ {
265
+ right: var(--sk-panel-decoration-offset);
266
+ top: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
267
+ transform: rotate(45deg);
268
+ }
269
+
270
+ // Bottom-left decoration
271
+ &.sk-decoration-bottom-left::after
272
+ {
273
+ left: var(--sk-panel-decoration-offset);
274
+ bottom: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
275
+ transform: rotate(45deg);
169
276
  }
170
277
 
171
278
  //------------------------------------------------------------------------------------------------------------------
@@ -203,9 +310,8 @@
203
310
 
204
311
  &.sk-no-border
205
312
  {
206
- // Remove all border styling
313
+ // Remove border and glow but keep the bevel shape
207
314
  --sk-panel-border-width: 0;
208
- --sk-panel-cut-size: 0;
209
315
  box-shadow: none;
210
316
 
211
317
  // Remove the decoration as well
@@ -231,7 +337,7 @@
231
337
  .sk-panel-scroll-content
232
338
  {
233
339
  padding: var(--sk-panel-padding);
234
- margin-bottom: calc(var(--sk-panel-cut-size) + var(--sk-panel-decoration-offset));
340
+ margin-bottom: calc(max(var(--sk-panel-cut-br), var(--sk-panel-cut-bl)) + var(--sk-panel-decoration-offset));
235
341
  overflow-y: auto;
236
342
  overflow-x: hidden;
237
343
  flex: 1;