@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
@@ -2,84 +2,87 @@
2
2
  // Base
3
3
  --_ta-bc: var(--theme-tag-border-color, var(--_ta-bg));
4
4
  --_ta-bg: var(--theme-tag-background-color, var(--black-150));
5
- --_ta-fc: var(--theme-tag-color, var(--black-500));
5
+ --_ta-fc: var(--theme-tag-color, var(--black-600));
6
6
  // Hover
7
7
  --_ta-bc-hover: var(--theme-tag-hover-border-color, var(--_ta-bg-hover));
8
8
  --_ta-bg-hover: var(--theme-tag-hover-background-color, var(--black-200));
9
9
  --_ta-fc-hover: var(--theme-tag-hover-color, var(--black-600));
10
10
  // Other
11
- --_ta-br: var(--br-md);
12
11
  --_ta-fs: var(--fs-caption);
13
- --_ta-lh: 1.846153846;
14
- --_ta-pl: var(--_ta-px);
15
- --_ta-pr: var(--_ta-px);
16
- --_ta-px: var(--su4);
17
- --_ta-dismiss-padding: calc(var(--_ta-px) - var(--su-static1));
12
+ --_ta-pb: calc(var(--_ta-pt) + var(--su1));
13
+ --_ta-pl: var(--su8);
14
+ --_ta-pr: var(--su8);
15
+ --_ta-pt: var(--su4);
18
16
 
19
17
  // CONTEXTUAL STYLES
20
18
  .highcontrast-mode({
21
19
  &:not(&__moderator):not(&__required) {
22
20
  --_ta-bc: var(--theme-tag-border-color, var(--black-300));
23
21
  --_ta-bc-hover: var(--theme-tag-hover-border-color, var(--black-300));
22
+
23
+ &.s-tag__ignored {
24
+ --_ta-fc: var(--black-500);
25
+ }
24
26
  }
25
27
  });
26
28
 
27
29
  // MODIFIERS
28
30
  // Sizes
29
- &&__xs {
30
- .size-styles(xs; ta; @styles: fs);
31
- --_ta-lh: 1.4;
32
- --_ta-px: var(--su2);
33
- }
34
31
  &&__sm {
35
- .size-styles(sm; ta; @styles: fs);
36
- --_ta-lh: 1.5;
37
- }
38
- &&__md {
39
- --_ta-px: var(--su6);
40
- --_ta-fs: var(--fs-body2);
41
- --_ta-lh: 1.733333333;
32
+ --_ta-pl: var(--su4);
33
+ --_ta-pr: var(--su4);
34
+ --_ta-pt: var(--su1);
42
35
  }
43
36
  &&__lg {
44
- --_ta-br: calc(var(--br-md) + var(--su-static1));
45
- --_ta-fs: var(--fs-subheading);
46
- --_ta-lh: 1.684210526;
47
- --_ta-px: var(--su6);
37
+ --_ta-fs: var(--fs-body1);
38
+ --_ta-pt: var(--su4);
48
39
  }
49
40
 
50
41
  // VARIANTS
51
- // NOTE: ignored and watched variants are used in core with the .post-tag class (in place of the base tag .s-tag)
52
- &__ignored, // TODO: remove all single `&` ignored styles once core no longer requires them
53
42
  &&__ignored,
54
- &__watched, // TODO: remove all single `&` watched styles once core no longer requires them
55
43
  &&__watched {
56
- --_ta-pl: calc(var(--su-static24) - var(--su-static2)); // 22px
57
- --_ta-before-size: calc(var(--su-static16) - var(--su-static2)); // 14px
58
- // --_ta-before-icon defined per variant
59
-
60
44
  &:before {
61
- height: var(--_ta-before-size);
62
- width: var(--_ta-before-size);
45
+ // --_ta-before-icon defined per variant
63
46
  -webkit-mask: var(--_ta-before-icon) no-repeat center;
64
47
  mask: var(--_ta-before-icon) no-repeat center;
65
48
 
66
49
  background-color: currentColor;
67
50
  content: "";
68
51
  display: block;
69
- left: var(--su-static4);
70
- margin-right: var(--su2);
71
- position: absolute;
72
- top: calc(50% - calc(var(--su-static8) - var(--su-static1)));
52
+ height: calc(var(--su-static16) - var(--su-static2));
73
53
  -webkit-mask-size: contain;
74
- mask-size: contain;
54
+ mask-size: contain;
55
+ width: calc(var(--su-static16) - var(--su-static2));
75
56
  }
57
+ }
76
58
 
