@gitlab/ui 50.1.1 → 51.0.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 (37) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/components/base/dropdown/dropdown.js +1 -1
  3. package/dist/components/base/dropdown/dropdown_divider.js +1 -1
  4. package/dist/components/base/dropdown/dropdown_item.js +3 -3
  5. package/dist/components/base/dropdown/dropdown_section_header.js +1 -1
  6. package/dist/components/base/dropdown/dropdown_text.js +1 -1
  7. package/dist/components/base/form/form_combobox/form_combobox.js +1 -1
  8. package/dist/components/base/nav/nav_item_dropdown.js +1 -1
  9. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +1 -1
  10. package/dist/components/base/new_dropdowns/listbox/listbox.js +1 -1
  11. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +3 -3
  12. package/dist/components/base/token_selector/token_selector_dropdown.js +1 -1
  13. package/dist/index.css +1 -1
  14. package/dist/index.css.map +1 -1
  15. package/dist/utils/charts/theme.js +2 -3
  16. package/package.json +3 -3
  17. package/src/components/base/dropdown/dropdown.scss +7 -7
  18. package/src/components/base/dropdown/dropdown.spec.js +6 -6
  19. package/src/components/base/dropdown/dropdown.vue +7 -7
  20. package/src/components/base/dropdown/dropdown_divider.scss +6 -6
  21. package/src/components/base/dropdown/dropdown_divider.vue +1 -1
  22. package/src/components/base/dropdown/dropdown_item.scss +6 -6
  23. package/src/components/base/dropdown/dropdown_item.spec.js +1 -1
  24. package/src/components/base/dropdown/dropdown_item.vue +6 -15
  25. package/src/components/base/dropdown/dropdown_section_header.scss +6 -6
  26. package/src/components/base/dropdown/dropdown_section_header.vue +1 -1
  27. package/src/components/base/dropdown/dropdown_text.scss +1 -1
  28. package/src/components/base/dropdown/dropdown_text.vue +1 -1
  29. package/src/components/base/form/form_combobox/form_combobox.vue +1 -1
  30. package/src/components/base/nav/nav_item_dropdown.vue +1 -1
  31. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.spec.js +1 -1
  32. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +3 -3
  33. package/src/components/base/new_dropdowns/listbox/listbox.vue +1 -1
  34. package/src/components/base/new_dropdowns/listbox/listbox_item.vue +3 -3
  35. package/src/components/base/sorting/sorting.spec.js +1 -1
  36. package/src/components/base/token_selector/token_selector_dropdown.vue +1 -1
  37. package/src/utils/charts/theme.js +2 -3
@@ -9,7 +9,6 @@ const gray200 = '#bfbfc3';
9
9
  const gray300 = '#a4a3a8';
10
10
  const gray500 = '#737278';
11
11
  const gray600 = '#626168';
12
- const gray700 = '#535158';
13
12
  const gray900 = '#333238';
14
13
  const dataVizGreen500 = '#619025';
15
14
  const dataVizGreen600 = '#4e7f0e';
