@gitlab/ui 122.11.0 → 122.12.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 (43) hide show
  1. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +28 -2
  2. package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +32 -0
  3. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +3 -4
  4. package/dist/index.css +2 -2
  5. package/dist/index.css.map +1 -1
  6. package/dist/tailwind.css +1 -1
  7. package/dist/tailwind.css.map +1 -1
  8. package/dist/tokens/build/js/tokens.dark.js +12 -1
  9. package/dist/tokens/build/js/tokens.js +12 -1
  10. package/dist/tokens/css/tokens.css +11 -0
  11. package/dist/tokens/css/tokens.dark.css +11 -0
  12. package/dist/tokens/docs/tokens-tailwind-docs.dark.json +277 -0
  13. package/dist/tokens/docs/tokens-tailwind-docs.json +277 -0
  14. package/dist/tokens/figma/constants.tokens.json +79 -0
  15. package/dist/tokens/js/tokens.dark.js +11 -0
  16. package/dist/tokens/js/tokens.js +11 -0
  17. package/dist/tokens/json/tokens.dark.json +266 -0
  18. package/dist/tokens/json/tokens.json +266 -0
  19. package/dist/tokens/scss/_tokens.dark.scss +11 -0
  20. package/dist/tokens/scss/_tokens.scss +11 -0
  21. package/dist/tokens/scss/_tokens_custom_properties.scss +11 -0
  22. package/dist/tokens/tailwind/tokens.cjs +2 -0
  23. package/package.json +1 -1
  24. package/src/components/base/form/form_group/form_group.scss +1 -1
  25. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +54 -17
  26. package/src/components/base/new_dropdowns/base_dropdown/dropdown_container.js +34 -0
  27. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.vue +2 -3
  28. package/src/components/base/new_dropdowns/dropdown.scss +51 -48
  29. package/src/tokens/build/css/tokens.css +11 -0
  30. package/src/tokens/build/css/tokens.dark.css +11 -0
  31. package/src/tokens/build/docs/tokens-tailwind-docs.dark.json +277 -0
  32. package/src/tokens/build/docs/tokens-tailwind-docs.json +277 -0
  33. package/src/tokens/build/figma/constants.tokens.json +79 -0
  34. package/src/tokens/build/js/tokens.dark.js +11 -0
  35. package/src/tokens/build/js/tokens.js +11 -0
  36. package/src/tokens/build/json/tokens.dark.json +266 -0
  37. package/src/tokens/build/json/tokens.json +266 -0
  38. package/src/tokens/build/scss/_tokens.dark.scss +11 -0
  39. package/src/tokens/build/scss/_tokens.scss +11 -0
  40. package/src/tokens/build/scss/_tokens_custom_properties.scss +11 -0
  41. package/src/tokens/build/tailwind/tokens.cjs +14 -0
  42. package/src/tokens/constant/opacity.tokens.json +81 -0
  43. package/tailwind.defaults.js +2 -13