77
- position: relative;
59
+ &&__deleted,
60
+ &&__ignored {
61
+ &,
62
+ &.s-tag__required:not(&__moderator),
63
+ &.s-tag__moderator {
64
+ --_ta-bc-hover: var(--_ta-bc);
65
+ --_ta-bg-hover: var(--_ta-bg);
66
+ --_ta-fc-hover: var(--_ta-fc);
67
+ }
68
+ }
69
+
70
+ // TODO SHINE this is considered inaccessible. Discuss w/ design.
71
+ &&__deleted {
72
+ --_ta-fc: var(--black-500);
73
+
74
+ &.s-tag__required:not(&__moderator) {
75
+ --_ta-bc: var(--black-300);
76
+ --_ta-fc: var(--black-400);
77
+ }
78
78
  }
79
79
 
80
- &__ignored, // TODO: remove all single `&` ignored styles once core no longer requires them
80
+ // TODO SHINE this is considered inaccessible. Discuss w/ design.
81
81
  &&__ignored {
82
+ --_ta-bg-hover: var(--_ta-bg);
82
83
  --_ta-before-icon: url("data:image/svg+xml;,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3.52 7.38 1.58 9.26A12.38 12.38 0 0 1 0 7s2.63-5.14 7.05-5.14c.66 0 1.28.12 1.86.32L7.44 3.6a3.48 3.48 0 0 0-3.92 3.78ZM5.3 9.99c.5.28 1.1.44 1.71.44 1.94 0 3.5-1.53 3.5-3.43 0-.62-.17-1.21-.47-1.72L8.7 6.6a1.73 1.73 0 0 1-2.08 2.07L5.29 10Zm6.23-6.19A12.7 12.7 0 0 1 14 7s-2.63 5.14-6.95 5.14A6.1 6.1 0 0 1 4 11.3L2.27 13l-1.4-1.36L11.9 1l1.23 1.2-1.6 1.6Z'/%3E%3C/svg%3E");
84
+ --_ta-fc: var(--black-400);
85
+ --_ta-fc-hover: var(--black-400);
83
86
  }
84
87
 
85
88
  // moderator overrides other required
@@ -93,51 +96,53 @@
93
96
  }
94
97
 
95
98
  &&__required:not(&__moderator) {
96
- --_ta-bc: var(--theme-tag-required-border-color, var(--theme-tag-border-color, var(--black-400)));
97
- --_ta-bg: var(--theme-tag-required-background-color, var(--theme-tag-background-color, var(--black-150)));
98
- --_ta-fc: var(--theme-tag-required-color, var(--theme-tag-color, var(--black-500)));
99
+ --_ta-bc: var(--theme-tag-required-border-color, var(--theme-tag-border-color, var(--black-500)));
99
100
  --_ta-bc-hover: var(--theme-tag-required-hover-border-color, var(--theme-tag-hover-border-color, var(--black-600)));
100
- --_ta-bg-hover: var(--theme-tag-required-hover-background-color, var(--theme-tag-hover-background-color, var(--black-200)));
101
- --_ta-fc-hover: var(--theme-tag-required-hover-color, var(--theme-tag-hover-color, var(--black-600)));
102
101
  }
103
102
 
