@stackoverflow/stacks 0.69.0 → 0.72.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 (44) hide show
  1. package/dist/css/stacks.css +1895 -730
  2. package/dist/css/stacks.min.css +1 -1
  3. package/dist/js/stacks.js +80 -31
  4. package/dist/js/stacks.min.js +1 -1
  5. package/lib/css/atomic/_stacks-borders.less +18 -0
  6. package/lib/css/atomic/_stacks-flex.less +2 -2
  7. package/lib/css/atomic/_stacks-grid.less +1 -0
  8. package/lib/css/atomic/_stacks-misc.less +8 -4
  9. package/lib/css/atomic/_stacks-typography.less +1 -1
  10. package/lib/css/base/_stacks-configuration-dynamic.less +10 -43
  11. package/lib/css/components/_stacks-activity-indicator.less +26 -2
  12. package/lib/css/components/_stacks-avatars.less +9 -0
  13. package/lib/css/components/_stacks-badges.less +20 -9
  14. package/lib/css/components/_stacks-breadcrumbs.less +2 -0
  15. package/lib/css/components/_stacks-button-groups.less +11 -0
  16. package/lib/css/components/_stacks-buttons.less +143 -42
  17. package/lib/css/components/_stacks-cards.less +9 -13
  18. package/lib/css/components/_stacks-code-blocks.less +1 -1
  19. package/lib/css/components/_stacks-inputs.less +73 -9
  20. package/lib/css/components/_stacks-link-previews.less +10 -7
  21. package/lib/css/components/_stacks-links.less +29 -9
  22. package/lib/css/components/_stacks-menu.less +4 -4
  23. package/lib/css/components/_stacks-modals.less +1 -1
  24. package/lib/css/components/_stacks-navigation.less +43 -0
  25. package/lib/css/components/_stacks-notices.less +40 -3
  26. package/lib/css/components/_stacks-page-titles.less +1 -1
  27. package/lib/css/components/_stacks-pagination.less +4 -2
  28. package/lib/css/components/_stacks-popovers.less +22 -6
  29. package/lib/css/components/_stacks-post-summary.less +45 -1
  30. package/lib/css/components/_stacks-progress-bars.less +11 -3
  31. package/lib/css/components/_stacks-prose.less +18 -4
  32. package/lib/css/components/_stacks-tables.less +10 -6
  33. package/lib/css/components/_stacks-tags.less +18 -0
  34. package/lib/css/components/_stacks-toggle-switches.less +12 -0
  35. package/lib/css/components/_stacks-topbar.less +440 -0
  36. package/lib/css/components/_stacks-uploader.less +22 -0
  37. package/lib/css/components/_stacks-widget-static.less +15 -3
  38. package/lib/css/exports/_stacks-constants-colors.less +692 -220
  39. package/lib/css/exports/_stacks-constants-helpers.less +0 -2
  40. package/lib/css/exports/_stacks-mixins.less +26 -0
  41. package/lib/css/stacks-dynamic.less +0 -1
  42. package/lib/css/stacks-static.less +15 -0
  43. package/lib/ts/controllers/s-tooltip.ts +4 -0
  44. package/package.json +10 -10
@@ -9,140 +9,149 @@
9
9
  // ============================================================================
10
10
  // $ Legacy Less color variables
11
11
  // ----------------------------------------------------------------------------
12
+ // -- Base Hue Values
13
+ @white-h: 0;
14
+ @black-h: 210;
15
+ @orange-h: 27;
16
+ @yellow-h: 47;
17
+ @green-h: 140;
18
+ @blue-h: 206;
19
+ @powder-h: 205;
20
+ @red-h: 358;
21
+ @fog-h: 180;
22
+ @gold-h: 48;
23
+ @silver-h: 210;
24
+ @bronze-h: 28;
25
+
26
+ // -- Base Saturation Values
27
+ @black-s: 8%;
28
+
12
29
  // -- Primary Colors
13
- @white: #fff;
14
- @black: #0c0d0e;
15
- @orange: #f48024;
30
+ @white: hsl(@white-h, 0%, 100%);
31
+ @black: hsl(@black-h, @black-s, 5%);
32
+ @orange: hsl(@orange-h, 90%, 55%);
16
33
 
17
34
  // -- Accent Colors
18
- @yellow: #fbf2d4;
19
- @green: #5eba7d;
20
- @blue: #0077cc;
21
- @powder: #e1ecf4;
22
- @red: #d1383d;
23
- @fog: #f7f8f8;
35
+ @yellow: hsl(@yellow-h, 83%, 91%);
36
+ @green: hsl(@green-h, 40%, 55%);
37
+ @blue: hsl(@blue-h, 100%, 40%);
38
+ @powder: hsl(@powder-h, 46%, 92%);
39
+ @red: hsl(@red-h, 62%, 52%);
40
+ @fog: hsl(@fog-h, 7%, 97%);
24
41
 
25
42
  // Black
26
- @black-025: #fafafb;
27
- @black-050: #eff0f1;
28
- @black-075: #e4e6e8;
29
- @black-100: #d6d9dc;
30
- @black-150: #c8ccd0;
31
- @black-200: #bbc0c4;
32
- @black-300: #9fa6ad;
33
- @black-350: #9199a1;
34
- @black-400: #848d95;
35
- @black-500: #6a737c;
36
- @black-600: #535a60;
37
- @black-700: #3c4146;
38
- @black-750: #2f3337;
39
- @black-800: #242729;
43
+ @black-025: hsl(@black-h, @black-s, 97.5%);
44
+ @black-050: hsl(@black-h, @black-s, 95%);
45
+ @black-075: hsl(@black-h, @black-s, 90%);
46
+ @black-100: hsl(@black-h, @black-s, 85%);
47
+ @black-150: hsl(@black-h, @black-s, 80%);
48
+ @black-200: hsl(@black-h, @black-s, 75%);
49
+ @black-300: hsl(@black-h, @black-s, 65%);
50
+ @black-350: hsl(@black-h, @black-s, 60%);
51
+ @black-400: hsl(@black-h, @black-s, 55%);
52
+ @black-500: hsl(@black-h, @black-s, 45%);
53
+ @black-600: hsl(@black-h, @black-s, 35%);
54
+ @black-700: hsl(@black-h, @black-s, 25%);
55
+ @black-750: hsl(@black-h, @black-s, 20%);
56
+ @black-800: hsl(@black-h, @black-s, 15%);
40
57
  @black-900: @black;
41
58
 
42
59
  // Orange
43
- @orange-050: #fff7f2;
44
- @orange-100: #fee3cf;
45
- @orange-200: #fcd0ad;
46
- @orange-300: #f7aa6d;
60
+ @orange-050: hsl(@orange-h, 100%, 97%);
61
+ @orange-100: hsl(@orange-h, 95%, 90%);
62
+ @orange-200: hsl(@orange-h, 90%, 83%);
63
+ @orange-300: hsl(@orange-h, 90%, 70%);
47
64
  @orange-400: @orange;
48
- @orange-500: #f2720c;
49
- @orange-600: #da670b;
50
- @orange-700: #bd5c00;
51
- @orange-800: #a35200;
52
- @orange-900: #874600;
65
+ @orange-500: hsl(@orange-h, 90%, 50%);
66
+ @orange-600: hsl(@orange-h, 90%, 45%);
67
+ @orange-700: hsl(@orange-h, 90%, 39%);
68
+ @orange-800: hsl(@orange-h, 87%, 35%);
69
+ @orange-900: hsl(@orange-h, 80%, 30%);
53
70
 
