@stackoverflow/stacks 3.0.0-beta.2 → 3.0.0-beta.21

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 (60) hide show
  1. package/dist/css/stacks.css +6068 -5972
  2. package/dist/css/stacks.min.css +1 -1
  3. package/lib/atomic/flex.less +6 -34
  4. package/lib/atomic/height.less +22 -0
  5. package/lib/atomic/misc.less +21 -15
  6. package/lib/atomic/positioning.less +34 -0
  7. package/lib/atomic/sizing.less +76 -0
  8. package/lib/atomic/spacing.less +35 -75
  9. package/lib/atomic/typography.less +52 -13
  10. package/lib/atomic/width.less +27 -0
  11. package/lib/base/body.less +2 -4
  12. package/lib/base/configuration-static.less +3 -3
  13. package/lib/base/internal.less +3 -5
  14. package/lib/base/reset-normalize.less +1 -1
  15. package/lib/components/activity-indicator/activity-indicator.less +1 -17
  16. package/lib/components/avatar/avatar.less +2 -2
  17. package/lib/components/badge/badge.less +179 -173
  18. package/lib/components/banner/banner.less +11 -10
  19. package/lib/components/bling/bling.less +130 -0
  20. package/lib/components/button/button.less +233 -376
  21. package/lib/components/button-group/button-group.less +2 -1
  22. package/lib/components/checkbox_radio/checkbox_radio.less +195 -113
  23. package/lib/components/code-block/code-block.fixtures.ts +2 -2
  24. package/lib/components/code-block/code-block.less +1 -1
  25. package/lib/components/description/description.less +15 -1
  26. package/lib/components/empty-state/empty-state.less +17 -6
  27. package/lib/components/form-group/form-group.less +25 -0
  28. package/lib/components/input-icon/input-icon.less +3 -3
  29. package/lib/components/input_textarea/input_textarea.less +71 -58
  30. package/lib/components/menu/menu.less +83 -21
  31. package/lib/components/modal/modal.less +10 -10
  32. package/lib/components/navigation/navigation.less +62 -37
  33. package/lib/components/notice/notice.less +89 -74
  34. package/lib/components/pagination/pagination.less +44 -43
  35. package/lib/components/popover/popover.less +8 -10
  36. package/lib/components/post-summary/post-summary.less +6 -5
  37. package/lib/components/progress-bar/progress-bar.less +1 -1
  38. package/lib/components/prose/prose.less +5 -5
  39. package/lib/components/select/select.less +26 -37
  40. package/lib/components/sidebar-widget/sidebar-widget.less +2 -2
  41. package/lib/components/table/table.less +0 -8
  42. package/lib/components/tag/tag.less +69 -71
  43. package/lib/components/toast/toast.less +4 -2
  44. package/lib/components/topbar/topbar.less +4 -4
  45. package/lib/components/user-card/user-card.less +118 -92
  46. package/lib/components/vote/vote.less +134 -0
  47. package/lib/exports/color-sets.less +78 -77
  48. package/lib/exports/constants-helpers.less +4 -8
  49. package/lib/exports/constants-type.less +18 -36
  50. package/lib/exports/mixins.less +71 -0
  51. package/lib/stacks-static.less +7 -5
  52. package/lib/test/visual-test-utils.ts +42 -10
  53. package/lib/tsconfig.json +1 -1
  54. package/package.json +1 -1
  55. package/lib/atomic/width-height.less +0 -194
  56. package/lib/components/award-bling/award-bling.less +0 -32
  57. package/lib/components/check-control/check-control.less +0 -17
  58. package/lib/components/check-group/check-group.less +0 -19
  59. package/lib/components/skeleton/skeleton.less +0 -73
  60. package/lib/exports/spacing-mixins.less +0 -67
@@ -9,85 +9,52 @@
9
9
  */
