@stackoverflow/stacks 3.0.0-beta.22 → 3.0.0-beta.24

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 (72) hide show
  1. package/dist/css/stacks.css +16809 -17138
  2. package/dist/css/stacks.min.css +1 -1
  3. package/lib/atomic/backgrounds.less +67 -0
  4. package/lib/atomic/border-radius.less +38 -0
  5. package/lib/atomic/borders.less +73 -0
  6. package/lib/atomic/box-shadow.less +29 -0
  7. package/lib/atomic/box-sizing.less +3 -0
  8. package/lib/atomic/current-color.less +2 -0
  9. package/lib/atomic/cursors.less +8 -0
  10. package/lib/atomic/display.less +15 -0
  11. package/lib/atomic/floats.less +20 -0
  12. package/lib/atomic/gap.less +2 -0
  13. package/lib/atomic/grid.less +2 -0
  14. package/lib/atomic/interactivity.less +45 -0
  15. package/lib/atomic/lists.less +29 -0
  16. package/lib/atomic/{spacing.less → margin.less} +0 -10
  17. package/lib/atomic/object-fit.less +9 -0
  18. package/lib/atomic/opacity.less +54 -0
  19. package/lib/atomic/outline.less +11 -0
  20. package/lib/atomic/overflow.less +17 -0
  21. package/lib/atomic/padding.less +12 -0
  22. package/lib/atomic/positioning.less +7 -0
  23. package/lib/atomic/sizing.less +3 -28
  24. package/lib/atomic/transitions.less +20 -0
  25. package/lib/atomic/truncation.less +58 -0
  26. package/lib/atomic/typography.less +19 -124
  27. package/lib/atomic/vertical-alignment.less +9 -0
  28. package/lib/atomic/visibility.less +18 -0
  29. package/lib/atomic/z-index.less +12 -0
  30. package/lib/base/reset-normalize.less +2 -2
  31. package/lib/components/activity-indicator/activity-indicator.less +3 -3
  32. package/lib/components/anchor/anchor.less +28 -39
  33. package/lib/components/avatar/avatar.less +17 -16
  34. package/lib/components/badge/badge.less +14 -4
  35. package/lib/components/banner/banner.less +1 -1
  36. package/lib/components/button/button.less +78 -17
  37. package/lib/components/button-group/button-group.less +2 -2
  38. package/lib/components/card/card.less +1 -1
  39. package/lib/components/checkbox_radio/checkbox_radio.less +3 -3
  40. package/lib/components/code-block/code-block.less +1 -2
  41. package/lib/components/description/description.less +2 -1
  42. package/lib/components/form-group/form-group.less +14 -1
  43. package/lib/components/input-fill/input-fill.less +3 -3
  44. package/lib/components/input-icon/input-icon.less +2 -2
  45. package/lib/components/input-message/input-message.less +1 -0
  46. package/lib/components/input_textarea/input_textarea.less +2 -2
  47. package/lib/components/label/label.less +12 -56
  48. package/lib/components/link/link.less +44 -98
  49. package/lib/components/link-preview/link-preview.less +5 -13
  50. package/lib/components/menu/menu.less +9 -1
  51. package/lib/components/navigation/navigation.less +7 -1
  52. package/lib/components/notice/notice.less +1 -1
  53. package/lib/components/page-title/page-title.less +1 -1
  54. package/lib/components/pagination/pagination.less +11 -4
  55. package/lib/components/popover/popover.less +2 -2
  56. package/lib/components/post-summary/post-summary.less +223 -385
  57. package/lib/components/progress-bar/progress-bar.less +17 -17
  58. package/lib/components/prose/prose.less +35 -9
  59. package/lib/components/select/select.less +26 -10
  60. package/lib/components/table/table.less +48 -14
  61. package/lib/components/tag/tag.less +15 -5
  62. package/lib/components/toggle-switch/toggle-switch.less +2 -2
  63. package/lib/components/topbar/topbar.less +13 -13
  64. package/lib/components/uploader/uploader.less +5 -5
  65. package/lib/components/user-card/user-card.less +14 -3
  66. package/lib/exports/constants-helpers.less +6 -6
  67. package/lib/exports/mixins.less +27 -278
  68. package/lib/stacks-static.less +41 -20
  69. package/package.json +1 -1
  70. package/lib/atomic/border.less +0 -121
  71. package/lib/atomic/misc.less +0 -380
  72. package/lib/components/block-link/block-link.less +0 -82