54
71
  // Blue
55
- @blue-050: #f2f9ff;
56
- @blue-100: #cfeafe;
57
- @blue-200: #addafc;
58
- @blue-300: #6cbbf7;
59
- @blue-400: #379fef;
60
- @blue-500: #0095ff;
72
+ @blue-050: hsl(@blue-h, 100%, 97%);
73
+ @blue-100: hsl(@blue-h, 96%, 90%);
74
+ @blue-200: hsl(@blue-h, 93%, 83.5%);
75
+ @blue-300: hsl(@blue-h, 90%, 69.5%);
76
+ @blue-400: hsl(@blue-h, 85%, 57.5%);
77
+ @blue-500: hsl(@blue-h, 100%, 52%);
61
78
  @blue-600: @blue;
62
- @blue-700: #0064bd;
63
- @blue-800: #0054a3;
64
- @blue-900: #004487;
79
+ @blue-700: hsl(@blue-h + 3, 100%, 37.5%);
80
+ @blue-800: hsl(@blue-h + 3, 100%, 32%);
81
+ @blue-900: hsl(@blue-h + 3, 100%, 26%);
65
82
 
66
83
  // Powder
67
- @powder-050: #f4f8fb;
84
+ @powder-050: hsl(@powder-h, 47%, 97%);
68
85
  @powder-100: @powder;
69
- @powder-200: #d1e5f1;
70
- @powder-300: #b3d3ea;
71
- @powder-400: #a0c7e4;
72
- @powder-500: #7aa7c7;
73
- @powder-600: #5b8db1;
74
- @powder-700: #39739d;
75
- @powder-800: #2c5777;
76
- @powder-900: #1e3c52;
86
+ @powder-200: hsl(@powder-h, 53%, 88%);
87
+ @powder-300: hsl(@powder-h, 57%, 81%);
88
+ @powder-400: hsl(@powder-h, 56%, 76%);
89
+ @powder-500: hsl(@powder-h, 41%, 63%);
90
+ @powder-600: hsl(@powder-h, 36%, 53%);
91
+ @powder-700: hsl(@powder-h, 47%, 42%);
92
+ @powder-800: hsl(@powder-h, 46%, 32%);
93
+ @powder-900: hsl(@powder-h, 46%, 22%);
77
94
 
78
95
  // Green
79
- @green-025: #eef8f1;
80
- @green-050: #dcf0e2;
81
- @green-100: #cae8d4;
82
- @green-200: #a6d9b7;
83
- @green-300: #82ca9a;
96
+ @green-025: hsl(@green-h, 42%, 95%);
97
+ @green-050: hsl(@green-h, 40%, 90%);
98
+ @green-100: hsl(@green-h, 40%, 85%);
99
+ @green-200: hsl(@green-h, 40%, 75%);
100
+ @green-300: hsl(@green-h, 40%, 65%);
84
101
  @green-400: @green;
85
- @green-500: #48a868;
86
- @green-600: #3d8f58;
87
- @green-700: #2f6f44;
88
- @green-800: #29603b;
89
- @green-900: #1e472c;
102
+ @green-500: hsl(@green-h, 40%, 47%);
103
+ @green-600: hsl(@green-h, 40%, 40%);
104
+ @green-700: hsl(@green-h, 41%, 31%);
105
+ @green-800: hsl(@green-h, 40%, 27%);
106
+ @green-900: hsl(@green-h, 40%, 20%);
90
107
 
91
108
  // Yellow
92
- @yellow-050: #fdf7e3;
109
+ @yellow-050: hsl(@yellow-h, 87%, 94%);
93
110
  @yellow-100: @yellow;
94
- @yellow-200: #f1e5bc;
95
- @yellow-300: #e6d178;
96
- @yellow-400: #e9c63f;
97
- @yellow-500: #ddb624;
98
- @yellow-600: #cea51b;
99
- @yellow-700: #b89516;
100
- @yellow-800: #9f8010;
101
- @yellow-900: #826a0b;
111
+ @yellow-200: hsl(@yellow-h, 65%, 84%);
112
+ @yellow-300: hsl(@yellow-h, 69%, 69%);
113
+ @yellow-400: hsl(@yellow-h, 79%, 58%);
114
+ @yellow-500: hsl(@yellow-h, 73%, 50%);
115
+ @yellow-600: hsl(@yellow-h, 76%, 46%);
116
+ @yellow-700: hsl(@yellow-h, 79%, 40%);
117
+ @yellow-800: hsl(@yellow-h, 82%, 34%);
118
+ @yellow-900: hsl(@yellow-h, 84%, 28%);
102
119
 
103
120
  // Red
104
- @red-050: #fdf3f4;
105
- @red-100: #f9d3d7;
106
- @red-200: #f4b4bb;
107
- @red-300: #e87c87;
108
- @red-400: #de535e;
121
+ @red-050: hsl(@red-h, 75%, 97%);
122
+ @red-100: hsl(@red-h, 76%, 90%);
123
+ @red-200: hsl(@red-h, 74%, 83%);
124
+ @red-300: hsl(@red-h, 70%, 70%);
125
+ @red-400: hsl(@red-h, 68%, 59%);
109
126
  @red-500: @red;
110
- @red-600: #c02d2e;
111
- @red-700: #ac2726;
112
- @red-800: #942121;
113
- @red-900: #7a1819;
127
+ @red-600: hsl(@red-h, 62%, 47%);
128
+ @red-700: hsl(@red-h, 64%, 41%);
129
+ @red-800: hsl(@red-h, 64%, 35%);
130
+ @red-900: hsl(@red-h, 67%, 29%);
114
131
 
115
132
  // $ BADGES
116
133
  // ----------------------------------------------------------------------------
117
- @gold: #ffcc01;
118
- @gold-lighter: #fff4d1;
119
- @gold-darker: #f1b600;
120
-
121
- @silver: #b4b8bc;
122
- @silver-lighter: #e8e8e8;
123
- @silver-darker: #9a9c9f;
134
+ @gold: hsl(@gold-h, 100%, 50%);
135
+ @gold-lighter: hsl(@gold-h, 100%, 91%);
136
+ @gold-darker: hsl(@gold-h - 3, 100%, 47%);
124
137
 
125
- @bronze: #caa789;
126
- @bronze-lighter: #f2e9e1;
127
- @bronze-darker: #ab825f;
138
+ @silver: hsl(@silver-h, 6%, 72%);
139
+ @silver-lighter: hsl(@silver-h, 0%, 91%);
140
+ @silver-darker: hsl(@silver-h, 3%, 61%);
128
141
 
129
- // $ RINGS
130
- // ----------------------------------------------------------------------------
131
- @focus-ring: fade(@blue-500, 15%);
132
- @focus-ring-success: fade(@green-200, 40%);
133
- @focus-ring-warning: fade(@yellow-400, 40%);
134
- @focus-ring-error: fade(@red-600, 15%);
135
- @focus-ring-muted: fade(@black-800, 10%);
142
+ @bronze: hsl(@bronze-h, 38%, 67%);
143
+ @bronze-lighter: hsl(@bronze-h, 40%, 92%);
144
+ @bronze-darker: hsl(@bronze-h, 31%, 52%);
136
145
 
137
146
  // $ SHADOWS
138
147
  // ----------------------------------------------------------------------------