10
10
  .generate-variant-variables(@colorName: "", @modifier: "") {
11
11
  & when (@modifier = "") {
12
- --_no-bc: ~"var(--@{colorName}-300)";
13
12
  --_no-bg: ~"var(--@{colorName}-100)";
14
- --_no-btn-bg-active: ~"var(--@{colorName}-200)";
15
- --_no-btn-bg-focus: ~"var(--@{colorName}-200)";
16
- --_no-btn-fc: ~"var(--@{colorName}-500)";
13
+ --_no-icon-bg: ~"var(--@{colorName}-200)";
17
14
  --_no-code-bc: ~"var(--@{colorName}-300)";
18
15
  --_no-code-bg: ~"var(--@{colorName}-200)";
19
-
20
- .highcontrast-mode({
21
- --_no-bc: ~"var(--@{colorName}-400)";
22
- });
23
16
  }
24
17
 
25
18
  & when (@modifier = important) {
26
- --_no-bc: var(--_no-bg);
27
19
  --_no-bg: ~"var(--@{colorName}-400)";
20
+ --_no-icon-bg: ~"var(--@{colorName}-500)";
28
21
  --_no-fc: var(--white);
29
- --_no-btn-bg-active: ~"var(--@{colorName}-500)";
30
- --_no-btn-bg-focus: ~"var(--@{colorName}-500)";
31
- --_no-btn-fc: ~"var(--@{colorName}-100)";
32
22
  --_no-code-bc: ~"var(--@{colorName}-300)";
33
23
  --_no-code-bg: ~"var(--@{colorName}-500)";
34
-
35
- .highcontrast-mode({
36
- --_no-bg: ~"var(--@{colorName}-500)";
37
- });
38
24
  }
39
25
  }
40
26
 
41
27
  /**
42
28
  * Generate styles for a notice-based component
43
29
  *
44
- * Usage example:
30
+ * Usage examples:
45
31
  * .construct-notice-component(s-banner);
32
+ * .construct-notice-component(s-notice);
46
33
  *
47
34
  * @baseClass - The base class name for the notice component
48
35
  */
