@stackoverflow/stacks 3.0.0-beta.3 → 3.0.0-beta.30

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 (108) hide show
  1. package/dist/controllers.d.ts +0 -2
  2. package/dist/css/stacks.css +14245 -15086
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +0 -364
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/atomic/backgrounds.less +67 -0
  7. package/lib/atomic/border-radius.less +38 -0
  8. package/lib/atomic/borders.less +73 -0
  9. package/lib/atomic/box-shadow.less +29 -0
  10. package/lib/atomic/box-sizing.less +3 -0
  11. package/lib/atomic/current-color.less +2 -0
  12. package/lib/atomic/cursors.less +8 -0
  13. package/lib/atomic/display.less +15 -0
  14. package/lib/atomic/flex.less +6 -34
  15. package/lib/atomic/floats.less +20 -0
  16. package/lib/atomic/gap.less +2 -0
  17. package/lib/atomic/grid.less +2 -0
  18. package/lib/atomic/height.less +22 -0
  19. package/lib/atomic/interactivity.less +45 -0
  20. package/lib/atomic/lists.less +29 -0
  21. package/lib/atomic/margin.less +48 -0
  22. package/lib/atomic/object-fit.less +9 -0
  23. package/lib/atomic/opacity.less +54 -0
  24. package/lib/atomic/outline.less +11 -0
  25. package/lib/atomic/overflow.less +17 -0
  26. package/lib/atomic/padding.less +12 -0
  27. package/lib/atomic/positioning.less +41 -0
  28. package/lib/atomic/sizing.less +51 -0
  29. package/lib/atomic/transitions.less +20 -0
  30. package/lib/atomic/truncation.less +58 -0
  31. package/lib/atomic/typography.less +71 -137
  32. package/lib/atomic/vertical-alignment.less +9 -0
  33. package/lib/atomic/visibility.less +18 -0
  34. package/lib/atomic/width.less +27 -0
  35. package/lib/atomic/z-index.less +12 -0
  36. package/lib/base/body.less +2 -4
  37. package/lib/base/configuration-static.less +3 -3
  38. package/lib/base/internal.less +3 -5
  39. package/lib/base/reset-normalize.less +3 -3
  40. package/lib/components/activity-indicator/activity-indicator.less +4 -20
  41. package/lib/components/anchor/anchor.less +28 -39
  42. package/lib/components/avatar/avatar.less +20 -19
  43. package/lib/components/badge/badge.less +227 -167
  44. package/lib/components/banner/banner.less +12 -11
  45. package/lib/components/bling/bling.less +47 -10
  46. package/lib/components/button/button.less +300 -380
  47. package/lib/components/checkbox_radio/checkbox_radio.less +195 -113
  48. package/lib/components/code-block/code-block.fixtures.ts +2 -2
  49. package/lib/components/code-block/code-block.less +2 -3
  50. package/lib/components/description/description.less +17 -2
  51. package/lib/components/empty-state/empty-state.less +17 -6
  52. package/lib/components/form-group/form-group.less +38 -0
  53. package/lib/components/input-fill/input-fill.less +3 -3
  54. package/lib/components/input-icon/input-icon.less +3 -3
  55. package/lib/components/input-message/input-message.less +1 -0
  56. package/lib/components/input_textarea/input_textarea.less +71 -58
  57. package/lib/components/label/label.less +12 -56
  58. package/lib/components/link/link.less +44 -98
  59. package/lib/components/loader/loader.less +88 -0
  60. package/lib/components/menu/menu.less +89 -19
  61. package/lib/components/modal/modal.less +10 -10
  62. package/lib/components/navigation/navigation.less +77 -42
  63. package/lib/components/notice/notice.less +90 -75
  64. package/lib/components/pagination/pagination.less +50 -42
  65. package/lib/components/popover/popover.less +9 -11
  66. package/lib/components/post-summary/post-summary.less +225 -385
  67. package/lib/components/prose/prose.less +49 -35
  68. package/lib/components/select/select.less +46 -41
  69. package/lib/components/sidebar-widget/sidebar-widget.less +26 -196
  70. package/lib/components/table/table.less +48 -22
  71. package/lib/components/tag/tag.less +25 -6
  72. package/lib/components/toast/toast.less +4 -2
  73. package/lib/components/toggle-switch/toggle-switch.less +15 -19
  74. package/lib/components/user-card/user-card.less +129 -92
  75. package/lib/components/vote/vote.less +134 -0
  76. package/lib/controllers.ts +0 -2
  77. package/lib/exports/color-sets.less +108 -81
  78. package/lib/exports/constants-helpers.less +9 -13
  79. package/lib/exports/constants-type.less +18 -36
  80. package/lib/exports/mixins.less +92 -272
  81. package/lib/index.ts +0 -4
  82. package/lib/stacks-static.less +44 -30
  83. package/lib/test/visual-test-utils.ts +42 -10
  84. package/lib/tsconfig.json +1 -1
  85. package/package.json +1 -1
  86. package/dist/components/expandable/expandable.d.ts +0 -17
  87. package/dist/components/uploader/uploader.d.ts +0 -48
  88. package/lib/atomic/border.less +0 -121
  89. package/lib/atomic/misc.less +0 -374
  90. package/lib/atomic/spacing.less +0 -98
  91. package/lib/atomic/width-height.less +0 -194
  92. package/lib/components/block-link/block-link.less +0 -82
  93. package/lib/components/breadcrumbs/breadcrumbs.less +0 -41
  94. package/lib/components/button-group/button-group.less +0 -81
  95. package/lib/components/card/card.less +0 -37
  96. package/lib/components/check-control/check-control.less +0 -17
  97. package/lib/components/check-group/check-group.less +0 -19
  98. package/lib/components/expandable/expandable.less +0 -119
  99. package/lib/components/expandable/expandable.ts +0 -238
  100. package/lib/components/link-preview/link-preview.less +0 -148
  101. package/lib/components/page-title/page-title.less +0 -51
  102. package/lib/components/progress-bar/progress-bar.less +0 -292
  103. package/lib/components/skeleton/skeleton.less +0 -73
  104. package/lib/components/spinner/spinner.less +0 -103
  105. package/lib/components/topbar/topbar.less +0 -553
  106. package/lib/components/uploader/uploader.less +0 -205
  107. package/lib/components/uploader/uploader.ts +0 -207
  108. package/lib/exports/spacing-mixins.less +0 -67