@@ -1,5 +1,5 @@
1
1
  .s-btn {
2
- --_bu-baw: var(--su-static1);
2
+ --_bu-baw: var(--su1);
3
3
  --_bu-br: var(--br-pill);
4
4
  --_bu-fs: var(--fs-body1);
5
5
  --_bu-lh: var(--lh-base);
@@ -9,21 +9,25 @@
9
9
  --_bu-badge-fs: var(--fs-caption);
10
10
  --_bu-badge-px: var(--su6);
11
11
  --_bu-badge-py: var(--su2);
12
- --_bu-dropdown-bw: var(--su-static4);
12
+ --_bu-dropdown-bw: var(--su4);
13
13
 
14
14
  // VARIANTS
15
15
  // Base
16
16
  &:not(&__danger):not(&__featured):not(&__tonal):not(&__link):not(&__unset):not(&__facebook):not(&__github):not(&__google) { // Exclude default styles from impacting these variants
17
17
  --_bu-bg: var(--theme-button-color, var(--theme-secondary));
18
- --_bu-bg-disabled: var(--black-350);
18
+ --_bu-bg-disabled: var(--theme-secondary-300);
19
19
  --_bu-bg-hover: var(--theme-button-hover-background-color, var(--theme-secondary-500));
20
20
  --_bu-fc: var(--white);
21
- --_bu-fc-disabled: var(--black-050);
21
+ --_bu-fc-disabled: var(--theme-secondary-100);
22
22
  --_bu-fc-hover: var(--theme-button-hover-color, var(--white));
23
23
  --_bu-badge-bg: var(--theme-secondary-500);
24
24
  --_bu-badge-fc: var(--white);
25
- --_bu-badge-bg-disabled: var(--black-250);
26
- --_bu-badge-fc-disabled: var(--black-050);
25
+ --_bu-badge-bg-disabled: var(--theme-secondary-300);
26
+ --_bu-badge-fc-disabled: var(--theme-secondary-100);
27
+
28
+ .highcontrast-mode({
29
+ --_bu-bg-disabled: var(--theme-secondary-300);
30
+ });
27
31
 
28
32
  &.s-btn__clear {
29
33
  --_bu-bg: transparent;
@@ -35,11 +39,15 @@
35
39
  --_bu-fc-hover: var(--_bu-fc);
36
40
  --_bu-badge-bg: var(--theme-secondary-100);
37
41
  --_bu-badge-fc: var(--theme-secondary-500);
38
- --_bu-badge-bg-disabled: var(--black-100);
39
- --_bu-badge-fc-disabled: var(--black-350);
42
+ --_bu-badge-bg-disabled: var(--theme-secondary-100);
43
+ --_bu-badge-fc-disabled: var(--theme-secondary-300);
40
44
 
41
45
  .highcontrast-mode({
42
- --_bu-bc: var(--theme-secondary-600);
46
+ --_bu-bc: var(--theme-secondary-400);
47
+ --_bu-bc-disabled: var(--theme-secondary-300);
48
+ --_bu-bg-disabled: var(--white);
49
+ --_bu-badge-bg-disabled: var(--theme-secondary-100);
50
+ --_bu-badge-fc-disabled: var(--theme-secondary-300);
43
51
  });
44
52
  }
45
53
  }
@@ -57,6 +65,25 @@
57
65
  --_bu-badge-bg-disabled: var(--red-300);
58
66
  --_bu-badge-fc-disabled: var(--black-100);
59
67
 
68
+ .dark-mode({
69
+ --_bu-bg-disabled: var(--red-300);
70
+ --_bu-badge-fc-disabled: var(--black-050);
71
+ --_bu-badge-bg-disabled: var(--red-400);
72
+ });
73
+
74
+ .highcontrast-mode({
75
+ --_bu-fc-disabled: var(--black-300);
76
+ --_bu-badge-bg-disabled: var(--red-100);
77
+ --_bu-badge-fc-disabled: var(--black-300);
78
+ });
79
+
80
+ .highcontrast-dark-mode({
81
+ --_bu-bg-disabled: var(--red-300);
82
+ --_bu-fc-disabled: var(--black-050);
83
+ --_bu-badge-fc-disabled: var(--black-050);
84
+ --_bu-badge-bg-disabled: var(--red-400);
85
+ });
86
+
60
87
  &.s-btn__clear {
61
88
  --_bu-bg: transparent;
62
89
  --_bu-bg-disabled: var(--_bu-bg);
@@ -71,9 +98,23 @@
71
98
  --_bu-badge-bg-disabled: var(--red-100);
72
99
  --_bu-badge-fc-disabled: var(--red-300);
73
100
 
101
+ .dark-mode({
102
+ --_bu-bg-disabled: var(--_bu-bg);
103
+ --_bu-fc-disabled: var(--red-300);
104
+ --_bu-badge-bg-disabled: var(--red-100);
105
+ --_bu-badge-fc-disabled: var(--red-400);
106
+ });
107
+
74
108
  .highcontrast-mode({
75
109
  --_bu-bc: var(--red-600);
76
- --_bu-bc-disabled: var(--red-300);
110
+ --_bu-bc-disabled: var(--black-300);
111
+ });
112
+
113
+ .highcontrast-dark-mode({
114
+ --_bu-bg-disabled: var(--black-050);
115
+ --_bu-fc-disabled: var(--red-300);
116
+ --_bu-badge-bg-disabled: var(--red-100);
117
+ --_bu-badge-fc-disabled: var(--red-300);
77
118
  });
78
119
  }
79
120
  }
