@stackoverflow/stacks 0.69.1 → 0.73.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 (45) hide show
  1. package/README.md +1 -1
  2. package/dist/css/stacks.css +2166 -941
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +167 -92
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/css/atomic/_stacks-borders.less +18 -0
  7. package/lib/css/atomic/_stacks-flex.less +2 -7
  8. package/lib/css/atomic/_stacks-grid.less +2 -0
  9. package/lib/css/atomic/_stacks-misc.less +8 -4
  10. package/lib/css/atomic/_stacks-typography.less +23 -8
  11. package/lib/css/base/_stacks-configuration-dynamic.less +13 -56
  12. package/lib/css/components/_stacks-activity-indicator.less +26 -2
  13. package/lib/css/components/_stacks-avatars.less +9 -0
  14. package/lib/css/components/_stacks-badges.less +21 -9
  15. package/lib/css/components/_stacks-breadcrumbs.less +2 -0
  16. package/lib/css/components/_stacks-button-groups.less +11 -0
  17. package/lib/css/components/_stacks-buttons.less +143 -42
  18. package/lib/css/components/_stacks-cards.less +9 -13
  19. package/lib/css/components/_stacks-code-blocks.less +1 -1
  20. package/lib/css/components/_stacks-inputs.less +78 -9
  21. package/lib/css/components/_stacks-link-previews.less +10 -7
  22. package/lib/css/components/_stacks-links.less +29 -9
  23. package/lib/css/components/_stacks-menu.less +4 -4
  24. package/lib/css/components/_stacks-modals.less +1 -1
  25. package/lib/css/components/_stacks-navigation.less +43 -0
  26. package/lib/css/components/_stacks-notices.less +40 -3
  27. package/lib/css/components/_stacks-page-titles.less +1 -1
  28. package/lib/css/components/_stacks-pagination.less +4 -2
  29. package/lib/css/components/_stacks-popovers.less +26 -6
  30. package/lib/css/components/_stacks-post-summary.less +121 -3
  31. package/lib/css/components/_stacks-progress-bars.less +29 -6
  32. package/lib/css/components/_stacks-prose.less +18 -4
  33. package/lib/css/components/_stacks-tables.less +10 -6
  34. package/lib/css/components/_stacks-tags.less +22 -19
  35. package/lib/css/components/_stacks-toggle-switches.less +12 -0
  36. package/lib/css/components/_stacks-topbar.less +440 -0
  37. package/lib/css/components/_stacks-uploader.less +22 -0
  38. package/lib/css/components/_stacks-widget-static.less +15 -3
  39. package/lib/css/exports/_stacks-constants-colors.less +700 -220
  40. package/lib/css/exports/_stacks-constants-helpers.less +1 -2
  41. package/lib/css/exports/_stacks-mixins.less +26 -0
  42. package/lib/css/stacks-dynamic.less +0 -1
  43. package/lib/css/stacks-static.less +15 -0
  44. package/lib/ts/controllers/s-tooltip.ts +4 -0
  45. package/package.json +15 -12
@@ -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,84 @@
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
+ // Tags
240
+ --theme-tag-color: var(--theme-secondary-800);
241
+ --theme-tag-background-color: var(--theme-secondary-075);
242
+ --theme-tag-border-color: transparent;
243
+ --theme-tag-hover-color: var(--theme-secondary-900);
244
+ --theme-tag-hover-background-color: var(--theme-secondary-100);
245
+ --theme-tag-hover-border-color: transparent;
246
+
247
+ // Topbar
248
+ --theme-topbar-height: @su48;
249
+ --theme-topbar-background-color: var(--black-025);
250
+
251
+ // Topbar Search input
252
+ --theme-topbar-search-color: var(--black-700);
253
+ --theme-topbar-search-background: var(--white);
254
+ --theme-topbar-search-placeholder: var(--black-200);
255
+ --theme-topbar-search-border: var(--black-200);
256
+ --theme-topbar-search-border-focus: var(--blue-300);
257
+ --theme-topbar-search-shadow-focus: 0 0 0 @su4 var(--focus-ring);
258
+
259
+ // Topbar Search switcher
260
+ --theme-topbar-select-color: var(--black-700);
261
+ --theme-topbar-select-background: var(--black-075);
262
+
263
+ // Topbar items
264
+ --theme-topbar-item-color: var(--black-600);
265
+ --theme-topbar-item-color-hover: var(--black-800);
266
+ --theme-topbar-item-background-hover: var(--black-075);
267
+ --theme-topbar-item-color-current: var(--black);
268
+ --theme-topbar-item-border-current: var(--theme-primary-color);
269
+
270
+ // Topbar themed border accent
271
+ --theme-topbar-accent-border: 3px solid var(--theme-primary-color);
272
+ }
273
+
187
274
  // -- Light mode