@@ -1,458 +1,298 @@
1
1
  .s-post-summary {
2
- // --_ps-state-* are custom properties to broadly override colors for a given post summary state
3
- --_ps-bb: var(--su1) solid var(--bc-light);
4
- --_ps-bg: unset;
5
- --_ps-o: unset;
6
- // Child components
7
- --_ps-content-excerpt-fc: var(--_ps-state-fc, var(--fc-medium));
8
- --_ps-content-title-a-fc: var(--_ps-state-fc, var(--theme-post-title-color, var(--theme-link-color, var(--theme-secondary))));
9
- --_ps-content-title-a-fc-hover: var(--_ps-state-fc, var(--theme-post-title-color-hover, var(--theme-link-color-hover, var(--theme-secondary-500))));
10
- --_ps-content-title-a-fc-visited: var(--_ps-state-fc, var(--theme-post-title-color-visited, var(--theme-link-color-visited, var(--purple-500))));
11
- --_ps-content-title-a-fc-hover-visited: var(--_ps-state-fc, var(--theme-post-title-color-hover, var(--theme-link-color-hover, var(--purple-600))));
12
- --_ps-stats-ai: flex-end;
13
- --_ps-stats-fc: var(--_ps-state-fc, var(--fc-light));
14
- --_ps-stats-fd: column;
15
- --_ps-stats-w: calc(var(--su96) + var(--su12));
16
- // Stats item modifiers
17
- --_ps-has-answers-bc: var(--green-400);
18
- --_ps-has-answers-bg: unset;
19
- --_ps-has-answers-fc: var(--green-400);
20
- --_ps-has-accepted-answers-bc: var(--green-400);
21
- --_ps-has-accepted-answers-bg: var(--green-400);
22
- --_ps-has-accepted-answers-fc: var(--white);
23
- --_ps-stats-item-emphasized-fc: var(--_ps-state-fc, var(--fc-dark));
24
-
25
- // CONTEXTUAL STYLES
26
- #stacks-internals #screen-md({
27
- --_ps-stats-ai: center;
28
- --_ps-stats-fd: row;
29
- --_ps-stats-w: auto;
2
+ @psx-container-sm: 28rem;
3
+ --_ps-answer-icon-fc: unset;
4
+ --_ps-content-type-bc: var(--black-200);
5
+ --_ps-content-type-bg: var(--black-050);
6
+ --_ps-content-type-fc: var(--black-600);
7
+ --_ps-stats-answers-bg: unset;
8
+ --_ps-stats-answers-fc: var(--black-400);
9
+ --_ps-stats-answers-fw: unset;
10
+ --_ps-stats-answers-icon-fc: unset;
11
+ --_ps-title-link-fc: var(--theme-secondary-600);
12
+
13
+ // Conditional styles
14
+ .highcontrast-mode({
15
+ a[href] {
16
+ text-decoration: underline !important;
17
+ }
30
18
 
31
- flex-direction: column;
19
+ &__deleted * {
20
+ --_ps-ignored-fc: var(--black-500);
21
+ }
32
22
  });
33
23
 
34
- // MODIFIERS
35
- &&__minimal,
36
- & &--answer {
37
- --_ps-stats-ai: center;
38
- --_ps-stats-fd: row;
39
- --_ps-stats-w: auto;
24
+ // Note: we cannot use CSS custom properties for container query values
25
+ @container post-summary (width <= @psx-container-sm) {
26
+ .s-post-summary--sm-hide {
27
+ display: none !important;
28
+ }
29
+ .s-post-summary--sm-show {
30
+ display: flex !important;
31
+ }
40
32
  }
41
33
 
42
- &&__minimal {
43
- .s-post-summary--content {
44
- width: 100%;
34
+ @container post-summary (width > @psx-container-sm) {
35
+ .s-post-summary--sm-hide {
36
+ display: flex !important;
37
+ }
38
+ .s-post-summary--sm-show {
39
+ display: none !important;
45
40
  }
41
+ }
46
42
 
47
- flex-direction: column;
43
+ // MODIFIERS
44
+ &&__answered {
45
+ --_ps-stats-answers-bg: var(--green-400);
46
+ --_ps-stats-answers-fc: var(--white);
47
+ --_ps-stats-answers-fw: 600;
48
+ --_ps-stats-answers-icon-fc: var(--green-400);
48
49
  }
49
50
 
50
- // VARIANTS
51
51
  &&__deleted,
52
- &&__ignored {
53
- --_ps-o: 0.75;
54
- --_ps-has-answers-bc: var(--black-350);
55
- --_ps-has-answers-bg: transparent;
56
- --_ps-has-answers-fc: var(--_ps-state-fc);
57
- --_ps-has-accepted-answers-bc: transparent;
58
- --_ps-has-accepted-answers-bg: var(--black-150);
59
- --_ps-has-accepted-answers-fc: var(--_ps-state-fc);
60
- --_ps-meta-tags-tag-bg: var(--black-150);
61
- --_ps-meta-tags-tag-fc: var(--_ps-state-fc);
62
- --_ps-state-fc: var(--black-400);
63
-
64
- .s-post-summary--meta-tags {
65
- a, // TODO: remove rule for `a` once Core replaces `.post-tag` with `.s-tag`
66
- .post-tag,
67
- .s-tag {
68
- &,
69
- &:active,
70
- &:hover,
71
- &:focus,
72
- .focus-bordered {
73
- .highcontrast-mode({
74
- border-color: currentColor;
75
- });
76
-
77
- background-color: var(--_ps-meta-tags-tag-bg);
78
- color: var(--black-500);
79
- border-color: var(--black-300);
80
- }
81
- }
52
+ &:has(.s-tag.s-tag__ignored) {
53
+ --_ps-ignored-bg: var(--black-100);
54
+ --_ps-ignored-fc: var(--black-400);
55
+
56
+ &.s-post-summary__answered {
57
+ --_ps-stats-answers-bg: var(--_ps-ignored-bg);
58
+ --_ps-stats-answers-fc: var(--_ps-ignored-fc);
59
+ --_ps-stats-answers-icon-fc: var(--black-350);
82
60
  }
83
61
 
84
- .s-user-card {
85
- a,
86
- .s-user-card--link,
87
- .s-user-card--rep,
88
- .s-user-card--time {
89
- color: var(--_ps-state-fc);
90
- }
91
-
92
- .s-badge {
93
- filter: grayscale(100%);
94
- }
62
+ * {
63
+ color: var(--_ps-ignored-fc) !important;
95
64
  }
96
- }
97
- &&__deleted,
98
- &&__watched {
99
- background-color: var(--_ps-bg);
100
- }
101
65
 
102
- &&__deleted {
103
- --_ps-bg: var(--red-100);
104
- --_ps-has-accepted-answers-bg: var(--black-200);
105
- --_ps-has-accepted-answers-fc: var(--black-500);
106
- --_ps-meta-tags-tag-bg: var(--black-200);
107
-
108
- .is-deleted,
109
- .s-badge__danger.s-badge__filled {
110
- .dark-mode({
111
- background-color: var(--red-600);
112
- color: var(--white);
113
- });
66
+ .s-avatar {
67
+ opacity: 0.5;
68
+ }
114
69
 
115
- background-color: var(--red-500);
70
+ .s-user-card--rep .s-bling:before {
71
+ background-color: var(--_ps-ignored-fc) !important;
116
72
  }
117
- }
118
73
 
119
- &&__watched {
120
- &:not(.s-post-summary__deleted):not(.s-post-summary__ignored) {
121
- --_ps-bg: var(--yellow-100);
122
- --_ps-stats-fc: var(--black-400);
123
- --_ps-content-title-a-fc: var(--theme-post-title-color, var(--theme-link-color, var(--theme-secondary)));
124
- --_ps-content-title-a-fc-hover: var(--theme-post-title-color-hover, var(--theme-link-color-hover, var(--theme-secondary-500)));
125
- --_ps-content-title-a-fc-visited: var(--theme-post-title-color-visited, var(--theme-link-color-visited, var(--purple-500)));
126
- --_ps-content-title-a-fc-hover-visited: var(--theme-post-title-color-hover, var(--theme-link-color-hover, var(--purple-600)));
127
-
128
- .s-user-card {
129
- a {
130
- &:active,
131
- &:hover {
132
- color: var(--_ps-content-title-a-fc-hover);
133
- }
134
-
135
- &:visited {
136
- &:hover {
137
- color: var(--_ps-content-title-a-fc-hover-visited);
138
- }
139
-
140
- color: var(--_ps-content-title-a-fc-visited);
141
- }
142
-
143
- color: var(--_ps-content-title-a-fc);
144
- }
145
-
146
- .s-user-card--rep,
147
- .s-user-card--time {
148
- color: var(--black-500);
149
- }
150
- }
74
+ .s-badge,
75
+ .s-tag,
76
+ .s-post-summary--stats-bounty {
77
+ background-color: var(--_ps-ignored-bg) !important;
78
+ border-color: var(--_ps-ignored-bg) !important;
79
+ color: var(--_ps-ignored-fc) !important;
151
80
  }
152
81
  }
153
82
 
154
- &:last-child {
155
- --_ps-bb: none;
83
+ &&__deleted {
84
+ background-color: var(--red-100);
85
+ border: var(--su8) solid var(--red-100);
156
86
  }
157
87
 
158
- // Child Elements
159
- & & {
160
- &--answer {
161
- & + & {
162
- margin-top: var(--su16);
163
- }
88
+ // Child components
89
+ .s-tag.s-tag__watched {
90
+ --_ta-bc: var(--yellow-200);
91
+ --_ta-bg: var(--yellow-200);
92
+ --_ta-fc: var(--yellow-600);
93
+ --_ta-bc-hover: var(--yellow-200);
94
+ --_ta-bg-hover: var(--yellow-200);
95
+ }
164
96
 
165
- &:before {
166
- .highcontrast-mode({
167
- background: var(--black-500);
168
- });
169
-
170
- background: var(--black-250);
171
- border-radius: var(--su8);
172
- bottom: 0;
173
- content: "";
174
- display: block;
175
- left: 0;
176
- position: absolute;
177
- top: 0;
178
- width: var(--su4);
179
- }
97
+ // TODO SHINE complete answers styling
98
+ & &--answers {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: var(--su16);
102
+ padding-top: calc(var(--su8) + var(--su2)); // 10px
103
+ }
180
104
 
181
- margin: var(--su16) 1em 0 1em;
182
- padding: 0.5em 0 0.5em calc(1em + var(--su4));
183
- position: relative;
105
+ & &--answer {
106
+ &__accepted {
107
+ --_ps-answer-icon-fc: var(--green-400);
184
108
  }
185
109
 
186
- &--answer-excerpt {
187
- .v-truncate4;
188
- color: var(--black-500);
189
- margin-bottom: var(--su8);
110
+ .s-post-summary--stats-answers--icon {
111
+ color: var(--_ps-answer-icon-fc);
190
112
  }
191
113
 
192
- &--content {
193
- > *:not(.s-post-summary--content-menu-button):not(.s-post-summary--meta):not(.s-popover) {
194
- opacity: var(--_ps-o);
195
- }
196
-
197
- flex-grow: 1;
198
- max-width: 100%;
199
- }
114
+ border-left: var(--su4) solid var(--black-200);
115
+ display: flex;
116
+ flex-direction: column;
117
+ gap: var(--su6);
118
+ padding-left: var(--su8);
119
+ }
200
120
 
201
- &--content-excerpt {
202
- &.s-post-summary--content-excerpt {
203
- &__sm {
204
- .v-truncate1;
205
- }
121
+ & &--content {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: var(--su4);
125
+ width: 100%;
126
+ }
206
127
 
207
- &__md {
208
- .v-truncate3;
209
- }
128
+ & &--content-meta {
129
+ align-items: center;
130
+ color: var(--black-400);
131
+ display: flex;
132
+ flex-wrap: wrap;
133
+ font-size: var(--fs-caption);
134
+ gap: var(--su6);
135
+ margin-bottom: var(--su4);
136
+ }
210
137
 
211
- &__lg {
212
- .v-truncate4;
213
- }
214
- }
138
+ & &--content-type {
139
+ &:focus-visible {
140
+ .focus-styles();
141
+ }
215
142
 
216
- .break-word;
217
- .v-truncate2;
218
- color: var( --_ps-content-excerpt-fc);
219
- font-family: var(--theme-post-body-font-family, var(--theme-body-font-family));
220
- margin-top: calc(var(--su2) * -1);
221
- margin-bottom: var(--su8);
143
+ &:hover {
144
+ --_ps-content-type-bc: var(--black-150);
145
+ --_ps-content-type-bg: var(--black-100);
146
+ --_ps-content-type-fc: var(--black-600);
222
147
  }
223
148
 
224
- &--content-menu-button {
225
- .svg-icon {
226
- margin: 0 !important;
227
- }
149
+ border: var(--su1) solid var(--_ps-content-type-bc);
150
+ background-color: var(--_ps-content-type-bg);
151
+ color: var(--_ps-content-type-fc);
228
152
 
229
- &,
230
- &.s-btn { // To override .s-btn class attributes
231
- padding: var(--su8);
232
- position: absolute;
233
- }
153
+ display: flex;
154
+ align-items: center;
155
+ gap: var(--su4);
156
+ padding: 0 var(--su4);
157
+ font-size: var(--fs-caption);
158
+ }
234
159
 
235
- right: var(--su8);
236
- top: var(--su8);
237
- }
160
+ & &--excerpt {
161
+ line-height: 1.25rem; // TODO use a standard line-height variable (currently 20px)
162
+ margin-bottom: 0;
163
+ }
238
164
 
239
- &--content-title {
240
- a {
241
- &:active,
242
- &:hover {
243
- color: var(--_ps-content-title-a-fc-hover);
244
- }
245
- &:visited {
246
- &:hover {
247
- color: var(--_ps-content-title-a-fc-hover-visited);
248
- }
249
-
250
- color: var(--_ps-content-title-a-fc-visited);
251
- }
252
-
253
- .break-word;
254
- color: var(--_ps-content-title-a-fc);
255
- font-family: var(--theme-post-title-font-family, var(--theme-body-font-family));
256
- }
165
+ & &--stats {
166
+ &.s-post-summary--sm-hide {
167
+ .s-post-summary--stats-answers {
168
+ background-color: var(--_ps-stats-answers-bg);
169
+ color: var(--_ps-stats-answers-fc);
170
+ font-weight: var(--_ps-stats-answers-fw);
257
171
 
258
- .iconShield {
259
- color: var(--fc-light);
172
+ align-items: center;
173
+ display: flex;
174
+ gap: var(--su4);
175
+ justify-content: center;
176
+ padding: var(--su4);
260
177
  }
261
178
 
262
- .svg-icon {
263
- position: relative;
264
- top: calc(var(--su1) * -1);
265
- vertical-align: text-bottom; // Optical alignment
179
+ .s-post-summary--stats-bounty {
180
+ align-items: center;
181
+ background-color: var(--blue-400);
182
+ color: var(--white);
183
+ display: flex;
184
+ gap: var(--su2);
185
+ font-weight: 600;
186
+ justify-content: center;
187
+ padding: var(--su4);
266
188
  }
267
189
 
268
- .break-word;
269
- display: block;
270
- font-size: var(--fs-body3);
271
- font-weight: normal;
272
- line-height: var(--lh-md);
273
- margin-bottom: 0.3846rem;
274
- margin-top: -0.15rem; // Optical alignment to compensate for title's containing block
275
- padding-right: var(--su24);
276
- }
277
-
278
- &--content-type {
279
- .svg-icon {
280
- color: var(--fc-light);
281
- margin-left: calc(var(--su2) * -1);
190
+ .s-post-summary--stats-votes {
191
+ align-items: center;
192
+ aspect-ratio: 1/1;
193
+ border: var(--su1) solid var(--black-200);
194
+ display: flex;
195
+ justify-content: center;
196
+ font-size: var(--fs-body2);
197
+ font-weight: 600;
198
+ margin-bottom: var(--su2);
199
+ padding: var(--su4);
200
+ width: calc(var(--su48) + var(--su8)); // 3.5rem
282
201
  }
283
202
 
284
- color: var(--fc-medium);
285
- margin-bottom: var(--su4);
203
+ flex-direction: column;
286
204
  }
287
205
 
288
- &--meta {
289
- > *:not(.s-post-summary--meta-tags):not(.s-user-card) > * {
290
- opacity: var(--_ps-o);
291
- }
292
-
293
- .s-user-card {
294
- > *:not(.magic-popup) {
295
- opacity: var(--_ps-o);
296
- }
297
-
298
- flex-wrap: wrap;
299
- justify-content: flex-end;
300
- margin-left: auto;
206
+ &.s-post-summary--sm-show {
207
+ .s-post-summary--stats-answers--icon {
208
+ color: var(--_ps-stats-answers-icon-fc);
301
209
  }
302
210
 
303
211
  align-items: center;
304
- column-gap: var(--su6);
305
- display: flex;
306
- flex-wrap: wrap;
307
- justify-content: space-between;
308
- row-gap: var(--su8);
212
+ justify-content: center;
213
+ padding: var(--su4);
309
214
  }
310
215
 
311
- &--meta-tags {
312
- > ul > li > a,
313
- > a,
314
- .post-tag,
315
- .s-tag {
316
- opacity: var(--_ps-o);
317
- }
318
-
216
+ .s-post-summary--stats-bounty {
217
+ align-items: center;
218
+ justify-content: center;
219
+ background-color: var(--blue-400);
220
+ color: var(--white);
319
221
  display: flex;
320
- flex-wrap: wrap;
321
- gap: var(--su4);
222
+ gap: var(--su1);
223
+ padding: 0 calc(var(--su4) - var(--su1));
322
224
  }
323
225
 
324
- &--stats {
325
- > *:not(.s-badge__danger) {
326
- opacity: var(--_ps-o);
327
- }
328
-
329
- align-items: var(--_ps-stats-ai);
330
- color: var(--_ps-stats-fc);
331
- flex-direction: var(--_ps-stats-fd);
332
- width: var(--_ps-stats-w);
226
+ display: flex;
227
+ gap: var(--su6);
228
+ font-size: var(--fs-caption);
229
+ }
333
230
 
334
- display: flex;
335
- flex-shrink: 0;
336
- flex-wrap: wrap;
337
- font-size: var(--fs-body1);
338
- gap: var(--su6);
339
- margin-bottom: var(--su4);
340
- margin-right: var(--su16);
231
+ & &--stats-item {
232
+ &:before {
233
+ aspect-ratio: 1/1;
234
+ background-color: var(--black-300);
235
+ content: "";
236
+ display: block;
237
+ height: var(--su4);
341
238
  }
342
239
 
343
- &--stats-item {
344
- &:not(.s-badge) {
345
- &.is-deleted {
346
- color: var(--white);
347
- }
348
-
349
- align-items: center;
350
- border: var(--su1) solid transparent;
351
- display: inline-flex;
352
- gap: 0.3em;
353
- justify-content: center;
354
- white-space: nowrap;
355
- }
356
-
357
- &.s-badge {
358
- font-size: var(--fs-body1);
359
- line-height: var(--lh-md);
360
- padding: var(--su2) var(--su4);
361
- }
362
-
363
- &.has-answers,
364
- &.has-bounty, // TODO DEPRECATED: Remove .has-bounty styling
365
- &.is-archived,
366
- &.is-closed,
367
- &.is-deleted,
368
- &.is-draft,
369
- &.is-pinned,
370
- &.is-published,
371
- &.is-review {
372
- border-radius: var(--br-md);
373
- padding: var(--su2) var(--su4);
374
- }
375
-
376
- &.has-answers {
377
- &.has-accepted-answer {
378
- background-color: var(--_ps-has-accepted-answers-bg);
379
- border-color: var(--_ps-has-accepted-answers-bc);
380
- color: var(--_ps-has-accepted-answers-fc);
381
- }
382
-
383
- background-color: var(--_ps-has-answers-bg);
384
- border: var(--su1) solid var(--_ps-has-answers-bc);
385
- color: var(--_ps-has-answers-fc);
386
- }
387
-
388
- &.has-bounty { // TODO DEPRECATED: Remove and replace with references with `s-badge s-badge__bounty`
389
- background-color: var(--blue-500);
390
- color: var(--white);
391
- }
392
-
393
- // Hotness
394
- &.is-warm {
395
- color: var(--_ps-state-fc, var(--yellow-500));
396
- }
397
-
398
- &.is-hot {
399
- color: var(--_ps-state-fc, var(--orange-500));
400
- }
401
-
402
- &.is-supernova {
403
- color: var(--_ps-state-fc, var(--red-500));
404
- }
405
-
406
- // Status
407
- &.is-archived { // TODO DEPRECATED: Remove and replace with references with `s-badge s-badge__muted s-badge__icon`
408
- background-color: var(--black-225);
409
- border-color: var(--black-500);
410
- color: var(--black-600);
411
- }
412
-
413
- &.is-closed { // TODO DEPRECATED: Remove and replace with references with `s-badge s-badge__danger s-badge__icon`
414
- background-color: var(--red-300);
415
- border-color: var(--red-500);
416
- color: var(--red-600);
417
- }
418
-
419
- &.is-draft { // TODO DEPRECATED: Remove and replace with references with `s-badge s-badge__info s-badge__icon`
420
- background-color: var(--blue-300);
421
- border-color: var(--blue-500);
422
- color: var(--blue-600);
423
- }
240
+ align-items: center;
241
+ display: flex;
242
+ gap: var(--su6);
243
+ }
424
244
 
425
- &.is-pinned { // TODO DEPRECATED: Remove and replace with references with `s-badge s-badge__muted s-badge__filled s-badge__icon`
426
- background-color: var(--black-500);
427
- color: var(--white);
428
- }
245
+ & &--tags {
246
+ display: flex;
247
+ flex-wrap: wrap;
248
+ gap: var(--su8);
249
+ margin-top: var(--su6);
250
+ }
429
251
 
430
- &.is-published {
431
- background-color: var(--black-150);
432
- color: var(--black-600);
433
- }
252
+ & &--title {
253
+ display: flex;
254
+ gap: var(--su6);
255
+ line-height: 1.563rem; // TODO use a standard line-height variable (currently 25px)
256
+ overflow-wrap: break-word;
257
+ hyphens: auto;
258
+ }
434
259
 
435
- &.is-review { // TODO DEPRECATED: Remove and replace with references with `s-badge s-badge__warning s-badge__icon`
436
- background-color: var(--yellow-300);
437
- border-color: var(--yellow-500);
438
- color: var(--yellow-600);
439
- }
260
+ & &--title-link {
261
+ &:hover {
262
+ --_ps-title-link-fc: var(--theme-secondary-500);
440
263
 
441
- &__emphasized {
442
- color: var(--_ps-stats-item-emphasized-fc);
264
+ &:visited {
265
+ color: var(--theme-secondary-600);
443
266
  }
444
267
  }
445
268
 
446
- &--stats-item-number {
447
- font-weight: 500;
269
+ // TODO: Since custom property is not being applied for some reason, we're changing the color directly. Remove this once the custom property is fixed.
270
+ // I suspect this is because of restrictions on the `:visited` pseudo-class.
271
+ // See https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:visited#privacy_restrictions
272
+ &:visited {
273
+ color: var(--theme-secondary-400);
448
274
  }
449
275
 
276
+ color: var(--_ps-title-link-fc);
277
+ display: flex;
278
+ font-size: var(--fs-body3);
279
+ font-weight: 600;
280
+ gap: var(--su4);
281
+ margin-top: var(--su2);
282
+ text-decoration: none;
283
+ }
284
+
285
+ & &--title-icon {
286
+ flex-shrink: 0;
450
287
  }
451
288
 
452
- background-color: var(--_ps-bg);
453
- border-bottom: var(--_ps-bb);
289
+ // Container query setup
290
+ container-type: inline-size;
291
+ container-name: post-summary;
454
292
 
293
+ color: var(--black-500);
455
294
  display: flex;
456
- padding: var(--su16);
295
+ gap: var(--su16);
457
296
  position: relative;
297
+ width: 100%;
458
298
  }