@@ -38,14 +38,19 @@ import {
38
38
  import { OutsideDirective } from '../../../../directives/outside/outside';
39
39
  import GlButton from '../../button/button.vue';
40
40
  import GlIcon from '../../icon/icon.vue';
41
+ import DropdownContainer from './dropdown_container';
41
42
  import { ARROW_X_MINIMUM, DEFAULT_OFFSET, FIXED_WIDTH_CLASS } from './constants';
42
43
 
43
- export const BASE_DROPDOWN_CLASS = 'gl-new-dropdown';
44
+ const BASE_DROPDOWN_CLASS = 'gl-new-dropdown';
45
+ const DROPDOWN_CONTAINER_CLASS = 'gl-new-dropdown-container';
44
46
 
45
47
  export default {
46
48
  name: 'BaseDropdown',
49
+ expose: ['open', 'close', 'closeAndFocus', 'containsElement'],
47
50
  BASE_DROPDOWN_CLASS,
51
+ DROPDOWN_CONTAINER_CLASS,
48
52
  components: {
53
+ DropdownContainer,
49
54
  GlButton,
50
55
  GlIcon,
51
56
  },
@@ -477,8 +482,22 @@ export default {
477
482
  if (!this.visible) {
478
483
  return;
479
484
  }
485
+
480
486
  this.toggle(event);
481
487
  },
488
+ clickedToggle(event) {
489
+ return (
490
+ this.$refs.toggle.contains?.(event.target) ||
491
+ this.$refs.toggle.$el?.contains?.(event.target)
492
+ );
493
+ },
494
+ handleClickOutside(event) {
495
+ // Ignore "click outside" events if the toggle was clicked
496
+ if (this.clickedToggle(event)) {
497
+ return;
498
+ }
499
+ this.close(event);
500
+ },
482
501
  /**
483
502
  * Closes the dropdown and returns the focus to the toggle unless it has has moved outside
484
503
  * of the dropdown, meaning that the consumer needed to put some other element in focus.
@@ -549,15 +568,25 @@ export default {
549
568
  this.nonScrollableContentHeight =
550
569
  floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;
551
570
  },
571
+ /**
572
+ * Public method which returns `true` if the given element is in the DOM tree of this component,
573
+ * and `false` otherwise.
574
+ *
575
+ * Useful for checking whether an event was dispatched against something in this dropdown,
576
+ * e.g., pressing <kbd>Esc</kbd>.
577
+ */
578
+ containsElement(element) {
579
+ return (
580
+ element.closest(`.${BASE_DROPDOWN_CLASS}`) === this.$el ||
581
+ element.closest(`.${DROPDOWN_CONTAINER_CLASS}`) === this.$refs.dropdownContainer
582
+ );
583
+ },
552
584
  },
553
585
  };
554
586
  </script>
555
587
 
556
588
  <template>
557
- <div
558
- v-outside.click.focusin="close"
559
- :class="[$options.BASE_DROPDOWN_CLASS, { '!gl-block': block }]"
560
- >
589
+ <div :class="[$options.BASE_DROPDOWN_CLASS, { '!gl-block': block }]">
561
590
  <component
562
591
  :is="toggleComponent"
563
592
  v-bind="toggleAttributes"
@@ -579,18 +608,26 @@ export default {
579
608
  </slot>
580
609
  </component>
581
610
 
582
- <div
583
- :id="baseDropdownId"
584
- ref="content"
585
- data-testid="base-dropdown-menu"
586
- class="gl-new-dropdown-panel"
587
- :class="panelClasses"
588
- @keydown.esc.stop.prevent="closeAndFocus"
589
- >
590
- <div ref="dropdownArrow" class="gl-new-dropdown-arrow"></div>
591
- <div class="gl-new-dropdown-inner">
592
- <slot :visible="visible"></slot>
611
+ <dropdown-container :positioning-strategy="positioningStrategy">
612
+ <div
613
+ ref="dropdownContainer"
614
+ v-outside.click.focusin="handleClickOutside"
615
+ :class="$options.DROPDOWN_CONTAINER_CLASS"
616
+ >
617
+ <div
618
+ :id="baseDropdownId"
619
+ ref="content"
620
+ data-testid="base-dropdown-menu"
621
+ class="gl-new-dropdown-panel"
622
+ :class="panelClasses"
623
+ @keydown.esc.stop.prevent="closeAndFocus"
624
+ >
625
+ <div ref="dropdownArrow" class="gl-new-dropdown-arrow"></div>
626
+ <div class="gl-new-dropdown-inner">
627
+ <slot :visible="visible"></slot>
628
+ </div>
629
+ </div>
593
630
  </div>
594
- </div>
631
+ </dropdown-container>
595
632
  </div>
596
633
  </template>
@@ -0,0 +1,34 @@
1
+ /* eslint-disable import/no-default-export */
2
+ import { MountingPortal } from 'portal-vue';
3
+ import { POSITION_ABSOLUTE, POSITION_FIXED } from '../constants';
4
+
5
+ export default {
6
+ props: {
7
+ /**
8
+ * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position
9
+ * needs to be set to fixed in CSS as well.
10
+ * https://floating-ui.com/docs/computePosition#strategy
11
+ */
12
+ positioningStrategy: {
13
+ type: String,
14
+ required: false,
15
+ default: POSITION_ABSOLUTE,
16
+ validator: (strategy) => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy),
17
+ },
18
+ },
19
+ render(createElement) {
20
+ if (this.positioningStrategy === POSITION_FIXED) {
21
+ return createElement(
22
+ MountingPortal,
23
+ {
24
+ props: {
25
+ mountTo: 'body',
26
+ append: true,
27
+ },
28
+ },
29
+ [this.$scopedSlots.default()],
30
+ );
31
+ }
32
+ return this.$scopedSlots.default();
33
+ },
34
+ };
@@ -24,12 +24,11 @@ import {
24
24
  dropdownPlacements,
25
25
  dropdownVariantOptions,
26
26
  } from '../../../../utils/constants';
