@stackoverflow/stacks 2.7.2 → 2.7.4

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 (85) hide show
  1. package/LICENSE.MD +9 -9
  2. package/README.md +158 -180
  3. package/dist/css/stacks.css +18 -4
  4. package/dist/css/stacks.min.css +1 -1
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/atomic/border.less +139 -139
  7. package/lib/atomic/color.less +36 -36
  8. package/lib/atomic/flex.less +426 -426
  9. package/lib/atomic/gap.less +44 -44
  10. package/lib/atomic/grid.less +139 -139
  11. package/lib/atomic/misc.less +374 -374
  12. package/lib/atomic/spacing.less +98 -98
  13. package/lib/atomic/typography.less +266 -264
  14. package/lib/atomic/width-height.less +194 -194
  15. package/lib/base/body.less +44 -44
  16. package/lib/base/configuration-static.less +61 -61
  17. package/lib/base/fieldset.less +5 -5
  18. package/lib/base/icon.less +11 -11
  19. package/lib/base/internal.less +220 -220
  20. package/lib/base/reset-meyer.less +64 -64
  21. package/lib/base/reset-normalize.less +449 -449
  22. package/lib/base/reset.less +20 -20
  23. package/lib/components/activity-indicator/activity-indicator.less +53 -53
  24. package/lib/components/avatar/avatar.less +108 -108
  25. package/lib/components/award-bling/award-bling.less +31 -31
  26. package/lib/components/banner/banner.less +44 -44
  27. package/lib/components/banner/banner.ts +149 -149
  28. package/lib/components/block-link/block-link.less +82 -82
  29. package/lib/components/breadcrumbs/breadcrumbs.less +41 -41
  30. package/lib/components/button-group/button-group.less +82 -82
  31. package/lib/components/card/card.less +37 -37
  32. package/lib/components/check-control/check-control.less +17 -17
  33. package/lib/components/check-group/check-group.less +19 -19
  34. package/lib/components/checkbox_radio/checkbox_radio.less +159 -159
  35. package/lib/components/code-block/code-block.fixtures.ts +88 -88
  36. package/lib/components/code-block/code-block.less +116 -116
  37. package/lib/components/description/description.less +9 -9
  38. package/lib/components/empty-state/empty-state.less +16 -16
  39. package/lib/components/expandable/expandable.less +118 -118
  40. package/lib/components/input-fill/input-fill.less +35 -35
  41. package/lib/components/input-icon/input-icon.less +45 -45
  42. package/lib/components/input-message/input-message.less +49 -49
  43. package/lib/components/label/label.less +110 -110
  44. package/lib/components/link/link.less +7 -1
  45. package/lib/components/link-preview/link-preview.less +148 -148
  46. package/lib/components/menu/menu.less +41 -41
  47. package/lib/components/modal/modal.less +118 -118
  48. package/lib/components/modal/modal.ts +383 -383
  49. package/lib/components/navigation/navigation.less +136 -136
  50. package/lib/components/navigation/navigation.ts +128 -128
  51. package/lib/components/page-title/page-title.less +51 -51
  52. package/lib/components/popover/popover.less +159 -159
  53. package/lib/components/popover/popover.ts +651 -651
  54. package/lib/components/post-summary/post-summary.less +457 -457
  55. package/lib/components/progress-bar/progress-bar.less +291 -291
  56. package/lib/components/prose/prose.less +452 -452
  57. package/lib/components/select/select.less +138 -138
  58. package/lib/components/spinner/spinner.less +103 -103
  59. package/lib/components/table/table.ts +296 -296
  60. package/lib/components/table-container/table-container.less +4 -4
  61. package/lib/components/tag/tag.less +186 -186
  62. package/lib/components/toast/toast.less +35 -35
  63. package/lib/components/toast/toast.ts +357 -357
  64. package/lib/components/toggle-switch/toggle-switch.less +104 -104
  65. package/lib/components/topbar/topbar.less +553 -553
  66. package/lib/components/uploader/uploader.less +205 -205
  67. package/lib/components/user-card/user-card.less +129 -129
  68. package/lib/controllers.ts +33 -33
  69. package/lib/exports/color-mixins.less +283 -283
  70. package/lib/exports/constants-helpers.less +108 -108
  71. package/lib/exports/constants-type.less +155 -155
  72. package/lib/exports/exports.less +15 -15
  73. package/lib/exports/mixins.less +334 -333
  74. package/lib/exports/spacing-mixins.less +67 -67
  75. package/lib/index.ts +32 -32
  76. package/lib/input-utils.less +41 -41
  77. package/lib/stacks-dynamic.less +24 -24
  78. package/lib/stacks-static.less +93 -93
  79. package/lib/stacks.less +13 -13
  80. package/lib/test/assertions.ts +36 -36
  81. package/lib/test/less-test-utils.ts +28 -28
  82. package/lib/test/open-wc-testing-patch.d.ts +26 -26
  83. package/lib/tsconfig.build.json +4 -4
  84. package/lib/tsconfig.json +17 -17
  85. package/package.json +26 -22