@@ -164,11 +163,11 @@ const createTheme = function () {
164
163
  emphasis: {
165
164
  iconStyle: {
166
165
  borderWidth: 0,
167
- color: gray700
166
+ color: gray900
168
167
  }
169
168
  },
170
169
  iconStyle: {
171
- color: gray200,
170
+ color: gray500,
172
171
  borderWidth: 0
173
172
  },
174
173
  itemGap: 8,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "50.1.1",
3
+ "version": "51.0.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -85,7 +85,7 @@
85
85
  "@babel/preset-env": "^7.20.2",
86
86
  "@gitlab/eslint-plugin": "18.1.0",
87
87
  "@gitlab/stylelint-config": "4.1.0",
88
- "@gitlab/svgs": "3.9.0",
88
+ "@gitlab/svgs": "3.11.0",
89
89
  "@rollup/plugin-commonjs": "^11.1.0",
90
90
  "@rollup/plugin-node-resolve": "^7.1.3",
91
91
  "@rollup/plugin-replace": "^2.3.2",
@@ -113,7 +113,7 @@
113
113
  "bootstrap-vue-vue3": "npm:bootstrap-vue@2.23.1",
114
114
  "cypress": "^11.1.0",
115
115
  "emoji-regex": "^10.0.0",
116
- "eslint": "8.27.0",
116
+ "eslint": "8.28.0",
117
117
  "eslint-import-resolver-jest": "3.0.2",
118
118
  "eslint-plugin-cypress": "2.12.1",
119
119
  "eslint-plugin-storybook": "0.6.7",
@@ -1,4 +1,4 @@
1
- .gl-new-dropdown {
1
+ .gl-dropdown {
2
2
  .dropdown-menu {
3
3
  @include gl-bg-white;
4
4
  @include gl-border-1;
@@ -19,7 +19,7 @@
19
19
  @include gl-p-0;
20
20
  }
21
21
 
22
- .gl-new-dropdown-inner {
22
+ .gl-dropdown-inner {
23
23
  @include gl-display-flex;
24
24
  @include gl-flex-direction-column;
25
25
  max-height: $gl-max-dropdown-max-height;
@@ -33,12 +33,12 @@
33
33
  }
34
34
  }
35
35
 
36
- .gl-new-dropdown-contents {
36
+ .gl-dropdown-contents {
37
37
  @include gl-flex-grow-1;
38
38
  overflow-y: auto;
39
39
  }
40
40
 
41
- .gl-new-dropdown-header-top {
41
+ .gl-dropdown-header-top {
42
42
  @include gl-border-1;
43
43
  @include gl-border-b-solid;
44
44
  @include gl-border-gray-200;
@@ -53,13 +53,13 @@
53
53
  @include gl-px-5;
54
54
  }
55
55
 
56
- .gl-new-dropdown-header {
56
+ .gl-dropdown-header {
57
57
  @include gl-border-b-1;
58
58
  @include gl-border-b-solid;
59
59
  @include gl-border-b-gray-200;
60
60
  }
61
61
 
62
- .gl-new-dropdown-footer {
62
+ .gl-dropdown-footer {
63
63
  @include gl-border-t-1;
64
64
  @include gl-border-t-solid;
65
65
  @include gl-border-t-gray-200;
@@ -138,7 +138,7 @@
138
138
  }
139
139
  }
140
140
 
141
- .gl-new-dropdown-button-text {
141
+ .gl-dropdown-button-text {
142
142
  @include gl-mr-auto;
143
143
  @include gl-overflow-hidden;
144
144
  @include gl-text-overflow-ellipsis;
@@ -187,25 +187,25 @@ describe('new dropdown', () => {
187
187
 
188
188
  it('renders the header', () => {
189
189
  buildWrapper({}, slots);
190
- expect(wrapper.find('.gl-new-dropdown-header').exists()).toBe(true);
190
+ expect(wrapper.find('.gl-dropdown-header').exists()).toBe(true);
191
191
  expect(wrapper.html()).toContain('Header Content');
192
192
  });
193
193
 
194
194
  it('has the "gl-border-b-0!" class when header border disabled', () => {
195
195
  buildWrapper({ hideHeaderBorder: true }, slots);
196
- expect(wrapper.find('.gl-new-dropdown-header').classes()).toContain('gl-border-b-0!');
196
+ expect(wrapper.find('.gl-dropdown-header').classes()).toContain('gl-border-b-0!');
197
197
  });
198
198
  });
199
199
 
200
200
  describe('with no header slot exists', () => {
201
201
  it('does not render the header', () => {
202
202
  buildWrapper();
203
- expect(wrapper.find('.gl-new-dropdown-header').exists()).toBe(false);
203
+ expect(wrapper.find('.gl-dropdown-header').exists()).toBe(false);
204
204
  });
205
205
 
206
206
  it('does render the header if headerText provided', () => {
207
207
  buildWrapper({ headerText: 'Legacy Header Prop Text' });
208
- expect(wrapper.find('.gl-new-dropdown-header').exists()).toBe(true);
208
+ expect(wrapper.find('.gl-dropdown-header').exists()).toBe(true);
209
209
  expect(wrapper.html()).toContain('Legacy Header Prop Text');
210
210
  });
211
211
  });
@@ -215,7 +215,7 @@ describe('new dropdown', () => {
215
215
 
216
216
  it('renders the footer', () => {
217
217
  buildWrapper({}, slots);
218
- expect(wrapper.find('.gl-new-dropdown-footer').exists()).toBe(true);
218
+ expect(wrapper.find('.gl-dropdown-footer').exists()).toBe(true);
219
219
  expect(wrapper.html()).toContain('Footer Content');
220
220
  });
221
221
  });
@@ -223,7 +223,7 @@ describe('new dropdown', () => {
223
223
  describe('with no footer slot exists', () => {
224
224
  it('does not render the footer', () => {
225
225
  buildWrapper();
226
- expect(wrapper.find('.gl-new-dropdown-footer').exists()).toBe(false);
226
+ expect(wrapper.find('.gl-dropdown-footer').exists()).toBe(false);
227
227
  });
228
228
  });
229
229
 
@@ -235,7 +235,7 @@ export default {
235
235
  <template>
236
236
  <b-dropdown
237
237
  ref="dropdown"
238
- class="gl-new-dropdown"
238
+ class="gl-dropdown"
239
239
  v-bind="$attrs"
240
240
  :split="split"
241
241
  :variant="variant"
@@ -248,13 +248,13 @@ export default {
248
248
  :popper-opts="popperOptions"
249
249
  v-on="$listeners"
250
250
  >
251
- <div class="gl-new-dropdown-inner">
251
+ <div class="gl-dropdown-inner">
252
252
  <div
253
253
  v-if="hasSlotContents('header') || headerText"
254
- class="gl-new-dropdown-header"
254
+ class="gl-dropdown-header"
255
255
  :class="{ 'gl-border-b-0!': hideHeaderBorder }"
256
256
  >
257
- <p v-if="headerText" class="gl-new-dropdown-header-top">
257
+ <p v-if="headerText" class="gl-dropdown-header-top">
258
258
  {{ headerText }}
259
259
  </p>
260
260
  <slot name="header"></slot>
@@ -288,7 +288,7 @@ export default {
288
288
  >
289
289
  </div>
290
290
  </div>
291
- <div class="gl-new-dropdown-contents">
291
+ <div class="gl-dropdown-contents">
292
292
  <div
293
293
  v-if="hasHighlightedItemsContent"
294
294
  class="gl-overflow-visible"
@@ -299,7 +299,7 @@ export default {
299
299
  </div>
300
300
  <slot></slot>
301
301
  </div>
302
- <div v-if="hasSlotContents('footer')" class="gl-new-dropdown-footer">
302
+ <div v-if="hasSlotContents('footer')" class="gl-dropdown-footer">
303
303
  <slot name="footer"></slot>
304
304
  </div>
305
305
  </div>
@@ -307,7 +307,7 @@ export default {
307
307
  <slot name="button-content">
308
308
  <gl-loading-icon v-if="loading" :class="{ 'gl-mr-2': !isIconOnly }" />
309
309
  <gl-icon v-if="icon && !(isIconOnly && loading)" class="dropdown-icon" :name="icon" />
310
- <span class="gl-new-dropdown-button-text" :class="{ 'gl-sr-only': textSrOnly }">
310
+ <span class="gl-dropdown-button-text" :class="{ 'gl-sr-only': textSrOnly }">
311
311
  <slot name="button-text">{{ buttonText }}</slot>
312
312
  </span>
313
313
  <gl-icon v-if="renderCaret" class="gl-button-icon dropdown-chevron" name="chevron-down" />
@@ -1,4 +1,4 @@
1
- @mixin gl-tmp-new-dropdown-divider-style {
1
+ @mixin gl-tmp-dropdown-divider-style {
2
2
  @include gl-overflow-hidden;
3
3
  @include gl-h-0;
4
4
  @include gl-my-2;
@@ -10,13 +10,13 @@
10
10
  }
11
11
 
12
12
  /* Styling when the component is used on its own */
13
- .gl-new-dropdown-divider {
14
- @include gl-tmp-new-dropdown-divider-style;
13
+ .gl-dropdown-divider {
14
+ @include gl-tmp-dropdown-divider-style;
15
15
  }
16
16
 
17
17
  /* Styling to override the vue-bootstrap CSS included in GitLab CSS */
18
- .gl-new-dropdown {
19
- .gl-new-dropdown-divider {
20
- @include gl-tmp-new-dropdown-divider-style;
18
+ .gl-dropdown {
19
+ .gl-dropdown-divider {
20
+ @include gl-tmp-dropdown-divider-style;
21
21
  }
22
22
  }
@@ -10,5 +10,5 @@ export default {
10
10
  </script>
11
11
 
12
12
  <template>
13
- <b-dropdown-divider class="gl-new-dropdown-divider" v-bind="$attrs" v-on="$listeners" />
13
+ <b-dropdown-divider class="gl-dropdown-divider" v-bind="$attrs" v-on="$listeners" />
14
14
  </template>
@@ -17,7 +17,7 @@
17
17
  @include gl-white-space-normal;
18
18
  }
19
19
 
20
- .gl-new-dropdown-item {
20
+ .gl-dropdown-item {
21
21
  .dropdown-item {
22
22
  @include gl-tmp-dropdown-item-style;
23
23
  @include gl-cursor-pointer;
@@ -27,27 +27,27 @@
27
27
  @include gl-mr-3;
28
28
  }
29
29
 
30
- .gl-new-dropdown-item-check-icon {
30
+ .gl-dropdown-item-check-icon {
31
31
  @include gl-flex-shrink-0;
32
32
  @include gl-mr-3;
33
33
  @include gl-text-gray-700;
34
34
  }
35
35
 
36
- .gl-new-dropdown-item-icon {
36
+ .gl-dropdown-item-icon {
37
37
  @include gl-flex-shrink-0;
38
38
  @include gl-mr-3;
39
39
  }
40
40
 
41
- .gl-new-dropdown-item-text-primary {
41
+ .gl-dropdown-item-text-primary {
42
42
  @include gl-m-0;
43
43
  }
44
44
 
45
- .gl-new-dropdown-item-text-secondary {
45
+ .gl-dropdown-item-text-secondary {
46
46
  @include gl-m-0;
47
47
  @include gl-text-gray-700;
48
48
  }
49
49
 
50
- .gl-new-dropdown-item-text-wrapper {
50
+ .gl-dropdown-item-text-wrapper {
51
51
  @include gl-min-w-0;
52
52
  @include gl-flex-grow-1;
53
53
  @include gl-mr-3;
@@ -41,7 +41,7 @@ describe('dropdown item', () => {
41
41
  });
42
42
 
43
43
  expect(findCheckbox().classes()).toEqual([
44
- 'gl-new-dropdown-item-check-icon',
44
+ 'gl-dropdown-item-check-icon',
45
45
  ...expectedClasses,
46
46
  ]);
47
47
  }
@@ -88,31 +88,22 @@ export default {
88
88
  </script>
89
89
 
90
90
  <template>
91
- <component
92
- :is="bootstrapComponent"
93
- class="gl-new-dropdown-item"
94
- v-bind="$attrs"
95
- v-on="$listeners"
96
- >
91
+ <component :is="bootstrapComponent" class="gl-dropdown-item" v-bind="$attrs" v-on="$listeners">
97
92
  <gl-icon
98
93
  v-if="shouldShowCheckIcon"
99
94
  name="mobile-issue-close"
100
95
  data-testid="dropdown-item-checkbox"
101
96
  :class="[
102
- 'gl-new-dropdown-item-check-icon',
97
+ 'gl-dropdown-item-check-icon',
103
98
  { 'gl-visibility-hidden': !isChecked },
104
99
  checkedClasses,
105
100
  ]"
106
101
  />
107
- <gl-icon
108
- v-if="iconName"
109
- :name="iconName"
110
- :class="['gl-new-dropdown-item-icon', iconColorCss]"
111
- />
102
+ <gl-icon v-if="iconName" :name="iconName" :class="['gl-dropdown-item-icon', iconColorCss]" />
112
103
  <gl-avatar v-if="avatarUrl" :size="32" :src="avatarUrl" />
113
- <div class="gl-new-dropdown-item-text-wrapper">
114
- <p class="gl-new-dropdown-item-text-primary"><slot></slot></p>
115
- <p v-if="secondaryText" class="gl-new-dropdown-item-text-secondary">{{ secondaryText }}</p>
104
+ <div class="gl-dropdown-item-text-wrapper">
105
+ <p class="gl-dropdown-item-text-primary"><slot></slot></p>
106
+ <p v-if="secondaryText" class="gl-dropdown-item-text-secondary">{{ secondaryText }}</p>
116
107
  </div>
117
108
  <gl-button
118
109
  v-if="iconRightName"
@@ -1,4 +1,4 @@
1
- @mixin gl-tmp-new-dropdown-section-header-style {
1
+ @mixin gl-tmp-dropdown-section-header-style {
2
2
  @include gl-font-base;
3
3
  @include gl-text-gray-900;
4
4
  @include gl-line-height-normal;
@@ -10,13 +10,13 @@
10
10
  }
11
11
 
12
12
  /* Styling when the component is used on its own */
13
- .gl-new-dropdown-section-header .dropdown-header {
14
- @include gl-tmp-new-dropdown-section-header-style;
13
+ .gl-dropdown-section-header .dropdown-header {
14
+ @include gl-tmp-dropdown-section-header-style;
15
15
  }
16
16
 
17
17
  /* Styling to override the vue-bootstrap CSS included in GitLab CSS */
18
- .gl-new-dropdown {
19
- .gl-new-dropdown-section-header .dropdown-header {
20
- @include gl-tmp-new-dropdown-section-header-style;
18
+ .gl-dropdown {
19
+ .gl-dropdown-section-header .dropdown-header {
20
+ @include gl-tmp-dropdown-section-header-style;
21
21
  }
22
22
  }
@@ -10,7 +10,7 @@ export default {
10
10
  </script>
11
11
 
12
12
  <template>
13
- <b-dropdown-header class="gl-new-dropdown-section-header" v-bind="$attrs" v-on="$listeners">
13
+ <b-dropdown-header class="gl-dropdown-section-header" v-bind="$attrs" v-on="$listeners">
14
14
  <slot></slot>
15
15
  </b-dropdown-header>
16
16
  </template>
@@ -1,4 +1,4 @@
1
- .gl-new-dropdown-text {
1
+ .gl-dropdown-text {
2
2
  .b-dropdown-text {
3
3
  @include gl-tmp-dropdown-item-style;
4
4
  @include gl-py-3;
@@ -10,7 +10,7 @@ export default {
10
10
  </script>
11
11
 
12
12
  <template>
13
- <b-dropdown-text class="gl-new-dropdown-text" v-bind="$attrs" v-on="$listeners">
13
+ <b-dropdown-text class="gl-dropdown-text" v-bind="$attrs" v-on="$listeners">
14
14
  <slot></slot>
15
15
  </b-dropdown-text>
16
16
  </template>
@@ -123,7 +123,7 @@ export default {
123
123
  },
124
124
  focusItem(index) {
125
125
  this.$refs.suggestionsMenu
126
- .querySelectorAll('.gl-new-dropdown-item')
126
+ .querySelectorAll('.gl-dropdown-item')
127
127
  [index]?.querySelector('button')
128
128
  .focus();
129
129
  },
@@ -25,7 +25,7 @@ export default {
25
25
  </script>
26
26
 
27
27
  <template>
28
- <b-nav-item-dropdown class="gl-new-dropdown" v-bind="$attrs" v-on="$listeners">
28
+ <b-nav-item-dropdown class="gl-dropdown" v-bind="$attrs" v-on="$listeners">
29
29
  <template #default>
30
30
  <slot></slot>
31
31
  </template>
@@ -84,7 +84,7 @@ describe('base dropdown', () => {
84
84
 
85
85
  it('renders the content', () => {
86
86
  buildWrapper({}, slots);
87
- expect(wrapper.find('.gl-new-dropdown-inner').html()).toContain(defaultContent);
87
+ expect(wrapper.find('.gl-dropdown-inner').html()).toContain(defaultContent);
88
88
  });
89
89
  });
90
90
 
@@ -195,7 +195,7 @@ export default {
195
195
  </script>
196
196
 
197
197
  <template>
198
- <div v-outside="close" class="gl-new-dropdown dropdown btn-group">
198
+ <div v-outside="close" class="gl-dropdown dropdown btn-group">
199
199
  <gl-button
200
200
  :id="toggleId"
201
201
  ref="toggle"
@@ -212,7 +212,7 @@ export default {
212
212
  :aria-labelledby="toggleLabelledBy"
213
213
  @click="toggle"
214
214
  >
215
- <span class="gl-new-dropdown-button-text" :class="{ 'gl-sr-only': textSrOnly }">
215
+ <span class="gl-dropdown-button-text" :class="{ 'gl-sr-only': textSrOnly }">
216
216
  {{ toggleText }}
217
217
  </span>
218
218
  <gl-icon v-if="!noCaret" class="gl-button-icon dropdown-chevron" name="chevron-down" />
@@ -225,7 +225,7 @@ export default {
225
225
  :class="{ show: visible }"
226
226
  @keydown.esc.stop.prevent="closeAndFocus"
227
227
  >
228
- <div class="gl-new-dropdown-inner">
228
+ <div class="gl-dropdown-inner">
229
229
  <slot></slot>
230
230
  </div>
231
231
  </div>
@@ -529,7 +529,7 @@ export default {
529
529
  ref="list"
530
530
  :aria-labelledby="listAriaLabelledBy || headerId || toggleId"
531
531
  role="listbox"
532
- class="gl-new-dropdown-contents gl-list-style-none gl-pl-0 gl-mb-0"
532
+ class="gl-dropdown-contents gl-list-style-none gl-pl-0 gl-mb-0"
533
533
  tabindex="-1"
534
534
  @keydown="onKeydown"
535
535
  >
@@ -51,7 +51,7 @@ export default {
51
51
 
52
52
  <template>
53
53
  <li
54
- class="gl-new-dropdown-item"
54
+ class="gl-dropdown-item"
55
55
  role="option"
56
56
  :tabindex="isFocused ? 0 : -1"
57
57
  :aria-selected="isSelected"
@@ -63,12 +63,12 @@ export default {
63
63
  name="mobile-issue-close"
64
64
  data-testid="dropdown-item-checkbox"
65
65
  :class="[
66
- 'gl-new-dropdown-item-check-icon',
66
+ 'gl-dropdown-item-check-icon',
67
67
  { 'gl-visibility-hidden': !isSelected },
68
68
  checkedClasses,
69
69
  ]"
70
70
  />
71
- <span class="gl-new-dropdown-item-text-wrapper">
71
+ <span class="gl-dropdown-item-text-wrapper">
72
72
  <slot></slot>
73
73
  </span>
74
74
  </span>
@@ -14,7 +14,7 @@ describe('sorting component', () => {
14
14
  isAscending,
15
15
  };
16
16
 
17
- const selectDropdownButton = () => wrapper.find('.gl-new-dropdown button');
17
+ const selectDropdownButton = () => wrapper.find('.gl-dropdown button');
18
18
  const selectDirectionButton = () => wrapper.find('.sorting-direction-button');
19
19
  const selectDropdown = () => wrapper.findComponent(GlDropdown);
20
20
 
@@ -172,7 +172,7 @@ export default {
172
172
  </script>
173
173
 
174
174
  <template>
175
- <div class="dropdown b-dropdown gl-new-dropdown gl-relative" :class="{ show }">
175
+ <div class="dropdown b-dropdown gl-dropdown gl-relative" :class="{ show }">
176
176
  <ul
177
177
  ref="dropdownMenu"
178
178
  role="menu"
@@ -5,7 +5,6 @@ import {
5
5
  gray300,
6
6
  gray500,
7
7
  gray600,
8
- gray700,
9
8
  gray900,
10
9
  red500,
11
10
  whiteNormal,
@@ -209,11 +208,11 @@ export const createTheme = (options = {}) => ({
209
208
  emphasis: {
210
209
  iconStyle: {
211
210
  borderWidth: 0,
212
- color: gray700,
211
+ color: gray900,
213
212
  },
214
213
  },
215
214
  iconStyle: {
216
- color: gray200,
215
+ color: gray500,
217
216
  borderWidth: 0,
218
217
  },
219
218
  itemGap: 8,