188
275
  .light-colors() {
189
276
  --white: @white;
@@ -300,16 +387,24 @@
300
387
  --bronze-lighter: @bronze-lighter;
301
388
  --bronze-darker: @bronze-darker;
302
389
 
390
+ // Border colors
391
+ --bc-lightest: var(--black-025);
392
+ --bc-lighter: var(--black-050);
393
+ --bc-light: var(--black-075);
394
+ --bc-medium: var(--black-100);
395
+ --bc-dark: var(--black-150);
396
+ --bc-darker: var(--black-200);
397
+
303
398
  // Font colors
304
399
  --fc-dark: @black-900;
305
400
  --fc-medium: @black-700;
306
401
  --fc-light: @black-500;
307
402
 
308
403
  // 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;
404
+ --focus-ring-success: hsla(@green-h, 40%, 75%, 40%);
405
+ --focus-ring-warning: hsla(@yellow-h, 79%, 58%, 40%);
406
+ --focus-ring-error: hsla(@red-h, 62%, 47%, 15%);
407
+ --focus-ring-muted: hsla(@black-h, @black-s, 15%, 10%);
313
408
 
314
409
  // Shadows
315
410
  --bs-sm: @bs-sm;
@@ -317,21 +412,21 @@
317
412
  --bs-lg: @bs-lg;
318
413
 
319
414
  // Scrollbars
320
- --scrollbar: @scrollbar;
415
+ --scrollbar: hsla(0, 0, 0, 0.2);
321
416
 
322
417
  // 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
418
+ --highlight-bg: hsl(0, 0%, 96.5%); // Between black-025 and black-050
419
+ --highlight-color: var(--black-750); // AAA 11.78
420
+ --highlight-comment: hsl(@black-h, 8%, 43.5%); // ~black-500 AA 4.80
326
421
  --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
422
+ --highlight-namespace: hsl(@orange-h, 99%, 36%); // Custom orange AA 4.51
423
+ --highlight-attribute: hsl(@blue-h, 98.5%, 29%); // Custom blue AAA 7.25
424
+ --highlight-literal: hsl(@orange-h, 99%, 36%); // Custom orange AA 4.51
425
+ --highlight-symbol: hsl(306, 43%, 35%); // Custom purple AAA 7.30
426
+ --highlight-keyword: hsl(@blue-h, 98.5%, 29%); // Custom blue AAA 7.07
427
+ --highlight-variable: hsl(80, 80.5%, 26.5%); // Custom green AAA 7.25
428
+ --highlight-addition: var(--green-700); // AA 5.59
429
+ --highlight-deletion: var(--red-600); // AA 5.31
335
430
  }
336
431
 