27
- import GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown.vue';
27
+ import GlBaseDropdown from '../base_dropdown/base_dropdown.vue';
28
28
  import GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item.vue';
29
29
  import GlDisclosureDropdownGroup from './disclosure_dropdown_group.vue';
30
30
  import { itemsValidator, isItem, hasOnlyListItems } from './utils';
31
31
 
32
- export const DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;
33
32
  export const ITEM_SELECTOR = `.${ITEM_CLASS}`;
34
33
 
35
34
  export default {
@@ -348,7 +347,7 @@ export default {
348
347
  if (
349
348
  this.autoClose &&
350
349
  e.target.closest(ITEM_SELECTOR) &&
351
- e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el
350
+ this.$refs.baseDropdown.containsElement(e.target)
352
351
  ) {
353
352
  this.closeAndFocus();
354
353
  }
@@ -2,18 +2,6 @@
2
2
  @apply gl-inline-flex;
3
3
  @apply gl-align-middle;
4
4
 
5
- .gl-new-dropdown-arrow {
6
- width: 8px;
7
- height: 8px;
8
-
9
- // blend in with the dropdown background
10
- background: var(--gl-dropdown-background-color);
11
- // these create the 45deg cutoff angle at the base of the caret
12
- border-bottom: 1px solid var(--gl-dropdown-background-color);
13
- border-right: 1px solid var(--gl-dropdown-background-color);
14
- position: absolute;
15
- }
16
-
17
5
  .gl-new-dropdown-custom-toggle {
18
6
  *:first-child {
19
7
  @apply gl-cursor-pointer;
@@ -24,42 +12,6 @@
24
12
  }
25
13
  }
26
14
 
27
- .gl-new-dropdown-panel {
28
- @apply gl-hidden;
29
- @apply gl-bg-dropdown;
30
- border-radius: var(--gl-dropdown-border-radius);
31
- @apply gl-drop-shadow-md;
32
- top: 0;
33
- left: 0;
34
- min-width: $gl-new-dropdown-min-width;
35
- max-width: $gl-new-dropdown-max-width;
36
- z-index: 1000;
37
- }
38
-
39
- .gl-new-dropdown-inner {
40
- @apply gl-flex;
41
- @apply gl-flex-col;
42
- max-height: $gl-max-dropdown-max-height;
43
- }
44
-
45
- .gl-new-dropdown-contents {
46
- position: relative;
47
- @apply gl-grow;
48
- @apply gl-overflow-y-auto;
49
- @apply gl-pl-0;
50
- @apply gl-mb-0;
51
- @apply gl-py-2;
52
- @apply gl-list-none;
53
-
54
- &:focus-visible {
55
- @apply gl-focus;
56
- }
57
-
58
- ul {
59
- @apply gl-list-none;
60
- }
61
- }
62
-
63
15
  .gl-new-dropdown-toggle {
64
16
  // optically align the caret
65
17
  &.gl-button:not(.gl-new-dropdown-toggle-no-caret, .btn-icon) {
@@ -137,6 +89,57 @@
137
89
  @apply gl-pl-0;
138
90
  }
139
91
  }
92
+ }
93
+
94
+ .gl-new-dropdown-container {
95
+ .gl-new-dropdown-arrow {
96
+ width: 8px;
97
+ height: 8px;
98
+
99
+ // blend in with the dropdown background
100
+ background: var(--gl-dropdown-background-color);
101
+ // these create the 45deg cutoff angle at the base of the caret
102
+ border-bottom: 1px solid var(--gl-dropdown-background-color);
103
+ border-right: 1px solid var(--gl-dropdown-background-color);
104
+
105
+ position: absolute;
106
+ }
107
+
108
+ .gl-new-dropdown-panel {
109
+ @apply gl-hidden;
110
+ @apply gl-bg-dropdown;
111
+ border-radius: var(--gl-dropdown-border-radius);
112
+ @apply gl-drop-shadow-md;
113
+ top: 0;
114
+ left: 0;
115
+ min-width: $gl-new-dropdown-min-width;
116
+ max-width: $gl-new-dropdown-max-width;
117
+ z-index: 1000;
118
+ }
119
+
120
+ .gl-new-dropdown-inner {
121
+ @apply gl-flex;
122
+ @apply gl-flex-col;
123
+ max-height: $gl-max-dropdown-max-height;
124
+ }
125
+
126
+ .gl-new-dropdown-contents {
127
+ position: relative;
128
+ @apply gl-grow;
129
+ @apply gl-overflow-y-auto;
130
+ @apply gl-pl-0;
131
+ @apply gl-mb-0;
132
+ @apply gl-py-2;
133
+ @apply gl-list-none;
134
+
135
+ &:focus-visible {
136
+ @apply gl-focus;
137
+ }
138
+
139
+ ul {
140
+ @apply gl-list-none;
141
+ }
142
+ }
140
143
 
141
144
  $dropdown-content-padding: 0.25rem;
142
145
 
@@ -240,6 +240,17 @@
240
240
  --gl-line-height-42: 2.625rem;
241
241
  --gl-line-height-44: 2.75rem;
242
242
  --gl-line-height-52: 3.25rem;
243
+ --gl-opacity-0: 0;
244
+ --gl-opacity-1: .1;
245
+ --gl-opacity-2: .2;
246
+ --gl-opacity-3: .3;
247
+ --gl-opacity-4: .4;
248
+ --gl-opacity-5: .5;
249
+ --gl-opacity-6: .6;
250
+ --gl-opacity-7: .7;
251
+ --gl-opacity-8: .8;
252
+ --gl-opacity-9: .9;
253
+ --gl-opacity-10: 1;
243
254
  --gl-spacing-scale-0: 0;
244
255
  --gl-spacing-scale-1: 0.125rem;
245
256
  --gl-spacing-scale-2: 0.25rem;
@@ -240,6 +240,17 @@
240
240
  --gl-line-height-42: 2.625rem;
241
241
  --gl-line-height-44: 2.75rem;
242
242
  --gl-line-height-52: 3.25rem;
243
+ --gl-opacity-0: 0;
244
+ --gl-opacity-1: .1;
245
+ --gl-opacity-2: .2;
246
+ --gl-opacity-3: .3;
247
+ --gl-opacity-4: .4;
248
+ --gl-opacity-5: .5;
249
+ --gl-opacity-6: .6;
250
+ --gl-opacity-7: .7;
251
+ --gl-opacity-8: .8;
252
+ --gl-opacity-9: .9;
253
+ --gl-opacity-10: 1;
243
254
  --gl-spacing-scale-0: 0;
244
255
  --gl-spacing-scale-1: 0.125rem;
245
256
  --gl-spacing-scale-2: 0.25rem;
@@ -44058,5 +44058,282 @@
44058
44058
  ],
44059
44059
  "cssWithValue": "var(--gl-control-border-radius, var(--gl-border-radius-default, 0.25rem))"
44060
44060
  }
