@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
@@ -11,7 +11,8 @@
11
11
  //
12
12
  // tl;dr: don't put inline after values in this file
13
13
 
14
- // TODO SPARK update default values for white and black sets
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(30, 1%, 94%);
34
- 200: hsv(220, 2%, 89%);
35
- 225: hsv(220, 2%, 86%);
36
- 250: hsv(220, 4%, 82%);
37
- 300: hsv(220, 5%, 69%);
38
- 350: hsv(220, 6%, 55%);
39
- 400: hsv(220, 7%, 45%);
40
- 500: hsv(220, 8%, 30%);
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(30, 4%, 95%);
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(30, 1%, 94%);
62
- 200: hsv(210, 2%, 89%);
63
- 225: hsv(220, 2%, 86%);
64
- 250: hsv(220, 4%, 82%);
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(220, 7%, 36%);
67
- 400: hsv(204, 6%, 35%);
68
- 500: hsv(220, 8%, 30%);
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(30, 4%, 95%);
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(22, 5%, 100%);
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: hsl(22, 80%, 25%);
98
- 200: hsl(22, 75%, 45%);
99
- 300: hsl(22, 47%, 78%);
100
- 400: hsl(22, 40%, 90%);
101
- 500: hsl(22, 30%, 99%);
102
- 600: hsl(22, 20%, 98%);
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(22, 5%, 100%);
106
- 200: hsv(22, 5%, 100%);
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%, 44%);
110
- 600: hsv(22, 95%, 44%);
110
+ 500: hsv(22, 95%, 43%);
111
+ 600: hsv(22, 95%, 43%);
111
112
  }
112
113
  .set-orange-hc-dark() {
113
- 100: hsv(22, 80%, 25%);
114
- 200: hsv(22, 80%, 25%);
115
- 300: hsv(22, 76%, 60%);
116
- 400: hsv(22, 40%, 90%);
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(226, 6%, 100%);
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, 55%, 30%);
132
+ 100: hsv(220, 56%, 30%);
132
133
  200: hsv(220, 50%, 60%);
133
- 300: hsv(226, 45%, 88%);
134
- 400: hsv(226, 35%, 100%);
134
+ 300: hsv(220, 45%, 88%);
135
+ 400: hsv(220, 35%, 100%);
135
136
  500: hsv(220, 20%, 100%);
136
- 600: hsv(220, 10%, 100%);
137
+ 600: hsv(221, 10%, 100%);
137
138
  }
138
139
  .set-blue-hc() {
139
- 100: hsv(226, 6%, 100%);
140
- 200: hsv(226, 6%, 100%);
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, 55%, 30%);
148
- 200: hsv(220, 55%, 30%);
149
- 300: hsv(220, 50%, 60%);
150
- 400: hsv(220, 35%, 100%);
151
- 500: hsv(220, 10%, 100%);
152
- 600: hsv(220, 10%, 100%);
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(82, 6%, 98%);
158
- 200: hsv(82, 30%, 95%);
159
- 300: hsv(82, 50%, 80%);
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(82, 80%, 22%);
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(82, 6%, 98%);
174
- 200: hsv(82, 6%, 98%);
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(82, 80%, 22%);
182
- 200: hsv(82, 80%, 22%);
183
- 300: hsv(82, 55%, 45%);
184
- 400: hsv(82, 44%, 70%);
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, 95%, 35%);
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, 95%, 35%);
212
- 600: hsv(0, 95%, 35%);
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, 20%, 96%);
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%, 99%);
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, 80%, 80%);
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, 75%, 35%);
252
- 400: hsv(48, 45%, 90%);
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, 65%, 50%);
286
- 400: hsv(252, 45%, 70%);
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, 6%, 99%);
293
+ 100: hsv(296, 6%, 99%);
293
294
  200: hsv(293, 25%, 95%);
294
295
  300: hsv(293, 45%, 95%);
295
- 400: hsv(293, 68%, 91%);
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(293, 10%, 99%);
306
+ 600: hsv(295, 10%, 99%);
306
307
  }
307
308
  .set-pink-hc() {
308
- 100: hsv(293, 6%, 99%);
309
- 200: hsv(293, 6%, 99%);
310
- 300: hsv(293, 90%, 91%);
311
- 400: hsv(293, 80%, 60%);
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, 65%, 40%);
319
- 400: hsv(293, 30%, 80%);
320
- 500: hsv(293, 10%, 99%);
321
- 600: hsv(293, 10%, 99%);
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: 1264px;
63
- @breakpoint-md: 980px;
64
- @breakpoint-sm: 640px;
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
- // $ FONT SIZES (fs-)
100
- // Base font-size is 13px.
101
- // ----------------------------------------------------------------------------
102
- --fs-fine: 12px;
103
- --fs-caption: 13px;
104
- --fs-body1: 14px;
105
-
106
- // Relative to the root element
107
- --fs-body2: 1.143rem; // 16px
108
- --fs-body3: 1.286rem; // 18px
109
- --fs-subheading: 1.429rem; // 20px
110
- --fs-title: 1.571rem; // 22px
111
- --fs-headline1: 2rem; // 28px
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-)
@@ -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
  // -----------------------------------------------------------------------------
@@ -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-height.less";
71
+ @import "atomic/width.less";
70
72
 
71
73
  /* stylelint-disable */
72
74
  #stacks-internals #screen-lg({
package/lib/tsconfig.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "lib": ["dom", "es6", "dom.iterable", "scripthost"],
6
6
  "outDir": "../dist",
7
7
  "sourceMap": true,
8
- "moduleResolution": "node",
8
+ "moduleResolution": "bundler",
9
9
  "skipLibCheck": true,
10
10
  "declaration": true,
11
11
  "allowSyntheticDefaultImports": true,
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.2",
4
+ "version": "3.0.0-beta.20",
5
5
  "files": [
6
6
  "dist",
7
7
  "lib",