337
432
  .light-themed-colors() {
@@ -382,113 +477,121 @@
382
477
 
383
478
  // -- Dark mode
384
479
  .dark-colors() {
385
- --white: #2d2d2d;
386
- --black: #fff;
480
+ --white: hsl(@black-h, 0%, 17.5%);
481
+ --black: @white;
387
482
 
388
483
  // 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;
484
+ --black-025: hsl(@black-h, 0%, 22.5%);
485
+ --black-050: hsl(@black-h, 0%, 24%);
486
+ --black-075: hsl(@black-h, 4%, 26%);
487
+ --black-100: hsl(@black-h, 4.5%, 30.5%);
488
+ --black-150: hsl(@black-h, 5%, 35%);
489
+ --black-200: hsl(@black-h, 5.5%, 43.5%);
490
+ --black-300: hsl(@black-h, 6.5%, 52%);
491
+ --black-350: hsl(@black-h, 7%, 61%);
492
+ --black-400: hsl(@black-h, 8%, 65%);
493
+ --black-500: hsl(@black-h, 8%, 70%);
494
+ --black-600: hsl(@black-h, 7%, 78.5%);
495
+ --black-700: hsl(@black-h, 8%, 82.5%);
496
+ --black-750: hsl(@black-h, 9%, 86.5%);
497
+ --black-800: hsl(@black-h, 9%, 91.5%);
498
+ --black-900: hsl(@black-h, 4%, 95%);
404
499
 
405
500
  // 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;
501
+ --orange-050: hsl(@orange-h, 16.5%, 23.9%);
502
+ --orange-100: hsl(@orange-h, 30%, 28.4%);
503
+ --orange-200: hsl(@orange-h, 50%, 36.9%);
504
+ --orange-300: hsl(@orange-h, 70%, 47.3%);
505
+ --orange-400: hsl(@orange-h, 90.5%, 54.9%);
506
+ --orange-500: hsl(@orange-h, 100%, 59%);
507
+ --orange-600: hsl(@orange-h, 100%, 68.4%);
508
+ --orange-700: hsl(@orange-h, 89.5%, 74.1%);
509
+ --orange-800: hsl(@orange-h, 92%, 85.7%);
510
+ --orange-900: hsl(@orange-h, 95%, 91.8%);
416
511
 
417
512
  // 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;
513
+ --blue-050: hsl(@blue-h, 40%, 23%);
514
+ --blue-100: hsl(@blue-h, 44%, 26%);
515
+ --blue-200: hsl(@blue-h, 46%, 30%);
516
+ --blue-300: hsl(@blue-h, 53%, 35%);
517
+ --blue-400: hsl(@blue-h + 3, 56%, 43%);
518
+ --blue-500: hsl(@blue-h, 64%, 51%);
519
+ --blue-600: hsl(@blue-h, 100%, 60%);
520
+ --blue-700: hsl(@blue-h, 90%, 74%);
521
+ --blue-800: hsl(@blue-h, 95%, 86%);
522
+ --blue-900: hsl(@blue-h, 91%, 91.5%);
428
523
 
429
524
  // 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;
525
+ --powder-050: hsl(@powder-h, 5%, 27%);
526
+ --powder-100: hsl(@powder-h, 14%, 28%);
527
+ --powder-200: hsl(@powder-h, 17.5%, 32%);
528
+ --powder-300: hsl(@powder-h, 19.5%, 37%);
529
+ --powder-400: hsl(@powder-h, 22.5%, 44%);
530
+ --powder-500: hsl(@powder-h, 29%, 54%);
531
+ --powder-600: hsl(@powder-h, 50%, 65.5%);
532
+ --powder-700: hsl(@powder-h, 46.5%, 73.5%);
533
+ --powder-800: hsl(@powder-h, 49.5%, 87%);
534
+ --powder-900: hsl(@powder-h, 100%, 95%);
440
535
 
441
536
  // 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;
537
+ --green-025: hsl(@green-h, 18%, 22%);
538
+ --green-050: hsl(@green-h, 18%, 25%);
539
+ --green-100: hsl(@green-h, 22.5%, 31%);
540
+ --green-200: hsl(@green-h, 23.5%, 37%);
541
+ --green-300: hsl(@green-h, 25%, 40.5%);
542
+ --green-400: hsl(@green-h, 27.5%, 48.5%);
543
+ --green-500: hsl(@green-h, 35%, 54.5%);
544
+ --green-600: hsl(@green-h, 40%, 61.5%);
545
+ --green-700: hsl(@green-h, 39.5%, 69.5%);
546
+ --green-800: hsl(@green-h, 39.5%, 78.5%);
547
+ --green-900: hsl(@green-h, 38%, 86.5%);
453
548
 
454
549
  // 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;
550
+ --yellow-050: hsl(@yellow-h, 13%, 24.5%);
551
+ --yellow-100: hsl(@yellow-h, 19%, 27%);
552
+ --yellow-200: hsl(@yellow-h, 30.5%, 31%);
553
+ --yellow-300: hsl(@yellow-h, 37%, 36%);
554
+ --yellow-400: hsl(@yellow-h, 45.5%, 42.5%);
555
+ --yellow-500: hsl(@yellow-h, 55.5%, 48%);
556
+ --yellow-600: hsl(@yellow-h, 67.5%, 55.5%);
557
+ --yellow-700: hsl(@yellow-h, 84.5%, 64%);
558
+ --yellow-800: hsl(@yellow-h, 90%, 72.5%);
559
+ --yellow-900: hsl(@yellow-h, 93%, 83.5%);
465
560
 
466
561
  // 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;
562
+ --red-050: hsl(@red-h + 3, 30%, 26.5%);
563
+ --red-100: hsl(@red-h + 3, 35%, 33%);
564
+ --red-200: hsl(@red-h + 3, 37%, 38.5%);
565
+ --red-300: hsl(@red-h + 3, 39%, 43.5%);
566
+ --red-400: hsl(@red-h + 3, 42%, 49%);
567
+ --red-500: hsl(@red-h + 3, 50%, 54%);
568
+ --red-600: hsl(@red-h + 3, 56.5%, 59.5%);
569
+ --red-700: hsl(@red-h + 3, 62.5%, 65.5%);
570
+ --red-800: hsl(@red-h + 3, 64%, 74%);
571
+ --red-900: hsl(@red-h + 3, 65.5%, 85.5%);
477
572
 
478
573
  // Gold
479
574
  --gold: @gold;
480
- --gold-lighter: #5e553c;
481
- --gold-darker: #f1b600;
575
+ --gold-lighter: hsl(@gold-h, 22%, 30%);
576
+ --gold-darker: @gold-darker;
482
577
 
483
578
  // Silver
484
579
  --silver: @silver;
485
- --silver-lighter: #424242;
486
- --silver-darker: #9a9c9f;
580
+ --silver-lighter: hsl(@silver-h, 0%, 26%);
581
+ --silver-darker: @silver-darker;
487
582
 
488
583
  // Bronze
489
584
  --bronze: @bronze;
490
- --bronze-lighter: #4d433b;
491
- --bronze-darker: #ab825f;
585
+ --bronze-lighter: hsl(@bronze-h, 13%, 27%);
586
+ --bronze-darker: @bronze-darker;
587
+
588
+ // Border colors
589
+ --bc-lightest: var(--black-025);
590
+ --bc-lighter: var(--black-050);
591
+ --bc-light: var(--black-075);
592
+ --bc-medium: var(--black-100);
593
+ --bc-dark: var(--black-150);
594
+ --bc-darker: var(--black-200);
492
595
 
493
596
  // Font colors
494
597
  --fc-dark: var(--black-900);
@@ -496,30 +599,30 @@
496
599
  --fc-light: var(--black-500);
497
600
 
498
601
  // 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
602
+ --focus-ring-success: hsla(@green-h, 40%, 75%, 40%);
603
+ --focus-ring-warning: hsla(@yellow-h, 79%, 58%, 40%);
604
+ --focus-ring-error: hsla(@red-h, 62%, 52%, 30%);
605
+ --focus-ring-muted: hsla(@black-h, @black-s, 100%, 10%);
503
606
 
504
607
  // 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);
608
+ --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);
609
+ --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);
610
+ --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
611
 