104
- &__watched, // TODO: remove all single `&` watched styles once core no longer requires them
105
103
  &&__watched {
106
- --_ta-before-icon: url("data:image/svg+xml;,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M7.05 1C2.63 1 0 6.5 0 6.5S2.63 12 7.05 12C11.38 12 14 6.5 14 6.5S11.37 1 7.05 1ZM7 10.17A3.59 3.59 0 0 1 3.5 6.5 3.6 3.6 0 0 1 7 2.83c1.94 0 3.5 1.65 3.5 3.67A3.57 3.57 0 0 1 7 10.17Zm0-1.84c.97 0 1.75-.81 1.75-1.83S7.97 4.67 7 4.67s-1.75.81-1.75 1.83S6.03 8.33 7 8.33Z'/%3E%3C/svg%3E");
104
+ --_ta-before-icon: url("data:image/svg+xml;,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='12' viewBox='0 0 14 12'%3E%3Cpath d='M7.05 1C2.63 1 0 6.5 0 6.5S2.63 12 7.05 12C11.38 12 14 6.5 14 6.5S11.37 1 7.05 1ZM7 10.17A3.59 3.59 0 0 1 3.5 6.5 3.6 3.6 0 0 1 7 2.83c1.94 0 3.5 1.65 3.5 3.67A3.57 3.57 0 0 1 7 10.17Zm0-1.84c.97 0 1.75-.81 1.75-1.83S7.97 4.67 7 4.67s-1.75.81-1.75 1.83S6.03 8.33 7 8.33Z'/%3E%3C/svg%3E");
107
105
  }
108
106
 
109
107
  // CHILD ELEMENTS
110
- & button&--dismiss:not(.s-btn) {
111
- all: unset;
112
- }
108
+ a {
109
+ &:focus-visible {
110
+ .focus-styles();
111
+ }
113
112
 
114
- & &--dismiss,
115
- & button&--dismiss:not(.s-btn) { // Style adjustment to @Svg.ClearSm
113
+ color: var(--_ta-fc) !important;
114
+ margin: calc(var(--_ta-pt) * -1) calc(var(--_ta-pr) * -1) calc(var(--_ta-pb) * -1) calc(var(--_ta-pl) * -1);
115
+ padding: var(--_ta-pt) var(--_ta-pr) var(--_ta-pb) var(--_ta-pl);
116
+ }
117
+ // Dismiss
118
+ &:has(> &--dismiss) {
119
+ --_ta-pr: var(--su2);
120
+ }
121
+ & &--dismiss {
116
122
  &:focus-visible {
117
123
  .focus-styles();
118
124
  }
119
125
 
120
126
  &:hover {
121
- .highcontrast-mode({
122
- color: var(--white);
123
- });
124
-
125
127
  background-color: var(--_ta-fc);
126
128
  color: var(--_ta-bg);
127
129
  }
128
130
 
131
+ all: unset;
129
132
  align-items: center;
130
- align-self: stretch;
131
133
  background-color: transparent;
132
- border-radius: var(--br-md);
133
134
  color: inherit;
134
135
  cursor: pointer;
135
136
  display: flex;
136
137
  justify-content: center;
137
- margin: var(--su-static1) calc(var(--_ta-dismiss-padding) * -1) var(--su-static1) var(--_ta-dismiss-padding);
138
- padding: var(--_ta-dismiss-padding);
138
+ margin: calc(var(--_ta-pt) * -1) 0 calc(var(--_ta-pb) * -1);
139
+ padding: var(--su2);
139
140
  }
140
141
 
142
+ // Sponsor
143
+ &:has(> &--sponsor) {
144
+ --_ta-pl: var(--su2);
145
+ }
141
146
  & &--sponsor { // The small sponsor favicon displayed within a tag
142
147
  img,
143
148
  .svg-icon {
@@ -145,11 +150,8 @@
145
150
  height: 100%;
146
151
  }
147
152
 
148
- align-self: center;
149
- border-radius: calc(var(--br-md) - var(--su-static1));
150
- display: inline-flex;
151
- margin: calc(var(--su1) * -1) var(--su4) calc(var(--su2) * -1) calc(var(--su2) * -1);
152
153
  max-width: calc(var(--su-static16) + var(--su-static2));
154
+ margin: calc(var(--_ta-pt) * -1) 0 calc(var(--_ta-pb) * -1) 0;
153
155
  }
154
156
 
155
157
  // INTERACTION
@@ -168,19 +170,15 @@
168
170
 
169
171
  background-color: var(--_ta-bg);
170
172
  border: var(--su-static1) solid var(--_ta-bc);
171
- border-radius: var(--_ta-br);
172
173
  color: var(--_ta-fc);
173
174
  font-size: var(--_ta-fs);
174
- line-height: var(--_ta-lh);
175
- padding-left: var(--_ta-pl);
176
- padding-right: var(--_ta-pr);
177
-
175
+ padding: var(--_ta-pt) var(--_ta-pr) var(--_ta-pb) var(--_ta-pl);
176
+
178
177
  align-items: center;
179
178
  display: inline-flex;
180
- font-weight: 700;
179
+ gap: var(--su4);
181
180
  justify-content: center;
182
- min-width: 0;
181
+ line-height: var(--lh-xs);
183
182
  text-decoration: none;
184
- vertical-align: middle;
185
183
  white-space: nowrap;
186
184
  }
