@gitlab/ui 68.5.0 → 68.7.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 (36) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/experimental/duo/chat/components/duo_chat_message/copy_code_element.js +35 -0
  3. package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js +4 -0
  4. package/dist/index.css +1 -1
  5. package/dist/index.css.map +1 -1
  6. package/dist/tokens/common_story_options.js +32 -0
  7. package/dist/tokens/css/tokens.css +122 -56
  8. package/dist/tokens/css/tokens.dark.css +2 -2
  9. package/dist/tokens/js/tokens.dark.js +1 -1
  10. package/dist/tokens/js/tokens.js +122 -56
  11. package/dist/tokens/json/tokens.dark.grouped.json +121 -55
  12. package/dist/tokens/json/tokens.dark.json +3504 -2104
  13. package/dist/tokens/json/tokens.grouped.json +121 -55
  14. package/dist/tokens/json/tokens.json +3465 -2065
  15. package/dist/tokens/scss/_tokens.dark.scss +2 -2
  16. package/dist/tokens/scss/_tokens.scss +122 -56
  17. package/dist/utils/utils.js +3 -2
  18. package/package.json +1 -1
  19. package/scss_to_js/scss_variables.js +122 -122
  20. package/scss_to_js/scss_variables.json +1265 -1265
  21. package/src/components/experimental/duo/chat/components/duo_chat_message/copy_code_element.js +44 -0
  22. package/src/components/experimental/duo/chat/components/duo_chat_message/copy_code_element.spec.js +64 -0
  23. package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.scss +15 -0
  24. package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.spec.js +10 -4
  25. package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.vue +4 -0
  26. package/src/scss/variables.scss +0 -74
  27. package/src/tokens/color.dark.tokens.json +1 -1
  28. package/src/tokens/color.dark.tokens.stories.js +42 -0
  29. package/src/tokens/color.data_viz.tokens.json +344 -0
  30. package/src/tokens/color.data_viz.tokens.stories.js +56 -0
  31. package/src/tokens/color.theme.tokens.json +412 -0
  32. package/src/tokens/color.theme.tokens.stories.js +60 -0
  33. package/src/tokens/color.tokens.json +0 -342
  34. package/src/tokens/color.tokens.stories.js +42 -0
  35. package/src/tokens/common_story_options.js +31 -0
  36. package/src/utils/utils.js +3 -3