509
612
  // Scrollbars
510
- --scrollbar: rgba(255, 255, 255, 0.2);
613
+ --scrollbar: hsla(0, 0%, 100%, 0.2);
511
614
 
512
615
  // 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;
616
+ --highlight-bg: hsl(0, 2%, 11%);
617
+ --highlight-color: var(--black); // AAA 17.19
618
+ --highlight-comment: hsl(0, 0%, 60%); // AA 6.03
619
+ --highlight-punctuation: hsl(0, 0%, 80%); // AAA 10.70
620
+ --highlight-namespace: hsl(@orange-h, 85%, 61.5%); // Custom orange AAA 7.05
621
+ --highlight-attribute: hsl(@powder-h + 2, 41.5%, 67%); // Custom powder blue AAA 7.63
622
+ --highlight-literal: hsl(@orange-h, 85%, 61.5%); // Custom orange AAA 7.05
623
+ --highlight-symbol: hsl(306, 43%, 69%); // Custom purple AAA 7.23
624
+ --highlight-keyword: hsl(@powder-h + 3, 41.5%, 67%); // Custom powder blue AAA 7.63
625
+ --highlight-variable: hsl(65.5, 39%, 57.5%);
523
626
  --highlight-addition: var(--green-600); // AAA 8.21
524
627
  --highlight-deletion: var(--red-700); // AA 5.51
525
628
  }