@@ -13,11 +13,10 @@
13
13
 
14
14
  .s-notice {
15
15
  box-shadow: var(--bs-sm);
16
- max-width: 44rem;
16
+ max-width: 38.5rem;
17
17
  padding-bottom: var(--su8);
18
18
  padding-top: var(--su8);
19
19
  pointer-events: all;
20
- width: 100%;
21
20
  }
22
21
 
23
22
  display: flex;
@@ -31,7 +31,7 @@
31
31
  --_tb-searchbar-p: 0 var(--su8);
32
32
  --_tb-searchbar-open-d: unset;
33
33
  --_tb-searchbar-open-mxw: 0;
34
- --_tb-searchbar-popover-wmn: calc(var(--s-step) * 4);
34
+ --_tb-searchbar-popover-wmn: var(--su448);
35
35
  --_tb-searchbar-popover-content-mxh: calc(100vh - var(--_tb-h) - var(--su16));
36
36
 
37
37
  // CONTEXTUAL STYLES
@@ -147,7 +147,7 @@
147
147
  height: 100%;
148
148
  margin: 0 auto;
149
149
  max-width: 100%;
150
- width: var(--s-full);
150
+ width: var(--su-max);
151
151
  }
152
152
 
153
153
  & &--content {
@@ -413,8 +413,8 @@
413
413
 
414
414
  align-self: stretch;
415
415
  color: var(--theme-topbar-select-color, var(--black-500));
416
- margin-right: calc(var(--su-static1) * -1); //-1px
417
- max-width: calc(var(--s-step) * 2) !important; // wmx2;
416
+ margin-right: var(--sun1);
417
+ max-width: var(--su256) !important;
418
418
  }
419
419
 
