@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.
- package/dist/css/stacks.css +6068 -5972
- package/dist/css/stacks.min.css +1 -1
- package/lib/atomic/flex.less +6 -34
- package/lib/atomic/height.less +22 -0
- package/lib/atomic/misc.less +21 -15
- package/lib/atomic/positioning.less +34 -0
- package/lib/atomic/sizing.less +76 -0
- package/lib/atomic/spacing.less +35 -75
- package/lib/atomic/typography.less +52 -13
- package/lib/atomic/width.less +27 -0
- package/lib/base/body.less +2 -4
- package/lib/base/configuration-static.less +3 -3
- package/lib/base/internal.less +3 -5
- package/lib/base/reset-normalize.less +1 -1
- package/lib/components/activity-indicator/activity-indicator.less +1 -17
- package/lib/components/avatar/avatar.less +2 -2
- package/lib/components/badge/badge.less +179 -173
- package/lib/components/banner/banner.less +11 -10
- package/lib/components/bling/bling.less +130 -0
- package/lib/components/button/button.less +233 -376
- package/lib/components/button-group/button-group.less +2 -1
- package/lib/components/checkbox_radio/checkbox_radio.less +195 -113
- package/lib/components/code-block/code-block.fixtures.ts +2 -2
- package/lib/components/code-block/code-block.less +1 -1
- package/lib/components/description/description.less +15 -1
- package/lib/components/empty-state/empty-state.less +17 -6
- package/lib/components/form-group/form-group.less +25 -0
- package/lib/components/input-icon/input-icon.less +3 -3
- package/lib/components/input_textarea/input_textarea.less +71 -58
- package/lib/components/menu/menu.less +83 -21
- package/lib/components/modal/modal.less +10 -10
- package/lib/components/navigation/navigation.less +62 -37
- package/lib/components/notice/notice.less +89 -74
- package/lib/components/pagination/pagination.less +44 -43
- package/lib/components/popover/popover.less +8 -10
- package/lib/components/post-summary/post-summary.less +6 -5
- package/lib/components/progress-bar/progress-bar.less +1 -1
- package/lib/components/prose/prose.less +5 -5
- package/lib/components/select/select.less +26 -37
- package/lib/components/sidebar-widget/sidebar-widget.less +2 -2
- package/lib/components/table/table.less +0 -8
- package/lib/components/tag/tag.less +69 -71
- package/lib/components/toast/toast.less +4 -2
- package/lib/components/topbar/topbar.less +4 -4
- package/lib/components/user-card/user-card.less +118 -92
- package/lib/components/vote/vote.less +134 -0
- package/lib/exports/color-sets.less +78 -77
- package/lib/exports/constants-helpers.less +4 -8
- package/lib/exports/constants-type.less +18 -36
- package/lib/exports/mixins.less +71 -0
- package/lib/stacks-static.less +7 -5
- package/lib/test/visual-test-utils.ts +42 -10
- package/lib/tsconfig.json +1 -1
- package/package.json +1 -1
- package/lib/atomic/width-height.less +0 -194
- package/lib/components/award-bling/award-bling.less +0 -32
- package/lib/components/check-control/check-control.less +0 -17
- package/lib/components/check-group/check-group.less +0 -19
- package/lib/components/skeleton/skeleton.less +0 -73
- package/lib/exports/spacing-mixins.less +0 -67
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
//
|
|
12
12
|
// tl;dr: don't put inline after values in this file
|
|
13
13
|
|
|
14
|
-
//
|
|
14
|
+
// Colors are based on the variables in Figma: https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Product-UI?node-id=610-18798&p=f&vars=1&var-set-id=1713-5190&m=dev
|
|
15
|
+
|
|
15
16
|
// White
|
|
16
17
|
.set-white() {
|
|
17
18
|
default: hsv(0, 0%, 100%);
|
|
@@ -30,14 +31,14 @@
|
|
|
30
31
|
.set-black() {
|
|
31
32
|
050: hsv(0, 0%, 100%);
|
|
32
33
|
100: hsv(30, 1%, 97%);
|
|
33
|
-
150: hsv(
|
|
34
|
-
200: hsv(
|
|
35
|
-
225: hsv(
|
|
36
|
-
250: hsv(
|
|
37
|
-
300: hsv(
|
|
38
|
-
350: hsv(
|
|
39
|
-
400: hsv(
|
|
40
|
-
500: hsv(
|
|
34
|
+
150: hsv(40, 1%, 94%);
|
|
35
|
+
200: hsv(216, 2%, 89%);
|
|
36
|
+
225: hsv(225, 2%, 86%);
|
|
37
|
+
250: hsv(218, 4%, 82%);
|
|
38
|
+
300: hsv(218, 5%, 69%);
|
|
39
|
+
350: hsv(218, 6%, 55%);
|
|
40
|
+
400: hsv(225, 7%, 45%);
|
|
41
|
+
500: hsv(223, 9%, 30%);
|
|
41
42
|
600: hsv(345, 13%, 13%);
|
|
42
43
|
default: hsv(0, 0%, 0%);
|
|
43
44
|
}
|
|
@@ -51,21 +52,21 @@
|
|
|
51
52
|
300: hsv(0, 0%, 55%);
|
|
52
53
|
350: hsv(0, 0%, 65%);
|
|
53
54
|
400: hsv(30, 5%, 85%);
|
|
54
|
-
500: hsv(
|
|
55
|
+
500: hsv(27, 4%, 95%);
|
|
55
56
|
600: hsv(0, 0%, 100%);
|
|
56
57
|
default: hsv(0, 0%, 100%);
|
|
57
58
|
}
|
|
58
59
|
.set-black-hc() {
|
|
59
60
|
050: hsv(0, 0%, 100%);
|
|
60
61
|
100: hsv(30, 1%, 97%);
|
|
61
|
-
150: hsv(
|
|
62
|
-
200: hsv(
|
|
63
|
-
225: hsv(
|
|
64
|
-
250: hsv(
|
|
62
|
+
150: hsv(40, 1%, 94%);
|
|
63
|
+
200: hsv(216, 2%, 89%);
|
|
64
|
+
225: hsv(225, 2%, 86%);
|
|
65
|
+
250: hsv(218, 4%, 82%);
|
|
65
66
|
300: hsv(229, 7%, 61%);
|
|
66
|
-
350: hsv(
|
|
67
|
-
400: hsv(204, 6%,
|
|
68
|
-
500: hsv(
|
|
67
|
+
350: hsv(214, 8%, 36%);
|
|
68
|
+
400: hsv(204, 6%, 33.5%);
|
|
69
|
+
500: hsv(223, 9%, 29.5%);
|
|
69
70
|
600: hsv(345, 13%, 13%);
|
|
70
71
|
default: hsv(0, 0%, 0%);
|
|
71
72
|
}
|
|
@@ -79,14 +80,14 @@
|
|
|
79
80
|
300: hsv(0, 0%, 55%);
|
|
80
81
|
350: hsv(0, 0%, 65%);
|
|
81
82
|
400: hsv(30, 5%, 85%);
|
|
82
|
-
500: hsv(
|
|
83
|
+
500: hsv(27, 4%, 95%);
|
|
83
84
|
600: hsv(0, 0%, 100%);
|
|
84
85
|
default: hsv(0, 0%, 100%);
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
// Orange
|
|
88
89
|
.set-orange() {
|
|
89
|
-
100: hsv(
|
|
90
|
+
100: hsv(23, 5%, 100%);
|
|
90
91
|
200: hsv(22, 26%, 100%);
|
|
91
92
|
300: hsv(22, 65%, 96%);
|
|
92
93
|
400: hsv(22, 92%, 91%);
|
|
@@ -94,33 +95,33 @@
|
|
|
94
95
|
600: hsv(22, 95%, 44%);
|
|
95
96
|
}
|
|
96
97
|
.set-orange-dark() {
|
|
97
|
-
100:
|
|
98
|
-
200:
|
|
99
|
-
300:
|
|
100
|
-
400:
|
|
101
|
-
500:
|
|
102
|
-
600:
|
|
98
|
+
100: hsv(21, 80%, 25%);
|
|
99
|
+
200: hsv(22, 76%, 45%);
|
|
100
|
+
300: hsv(22, 47%, 78%);
|
|
101
|
+
400: hsv(22, 40%, 90%);
|
|
102
|
+
500: hsv(22, 30%, 99%);
|
|
103
|
+
600: hsv(22, 20%, 98%);
|
|
103
104
|
}
|
|
104
105
|
.set-orange-hc() {
|
|
105
|
-
100: hsv(
|
|
106
|
-
200: hsv(
|
|
106
|
+
100: hsv(23, 5%, 100%);
|
|
107
|
+
200: hsv(23, 5%, 100%);
|
|
107
108
|
300: hsv(22, 92%, 91%);
|
|
108
109
|
400: hsv(22, 98%, 59%);
|
|
109
|
-
500: hsv(22, 95%,
|
|
110
|
-
600: hsv(22, 95%,
|
|
110
|
+
500: hsv(22, 95%, 43%);
|
|
111
|
+
600: hsv(22, 95%, 43%);
|
|
111
112
|
}
|
|
112
113
|
.set-orange-hc-dark() {
|
|
113
|
-
100: hsv(
|
|
114
|
-
200: hsv(
|
|
115
|
-
300: hsv(22,
|
|
116
|
-
400: hsv(22,
|
|
114
|
+
100: hsv(21, 80%, 25%);
|
|
115
|
+
200: hsv(21, 80%, 25%);
|
|
116
|
+
300: hsv(22, 35%, 87%);
|
|
117
|
+
400: hsv(22, 30%, 99%);
|
|
117
118
|
500: hsv(22, 20%, 98%);
|
|
118
119
|
600: hsv(22, 20%, 98%);
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
// Blue
|
|
122
123
|
.set-blue() {
|
|
123
|
-
100: hsv(
|
|
124
|
+
100: hsv(225, 6%, 100%);
|
|
124
125
|
200: hsv(226, 20%, 98%);
|
|
125
126
|
300: hsv(226, 45%, 97%);
|
|
126
127
|
400: hsv(226, 67%, 95%);
|
|
@@ -128,41 +129,41 @@
|
|
|
128
129
|
600: hsv(226, 85%, 40%);
|
|
129
130
|
}
|
|
130
131
|
.set-blue-dark() {
|
|
131
|
-
100: hsv(220,
|
|
132
|
+
100: hsv(220, 56%, 30%);
|
|
132
133
|
200: hsv(220, 50%, 60%);
|
|
133
|
-
300: hsv(
|
|
134
|
-
400: hsv(
|
|
134
|
+
300: hsv(220, 45%, 88%);
|
|
135
|
+
400: hsv(220, 35%, 100%);
|
|
135
136
|
500: hsv(220, 20%, 100%);
|
|
136
|
-
600: hsv(
|
|
137
|
+
600: hsv(221, 10%, 100%);
|
|
137
138
|
}
|
|
138
139
|
.set-blue-hc() {
|
|
139
|
-
100: hsv(
|
|
140
|
-
200: hsv(
|
|
140
|
+
100: hsv(225, 6%, 100%);
|
|
141
|
+
200: hsv(225, 6%, 100%);
|
|
141
142
|
300: hsv(226, 67%, 95%);
|
|
142
143
|
400: hsv(226, 80%, 70%);
|
|
143
144
|
500: hsv(226, 85%, 40%);
|
|
144
145
|
600: hsv(226, 85%, 40%);
|
|
145
146
|
}
|
|
146
147
|
.set-blue-hc-dark() {
|
|
147
|
-
100: hsv(220,
|
|
148
|
-
200: hsv(220,
|
|
149
|
-
300: hsv(220,
|
|
150
|
-
400: hsv(220,
|
|
151
|
-
500: hsv(
|
|
152
|
-
600: hsv(
|
|
148
|
+
100: hsv(220, 56%, 30%);
|
|
149
|
+
200: hsv(220, 56%, 30%);
|
|
150
|
+
300: hsv(220, 35%, 100%);
|
|
151
|
+
400: hsv(220, 20%, 100%);
|
|
152
|
+
500: hsv(221, 10%, 100%);
|
|
153
|
+
600: hsv(221, 10%, 100%);
|
|
153
154
|
}
|
|
154
155
|
|
|
155
156
|
// Green
|
|
156
157
|
.set-green() {
|
|
157
|
-
100: hsv(
|
|
158
|
-
200: hsv(82, 30%,
|
|
159
|
-
300: hsv(82,
|
|
158
|
+
100: hsv(84, 6%, 98%);
|
|
159
|
+
200: hsv(82, 30%, 90%);
|
|
160
|
+
300: hsv(82, 46%, 75%);
|
|
160
161
|
400: hsv(82, 80%, 60%);
|
|
161
162
|
500: hsv(82, 90%, 45%);
|
|
162
163
|
600: hsv(82, 95%, 30%);
|
|
163
164
|
}
|
|
164
165
|
.set-green-dark() {
|
|
165
|
-
100: hsv(
|
|
166
|
+
100: hsv(81, 80%, 22%);
|
|
166
167
|
200: hsv(82, 55%, 45%);
|
|
167
168
|
300: hsv(82, 44%, 70%);
|
|
168
169
|
400: hsv(82, 40%, 90%);
|
|
@@ -170,18 +171,18 @@
|
|
|
170
171
|
600: hsv(82, 20%, 100%);
|
|
171
172
|
}
|
|
172
173
|
.set-green-hc() {
|
|
173
|
-
100: hsv(
|
|
174
|
-
200: hsv(
|
|
174
|
+
100: hsv(84, 6%, 98%);
|
|
175
|
+
200: hsv(84, 6%, 98%);
|
|
175
176
|
300: hsv(82, 80%, 63%);
|
|
176
177
|
400: hsv(82, 93%, 38%);
|
|
177
178
|
500: hsv(82, 95%, 30%);
|
|
178
179
|
600: hsv(82, 95%, 30%);
|
|
179
180
|
}
|
|
180
181
|
.set-green-hc-dark() {
|
|
181
|
-
100: hsv(
|
|
182
|
-
200: hsv(
|
|
183
|
-
300: hsv(82,
|
|
184
|
-
400: hsv(82,
|
|
182
|
+
100: hsv(81, 80%, 22%);
|
|
183
|
+
200: hsv(81, 80%, 22%);
|
|
184
|
+
300: hsv(82, 40%, 90%);
|
|
185
|
+
400: hsv(82, 30%, 90%);
|
|
185
186
|
500: hsv(82, 20%, 100%);
|
|
186
187
|
600: hsv(82, 20%, 100%);
|
|
187
188
|
}
|
|
@@ -193,7 +194,7 @@
|
|
|
193
194
|
300: hsv(0, 50%, 90%);
|
|
194
195
|
400: hsv(0, 75%, 75%);
|
|
195
196
|
500: hsv(0, 90%, 55%);
|
|
196
|
-
600: hsv(0,
|
|
197
|
+
600: hsv(0, 96%, 35%);
|
|
197
198
|
}
|
|
198
199
|
.set-red-dark() {
|
|
199
200
|
100: hsv(0, 71%, 20%);
|
|
@@ -208,8 +209,8 @@
|
|
|
208
209
|
200: hsv(0, 6%, 99%);
|
|
209
210
|
300: hsv(0, 75%, 75%);
|
|
210
211
|
400: hsv(0, 90%, 55%);
|
|
211
|
-
500: hsv(0,
|
|
212
|
-
600: hsv(0,
|
|
212
|
+
500: hsv(0, 96%, 35%);
|
|
213
|
+
600: hsv(0, 96%, 35%);
|
|
213
214
|
}
|
|
214
215
|
.set-red-hc-dark() {
|
|
215
216
|
100: hsv(0, 71%, 20%);
|
|
@@ -223,7 +224,7 @@
|
|
|
223
224
|
// Yellow
|
|
224
225
|
.set-yellow() {
|
|
225
226
|
100: hsv(48, 8%, 99%);
|
|
226
|
-
200: hsv(48,
|
|
227
|
+
200: hsv(48, 36%, 96%);
|
|
227
228
|
300: hsv(48, 94%, 93%);
|
|
228
229
|
400: hsv(48, 100%, 67%);
|
|
229
230
|
500: hsv(48, 100%, 50%);
|
|
@@ -234,13 +235,13 @@
|
|
|
234
235
|
200: hsv(48, 75%, 35%);
|
|
235
236
|
300: hsv(48, 55%, 65%);
|
|
236
237
|
400: hsv(48, 45%, 90%);
|
|
237
|
-
500: hsv(48, 30%,
|
|
238
|
+
500: hsv(48, 30%, 89%);
|
|
238
239
|
600: hsv(48, 10%, 100%);
|
|
239
240
|
}
|
|
240
241
|
.set-yellow-hc() {
|
|
241
242
|
100: hsv(48, 8%, 99%);
|
|
242
243
|
200: hsv(48, 8%, 99%);
|
|
243
|
-
300: hsv(48,
|
|
244
|
+
300: hsv(48, 100%, 67%);
|
|
244
245
|
400: hsv(48, 100%, 42%);
|
|
245
246
|
500: hsv(48, 100%, 30%);
|
|
246
247
|
600: hsv(48, 100%, 30%);
|
|
@@ -248,8 +249,8 @@
|
|
|
248
249
|
.set-yellow-hc-dark() {
|
|
249
250
|
100: hsv(48, 80%, 20%);
|
|
250
251
|
200: hsv(48, 80%, 20%);
|
|
251
|
-
300: hsv(48,
|
|
252
|
-
400: hsv(48,
|
|
252
|
+
300: hsv(48, 45%, 90%);
|
|
253
|
+
400: hsv(48, 30%, 89%);
|
|
253
254
|
500: hsv(48, 10%, 100%);
|
|
254
255
|
600: hsv(48, 10%, 100%);
|
|
255
256
|
}
|
|
@@ -282,17 +283,17 @@
|
|
|
282
283
|
.set-purple-hc-dark() {
|
|
283
284
|
100: hsv(252, 70%, 30%);
|
|
284
285
|
200: hsv(252, 70%, 30%);
|
|
285
|
-
300: hsv(252,
|
|
286
|
-
400: hsv(252,
|
|
286
|
+
300: hsv(252, 33%, 97%);
|
|
287
|
+
400: hsv(252, 20%, 98%);
|
|
287
288
|
500: hsv(252, 10%, 99%);
|
|
288
289
|
600: hsv(252, 10%, 99%);
|
|
289
290
|
}
|
|
290
291
|
|
|
291
292
|
.set-pink() {
|
|
292
|
-
100: hsv(
|
|
293
|
+
100: hsv(296, 6%, 99%);
|
|
293
294
|
200: hsv(293, 25%, 95%);
|
|
294
295
|
300: hsv(293, 45%, 95%);
|
|
295
|
-
400: hsv(
|
|
296
|
+
400: hsv(292, 68%, 91%);
|
|
296
297
|
500: hsv(293, 80%, 70%);
|
|
297
298
|
600: hsv(293, 90%, 45%);
|
|
298
299
|
}
|
|
@@ -302,23 +303,23 @@
|
|
|
302
303
|
300: hsv(293, 35%, 78%);
|
|
303
304
|
400: hsv(293, 25%, 98%);
|
|
304
305
|
500: hsv(293, 18%, 99%);
|
|
305
|
-
600: hsv(
|
|
306
|
+
600: hsv(295, 10%, 99%);
|
|
306
307
|
}
|
|
307
308
|
.set-pink-hc() {
|
|
308
|
-
100: hsv(
|
|
309
|
-
200: hsv(
|
|
310
|
-
300: hsv(
|
|
311
|
-
400: hsv(293, 80%,
|
|
309
|
+
100: hsv(296, 6%, 99%);
|
|
310
|
+
200: hsv(296, 6%, 99%);
|
|
311
|
+
300: hsv(292, 68%, 91%);
|
|
312
|
+
400: hsv(293, 80%, 62%);
|
|
312
313
|
500: hsv(293, 90%, 45%);
|
|
313
314
|
600: hsv(293, 90%, 45%);
|
|
314
315
|
}
|
|
315
316
|
.set-pink-hc-dark() {
|
|
316
317
|
100: hsv(293, 80%, 20%);
|
|
317
318
|
200: hsv(293, 80%, 20%);
|
|
318
|
-
300: hsv(293,
|
|
319
|
-
400: hsv(293,
|
|
320
|
-
500: hsv(
|
|
321
|
-
600: hsv(
|
|
319
|
+
300: hsv(293, 25%, 98%);
|
|
320
|
+
400: hsv(293, 18%, 99%);
|
|
321
|
+
500: hsv(295, 10%, 99%);
|
|
322
|
+
600: hsv(295, 10%, 99%);
|
|
322
323
|
}
|
|
323
324
|
|
|
324
325
|
// Retaining legacy metallic colors for backward compatibility
|
|
@@ -31,7 +31,7 @@ body {
|
|
|
31
31
|
--zi-modals: 9000; // Modals
|
|
32
32
|
|
|
33
33
|
// Border Radius
|
|
34
|
-
--br-md: calc(var(--su-static4) + var(--su-static6)); // 10px
|
|
34
|
+
--br-md: calc(var(--su-static4) + var(--su-static6)); // 10px
|
|
35
35
|
--br-circle: 50%;
|
|
36
36
|
--br-pill: 1000px;
|
|
37
37
|
// TODO SHINE Retaining legacy border radius for backward compatibility
|
|
@@ -50,18 +50,14 @@ body {
|
|
|
50
50
|
|
|
51
51
|
--default-transition-duration: 0.1s;
|
|
52
52
|
--transition-time: var(--default-transition-duration);
|
|
53
|
-
|
|
54
|
-
// Sizing
|
|
55
|
-
--s-full: 97.2307692rem; // Based on a pixel size of 1264px;
|
|
56
|
-
--s-step: calc(var(--s-full) / 12);
|
|
57
53
|
}
|
|
58
54
|
|
|
59
55
|
// ============================================================================
|
|
60
56
|
// $ RESPONSIVE BREAKPOINTS
|
|
61
57
|
// ----------------------------------------------------------------------------
|
|
62
|
-
@breakpoint-lg:
|
|
63
|
-
@breakpoint-md:
|
|
64
|
-
@breakpoint-sm:
|
|
58
|
+
@breakpoint-lg: 92.25rem; // 1476px
|
|
59
|
+
@breakpoint-md: 71.875rem; // 1150px
|
|
60
|
+
@breakpoint-sm: 48.75rem; // 780px
|
|
65
61
|
|
|
66
62
|
// ============================================================================
|
|
67
63
|
// $ SCROLLBAR STYLING
|
|
@@ -88,48 +88,30 @@
|
|
|
88
88
|
Menlo, Monaco, Consolas, // A few sensible system font choices
|
|
89
89
|
monospace; // The final fallback for rendering in monospace.
|
|
90
90
|
|
|
91
|
-
html
|
|
91
|
+
html {
|
|
92
|
+
font-size: 100%;
|
|
93
|
+
}
|
|
94
|
+
|
|
92
95
|
body {
|
|
93
96
|
--ff-sans: @ff-sans;
|
|
94
97
|
--ff-serif: @ff-serif;
|
|
95
98
|
--ff-mono: @ff-mono;
|
|
96
99
|
--theme-body-font-family: var(--ff-sans);
|
|
97
100
|
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
--fs-
|
|
103
|
-
--fs-
|
|
104
|
-
--fs-
|
|
105
|
-
|
|
106
|
-
//
|
|
107
|
-
--fs-
|
|
108
|
-
--fs-
|
|
109
|
-
--fs-
|
|
110
|
-
--fs-
|
|
111
|
-
--fs-
|
|
112
|
-
--fs-headline2: 2.571rem; // 36px
|
|
113
|
-
--fs-display1: 3.286rem; // 46px
|
|
114
|
-
--fs-display2: 4.143rem; // 58px
|
|
115
|
-
--fs-display3: 5.143rem; // 72px
|
|
116
|
-
--fs-display4: 7.143rem; // 100px
|
|
117
|
-
|
|
118
|
-
// Relative to the parent
|
|
119
|
-
--fs-body2-relative: 1.143rem; // 16px
|
|
120
|
-
--fs-body3-relative: 1.286rem; // 18px
|
|
121
|
-
--fs-subheading-relative: 1.429rem; // 20px
|
|
122
|
-
--fs-title-relative: 1.571rem; // 22px
|
|
123
|
-
--fs-headline1-relative: 2rem; // 28px
|
|
124
|
-
--fs-headline2-relative: 2.571rem; // 36px
|
|
125
|
-
--fs-display1-relative: 3.286rem; // 46px
|
|
126
|
-
--fs-display2-relative: 4.143rem; // 58px
|
|
127
|
-
--fs-display3-relative: 5.143rem; // 72px
|
|
128
|
-
--fs-display4-relative: 7.143rem; // 100px
|
|
129
|
-
|
|
130
|
-
// this value is not using spacing units because the calc involved results
|
|
131
|
-
// in unexpected sizing. I'm not sure why, honestly.
|
|
132
|
-
--fs-base: 14px;
|
|
101
|
+
// All rem values are relative to the font size applied to <html> (16px by default).
|
|
102
|
+
--fs-fine: 0.75rem; // 12px
|
|
103
|
+
--fs-caption: 0.8125rem; // 13px
|
|
104
|
+
--fs-body1: 0.875rem; // 14px (base font size applied to <body>)
|
|
105
|
+
--fs-body2: 1rem; // 16px
|
|
106
|
+
--fs-body3: 1.125rem; // 18px
|
|
107
|
+
--fs-subheading: 1.25rem; // 20px
|
|
108
|
+
--fs-title: 1.375rem; // 22px
|
|
109
|
+
--fs-headline1: 1.75rem; // 28px
|
|
110
|
+
--fs-headline2: 2.25rem; // 36px
|
|
111
|
+
--fs-display1: 2.875rem; // 46px
|
|
112
|
+
--fs-display2: 3.625rem; // 58px
|
|
113
|
+
--fs-display3: 4.5rem; // 72px
|
|
114
|
+
--fs-display4: 6.25rem; // 100px
|
|
133
115
|
|
|
134
116
|
// ============================================================================
|
|
135
117
|
// $ LINE HEIGHT (lh-)
|
package/lib/exports/mixins.less
CHANGED
|
@@ -268,6 +268,77 @@
|
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
+
/**
|
|
272
|
+
* Generate base and responsive atomic sizing classes.
|
|
273
|
+
*
|
|
274
|
+
* Usage example:
|
|
275
|
+
* .generate-sizing('.m', margin, true);
|
|
276
|
+
* .generate-sizing('.ml', margin-left, true, percent);
|
|
277
|
+
* .generate-sizing('.mx'; margin-left, margin-right; true);
|
|
278
|
+
* .generate-sizing('.pr', padding-right);
|
|
279
|
+
*
|
|
280
|
+
* @param {string} prefix - What prefix to generate (e.g. `.m`, `.pr`, etc).
|
|
281
|
+
* @param {string|list} properties - What CSS properties to generate (e.g. `margin`, `margin-right, margin-left`, etc).
|
|
282
|
+
* @param {list} values - List of values to generate classes for.
|
|
283
|
+
* @param {string} [type='px'] - What set of values to generate. Options: `px` | `percent`.
|
|
284
|
+
* @param {boolean} [responsive=false] - Whether to generate responsive variants.
|
|
285
|
+
* @param {boolean} [negative=false] - Whether to generate negative value classes.
|
|
286
|
+
*/
|
|
287
|
+
.generate-sizing(@prefix, @properties, @values, @type: 'px', @responsive: false, @negative: false) {
|
|
288
|
+
#stacks-internals #build-classes(
|
|
289
|
+
@prefix,
|
|
290
|
+
{
|
|
291
|
+
.template(@value) {
|
|
292
|
+
each(@properties, #(@prop) {
|
|
293
|
+
& when (@type = 'px') and (@negative = false) {
|
|
294
|
+
@{prop}: var(~"--su@{value}") !important;
|
|
295
|
+
}
|
|
296
|
+
& when (@type = 'px') and (@negative = true) {
|
|
297
|
+
@{prop}: var(~"--sun@{value}") !important;
|
|
298
|
+
}
|
|
299
|
+
& when (@type = 'percent') and (@negative = false) {
|
|
300
|
+
@{prop}: ~"@{value}% !important";
|
|
301
|
+
}
|
|
302
|
+
& when (@type = 'percent') and (@negative = true) {
|
|
303
|
+
@{prop}: ~"-@{value}% !important";
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
@values,
|
|
309
|
+
@responsive
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Generate atomic sizing classes using predefined SU (spacing unit) values.
|
|
316
|
+
*
|
|
317
|
+
* Generates 12 utility classes (numbered 1-12) that map to specific SU values:
|
|
318
|
+
* 128, 256, 344, 448, 512, 640, 768, 848, 960, 1024, 1120, 1280.
|
|
319
|
+
*
|
|
320
|
+
* Usage example:
|
|
321
|
+
* .generate-su-sizing('.ws', width);
|
|
322
|
+
* .generate-su-sizing('.hs', height);
|
|
323
|
+
* .generate-su-sizing('.wmn', min-width);
|
|
324
|
+
*
|
|
325
|
+
* @param {string} prefix - Class prefix to generate (e.g. `.ws`, `.hs`, `.wmn`).
|
|
326
|
+
* @param {string} property - CSS property to set (e.g. `width`, `height`, `min-width`).
|
|
327
|
+
*/
|
|
328
|
+
.generate-su-sizing(@prefix, @property) {
|
|
329
|
+
@su-values: 128, 256, 344, 448, 512, 640, 768, 848, 960, 1024, 1120, 1280;
|
|
330
|
+
#stacks-internals #build-classes(
|
|
331
|
+
@prefix,
|
|
332
|
+
{
|
|
333
|
+
.template(@value) {
|
|
334
|
+
@su-value: extract(@su-values, @value);
|
|
335
|
+
@{property}: var(~"--su@{su-value}") !important;
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
1 2 3 4 5 6 7 8 9 10 11 12
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
|
|
271
342
|
// =============================================================================
|
|
272
343
|
// -- WEBKIT AUTOFILL
|
|
273
344
|
// -----------------------------------------------------------------------------
|
package/lib/stacks-static.less
CHANGED
|
@@ -9,17 +9,16 @@
|
|
|
9
9
|
@import "components/activity-indicator/activity-indicator.less";
|
|
10
10
|
@import "components/anchor/anchor.less";
|
|
11
11
|
@import "components/avatar/avatar.less";
|
|
12
|
-
@import "components/award-bling/award-bling.less";
|
|
13
12
|
@import "components/badge/badge.less";
|
|
14
13
|
@import "components/banner/banner.less";
|
|
14
|
+
@import "components/bling/bling.less";
|
|
15
15
|
@import "components/block-link/block-link.less";
|
|
16
16
|
@import "components/breadcrumbs/breadcrumbs.less";
|
|
17
17
|
@import "components/button/button.less";
|
|
18
18
|
@import "components/button-group/button-group.less";
|
|
19
19
|
@import "components/card/card.less";
|
|
20
|
-
@import "components/check-control/check-control.less";
|
|
21
|
-
@import "components/check-group/check-group.less";
|
|
22
20
|
@import "components/checkbox_radio/checkbox_radio.less";
|
|
21
|
+
@import "components/form-group/form-group.less";
|
|
23
22
|
@import "components/code-block/code-block.less";
|
|
24
23
|
@import "components/description/description.less";
|
|
25
24
|
@import "components/empty-state/empty-state.less";
|
|
@@ -43,7 +42,6 @@
|
|
|
43
42
|
@import "components/prose/prose.less";
|
|
44
43
|
@import "components/select/select.less";
|
|
45
44
|
@import "components/sidebar-widget/sidebar-widget.less";
|
|
46
|
-
@import "components/skeleton/skeleton.less";
|
|
47
45
|
@import "components/spinner/spinner.less";
|
|
48
46
|
@import "components/table/table.less";
|
|
49
47
|
@import "components/table-container/table-container.less";
|
|
@@ -53,6 +51,7 @@
|
|
|
53
51
|
@import "components/topbar/topbar.less";
|
|
54
52
|
@import "components/uploader/uploader.less";
|
|
55
53
|
@import "components/user-card/user-card.less";
|
|
54
|
+
@import "components/vote/vote.less";
|
|
56
55
|
|
|
57
56
|
// LESS CONSTANTS AND MIXINS
|
|
58
57
|
@import "exports/exports.less";
|
|
@@ -63,10 +62,13 @@
|
|
|
63
62
|
@import "atomic/flex.less";
|
|
64
63
|
@import "atomic/gap.less";
|
|
65
64
|
@import "atomic/grid.less";
|
|
65
|
+
@import "atomic/height.less";
|
|
66
|
+
@import "atomic/positioning.less";
|
|
66
67
|
@import "atomic/spacing.less";
|
|
68
|
+
@import "atomic/sizing.less";
|
|
67
69
|
@import "atomic/typography.less";
|
|
68
70
|
@import "atomic/misc.less";
|
|
69
|
-
@import "atomic/width
|
|
71
|
+
@import "atomic/width.less";
|
|
70
72
|
|
|
71
73
|
/* stylelint-disable */
|
|
72
74
|
#stacks-internals #screen-lg({
|
|
@@ -23,6 +23,7 @@ const scheduleVisualTest = ({
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
let retryAttempts = 3;
|
|
26
|
+
let lastError: Error | null = null;
|
|
26
27
|
|
|
27
28
|
do {
|
|
28
29
|
await fixture(element);
|
|
@@ -37,21 +38,22 @@ const scheduleVisualTest = ({
|
|
|
37
38
|
return;
|
|
38
39
|
} catch (error) {
|
|
39
40
|
const e = error as Error;
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
if (
|
|
43
|
-
retryAttempts > 0 &&
|
|
44
|
-
!e.message.includes("Visual diff failed.")
|
|
45
|
-
) {
|
|
46
|
-
retryAttempts--;
|
|
47
|
-
continue;
|
|
48
|
-
} else {
|
|
41
|
+
lastError = e;
|
|
42
|
+
// if the error is a visual diff failure, fail immediately
|
|
43
|
+
if (e.message.includes("Visual diff failed.")) {
|
|
49
44
|
throw e;
|
|
50
45
|
}
|
|
46
|
+
// otherwise retry (to prevent flaky tests due to snapshot capturing)
|
|
47
|
+
retryAttempts--;
|
|
51
48
|
} finally {
|
|
52
49
|
el.remove();
|
|
53
50
|
}
|
|
54
51
|
} while (retryAttempts > 0);
|
|
52
|
+
|
|
53
|
+
// If we exhausted all retries without success, throw the last error
|
|
54
|
+
if (lastError) {
|
|
55
|
+
throw lastError;
|
|
56
|
+
}
|
|
55
57
|
});
|
|
56
58
|
};
|
|
57
59
|
|
|
@@ -60,4 +62,34 @@ const runVisualTests = (args: VisualTestArgs) => {
|
|
|
60
62
|
testVariations.forEach(scheduleVisualTest);
|
|
61
63
|
};
|
|
62
64
|
|
|
63
|
-
|
|
65
|
+
const replaceHtml = (
|
|
66
|
+
componentTemplateResult: unknown,
|
|
67
|
+
textToReplace: string,
|
|
68
|
+
replacementHtml: string
|
|
69
|
+
) => {
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
|
+
const component = componentTemplateResult as any;
|
|
72
|
+
if (!Array.isArray(component.strings) || !Array.isArray(component.values)) {
|
|
73
|
+
throw new Error("Expected Lit TemplateResult type");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Replace placeholder with actual icon in the Lit template
|
|
77
|
+
const originalStrings = component.strings;
|
|
78
|
+
const updatedStrings = originalStrings.map((str: string) =>
|
|
79
|
+
str.replace(textToReplace, replacementHtml)
|
|
80
|
+
);
|
|
81
|
+
// Create a proper TemplateStringsArray with raw property
|
|
82
|
+
Object.defineProperty(updatedStrings, "raw", {
|
|
83
|
+
value: updatedStrings.map((str: string) => str),
|
|
84
|
+
enumerable: false,
|
|
85
|
+
});
|
|
86
|
+
// Reconstruct the template with updated strings and original values
|
|
87
|
+
const updatedComponent = {
|
|
88
|
+
...component,
|
|
89
|
+
strings: updatedStrings,
|
|
90
|
+
values: component.values,
|
|
91
|
+
};
|
|
92
|
+
return updatedComponent;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { runVisualTests, replaceHtml };
|
package/lib/tsconfig.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackoverflow/stacks",
|
|
3
3
|
"description": "Stack Overflow’s CSS and Design Pattern Library. Stacks is an atomic CSS library with classes and components for rapidly building Stack Overflow.",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
4
|
+
"version": "3.0.0-beta.21",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"lib",
|