@@ -89,6 +130,25 @@
89
130
  --_bu-badge-fc: var(--black-050);
90
131
  --_bu-badge-bg-disabled: var(--purple-300);
91
132
  --_bu-badge-fc-disabled: var(--black-100);
133
+
134
+ .dark-mode({
135
+ --_bu-bg-disabled: var(--purple-100);
136
+ --_bu-fc-disabled: var(--purple-400);
137
+ --_bu-badge-fc-disabled: var(--purple-400);
138
+ --_bu-badge-bg-disabled: var(--purple-200);
139
+ });
140
+
141
+ .highcontrast-mode({
142
+ --_bu-fc-disabled: var(--black-300);
143
+ --_bu-badge-fc-disabled: var(--black-300);
144
+ --_bu-badge-bg-disabled: var(--purple-200);
145
+ });
146
+
147
+ .highcontrast-dark-mode({
148
+ --_bu-fc-disabled: var(--purple-400);
149
+ --_bu-badge-bg-disabled: var(--purple-200);
150
+ --_bu-badge-fc-disabled: var(--purple-400);
151
+ });
92
152
  }
93
153
 
94
154
  &&__tonal {
@@ -102,10 +162,11 @@
102
162
  --_bu-badge-bg: var(--black-200);
103
163
  --_bu-badge-fc: var(--black-600);
104
164
  --_bu-badge-bg-disabled: var(--black-100);
105
- --_bu-badge-fc-disabled: var(--black-350);
165
+ --_bu-badge-fc-disabled: var(--black-300);
106
166
 
107
167
  .highcontrast-mode({
108
- --_bu-bc: var(--black-300);
168
+ --_bu-bc: var(--black-400);
169
+ --_bu-bc-disabled: var(--black-300);
109
170
  });
110
171
  }
111
172
 
@@ -255,14 +316,14 @@
255
316
  border: 0;
256
317
  clip-path: inset(50%);
257
318
  /* stylelint-disable-next-line property-no-deprecated -- clip is kept for older browser compatibility alongside clip-path */