@@ -1,138 +1,138 @@
1
- .s-select {
2
- --_se-arrow-bc: currentColor transparent;
3
- --_se-arrow-size: var(--su-static4); // Constant
4
- --_se-select-bc: var(--bc-darker);
5
- --_se-select-bg: var(--white);
6
- --_se-select-br: var(--br-md);
7
- --_se-select-fc: var(--black);
8
- --_se-select-px: 0.7em;
9
- --_se-select-py: 0.6em;
10
- --_se-select-fs: var(--fs-body1);
11
-
12
- // CONTEXTUAL STYLES
13
- @supports (-webkit-overflow-scrolling: touch) {
14
- --_se-select-fs: var(--su-static16); // Increase font size for mobile safari. This keeps our inputs from zooming the page while focused
15
- --_se-select-px: 0.55em; // Compensate for the larger font size so we generally keep the input the same size
16
- --_se-select-py: 0.4em; // Compensate for the larger font size so we generally keep the input the same size
17
- }
18
-
19
- // MODIFIERS
20
- .input-states({
21
- position: relative;
22
- });
23
-
24
- .validation-states(se-select);
25
-
26
- .is-disabled & {
27
- --_se-arrow-bc: var(--bc-dark) transparent;
28
- }
29
-
30
- &&__sm {
31
- .size-styles(sm; se-select; @styles: fs);
32
- // --_se-select-fs: var(--fs-caption);
33
- }
34
-
35
- &&__md {
36
- .size-styles(md; se-select; @styles: br, fs);
37
- --_se-select-py: 0.5em;
38
- }
39
-
40
- &&__lg {
41
- .size-styles(lg; se-select; @styles: br, fs);
42
- --_se-select-px: 0.6em;
43
- --_se-select-py: 0.45em;
44
- }
45
-
46
- &&__xl {
47
- .size-styles(xl; se-select; @styles: br, fs);
48
- --_se-select-px: 0.5em;
49
- --_se-select-py: 0.4em;
50
- }
51
-
52
- // CHILD ELEMENTS
53
- select&,
54
- & > select {
55
- .webkit-autofill();
56
- }
57
-
58
- &:before,
59
- &:after { // menu arrows
60
- border-color: var(--_se-arrow-bc);
61
- border-style: solid;
62
- border-width: var(--_se-arrow-size);
63
- content: "";
64
- pointer-events: none;
65
- position: absolute;
66
- right: calc(var(--su-static12) + var(--su-static1));
67
- z-index: var(--zi-selected);
68
- }
69
-
70
- &:after {
71
- border-bottom-width: 0;
72
- top: calc(50% + var(--su-static1));
73
- }
74
-
75
- &:before {
76
- border-top-width: 0;
77
- top: calc(50% - calc(var(--_se-arrow-size) + var(--su-static1)));
78
- }
79
-
80
- > select { // Menu
81
- // CONTEXTUAL STYLES
82
- fieldset[disabled] &,
83
- &[disabled] {
84
- cursor: not-allowed;
85
- opacity: var(--_o-disabled-static);
86
- }
87
-
88
- &[readonly],
89
- .is-readonly & { // [1]
90
- --_se-select-bc: var(--bc-light);
91
- --_se-select-bg: var(--black-150);
92
- --_se-select-fc: var(--black-300);
93
-
94
- .highcontrast-mode({
95
- --_se-select-fc: var(--fc-light);
96
- });
97
-
98
- cursor: not-allowed;
99
- }
100
-
101
- // INTERACTION
102
- &:focus {
103
- .focus-styles();
104
- }
105
-
106
- &:focus,
107
- &.focus {
108
- color: var(--black);
109
- }
110
-
111
- background-color: var(--_se-select-bg);
112
- border: var(--su-static1) solid var(--_se-select-bc);
113
- border-radius: var(--_se-select-br);
114
- color: var(--_se-select-fc);
115
- font-size: var(--_se-select-fs);
116
- padding: var(--_se-select-py) var(--_se-select-px);
117
-
118
- appearance: none;
119
- font-family: inherit;
120
- height: 100%; // Fill the height of its parent
121
- line-height: var(--lh-sm);
122
- outline: 0;
123
- padding-right: var(--su32);
124
- position: relative; // This prevents Firefox from requiring a second click to select options
125
- width: 100%;
126
- }
127
-
128
- .s-input-icon {
129
- right: var(--su32);
130
- }
131
-
132
- color: var(--fc-dark);
133
- position: relative;
134
- }
135
-
136
- // [1] The readonly attribute is not supported on select elements
137
- // See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly
138
- // and https://github.com/StackExchange/Stacks/pull/1040#discussion_r931144086
1
+ .s-select {
2
+ --_se-arrow-bc: currentColor transparent;
3
+ --_se-arrow-size: var(--su-static4); // Constant
4
+ --_se-select-bc: var(--bc-darker);
5
+ --_se-select-bg: var(--white);
6
+ --_se-select-br: var(--br-md);
7
+ --_se-select-fc: var(--black);
8
+ --_se-select-px: 0.7em;
9
+ --_se-select-py: 0.6em;
10
+ --_se-select-fs: var(--fs-body1);
11
+
12
+ // CONTEXTUAL STYLES
13
+ @supports (-webkit-overflow-scrolling: touch) {
14
+ --_se-select-fs: var(--su-static16); // Increase font size for mobile safari. This keeps our inputs from zooming the page while focused
15
+ --_se-select-px: 0.55em; // Compensate for the larger font size so we generally keep the input the same size
16
+ --_se-select-py: 0.4em; // Compensate for the larger font size so we generally keep the input the same size
17
+ }
18
+
19
+ // MODIFIERS
20
+ .input-states({
21
+ position: relative;
22
+ });
23
+
24
+ .validation-states(se-select);
25
+
26
+ .is-disabled & {
27
+ --_se-arrow-bc: var(--bc-dark) transparent;
28
+ }
29
+
30
+ &&__sm {
31
+ .size-styles(sm; se-select; @styles: fs);
32
+ // --_se-select-fs: var(--fs-caption);
33
+ }
34
+
35
+ &&__md {
36
+ .size-styles(md; se-select; @styles: br, fs);
37
+ --_se-select-py: 0.5em;
38
+ }
39
+
40
+ &&__lg {
41
+ .size-styles(lg; se-select; @styles: br, fs);
42
+ --_se-select-px: 0.6em;
43
+ --_se-select-py: 0.45em;
44
+ }
45
+
46
+ &&__xl {
47
+ .size-styles(xl; se-select; @styles: br, fs);
48
+ --_se-select-px: 0.5em;
49
+ --_se-select-py: 0.4em;
50
+ }
51
+
52
+ // CHILD ELEMENTS
53
+ select&,
54
+ & > select {
55
+ .webkit-autofill();
56
+ }
57
+
58
+ &:before,
59
+ &:after { // menu arrows
60
+ border-color: var(--_se-arrow-bc);
61
+ border-style: solid;
62
+ border-width: var(--_se-arrow-size);
63
+ content: "";
64
+ pointer-events: none;
65
+ position: absolute;
66
+ right: calc(var(--su-static12) + var(--su-static1));
67
+ z-index: var(--zi-selected);
68
+ }
69
+
70
+ &:after {
71
+ border-bottom-width: 0;
72
+ top: calc(50% + var(--su-static1));
73
+ }
74
+
75
+ &:before {
76
+ border-top-width: 0;
77
+ top: calc(50% - calc(var(--_se-arrow-size) + var(--su-static1)));
78
+ }
79
+
80
+ > select { // Menu
81
+ // CONTEXTUAL STYLES
82
+ fieldset[disabled] &,
83
+ &[disabled] {
84
+ cursor: not-allowed;
85
+ opacity: var(--_o-disabled-static);
86
+ }
87
+
88
+ &[readonly],
89
+ .is-readonly & { // [1]
90
+ --_se-select-bc: var(--bc-light);
91
+ --_se-select-bg: var(--black-150);
92
+ --_se-select-fc: var(--black-300);
93
+
94
+ .highcontrast-mode({
95
+ --_se-select-fc: var(--fc-light);
96
+ });
97
+
98
+ cursor: not-allowed;
99
+ }
100
+
101
+ // INTERACTION
102
+ &:focus {
103
+ .focus-styles();
104
+ }
105
+
106
+ &:focus,
107
+ &.focus {
108
+ color: var(--black);
109
+ }
110
+
111
+ background-color: var(--_se-select-bg);
112
+ border: var(--su-static1) solid var(--_se-select-bc);
113
+ border-radius: var(--_se-select-br);
114
+ color: var(--_se-select-fc);
115
+ font-size: var(--_se-select-fs);
116
+ padding: var(--_se-select-py) var(--_se-select-px);
117
+
118
+ appearance: none;
119
+ font-family: inherit;
120
+ height: 100%; // Fill the height of its parent
121
+ line-height: var(--lh-sm);
122
+ outline: 0;
123
+ padding-right: var(--su32);
124
+ position: relative; // This prevents Firefox from requiring a second click to select options
125
+ width: 100%;
126
+ }
127
+
128
+ .s-input-icon {
129
+ right: var(--su32);
130
+ }
131
+
132
+ color: var(--fc-dark);
133
+ position: relative;
134
+ }
135
+
136
+ // [1] The readonly attribute is not supported on select elements
137
+ // See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly
138
+ // and https://github.com/StackExchange/Stacks/pull/1040#discussion_r931144086
@@ -1,103 +1,103 @@
1
- .s-spinner {
2
- --_sp-baw: calc(var(--su-static1) * 3); // 3px
3
- --_sp-size: var(--su-static24);
4
-
5
- // MODIFIERS
6
- &&__xs {
7
- --_sp-baw: var(--su-static1);
8
- --_sp-size: var(--su-static12);
9
- }
10
-
11
- &&__sm {
12
- --_sp-baw: var(--su-static2);
13
- --_sp-size: var(--su-static16);
14
- }
15
-
16
- &&__md {
17
- --_sp-baw: var(--su-static4);
18
- --_sp-size: var(--su-static32);
19
- }
20
-
21
- &&__lg {
22
- --_sp-baw: var(--su-static6);
23
- --_sp-size: var(--su-static48);
24
- }
25
-
26
- // CHILD ELEMENTS
27
- &:after,
28
- &:before {
29
- border: var(--_sp-baw) solid currentColor;
30
-
31
- border-radius: var(--br-circle);
32
- content: '';
33
- height: 100%;
34
- position: absolute;
35
- width: 100%;
36
- }
37
-
38
- &:after {
39
- border-top-color: transparent;
40
- border-right-color: transparent;
41
- border-bottom-color: transparent;
42
- animation: s-spinner-rotate 0.9s infinite cubic-bezier(0.5, 0.1, 0.5, 0.9);
43
- }
44
-
45
- &:before {
46
- opacity: 0.25;
47
- transform: rotate(90deg); // [1]
48
- }
49
-
50
- height: var(--_sp-size);
51
- width: var(--_sp-size);
52
-
53
- position: relative;
54
- text-align: left; // [2]
55
- }
56
-
57
- .is-loading {
58
- --_li-offset: 0.6em;
59
- --_il-size: 1.23076923em;
60
-
61
- &:after,
62
- &:before {
63
- border-radius: var(--br-circle);
64
- border-style: solid;
65
- border-width: var(--su-static2);
66
- content: "";
67
- height: var(--_il-size);
68
- left: var(--_li-offset);
69
- position: absolute;
70
- top: calc(50% - var(--_li-offset));
71
- width: var(--_il-size);
72
- }
73
-
74
- &:after {
75
- animation: s-spinner-rotate 0.9s infinite cubic-bezier(0.5, 0.1, 0.5, 0.9);
76
- border-color: transparent;
77
- border-left-color: currentColor;
78
- filter: invert(0); // [1]
79
- transform-origin: 50% 50% var(--su-static1); // [1]
80
- }
81
-
82
- &:before {
83
- border-color: currentColor;
84
- opacity: 0.3;
85
- }
86
-
87
- padding-left: 2.2em;
88
- position: relative;
89
- }
90
-
91
- // Keyframes
92
- @keyframes s-spinner-rotate {
93
- from {
94
- transform: rotate(0deg);
95
- }
96
- to {
97
- transform: rotate(360deg);
98
- }
99
- }
100
-
101
- // [1] no-op to reduce wobble in Edge. More info: https://github.com/StackExchange/Stacks/blob/d2af26aca06c47e3f1f7a638e49b221a9e28e450/lib/css/components/_stacks-spinner.less#L16-L26
102
-
103
- // [2] When within a parent that has text-align: center, the spinner's entire container spins, not just the spinner. Let's force text-align left so things spin internally.
1
+ .s-spinner {
2
+ --_sp-baw: calc(var(--su-static1) * 3); // 3px
3
+ --_sp-size: var(--su-static24);
4
+
5
+ // MODIFIERS
6
+ &&__xs {
7
+ --_sp-baw: var(--su-static1);
8
+ --_sp-size: var(--su-static12);
9
+ }
10
+
11
+ &&__sm {
12
+ --_sp-baw: var(--su-static2);
13
+ --_sp-size: var(--su-static16);
14
+ }
15
+
16
+ &&__md {
17
+ --_sp-baw: var(--su-static4);
18
+ --_sp-size: var(--su-static32);
19
+ }
20
+
21
+ &&__lg {
22
+ --_sp-baw: var(--su-static6);
23
+ --_sp-size: var(--su-static48);
24
+ }
25
+
26
+ // CHILD ELEMENTS
27
+ &:after,
28
+ &:before {
29
+ border: var(--_sp-baw) solid currentColor;
30
+
31
+ border-radius: var(--br-circle);
32
+ content: '';
33
+ height: 100%;
34
+ position: absolute;
35
+ width: 100%;
36
+ }
37
+
38
+ &:after {
39
+ border-top-color: transparent;
40
+ border-right-color: transparent;
41
+ border-bottom-color: transparent;
42
+ animation: s-spinner-rotate 0.9s infinite cubic-bezier(0.5, 0.1, 0.5, 0.9);
43
+ }
44
+
45
+ &:before {
46
+ opacity: 0.25;
47
+ transform: rotate(90deg); // [1]
48
+ }
49
+
50
+ height: var(--_sp-size);
51
+ width: var(--_sp-size);
52
+
53
+ position: relative;
54
+ text-align: left; // [2]
55
+ }
56
+
57
+ .is-loading {
58
+ --_li-offset: 0.6em;
59
+ --_il-size: 1.23076923em;
60
+
61
+ &:after,
62
+ &:before {
63
+ border-radius: var(--br-circle);
64
+ border-style: solid;
65
+ border-width: var(--su-static2);
66
+ content: "";
67
+ height: var(--_il-size);
68
+ left: var(--_li-offset);
69
+ position: absolute;
70
+ top: calc(50% - var(--_li-offset));
71
+ width: var(--_il-size);
72
+ }
73
+
74
+ &:after {
75
+ animation: s-spinner-rotate 0.9s infinite cubic-bezier(0.5, 0.1, 0.5, 0.9);
76
+ border-color: transparent;
77
+ border-left-color: currentColor;
78
+ filter: invert(0); // [1]
79
+ transform-origin: 50% 50% var(--su-static1); // [1]
80
+ }
81
+
82
+ &:before {
83
+ border-color: currentColor;
84
+ opacity: 0.3;
85
+ }
86
+
87
+ padding-left: 2.2em;
88
+ position: relative;
89
+ }
90
+
91
+ // Keyframes
92
+ @keyframes s-spinner-rotate {
93
+ from {
94
+ transform: rotate(0deg);
95
+ }
96
+ to {
97
+ transform: rotate(360deg);
98
+ }
99
+ }
100
+
101
+ // [1] no-op to reduce wobble in Edge. More info: https://github.com/StackExchange/Stacks/blob/d2af26aca06c47e3f1f7a638e49b221a9e28e450/lib/css/components/_stacks-spinner.less#L16-L26
102
+
103
+ // [2] When within a parent that has text-align: center, the spinner's entire container spins, not just the spinner. Let's force text-align left so things spin internally.