49
36
  .construct-notice-component(@baseClass) {
50
- --_no-bc: var(--black-225);
51
- --_no-bg: var(--black-100);
52
- --_no-fc: var(--black-500);
53
- --_no-btn-bg-active: var(--black-250);
54
- --_no-btn-bg-focus: var(--black-225);
55
- --_no-btn-fc: var(--_no-fc);
37
+ --_no-bg: var(--black-150);
38
+ --_no-icon-bg: var(--black-200);
39
+ --_no-fc: var(--black-600);
56
40
  --_no-code-bc: var(--black-300);
57
41
  --_no-code-bg: var(--black-200);
58
42
  --_no-code-fc: var(--_no-fc);
59
43
 
60
44
  // CONTEXTUAL STYLES
61
45
  .highcontrast-mode({
62
- &,
63
- &.@{baseClass}__danger,
64
- &.@{baseClass}__info,
65
- &.@{baseClass}__success,
66
- &.@{baseClass}__warning {
67
- --_no-code-bc: var(--black-400);
68
- --_no-code-bg: var(--white);
69
- --_no-code-fc: var(--black);
70
-
71
- &.@{baseClass}__important {
72
- --_no-code-bc: var(--black-200);
73
- --_no-code-bg: var(--black);
74
- --_no-code-fc: var(--white);
75
- }
46
+ &:not(&__important) {
47
+ --_no-icon-bc: var(--_no-code-bc);
76
48
  }
77
-
78
- --_no-bc: var(--black-400);
79
49
  });
80
50
 
81
51
  // MODIFIERS
82
- &__important:not(.@{baseClass}__danger):not(.@{baseClass}__info):not(.@{baseClass}__success):not(.@{baseClass}__warning) {
83
- --_no-bc: var(--_no-bg);
84
- --_no-bg: var(--black-500);
52
+ &__important {
53
+ --_no-bg: var(--black-400);
54
+ --_no-icon-bg: var(--black-500);
85
55
  --_no-fc: var(--white);
86
- --_no-btn-bg-focus: var(--black-600);
87
- --_no-btn-bg-active: var(--black-600);
88
- --_no-btn-fc: var(--_no-fc);
89
56
  --_no-code-bc: var(--black-300);
90
- --_no-code-bg: var(--black-600);
57
+ --_no-code-bg: var(--black-500);
91
58
  }
92
59
 
93
60
  // VARIANTS
@@ -103,11 +70,11 @@
103
70
 
104
71
  &__info {
105
72
  &:not(.@{baseClass}__important) {
106
- .generate-variant-variables(theme-secondary);
73
+ .generate-variant-variables(blue);
107
74
  }
108
75
 
109
76
  &.@{baseClass}__important {
110
- .generate-variant-variables(theme-secondary, important);
77
+ .generate-variant-variables(blue, important);
111
78
  }
112
79
  }
113
80
 
@@ -121,33 +88,56 @@
121
88
  }
122
89
  }
123
90
 
91
+ &__featured {
92
+ &:not(.@{baseClass}__important) {
93
+ .generate-variant-variables(purple);
94
+ }
95
+
96
+ &.@{baseClass}__important {
97
+ .generate-variant-variables(purple, important);
98
+ }
99
+ }
100
+
101
+ &__activity {
102
+ &:not(.@{baseClass}__important) {
103
+ .generate-variant-variables(pink);
104
+ }
105
+
106
+ &.@{baseClass}__important {
107
+ .generate-variant-variables(pink, important);
108
+ }
109
+ }
110
+
124
111
  &__warning {
125
112
  &:not(.@{baseClass}__important) {
126
113
  .generate-variant-variables(yellow);
127
- --_no-btn-fc: var(--yellow-600);
128
114
  }
129
115
 
130
116
  &.@{baseClass}__important {
131
- --_no-bc: var(--_no-bg);
132
- --_no-bg: var(--yellow-400);
117
+ --_no-bg: var(--yellow-300);
118
+ --_no-icon-bg: var(--yellow-400);
133
119
  --_no-fc: var(--black);
134
- --_no-btn-fc: var(--_no-fc);
135
- --_no-btn-bg-active: var(--yellow-300);
136
- --_no-btn-bg-focus: var(--yellow-300);
137
- --_no-code-bc: var(--yellow-500);
138
- --_no-code-bg: var(--yellow-300);
120
+ --_no-code-bc: var(--yellow-400);
121
+ --_no-code-bg: var(--yellow-200);
122
+
123
+ .s-notice--icon {
124
+ color: var(--white);
125
+ }
139
126
 
140
127
  .dark-mode({
141
128
  --_no-fc: var(--white);
142
129
  --_no-code-bc: var(--yellow-300);
143
130
  --_no-code-bg: var(--yellow-500);
131
+ --_no-bg: var(--yellow-400);
132
+ --_no-icon-bg: var(--yellow-500);
144
133
  });
145
134
 
146
135
  .highcontrast-mode({
147
- --_no-bg: var(--yellow-500);
136
+ --_no-bg: var(--yellow-400);
137
+ --_no-icon-bg: var(--yellow-500);
138
+ --_no-code-bc: var(--yellow-300);
139
+ --_no-code-bg: var(--yellow-500);
148
140
  --_no-fc: var(--white);
149
- --_no-btn-bg-active: transparent;
150
- --_no-btn-bg-focus: transparent;
151
141
  });
152
142
  }
153
143
  }
@@ -157,41 +147,66 @@
157
147
  background-color: var(--_no-code-bg);
158
148
  color: var(--_no-code-fc);
159
149
  outline: var(--su-static1) solid var(--_no-code-bc);
160
-
161
- border-radius: var(--br-md);
162
150
  padding-left: var(--su2);
163
151
  padding-right: var(--su2);
152
+ white-space: nowrap;
164
153
  }
165
154
 
166
- & &--btn {
167
- // TODO: decouple .s-notice--btn from .s-btn
155
+ button&--dismiss {
168
156
  &:active {
169
- background-color: var(--_no-btn-bg-active, inherit) !important;
157
+ background-color: var(--_no-fc);
158
+ color: var(--_no-bg);
170
159
  }
171
160
 
172
161
  &:focus-visible,
173
162
  &:hover,
174
163
  &.focus-inset-bordered {
175
- background-color: var(--_no-btn-bg-focus, inherit) !important;
164
+ background-color: var(--_no-fc);
165
+ color: var(--_no-bg);
176
166
  }
167
+ color: var(--_no-fc);
168
+ }
169
+
170
+ &--actions {
171
+ display: flex;
172
+ margin-left: auto;
173
+ align-self: flex-start;
174
+ padding-left: var(--su24);
175
+ color: var(--_no-fc);
176
+ gap: calc(var(--su24) - var(--su2)); //22px
177
+
178
+ //Fix css issue caused by svelte-sonner-toast in the NoticeAction svelte component
179
+ overflow-wrap: initial !important;
180
+ }
177
181
 
178
- color: var(--_no-btn-fc, inherit) !important;
179
- padding: var(--su8);
182
+ //Fix notice action color for __important variant
183
+ &--actions > .s-link:not(&--dismiss) {
184
+ color: var(--_no-fc);
180
185
  }
181
186
 
182
187
  // STYLES MODIFIED BY COMPONENT-SPECIFIC CUSTOM PROPERTIES
183
188
  background: var(--_no-bg);
184
- border-color: var(--_no-bc);
185
189
  color: var(--_no-fc);
186
-
187
- border-style: solid;
188
- font-size: var(--fs-body1);
189
190
  }