@@ -574,14 +677,363 @@
574
677
  .theme-dark-rules() {
575
678
  .dark-colors();
576
679
 
577
- //.generate-themed-variables(theme-dark);
578
-
579
680
  &,
580
681
  & .themed {
581
682
  .generate-themed-variables(theme-dark);
582
683
  // 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
684
  .dark-themed-colors();
584
685
  }
686
+
687
+ & .themed {
688
+ &:extend(.component-colors);
689
+ }
690
+ }
691
+
692
+ // -- High contrast modes
693
+ .light-highcontrast() {
694
+ --white: hsl(0, 0%, 100%);
695
+ --black: hsl(0, 0%, 0%);
696
+
697
+ // Black
698
+ --black-025: hsl(@black-h, @black-s, 97.5%);
699
+ --black-050: hsl(@black-h, @black-s, 95%);
700
+ --black-075: hsl(@black-h, @black-s, 92.5%);
701
+ --black-100: hsl(@black-h, @black-s, 90%);
702
+ --black-150: hsl(@black-h, @black-s, 87.5%);
703
+ --black-200: hsl(@black-h, @black-s, 85%);
704
+ --black-300: hsl(@black-h, @black-s, 35%);
705
+ --black-350: hsl(@black-h, @black-s, 32.5%);
706
+ --black-400: hsl(@black-h, @black-s, 30%);
707
+ --black-500: hsl(@black-h, @black-s, 25%);
708
+ --black-600: hsl(@black-h, @black-s, 20%);
709
+ --black-700: hsl(@black-h, @black-s, 15%);
710
+ --black-750: hsl(@black-h, @black-s, 10%);
711
+ --black-800: hsl(@black-h, @black-s, 5%);
712
+ --black-900: hsl(@black-h, @black-s, 0%);
713
+
714
+ // Orange
715
+ --orange-050: hsl(@orange-h, 100%, 97.5%);
716
+ --orange-100: hsl(@orange-h, 100%, 94%);
717
+ --orange-200: hsl(@orange-h, 100%, 88%);
718
+ --orange-300: hsl(@orange-h, 100%, 82%);
719
+ --orange-400: hsl(@orange-h, 100%, 34%);
720
+ --orange-500: hsl(@orange-h, 100%, 29%);
721
+ --orange-600: hsl(@orange-h, 100%, 24%);
722
+ --orange-700: hsl(@orange-h, 100%, 19%);
723
+ --orange-800: hsl(@orange-h, 100%, 13%);
724
+ --orange-900: hsl(@orange-h, 100%, 8%);
725
+
726
+ // Blue
727
+ --blue-050: hsl(@blue-h, 100%, 97.5%);
728
+ --blue-100: hsl(@blue-h, 100%, 95%);
729
+ --blue-200: hsl(@blue-h, 100%, 90%);
730
+ --blue-300: hsl(@blue-h, 100%, 85%);
731
+ --blue-400: hsl(@blue-h, 100%, 25%);
732
+ --blue-500: hsl(@blue-h, 100%, 20%);
733
+ --blue-600: hsl(@blue-h, 100%, 15%);
734
+ --blue-700: hsl(@blue-h, 100%, 10%);
735
+ --blue-800: hsl(@blue-h, 100%, 7.5%);
736
+ --blue-900: hsl(@blue-h, 100%, 5%);
737
+
738
+ // Powder
739
+ --powder-050: hsl(@powder-h, 100%, 97.5%);
740
+ --powder-100: hsl(@powder-h, 85%, 96%);
741
+ --powder-200: hsl(@powder-h, 75%, 92%);
742
+ --powder-300: hsl(@powder-h, 70%, 88%);
743
+ --powder-400: hsl(@powder-h, 55%, 28%);
744
+ --powder-500: hsl(@powder-h, 60%, 24%);
745
+ --powder-600: hsl(@powder-h, 70%, 20%);
746
+ --powder-700: hsl(@powder-h, 75%, 16%);
747
+ --powder-800: hsl(@powder-h, 75%, 12%);
748
+ --powder-900: hsl(@powder-h, 75%, 8%);
749
+
750
+ // Green
751
+ --green-025: hsl(@green-h, 100%, 97%);
752
+ --green-050: hsl(@green-h, 100%, 96%);
753
+ --green-100: hsl(@green-h, 100%, 94%);
754
+ --green-200: hsl(@green-h, 100%, 88%);
755
+ --green-300: hsl(@green-h, 100%, 82%);
756
+ --green-400: hsl(@green-h, 100%, 18%);
757
+ --green-500: hsl(@green-h, 100%, 15%);
758
+ --green-600: hsl(@green-h, 100%, 12%);
759
+ --green-700: hsl(@green-h, 100%, 9%);
760
+ --green-800: hsl(@green-h, 100%, 6%);
761
+ --green-900: hsl(@green-h, 100%, 3%);
762
+
763
+ // Yellow
764
+ --yellow-050: hsl(@yellow-h, 100%, 95%);
765
+ --yellow-100: hsl(@yellow-h, 100%, 92%);
766
+ --yellow-200: hsl(@yellow-h, 95%, 85%);
767
+ --yellow-300: hsl(@yellow-h, 95%, 78%);
768
+ --yellow-400: hsl(@yellow-h, 100%, 28%);
769
+ --yellow-500: hsl(@yellow-h, 100%, 26%);
770
+ --yellow-600: hsl(@yellow-h, 100%, 23%);
771
+ --yellow-700: hsl(@yellow-h, 100%, 19%);
772
+ --yellow-800: hsl(@yellow-h, 100%, 13%);
773
+ --yellow-900: hsl(@yellow-h, 100%, 7%);
774
+
775
+ // Red
776
+ --red-050: hsl(@red-h, 100%, 97.5%);
777
+ --red-100: hsl(@red-h, 100%, 95%);
778
+ --red-200: hsl(@red-h, 100%, 90%);
779
+ --red-300: hsl(@red-h, 100%, 85%);
780
+ --red-400: hsl(@red-h, 100%, 35%);
781
+ --red-500: hsl(@red-h, 100%, 29%);
782
+ --red-600: hsl(@red-h, 100%, 23%);
783
+ --red-700: hsl(@red-h, 100%, 17%);
784
+ --red-800: hsl(@red-h, 100%, 11%);
785
+ --red-900: hsl(@red-h, 100%, 7%);
786
+
787
+ // Gold
788
+ --gold: hsl(@gold-h, 100%, 50%);
789
+ --gold-lighter: hsl(@gold-h, 100%, 91%);
790
+ --gold-darker: hsl(@gold-h - 3, 100%, 20%);
791
+
792
+ // Silver
793
+ --silver: hsl(@silver-h, 6%, 72%);
794
+ --silver-lighter: hsl(@silver-h, 6%, 91%);
795
+ --silver-darker: hsl(@silver-h, 6%, 30%);
796
+
797
+ // Bronze
798
+ --bronze: hsl(@bronze-h, 38%, 65%);
799
+ --bronze-lighter: hsl(@bronze-h, 40%, 92%);
800
+ --bronze-darker: hsl(@bronze-h, 31%, 25%);
801
+
802
+ // Border colors
803
+ --bc-lightest: var(--black-400);
804
+ --bc-lighter: var(--black-400);
805
+ --bc-light: var(--black-400);
806
+ --bc-medium: var(--black-400);
807
+ --bc-dark: var(--black-700);
808
+ --bc-darker: var(--black-900);
809
+
810
+ // Font colors
811
+ --fc-dark: var(--black-900);
812
+ --fc-medium: var(--black-700);
813
+ --fc-light: var(--black-500);
814
+
815
+ // Focus rings
816
+ --focus-ring: fade(@blue-600, 90%);
817
+ --focus-ring-success: fade(@green-600, 90%);
818
+ --focus-ring-warning: fade(@yellow-600, 90%);
819
+ --focus-ring-error: fade(@red-600, 90%);
820
+ --focus-ring-muted: fade(@black-400, 95%);
821
+
822
+ // Shadows
823
+ --bs-sm: none;
824
+ --bs-md: none;
825
+ --bs-lg: none;
826
+
827
+ // Scrollbars
828
+ --scrollbar: var(--black);
829
+
830
+ // Syntax highlighting
831
+ --highlight-bg: hsl(0, 0%, 96.5%); // Between black-025 and black-050
832
+ --highlight-color: var(--black-750);
833
+ --highlight-comment: hsl(213, 7%, 33%); // Custom black
834
+ --highlight-punctuation: var(--black-600);
835
+ --highlight-namespace: hsl(16, 94%, 31%); // Custom orange
836
+ --highlight-attribute: hsl(215, 100%, 35%); // Custom blue
837
+ --highlight-literal: hsl(16, 94%, 31%); // Custom orange
838
+ --highlight-symbol: hsl(309, 45%, 31%); // Custom purple
839
+ --highlight-keyword: hsl(215, 100%, 35%); // Custom blue
840
+ --highlight-variable: hsl(88, 100%, 19%); // Custom green
841
+ --highlight-addition: var(--green-500);
842
+ --highlight-deletion: var(--red-500);
843
+
844
+ // High contrast theme override
845
+ &:extend(.highcontrast-themed-colors);
846
+ }
847
+
848
+ .dark-highcontrast() {
849
+ --white: hsl(0, 0%, 0%);
850
+ --black: hsl(0, 0%, 100%);
851
+
852
+ // Black
853
+ --black-025: hsl(@black-h, @black-s, 2.5%);
854
+ --black-050: hsl(@black-h, @black-s, 5%);
855
+ --black-075: hsl(@black-h, @black-s, 7.5%);
856
+ --black-100: hsl(@black-h, @black-s, 10%);
857
+ --black-150: hsl(@black-h, @black-s, 12.5%);
858
+ --black-200: hsl(@black-h, @black-s, 15%);
859
+ --black-300: hsl(@black-h, @black-s, 65%);
860
+ --black-350: hsl(@black-h, @black-s, 67.5%);
861
+ --black-400: hsl(@black-h, @black-s, 70%);
862
+ --black-500: hsl(@black-h, @black-s, 75%);
863
+ --black-600: hsl(@black-h, @black-s, 80%);
864
+ --black-700: hsl(@black-h, @black-s, 85%);
865
+ --black-750: hsl(@black-h, @black-s, 90%);
866
+ --black-800: hsl(@black-h, @black-s, 95%);
867
+ --black-900: hsl(@black-h, @black-s, 100%);
868
+
869
+ // Orange
870
+ --orange-050: hsl(@orange-h, 100%, 4%);
871
+ --orange-100: hsl(@orange-h, 100%, 8%);
872
+ --orange-200: hsl(@orange-h, 100%, 16%);
873
+ --orange-300: hsl(@orange-h, 100%, 24%);
874
+ --orange-400: hsl(@orange-h, 100%, 64%);
875
+ --orange-500: hsl(@orange-h, 100%, 71%);
876
+ --orange-600: hsl(@orange-h, 100%, 77%);
877
+ --orange-700: hsl(@orange-h, 100%, 82%);
878
+ --orange-800: hsl(@orange-h, 100%, 87%);
879
+ --orange-900: hsl(@orange-h, 100%, 91%);
880
+
881
+ // Blue
882
+ --blue-050: hsl(@blue-h, 100%, 4%);
883
+ --blue-100: hsl(@blue-h, 100%, 11%);
884
+ --blue-200: hsl(@blue-h, 100%, 18%);
885
+ --blue-300: hsl(@blue-h, 100%, 25%);
886
+ --blue-400: hsl(@blue-h, 100%, 75%);
887
+ --blue-500: hsl(@blue-h, 100%, 80%);
888
+ --blue-600: hsl(@blue-h, 100%, 85%);
889
+ --blue-700: hsl(@blue-h, 100%, 90%);
890
+ --blue-800: hsl(@blue-h, 100%, 92.5%);
891
+ --blue-900: hsl(@blue-h, 100%, 95%);
892
+
893
+ // Powder
894
+ --powder-050: hsl(@powder-h, 100%, 6%);
895
+ --powder-100: hsl(@powder-h, 90%, 8%);
896
+ --powder-200: hsl(@powder-h, 80%, 14%);
897
+ --powder-300: hsl(@powder-h, 60%, 20%);
898
+ --powder-400: hsl(@powder-h, 55%, 72%);
899
+ --powder-500: hsl(@powder-h, 60%, 76%);
900
+ --powder-600: hsl(@powder-h, 70%, 80%);
901
+ --powder-700: hsl(@powder-h, 75%, 84%);
902
+ --powder-800: hsl(@powder-h, 75%, 88%);
903
+ --powder-900: hsl(@powder-h, 75%, 92%);
904
+
905
+ // Green
906
+ --green-025: hsl(@green-h, 100%, 3%);
907
+ --green-050: hsl(@green-h, 100%, 4%);
908
+ --green-100: hsl(@green-h, 100%, 6%);
909
+ --green-200: hsl(@green-h, 100%, 12%);
910
+ --green-300: hsl(@green-h, 100%, 18%);
911
+ --green-400: hsl(@green-h, 100%, 65%);
912
+ --green-500: hsl(@green-h, 100%, 71%);
913
+ --green-600: hsl(@green-h, 100%, 77%);
914
+ --green-700: hsl(@green-h, 100%, 83%);
915
+ --green-800: hsl(@green-h, 100%, 89%);
916
+ --green-900: hsl(@green-h, 100%, 94%);
917
+
918
+ // Yellow
919
+ --yellow-050: hsl(@yellow-h, 100%, 4%);
920
+ --yellow-100: hsl(@yellow-h, 100%, 8%);
921
+ --yellow-200: hsl(@yellow-h, 95%, 16%);
922
+ --yellow-300: hsl(@yellow-h, 95%, 24%);
923
+ --yellow-400: hsl(@yellow-h, 100%, 55%);
924
+ --yellow-500: hsl(@yellow-h, 100%, 63%);
925
+ --yellow-600: hsl(@yellow-h, 100%, 71%);
926
+ --yellow-700: hsl(@yellow-h, 100%, 79%);
927
+ --yellow-800: hsl(@yellow-h, 100%, 87%);
928
+ --yellow-900: hsl(@yellow-h, 100%, 95%);
929
+
930
+ // Red
931
+ --red-050: hsl(@red-h, 100%, 4%);
932
+ --red-100: hsl(@red-h, 100%, 8%);
933
+ --red-200: hsl(@red-h, 100%, 16%);
934
+ --red-300: hsl(@red-h, 100%, 24%);
935
+ --red-400: hsl(@red-h, 100%, 70%);
936
+ --red-500: hsl(@red-h, 100%, 75%);
937
+ --red-600: hsl(@red-h, 100%, 80%);
938
+ --red-700: hsl(@red-h, 100%, 85%);
939
+ --red-800: hsl(@red-h, 100%, 90%);
940
+ --red-900: hsl(@red-h, 100%, 95%);
941
+
942
+ // Gold
943
+ --gold: hsl(@gold-h, 100%, 50%);
944
+ --gold-lighter: hsl(@gold-h - 3, 100%, 9%);
945
+ --gold-darker: hsl(@gold-h - 3, 100%, 80%);
946
+
947
+ // Silver
948
+ --silver: hsl(@silver-h, 6%, 72%);
949
+ --silver-lighter: hsl(@silver-h, 5%, 9%);
950
+ --silver-darker: hsl(@silver-h, 5%, 70%);
951
+
952
+ // Bronze
953
+ --bronze: hsl(@bronze-h, 38%, 65%);
954
+ --bronze-lighter: hsl(@bronze-h, 40%, 8%);
955
+ --bronze-darker: hsl(@bronze-h, 46.7%, 75%);
956
+
957
+ // Border colors
958
+ --bc-lightest: var(--black-400);
959
+ --bc-lighter: var(--black-400);
960
+ --bc-light: var(--black-400);
961
+ --bc-medium: var(--black-400);
962
+ --bc-dark: var(--black-700);
963
+ --bc-darker: var(--black-900);
964
+
965
+ // Focus rings
966
+ --focus-ring: fade(@blue-600, 90%);
967
+ --focus-ring-success: fade(@green-600, 90%);
968
+ --focus-ring-warning: fade(@yellow-600, 90%);
969
+ --focus-ring-error: fade(@red-600, 90%);
970
+ --focus-ring-muted: fade(@black-400, 95%);
971
+
972
+ // Font colors
973
+ --fc-dark: var(--black-900);
974
+ --fc-medium: var(--black-700);
975
+ --fc-light: var(--black-500);
976
+
977
+ // Shadows
978
+ --bs-sm: none;
979
+ --bs-md: none;
980
+ --bs-lg: none;
981
+
982
+ // Scrollbars
983
+ --scrollbar: var(--black);
984
+
985
+ // Syntax highlighting
986
+ --highlight-bg: hsl(0, 0%, 10%);
987
+ --highlight-color: hsl(0, 0%, 100%);
988
+ --highlight-comment: hsl(0, 0%, 99%); // Custom gray
989
+ --highlight-punctuation: hsl(0, 0%, 99%); // Custom gray
990
+ --highlight-namespace: hsl(36, 96%, 71%); // Custom orange
991
+ --highlight-attribute: hsl(200, 57%, 85%); // Custom blue
992
+ --highlight-literal: hsl(36, 96%, 71%); // Custom orange
993
+ --highlight-symbol: hsl(304, 39%, 85%); // Custom purple
994
+ --highlight-keyword: hsl(200, 57%, 85%); // Custom blue
995
+ --highlight-variable: hsl(62, 71%, 81%); // Custom green
996
+ --highlight-addition: var(--green-600);
997
+ --highlight-deletion: var(--red-700);
998
+
999
+ // High contrast theme override
1000
+ &:extend(.highcontrast-themed-colors);
1001
+ }
1002
+
1003
+ .highcontrast-themed-colors {
1004
+ // Primary Theming
1005
+ --theme-primary-color: var(--orange-400);
1006
+ --theme-primary-025: var(--orange-050);
1007
+ --theme-primary-050: var(--orange-050);
1008
+ --theme-primary-075: var(--orange-050);
1009
+ --theme-primary-100: var(--orange-100);
1010
+ --theme-primary-150: var(--orange-100);
1011
+ --theme-primary-200: var(--orange-200);
1012
+ --theme-primary-300: var(--orange-300);
1013
+ --theme-primary-350: var(--orange-300);
1014
+ --theme-primary-400: var(--orange-400);
1015
+ --theme-primary-500: var(--orange-500);
1016
+ --theme-primary-600: var(--orange-600);
1017
+ --theme-primary-700: var(--orange-700);
1018
+ --theme-primary-800: var(--orange-800);
1019
+ --theme-primary-900: var(--orange-900);
1020
+
1021
+ // Secondary Theming
1022
+ --theme-secondary-color: var(--blue-400);
1023
+ --theme-secondary-025: var(--blue-050);
1024
+ --theme-secondary-050: var(--blue-050);
1025
+ --theme-secondary-075: var(--blue-050);
1026
+ --theme-secondary-100: var(--blue-100);
1027
+ --theme-secondary-150: var(--blue-100);
1028
+ --theme-secondary-200: var(--blue-200);
1029
+ --theme-secondary-300: var(--blue-300);
1030
+ --theme-secondary-350: var(--blue-300);
1031
+ --theme-secondary-400: var(--blue-400);
1032
+ --theme-secondary-500: var(--blue-500);
1033
+ --theme-secondary-600: var(--blue-600);
1034
+ --theme-secondary-700: var(--blue-700);
1035
+ --theme-secondary-800: var(--blue-800);
1036
+ --theme-secondary-900: var(--blue-900);
585
1037
  }