258
- clip: rect(var(--su-static1), var(--su-static1), var(--su-static1), var(--su-static1)); // rect(1px, 1px, 1px, 1px)
259
- height: var(--su-static1);
319
+ clip: rect(var(--su1), var(--su1), var(--su1), var(--su1)); // rect(1px, 1px, 1px, 1px)
320
+ height: var(--su1);
260
321
  margin: var(--sun1);
261
322
  overflow-wrap: normal;
262
323
  overflow: hidden;
263
324
  padding: 0;
264
325
  position: absolute;
265
- width: var(--su-static1);
326
+ width: var(--su1);
266
327
  }
267
328
 
268
329
  // Sizes
@@ -272,7 +333,7 @@
272
333
  --_bu-px: var(--su12);
273
334
  --_bu-badge-fs: var(--fs-fine);
274
335
  --_bu-badge-py: var(--su1);
275
- --_bu-badge-px: calc(var(--su2) + var(--su1)); // 3px
336
+ --_bu-badge-px: var(--su3);
276
337
  }
277
338
  &&__xs {
278
339
  --_bu-g: var(--su4);
@@ -288,7 +349,7 @@
288
349
  --_bu-fs: var(--fs-body2);
289
350
  --_bu-px: var(--su24);
290
351
  --_bu-py: calc(var(--su12) + var(--su1)); // 13px
291
- --_bu-badge-py: calc(var(--su2) + var(--su1)); // 3px
352
+ --_bu-badge-py: var(--su3); // 3px
292
353
  }
293
354
 
294
355
  // INTERACTION
@@ -74,9 +74,9 @@
74
74
  }
75
75
 
76
76
  // STATIC COMPONENT STYLES
77
- border: var(--su-static1) solid var(--black-300);
77
+ border: var(--su1) solid var(--black-300);
78
78
  border-radius: var(--br-md);
79
79
  display: inline-flex;
80
80
  flex-wrap: wrap;
81
- padding: calc(var(--su-static4) - var(--su-static1));
81
+ padding: var(--su3);
82
82
  }
@@ -29,7 +29,7 @@
29
29
  margin-bottom: 0;
30
30
  }
31
31
 
32
- border: var(--su-static1) solid var(--_ca-bc);
32
+ border: var(--su1) solid var(--_ca-bc);
33
33
 
34
34
  background-color: var(--white);
35
35
  border-radius: var(--br-md);
@@ -8,13 +8,13 @@
8
8
  --_ch-gap: var(--su8);
9
9
 
10
10
  // inputs
11
- --_ch-input-baw: var(--su-static1);
11
+ --_ch-input-baw: var(--su1);
12
12
  --_ch-input-bc: var(--black-350);
13
13
  --_ch-input-bg: var(--white);
14
14
  --_ch-input-bg-image: unset;
15
- --_ch-input-br: var(--su-static1);
15
+ --_ch-input-br: var(--su1);
16
16
  --_ch-input-cursor: pointer;
17
- --_ch-input-h: calc(var(--su-static12) + var(--su-static2)); // 14px
17
+ --_ch-input-h: calc(var(--su12) + var(--su2)); // 14px
18
18
 
19
19
  @media (forced-colors: active) { // This is for Windows High Contrast Mode
20
20
  &:checked,
@@ -92,7 +92,7 @@
92
92
 
93
93
  border-color: var(--bc-medium);
94
94
  border-style: solid;
95
- border-width: 0 var(--su-static1) 0 0;
95
+ border-width: 0 var(--su1) 0 0;
96
96
  color: var(--black-350);
97
97
  float: left;
98
98
  margin: var(--sun12);
@@ -104,7 +104,6 @@
104
104
 
105
105
  @scrollbar-styles();
106
106
  background-color: var(--highlight-bg);
107
- border-radius: var(--br-md);
108
107
  color: var(--highlight-color);
109
108
  font-family: var(--ff-mono);
110
109
  font-size: var(--fs-body1);
@@ -18,6 +18,7 @@
18
18
  }
19
19
 
20
20
  color: var(--_de-fc);