190
191
 
191
192
  .s-notice {
192
193
  .construct-notice-component(s-notice);
193
194
 
194
- border-radius: var(--br-md);
195
- border-width: var(--su-static1);
196
- padding: var(--su16);
195
+ display: flex;
196
+ align-items: center;
197
+
198
+ --_no-pd: var(--su8);
199
+ padding: var(--_no-pd) var(--su12) var(--_no-pd) 0;
200
+
201
+ &--icon {
202
+ background: var(--_no-icon-bg);
203
+ border: var(--su1) solid var(--_no-icon-bc, var(--_no-icon-bg));
204
+ padding: var(--_no-pd);
205
+ margin-right: var(--su12);
206
+ align-self: stretch;
207
+
208
+ //Negative margin to make up for s-notice's padding
209
+ margin-top: calc(var(--_no-pd) * -1);
210
+ margin-bottom: calc(var(--_no-pd) * -1);
211
+ }
197
212
  }
@@ -8,70 +8,71 @@
8
8
  }
9
9
 
10
10
  & &--item {
11
- --_pa-item-bg: transparent;
12
- --_pa-item-bc: var(--bc-darker);
13
- --_pa-item-fc: var(--fc-medium);
14
- --_pa-item-bg-focus: var(--black-400);
15
- --_pa-item-fc-focus: var(--white);
16
- --_pa-item-bg-hover: var(--black-225);
17
- --_pa-item-bc-hover: var(--bc-darker);
18
- --_pa-item-fc-hover: var(--fc-dark);
19
-
20
- // CONTEXTUAL STYLES
21
- .highcontrast-mode({ text-decoration: none; });
11
+ --_pa-item-bg: unset;
12
+ --_pa-item-br: unset;
13
+ --_pa-item-fc: var(--black-400);
14
+ --_pa-item-p: var(--su-static4);
22
15
 
23
16
  // MODIFIERS
24
17
  &.is-selected {
25
- --_pa-item-bg: var(--theme-primary);
26
- --_pa-item-bc: transparent;
27
- --_pa-item-fc: var(--white);
28
- --_pa-item-bg-focus: var(--theme-primary-400);
29
- }
30
- &.s-pagination--item__clear {
31
- --_pa-item-bg: transparent;
32
- --_pa-item-bc: transparent;
33
- --_pa-item-fc: inherit;
18
+ --_pa-item-fc: var(--black-600);
19
+
20
+ &:not(:hover):not(:focus-visible):before {
21
+ background-color: var(--black-600);
22
+ content: "";
23
+ height: var(--su-static2);
24
+ left: 0;
25
+ position: absolute;
26
+ right: 0;
27
+ top: 100%;
28
+ }
34
29
  }
35
- // override hover styles to match base styles
36
- &.is-selected,
37
- &.s-pagination--item__clear {
38
- --_pa-item-bc-hover: var(--_pa-item-bc);
39
- --_pa-item-bg-hover: var(--_pa-item-bg);
40
- --_pa-item-fc-hover: var(--_pa-item-fc);
30
+ &.s-pagination--item__nav {
31
+ --_pa-item-bg: var(--black-150);
32
+ --_pa-item-br: var(--br-circle);
33
+ --_pa-item-fc: var(--black-600);
34
+ --_pa-item-p: var(--su-static6);
35
+
36
+ aspect-ratio: 1 / 1;
37
+
38
+ &:hover {
39
+ --_pa-item-bg: var(--black-200);
40
+ }
41
41
  }
42
42
 
43
43
  // INTERACTION
44
- &:hover {
45
- background-color: var(--_pa-item-bg-hover);
46
- border-color: var(--_pa-item-bc-hover);
47
- color: var(--_pa-item-fc-hover);
44
+ &[href]:hover:not(&__nav) {
45
+ --_pa-item-bg: var(--black-150);
46
+ --_pa-item-br: var(--br-pill);
47
+ --_pa-item-fc: var(--black-600);
48
48
  }
49
-
50
49
  &:focus-visible {
51
- .focus-styles(true, true);
50
+ --_pa-item-bg: var(--black-150);
51
+ --_pa-item-fc: var(--black-600);
52
+ .focus-styles(false, true);
52
53
  }
53
-
54
- &:focus-visible,
54
+ &:focus-visible:not(&__nav),
55
55
  &.focus-inset-bordered {
56
- background-color: var(--_pa-item-bg-focus);
57
- color: var(--_pa-item-fc-focus);
56
+ --_pa-item-br: var(--br-md);
58
57
  }
59
58
 
60
59
  background-color: var(--_pa-item-bg);
61
- border: 1px solid var(--_pa-item-bc);
60
+ border-radius: var(--_pa-item-br);
62
61
  color: var(--_pa-item-fc);
62
+ padding: var(--_pa-item-p);
63
63
 
64
- border-radius: var(--br-md);
65
- display: inline-block;
66
- font-size: var(--fs-body1);
67
- line-height: var(--lh-xl);
68
- padding: 0 var(--su8);
64
+ display: inline-flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ margin: var(--su-static1);
68
+ position: relative;
69
69
  }
70
70
 
71
71
  &,
72
72
  ul {
73
73
  display: flex;
74
+ align-items: center;
74
75
  flex-wrap: wrap;
75
- gap: var(--su4);
76
+ gap: var(--su2);
76
77
  }
77
78
  }
@@ -3,7 +3,7 @@
3
3
  --_po-bc: var(--bc-medium);
4
4
  --_po-bs: var(--bs-md);
5
5
  --_po-d: none;
6
- --_po-wmn: 12rem;
6
+ --_po-wmn: 10.5rem;
7
7
  --_po-w: 100%;
8
8
  // content
9
9
  // --_po-topbar-height assumes the topbar height based on topbar styles
@@ -12,9 +12,7 @@
12
12
 
13
13
  // CONTEXTUAL STYLES
14
14
  .dark-mode({
15
- --_po-bg: var(--black-200);
16
- --_po-bc: var(--bc-light);
17
- --_po-bs: var(--bs-lg);
15
+ --_po-bg: var(--black-100);
18
16
  });
19
17
 
20
18
  // MODIFIERS
@@ -31,20 +29,20 @@
31
29
  // Close btn
32
30
  & &--close {
33
31
  float: right; // Use floats for title wrapping
34
- top: calc(var(--su8) * -1); // Compensate for s-popover's padding
35
- right: calc(var(--su8) * -1); // Compensate for s-popover's padding
36
- padding: var(--su8) !important;
32
+ top: var(--sun8); // Compensate for s-popover's padding
33
+ right: var(--sun8); // Compensate for s-popover's padding
34
+ padding: var(--su6) !important;
37
35
  }
38
36
 
39
37
  & &--content {
40
38
  max-height: var(--_po-content-mxh);
41
39
  overflow-y: auto;
42
- margin: calc(var(--su12) * -1);
40
+ margin: var(--sun12);
43
41
  padding: var(--su12);
44
42
  }
45
43
 
46
44
  background-color: var(--_po-bg);
47
- border: 1px solid var(--_po-bc);
45
+ border: var(--su-static1) solid var(--_po-bc);
48
46
  box-shadow: var(--_po-bs);
49
47
  display: var(--_po-d);
50
48
  min-width: var(--_po-wmn);
@@ -53,7 +51,7 @@
53
51
  border-radius: var(--br-md);
54
52
  color: var(--fc-dark);
55
53
  font-size: var(--fs-body1);
56
- max-width: 24rem;
54
+ max-width: 21rem;
57
55
  padding: var(--su12);
58
56
  position: absolute;
59
57
  white-space: normal; // Guard against popovers being in a container with white-space: nowrap. Without this, the content pops *out* of the popover.
@@ -76,6 +76,7 @@
76
76
 
77
77
  background-color: var(--_ps-meta-tags-tag-bg);
78
78
  color: var(--black-500);
79
+ border-color: var(--black-300);
79
80
  }