586
1038
 
587
1039
  :root {
@@ -593,6 +1045,12 @@
593
1045
  .generate-calculated-themed-variables(@defaultSecondaryColor, secondary);
594
1046
  }
595
1047
 
1048
+ // place component-colors on the body directly (instead of :root) so consumers can use the --theme-* variables
1049
+ body {
1050
+ &:extend(.component-colors);
1051
+ }
1052
+
1053
+ // Light mode
596
1054
  body:not(.theme-dark),
597
1055
  body.theme-dark .theme-light__forced,
598
1056
  body.theme-system .theme-light__forced {
@@ -604,15 +1062,37 @@ body.theme-system .theme-light__forced {
604
1062
  // 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
1063
  .light-themed-colors();
606
1064
  }
1065
+
1066
+ & .themed {
1067
+ &:extend(.component-colors);
1068
+ }
607
1069
  }
608
1070
 
1071
+ // Dark mode
609
1072
  body.theme-dark,
610
1073
  body:not(.theme-dark) .theme-dark__forced {
611
1074
  .theme-dark-rules();
612
1075
  }
613
-
614
1076
  body.theme-system {
615
1077
  @media (prefers-color-scheme: dark) {
616
1078
  .theme-dark-rules();
617
1079
  }
618
1080
  }
1081
+
1082
+ // High contrast mode (Light)
1083
+ body.theme-highcontrast:not(.theme-dark),
1084
+ body.theme-dark.theme-highcontrast .theme-light__forced,
1085
+ body.theme-system.theme-highcontrast .theme-light__forced {
1086
+ .light-highcontrast();
1087
+ }
1088
+
1089
+ // High contrast mode (Dark)
1090
+ body.theme-dark.theme-highcontrast,
1091
+ body.theme-highcontrast:not(.theme-dark) .theme-dark__forced {
1092
+ .dark-highcontrast();
1093
+ }
1094
+ body.theme-system.theme-highcontrast {
1095
+ @media (prefers-color-scheme: dark) {
1096
+ .dark-highcontrast();
1097
+ }
1098
+ }