@@ -0,0 +1,44 @@
1
+ import iconsPath from '@gitlab/svgs/dist/icons.svg';
2
+
3
+ const createButton = () => {
4
+ const button = document.createElement('button');
5
+ button.type = 'button';
6
+ button.classList.add(
7
+ 'btn',
8
+ 'btn-default',
9
+ 'btn-md',
10
+ 'gl-button',
11
+ 'btn-default-secondary',
12
+ 'btn-icon'
13
+ );
14
+ button.dataset.title = 'Copy to clipboard';
15
+
16
+ // Create an SVG element with the correct namespace
17
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
18
+ svg.setAttribute('role', 'img');
19
+ svg.setAttribute('aria-hidden', 'true');
20
+ svg.classList.add('gl-button-icon', 'gl-icon', 's16');
21
+
22
+ // Create a 'use' element with the correct namespace
23
+ const use = document.createElementNS('http://www.w3.org/2000/svg', 'use');
24
+ use.setAttribute('href', `${iconsPath}#copy-to-clipboard`);
25
+
26
+ svg.appendChild(use);
27
+ button.appendChild(svg);
28
+
29
+ return button;
30
+ };
31
+
32
+ export class CopyCodeElement extends HTMLElement {
33
+ constructor() {
34
+ super();
35
+ const btn = createButton();
36
+ const wrapper = this.parentNode;
37
+
38
+ this.appendChild(btn);
39
+ btn.addEventListener('click', async () => {
40
+ const textToCopy = wrapper.innerText;
41
+ await navigator.clipboard.writeText(textToCopy);
42
+ });
43
+ }
44
+ }
@@ -0,0 +1,64 @@
1
+ import { CopyCodeElement } from './copy_code_element';
2
+
3
+ describe('copy-code element', () => {
4
+ customElements.define('copy-code', CopyCodeElement);
5
+ const code = 'function sum(a, b) {\n return a + b;\n}';
6
+ const findCustomElement = () => document.querySelector('copy-code');
7
+ const findButton = () => document.querySelector('copy-code button');
8
+ const findButtonIcon = () => document.querySelector('copy-code button svg use');
9
+
10
+ beforeEach(() => {
11
+ document.body.innerHTML = `<div><pre><code>${code}</code></pre><copy-code></copy-code></div>`;
12
+ });
13
+
14
+ it('should create a button', () => {
15
+ expect(customElements.get('copy-code')).toBeDefined();
16
+ });
17
+
18
+ it('does not setup shadowDom on the custom element', () => {
19
+ expect(findCustomElement().shadowRoot).toBeNull();
20
+ });
21
+
22
+ it('adds a button to the DOM as a direct child', () => {
23
+ expect(findButton()).toBeDefined();
24
+ });
25
+
26
+ it('adds the correct icon to the button', () => {
27
+ expect(findButtonIcon().getAttribute('href')).toContain('#copy-to-clipboard');
28
+ });
29
+
30
+ describe('interaction', () => {
31
+ let copiedText = '';
32
+
33
+ beforeEach(() => {
34
+ Object.defineProperty(HTMLElement.prototype, 'innerText', {
35
+ get() {
36
+ return this.textContent.trim();
37
+ },
38
+ configurable: true,
39
+ });
40
+
41
+ global.navigator.clipboard = {
42
+ writeText: jest.fn().mockImplementation((text) => {
43
+ copiedText = text;
44
+ return Promise.resolve();
45
+ }),
46
+ readText: jest.fn().mockImplementation(() => Promise.resolve(copiedText)),
47
+ };
48
+ });
49
+
50
+ afterEach(() => {
51
+ // In JSDOM, `innerText` doesn't exist on the prototype.
52
+ // However, we can not set it to `undefined` as the property description should be an object
53
+ Object.defineProperty(HTMLElement.prototype, 'innerText', {});
54
+
55
+ jest.resetAllMocks();
56
+ });
57
+
58
+ it('copies the content of the parentNode to the clipboard when the button is clicked', async () => {
59
+ findButton().click();
60
+ const text = await navigator.clipboard.readText();
61
+ expect(text).toBe(code);
62
+ });
63
+ });
64
+ });
@@ -15,4 +15,19 @@
15
15
  p:last-of-type {
16
16
  @include gl-mb-0;
17
17
  }
18
+
19
+ copy-code {
20
+ @include gl-absolute;
21
+ @include gl-transition-medium;
22
+ @include gl-opacity-0;
23
+ @include gl-right-4;
24
+ @include gl-top-3;
25
+ }
26
+
27
+ .js-markdown-code.markdown-code-block:hover {
28
+ copy-code,
29
+ copy-code:focus-within {
30
+ @include gl-opacity-10;
31
+ }
32
+ }
18
33
  }
@@ -47,6 +47,12 @@ describe('DuoChatMessage', () => {
47
47
  jest.clearAllMocks();
48
48
  });
49
49
 
