@stackoverflow/stacks 1.10.3 → 2.0.0-rc.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 (90) hide show
  1. package/README.md +15 -0
  2. package/dist/css/stacks.css +7428 -4429
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +110 -265
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/atomic/__snapshots__/color-new.less.test.ts.snap +3015 -0
  7. package/lib/atomic/__snapshots__/color.less.test.ts.snap +2886 -0
  8. package/lib/atomic/border.less +0 -258
  9. package/lib/atomic/color.less +26 -200
  10. package/lib/atomic/color.less.test.ts +12 -0
  11. package/lib/atomic/misc.less +7 -6
  12. package/lib/atomic/typography.less +0 -7
  13. package/lib/atomic/v1/__snapshots__/border.less.test.ts.snap +552 -0
  14. package/lib/atomic/v1/__snapshots__/color.less.test.ts.snap +6756 -0
  15. package/lib/atomic/v1/__snapshots__/typography.less.test.ts.snap +22 -0
  16. package/lib/atomic/v1/border.less +210 -0
  17. package/lib/atomic/v1/border.less.test.ts +14 -0
  18. package/lib/atomic/v1/color.less +183 -0
  19. package/lib/atomic/v1/color.less.test.ts +14 -0
  20. package/lib/atomic/v1/typography.less +8 -0
  21. package/lib/atomic/v1/typography.less.test.ts +14 -0
  22. package/lib/components/activity-indicator/activity-indicator.a11y.test.ts +1 -10
  23. package/lib/components/activity-indicator/activity-indicator.less +4 -4
  24. package/lib/components/anchor/anchor.a11y.test.ts +0 -12
  25. package/lib/components/anchor/anchor.less +4 -4
  26. package/lib/components/anchor/anchor.visual.test.ts +1 -1
  27. package/lib/components/avatar/avatar.less +2 -2
  28. package/lib/components/award-bling/award-bling.less +3 -3
  29. package/lib/components/badge/badge.a11y.test.ts +2 -51
  30. package/lib/components/badge/badge.less +40 -40
  31. package/lib/components/banner/banner.a11y.test.ts +0 -14
  32. package/lib/components/block-link/block-link.a11y.test.ts +0 -14
  33. package/lib/components/block-link/block-link.less +8 -8
  34. package/lib/components/breadcrumbs/breadcrumbs.a11y.test.ts +0 -2
  35. package/lib/components/breadcrumbs/breadcrumbs.less +1 -1
  36. package/lib/components/button/button.a11y.test.ts +0 -134
  37. package/lib/components/button/button.less +40 -40
  38. package/lib/components/button/button.visual.test.ts +1 -1
  39. package/lib/components/card/card.a11y.test.ts +0 -6
  40. package/lib/components/check-control/check-control.a11y.test.ts +0 -13
  41. package/lib/components/check-control/check-control.visual.test.ts +1 -1
  42. package/lib/components/checkbox_radio/checkbox_radio.less +5 -5
  43. package/lib/components/checkbox_radio/checkbox_radio.visual.test.ts +1 -1
  44. package/lib/components/code-block/code-block.less +3 -3
  45. package/lib/components/description/description.a11y.test.ts +0 -5
  46. package/lib/components/description/description.visual.test.ts +1 -1
  47. package/lib/components/input-fill/input-fill.less +2 -2
  48. package/lib/components/input-icon/input-icon.less +2 -2
  49. package/lib/components/input-message/input-message.less +8 -8
  50. package/lib/components/input_textarea/input_textarea.less +6 -6
  51. package/lib/components/label/label.less +11 -11
  52. package/lib/components/link/link.a11y.test.ts +0 -21
  53. package/lib/components/link/link.less +8 -8
  54. package/lib/components/link-preview/link-preview.less +9 -9
  55. package/lib/components/menu/menu.less +3 -3
  56. package/lib/components/modal/modal.less +5 -4
  57. package/lib/components/navigation/navigation.less +11 -11
  58. package/lib/components/notice/notice.less +48 -48
  59. package/lib/components/pagination/pagination.less +3 -3
  60. package/lib/components/popover/popover.less +2 -2
  61. package/lib/components/popover/tooltip.test.ts +1 -1
  62. package/lib/components/post-summary/post-summary.less +40 -40
  63. package/lib/components/progress-bar/progress-bar.less +15 -15
  64. package/lib/components/prose/prose.less +15 -15
  65. package/lib/components/select/select.less +5 -5
  66. package/lib/components/sidebar-widget/sidebar-widget.less +12 -12
  67. package/lib/components/table/table.less +7 -7
  68. package/lib/components/tag/tag.less +25 -25
  69. package/lib/components/toggle-switch/toggle-switch.a11y.test.ts +0 -7
  70. package/lib/components/toggle-switch/toggle-switch.less +4 -4
  71. package/lib/components/topbar/topbar.less +34 -34
  72. package/lib/components/uploader/uploader.less +15 -15
  73. package/lib/components/user-card/user-card.less +7 -7
  74. package/lib/exports/__snapshots__/color-mixins.less.test.ts.snap +539 -0
  75. package/lib/exports/__snapshots__/color.less.test.ts.snap +762 -0
  76. package/lib/exports/color-mixins.less +280 -0
  77. package/lib/exports/color-mixins.less.test.ts +150 -0
  78. package/lib/exports/color-sets.less +620 -0
  79. package/lib/exports/color.less +57 -0
  80. package/lib/exports/color.less.test.ts +12 -0
  81. package/lib/exports/exports.less +2 -1
  82. package/lib/exports/mixins.less +17 -5
  83. package/lib/exports/theme.less +85 -0
  84. package/lib/exports/v1/__snapshots__/constants-colors.less.test.ts.snap +902 -0
  85. package/lib/exports/v1/constants-colors.less +893 -0
  86. package/lib/exports/v1/constants-colors.less.test.ts +12 -0
  87. package/lib/stacks-static.less +5 -0
  88. package/lib/test/less-test-utils.ts +28 -0
  89. package/package.json +13 -7
  90. package/lib/exports/constants-colors.less +0 -1100