139
- @bs-sm: 0 1px 2px rgba(0, 0, 0, 0.05), 0 1px 4px rgba(0, 0, 0, 0.05), 0 2px 8px rgba(0, 0, 0, 0.05);
140
- @bs-md: 0 1px 3px rgba(0, 0, 0, 0.06), 0 2px 6px rgba(0, 0, 0, 0.06), 0 3px 8px rgba(0, 0, 0, 0.09);
141
- @bs-lg: 0 1px 4px rgba(0, 0, 0, 0.09), 0 3px 8px rgba(0, 0, 0, 0.09), 0 4px 13px rgba(0, 0, 0, 0.13);
148
+ @bs-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);
149
+ @bs-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);
150
+ @bs-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);
142
151
 
143
152
  // $ SCROLLBARS
144
153
  // ----------------------------------------------------------------------------
145
- @scrollbar: rgba(0, 0, 0, 0.2);
154
+ @scrollbar: hsla(0, 0%, 0%, 0.2);
146
155
 
147
156
  // ============================================================================
148
157
  // $ CSS Variable Colors
@@ -184,6 +193,76 @@
184
193
  --theme-secondary-color-b: var(~"--@{theme}-secondary-color-b", var(--theme-base-secondary-color-b));
185
194
  }
186
195
 
196
+ .component-colors {
197
+ --theme-body-font-color: var(--black-800);
198
+
199
+ // Links
200
+ --theme-link-color: var(--theme-secondary-400);
201
+ --theme-link-color-hover: var(--theme-secondary-350);
202
+ --theme-link-color-visited: var(--theme-secondary-500);
203
+
204
+ // Button Default (Secondary)
205
+ --theme-button-color: var(--theme-secondary-400);
206
+ --theme-button-background-color: transparent;
207
+ --theme-button-hover-color: var(--theme-secondary-500);
208
+ --theme-button-hover-background-color: var(--theme-secondary-050);
209
+ --theme-button-active-background-color: var(--theme-secondary-100);
210
+ --theme-button-selected-color: var(--theme-secondary-900);
211
+ --theme-button-selected-background-color: var(--theme-secondary-150);
212
+
213
+ // Button Primary
214
+ --theme-button-primary-color: var(--white);
215
+ --theme-button-primary-background-color: var(--theme-secondary-400);
216
+ --theme-button-primary-hover-color: var(--white);
217
+ --theme-button-primary-hover-background-color: var(--theme-secondary-500);
218
+ --theme-button-primary-active-background-color: var(--theme-secondary-700);
219
+ --theme-button-primary-selected-color: var(--white);
220
+ --theme-button-primary-selected-background-color: var(--theme-secondary-700);
221
+ --theme-button-primary-number-color: var(--theme-secondary-900);
222
+
223
+ // Button Filled
224
+ --theme-button-filled-color: var(--theme-secondary-700);
225
+ --theme-button-filled-background-color: var(--theme-secondary-050);
226
+ --theme-button-filled-border-color: var(--theme-secondary-350);
227
+ --theme-button-filled-hover-color: var(--theme-secondary-800);
228
+ --theme-button-filled-hover-background-color: var(--theme-secondary-100);
229
+ --theme-button-filled-active-background-color: var(--theme-secondary-150);
230
+ --theme-button-filled-active-border-color: var(--theme-secondary-350);
231
+ --theme-button-filled-selected-color: var(--theme-secondary-900);
232
+ --theme-button-filled-selected-background-color: var(--theme-secondary-300);
233
+ --theme-button-filled-selected-border-color: var(--theme-secondary-500);
234
+
235
+ // Button Outline
236
+ --theme-button-outlined-border-color: var(--theme-secondary-300);
237
+ --theme-button-outlined-selected-border-color: var(--theme-secondary-400);
238
+
239
+ // Topbar
240
+ --theme-topbar-height: @su48;
241
+ --theme-topbar-background-color: var(--black-025);
242
+
243
+ // Topbar Search input
244
+ --theme-topbar-search-color: var(--black-700);
245
+ --theme-topbar-search-background: var(--white);
246
+ --theme-topbar-search-placeholder: var(--black-200);
247
+ --theme-topbar-search-border: var(--black-200);
248
+ --theme-topbar-search-border-focus: var(--blue-300);
249
+ --theme-topbar-search-shadow-focus: 0 0 0 @su4 var(--focus-ring);
250
+
251
+ // Topbar Search switcher
252
+ --theme-topbar-select-color: var(--black-700);
253
+ --theme-topbar-select-background: var(--black-075);
254
+
255
+ // Topbar items
256
+ --theme-topbar-item-color: var(--black-600);
257
+ --theme-topbar-item-color-hover: var(--black-800);
258
+ --theme-topbar-item-background-hover: var(--black-075);
259
+ --theme-topbar-item-color-current: var(--black);
260
+ --theme-topbar-item-border-current: var(--theme-primary-color);
261
+
262
+ // Topbar themed border accent
263
+ --theme-topbar-accent-border: 3px solid var(--theme-primary-color);
264
+ }
265
+
187
266
  // -- Light mode
188
267
  .light-colors() {
189
268
  --white: @white;
@@ -300,16 +379,24 @@
300
379
  --bronze-lighter: @bronze-lighter;
301
380
  --bronze-darker: @bronze-darker;
302
381
 
382
+ // Border colors
383
+ --bc-lightest: var(--black-025);
384
+ --bc-lighter: var(--black-050);
385
+ --bc-light: var(--black-075);
386
+ --bc-medium: var(--black-100);
387
+ --bc-dark: var(--black-150);
388
+ --bc-darker: var(--black-200);
389
+
303
390
  // Font colors
304
391
  --fc-dark: @black-900;
305
392
  --fc-medium: @black-700;
306
393
  --fc-light: @black-500;
307
394
 
308
395
  // Focus rings
309
- --focus-ring-success: @focus-ring-success;
310
- --focus-ring-warning: @focus-ring-warning;
311
- --focus-ring-error: @focus-ring-error;
312
- --focus-ring-muted: @focus-ring-muted;
396
+ --focus-ring-success: hsla(@green-h, 40%, 75%, 40%);
397
+ --focus-ring-warning: hsla(@yellow-h, 79%, 58%, 40%);
398
+ --focus-ring-error: hsla(@red-h, 62%, 47%, 15%);
399
+ --focus-ring-muted: hsla(@black-h, @black-s, 15%, 10%);
313
400
 
314
401
  // Shadows
315
402
  --bs-sm: @bs-sm;
@@ -317,21 +404,21 @@
317
404
  --bs-lg: @bs-lg;
318
405
 
319
406
  // Scrollbars
320
- --scrollbar: @scrollbar;
407
+ --scrollbar: hsla(0, 0, 0, 0.2);
321
408
 
322
409
  // Syntax highlighting
323
- --highlight-bg: #f6f6f6; // Between black-025 and black-050
324
- --highlight-color: @black-750; // AAA 11.78
325
- --highlight-comment: #656e77; // ~black-500 AA 4.80
410
+ --highlight-bg: hsl(0, 0%, 96.5%); // Between black-025 and black-050
411
+ --highlight-color: var(--black-750); // AAA 11.78
412
+ --highlight-comment: hsl(@black-h, 8%, 43.5%); // ~black-500 AA 4.80
326
413
  --highlight-punctuation: var(--black-600); // AA 6.48
327
- --highlight-namespace: #b75501; // Custom orange AA 4.51
328
- --highlight-attribute: #015692; // Custom blue AAA 7.25
329
- --highlight-literal: #b75501; // Custom orange AA 4.51
330
- --highlight-symbol: #803378; // Custom purple AAA 7.30
331
- --highlight-keyword: #015692; // Custom blue AAA 7.07
332
- --highlight-variable: #54790d; // Custom green AAA 7.25
333
- --highlight-addition: @green-700; // AA 5.59
334
- --highlight-deletion: @red-600; // AA 5.31
414
+ --highlight-namespace: hsl(@orange-h, 99%, 36%); // Custom orange AA 4.51
415
+ --highlight-attribute: hsl(@blue-h, 98.5%, 29%); // Custom blue AAA 7.25
416
+ --highlight-literal: hsl(@orange-h, 99%, 36%); // Custom orange AA 4.51
417
+ --highlight-symbol: hsl(306, 43%, 35%); // Custom purple AAA 7.30
418
+ --highlight-keyword: hsl(@blue-h, 98.5%, 29%); // Custom blue AAA 7.07
419
+ --highlight-variable: hsl(80, 80.5%, 26.5%); // Custom green AAA 7.25
420
+ --highlight-addition: var(--green-700); // AA 5.59
421
+ --highlight-deletion: var(--red-600); // AA 5.31
335
422
  }