50
+ it('registers the custom `copy-code` element', () => {
51
+ expect(customElements.get('copy-code')).toBeUndefined();
52
+ createComponent();
53
+ expect(customElements.get('copy-code')).toBeDefined();
54
+ });
55
+
50
56
  describe('rendering', () => {
51
57
  beforeEach(() => {
52
58
  renderMarkdown.mockImplementation(() => mockMarkdownContent);
@@ -79,6 +85,10 @@ describe('DuoChatMessage', () => {
79
85
  });
80
86
  });
81
87
 
88
+ it('renders the `copy-code` button for the code snippet', () => {
89
+ expect(findCopyCodeButton().exists()).toBe(true);
90
+ });
91
+
82
92
  it('renders the documentation sources component by default', () => {
83
93
  expect(findDocumentSources().exists()).toBe(true);
84
94
  expect(findDocumentSources().props('sources')).toEqual(MOCK_RESPONSE_MESSAGE.extras.sources);
@@ -107,10 +117,6 @@ describe('DuoChatMessage', () => {
107
117
  findUserFeedback().vm.$emit('feedback', 'foo');
108
118
  expect(wrapper.emitted('track-feedback')).toEqual([['foo']]);
109
119
  });
110
-
111
- it('does not strip out the <copy-code/> element from HTML output', () => {
112
- expect(findCopyCodeButton().exists()).toBe(true);
113
- });
114
120
  });
115
121
 
116
122
  describe('message output', () => {
@@ -3,6 +3,7 @@ import GlDuoUserFeedback from '../../../user_feedback/user_feedback.vue';
3
3
  import { SafeHtmlDirective as SafeHtml } from '../../../../../../directives/safe_html/safe_html';
4
4
  import { MESSAGE_MODEL_ROLES } from '../../constants';
5
5
  import DocumentationSources from '../duo_chat_message_sources/duo_chat_message_sources.vue';
6
+ import { CopyCodeElement } from './copy_code_element';
6
7
 
7
8
  const concatIndicesUntilEmpty = (arr) => {
8
9
  const start = arr.findIndex((el) => el);
@@ -66,6 +67,9 @@ export default {
66
67
  * Is intentionally non-reactive
67
68
  */
68
69
  this.messageChunks = [];
70
+ if (!customElements.get('copy-code')) {
71
+ customElements.define('copy-code', CopyCodeElement);
72
+ }
69
73
  },
70
74
  mounted() {
71
75
  this.messageContent = this.content;
@@ -58,80 +58,6 @@ $white-dark: #eaeaea !default;
58
58
  $white-transparent: rgba(255, 255, 255, 0.8) !default;
59
59
  $transparent-rgba: rgba($white, 0);
60
60
 
61
- // The indigo light and indigo dark use $theme-indigo variables.
62
- $theme-indigo-50: #f1f1ff !default;
63
- $theme-indigo-100: #dbdbf8 !default;
64
- $theme-indigo-200: #c7c7f2 !default;
65
- $theme-indigo-300: #a2a2e6 !default;
66
- $theme-indigo-400: #8181d7 !default;
67
- $theme-indigo-500: #6666c4 !default;
68
- $theme-indigo-600: #5252b5 !default;
69
- $theme-indigo-700: #41419f !default;
70
- $theme-indigo-800: #303083 !default;
71
- $theme-indigo-900: #222261 !default;
72
- $theme-indigo-950: #14143d !default;
73
-
74
- $theme-blue-50: #cdd8e3 !default;
75
- $theme-blue-100: #b9cadc !default;
76
- $theme-blue-200: #a6bdd5 !default;
77
- $theme-blue-300: #81a5c9 !default;
78
- $theme-blue-400: #628eb9 !default;
79
- $theme-blue-500: #4977a5 !default;
80
- $theme-blue-600: #346596 !default;
81
- $theme-blue-700: #235180 !default;
82
- $theme-blue-800: #153c63 !default;
83
- $theme-blue-900: #0b2640 !default;
84
- $theme-blue-950: #04101c !default;
85
-
86
- $theme-light-blue-50: #dde6ee !default;
87
- $theme-light-blue-100: #c1d4e6 !default;
88
- $theme-light-blue-200: #a0bedc !default;
89
- $theme-light-blue-300: #74a3d3 !default;
90
- $theme-light-blue-400: #4f8bc7 !default;
91
- $theme-light-blue-500: #3476b9 !default;
92
- $theme-light-blue-600: #2268ae !default;
93
- $theme-light-blue-700: #145aa1 !default;
94
- $theme-light-blue-800: #0e4d8d !default;
95
- $theme-light-blue-900: #0c4277 !default;
96
- $theme-light-blue-950: #0a3764 !default;
97
-
98
- // The green light and green dark use $theme-green variables.
99
- $theme-green-50: #dde9de !default;
100
- $theme-green-100: #b1d6b5 !default;
101
- $theme-green-200: #8cc497 !default;
102
- $theme-green-300: #69af7d !default;
103
- $theme-green-400: #499767 !default;
104
- $theme-green-500: #308258 !default;
105
- $theme-green-600: #25744c !default;
106
- $theme-green-700: #1b653f !default;
107
- $theme-green-800: #155635 !default;
108
- $theme-green-900: #0e4328 !default;
109
- $theme-green-950: #052e19 !default;
110
-
111
- $theme-red-50: #f4e9e7 !default;
112
- $theme-red-100: #ecd3d0 !default;
113
- $theme-red-200: #e3bab5 !default;
114
- $theme-red-300: #d59086 !default;
115
- $theme-red-400: #c66e60 !default;
116
- $theme-red-500: #ad4a3b !default;
117
- $theme-red-600: #a13322 !default;
118
- $theme-red-700: #8f2110 !default;
119
- $theme-red-800: #761405 !default;
120
- $theme-red-900: #580d02 !default;
121
- $theme-red-950: #380700 !default;
122
-
123
- $theme-light-red-50: #faf2f1 !default;
124
- $theme-light-red-100: #f6d9d5 !default;
125
- $theme-light-red-200: #ebada2 !default;
126
- $theme-light-red-300: #e07f6f !default;
127
- $theme-light-red-400: #d36250 !default;
128
- $theme-light-red-500: #c24b38 !default;
129
- $theme-light-red-600: #b53a26 !default;
130
- $theme-light-red-700: #a02e1c !default;
131
- $theme-light-red-800: #8b2212 !default;
132
- $theme-light-red-900: #751709 !default;
133
- $theme-light-red-950: #5c1105 !default;
134
-
135
61
  $t-gray-a-02: rgba($gray-950, 0.02) !default;
136
62
  $t-gray-a-04: rgba($gray-950, 0.04) !default;
137
63
  $t-gray-a-06: rgba($gray-950, 0.06) !default;
@@ -6,7 +6,7 @@
6
6
  "prefix": false
7
7
  },
8
8
  "white": {
9
- "$value": "{gray.50}",
9
+ "$value": "#333238",
10
10
  "$type": "color",
11
11
  "themeable": false,
12
12
  "prefix": false
@@ -0,0 +1,42 @@
1
+ import { methods, template } from './common_story_options';
2
+ import colorTokens from './color.dark.tokens.json';
3
+
4
+ const generateProps = ({ name = '', tokens = colorTokens } = {}) => ({
5
+ name,
6
+ tokens,
7
+ });
8
+
9
+ export const Default = (args, { argTypes }) => ({
10
+ props: Object.keys(argTypes),
11
+ methods,
12
+ template,
13
+ });
14
+ Default.args = generateProps({
15
+ tokens: {
16
+ white: colorTokens.white,
17
+ black: colorTokens.black,
18
+ },
19
+ });
20
+
21
+ export const Gray = (args, { argTypes }) => ({ props: Object.keys(argTypes), methods, template });
22
+ Gray.args = generateProps({ name: 'gray', tokens: colorTokens.gray });
23
+
24
+ export const Blue = (args, { argTypes }) => ({ props: Object.keys(argTypes), methods, template });
25
+ Blue.args = generateProps({ name: 'blue', tokens: colorTokens.blue });
26
+
27
+ export const Green = (args, { argTypes }) => ({ props: Object.keys(argTypes), methods, template });
28
+ Green.args = generateProps({ name: 'green', tokens: colorTokens.green });
29
+
30
+ export const Orange = (args, { argTypes }) => ({ props: Object.keys(argTypes), methods, template });
31
+ Orange.args = generateProps({ name: 'orange', tokens: colorTokens.orange });
32
+
33
+ export const Red = (args, { argTypes }) => ({ props: Object.keys(argTypes), methods, template });
34
+ Red.args = generateProps({ name: 'red', tokens: colorTokens.red });
35
+
36
+ export const Purple = (args, { argTypes }) => ({ props: Object.keys(argTypes), methods, template });
37
+ Purple.args = generateProps({ name: 'purple', tokens: colorTokens.purple });
38
+
39
+ // eslint-disable-next-line storybook/csf-component
40
+ export default {
41
+ title: 'tokens/color/base/dark',
42
+ };
@@ -0,0 +1,344 @@
1
+ {
2
+ "data-viz": {
3
+ "green": {
4
+ "50": {
5
+ "$value": "#ddfab7",
6
+ "$type": "color",
7
+ "themeable": true,
8
+ "prefix": false
9
+ },
10
+ "100": {
11
+ "$value": "#c6ed94",
12
+ "$type": "color",
13
+ "themeable": true,
14
+ "prefix": false
15
+ },
16
+ "200": {
17
+ "$value": "#b0d97b",
18
+ "$type": "color",
19
+ "themeable": true,
20
+ "prefix": false
21
+ },
22
+ "300": {
23
+ "$value": "#94c25e",
24
+ "$type": "color",
25
+ "themeable": true,
26
+ "prefix": false
27
+ },
28
+ "400": {
29
+ "$value": "#81ac41",
30
+ "$type": "color",
31
+ "themeable": true,
32
+ "prefix": false
33
+ },
34
+ "500": {
35
+ "$value": "#619025",
36
+ "$type": "color",
37
+ "themeable": true,
38
+ "prefix": false
39
+ },
40
+ "600": {
41
+ "$value": "#4e7f0e",
42
+ "$type": "color",
43
+ "themeable": true,
44
+ "prefix": false
45
+ },
46
+ "700": {
47
+ "$value": "#366800",
48
+ "$type": "color",
49
+ "themeable": true,
50
+ "prefix": false
51
+ },
52
+ "800": {
53
+ "$value": "#275600",
54
+ "$type": "color",
55
+ "themeable": true,
56
+ "prefix": false
57
+ },
58
+ "900": {
59
+ "$value": "#1a4500",
60
+ "$type": "color",
61
+ "themeable": true,
62
+ "prefix": false
63
+ },
64
+ "950": {
65
+ "$value": "#133a03",
66
+ "$type": "color",
67
+ "themeable": true,
68
+ "prefix": false
69
+ }
70
+ },
71
+ "aqua": {
72
+ "50": {
73
+ "$value": "#b5fefd",
74
+ "$type": "color",
75
+ "themeable": true,
76
+ "prefix": false
77
+ },
78
+ "100": {
79
+ "$value": "#93f2ef",
80
+ "$type": "color",
81
+ "themeable": true,
82
+ "prefix": false
83
+ },
84
+ "200": {
85
+ "$value": "#5edee3",
86
+ "$type": "color",
87
+ "themeable": true,
88
+ "prefix": false
89
+ },
90
+ "300": {
91
+ "$value": "#32c5d2",
92
+ "$type": "color",
93
+ "themeable": true,
94
+ "prefix": false
95
+ },
96
+ "400": {
97
+ "$value": "#00acc4",
98
+ "$type": "color",
99
+ "themeable": true,
100
+ "prefix": false
101
+ },
102
+ "500": {
103
+ "$value": "#0090b1",
104
+ "$type": "color",
105
+ "themeable": true,
106
+ "prefix": false
107
+ },
108
+ "600": {
109
+ "$value": "#007b9b",
110
+ "$type": "color",
111
+ "themeable": true,
112
+ "prefix": false
113
+ },
114
+ "700": {
115
+ "$value": "#006381",
116
+ "$type": "color",
117
+ "themeable": true,
118
+ "prefix": false
119
+ },
120
+ "800": {
121
+ "$value": "#00516c",
122
+ "$type": "color",
123
+ "themeable": true,
124
+ "prefix": false
125
+ },
126
+ "900": {
127
+ "$value": "#004059",
128
+ "$type": "color",
129
+ "themeable": true,
130
+ "prefix": false
131
+ },
132
+ "950": {
133
+ "$value": "#00344b",
134
+ "$type": "color",
135
+ "themeable": true,
136
+ "prefix": false
137
+ }
138
+ },
139
+ "blue": {
140
+ "50": {
141
+ "$value": "#e9ebff",
142
+ "$type": "color",
143
+ "themeable": true,
144
+ "prefix": false
145
+ },
146
+ "100": {
147
+ "$value": "#d2dcff",
148
+ "$type": "color",
149
+ "themeable": true,
150
+ "prefix": false
151
+ },
152
+ "200": {
153
+ "$value": "#b7c6ff",
154
+ "$type": "color",
155
+ "themeable": true,
156
+ "prefix": false
157
+ },
158
+ "300": {
159
+ "$value": "#97acff",
160
+ "$type": "color",
161
+ "themeable": true,
162
+ "prefix": false
163
+ },
164
+ "400": {
165
+ "$value": "#7992f5",
166
+ "$type": "color",
167
+ "themeable": true,
168
+ "prefix": false
169
+ },
170
+ "500": {
171
+ "$value": "#617ae2",
172
+ "$type": "color",
173
+ "themeable": true,
174
+ "prefix": false
175
+ },
176
+ "600": {
177
+ "$value": "#4e65cd",
178
+ "$type": "color",
179
+ "themeable": true,
180
+ "prefix": false
181
+ },
182
+ "700": {
183
+ "$value": "#3f51ae",
184
+ "$type": "color",
185
+ "themeable": true,
186
+ "prefix": false
187
+ },
188
+ "800": {
189
+ "$value": "#374291",
190
+ "$type": "color",
191
+ "themeable": true,
192
+ "prefix": false
193
+ },
194
+ "900": {
195
+ "$value": "#303470",
196
+ "$type": "color",
197
+ "themeable": true,
198
+ "prefix": false
199
+ },
200
+ "950": {
201
+ "$value": "#2a2b59",
202
+ "$type": "color",
203
+ "themeable": true,
204
+ "prefix": false
205
+ }
206
+ },
207
+ "magenta": {
208
+ "50": {
209
+ "$value": "#ffe3eb",
210
+ "$type": "color",
211
+ "themeable": true,
212
+ "prefix": false
213
+ },
214
+ "100": {
215
+ "$value": "#ffccdb",
216
+ "$type": "color",
217
+ "themeable": true,
218
+ "prefix": false
219
+ },
220
+ "200": {
221
+ "$value": "#fcacc5",
222
+ "$type": "color",
223
+ "themeable": true,
224
+ "prefix": false
225
+ },
226
+ "300": {
227
+ "$value": "#f88aaf",
228
+ "$type": "color",
229
+ "themeable": true,
230
+ "prefix": false
231
+ },
232
+ "400": {
233
+ "$value": "#e86e9a",
234
+ "$type": "color",
235
+ "themeable": true,
236
+ "prefix": false
237
+ },
238
+ "500": {
239
+ "$value": "#cf4d81",
240
+ "$type": "color",
241
+ "themeable": true,
242
+ "prefix": false
243
+ },
244
+ "600": {
245
+ "$value": "#b93d71",
246
+ "$type": "color",
247
+ "themeable": true,
248
+ "prefix": false
249
+ },
250
+ "700": {
251
+ "$value": "#9a2e5d",
252
+ "$type": "color",
253
+ "themeable": true,
254
+ "prefix": false
255
+ },
256
+ "800": {
257
+ "$value": "#7c214f",
258
+ "$type": "color",
259
+ "themeable": true,
260
+ "prefix": false
261
+ },
262
+ "900": {
263
+ "$value": "#661e3a",
264
+ "$type": "color",
265
+ "themeable": true,
266
+ "prefix": false
267
+ },
268
+ "950": {
269
+ "$value": "#541d31",
270
+ "$type": "color",
271
+ "themeable": true,
272
+ "prefix": false
273
+ }
274
+ },
275
+ "orange": {
276
+ "50": {
277
+ "$value": "#fae8d1",
278
+ "$type": "color",
279
+ "themeable": true,
280
+ "prefix": false
281
+ },
282
+ "100": {
283
+ "$value": "#f5d6b3",
284
+ "$type": "color",
285
+ "themeable": true,
286
+ "prefix": false
287
+ },
288
+ "200": {
289
+ "$value": "#eebd8c",
290
+ "$type": "color",
291
+ "themeable": true,
292
+ "prefix": false
293
+ },
294
+ "300": {
295
+ "$value": "#e99b60",
296
+ "$type": "color",
297
+ "themeable": true,
298
+ "prefix": false
299
+ },
300
+ "400": {
301
+ "$value": "#e07e41",
302
+ "$type": "color",
303
+ "themeable": true,
304
+ "prefix": false
305
+ },
306
+ "500": {
307
+ "$value": "#c95d2e",
308
+ "$type": "color",
309
+ "themeable": true,
310
+ "prefix": false
311
+ },
312
+ "600": {
313
+ "$value": "#b14f18",
314
+ "$type": "color",
315
+ "themeable": true,
316
+ "prefix": false
317
+ },
318
+ "700": {
319
+ "$value": "#92430a",
320
+ "$type": "color",
321
+ "themeable": true,
322
+ "prefix": false
323
+ },
324
+ "800": {
325
+ "$value": "#6f3500",
326
+ "$type": "color",
327
+ "themeable": true,
328
+ "prefix": false
329
+ },
330
+ "900": {
331
+ "$value": "#5e2f05",
332
+ "$type": "color",
333
+ "themeable": true,
334
+ "prefix": false
335
+ },
336
+ "950": {
337
+ "$value": "#4b2707",
338
+ "$type": "color",
339
+ "themeable": true,
340
+ "prefix": false
341
+ }
342
+ }
343
+ }
344
+ }