@stackoverflow/stacks 0.71.0 → 0.74.0

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 (34) hide show
  1. package/README.md +1 -1
  2. package/dist/css/stacks.css +963 -571
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +190 -100
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/css/atomic/_stacks-flex.less +2 -7
  7. package/lib/css/atomic/_stacks-grid.less +1 -0
  8. package/lib/css/atomic/_stacks-misc.less +6 -0
  9. package/lib/css/atomic/_stacks-typography.less +25 -7
  10. package/lib/css/base/_stacks-configuration-dynamic.less +4 -14
  11. package/lib/css/components/_stacks-activity-indicator.less +26 -2
  12. package/lib/css/components/_stacks-badges.less +1 -4
  13. package/lib/css/components/_stacks-buttons.less +44 -8
  14. package/lib/css/components/_stacks-cards.less +7 -11
  15. package/lib/css/components/_stacks-inputs.less +19 -0
  16. package/lib/css/components/_stacks-link-previews.less +4 -0
  17. package/lib/css/components/_stacks-links.less +25 -2
  18. package/lib/css/components/_stacks-navigation.less +8 -0
  19. package/lib/css/components/_stacks-pagination.less +2 -0
  20. package/lib/css/components/_stacks-popovers.less +4 -0
  21. package/lib/css/components/_stacks-post-summary.less +156 -10
  22. package/lib/css/components/_stacks-progress-bars.less +18 -3
  23. package/lib/css/components/_stacks-prose.less +7 -2
  24. package/lib/css/components/_stacks-tags.less +38 -15
  25. package/lib/css/components/_stacks-toggle-switches.less +8 -1
  26. package/lib/css/components/_stacks-topbar.less +440 -0
  27. package/lib/css/components/_stacks-uploader.less +2 -0
  28. package/lib/css/components/_stacks-user-cards.less +15 -39
  29. package/lib/css/exports/_stacks-constants-colors.less +50 -14
  30. package/lib/css/exports/_stacks-constants-helpers.less +1 -2
  31. package/lib/css/exports/_stacks-mixins.less +11 -0
  32. package/lib/css/stacks-dynamic.less +0 -1
  33. package/lib/css/stacks-static.less +2 -0
  34. package/package.json +15 -12