@@ -0,0 +1,620 @@
1
+ /* stylelint-disable property-no-unknown */
2
+
3
+ // White
4
+ .set-white() {
5
+ default: hsl(0, 0%, 100%); // matches .set-black()[050]
6
+ }
7
+ .set-white-dark() {
8
+ default: hsl(220, 3%, 15%); // matches .set-black-dark()[050]
9
+ }
10
+ .set-white-hc() {
11
+ default: hsl(0, 0%, 100%); // matches .set-black-hc()[050]
12
+ }
13
+ .set-white-hc-dark() {
14
+ default: hsl(0, 0%, 0%); // matches .set-black-dark-hc()[050]
15
+ }
16
+
17
+ // Black
18
+ .set-black() {
19
+ 050: hsl(0, 0%, 100%); // renders as white
20
+ 100: hsl(210, 8%, 98%);
21
+ 150: hsl(210, 8%, 95%);
22
+ 200: hsl(210, 8%, 90%);
23
+ 225: hsl(210, 8%, 85%);
24
+ 250: hsl(210, 8%, 80%);
25
+ 300: hsl(213, 9%, 75%);
26
+ 350: hsl(212, 8%, 68%);
27
+ 400: hsl(210, 8%, 45%);
28
+ 500: hsl(210, 8%, 25%);
29
+ 600: hsl(210, 8%, 5%);
30
+ default: hsl(0, 8%, 5%); // black, no stop // TODO verify the value w/ design
31
+ }
32
+ .set-black-dark() {
33
+ 050: hsl(220, 3%, 15%);
34
+ 100: hsl(220, 3%, 18%);
35
+ 150: hsl(230, 4%, 21%);
36
+ 200: hsl(233, 4%, 27%);
37
+ 225: hsl(233, 4%, 30%);
38
+ 250: hsl(235, 5%, 36%);
39
+ 300: hsl(233, 4%, 47%);
40
+ 350: hsl(219, 10%, 60%);
41
+ 400: hsl(220, 10%, 74%);
42
+ 500: hsl(220, 10%, 83%);
43
+ 600: hsl(180, 11%, 98%);
44
+ default: hsl(0, 0%, 100%); // white, no stop // TODO verify the value w/ design
45
+ }
46
+ .set-black-hc() {
47
+ 050: hsl(0, 0%, 100%); // renders as white
48
+ 100: hsl(210, 8%, 98%);
49
+ 150: hsl(210, 8%, 95%);
50
+ 200: hsl(210, 8%, 90%);
51
+ 225: hsl(210, 8%, 85%);
52
+ 250: hsl(210, 8%, 80%);
53
+ 300: hsl(213, 9%, 75%);
54
+ 350: hsl(210, 8%, 45%);
55
+ 400: hsl(210, 8%, 45%);
56
+ 500: hsl(210, 8%, 25%);
57
+ 600: hsl(210, 8%, 5%);
58
+ default: hsl(0, 8%, 5%); // black, no stop // TODO verify the value w/ design
59
+ }
60
+
61
+ .set-black-hc-dark() {
62
+ 050: hsl(220, 3%, 15%);
63
+ 100: hsl(220, 3%, 18%);
64
+ 150: hsl(230, 4%, 21%);
65
+ 200: hsl(233, 4%, 27%);
66
+ 225: hsl(233, 4%, 30%);
67
+ 250: hsl(235, 5%, 36%);
68
+ 300: hsl(233, 4%, 47%);
69
+ 350: hsl(220, 10%, 74%);
70
+ 400: hsl(220, 10%, 74%);
71
+ 500: hsl(220, 10%, 83%);
72
+ 600: hsl(180, 11%, 98%);
73
+ default: hsl(0, 0%, 100%); // white, no stop // TODO verify the value w/ design
74
+ }
75
+
76
+ // Orange
77
+ .set-orange() {
78
+ 100: hsl(23, 85%, 97%);
79
+ 200: hsl(27, 85%, 87%);
80
+ 300: hsl(27, 85%, 72%);
81
+ 400: hsl(27, 90%, 55%);
82
+ 500: hsl(27, 88%, 43%);
83
+ 600: hsl(27, 80%, 29%);
84
+ }
85
+ .set-orange-dark() {
86
+ 100: hsl(27, 29%, 19%);
87
+ 200: hsl(27, 43%, 31%);
88
+ 300: hsl(27, 43%, 47%);
89
+ 400: hsl(27, 80%, 64%);
90
+ 500: hsl(27, 80%, 78%);
91
+ 600: hsl(27, 80%, 89%);
92
+ }
93
+ .set-orange-hc() {
94
+ 100: hsl(22, 85%, 97%);
95
+ 200: hsl(22, 85%, 97%);
96
+ 300: hsl(27, 90%, 55%);
97
+ 400: hsl(27, 90%, 55%);
98
+ 500: hsl(27, 80%, 29%);
99
+ 600: hsl(27, 80%, 29%);
100
+ }
101
+ .set-orange-hc-dark() {
102
+ 100: hsl(27, 29%, 19%);
103
+ 200: hsl(27, 29%, 19%);
104
+ 300: hsl(27, 80%, 64%);
105
+ 400: hsl(27, 80%, 64%);
106
+ 500: hsl(27, 79%, 89%);
107
+ 600: hsl(27, 79%, 89%);
108
+ }
109
+
110
+ // Blue
111
+ .set-blue() {
112
+ 100: hsl(210, 80%, 96%);
113
+ 200: hsl(210, 80%, 91%);
114
+ 300: hsl(210, 78%, 76%);
115
+ 400: hsl(210, 70%, 48%);
116
+ 500: hsl(210, 75%, 36%);
117
+ 600: hsl(210, 80%, 23%);
118
+ }
119
+ .set-blue-dark() {
120
+ 100: hsl(209, 29%, 19%);
121
+ 200: hsl(210, 29%, 35%);
122
+ 300: hsl(210, 29%, 50%);
123
+ 400: hsl(210, 81%, 72%);
124
+ 500: hsl(210, 80%, 82%);
125
+ 600: hsl(210, 80%, 90%);
126
+ }
127
+ .set-blue-hc() {
128
+ 100: hsl(210, 80%, 96%);
129
+ 200: hsl(210, 80%, 96%);
130
+ 300: hsl(210, 70%, 48%);
131
+ 400: hsl(210, 70%, 48%);
132
+ 500: hsl(210, 80%, 23%);
133
+ 600: hsl(210, 80%, 23%);
134
+ }
135
+ .set-blue-hc-dark() {
136
+ 100: hsl(209, 29%, 19%);
137
+ 200: hsl(209, 29%, 19%);
138
+ 300: hsl(210, 80%, 72%);
139
+ 400: hsl(210, 80%, 72%);
140
+ 500: hsl(209, 79%, 87%);
141
+ 600: hsl(209, 79%, 87%);
142
+ }
143
+
144
+ // Green
145
+ .set-green() {
146
+ 100: hsl(148, 35%, 95%);
147
+ 200: hsl(148, 35%, 88%);
148
+ 300: hsl(148, 35%, 69%);
149
+ 400: hsl(148, 70%, 31%);
150
+ 500: hsl(148, 75%, 22%);
151
+ 600: hsl(148, 75%, 15%);
152
+ }
153
+ .set-green-dark() {
154
+ 100: hsl(148, 29%, 19%);
155
+ 200: hsl(148, 29%, 27%);
156
+ 300: hsl(148, 25%, 40%);
157
+ 400: hsl(148, 40%, 62%);
158
+ 500: hsl(148, 40%, 75%);
159
+ 600: hsl(148, 40%, 87%);
160
+ }
161
+ .set-green-hc() {
162
+ 100: hsl(147, 36%, 95%);
163
+ 200: hsl(147, 36%, 95%);
164
+ 300: hsl(148, 70%, 31%);
165
+ 400: hsl(148, 70%, 31%);
166
+ 500: hsl(147, 74%, 15%);
167
+ 600: hsl(147, 74%, 15%);
168
+ }
169
+ .set-green-hc-dark() {
170
+ 100: hsl(147, 29%, 19%);
171
+ 200: hsl(147, 29%, 19%);
172
+ 300: hsl(148, 40%, 62%);
173
+ 400: hsl(148, 40%, 62%);
174
+ 500: hsl(148, 39%, 87%);
175
+ 600: hsl(148, 39%, 87%);
176
+ }
177
+
178
+ // Red
179
+ .set-red() {
180
+ 100: hsl(0, 78%, 96%);
181
+ 200: hsl(0, 70%, 93%);
182
+ 300: hsl(0, 65%, 76%);
183
+ 400: hsl(0, 60%, 49%);
184
+ 500: hsl(0, 65%, 37%);
185
+ 600: hsl(0, 65%, 24%);
186
+ }
187
+ .set-red-dark() {
188
+ 100: hsl(358, 29%, 19%);
189
+ 200: hsl(0, 29%, 37%);
190
+ 300: hsl(0, 34%, 54%);
191
+ 400: hsl(0, 75%, 77%);
192
+ 500: hsl(0, 69%, 85%);
193
+ 600: hsl(0, 69%, 93%);
194
+ }
195
+ .set-red-hc() {
196
+ 100: hsl(0, 79%, 96%);
197
+ 200: hsl(0, 79%, 96%);
198
+ 300: hsl(0, 60%, 49%);
199
+ 400: hsl(0, 60%, 49%);
200
+ 500: hsl(0, 66%, 24%);
201
+ 600: hsl(0, 66%, 24%);
202
+ }
203
+ .set-red-hc-dark() {
204
+ 100: hsl(358, 29%, 19%);
205
+ 200: hsl(358, 29%, 19%);
206
+ 300: hsl(0, 75%, 77%);
207
+ 400: hsl(0, 75%, 77%);
208
+ 500: hsl(0, 70%, 92%);
209
+ 600: hsl(0, 70%, 92%);
210
+ }
211
+
212
+ // Yellow
213
+ .set-yellow() {
214
+ 100: hsl(43, 80%, 96%);
215
+ 200: hsl(43, 80%, 88%);
216
+ 300: hsl(43, 85%, 72%);
217
+ 400: hsl(43, 85%, 50%);
218
+ 500: hsl(43, 85%, 33%);
219
+ 600: hsl(43, 84%, 18%);
220
+ }
221
+ .set-yellow-dark() {
222
+ 100: hsl(43, 29%, 17%);
223
+ 200: hsl(43, 29%, 25%);
224
+ 300: hsl(43, 29%, 40%);
225
+ 400: hsl(43, 59%, 64%);
226
+ 500: hsl(43, 65%, 70%);
227
+ 600: hsl(43, 65%, 85%);
228
+ }
229
+ .set-yellow-hc() {
230
+ 100: hsl(41, 80%, 96%);
231
+ 200: hsl(41, 80%, 96%);
232
+ 300: hsl(43, 85%, 50%);
233
+ 400: hsl(43, 85%, 50%);
234
+ 500: hsl(48, 85%, 18%);
235
+ 600: hsl(48, 85%, 18%);
236
+ }
237
+ .set-yellow-hc-dark() {
238
+ 100: hsl(43, 29%, 17%);
239
+ 200: hsl(43, 29%, 17%);
240
+ 300: hsl(43, 59%, 64%);
241
+ 400: hsl(43, 59%, 64%);
242
+ 500: hsl(48, 74%, 91%);
243
+ 600: hsl(48, 74%, 91%);
244
+ }
245
+
246
+ // gold
247
+ .set-gold() {
248
+ 100: hsl(46, 100%, 91%);
249
+ 200: hsl(46, 100%, 74%);
250
+ 300: hsl(45, 100%, 42%);
251
+ 400: hsl(46, 92%, 26%);
252
+ }
253
+ .set-gold-dark() {
254
+ 100: hsl(45, 29%, 24%);
255
+ 200: hsl(45, 47%, 37%);
256
+ 300: hsl(45, 92%, 62%);
257
+ 400: hsl(46, 93%, 78%);
258
+ }
259
+ .set-gold-hc() {
260
+ 100: hsl(46, 100%, 91%);
261
+ 200: hsl(46, 100%, 91%);
262
+ 300: hsl(45, 100%, 42%);
263
+ 400: hsl(46, 92%, 26%);
264
+ }
265
+ .set-gold-hc-dark() {
266
+ 100: hsl(45, 22%, 25%);
267
+ 200: hsl(45, 22%, 25%);
268
+ 300: hsl(45, 92%, 62%);
269
+ 400: hsl(46, 93%, 78%);
270
+ }
271
+
272
+ // silver
273
+ .set-silver() {
274
+ 100: hsl(0, 0%, 95%);
275
+ 200: hsl(0, 0%, 84%);
276
+ 300: hsl(210, 5%, 68%);
277
+ 400: hsl(210, 2%, 40%);
278
+ }
279
+ .set-silver-dark() {
280
+ 100: hsl(220, 2%, 26%);
281
+ 200: hsl(220, 1%, 46%);
282
+ 300: hsl(216, 4%, 69%);
283
+ 400: hsl(214, 8%, 83%);
284
+ }
285
+ .set-silver-hc() {
286
+ 100: hsl(0, 0%, 95%);
287
+ 200: hsl(0, 0%, 84%);
288
+ 300: hsl(210, 5%, 68%);
289
+ 400: hsl(216, 2%, 40%);
290
+ }
291
+ .set-silver-hc-dark() {
292
+ 100: hsl(220, 2%, 26%);
293
+ 200: hsl(220, 2%, 26%);
294
+ 300: hsl(216, 4%, 69%);
295
+ 400: hsl(214, 8%, 83%);
296
+ }
297
+
298
+ // bronze
299
+ .set-bronze() {
300
+ 100: hsl(28, 40%, 92%);
301
+ 200: hsl(30, 47%, 83%);
302
+ 300: hsl(28, 43%, 65%);
303
+ 400: hsl(28, 43%, 39%);
304
+ }
305
+ .set-bronze-dark() {
306
+ 100: hsl(28, 13%, 27%);
307
+ 200: hsl(28, 27%, 45%);
308
+ 300: hsl(28, 58%, 67%);
309
+ 400: hsl(28, 59%, 83%);
310
+ }
311
+ .set-bronze-hc() {
312
+ 100: hsl(28, 40%, 92%);
313
+ 200: hsl(28, 40%, 92%);
314
+ 300: hsl(28, 43%, 65%);
315
+ 400: hsl(28, 43%, 39%);
316
+ }
317
+ .set-bronze-hc-dark() {
318
+ 100: hsl(28, 13%, 27%);
319
+ 200: hsl(28, 13%, 27%);
320
+ 300: hsl(28, 58%, 67%);
321
+ 400: hsl(28, 59%, 83%);
322
+ }
323
+
324
+ // UTILITY SETS
325
+ // common aliases - applies to border-color and background
326
+ .set-utility-alias() {
327
+ error: var(--red-400);
328
+ danger: var(--red-400);
329
+ success: var(--green-400);
330
+ warning: var(--yellow-500);
331
+ }
332
+
333
+ // border color
334
+ .set-bc() {
335
+ lightest: var(--black-100);
336
+ lighter: var(--black-150);
337
+ light: var(--black-200);
338
+ medium: var(--black-225);
339
+ dark: var(--black-250);
340
+ darker: var(--black-300);
341
+ }
342
+ .set-bc-hc() {
343
+ lightest: var(--black-400);
344
+ lighter: var(--black-400);
345
+ light: var(--black-400);
346
+ medium: var(--black-400);
347
+ dark: var(--black-500);
348
+ darker: var(--black-600);
349
+ }
350
+
351
+ // box-shadow
352
+ .set-bs() {
353
+ sm: 0 1px 2px hsla(0, 0%, 0%, 0.05), 0 1px 4px hsla(0, 0%, 0%, 0.05), 0 2px 8px hsla(0, 0%, 0%, 0.05);
354
+ md: 0 1px 3px hsla(0, 0%, 0%, 0.06), 0 2px 6px hsla(0, 0%, 0%, 0.06), 0 3px 8px hsla(0, 0%, 0%, 0.09);
355
+ lg: 0 1px 4px hsla(0, 0%, 0%, 0.09), 0 3px 8px hsla(0, 0%, 0%, 0.09), 0 4px 13px hsla(0, 0%, 0%, 0.13);
356
+ xl: 0 10px 24px hsla(0, 0%, 0%, 0.05), 0 20px 48px hsla(0, 0%, 0%, 0.05), 0 1px 4px hsla(0, 0%, 0%, 0.1);
357
+ }
358
+ .set-bs-dark() {
359
+ sm: 0 1px 2px hsla(0, 0%, 0%, 0.1), 0 1px 4px hsla(0, 0%, 0%, 0.1), 0 2px 8px hsla(0, 0%, 0%, 0.1);
360
+ md: 0 1px 3px hsla(0, 0%, 0%, 0.11), 0 2px 6px hsla(0, 0%, 0%, 0.11), 0 3px 8px hsla(0, 0%, 0%, 0.14);
361
+ lg: 0 1px 4px hsla(0, 0%, 0%, 0.14), 0 3px 8px hsla(0, 0%, 0%, 0.14), 0 4px 13px hsla(0, 0%, 0%, 0.18);
362
+ xl: 0 10px 24px hsla(0, 0%, 0%, 0.1), 0 20px 48px hsla(0, 0%, 0%, 0.1), 0 1px 4px hsla(0, 0%, 0%, 0.15);
363
+ }
364
+ .set-bs-hc() {
365
+ sm: none;
366
+ md: none;
367
+ lg: none;
368
+ xl: none;
369
+ }
370
+ .set-bs-hc-dark() {
371
+ sm: none;
372
+ md: none;
373
+ lg: none;
374
+ xl: none;
375
+ }
376
+
377
+ // font color
378
+ .set-fc() {
379
+ light: var(--black-400);
380
+ medium: var(--black-500);
381
+ dark: var(--black-600);
382
+ error: var(--red-400);
383
+ danger: var(--red-400);
384
+ success: var(--green-500);
385
+ warning: var(--yellow-500);
386
+ }
387
+
388
+ // focus (sets represents both light and dark mode)
389
+ .set-focus() {
390
+ default: var(--theme-secondary-custom-focus-ring, hsla(206, 100%, 40%, 0.15));
391
+ success: hsla(140, 40%, 75%, 0.4);
392
+ warning: hsla(47, 79%, 58%, 0.4);
393
+ error: hsla(358, 62%, 47%, 0.15);
394
+ muted: hsla(210, 8%, 15%, 0.1);
395
+ }
396
+ .set-focus-dark() {
397
+ default: var(--theme-dark-secondary-custom-focus-ring, hsla(206, 100%, 40%, 0.25));
398
+ success: hsla(140, 40%, 75%, 0.4);
399
+ warning: hsla(47, 79%, 58%, 0.4);
400
+ error: hsla(358, 62%, 47%, 0.15);
401
+ muted: hsla(210, 8%, 15%, 0.1);
402
+ }
403
+ .set-focus-hc() {
404
+ default: hsla(206, 100%, 40%, 0.9);
405
+ success: hsla(140, 40%, 40%, 0.9);
406
+ warning: hsla(47, 76%, 46%, 0.9);
407
+ error: hsla(358, 62%, 47%, 0.9);
408
+ muted: hsla(210, 8%, 55%, 0.95);
409
+ }
410
+
411
+ // highlight
412
+ // TODO consult with design to potentially map static colors to new colors variables
413
+ .set-highlight() {
414
+ addition: var(--green-500);
415
+ attribute: hsl(206, 98.5%, 29%);
416
+ bg: var(--black-100);
417
+ color: var(--black-600);
418
+ comment: hsl(210, 8%, 43.5%);
419
+ deletion: var(--red-500);
420
+ keyword: hsl(206, 98.5%, 29%);
421
+ literal: hsl(27, 99%, 36%);
422
+ namespace: hsl(27, 99%, 36%);
423
+ punctuation: var(--black-500);
424
+ symbol: hsl(306, 43%, 35%);
425
+ variable: hsl(80, 80.5%, 26.5%);
426
+ }
427
+ .set-highlight-dark() {
428
+ addition: var(--green-500);
429
+ attribute: hsl(207, 41.5%, 67%);
430
+ bg: hsl(0, 2%, 11%);
431
+ color: var(--black);
432
+ comment: hsl(0, 0%, 60%);
433
+ deletion: var(--red-500);
434
+ keyword: hsl(208, 41.5%, 67%);
435
+ literal: hsl(27, 85%, 61.5%);
436
+ namespace: hsl(27, 85%, 61.5%);
437
+ punctuation: hsl(0, 0%, 80%);
438
+ symbol: hsl(306, 43%, 69%);
439
+ variable: hsl(65.5, 39%, 57.5%);
440
+ }
441
+ .set-highlight-hc() {
442
+ addition: var(--green-500);
443
+ attribute: hsl(215, 100%, 35%);
444
+ bg: hsl(0, 0%, 96.5%);
445
+ color: var(--black-600);
446
+ comment: hsl(213, 7%, 33%);
447
+ deletion: var(--red-400);
448
+ keyword: hsl(215, 100%, 35%);
449
+ literal: hsl(16, 94%, 31%);
450
+ namespace: hsl(16, 94%, 31%);
451
+ punctuation: var(--black-500);
452
+ symbol: hsl(309, 45%, 31%);
453
+ variable: hsl(88, 100%, 19%);
454
+ }
455
+ .set-highlight-hc-dark() {
456
+ addition: var(--green-500);
457
+ attribute: hsl(200, 57%, 85%);
458
+ bg: hsl(0, 0%, 10%);
459
+ color: hsl(0, 0%, 100%);
460
+ comment: hsl(0, 0%, 99%);
461
+ deletion: var(--red-500);
462
+ keyword: hsl(200, 57%, 85%);
463
+ literal: hsl(36, 96%, 71%);
464
+ namespace: hsl(36, 96%, 71%);
465
+ punctuation: hsl(0, 0%, 99%);
466
+ symbol: hsl(304, 39%, 85%);
467
+ variable: hsl(62, 71%, 81%);
468
+ }
469
+
470
+ // Scrollbar (sets represents both light and dark mode)
471
+ .set-scrollbar() {
472
+ default: hsla(0, 0%, 0%, 0.2);
473
+ }
474
+ .set-scrollbar-hc() {
475
+ default: var(--black);
476
+ }
477
+
478
+ // Color sets
479
+ .sets-mode() {
480
+ light: .sets-light();
481
+ light-highcontrast: .sets-light-hc();
482
+ dark: .sets-dark();
483
+ dark-highcontrast: .sets-dark-hc();
484
+ }
485
+
486
+ .sets-light() {
487
+ white: .set-white();
488
+ black: .set-black();
489
+ orange: .set-orange();
490
+ blue: .set-blue();
491
+ green: .set-green();
492
+ red: .set-red();
493
+ yellow: .set-yellow();
494
+ gold: .set-gold();
495
+ silver: .set-silver();
496
+ bronze: .set-bronze();
497
+ }
498
+
499
+ .sets-dark() {
500
+ white: .set-white-dark();
501
+ black: .set-black-dark();
502
+ orange: .set-orange-dark();
503
+ blue: .set-blue-dark();
504
+ green: .set-green-dark();
505
+ red: .set-red-dark();
506
+ yellow: .set-yellow-dark();
507
+ gold: .set-gold-dark();
508
+ silver: .set-silver-dark();
509
+ bronze: .set-bronze-dark();
510
+ }
511
+
512
+ .sets-light-hc() {
513
+ white: .set-white-hc();
514
+ black: .set-black-hc();
515
+ orange: .set-orange-hc();
516
+ blue: .set-blue-hc();
517
+ green: .set-green-hc();
518
+ red: .set-red-hc();
519
+ yellow: .set-yellow-hc();
520
+ gold: .set-gold-hc();
521
+ silver: .set-silver-hc();
522
+ bronze: .set-bronze-hc();
523
+ }
524
+
525
+ .sets-dark-hc() {
526
+ white: .set-white-hc-dark();
527
+ black: .set-black-hc-dark();
528
+ orange: .set-orange-hc-dark();
529
+ blue: .set-blue-hc-dark();
530
+ green: .set-green-hc-dark();
531
+ red: .set-red-hc-dark();
532
+ yellow: .set-yellow-hc-dark();
533
+ gold: .set-gold-hc-dark();
534
+ silver: .set-silver-hc-dark();
535
+ bronze: .set-bronze-hc-dark();
536
+ }
537
+
538
+ // Utitly sets for variable generation
539
+ .sets-aliased-utility-variables() {
540
+ bg: .set-utility-alias();
541
+ bc: .set-utility-alias();
542
+ fc: .set-fc();
543
+ }
544
+
545
+ // Utility sets
546
+ .sets-utility-mode() {
547
+ light: .sets-utility();
548
+ light-highcontrast: .sets-utility-hc();
549
+ dark: .sets-utility-dark();
550
+ dark-highcontrast: .sets-utility-dark-hc();
551
+ }
552
+
553
+ .sets-utility() {
554
+ bc: .set-bc();
555
+ bs: .set-bs();
556
+ focus-ring: .set-focus();
557
+ highlight: .set-highlight();
558
+ scrollbar: .set-scrollbar();
559
+ }
560
+
561
+ .sets-utility-dark() {
562
+ bc: .set-bc();
563
+ bs: .set-bs-dark();
564
+ focus-ring: .set-focus-dark();
565
+ highlight: .set-highlight-dark();
566
+ scrollbar: .set-scrollbar();
567
+ }
568
+
569
+ .sets-utility-hc() {
570
+ bc: .set-bc-hc();
571
+ bs: .set-bs-hc();
572
+ focus-ring: .set-focus-hc();
573
+ highlight: .set-highlight-hc();
574
+ scrollbar: .set-scrollbar-hc();
575
+ }
576
+
577
+ .sets-utility-dark-hc() {
578
+ bc: .set-bc-hc();
579
+ bs: .set-bs-hc-dark();
580
+ focus-ring: .set-focus-hc();
581
+ highlight: .set-highlight-hc-dark();
582
+ scrollbar: .set-scrollbar-hc();
583
+ }
584
+
585
+ // Theme values
586
+ // TODO update to use custom theme colors with orange/blue as fallbacks
587
+ .set-theme-primary-default() {
588
+ default: var(--orange-400);
589
+ 100: var(--orange-100);
590
+ 200: var(--orange-200);
591
+ 300: var(--orange-300);
592
+ 400: var(--orange-400);
593
+ 500: var(--orange-500);
594
+ 600: var(--orange-600);
595
+ }
596
+
597
+ .set-theme-secondary-default() {
598
+ default: var(--blue-400);
599
+ 100: var(--blue-100);
600
+ 200: var(--blue-200);
601
+ 300: var(--blue-300);
602
+ 400: var(--blue-400);
603
+ 500: var(--blue-500);
604
+ 600: var(--blue-600);
605
+ }
606
+
607
+ .sets-theme-default() {
608
+ theme-primary: .set-theme-primary-default();
609
+ theme-secondary: .set-theme-secondary-default();
610
+ }
611
+
612
+ .theme-light-default() {
613
+ primary: .set-orange()[400]; // orange-400 (light)
614
+ secondary: .set-blue()[400]; // blue-400 (light)
615
+ }
616
+
617
+ .theme-dark-default() {
618
+ primary: .set-orange-dark()[400]; // orange-400 (dark)
619
+ secondary: .set-blue-dark()[400]; // blue-400 (dark)
620
+ }
@@ -0,0 +1,57 @@
1
+ @import (reference) "./color-mixins.less";
2
+
3
+ body {
4
+ --_o-disabled: 0.5;
5
+ --_o-disabled-static: 0.5;
6
+ --_black-static: .set-black()[default];
7
+ --_white-static: .set-white()[default];
8
+ // Create aliased utility variables
9
+ .create-colors(.sets-aliased-utility-variables());
10
+ .theme-variables();
11
+
12
+ &,
13
+ &.themed,
14
+ & .themed {
15
+ color: var(--theme-body-font-color, var(--black-600));
16
+ }
17
+ }
18
+
19
+ // Light, dark mode
20
+ body:not(.theme-highcontrast) {
21
+ // Light mode
22
+ &:not(.theme-dark),
23
+ &.theme-dark .theme-light__forced,
24
+ &.theme-system .theme-light__forced {
25
+ .generate-colors(light);
26
+ }
27
+ // Dark mode
28
+ &.theme-dark,
29
+ &:not(.theme-dark) .theme-dark__forced {
30
+ .generate-colors(dark);
31
+ }
32
+ &.theme-system {
33
+ @media (prefers-color-scheme: dark) {
34
+ .generate-colors(dark);
35
+ }
36
+ }
37
+ }
38
+
39
+ // High contrast mode
40
+ body.theme-highcontrast {
41
+ // Light high contrast mode
42
+ &:not(.theme-dark),
43
+ &.theme-dark .theme-light__forced,
44
+ &.theme-system .theme-light__forced {
45
+ .generate-colors(light-highcontrast);
46
+ }
47
+ // Dark high contrast mode
48
+ &.theme-dark,
49
+ &:not(.theme-dark) .theme-dark__forced {
50
+ .generate-colors(dark-highcontrast);
51
+ }
52
+ &.theme-system {
53
+ @media (prefers-color-scheme: dark) {
54
+ .generate-colors(dark-highcontrast);
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,12 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { renderLess } from "../test/less-test-utils";
3
+
4
+ describe("colors", () => {
5
+ it("should output all the css generated by the v2 colors/theming generation mixins", async () => {
6
+ const css = await renderLess(`
7
+ @import "./lib/exports/color.less";
8
+ `);
9
+
10
+ expect(css).toMatchSnapshot();
11
+ });
12
+ });
@@ -11,5 +11,6 @@
11
11
  // ============================================================================
12
12
  @import "constants-type.less"; // Type styles, sizes, and line-heights
13
13
  @import "constants-helpers.less"; // Border radius, z-index, spacing, transitions, etc
14
- @import "constants-colors.less"; // Colors
14
+ @import "v1/constants-colors.less"; // Colors v1 (deprecated)
15
+ @import "color.less"; // Colors v2
15
16
  @import "mixins.less";