21
- font-size: var(--fs-caption);
21
+ font-size: var(--fs-body1);
22
+ margin-bottom: 0;
22
23
  padding: 0 var(--su2); // Helps the label visually line up with inputs
23
24
  }
@@ -7,6 +7,14 @@
7
7
  --_fg-gap: 0;
8
8
  }
9
9
 
10
+ &:has(.s-input__sm, .s-textarea__sm, .s-select__sm) {
11
+ --_fg-gap: var(--su6);
12
+ }
13
+
14
+ &:has(.s-input__lg, .s-textarea__lg, .s-select__lg) {
15
+ --_fg-gap: calc(var(--su8) + var(--su2));
16
+ }
17
+
10
18
  // MODIFIERS
11
19
  &&__horizontal {
12
20
  --_fg-fd: row;
@@ -16,7 +24,12 @@
16
24
  legend.s-label {
17
25
  margin-bottom: var(--su8);
18
26
  }
19
-
27
+
28
+ &:has(.s-input, .s-textarea, .s-select) {
29
+ .s-label + .s-description {
30
+ margin-top: var(--sun4);
31
+ }
32
+ }
20
33
 
21
34
  flex-direction: var(--_fg-fd);
22
35
 
@@ -12,17 +12,17 @@
12
12
  }
13
13
 
14
14
  &.order-first {
15
- --_if-blw: var(--su-static1);
15
+ --_if-blw: var(--su1);
16
16
  --_if-blr: var(--br-md);
17
17
  }
18
18
 
19
19
  &.order-last {
20
- --_if-brw: var(--su-static1);
20
+ --_if-brw: var(--su1);
21
21
  --_if-brr: var(--br-md);
22
22
  }
23
23
 
24
24
  background-color: var(--_if-bg);
25
- border: var(--su-static1) solid var(--_if-bc);
25
+ border: var(--su1) solid var(--_if-bc);
26
26
  border-left-width: var(--_if-blw);
27
27
  border-right-width: var(--_if-brw);
28
28
  border-radius: var(--_if-blr) var(--_if-brr) var(--_if-brr) var(--_if-blr);
@@ -1,6 +1,6 @@
1
1
  .s-input-icon {
2
2
  --_ii-fc: unset;
3
- --_ii-r: calc((var(--su-static8) + var(--su-static2))); // 10px
3
+ --_ii-r: calc((var(--su8) + var(--su2))); // 10px
4
4
 
5
5
  // MODIFIERS
6
6
  .has-error & {
@@ -32,7 +32,7 @@
32
32
  --_ii-r: auto;
33
33
 
34
34
  color: var(--black-400);
35
- left: calc((var(--su-static8) + var(--su-static2))); // 10px
35
+ left: calc((var(--su8) + var(--su2))); // 10px
36
36
  }
37
37
 
38
38
  color: var(--_ii-fc);
@@ -45,5 +45,6 @@
45
45
  color: var(--_im-fc);
46
46
 
47
47
  font-size: var(--fs-caption);
48
+ margin-bottom: 0;
48
49
  padding: var(--su2);
49
50
  }
@@ -6,7 +6,7 @@
6
6
  --_in-bc: var(--black-300);
7
7
  --_in-bg: var(--white);
8
8
  --_in-br: var(--br-md);
9
- --_in-bw: var(--su-static1);
9
+ --_in-bw: var(--su1);
10
10
  --_in-c: unset;
11
11
  --_in-d: unset;
12
12
  --_in-fc: var(--black-600);
@@ -74,7 +74,7 @@
74
74
 
75
75
  &&__creditcard,
76
76
  &&__search {
77
- --_in-pl: calc(var(--su-static32) + var(--su-static4)); // 36px
77
+ --_in-pl: calc(var(--su32) + var(--su4)); // 36px
78
78
  }
79
79
 
80
80
  // INTERACTION