@@ -13,7 +13,8 @@
13
13
  .s-user-card {
14
14
  display: grid;
15
15
  grid-template-columns: auto 1fr;
16
- grid-column-gap: @su8;
16
+ column-gap: @su8;
17
+ row-gap: @su4;
17
18
  align-items: center;
18
19
  line-height: 1;
19
20
  padding: @su8;
@@ -25,7 +26,7 @@
25
26
  // $$ Highlighted
26
27
  // ---------------------------------------------------------------------------
27
28
  &.s-user-card__highlighted {
28
- background-color: var(--theme-secondary-025);
29
+ background-color: var(--theme-secondary-050);
29
30
  border-radius: @br-md;
30
31
 
31
32
  .s-user-card--type {
@@ -38,10 +39,6 @@
38
39
  &.s-user-card__full {
39
40
  align-items: start;
40
41
 
41
- .s-user-card--info {
42
- grid-gap: @su4;
43
- }
44
-
45
42
  .s-user-card--link {
46
43
  font-size: @fs-body2;
47
44
  }
@@ -58,26 +55,12 @@
58
55
  &.s-user-card__small {
59
56
  display: flex;
60
57
  align-items: center;
61
- grid-column-gap: unset; // Firefox flex layouts respect column gaps, so we need to reset this
58
+ gap: @su4;
62
59
  padding: 0;
63
60
 
64
- .s-user-card--time {
65
- margin-right: @su6;
66
- margin-bottom: 0;
67
- }
68
-
69
- .s-user-card--link {
70
- margin-right: @su6;
71
- }
72
-
73
- .s-user-card--avatar {
74
- margin-right: @su6;
75
- }
76
-
77
61
  .s-user-card--info {
78
- display: flex;
62
+ flex-direction: row;
79
63
  align-items: center;
80
- grid-column-gap: unset; // Firefox flex layouts respect column gaps, so we need to reset this
81
64
  }
82
65
  }
83
66
 
@@ -86,41 +69,35 @@
86
69
  &.s-user-card__minimal {
87
70
  display: flex;
88
71
  align-items: center;
89
- grid-column-gap: unset; // Firefox flex layouts respect column gaps, so we need to reset this
72
+ gap: @su4;
90
73
  padding: 0;
91
74
 
92
75
  .s-user-card--time {
93
- margin-right: @su4;
94
- margin-bottom: 0;
95
76
  white-space: nowrap;
96
77
  }
97
78
 
98
79
  .s-user-card--link {
99
- margin-right: @su4;
100
80
  white-space: nowrap;
101
81
  }
102
82
 
103
- .s-user-card--avatar {
104
- margin-right: @su4;
105
- }
106
-
107
83
  .s-user-card--rep {
108
- padding: 0;
109
84
  color: var(--black-600);
110
85
  }
111
86
 
112
87
  .s-user-card--info {
113
- display: flex;
88
+ flex-direction: row;
114
89
  align-items: center;
115
- grid-column-gap: unset; // Firefox flex layouts respect column gaps, so we need to reset this
116
90
  }
117
91
  }
118
92
 
119
93
  .s-user-card--type {
120
94
  grid-column: ~"1 / 3";
121
- padding-top: @su4;
122
95
  font-size: @fs-caption;
123
96
  color: var(--theme-primary-400);
97
+
98
+ a {
99
+ color: inherit;
100
+ }
124
101
  }
125
102
  }
126
103
 
@@ -132,7 +109,6 @@
132
109
  grid-row: ~"1 / 2";
133
110
  color: var(--black-500);
134
111
  font-size: @fs-caption;
135
- margin-bottom: @su4;
136
112
  }
137
113
 
138
114
  // $ USER INFO CONTAINER
@@ -140,8 +116,9 @@
140
116
  // vertical grid layout
141
117
  // ---------------------------------------------------------------------------
142
118
  .s-user-card--info {
143
- display: grid;
144
- grid-gap: @su2;
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: @su4;
145
122
  }
146
123
 
147
124
  // $ USER LINK
@@ -162,9 +139,9 @@
162
139
  .list-reset;
163
140
  display: flex;
164
141
  align-items: center;
142
+ gap: @su6;
165
143
 
166
144
  li {
167
- margin-right: @su6;
168
145
  font-size: @fs-caption;
169
146
  }
170
147
  }
@@ -186,7 +163,6 @@
186
163
  // Apply layout to a bunch of child tags
187
164
  // ---------------------------------------------------------------------------
188
165
  .s-user-card--tags {
189
- padding-top: (@su2 / 2); // Optically align these a bit, but we can't use margin because of `gs[x]` being applied
190
166
  min-width: 0; // Allow things to wrap
191
167
  align-items: center;
192
168
  flex-wrap: wrap;
@@ -1,3 +1,5 @@
1
+ @import (reference) "./_stacks-mixins.less";
2
+
1
3
  //
2
4
  // STACK OVERFLOW
3
5
  // CONSTANTS -- COLORS
@@ -235,6 +237,40 @@
235
237
  // Button Outline
236
238
  --theme-button-outlined-border-color: var(--theme-secondary-300);
237
239
  --theme-button-outlined-selected-border-color: var(--theme-secondary-400);
240
+
241
+ // Tags
242
+ --theme-tag-color: var(--theme-secondary-800);
243
+ --theme-tag-background-color: var(--theme-secondary-075);
244
+ --theme-tag-border-color: transparent;
245
+ --theme-tag-hover-color: var(--theme-secondary-900);
246
+ --theme-tag-hover-background-color: var(--theme-secondary-100);
247
+ --theme-tag-hover-border-color: transparent;
248
+
249
+ // Topbar
250
+ --theme-topbar-height: @su48;
251
+ --theme-topbar-background-color: var(--black-025);
252
+
253
+ // Topbar Search input
254
+ --theme-topbar-search-color: var(--black-700);
255
+ --theme-topbar-search-background: var(--white);
256
+ --theme-topbar-search-placeholder: var(--black-200);
257
+ --theme-topbar-search-border: var(--black-200);
258
+ --theme-topbar-search-border-focus: var(--blue-300);
259
+ --theme-topbar-search-shadow-focus: 0 0 0 @su4 var(--focus-ring);
260
+
261
+ // Topbar Search switcher
262
+ --theme-topbar-select-color: var(--black-700);
263
+ --theme-topbar-select-background: var(--black-075);
264
+
265
+ // Topbar items
266
+ --theme-topbar-item-color: var(--black-600);
267
+ --theme-topbar-item-color-hover: var(--black-800);
268
+ --theme-topbar-item-background-hover: var(--black-075);
269
+ --theme-topbar-item-color-current: var(--black);
270
+ --theme-topbar-item-border-current: var(--theme-primary-color);
271
+
272
+ // Topbar themed border accent
273
+ --theme-topbar-accent-border: 3px solid var(--theme-primary-color);
238
274
  }
239
275
 
240
276
  // -- Light mode
@@ -779,11 +815,11 @@
779
815
  --fc-light: var(--black-500);
780
816
 
781
817
  // Focus rings
782
- --focus-ring: fade(@blue-600, 50%);
783
- --focus-ring-success: fade(@green-600, 50%);
784
- --focus-ring-warning: fade(@yellow-600, 50%);
785
- --focus-ring-error: fade(@red-600, 50%);
786
- --focus-ring-muted: fade(@black-800, 50%);
818
+ --focus-ring: fade(@blue-600, 90%);
819
+ --focus-ring-success: fade(@green-600, 90%);
820
+ --focus-ring-warning: fade(@yellow-600, 90%);
821
+ --focus-ring-error: fade(@red-600, 90%);
822
+ --focus-ring-muted: fade(@black-400, 95%);
787
823
 
788
824
  // Shadows
789
825
  --bs-sm: none;
@@ -845,10 +881,10 @@
845
881
  --orange-900: hsl(@orange-h, 100%, 91%);
846
882
 
847
883
  // Blue
848
- --blue-050: hsl(@blue-h, 100%, 3%);
849
- --blue-100: hsl(@blue-h, 100%, 6%);
850
- --blue-200: hsl(@blue-h, 100%, 12%);
851
- --blue-300: hsl(@blue-h, 100%, 18%);
884
+ --blue-050: hsl(@blue-h, 100%, 4%);
885
+ --blue-100: hsl(@blue-h, 100%, 11%);
886
+ --blue-200: hsl(@blue-h, 100%, 18%);
887
+ --blue-300: hsl(@blue-h, 100%, 25%);
852
888
  --blue-400: hsl(@blue-h, 100%, 75%);
853
889
  --blue-500: hsl(@blue-h, 100%, 80%);
854
890
  --blue-600: hsl(@blue-h, 100%, 85%);
@@ -929,11 +965,11 @@
929
965
  --bc-darker: var(--black-900);
930
966
 
931
967
  // Focus rings
932
- --focus-ring: fade(@blue-600, 50%);
933
- --focus-ring-success: fade(@green-600, 50%);
934
- --focus-ring-warning: fade(@yellow-600, 50%);
935
- --focus-ring-error: fade(@red-600, 50%);
936
- --focus-ring-muted: fade(@black-800, 50%);
968
+ --focus-ring: fade(@blue-600, 90%);
969
+ --focus-ring-success: fade(@green-600, 90%);
970
+ --focus-ring-warning: fade(@yellow-600, 90%);
971
+ --focus-ring-error: fade(@red-600, 90%);
972
+ --focus-ring-muted: fade(@black-400, 95%);
937
973
 
938
974
  // Font colors
939
975
  --fc-dark: var(--black-900);
@@ -52,6 +52,7 @@
52
52
  // ============================================================================
53
53
  // $ SPACING UNITS (su-)
54
54
  // ----------------------------------------------------------------------------
55
+ @su1: 1px;
55
56
  @su2: 2px;
56
57
  @su4: 4px;
57
58
  @su6: 6px;
@@ -126,14 +127,12 @@
126
127
  // Hide focus styles if they're not needed, for example,
127
128
  // when an element receives focus via the mouse.
128
129
  &:focus:not(:focus-visible) {
129
- color: inherit;
130
130
  outline: none;
131
131
  box-shadow: none;
132
132
  }
133
133
 
134
134
  // Show focus styles on keyboard focus.
135
135
  &:focus-visible {
136
- color: inherit;
137
136
  outline: none;
138
137
  box-shadow: 0 0 0 @su4 var(--focus-ring-muted);
139
138
  }
@@ -60,6 +60,17 @@
60
60
  }