80
81
  }
81
82
  }
@@ -216,7 +217,7 @@
216
217
  .v-truncate2;
217
218
  color: var( --_ps-content-excerpt-fc);
218
219
  font-family: var(--theme-post-body-font-family, var(--theme-body-font-family));
219
- margin-top: calc(var(--su2) * -1);
220
+ margin-top: var(--sun2);
220
221
  margin-bottom: var(--su8);
221
222
  }
222
223
 
@@ -260,7 +261,7 @@
260
261
 
261
262
  .svg-icon {
262
263
  position: relative;
263
- top: calc(var(--su1) * -1);
264
+ top: var(--sun1);
264
265
  vertical-align: text-bottom; // Optical alignment
265
266
  }
266
267
 
@@ -269,15 +270,15 @@
269
270
  font-size: var(--fs-body3);
270
271
  font-weight: normal;
271
272
  line-height: var(--lh-md);
272
- margin-bottom: 0.3846rem;
273
- margin-top: -0.15rem; // Optical alignment to compensate for title's containing block
273
+ margin-bottom: 0.3365rem;
274
+ margin-top: -0.125rem; // Optical alignment to compensate for title's containing block
274
275
  padding-right: var(--su24);
275
276
  }
276
277
 
277
278
  &--content-type {
278
279
  .svg-icon {
279
280
  color: var(--fc-light);
280
- margin-left: calc(var(--su2) * -1);
281
+ margin-left: var(--sun2);
281
282
  }
282
283
 
283
284
  color: var(--fc-medium);
@@ -254,7 +254,7 @@
254
254
  content: "";
255
255
  display: block;
256
256
  height: 100%;
257
- left: calc(var(--su-static1) * -1); // -1px
257
+ left: var(--sun1);
258
258
  position: absolute;
259
259
  top: 0;
260
260
  width: var(--su-static4);
@@ -49,11 +49,11 @@
49
49
  &&__xs,
50
50
  &&__sm,
51
51
  &&__md {
52
- --_pr-h1-fs: var(--fs-headline1-relative);
53
- --_pr-h2-fs: var(--fs-title-relative);
54
- --_pr-h3-fs: var(--fs-subheading-relative);
55
- --_pr-h4-fs: var(--fs-body3-relative);
56
- --_pr-h5-fs: var(--fs-body2-relative);
52
+ --_pr-h1-fs: 1.75em;
53
+ --_pr-h2-fs: 1.375em;
54
+ --_pr-h3-fs: 1.25em;
55
+ --_pr-h4-fs: 1.125em;
56
+ --_pr-h5-fs: 1em;
57
57
  }
58
58
 
59
59
  &&__xs {
@@ -1,13 +1,13 @@
1
1
  .s-select {
2
- --_se-arrow-bc: currentColor transparent;
3
- --_se-arrow-size: var(--su-static4); // Constant
2
+ --_se-arrow-fc: currentColor;
4
3
  --_se-select-bc: var(--bc-darker);
5
4
  --_se-select-bg: var(--white);
6
5
  --_se-select-br: var(--br-md);
7
6
  --_se-select-fc: var(--black);
8
7
  --_se-select-px: 0.7em;
9
- --_se-select-py: 0.6em;
8
+ --_se-select-py: var(--su-static8);
10
9
  --_se-select-fs: var(--fs-body1);
10
+ --_se-select-lh: var(--lh-base);
11
11
 
12
12
  // CONTEXTUAL STYLES
13
13
  @supports (-webkit-overflow-scrolling: touch) {
@@ -23,30 +23,15 @@
23
23
 
24
24
  .validation-states(se-select);
25
25
 
26
- .is-disabled & {
27
- --_se-arrow-bc: var(--bc-dark) transparent;
28
- }
29
-
30
26
  &&__sm {
31
27
  .size-styles(sm; se-select; @styles: fs);
32
- // --_se-select-fs: var(--fs-caption);
33
- }
34
-
35
- &&__md {
36
- .size-styles(md; se-select; @styles: br, fs);
37
- --_se-select-py: 0.5em;
28
+ --_se-select-lh: var(--lh-sm);
29
+ --_se-select-py: calc(var(--su6) - var(--su-static1) / 2);
38
30
  }
39
31
 
40
32
  &&__lg {
41
- .size-styles(lg; se-select; @styles: br, fs);
42
- --_se-select-px: 0.6em;
43
- --_se-select-py: 0.45em;
44
- }
45
-
46
- &&__xl {
47
- .size-styles(xl; se-select; @styles: br, fs);
48
- --_se-select-px: 0.5em;
49
- --_se-select-py: 0.4em;
33
+ .size-styles(md; se-select; @styles: fs);
34
+ --_se-select-lh: var(--lh-lg);
50
35
  }
51
36
 
52
37
  // CHILD ELEMENTS
@@ -55,26 +40,29 @@
55
40
  .webkit-autofill();
56
41
  }
57
42
 
58
- &:before,
59
- &:after { // menu arrows
60
- border-color: var(--_se-arrow-bc);
61
- border-style: solid;
62
- border-width: var(--_se-arrow-size);
43
+ &:after { // Chevron16UpDown icon
44
+ background-color: currentColor;
63
45
  content: "";
46
+ height: var(--su-static16);
47
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M13.06 10 8 15.06 2.94 10 4 8.94l.53.53L8 12.94l3.47-3.47.53-.53zm0-4L12 7.06l-.53-.53L8 3.06 4.53 6.53 4 7.06 2.94 6 8 .94z'/%3E%3C/svg%3E");
48
+ mask-repeat: no-repeat;
49
+ mask-position: center;
50
+ mask-size: contain;
64
51
  pointer-events: none;
65
52
  position: absolute;
66
- right: calc(var(--su-static12) + var(--su-static1));
53
+ right: calc(var(--su32) - var(--su-static24));
54
+ top: 50%;
55
+ transform: translateY(-50%);
56
+ width: var(--su-static16);
67
57
  z-index: var(--zi-selected);
68
58
  }
69
59
 
70
- &:after {
71
- border-bottom-width: 0;
72
- top: calc(50% + var(--su-static1));
73
- }
60
+ .is-disabled & {
61
+ --_se-arrow-fc: var(--bc-dark);
74
62
 
75
- &:before {
76
- border-top-width: 0;
77
- top: calc(50% - calc(var(--_se-arrow-size) + var(--su-static1)));
63
+ &:after {
64
+ background-color: var(--_se-arrow-fc);
65
+ }
78
66
  }
79
67
 
80
68
  > select { // Menu
@@ -82,7 +70,8 @@
82
70
  fieldset[disabled] &,
83
71
  &[disabled] {
84
72
  cursor: not-allowed;
85
- opacity: var(--_o-disabled-static);
73
+ --_se-select-fc: var(--black-300);
74
+ --_se-select-bg: var(--black-100);
86
75
  }
87
76
 
88
77
  &[readonly],
@@ -118,7 +107,7 @@
118
107
  appearance: none;
119
108
  font-family: inherit;
120
109
  height: 100%; // Fill the height of its parent
121
- line-height: var(--lh-sm);
110
+ line-height: var(--_se-select-lh);
122
111
  outline: 0;
123
112
  padding-right: var(--su32);
124
113
  position: relative; // This prevents Firefox from requiring a second click to select options
@@ -123,8 +123,8 @@
123
123
  content: '';
124
124
  height: calc(100% + var(--su16));
125
125
  left: 0;
126
- margin-left: calc(var(--su16) * -1 - var(--su-static1)); // the orange selection indicator overlaps with the widget border
127
- margin-top: calc(var(--su16) / 2 * -1);
126
+ margin-left: var(--sun16); // the orange selection indicator overlaps with the widget border
127
+ margin-top: var(--sun8);
128
128
  position: absolute;
129
129
  }
130
130
 
@@ -202,10 +202,6 @@
202
202
  }
203
203
 
204
204
  td {
205
- .s-checkbox {
206
- display: block;
207
- }
208
-
209
205
  &.s-table--bulk {
210
206
  --_ta-td-w: calc(var(--su32) - var(--su2)); // 30px
211
207
  }
@@ -249,10 +245,6 @@
249
245
  }
250
246
 
251
247
  th {
252
- .s-checkbox {
253
- display: block;
254
- }
255
-
256
248
  &.s-table--bulk {
257
249
  --_ta-th-w: calc(var(--su32) - var(--su2)); // 30px
258
250
  }