44061
+ },
44062
+ "opacity": {
44063
+ "0": {
44064
+ "key": "{opacity.0}",
44065
+ "$value": "0",
44066
+ "$type": "number",
44067
+ "$extensions": {
44068
+ "com.figma.scope": []
44069
+ },
44070
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44071
+ "isSource": true,
44072
+ "original": {
44073
+ "$value": "0",
44074
+ "$type": "number",
44075
+ "$extensions": {
44076
+ "com.figma.scope": []
44077
+ },
44078
+ "key": "{opacity.0}"
44079
+ },
44080
+ "name": "OPACITY_0",
44081
+ "attributes": {},
44082
+ "path": [
44083
+ "opacity",
44084
+ "0"
44085
+ ],
44086
+ "cssWithValue": "var(--gl-opacity-0, 0)"
44087
+ },
44088
+ "1": {
44089
+ "key": "{opacity.1}",
44090
+ "$value": ".1",
44091
+ "$type": "number",
44092
+ "$extensions": {
44093
+ "com.figma.scope": []
44094
+ },
44095
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44096
+ "isSource": true,
44097
+ "original": {
44098
+ "$value": ".1",
44099
+ "$type": "number",
44100
+ "$extensions": {
44101
+ "com.figma.scope": []
44102
+ },
44103
+ "key": "{opacity.1}"
44104
+ },
44105
+ "name": "OPACITY_1",
44106
+ "attributes": {},
44107
+ "path": [
44108
+ "opacity",
44109
+ "1"
44110
+ ],
44111
+ "cssWithValue": "var(--gl-opacity-1, .1)"
44112
+ },
44113
+ "2": {
44114
+ "key": "{opacity.2}",
44115
+ "$value": ".2",
44116
+ "$type": "number",
44117
+ "$extensions": {
44118
+ "com.figma.scope": []
44119
+ },
44120
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44121
+ "isSource": true,
44122
+ "original": {
44123
+ "$value": ".2",
44124
+ "$type": "number",
44125
+ "$extensions": {
44126
+ "com.figma.scope": []
44127
+ },
44128
+ "key": "{opacity.2}"
44129
+ },
44130
+ "name": "OPACITY_2",
44131
+ "attributes": {},
44132
+ "path": [
44133
+ "opacity",
44134
+ "2"
44135
+ ],
44136
+ "cssWithValue": "var(--gl-opacity-2, .2)"
44137
+ },
44138
+ "3": {
44139
+ "key": "{opacity.3}",
44140
+ "$value": ".3",
44141
+ "$type": "number",
44142
+ "$extensions": {
44143
+ "com.figma.scope": []
44144
+ },
44145
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44146
+ "isSource": true,
44147
+ "original": {
44148
+ "$value": ".3",
44149
+ "$type": "number",
44150
+ "$extensions": {
44151
+ "com.figma.scope": []
44152
+ },
44153
+ "key": "{opacity.3}"
44154
+ },
44155
+ "name": "OPACITY_3",
44156
+ "attributes": {},
44157
+ "path": [
44158
+ "opacity",
44159
+ "3"
44160
+ ],
44161
+ "cssWithValue": "var(--gl-opacity-3, .3)"
44162
+ },
44163
+ "4": {
44164
+ "key": "{opacity.4}",
44165
+ "$value": ".4",
44166
+ "$type": "number",
44167
+ "$extensions": {
44168
+ "com.figma.scope": []
44169
+ },
44170
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44171
+ "isSource": true,
44172
+ "original": {
44173
+ "$value": ".4",
44174
+ "$type": "number",
44175
+ "$extensions": {
44176
+ "com.figma.scope": []
44177
+ },
44178
+ "key": "{opacity.4}"
44179
+ },
44180
+ "name": "OPACITY_4",
44181
+ "attributes": {},
44182
+ "path": [
44183
+ "opacity",
44184
+ "4"
44185
+ ],
44186
+ "cssWithValue": "var(--gl-opacity-4, .4)"
44187
+ },
44188
+ "5": {
44189
+ "key": "{opacity.5}",
44190
+ "$value": ".5",
44191
+ "$type": "number",
44192
+ "$extensions": {
44193
+ "com.figma.scope": []
44194
+ },
44195
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44196
+ "isSource": true,
44197
+ "original": {
44198
+ "$value": ".5",
44199
+ "$type": "number",
44200
+ "$extensions": {
44201
+ "com.figma.scope": []
44202
+ },
44203
+ "key": "{opacity.5}"
44204
+ },
44205
+ "name": "OPACITY_5",
44206
+ "attributes": {},
44207
+ "path": [
44208
+ "opacity",
44209
+ "5"
44210
+ ],
44211
+ "cssWithValue": "var(--gl-opacity-5, .5)"
44212
+ },
44213
+ "6": {
44214
+ "key": "{opacity.6}",
44215
+ "$value": ".6",
44216
+ "$type": "number",
44217
+ "$extensions": {
44218
+ "com.figma.scope": []
44219
+ },
44220
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44221
+ "isSource": true,
44222
+ "original": {
44223
+ "$value": ".6",
44224
+ "$type": "number",
44225
+ "$extensions": {
44226
+ "com.figma.scope": []
44227
+ },
44228
+ "key": "{opacity.6}"
44229
+ },
44230
+ "name": "OPACITY_6",
44231
+ "attributes": {},
44232
+ "path": [
44233
+ "opacity",
44234
+ "6"
44235
+ ],
44236
+ "cssWithValue": "var(--gl-opacity-6, .6)"
44237
+ },
44238
+ "7": {
44239
+ "key": "{opacity.7}",
44240
+ "$value": ".7",
44241
+ "$type": "number",
44242
+ "$extensions": {
44243
+ "com.figma.scope": []
44244
+ },
44245
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44246
+ "isSource": true,
44247
+ "original": {
44248
+ "$value": ".7",
44249
+ "$type": "number",
44250
+ "$extensions": {
44251
+ "com.figma.scope": []
44252
+ },
44253
+ "key": "{opacity.7}"
44254
+ },
44255
+ "name": "OPACITY_7",
44256
+ "attributes": {},
44257
+ "path": [
44258
+ "opacity",
44259
+ "7"
44260
+ ],
44261
+ "cssWithValue": "var(--gl-opacity-7, .7)"
44262
+ },
44263
+ "8": {
44264
+ "key": "{opacity.8}",
44265
+ "$value": ".8",
44266
+ "$type": "number",
44267
+ "$extensions": {
44268
+ "com.figma.scope": []
44269
+ },
44270
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44271
+ "isSource": true,
44272
+ "original": {
44273
+ "$value": ".8",
44274
+ "$type": "number",
44275
+ "$extensions": {
44276
+ "com.figma.scope": []
44277
+ },
44278
+ "key": "{opacity.8}"
44279
+ },
44280
+ "name": "OPACITY_8",
44281
+ "attributes": {},
44282
+ "path": [
44283
+ "opacity",
44284
+ "8"
44285
+ ],
44286
+ "cssWithValue": "var(--gl-opacity-8, .8)"
44287
+ },
44288
+ "9": {
44289
+ "key": "{opacity.9}",
44290
+ "$value": ".9",
44291
+ "$type": "number",
44292
+ "$extensions": {
44293
+ "com.figma.scope": []
44294
+ },
44295
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44296
+ "isSource": true,
44297
+ "original": {
44298
+ "$value": ".9",
44299
+ "$type": "number",
44300
+ "$extensions": {
44301
+ "com.figma.scope": []
44302
+ },
44303
+ "key": "{opacity.9}"
44304
+ },
44305
+ "name": "OPACITY_9",
44306
+ "attributes": {},
44307
+ "path": [
44308
+ "opacity",
44309
+ "9"
44310
+ ],
44311
+ "cssWithValue": "var(--gl-opacity-9, .9)"
44312
+ },
44313
+ "10": {
44314
+ "key": "{opacity.10}",
44315
+ "$value": "1",
44316
+ "$type": "number",
44317
+ "$extensions": {
44318
+ "com.figma.scope": []
44319
+ },
44320
+ "filePath": "src/tokens/constant/opacity.tokens.json",
44321
+ "isSource": true,
44322
+ "original": {
44323
+ "$value": "1",
44324
+ "$type": "number",
44325
+ "$extensions": {
44326
+ "com.figma.scope": []
44327
+ },
44328
+ "key": "{opacity.10}"
44329
+ },
44330
+ "name": "OPACITY_10",
44331
+ "attributes": {},
44332
+ "path": [
44333
+ "opacity",
44334
+ "10"
44335
+ ],
44336
+ "cssWithValue": "var(--gl-opacity-10, 1)"
44337
+ }
44061
44338
  }
44062
44339
  }