61
61
  }
62
62
 
63
+ .highcontrast-dark-mode(@rules) {
64
+ body.theme-highcontrast.theme-system & {
65
+ @media (prefers-color-scheme: dark) {
66
+ @rules();
67
+ }
68
+ }
69
+ body.theme-highcontrast.theme-dark & {
70
+ @rules();
71
+ }
72
+ }
73
+
63
74
  // ===========================================================================
64
75
  // -- APPEARANCE
65
76
  // Use this to overwrite the default appearance properties
@@ -22,7 +22,6 @@
22
22
  @import "components/_stacks-buttons.less";
23
23
  @import "components/_stacks-links.less";
24
24
  @import "components/_stacks-link-previews.less";
25
- @import "components/_stacks-navigation.less";
26
25
  @import "components/_stacks-notices.less";
27
26
  @import "components/_stacks-tags.less";
28
27
  @import "components/_stacks-pagination.less";
@@ -29,6 +29,7 @@
29
29
  @import "components/_stacks-inputs.less";
30
30
  @import "components/_stacks-menu.less";
31
31
  @import "components/_stacks-modals.less";
32
+ @import "components/_stacks-navigation.less";
32
33
  @import "components/_stacks-page-titles.less";
33
34
  @import "components/_stacks-popovers.less";
