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

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 (59) hide show
  1. package/dist/css/stacks.css +5981 -5916
  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 +1 -1
  19. package/lib/components/bling/bling.less +130 -0
  20. package/lib/components/button/button.less +224 -375
  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 +82 -73
  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 +1 -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/tsconfig.json +1 -1
  53. package/package.json +1 -1
  54. package/lib/atomic/width-height.less +0 -194
  55. package/lib/components/award-bling/award-bling.less +0 -32
  56. package/lib/components/check-control/check-control.less +0 -17
  57. package/lib/components/check-group/check-group.less +0 -19
  58. package/lib/components/skeleton/skeleton.less +0 -73
  59. package/lib/exports/spacing-mixins.less +0 -67
@@ -1,164 +1,110 @@
1
1
  .s-badge {
2
2
  --_ba-as: unset;
3
- --_ba-bc: var(--bc-medium);
4
- --_ba-bg: var(--black-150);
3
+ --_ba-bc: transparent;
4
+ --_ba-bg: var(--black-100);
5
5
  --_ba-fc: var(--black-500);
6
- --_ba-fs: var(--fs-caption);
7
- --_ba-fw: normal;
8
- --_ba-g: 0.3em;
9
- --_ba-lh: 2;
6
+ --_ba-fs: var(--fs-caption); //13px
10
7
  --_ba-px: var(--su6);
11
- --_ba-py: 0;
8
+ --_ba-py: var(--su4);
12
9
  --_ba-tt: unset;
13
10
  --_ba-wmn: 0;
14
-
15
- // CONTEXTUAL STYLES
16
- .highcontrast-mode({
17
- // Badge counts
18
- &__gold,
19
- &__silver,
20
- &__bronze,
21
- // Number counts
22
- &__rep,
23
- &__rep-down,
24
- &__votes:not(.s-badge__answered),
25
- // Users
26
- &__admin,
27
- &__moderator,
28
- &__staff {
29
- --_ba-bc: currentColor;
30
- }
31
-
32
- &__new {
33
- --_ba-fc: var(--purple-600);
34
- }
35
- });
36
-
37
- // MODIFIERS
38
- // Sizes
39
- &&__xs,
11
+ --_ba-bl: 0;
12
+ --_ba-fw: unset;
13
+ --_ba-sq-bg: var(--black-200);
14
+ --_ba-bx-sh-w: var(--su2);
15
+ --_ba-gap: unset;
16
+ --_ba-bx-sh-inset: ~"";
17
+
18
+ // SIZES
40
19
  &&__sm {
20
+ --_ba-wmn: calc(var(--su-static16) + var(--su-static2));
41
21
  --_ba-as: flex-start;
42
- --_ba-fs: var(--fs-fine);
22
+ --_ba-fs: var(--fs-fine); //12px
23
+ --_ba-px: var(--su4);
24
+ --_ba-py: var(--su1);
25
+ --_ba-bx-sh-w: 0px;
26
+ --_ba-bx-sh-inset: inset;
43
27
  }
44
28
 
45
- &&__xs {
46
- --_ba-lh: 1.5;
47
- --_ba-px: var(--su2);
48
- --_ba-wmn: calc(var(--su-static16) + var(--su-static2));
29
+ &&__lg {
30
+ --_ba-fs: var(--fs-body1); //14px
31
+ --_ba-px: var(--su8);
32
+ --_ba-py: calc(var(--su4) + var(--su1)); //5px
33
+ --_ba-bx-sh-w: var(--su4);
49
34
  }
50
35
 
51
- &&__sm {
52
- --_ba-lh: 1.8;
53
- --_ba-px: var(--su4);
54
- --_ba-wmn: calc(var(--su-static16) + var(--su-static2));
36
+ // We need negative margin to make up for the positive badge padding
37
+ & .s-bling__filled {
38
+ margin: calc(var(--_ba-py) * -1) 0 calc(var(--_ba-py) * -1) calc(var(--_ba-px) * -1);
39
+ }
40
+ & svg {
41
+ margin: calc(var(--_ba-py) * -1) 0 calc(var(--_ba-py) * -1) var(--sun4);
55
42
  }
56
43
 
57
- // Badge counts
44
+ &:has(.s-bling__rep) {
45
+ --_ba-fw: 600;
46
+ --_ba-fc: var(--black-600);
47
+ }
48
+ &:has(.s-bling) {
49
+ --_ba-bg: var(--black-150);
50
+ }
51
+
52
+ // TAG
58
53
  &&__gold,
59
54
  &&__silver,
60
55
  &&__bronze {
61
- --_ba-fc: var(--black-500);
56
+ --_ba-bl: var(--su4);
57
+
58
+ & .s-bling__gold,
59
+ & .s-bling__silver,
60
+ & .s-bling__bronze {
61
+ margin-left: -2px;
62
+ }
62
63
  }
63
64
 
64
65
  &&__gold {
65
66
  --_ba-bc: var(--yellow-300);
66
- --_ba-bg: var(--yellow-100);
67
67
  }
68
-
69
68
  &&__silver {
70
69
  --_ba-bc: var(--blue-300);
71
- --_ba-bg: var(--blue-100);
72
70
  }
73
-
74
71
  &&__bronze {
75
72
  --_ba-bc: var(--orange-300);
76
- --_ba-bg: var(--orange-100);
77
- }
78
-
79
- // Number counts
80
- &&__answered,
81
- &&__bounty,
82
- &&__important {
83
- --_ba-bc: transparent;
84
- --_ba-fc: var(--white);
85
73
  }
86
74
 
87
- &&__rep,
88
- &&__rep-down,
89
- &&__votes:not(&__answered) {
90
- --_ba-bg: var(--white);
91
- }
92
-
93
- &&__answered {
94
- --_ba-bg: var(--green-400);
95
- }
96
-
97
- &&__bounty {
98
- --_ba-bg: var(--blue-400);
99
- }
100
-
101
- &&__important {
102
- --_ba-bg: var(--red-400);
103
- }
104
-
105
- &&__rep {
106
- --_ba-bc: var(--green-300);
107
- --_ba-fc: var(--green-400);
108
- }
109
-
110
- &&__rep-down {
111
- --_ba-bc: var(--red-300);
112
- --_ba-fc: var(--red-400);
113
- }
114
-
115
- &&__votes:not(&__answered) {
116
- --_ba-bc: var(--black-250);
117
- --_ba-fc: var(--black-500);
118
- }
119
-
120
- // Users
121
- &&__admin {
122
- --_ba-bc: var(--theme-primary-200);
123
- --_ba-bg: var(--theme-primary-100);
124
- --_ba-fc: var(--theme-primary-500);
75
+ // USER
76
+ &&__admin,
77
+ &&__moderator,
78
+ &&__staff,
79
+ &&__ai,
80
+ &&__bot,
81
+ &&__new {
82
+ --_ba-bl: var(--su4);
83
+ --_ba-bg: var(--black-150);
84
+ --_ba-fc: var(--black-600);
125
85
  }
126
86
 
127
87
  &&__moderator {
128
- --_ba-bc: var(--theme-secondary-300);
129
- --_ba-bg: var(--theme-secondary-200);
130
- --_ba-fc: var(--theme-secondary-600);
131
- --_ba-g: calc(var(--su-static4) - var(--su-static1)); // 3px
132
88
  // :before icon
133
- --_ba-before-h: calc(var(--su-static16) - var(--su-static2)); // 14px
134
- --_ba-before-icon: url("data:image/svg+xml;,%3Csvg width='12' height='14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.528.746c.257-.329.675-.327.93 0l4.42 5.66c.258.329.257.864 0 1.192l-4.42 5.66c-.256.328-.674.327-.93 0l-4.42-5.66c-.257-.329-.256-.865 0-1.192l4.42-5.66z' fill='%23fff'/%3E%3C/svg%3E");
135
- --_ba-before-mt: calc(var(--su-static1) * -1); // -1px
136
- --_ba-before-w: var(--su-static12);
137
-
138
- // Sizes
139
- &.s-badge__xs {
140
- --_ba-before-h: calc(var(--su-static8) + var(--su-static1)); // 9px
141
- --_ba-before-icon: url("data:image/svg+xml;,%3Csvg width='7' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 .246c.3-.329.701-.327 1 0L6.776 4c.3.329.298.672 0 1L4 8.75c-.299.329-.702.327-1 0L.224 5c-.284-.324-.285-.675 0-1L3 .246z' fill='%23fff'/%3E%3C/svg%3E");
142
- --_ba-before-mt: 0;
143
- --_ba-before-w: calc(var(--su-static8) - var(--su-static1)); // 7px
144
- }
89
+ --_ba-bc: var(--blue-500);
90
+ --_ba-before-h: calc(var(--su12) + var(--su1)); // 13px
91
+ --_ba-before-w: calc(var(--su12) - var(--su1)); // 11px
92
+ --_ba-before-icon: url("data:image/svg+xml;,%3Csvg width='11' height='13' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.528.746c.257-.329.675-.327.93 0l4.42 5.66c.258.329.257.864 0 1.192l-4.42 5.66c-.256.328-.674.327-.93 0l-4.42-5.66c-.257-.329-.256-.865 0-1.192l4.42-5.66z' fill='%23fff'/%3E%3C/svg%3E");
145
93
 
146
94
  &.s-badge__sm {
147
- --_ba-g: var(--su-static2);
148
- --_ba-before-h: calc(var(--su-static12) - var(--su-static1)); // 11px
95
+ --_ba-before-h: calc(var(--su12) - var(--su1)); // 11px
96
+ --_ba-before-w: calc(var(--su8) + var(--su1)); // 9px
149
97
  --_ba-before-icon: url("data:image/svg+xml;,%3Csvg width='9' height='11' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.55.246c.257-.329.647-.327.903 0l3.36 4.66c.256.329.256.864 0 1.192L4.45 10.75c-.257.329-.644.327-.9 0L.192 6.098c-.256-.329-.256-.865 0-1.192L3.55.246z' fill='%23fff'/%3E%3C/svg%3E");
150
- --_ba-before-mt: 0;
151
- --_ba-before-w: calc(var(--su-static8) + var(--su-static1)); // 9px
152
98
  }
153
99
 
154
100
  &:before {
155
101
  height: var(--_ba-before-h);
156
- margin-top: var(--_ba-before-mt);
102
+ margin-top: var(--sun1);
157
103
  width: var(--_ba-before-w);
158
104
 
159
105
  content: "";
160
106
  display: inline-block;
161
- background-color: currentColor;
107
+ background-color: var(--_ba-bc);
162
108
  -webkit-mask: var(--_ba-before-icon) no-repeat center;
163
109
  mask: var(--_ba-before-icon) no-repeat center;
164
110
  -webkit-mask-size: contain;
@@ -167,79 +113,140 @@
167
113
  }
168
114
 
169
115
  &&__staff {
170
- // Staff badges are always "Stack Overflow Orange"
171
- --_ba-bc: var(--orange-300);
172
- --_ba-bg: var(--orange-200);
173
- --_ba-fc: var(--orange-600);
116
+ // Staff should always be "StackOverflow orange"
117
+ --_ba-bc: var(--orange-400);
118
+ }
119
+ &&__admin {
120
+ // Only the admin badge is themeable
121
+ --_ba-bc: var(--theme-primary-500, var(--orange-500));
174
122
  }
175
-
176
- // VARIANTS
177
123
  &&__ai {
178
- --_ba-bc: var(--_ba-fc);
179
- --_ba-bg: var(--black-050);
180
- --_ba-fc: var(--orange-500);
181
- --_ba-tt: uppercase;
124
+ --_ba-bc: var(--purple-400);
182
125
  }
183
-
184
126
  &&__bot {
185
- --_ba-bc: var(--black-300);
127
+ --_ba-bc: var(--black-400);
186
128
  }
187
129
 
188
- &&__danger,
189
- &&__muted {
190
- &.s-badge__filled {
191
- --_ba-bc: transparent;
130
+ &&__new {
131
+ --_ba-bg: var(--purple-100);
132
+ --_ba-fc: var(--purple-500);
133
+ --_ba-sq-bg: var(--purple-200);
134
+ --_ba-bc: var(--purple-400);
135
+ --_ba-gap: var(--su2); // 2px gap between icon and text
136
+ --_ba-before-h: calc(var(--su12) + var(--su2)); // 14px
137
+ --_ba-before-w: calc(var(--su12) + var(--su2)); // 14px
138
+ --_ba-before-icon: url("data:image/svg+xml;,%3Csvg width='14' height='14' viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 1a7 7 0 1 1 0 14A7 7 0 0 1 8 1m0 1.25a5.75 5.75 0 1 0 0 11.5 5.75 5.75 0 0 0 0-11.5m1 10.06H7V10.6h2zM8.14 4c1.78 0 2.77.96 2.77 2.5 0 1.79-2.1 2.2-2.1 3.25h-1.6c0-2 2-2.08 2-3.26 0-.54-.27-.96-1.02-.96-.7 0-1.03.46-1.1 1.23H5.4A2.75 2.75 0 0 1 8.13 4' fill='%23fff'/%3E%3C/svg%3E");
139
+
140
+ &:before {
141
+ height: var(--_ba-before-h);
142
+ margin-top: 0;
143
+ margin-left: var(--sun2);
144
+ width: var(--_ba-before-w);
145
+
146
+ content: "";
147
+ display: inline-block;
148
+ background-color: var(--_ba-bc);
149
+ -webkit-mask: var(--_ba-before-icon) no-repeat center;
150
+ mask: var(--_ba-before-icon) no-repeat center;
151
+ -webkit-mask-size: contain;
152
+ mask-size: contain;
192
153
  }
193
154
  }
194
155
 
156
+ // STATES
157
+ &&__info {
158
+ --_ba-bg: var(--blue-100);
159
+ --_ba-fc: var(--blue-500);
160
+ --_ba-sq-bg: var(--blue-200);
161
+ &.s-badge__important {
162
+ --_ba-bg: var(--blue-400);
163
+ --_ba-sq-bg: var(--blue-500);
164
+ }
165
+ }
166
+ &&__warning {
167
+ --_ba-bg: var(--yellow-100);
168
+ --_ba-fc: var(--yellow-500);
169
+ --_ba-sq-bg: var(--yellow-200);
170
+ &.s-badge__important {
171
+ --_ba-bg: var(--yellow-400);
172
+ --_ba-sq-bg: var(--yellow-500);
173
+ }
174
+ }
195
175
  &&__danger {
196
- --_ba-bc: var(--red-300);
176
+ --_ba-bg: var(--red-100);
177
+ --_ba-fc: var(--red-500);
178
+ --_ba-sq-bg: var(--red-200);
179
+ &.s-badge__important {
180
+ --_ba-bg: var(--red-400);
181
+ --_ba-sq-bg: var(--red-500);
182
+ }
183
+ }
184
+ &&__critical {
197
185
  --_ba-bg: var(--red-200);
198
186
  --_ba-fc: var(--red-600);
199
-
200
- &.s-badge__filled {
201
- --_ba-bg: var(--red-400);
202
- --_ba-fc: var(--white);
187
+ --_ba-sq-bg: var(--red-300);
188
+ &.s-badge__important {
189
+ --_ba-bg: var(--red-500);
190
+ --_ba-sq-bg: var(--red-600);
203
191
  }
204
192
  }
205
- &&__info {
206
- --_ba-bc: var(--blue-300);
207
- --_ba-bg: var(--blue-200);
208
- --_ba-fc: var(--blue-600);
193
+ &&__tonal {
194
+ --_ba-bg: var(--black-200);
195
+ --_ba-fc: var(--black-600);
196
+ --_ba-sq-bg: var(--black-300);
197
+ &.s-badge__important {
198
+ --_ba-bg: var(--black-500);
199
+ --_ba-sq-bg: var(--black-600);
200
+ }
209
201
  }
210
-
211
- &&__warning {
212
- --_ba-bc: var(--yellow-300);
213
- --_ba-bg: var(--yellow-200);
214
- --_ba-fc: var(--yellow-600);
202
+ &&__success {
203
+ --_ba-bg: var(--green-100);
204
+ --_ba-fc: var(--green-600);
205
+ --_ba-sq-bg: var(--green-200);
206
+ &.s-badge__important {
207
+ --_ba-bg: var(--green-500);
208
+ --_ba-sq-bg: var(--green-600);
209
+ }
210
+ }
211
+ &&__featured {
212
+ --_ba-bg: var(--purple-100);
213
+ --_ba-fc: var(--purple-500);
214
+ --_ba-sq-bg: var(--purple-200);
215
+ &.s-badge__important {
216
+ --_ba-bg: var(--purple-400);
217
+ --_ba-sq-bg: var(--purple-500);
218
+ }
215
219
  }
216
220
 
217
- &&__muted {
218
- --_ba-bc: var(--black-300);
219
- --_ba-bg: var(--black-200);
220
- --_ba-fc: var(--black-500);
221
-
222
- &.s-badge__filled {
223
- --_ba-bg: var(--black-500);
224
- --_ba-fc: var(--white);
221
+ // SQUARED
222
+ &&__squared {
223
+ --_ba_box-shadow: 0 0 0 var(--_ba-bx-sh-w) var(--_ba-sq-bg);
224
+ svg {
225
+ background-color: var(--_ba-sq-bg);
226
+ box-shadow: var(--_ba_box-shadow);
227
+ margin-right: var(--_ba-bx-sh-w)
225
228
  }
226
229
  }
230
+ &&__squared:not(&__important) {
231
+ .highcontrast-mode({
232
+ //Add border around the square in high contrast mode
233
+ --_ba_box-shadow: 0 0 0 calc(var(--_ba-bx-sh-w) - var(--su1)) var(--_ba-sq-bg),
234
+ 0 0 0 max(var(--su1), var(--_ba-bx-sh-w)) currentcolor var(--_ba-bx-sh-inset);
235
+ });
236
+ }
227
237
 
228
- &&__new {
229
- --_ba-bc: var(--_ba-bg);
230
- --_ba-bg: var(--purple-100);
231
- --_ba-fc: var(--purple-400);
232
- --_ba-fw: bold;
233
- --_ba-tt: uppercase;
238
+ // ICONS
239
+ &:not(&__squared):has(> svg){
240
+ //We want a smaller gap for icons that aren't squared
241
+ --_ba-gap: calc(var(--_ba-px) - var(--su2));
234
242
  }
235
243
 
236
- // CHILD ELEMENTS
237
- &--image, // Included with no base class to account for usage in .s-progress__badge
238
- & &--image {
239
- align-self: center;
240
- display: inline-flex;
241
- margin-right: var(--su1);
242
- margin-left: calc((var(--su4) + var(--su1)) * -1);
244
+ // IMPORTANT
245
+ &&__important {
246
+ --_ba-bg: var(--black-400);
247
+ --_ba-sq-bg: var(--black-500);
248
+ --_ba-fw: 600;
249
+ --_ba-fc: var(--black-050);
243
250
  }
244
251
 
245
252
  // INTERACTION
@@ -249,18 +256,17 @@
249
256
 
250
257
  align-self: var(--_ba-as);
251
258
  background-color: var(--_ba-bg);
252
- border: var(--su-static1) solid var(--_ba-bc);
259
+ border-left: var(--_ba-bl) solid var(--_ba-bc);
253
260
  color: var(--_ba-fc);
254
261
  font-size: var(--_ba-fs);
255
- gap: var(--_ba-g);
256
262
  font-weight: var(--_ba-fw);
257
- line-height: var(--_ba-lh);
258
- min-width: var(--_ba-wmn);
263
+ gap: var(--_ba-gap, var(--_ba-px));
259
264
  padding: var(--_ba-py) var(--_ba-px);
265
+ line-height: var(--lh-md);
266
+ min-width: var(--_ba-wmn);
260
267
  text-transform: var(--_ba-tt);
261
268
 
262
269
  align-items: center;
263
- border-radius: var(--br-md);
264
270
  display: inline-flex;
265
271
  justify-content: center;
266
272
  text-decoration: none;
@@ -29,7 +29,7 @@
29
29
 
30
30
  & &--container { // When we want to keep hero content capped
31
31
  margin: 0 auto;
32
- max-width: calc(var(--s-step) * 10);
32
+ max-width: var(--su1024);
33
33
  position: relative;
34
34
  width: 100%;
35
35
  }
@@ -0,0 +1,130 @@
1
+ .s-bling {
2
+ --_bl-bg: unset;
3
+ --_bl-size: calc(var(--su8) + var(--su2));
4
+ // Icon
5
+ --_bl-icon: url("data:image/svg+xml;utf8,<svg viewBox='0 0 8 8' xmlns='http://www.w3.org/2000/svg'><circle cx='4' cy='4' r='4'/></svg>");
6
+ --_bl-icon-bg: var(--black-500);
7
+ --_bl-icon-size: var(--su8);
8
+
9
+ // VARIANTS
10
+ &&__activity {
11
+ --_bl-icon-bg: var(--pink-400);
12
+ }
13
+ // Metals
14
+ &&__gold {
15
+ --_bl-icon-bg: var(--yellow-400);
16
+ --_bl-icon: url("data:image/svg+xml;,<svg viewBox='0 0 8 9' xmlns='http://www.w3.org/2000/svg'><path d='M3.89709 0L7.79421 2.25V6.75L3.89709 9L-1.95503e-05 6.75V2.25L3.89709 0Z'/></svg>");
17
+ }
18
+
19
+ &&__silver {
20
+ --_bl-icon-bg: var(--blue-400);
21
+ --_bl-icon: url("data:image/svg+xml;,<svg viewBox='0 0 9 9' xmlns='http://www.w3.org/2000/svg'><path d='M4.27979 0L8.55954 3.10942L6.92482 8.14058H1.63475L3.09944e-05 3.10942L4.27979 0Z'/></svg>");
22
+ }
23
+
24
+ &&__bronze {
25
+ --_bl-icon-bg: var(--orange-400);
26
+ --_bl-icon: url("data:image/svg+xml;,<svg viewBox='0 0 8 8' xmlns='http://www.w3.org/2000/svg'><rect width='8' height='8'/></svg>");
27
+ }
28
+
29
+ // MODIFIERS
30
+ // Filled
31
+ &&__filled {
32
+ --_bl-bg: var(--black-225);
33
+ --_bl-icon-bg: var(--black-600);
34
+ --_bl-size: var(--su24);
35
+
36
+ &.s-bling {
37
+ &__rep {
38
+ --_bl-bg: var(--black-300);
39
+ .highcontrast-dark-mode({
40
+ --_bl-icon-bg: var(--black-050);
41
+ });
42
+ }
43
+ &__activity {
44
+ --_bl-bg: var(--pink-300);
45
+ --_bl-icon-bg: var(--pink-600);
46
+ .highcontrast-mode({
47
+ --_bl-icon-bg: var(--black-050);
48
+ });
49
+ .highcontrast-dark-mode({
50
+ --_bl-bg: var(--pink-400);
51
+ });
52
+ }
53
+ &__gold {
54
+ --_bl-bg: var(--yellow-300);
55
+ --_bl-icon-bg: var(--yellow-600);
56
+ .highcontrast-mode({
57
+ --_bl-icon-bg: var(--black-050);
58
+ });
59
+ .highcontrast-dark-mode({
60
+ --_bl-bg: var(--yellow-400);
61
+ });
62
+ }
63
+ &__silver {
64
+ --_bl-bg: var(--blue-300);
65
+ --_bl-icon-bg: var(--blue-600);
66
+ .highcontrast-mode({
67
+ --_bl-icon-bg: var(--black-050);
68
+ });
69
+ .highcontrast-dark-mode({
70
+ --_bl-bg: var(--blue-400);
71
+ });
72
+ }
73
+ &__bronze {
74
+ --_bl-bg: var(--orange-300);
75
+ --_bl-icon-bg: var(--orange-600);
76
+ .highcontrast-mode({
77
+ --_bl-icon-bg: var(--black-050);
78
+ });
79
+ .highcontrast-dark-mode({
80
+ --_bl-bg: var(--orange-400);
81
+ });
82
+ }
83
+ }
84
+ }
85
+
86
+ // SIZES
87
+ // Unfilled Sizes
88
+ &&__sm:not(&__filled) {
89
+ --_bl-size: var(--su8);
90
+ }
91
+ // Filled Sizes
92
+ &&__sm&__filled {
93
+ --_bl-size: var(--su16);
94
+ }
95
+ &&__lg&__filled {
96
+ --_bl-size: calc(var(--su24) + var(--su4)); // 28px
97
+ }
98
+ // Icon Sizes
99
+ &&__sm {
100
+ --_bl-icon-size: var(--su6);
101
+ }
102
+ &&__sm&__gold,
103
+ &&__sm&__silver {
104
+ --_bl-icon-size: calc(var(--su6) + var(--su1)); // 7px
105
+ }
106
+ &&__gold:not(&__sm),
107
+ &&__silver:not(&__sm) {
108
+ --_bl-icon-size: calc(var(--su8) + var(--su1)); // 9px
109
+ }
110
+
111
+ // CHILD ELEMENTS
112
+ &:before {
113
+ -webkit-mask: var(--_bl-icon) no-repeat center;
114
+ mask: var(--_bl-icon) no-repeat center;
115
+
116
+ background-color: var(--_bl-icon-bg);
117
+ content: "";
118
+ height: var(--_bl-icon-size);
119
+ width: var(--_bl-icon-size);
120
+ }
121
+
122
+ background-color: var(--_bl-bg);
123
+ height: var(--_bl-size);
124
+ width: var(--_bl-size);
125
+
126
+ align-items: center;
127
+ color: inherit;
128
+ display: inline-flex;
129
+ justify-content: center;
130
+ }