420
420
  &.s-topbar--searchbar__open {
@@ -1,129 +1,155 @@
1
1
  .s-user-card {
2
2
  --_uc-ai: center;
3
- --_uc-bg: unset;
4
- --_uc-bar: unset;
5
- --_uc-d: grid;
6
- --_uc-fc: unset;
7
- --_uc-g: var(--su4) var(--su8);
8
- --_uc-p: var(--su8);
9
- --_uc-info-ai: unset;
10
- --_uc-info-fd: column;
11
- --_uc-link-fs: var(--fs-caption);
12
- --_uc-link-ws: unset;
13
- --_uc-rep-fc: unset;
14
- --_uc-time-fc: var(--black-400);
15
- --_uc-time-ws: unset;
16
- --_uc-type-fc: var(--theme-primary-400);
17
-
18
- // MODIFIERS
19
- &&__deleted {
20
- --_uc-fc: var(--black-400);
21
- }
22
-
23
- &&__highlighted {
24
- --_uc-bg: var(--theme-secondary-100);
25
- --_uc-bar: var(--br-md);
26
- --_uc-time-fc: var(--black-500);
27
- --_uc-type-fc: var(--black-500);
28
- }
3
+ --_uc-fd: unset;
4
+ --_uc-column-gap: var(--su6);
5
+ --_uc-group-gap: var(--su4);
6
+ --_uc-row-gap: var(--su6);
7
+ --_uc-username-fs: unset;
8
+ --_uc-username-p: unset;
9
+ --_uc-username-bl: unset;
10
+ --_uc-username-bg: unset;
11
+ --_uc-username-fc: unset;
12
+ --_uc-username-d: unset;
13
+ --_uc-username-ai: unset;
29
14
 
30
15
  // VARIANTS
31
- &&__minimal,
32
- &&__small {
33
- --_uc-d: flex;
34
- --_uc-g: var(--su4);
35
- --_uc-p: 0;
36
- --_uc-info-ai: center;
37
- --_uc-info-fd: row;
38
- }
16
+ // SIZES
17
+ &&__lg {
18
+ .s-avatar {
19
+ margin-right: var(--su6);
20
+ }
21
+
22
+ .s-user-card--username {
23
+ margin-right: var(--su2);
24
+ }
25
+
26
+ .s-user-card--group:has(> .s-user-card--rep) {
27
+ margin-top: calc(var(--su2) * -1);
28
+ }
39
29
 
40
- &&__full {
41
30
  --_uc-ai: flex-start;
42
- --_uc-link-fs: var(--fs-body2);
31
+ --_uc-fd: column;
32
+ --_uc-username-fs: var(--fs-body3);
43
33
  }
44
34
 
45
- &&__minimal {
46
- --_uc-link-ws: nowrap;
47
- --_uc-rep-fc: var(--black-500);
48
- --_uc-time-ws: nowrap;
35
+ &&__deleted {
36
+ --_uc-username-fc: var(--black-400);
49
37
  }
50
38
 
51
39
  // CHILD ELEMENTS
52
- & &--location,
53
- & &--role {
54
- font-size: var(--fs-caption);
40
+ & &--bio {
41
+ .truncation(3);
55
42
  color: var(--black-400);
56
43
  }
57
44
 
58
- & &--awards {
59
- li {
60
- font-size: var(--fs-caption);
61
- }
45
+ & &--recognition {
46
+ --_uc-row-gap: var(--su4);
62
47
 
63
- .list-reset;
64
- align-items: center;
65
- display: flex;
66
- gap: var(--su6);
48
+ &,
49
+ & a {
50
+ color: var(--theme-primary);
51
+ }
67
52
  }
68
53
 
69
- & &--info {
70
- align-items: var(--_uc-info-ai);
71
- flex-direction: var(--_uc-info-fd);
54
+ & &--recognition-additional-bling {
55
+ &,
56
+ & a {
57
+ color: var(--theme-primary);
58
+ }
59
+ }
72
60
 
73
- display: flex;
74
- gap: var(--su4);
61
+ & &--rep {
62
+ color: var(--black-600);
63
+ font-weight: 600;
75
64
  }
76
65
 
77
- & &--link {
78
- font-size: var(--_uc-link-fs);
79
- white-space: var(--_uc-link-ws);
66
+ & &--time {
67
+ color: var(--black-400);
68
+ }
80
69
 
81
- align-items: center;
82
- flex-wrap: wrap;
83
- min-width: 0; // Allow things to wrap
70
+ & &--username {
71
+ align-items: var(--_uc-username-ai);
72
+ background-color: var(--_uc-username-bg);
73
+ border-left: var(--_uc-username-bl);
74
+ color: var(--_uc-username-fc);
75
+ display: var(--_uc-username-d);
76
+ font-size: var(--_uc-username-fs);
77
+ font-weight: 500;
78
+ min-width: 0;
84
79
  overflow-wrap: break-word;
80
+ padding: var(--_uc-username-p);
81
+ word-break: break-all;
85
82
  }
86
83
 
87
- & &--rep {
88
- color: var(--_uc-rep-fc);
89
-
90
- font-weight: 700;
84
+ &--username__op {
85
+ --_uc-username-p: calc(var(--su4) - var(--su1)) var(--su4) calc(var(--su4) - var(--su1)) var(--su4);
86
+ --_uc-username-bg: var(--blue-100);
87
+ --_uc-username-bl: var(--su4) solid var(--blue-300);
88
+ --_uc-username-d: flex;
89
+ --_uc-username-ai: center;
90
+ .s-user-card__sm & {
91
+ --_uc-username-p: 0 var(--su4);
92
+ }
91
93
  }
92
94
 
93
- & &--tags {
94
- align-items: center;
95
- min-width: 0; // Allow things to wrap
96
- flex-wrap: wrap;
95
+ // Layout specific
96
+ & &--column {
97
+ align-items: flex-start;
98
+ display: flex;
99
+ flex-direction: column;
100
+ gap: var(--_uc-column-gap);
97
101
  }
98
102
 
99
- & &--time {
100
- color: var(--_uc-time-fc);
101
- white-space: var(--_uc-time-ws);
103
+ & &--group {
104
+ &:has(> .s-avatar) {
105
+ --_uc-group-gap: var(--su6);
106
+ }
102
107
 
103
- font-size: var(--fs-caption);
104
- grid-column: ~"1 / 3";
105
- grid-row: ~"1 / 2";
108
+ &:has(+ .s-user-card--time) {
109
+ margin-right: var(--su2);
110
+ }
111
+
112
+ align-items: center;
113
+ display: flex;
114
+ gap: var(--_uc-group-gap);
106
115
  }
107
116
 
108
- & &--type {
109
- a:not(.s-link) {
110
- color: inherit !important;
117
+ & ul&--group {
118
+ &.s-user-card--group__split {
119
+ li:not(:last-child) {
120
+ &:after {
121
+ background-color: var(--black-350);
122
+ content: "";
123
+ display: block;
124
+ margin-left: var(--su4);
125
+ width: var(--su4);
126
+ height: var(--su4);
127
+ }
128
+ }
111
129
  }
112
130
 
113
- color: var(--_uc-type-fc);
131
+ li {
132
+ align-items: center;
133
+ display: inline-flex;
134
+ gap: var(--su2);
135
+ }
114
136
 
115
- font-size: var(--fs-caption);
116
- grid-column: ~"1 / 3";
137
+ .list-reset;
138
+ }
139
+
140
+ & &--row {
141
+ align-items: center;
142
+ display: flex;
143
+ flex-direction: row;
144
+ flex-wrap: wrap;
145
+ gap: var(--_uc-row-gap);
117
146
  }
118
147
 
119
148
  align-items: var(--_uc-ai);
120
- background-color: var(--_uc-bg);
121
- border-radius: var(--_uc-bar);
122
- color: var(--_uc-fc);
123
- display: var(--_uc-d);
124
- gap: var(--_uc-g);
125
-
126
- grid-template-columns: auto 1fr;
127
- line-height: 1;
128
- padding: var(--_uc-p);
129
- }
149
+ color: var(--black-500);
150
+ display: flex;
151
+ flex-direction: var(--_uc-fd);
152
+ flex-wrap: wrap;
153
+ font-size: var(--fs-caption);
154
+ gap: var(--su6);
155
+ }
@@ -0,0 +1,134 @@
1
+ .s-vote {
2
+ --_vo-fd: column;
3
+ --_vo-child-bg: var(--black-150);
4
+ --_vo-child-br: unset;
5
+ --_vo-child-fd: var(--_vo-fd);
6
+ --_vo-child-g: calc(var(--su8) + var(--su2)); // 10px
7
+ --_vo-child-h: unset;
8
+ --_vo-child-w: calc(var(--su48) + var(--su2)); // 50px
9
+ --_vo-child-p: unset;
10
+
11
+ // CHILD ELEMENTS
12
+ &:not(&__horizontal){
13
+ :first-child {
14
+ --_vo-child-p: calc(var(--su12) + var(--su2)) 0 calc(var(--su12) - var(--su2)); // 14px 0 10px
15
+ --_vo-child-br: var(--br-pill) var(--br-pill) 0 0;
16
+ }
17
+
18
+ :last-child {
19
+ --_vo-child-p: calc(var(--su12) - var(--su2)) 0 calc(var(--su12) + var(--su2)); // 10px 0 14px
20
+ --_vo-child-br: 0 0 var(--br-pill) var(--br-pill);
21
+ }
22
+
23
+ :only-child {
24
+ --_vo-child-br: var(--br-pill);
25
+ --_vo-child-g: calc(var(--su16) + var(--su4)); // 18px
26
+ --_vo-child-p: calc(var(--su12) + var(--su2)) 0; // 14px 0
27
+ }
28
+ }
29
+
30
+ // MODIFIERS
31
+ &&__expanded {
32
+ --_vo-child-g: var(--su2);
33
+ --_vo-child-p: 0;
34
+
35
+ .s-vote {
36
+ &--total {
37
+ display: none;
38
+ }
39
+ &--upvotes,
40
+ &--downvotes {
41
+ display: block;
42
+ }
43
+ }
44
+ }
45
+
46
+ &&__horizontal {
47
+ --_vo-fd: row;
48
+ --_vo-child-h: var(--su32);
49
+ --_vo-child-p: 0 var(--su4);
50
+ --_vo-child-w: unset;
51
+
52
+ :first-child {
53
+ --_vo-child-p: 0 var(--su6) 0 calc(var(--su8) + var(--su2)); // 0 6px 0 10px
54
+ --_vo-child-br: var(--br-pill) 0 0 var(--br-pill);
55
+ }
56
+
57
+ :last-child {
58
+ --_vo-child-p: 0 calc(var(--su8) + var(--su2)) 0 var(--su6); // 0 10px 0 6px
59
+ --_vo-child-br: 0 var(--br-pill) var(--br-pill) 0;
60
+ }
61
+
62
+ .s-vote--votes:last-child:not(:only-child) {
63
+ --_vo-child-p: 0 calc(var(--su12) + var(--su2)) 0 var(--su4); // 0 14px 0 4px
64
+ }
65
+
66
+ :only-child {
67
+ --_vo-child-br: var(--br-pill);
68
+ --_vo-child-g: calc(var(--su8) + var(--su2)); // 10px
69
+ --_vo-child-p: 0 calc(var(--su12) + var(--su2)) 0 calc(var(--su8) + var(--su2)); // 0 10px
70
+ }
71
+ }
72
+
73
+ // CHILD ELEMENTS
74
+ > button {
75
+ // Reset button styles
76
+ appearance: none;
77
+ -webkit-appearance: none;
78
+ background: none;
79
+ border: 0;
80
+ color: inherit;
81
+ cursor: pointer;
82
+ font: inherit;
83
+ margin: 0;
84
+ padding: 0;
85
+ }
86
+
87
+ & &--btn,
88
+ & > &--votes {
89
+ background-color: var(--_vo-child-bg);
90
+ border-radius: var(--_vo-child-br);
91
+ flex-direction: var(--_vo-child-fd);
92
+ gap: var(--_vo-child-g);
93
+ height: var(--_vo-child-h);
94
+ padding: var(--_vo-child-p);
95
+ width: var(--_vo-child-w);
96
+
97
+ align-items: center;
98
+ display: inline-flex;
99
+ justify-content: center;
100
+ overflow: hidden;
101
+ font-weight: 600;
102
+ text-align: center;
103
+ white-space: nowrap;
104
+ }
105
+
106
+ & &--upvotes,
107
+ & &--downvotes {
108
+ display: none;
109
+ }
110
+
111
+ & &--upvotes {
112
+ color: var(--green-500);
113
+ }
114
+
115
+ & &--downvotes {
116
+ color: var(--red-500);
117
+ }
118
+
119
+ // INTERACTION
120
+ > button,
121
+ & &--btn {
122
+ &:focus-visible {
123
+ .focus-styles(true, false);
124
+ }
125
+
126
+ &:hover {
127
+ --_vo-child-bg: var(--black-200);
128
+ }
129
+ }
130
+
131
+ flex-direction: var(--_vo-fd);
132
+
133
+ display: flex;
134
+ }