34
35
  @import "components/_stacks-post-summary.less";
@@ -37,6 +38,7 @@
37
38
  @import "components/_stacks-spinner.less";
38
39
  @import "components/_stacks-tables.less";
39
40
  @import "components/_stacks-toggle-switches.less";
41
+ @import "components/_stacks-topbar.less";
40
42
  @import "components/_stacks-uploader.less";
41
43
  @import "components/_stacks-user-cards.less";
42
44
  @import "components/_stacks-widget-static.less";
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "type": "git",
6
6
  "url": "https://github.com/StackExchange/Stacks.git"
7
7
  },
8
- "version": "0.71.0",
8
+ "version": "0.74.0",
9
9
  "files": [
10
10
  "dist",
11
11
  "lib"
@@ -19,24 +19,24 @@
19
19
  },
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@popperjs/core": "^2.9.2",
22
+ "@popperjs/core": "^2.11.2",
23
23
  "stimulus": "^2.0.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@11ty/eleventy": "^0.12.1",
27
- "@highlightjs/cdn-assets": "^11.0.1",
27
+ "@highlightjs/cdn-assets": "^11.4.0",
28
28
  "@stackoverflow/stacks-editor": "^0.4.1",
29
- "@stackoverflow/stacks-icons": "^2.22.0",
30
- "backstopjs": "^5.3.0",
29
+ "@stackoverflow/stacks-icons": "^2.26.0",
30
+ "backstopjs": "^6.0.4",
31
31
  "docsearch.js": "^2.6.3",
32
32
  "eleventy-plugin-highlightjs": "^0.3.0",
33
33
  "eleventy-plugin-markdown-shortcode": "^1.1.0",
34
- "eleventy-plugin-nesting-toc": "^1.2.0",
35
- "grunt": "^1.3.0",
36
- "grunt-cli": "^1.4.1",
34
+ "eleventy-plugin-nesting-toc": "^1.3.0",
35
+ "grunt": "^1.4.1",
36
+ "grunt-cli": "^1.4.3",
37
37
  "grunt-concurrent": "^3.0.0",
38
38
  "grunt-contrib-clean": "^2.0.0",
39
- "grunt-contrib-concat": "^1.0.1",
39
+ "grunt-contrib-concat": "^2.0.0",
40
40
  "grunt-contrib-copy": "^1.0.0",
41
41
  "grunt-contrib-cssmin": "^4.0.0",
42
42
  "grunt-contrib-less": "^3.0.0",
@@ -46,9 +46,12 @@
46
46
  "grunt-ts": "^6.0.0-beta.22",
47
47
  "jquery": "^3.6.0",
48
48
  "list.js": "^2.3.1",
49
- "stylelint": "^13.13.1",
50
- "stylelint-config-standard": "^22.0.0",
51
- "typescript": "^4.2.3"
49
+ "postcss-less": "^6.0.0",
50
+ "stylelint": "^14.3.0",
51
+ "stylelint-config-recommended-less": "^1.0.1",
52
+ "stylelint-config-standard": "^24.0.0",
53
+ "stylelint-less": "^1.0.1",
54
+ "typescript": "^4.5.5"
52
55
  },
53
56
  "browserslist": [
54
57
  "last 2 versions",