336
423
 
337
424
  .light-themed-colors() {
@@ -382,113 +469,121 @@
382
469
 
383
470
  // -- Dark mode
384
471
  .dark-colors() {
385
- --white: #2d2d2d;
386
- --black: #fff;
472
+ --white: hsl(@black-h, 0%, 17.5%);
473
+ --black: @white;
387
474
 
388
475
  // Black
389
- --black-025: #393939;
390
- --black-050: #3d3d3d;
391
- --black-075: #404345;
392
- --black-100: #4a4e51;
393
- --black-150: #555a5e;
394
- --black-200: #697075;
395
- --black-300: #7d848d;
396
- --black-350: #959ca3;
397
- --black-400: #9fa6ad;
398
- --black-500: #acb2b8;
399
- --black-600: #c4c8cc;
400
- --black-700: #cfd2d6;
401
- --black-750: #dadee0;
402
- --black-800: #e7e8eb;
403
- --black-900: #f2f2f3;
476
+ --black-025: hsl(@black-h, 0%, 22.5%);
477
+ --black-050: hsl(@black-h, 0%, 24%);
478
+ --black-075: hsl(@black-h, 4%, 26%);
479
+ --black-100: hsl(@black-h, 4.5%, 30.5%);
480
+ --black-150: hsl(@black-h, 5%, 35%);
481
+ --black-200: hsl(@black-h, 5.5%, 43.5%);
482
+ --black-300: hsl(@black-h, 6.5%, 52%);
483
+ --black-350: hsl(@black-h, 7%, 61%);
484
+ --black-400: hsl(@black-h, 8%, 65%);
485
+ --black-500: hsl(@black-h, 8%, 70%);
486
+ --black-600: hsl(@black-h, 7%, 78.5%);
487
+ --black-700: hsl(@black-h, 8%, 82.5%);
488
+ --black-750: hsl(@black-h, 9%, 86.5%);
489
+ --black-800: hsl(@black-h, 9%, 91.5%);
490
+ --black-900: hsl(@black-h, 4%, 95%);
404
491
 
405
492
  // Orange
406
- --orange-050: #473c33;
407
- --orange-100: #5e4433;
408
- --orange-200: #8d5a2f;
409
- --orange-300: #cc7525;
410
- --orange-400: #f48024;
411
- --orange-500: #ff901e;
412
- --orange-600: #ffa95e;
413
- --orange-700: #f8b682;
414
- --orange-800: #fcd6b9;
415
- --orange-900: #fee7d6;
493
+ --orange-050: hsl(@orange-h, 16.5%, 23.9%);
494
+ --orange-100: hsl(@orange-h, 30%, 28.4%);
495
+ --orange-200: hsl(@orange-h, 50%, 36.9%);
496
+ --orange-300: hsl(@orange-h, 70%, 47.3%);
497
+ --orange-400: hsl(@orange-h, 90.5%, 54.9%);
498
+ --orange-500: hsl(@orange-h, 100%, 59%);
499
+ --orange-600: hsl(@orange-h, 100%, 68.4%);
500
+ --orange-700: hsl(@orange-h, 89.5%, 74.1%);
501
+ --orange-800: hsl(@orange-h, 92%, 85.7%);
502
+ --orange-900: hsl(@orange-h, 95%, 91.8%);
416
503
 
417
504
  // Blue
418
- --blue-050: #233e52;
419
- --blue-100: #25445f;
420
- --blue-200: #295070;
421
- --blue-300: #2b5f8a;
422
- --blue-400: #3070ab;
423
- --blue-500: #378ad3;
424
- --blue-600: #3ca4ff;
425
- --blue-700: #81c4f8;
426
- --blue-800: #b8dffd;
427
- --blue-900: #d5ecfd;
505
+ --blue-050: hsl(@blue-h, 40%, 23%);
506
+ --blue-100: hsl(@blue-h, 44%, 26%);
507
+ --blue-200: hsl(@blue-h, 46%, 30%);
508
+ --blue-300: hsl(@blue-h, 53%, 35%);
509
+ --blue-400: hsl(@blue-h + 3, 56%, 43%);
510
+ --blue-500: hsl(@blue-h, 64%, 51%);
511
+ --blue-600: hsl(@blue-h, 100%, 60%);
512
+ --blue-700: hsl(@blue-h, 90%, 74%);
513
+ --blue-800: hsl(@blue-h, 95%, 86%);
514
+ --blue-900: hsl(@blue-h, 91%, 91.5%);
428
515
 
429
516
  // Powder
430
- --powder-050: #414648;
431
- --powder-100: #3e4a52;
432
- --powder-200: #43525f;
433
- --powder-300: #4c6071;
434
- --powder-400: #577489;
435
- --powder-500: #688eac;
436
- --powder-600: #7badd3;
437
- --powder-700: #9cc3db;
438
- --powder-800: #cde1ee;
439
- --powder-900: #e5f3ff;
517
+ --powder-050: hsl(@powder-h, 5%, 27%);
518
+ --powder-100: hsl(@powder-h, 14%, 28%);
519
+ --powder-200: hsl(@powder-h, 17.5%, 32%);
520
+ --powder-300: hsl(@powder-h, 19.5%, 37%);
521
+ --powder-400: hsl(@powder-h, 22.5%, 44%);
522
+ --powder-500: hsl(@powder-h, 29%, 54%);
523
+ --powder-600: hsl(@powder-h, 50%, 65.5%);
524
+ --powder-700: hsl(@powder-h, 46.5%, 73.5%);
525
+ --powder-800: hsl(@powder-h, 49.5%, 87%);
526
+ --powder-900: hsl(@powder-h, 100%, 95%);
440
527
 
441
528
  // Green
442
- --green-025: #2e4233;
443
- --green-050: #344b3a;
444
- --green-100: #3d6048;
445
- --green-200: #487455;
446
- --green-300: #4d815c;
447
- --green-400: #5a9e6f;
448
- --green-500: #63b47c;
449
- --green-600: #76c490;
450
- --green-700: #93d0a8;
451
- --green-800: #b3dec1;
452
- --green-900: #d0eada;
529
+ --green-025: hsl(@green-h, 18%, 22%);
530
+ --green-050: hsl(@green-h, 18%, 25%);
531
+ --green-100: hsl(@green-h, 22.5%, 31%);
532
+ --green-200: hsl(@green-h, 23.5%, 37%);
533
+ --green-300: hsl(@green-h, 25%, 40.5%);
534
+ --green-400: hsl(@green-h, 27.5%, 48.5%);
535
+ --green-500: hsl(@green-h, 35%, 54.5%);
536
+ --green-600: hsl(@green-h, 40%, 61.5%);
537
+ --green-700: hsl(@green-h, 39.5%, 69.5%);
538
+ --green-800: hsl(@green-h, 39.5%, 78.5%);
539
+ --green-900: hsl(@green-h, 38%, 86.5%);
453
540
 
454
541
  // Yellow
455
- --yellow-050: #464236;
456
- --yellow-100: #524b38;
457
- --yellow-200: #675c37;
458
- --yellow-300: #7e6f3a;
459
- --yellow-400: #9e883b;
460
- --yellow-500: #bf9f37;
461
- --yellow-600: #dab941;
462
- --yellow-700: #f1d056;
463
- --yellow-800: #f8df7a;
464
- --yellow-900: #fcedaf;
542
+ --yellow-050: hsl(@yellow-h, 13%, 24.5%);
543
+ --yellow-100: hsl(@yellow-h, 19%, 27%);
544
+ --yellow-200: hsl(@yellow-h, 30.5%, 31%);
545
+ --yellow-300: hsl(@yellow-h, 37%, 36%);
546
+ --yellow-400: hsl(@yellow-h, 45.5%, 42.5%);
547
+ --yellow-500: hsl(@yellow-h, 55.5%, 48%);
548
+ --yellow-600: hsl(@yellow-h, 67.5%, 55.5%);
549
+ --yellow-700: hsl(@yellow-h, 84.5%, 64%);
550
+ --yellow-800: hsl(@yellow-h, 90%, 72.5%);
551
+ --yellow-900: hsl(@yellow-h, 93%, 83.5%);
465
552
 
466
553
  // Red
467
- --red-050: #572f32;
468
- --red-100: #723738;
469
- --red-200: #873f3e;
470
- --red-300: #9b4544;
471
- --red-400: #b24d49;
472
- --red-500: #c4524f;
473
- --red-600: #d25d5d;
474
- --red-700: #de7176;
475
- --red-800: #e7929a;
476
- --red-900: #f2c1c7;
554
+ --red-050: hsl(@red-h + 3, 30%, 26.5%);
555
+ --red-100: hsl(@red-h + 3, 35%, 33%);
556
+ --red-200: hsl(@red-h + 3, 37%, 38.5%);
557
+ --red-300: hsl(@red-h + 3, 39%, 43.5%);
558
+ --red-400: hsl(@red-h + 3, 42%, 49%);
559
+ --red-500: hsl(@red-h + 3, 50%, 54%);
560
+ --red-600: hsl(@red-h + 3, 56.5%, 59.5%);
561
+ --red-700: hsl(@red-h + 3, 62.5%, 65.5%);
562
+ --red-800: hsl(@red-h + 3, 64%, 74%);
563
+ --red-900: hsl(@red-h + 3, 65.5%, 85.5%);
477
564
 
478
565
  // Gold
479
566
  --gold: @gold;
480
- --gold-lighter: #5e553c;
481
- --gold-darker: #f1b600;
567
+ --gold-lighter: hsl(@gold-h, 22%, 30%);
568
+ --gold-darker: @gold-darker;
482
569
 
483
570
  // Silver
484
571
  --silver: @silver;
485
- --silver-lighter: #424242;
486
- --silver-darker: #9a9c9f;
572
+ --silver-lighter: hsl(@silver-h, 0%, 26%);
573
+ --silver-darker: @silver-darker;
487
574
 
488
575
  // Bronze
489
576
  --bronze: @bronze;
490
- --bronze-lighter: #4d433b;
491
- --bronze-darker: #ab825f;
577
+ --bronze-lighter: hsl(@bronze-h, 13%, 27%);
578
+ --bronze-darker: @bronze-darker;
579
+
580
+ // Border colors
581
+ --bc-lightest: var(--black-025);
582
+ --bc-lighter: var(--black-050);
583
+ --bc-light: var(--black-075);
584
+ --bc-medium: var(--black-100);
585
+ --bc-dark: var(--black-150);
586
+ --bc-darker: var(--black-200);
492
587
 
493
588
  // Font colors
494
589
  --fc-dark: var(--black-900);
@@ -496,30 +591,30 @@
496
591
  --fc-light: var(--black-500);
497
592
 
498
593
  // Focus rings
499
- --focus-ring-success: fade(#487455, 40%); // @green-200
500
- --focus-ring-warning: fade(#9e883b, 40%); // @yellow-400
501
- --focus-ring-error: fade(#c4524f, 30%); // @red-500
502
- --focus-ring-muted: fade(#e7e8eb, 10%); // @black-800
594
+ --focus-ring-success: hsla(@green-h, 40%, 75%, 40%);
595
+ --focus-ring-warning: hsla(@yellow-h, 79%, 58%, 40%);
596
+ --focus-ring-error: hsla(@red-h, 62%, 52%, 30%);
597
+ --focus-ring-muted: hsla(@black-h, @black-s, 100%, 10%);
503
598
 
504
599
  // Shadows
505
- --bs-sm: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 4px rgba(0, 0, 0, 0.1), 0 2px 8px rgba(0, 0, 0, 0.1);
506
- --bs-md: 0 1px 3px rgba(0, 0, 0, 0.11), 0 2px 6px rgba(0, 0, 0, 0.11), 0 3px 8px rgba(0, 0, 0, 0.14);
507
- --bs-lg: 0 1px 4px rgba(0, 0, 0, 0.14), 0 3px 8px rgba(0, 0, 0, 0.14), 0 4px 13px rgba(0, 0, 0, 0.18);
600
+ --bs-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);
601
+ --bs-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);
602
+ --bs-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);
508
603
 
509
604
  // Scrollbars
510
- --scrollbar: rgba(255, 255, 255, 0.2);
605
+ --scrollbar: hsla(0, 0%, 100%, 0.2);
511
606
 
512
607
  // Syntax highlighting
513
- --highlight-bg: #1c1b1b;
514
- --highlight-color: @white; // AAA 17.19
515
- --highlight-comment: #999; // AA 6.03
516
- --highlight-punctuation: #ccc; // AAA 10.70
517
- --highlight-namespace: #f08d49; // orange-700 AAA 7.05
518
- --highlight-attribute: #88aece; // Custom powder blue AAA 7.63
519
- --highlight-literal: #f08d49; // orange-700 AAA 7.05
520
- --highlight-symbol: #c59bc1; // Custom purple AAA 7.23
521
- --highlight-keyword: #88aece; // Custom powder blue AAA 7.63
522
- --highlight-variable: #b5bd68;
608
+ --highlight-bg: hsl(0, 2%, 11%);
609
+ --highlight-color: var(--black); // AAA 17.19
610
+ --highlight-comment: hsl(0, 0%, 60%); // AA 6.03
611
+ --highlight-punctuation: hsl(0, 0%, 80%); // AAA 10.70
612
+ --highlight-namespace: hsl(@orange-h, 85%, 61.5%); // Custom orange AAA 7.05
613
+ --highlight-attribute: hsl(@powder-h + 2, 41.5%, 67%); // Custom powder blue AAA 7.63
614
+ --highlight-literal: hsl(@orange-h, 85%, 61.5%); // Custom orange AAA 7.05
615
+ --highlight-symbol: hsl(306, 43%, 69%); // Custom purple AAA 7.23
616
+ --highlight-keyword: hsl(@powder-h + 3, 41.5%, 67%); // Custom powder blue AAA 7.63
617
+ --highlight-variable: hsl(65.5, 39%, 57.5%);
523
618
  --highlight-addition: var(--green-600); // AAA 8.21
524
619
  --highlight-deletion: var(--red-700); // AA 5.51
525
620
  }
@@ -574,14 +669,363 @@
574
669
  .theme-dark-rules() {
575
670
  .dark-colors();
576
671
 
577
- //.generate-themed-variables(theme-dark);
578
-
579
672
  &,
580
673
  & .themed {
581
674
  .generate-themed-variables(theme-dark);
582
675
  // add in the themed "native mixins", making sure to scope to the child .themed elements so they don't use the parent's values
583
676
  .dark-themed-colors();
584
677
  }
678
+
679
+ & .themed {
680
+ &:extend(.component-colors);
681
+ }
682
+ }
683
+
684
+ // -- High contrast modes
685
+ .light-highcontrast() {
686
+ --white: hsl(0, 0%, 100%);
687
+ --black: hsl(0, 0%, 0%);
688
+
689
+ // Black
690
+ --black-025: hsl(@black-h, @black-s, 97.5%);
691
+ --black-050: hsl(@black-h, @black-s, 95%);
692
+ --black-075: hsl(@black-h, @black-s, 92.5%);
693
+ --black-100: hsl(@black-h, @black-s, 90%);
694
+ --black-150: hsl(@black-h, @black-s, 87.5%);
695
+ --black-200: hsl(@black-h, @black-s, 85%);
696
+ --black-300: hsl(@black-h, @black-s, 35%);
697
+ --black-350: hsl(@black-h, @black-s, 32.5%);
698
+ --black-400: hsl(@black-h, @black-s, 30%);
699
+ --black-500: hsl(@black-h, @black-s, 25%);
700
+ --black-600: hsl(@black-h, @black-s, 20%);
701
+ --black-700: hsl(@black-h, @black-s, 15%);
702
+ --black-750: hsl(@black-h, @black-s, 10%);
703
+ --black-800: hsl(@black-h, @black-s, 5%);
704
+ --black-900: hsl(@black-h, @black-s, 0%);
705
+
706
+ // Orange
707
+ --orange-050: hsl(@orange-h, 100%, 97.5%);
708
+ --orange-100: hsl(@orange-h, 100%, 94%);
709
+ --orange-200: hsl(@orange-h, 100%, 88%);
710
+ --orange-300: hsl(@orange-h, 100%, 82%);
711
+ --orange-400: hsl(@orange-h, 100%, 34%);
712
+ --orange-500: hsl(@orange-h, 100%, 29%);
713
+ --orange-600: hsl(@orange-h, 100%, 24%);
714
+ --orange-700: hsl(@orange-h, 100%, 19%);
715
+ --orange-800: hsl(@orange-h, 100%, 13%);
716
+ --orange-900: hsl(@orange-h, 100%, 8%);
717
+
718
+ // Blue
719
+ --blue-050: hsl(@blue-h, 100%, 97.5%);
720
+ --blue-100: hsl(@blue-h, 100%, 95%);
721
+ --blue-200: hsl(@blue-h, 100%, 90%);
722
+ --blue-300: hsl(@blue-h, 100%, 85%);
723
+ --blue-400: hsl(@blue-h, 100%, 25%);
724
+ --blue-500: hsl(@blue-h, 100%, 20%);
725
+ --blue-600: hsl(@blue-h, 100%, 15%);
726
+ --blue-700: hsl(@blue-h, 100%, 10%);
727
+ --blue-800: hsl(@blue-h, 100%, 7.5%);
728
+ --blue-900: hsl(@blue-h, 100%, 5%);
729
+
730
+ // Powder
731
+ --powder-050: hsl(@powder-h, 100%, 97.5%);
732
+ --powder-100: hsl(@powder-h, 85%, 96%);
733
+ --powder-200: hsl(@powder-h, 75%, 92%);
734
+ --powder-300: hsl(@powder-h, 70%, 88%);
735
+ --powder-400: hsl(@powder-h, 55%, 28%);
736
+ --powder-500: hsl(@powder-h, 60%, 24%);
737
+ --powder-600: hsl(@powder-h, 70%, 20%);
738
+ --powder-700: hsl(@powder-h, 75%, 16%);
739
+ --powder-800: hsl(@powder-h, 75%, 12%);
740
+ --powder-900: hsl(@powder-h, 75%, 8%);
741
+
742
+ // Green
743
+ --green-025: hsl(@green-h, 100%, 97%);
744
+ --green-050: hsl(@green-h, 100%, 96%);
745
+ --green-100: hsl(@green-h, 100%, 94%);
746
+ --green-200: hsl(@green-h, 100%, 88%);
747
+ --green-300: hsl(@green-h, 100%, 82%);
748
+ --green-400: hsl(@green-h, 100%, 18%);
749
+ --green-500: hsl(@green-h, 100%, 15%);
750
+ --green-600: hsl(@green-h, 100%, 12%);
751
+ --green-700: hsl(@green-h, 100%, 9%);
752
+ --green-800: hsl(@green-h, 100%, 6%);
753
+ --green-900: hsl(@green-h, 100%, 3%);
754
+
755
+ // Yellow
756
+ --yellow-050: hsl(@yellow-h, 100%, 95%);
757
+ --yellow-100: hsl(@yellow-h, 100%, 92%);
758
+ --yellow-200: hsl(@yellow-h, 95%, 85%);
759
+ --yellow-300: hsl(@yellow-h, 95%, 78%);
760
+ --yellow-400: hsl(@yellow-h, 100%, 28%);
761
+ --yellow-500: hsl(@yellow-h, 100%, 26%);
762
+ --yellow-600: hsl(@yellow-h, 100%, 23%);
763
+ --yellow-700: hsl(@yellow-h, 100%, 19%);
764
+ --yellow-800: hsl(@yellow-h, 100%, 13%);
765
+ --yellow-900: hsl(@yellow-h, 100%, 7%);
766
+
767
+ // Red
768
+ --red-050: hsl(@red-h, 100%, 97.5%);
769
+ --red-100: hsl(@red-h, 100%, 95%);
770
+ --red-200: hsl(@red-h, 100%, 90%);
771
+ --red-300: hsl(@red-h, 100%, 85%);
772
+ --red-400: hsl(@red-h, 100%, 35%);
773
+ --red-500: hsl(@red-h, 100%, 29%);
774
+ --red-600: hsl(@red-h, 100%, 23%);
775
+ --red-700: hsl(@red-h, 100%, 17%);
776
+ --red-800: hsl(@red-h, 100%, 11%);
777
+ --red-900: hsl(@red-h, 100%, 7%);
778
+
779
+ // Gold
780
+ --gold: hsl(@gold-h, 100%, 50%);
781
+ --gold-lighter: hsl(@gold-h, 100%, 91%);
782
+ --gold-darker: hsl(@gold-h - 3, 100%, 20%);
783
+
784
+ // Silver
785
+ --silver: hsl(@silver-h, 6%, 72%);
786
+ --silver-lighter: hsl(@silver-h, 6%, 91%);
787
+ --silver-darker: hsl(@silver-h, 6%, 30%);
788
+
789
+ // Bronze
790
+ --bronze: hsl(@bronze-h, 38%, 65%);
791
+ --bronze-lighter: hsl(@bronze-h, 40%, 92%);
792
+ --bronze-darker: hsl(@bronze-h, 31%, 25%);
793
+
794
+ // Border colors
795
+ --bc-lightest: var(--black-400);
796
+ --bc-lighter: var(--black-400);
797
+ --bc-light: var(--black-400);
798
+ --bc-medium: var(--black-400);
799
+ --bc-dark: var(--black-700);
800
+ --bc-darker: var(--black-900);
801
+
802
+ // Font colors
803
+ --fc-dark: var(--black-900);
804
+ --fc-medium: var(--black-700);
805
+ --fc-light: var(--black-500);
806
+
807
+ // Focus rings
808
+ --focus-ring: fade(@blue-600, 90%);
809
+ --focus-ring-success: fade(@green-600, 90%);
810
+ --focus-ring-warning: fade(@yellow-600, 90%);
811
+ --focus-ring-error: fade(@red-600, 90%);
812
+ --focus-ring-muted: fade(@black-400, 95%);
813
+
814
+ // Shadows
815
+ --bs-sm: none;
816
+ --bs-md: none;
817
+ --bs-lg: none;
818
+
819
+ // Scrollbars
820
+ --scrollbar: var(--black);
821
+
822
+ // Syntax highlighting
823
+ --highlight-bg: hsl(0, 0%, 96.5%); // Between black-025 and black-050
824
+ --highlight-color: var(--black-750);
825
+ --highlight-comment: hsl(213, 7%, 33%); // Custom black
826
+ --highlight-punctuation: var(--black-600);
827
+ --highlight-namespace: hsl(16, 94%, 31%); // Custom orange
828
+ --highlight-attribute: hsl(215, 100%, 35%); // Custom blue
829
+ --highlight-literal: hsl(16, 94%, 31%); // Custom orange
830
+ --highlight-symbol: hsl(309, 45%, 31%); // Custom purple
831
+ --highlight-keyword: hsl(215, 100%, 35%); // Custom blue
832
+ --highlight-variable: hsl(88, 100%, 19%); // Custom green
833
+ --highlight-addition: var(--green-500);
834
+ --highlight-deletion: var(--red-500);
835
+
836
+ // High contrast theme override
837
+ &:extend(.highcontrast-themed-colors);
838
+ }
839
+
840
+ .dark-highcontrast() {
841
+ --white: hsl(0, 0%, 0%);
842
+ --black: hsl(0, 0%, 100%);
843
+
844
+ // Black
845
+ --black-025: hsl(@black-h, @black-s, 2.5%);
846
+ --black-050: hsl(@black-h, @black-s, 5%);
847
+ --black-075: hsl(@black-h, @black-s, 7.5%);
848
+ --black-100: hsl(@black-h, @black-s, 10%);
849
+ --black-150: hsl(@black-h, @black-s, 12.5%);
850
+ --black-200: hsl(@black-h, @black-s, 15%);
851
+ --black-300: hsl(@black-h, @black-s, 65%);
852
+ --black-350: hsl(@black-h, @black-s, 67.5%);
853
+ --black-400: hsl(@black-h, @black-s, 70%);
854
+ --black-500: hsl(@black-h, @black-s, 75%);
855
+ --black-600: hsl(@black-h, @black-s, 80%);
856
+ --black-700: hsl(@black-h, @black-s, 85%);
857
+ --black-750: hsl(@black-h, @black-s, 90%);
858
+ --black-800: hsl(@black-h, @black-s, 95%);
859
+ --black-900: hsl(@black-h, @black-s, 100%);
860
+
861
+ // Orange
862
+ --orange-050: hsl(@orange-h, 100%, 4%);
863
+ --orange-100: hsl(@orange-h, 100%, 8%);
864
+ --orange-200: hsl(@orange-h, 100%, 16%);
865
+ --orange-300: hsl(@orange-h, 100%, 24%);
866
+ --orange-400: hsl(@orange-h, 100%, 64%);
867
+ --orange-500: hsl(@orange-h, 100%, 71%);
868
+ --orange-600: hsl(@orange-h, 100%, 77%);
869
+ --orange-700: hsl(@orange-h, 100%, 82%);
870
+ --orange-800: hsl(@orange-h, 100%, 87%);
871
+ --orange-900: hsl(@orange-h, 100%, 91%);
872
+
873
+ // Blue
874
+ --blue-050: hsl(@blue-h, 100%, 4%);
875
+ --blue-100: hsl(@blue-h, 100%, 11%);
876
+ --blue-200: hsl(@blue-h, 100%, 18%);
877
+ --blue-300: hsl(@blue-h, 100%, 25%);
878
+ --blue-400: hsl(@blue-h, 100%, 75%);
879
+ --blue-500: hsl(@blue-h, 100%, 80%);
880
+ --blue-600: hsl(@blue-h, 100%, 85%);
881
+ --blue-700: hsl(@blue-h, 100%, 90%);
882
+ --blue-800: hsl(@blue-h, 100%, 92.5%);
883
+ --blue-900: hsl(@blue-h, 100%, 95%);
884
+
885
+ // Powder
886
+ --powder-050: hsl(@powder-h, 100%, 6%);
887
+ --powder-100: hsl(@powder-h, 90%, 8%);
888
+ --powder-200: hsl(@powder-h, 80%, 14%);
889
+ --powder-300: hsl(@powder-h, 60%, 20%);
890
+ --powder-400: hsl(@powder-h, 55%, 72%);
891
+ --powder-500: hsl(@powder-h, 60%, 76%);
892
+ --powder-600: hsl(@powder-h, 70%, 80%);
893
+ --powder-700: hsl(@powder-h, 75%, 84%);
894
+ --powder-800: hsl(@powder-h, 75%, 88%);
895
+ --powder-900: hsl(@powder-h, 75%, 92%);
896
+
897
+ // Green
898
+ --green-025: hsl(@green-h, 100%, 3%);
899
+ --green-050: hsl(@green-h, 100%, 4%);
900
+ --green-100: hsl(@green-h, 100%, 6%);
901
+ --green-200: hsl(@green-h, 100%, 12%);
902
+ --green-300: hsl(@green-h, 100%, 18%);
903
+ --green-400: hsl(@green-h, 100%, 65%);
904
+ --green-500: hsl(@green-h, 100%, 71%);
905
+ --green-600: hsl(@green-h, 100%, 77%);
906
+ --green-700: hsl(@green-h, 100%, 83%);
907
+ --green-800: hsl(@green-h, 100%, 89%);
908
+ --green-900: hsl(@green-h, 100%, 94%);
909
+
910
+ // Yellow
911
+ --yellow-050: hsl(@yellow-h, 100%, 4%);
912
+ --yellow-100: hsl(@yellow-h, 100%, 8%);
913
+ --yellow-200: hsl(@yellow-h, 95%, 16%);
914
+ --yellow-300: hsl(@yellow-h, 95%, 24%);
915
+ --yellow-400: hsl(@yellow-h, 100%, 55%);
916
+ --yellow-500: hsl(@yellow-h, 100%, 63%);
917
+ --yellow-600: hsl(@yellow-h, 100%, 71%);
918
+ --yellow-700: hsl(@yellow-h, 100%, 79%);
919
+ --yellow-800: hsl(@yellow-h, 100%, 87%);
920
+ --yellow-900: hsl(@yellow-h, 100%, 95%);
921
+
922
+ // Red
923
+ --red-050: hsl(@red-h, 100%, 4%);
924
+ --red-100: hsl(@red-h, 100%, 8%);
925
+ --red-200: hsl(@red-h, 100%, 16%);
926
+ --red-300: hsl(@red-h, 100%, 24%);
927
+ --red-400: hsl(@red-h, 100%, 70%);
928
+ --red-500: hsl(@red-h, 100%, 75%);
929
+ --red-600: hsl(@red-h, 100%, 80%);
930
+ --red-700: hsl(@red-h, 100%, 85%);
931
+ --red-800: hsl(@red-h, 100%, 90%);
932
+ --red-900: hsl(@red-h, 100%, 95%);
933
+
934
+ // Gold
935
+ --gold: hsl(@gold-h, 100%, 50%);
936
+ --gold-lighter: hsl(@gold-h - 3, 100%, 9%);
937
+ --gold-darker: hsl(@gold-h - 3, 100%, 80%);
938
+
939
+ // Silver
940
+ --silver: hsl(@silver-h, 6%, 72%);
941
+ --silver-lighter: hsl(@silver-h, 5%, 9%);
942
+ --silver-darker: hsl(@silver-h, 5%, 70%);
943
+
944
+ // Bronze
945
+ --bronze: hsl(@bronze-h, 38%, 65%);
946
+ --bronze-lighter: hsl(@bronze-h, 40%, 8%);
947
+ --bronze-darker: hsl(@bronze-h, 46.7%, 75%);
948
+
949
+ // Border colors
950
+ --bc-lightest: var(--black-400);
951
+ --bc-lighter: var(--black-400);
952
+ --bc-light: var(--black-400);
953
+ --bc-medium: var(--black-400);
954
+ --bc-dark: var(--black-700);
955
+ --bc-darker: var(--black-900);
956
+
957
+ // Focus rings
958
+ --focus-ring: fade(@blue-600, 90%);
959
+ --focus-ring-success: fade(@green-600, 90%);
960
+ --focus-ring-warning: fade(@yellow-600, 90%);
961
+ --focus-ring-error: fade(@red-600, 90%);
962
+ --focus-ring-muted: fade(@black-400, 95%);
963
+
964
+ // Font colors
965
+ --fc-dark: var(--black-900);
966
+ --fc-medium: var(--black-700);
967
+ --fc-light: var(--black-500);
968
+
969
+ // Shadows
970
+ --bs-sm: none;
971
+ --bs-md: none;
972
+ --bs-lg: none;
973
+
974
+ // Scrollbars
975
+ --scrollbar: var(--black);
976
+
977
+ // Syntax highlighting
978
+ --highlight-bg: hsl(0, 0%, 10%);
979
+ --highlight-color: hsl(0, 0%, 100%);
980
+ --highlight-comment: hsl(0, 0%, 99%); // Custom gray
981
+ --highlight-punctuation: hsl(0, 0%, 99%); // Custom gray
982
+ --highlight-namespace: hsl(36, 96%, 71%); // Custom orange
983
+ --highlight-attribute: hsl(200, 57%, 85%); // Custom blue
984
+ --highlight-literal: hsl(36, 96%, 71%); // Custom orange
985
+ --highlight-symbol: hsl(304, 39%, 85%); // Custom purple
986
+ --highlight-keyword: hsl(200, 57%, 85%); // Custom blue
987
+ --highlight-variable: hsl(62, 71%, 81%); // Custom green
988
+ --highlight-addition: var(--green-600);
989
+ --highlight-deletion: var(--red-700);
990
+
991
+ // High contrast theme override
992
+ &:extend(.highcontrast-themed-colors);
993
+ }
994
+
995
+ .highcontrast-themed-colors {
996
+ // Primary Theming
997
+ --theme-primary-color: var(--orange-400);
998
+ --theme-primary-025: var(--orange-050);
999
+ --theme-primary-050: var(--orange-050);
1000
+ --theme-primary-075: var(--orange-050);
1001
+ --theme-primary-100: var(--orange-100);
1002
+ --theme-primary-150: var(--orange-100);
1003
+ --theme-primary-200: var(--orange-200);
1004
+ --theme-primary-300: var(--orange-300);
1005
+ --theme-primary-350: var(--orange-300);
1006
+ --theme-primary-400: var(--orange-400);
1007
+ --theme-primary-500: var(--orange-500);
1008
+ --theme-primary-600: var(--orange-600);
1009
+ --theme-primary-700: var(--orange-700);
1010
+ --theme-primary-800: var(--orange-800);
1011
+ --theme-primary-900: var(--orange-900);
1012
+
1013
+ // Secondary Theming
1014
+ --theme-secondary-color: var(--blue-400);
1015
+ --theme-secondary-025: var(--blue-050);
1016
+ --theme-secondary-050: var(--blue-050);
1017
+ --theme-secondary-075: var(--blue-050);
1018
+ --theme-secondary-100: var(--blue-100);
1019
+ --theme-secondary-150: var(--blue-100);
1020
+ --theme-secondary-200: var(--blue-200);
1021
+ --theme-secondary-300: var(--blue-300);
1022
+ --theme-secondary-350: var(--blue-300);
1023
+ --theme-secondary-400: var(--blue-400);
1024
+ --theme-secondary-500: var(--blue-500);
1025
+ --theme-secondary-600: var(--blue-600);
1026
+ --theme-secondary-700: var(--blue-700);
1027
+ --theme-secondary-800: var(--blue-800);
1028
+ --theme-secondary-900: var(--blue-900);
585
1029
  }
586
1030
 
587
1031
  :root {
@@ -593,6 +1037,12 @@
593
1037
  .generate-calculated-themed-variables(@defaultSecondaryColor, secondary);
594
1038
  }
595
1039
 
1040
+ // place component-colors on the body directly (instead of :root) so consumers can use the --theme-* variables
1041
+ body {
1042
+ &:extend(.component-colors);
1043
+ }
1044
+
1045
+ // Light mode
596
1046
  body:not(.theme-dark),
597
1047
  body.theme-dark .theme-light__forced,
598
1048
  body.theme-system .theme-light__forced {
@@ -604,15 +1054,37 @@ body.theme-system .theme-light__forced {
604
1054
  // add in the themed "native mixins", making sure to scope to the child .themed elements so they don't use the parent's values
605
1055
  .light-themed-colors();
606
1056
  }
1057
+
1058
+ & .themed {
1059
+ &:extend(.component-colors);
1060
+ }
607
1061
  }
608
1062
 
1063
+ // Dark mode
609
1064
  body.theme-dark,
610
1065
  body:not(.theme-dark) .theme-dark__forced {
611
1066
  .theme-dark-rules();
612
1067
  }
613
-
614
1068
  body.theme-system {
615
1069
  @media (prefers-color-scheme: dark) {
616
1070
  .theme-dark-rules();
617
1071
  }
618
1072
  }
1073
+
1074
+ // High contrast mode (Light)
1075
+ body.theme-highcontrast:not(.theme-dark),
1076
+ body.theme-dark.theme-highcontrast .theme-light__forced,
1077
+ body.theme-system.theme-highcontrast .theme-light__forced {
1078
+ .light-highcontrast();
1079
+ }
1080
+
1081
+ // High contrast mode (Dark)
1082
+ body.theme-dark.theme-highcontrast,
1083
+ body.theme-highcontrast:not(.theme-dark) .theme-dark__forced {
1084
+ .dark-highcontrast();
1085
+ }
1086
+ body.theme-system.theme-highcontrast {
1087
+ @media (prefers-color-scheme: dark) {
1088
+ .dark-highcontrast();
1089
+ }
1090
+ }