@@ -1,6 +1,6 @@
1
1
  .s-label {
2
2
  --_la-c: unset;
3
- --_la-fs: var(--fs-body2);
3
+ --_la-fs: var(--fs-body2); // 16
4
4
 
5
5
  // CONTEXTUAL STYLES
6
6
  &[for] {
@@ -28,65 +28,27 @@
28
28
  // MODIFIERS
29
29
  // Sizes
30
30
  &&__sm {
31
- .size-styles(sm; la; @styles: fs);
32
- }
33
-
34
- &&__md {
35
- .size-styles(md; la; @styles: fs);
31
+ --_la-fs: var(--fs-body1); // 14
36
32
  }
37
33
 
38
34
  &&__lg {
39
- .size-styles(lg; la; @styles: fs);
40
- }
41
-
42
- &&__xl {
43
- .size-styles(xl; la; @styles: fs);
35
+ --_la-fs: calc(var(--su16) + var(--su6)); // 22
44
36
  }
45
37
 
46
38
  // CHILD ELEMENTS
47
- // Label status flag
48
- // Is this form item required or optional? Flag the status for users.
49
- // Default styling is optional.
50
- &--status { // TODO convert to require parent class for styling [1]
51
- --_la-status-b: none;
52
- --_la-status-bg: var(--black-150);
53
- --_la-status-fc: var(--fc-medium);
54
-
55
- .highcontrast-mode({
56
- --_la-status-b: var(--su-static1) solid currentColor;
57
- });
58
-
59
- // TODO: include child component class (without variant) on selector
60
- &__beta {
61
- --_la-status-bg: var(--blue-200);
62
- --_la-status-fc: var(--blue-500);
63
- }
64
-
65
- &__new {
66
- --_la-status-bg: var(--green-200);
67
- --_la-status-fc: var(--green-500);
68
- }
69
-
70
- &__required {
71
- --_la-status-bg: var(--red-200);
72
- --_la-status-fc: var(--red-500);
73
- }
74
-
75
- background-color: var(--_la-status-bg);
76
- border: var(--_la-status-b);
77
- color: var(--_la-status-fc);
78
-
79
- border-radius: 1000px;
80
- font-size: var(--fs-caption);
39
+ .s-badge {
81
40
  font-weight: 400;
82
- margin-left: var(--su4);
83
- padding: var(--su2) var(--su8);
84
- vertical-align: text-bottom;
41
+ margin-left: var(--su6);
42
+ }
43
+ &:has(.s-badge) {
44
+ display: flex;
45
+ align-items: center;
85
46
  }
86
47
 
87
48
  // TODO we shouldn't support descriptions and messages within labels
88
49
  .s-description,
89
50
  .s-input-message {
51
+ font-size: var(--fs-caption);
90
52
  font-weight: normal;
91
53
  margin-bottom: 0;
92
54
  margin-top: var(--su4);
@@ -95,10 +57,9 @@
95
57
 
96
58
  cursor: var(--_la-c);
97
59
  font-size: var(--_la-fs);
98
-
99
- color: var(--fc-medium);
60
+ color: var(--black-500);
100
61
  font-family: inherit;
101
- font-weight: 700;
62
+ font-weight: 600;
102
63
  padding: 0 var(--su2); // Helps the label visually line up with inputs
103
64
  }
104
65
 
@@ -109,8 +70,3 @@
109
70
  line-height: 0;
110
71
  text-decoration: none !important;
111
72
  }
112
-
113
- // [1] In Core, we have *many* instances of `.s-label--status` used without the `.s-label` parent.
114
- // While I'd prefer to enforce the requirement of the parent class, it's too much of a lift at this moment.
115
- // We'll come back to it, hopefully when we have a pill component to replace the current usage of `.s-label--status`
116
- // without the base label class.
@@ -1,105 +1,51 @@
1
- // TODO we *really* shouldn't be apply styles directly onto `<a>` like this, but
2
- // it's tech debt that'll take some doing in consumer's code to pay down.
3
- a {
4
- // We're target these specific selectors to avoid affecting the visited state of stacks components
5
- // not specified here. See for https://github.com/StackExchange/Stacks/pull/1740#discussion_r1698389312
6
- // TODO remove .post-tag, .badge, .badge-tag reference once core no longer requires them
7
- &:not([class*="s-"]):not(.post-tag):not(.badge):not(.badge-tag),
8
- &.s-sidebarwidget--action,
9
- &.s-user-card--link {
10
- // Use --_an-a-* (.s-anchors a) custom properties when they're defined.
11
- // Otherwise, use the default link colors.
12
- &:active,
13
- &:hover {
14
- color: var(--_an-a-fc-hover, var(--_li-fc-hover));
15
- }
16
-
17
- &:visited {
18
- color: var(--_an-a-fc-visited, var(--_li-fc-visited));
19
- }
20
-
21
- &:hover:visited {
22
- color: var(--_an-a-fc-hover-visited, var(--_li-fc-hover-visited));
23
- }
24
- }
25
- }
26
-
27
- a,
28
1
  .s-link {
29
- --_li-fc: var(--theme-link-color, var(--theme-secondary));
30
- --_li-fc-hover: var(--theme-link-color-hover, var(--theme-secondary-500));
31
- --_li-fc-visited: var(--theme-link-color-visited, var(--purple-500));
32
- --_li-fc-hover-visited: var(--theme-link-color-visited, var(--purple-600));
2
+ --_li-fc: var(--theme-link-color, var(--black-600));
3
+ --_li-fc-hover: var(--theme-link-color-hover, var(--blue-400));
4
+ --_li-fc-visited: var(--theme-link-color-visited, var(--black-400));
33
5
 
34
6
  // CONTEXTUAL STYLES
35
7
  .highcontrast-mode({
36
8
  text-decoration: underline;
37
9
  });
38
10
 
39
- // STATES
40
- &.s-link {
41
- // MODIFIERS
42
- &__dropdown {
43
- &:after {
44
- border-width: var(--su-static4); // this needs to come before any below border modifications
45
- border-bottom-width: 0;
46
- border-color: currentColor transparent;
47
- border-style: solid;
48
- border-top-width: var(--su-static4);
49
- content: "";
50
- pointer-events: none;
51
- position: absolute;
52
- right: 0;
53
- top: calc(50% - var(--su-static2));
54
- z-index: var(--zi-active);
55
- }
56
-
57
- padding-right: 0.9em;
58
- position: relative;
59
- }
60
-
61
- &__underlined {
62
- text-decoration: underline !important;
11
+ // MODIFIERS
12
+ &__dropdown {
13
+ &:after {
14
+ border-color: currentColor transparent;
15
+ border-style: solid;
16
+ border-width: var(--su4) var(--su4) 0 var(--su4);
17
+ content: "";
63
18
  }
64
19
 
65
- &__visited { // TODO can we get rid of this? It's only in 3 places in Core and seems to me it doesn't even serve a purpose.
66
- --_li-fc: var(--theme-link-color-visited, var(--purple-500));
67
- --_li-fc-hover: var(--theme-link-color-hover, var(--purple-600));
68
- --_li-fc-visited: var(--theme-link-color-visited, var(--purple-500));
69
- --_li-fc-hover-visited: var(--theme-link-color-visited, var(--purple-600));
70
- }
20
+ align-items: center;
21
+ display: inline-flex;
22
+ gap: var(--su4);
23
+ }
71
24
 
72
- // VARIANTS
73
- &__danger,
74
- &__grayscale,
75
- &__inherit,
76
- &__muted {
77
- --_li-fc-hover-visited: var(--_li-fc-hover);
78
- }
25
+ &__underlined {
26
+ text-decoration: underline !important;
27
+ }
79
28
 
80
- &__danger {
81
- --_li-fc: var(--red-400);
82
- --_li-fc-hover: var(--red-500);
83
- --_li-fc-visited: var(--red-600);
84
- }
29
+ // VARIANTS
30
+ &__danger {
31
+ --_li-fc: var(--red-400);
32
+ --_li-fc-hover: var(--red-500);
33
+ --_li-fc-visited: var(--red-600);
34
+ }
85
35
 
86
- &__grayscale {
87
- --_li-fc: var(--black-500);
88
- --_li-fc-hover: var(--black-600);
89
- --_li-fc-visited: var(--black-400);
90
- }
36
+ &__grayscale {
37
+ --_li-fc: var(--black-500);
38
+ --_li-fc-hover: var(--black-600);
39
+ }
91
40
 
92
- &__inherit {
93
- --_li-fc: inherit !important;
94
- --_li-fc-hover: inherit !important;
95
- --_li-fc-visited: inherit !important;
96
- }
41
+ &__inherit {
42
+ --_li-fc: inherit !important;
43
+ --_li-fc-hover: inherit !important;
44
+ --_li-fc-visited: inherit !important;
45
+ }
97
46
 
98
- &__muted {
99
- --_li-fc: var(--black-400);
100
- --_li-fc-hover: var(--black-500);
101
- --_li-fc-visited: var(--black-600);
102
- }
47
+ &__muted {
48
+ --_li-fc: var(--black-400);
103
49
  }
104
50
 
105
51
  // MODIFIERS
@@ -109,13 +55,6 @@ a,
109
55
  pointer-events: none;
110
56
  }
111
57
 
112
- color: var(--_li-fc);
113
- cursor: pointer;
114
- text-decoration: none;
115
- user-select: auto;
116
- }
117
-
118
- .s-link {
119
58
  button& {
120
59
  &:focus {
121
60
  outline: revert;
@@ -138,12 +77,19 @@ a,
138
77
  &:active,
139
78
  &:hover {
140
79
  --_li-fc: var(--_li-fc-hover);
80
+ text-decoration: underline;
141
81
  }
82
+
142
83
  &:visited {
84
+ &:hover {
85
+ color: var(--_li-fc-hover);
86
+ }
87
+
143
88
  color: var(--_li-fc-visited);
144
89
  }
145
90
 
146
- &:hover:visited {
147
- color: var(--_li-fc-hover-visited);
148
- }
91
+ color: var(--_li-fc);
92
+ cursor: pointer;
93
+ text-decoration: none;
94
+ user-select: auto;
149
95
  }
@@ -68,7 +68,7 @@
68
68
 
69
69
  border-bottom-left-radius: var(--br-md);
70
70
  border-bottom-right-radius: var(--br-md);
71
- border-top: var(--su-static1) solid var(--bc-medium);
71
+ border-top: var(--su1) solid var(--bc-medium);
72
72
  display: flex;
73
73
  font-size: var(--fs-caption);
74
74
  justify-content: space-between;
@@ -77,7 +77,7 @@
77
77
 
78
78
  & &--header {
79
79
  background: var(--_lp-header-bg);
80
- border-bottom: var(--su-static1) solid var(--bc-medium);
80
+ border-bottom: var(--su1) solid var(--bc-medium);
81
81
  border-top-left-radius: var(--br-md);
82
82
  border-top-right-radius: var(--br-md);
83
83
  display: flex;
@@ -105,23 +105,15 @@
105
105
  & a&--title {
106
106
  &:active,
107
107
  &:hover {
108
- color: var(--theme-link-color-hover, var(--theme-secondary-500));
109
- }
110
-
111
- &:active,
112
- &:hover,
113
- &.s-link__visited:active,
114
- &.s-link__visited:hover,
115
- &.s-link__visited:visited {
116
108
  .highcontrast-mode({
117
109
  text-decoration: underline;
118
110
  });
119
111
 
112
+ color: var(--theme-link-color-hover, var(--theme-secondary-500));
120
113
  text-decoration: none;
121
114
  }
122
115
 
123
- &:visited,
124
- &.s-link__visited {
116
+ &:visited {
125
117
  &:hover {
126
118
  color: var(--theme-link-color, var(--purple-600));
127
119
  }
@@ -141,7 +133,7 @@
141
133
  white-space: nowrap;
142
134
  }
143
135
 
144
- border: var(--su-static1) solid var(--bc-medium);
136
+ border: var(--su1) solid var(--bc-medium);
145
137
  border-radius: var(--br-md);
146
138
  box-shadow: var(--bs-sm);
147
139
  text-align: left;