@stackoverflow/stacks 1.8.0 → 1.9.1

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 (137) hide show
  1. package/README.md +161 -153
  2. package/dist/{controllers/s-banner.d.ts → components/banner/banner.d.ts} +1 -1
  3. package/dist/{controllers/s-expandable-control.d.ts → components/expandable/expandable.d.ts} +1 -1
  4. package/dist/{controllers/s-modal.d.ts → components/modal/modal.d.ts} +1 -1
  5. package/dist/{controllers/s-navigation-tablist.d.ts → components/navigation/navigation.d.ts} +1 -1
  6. package/dist/{controllers/s-popover.d.ts → components/popover/popover.d.ts} +1 -1
  7. package/dist/{controllers/s-tooltip.d.ts → components/popover/tooltip.d.ts} +1 -1
  8. package/dist/components/table/table.d.ts +30 -0
  9. package/dist/{controllers/s-toast.d.ts → components/toast/toast.d.ts} +1 -1
  10. package/dist/{controllers/s-uploader.d.ts → components/uploader/uploader.d.ts} +1 -1
  11. package/dist/controllers.d.ts +9 -0
  12. package/dist/css/stacks.css +2063 -1994
  13. package/dist/css/stacks.min.css +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/js/stacks.js +1465 -1436
  16. package/dist/js/stacks.min.js +1 -1
  17. package/lib/{css/atomic/borders.less → atomic/border.less} +397 -379
  18. package/lib/{css/atomic/colors.less → atomic/color.less} +210 -210
  19. package/lib/{css/atomic → atomic}/flex.less +426 -426
  20. package/lib/{css/atomic → atomic}/gap.less +44 -44
  21. package/lib/{css/atomic → atomic}/grid.less +139 -139
  22. package/lib/{css/atomic → atomic}/misc.less +343 -343
  23. package/lib/{css/atomic → atomic}/spacing.less +342 -342
  24. package/lib/{css/atomic → atomic}/typography.less +267 -267
  25. package/lib/{css/atomic → atomic}/width-height.less +194 -194
  26. package/lib/{css/base → base}/body.less +44 -44
  27. package/lib/{css/base → base}/configuration-static.less +61 -61
  28. package/lib/{css/base → base}/fieldset.less +5 -5
  29. package/lib/{css/base/icons.less → base/icon.less} +11 -20
  30. package/lib/{css/base/internals.less → base/internal.less} +220 -220
  31. package/lib/{css/base → base}/reset-meyer.less +64 -64
  32. package/lib/{css/base → base}/reset-normalize.less +449 -449
  33. package/lib/{css/base → base}/reset.less +20 -20
  34. package/lib/components/activity-indicator/activity-indicator.a11y.test.ts +21 -0
  35. package/lib/{css/components → components/activity-indicator}/activity-indicator.less +40 -40
  36. package/lib/components/activity-indicator/activity-indicator.visual.test.ts +23 -0
  37. package/lib/{css/components/anchors.less → components/anchor/anchor.less} +61 -61
  38. package/lib/components/avatar/avatar.a11y.test.ts +36 -0
  39. package/lib/{css/components/avatars.less → components/avatar/avatar.less} +108 -108
  40. package/lib/components/avatar/avatar.visual.test.ts +54 -0
  41. package/lib/components/award-bling/award-bling.a11y.test.ts +17 -0
  42. package/lib/{css/components → components/award-bling}/award-bling.less +31 -31
  43. package/lib/components/award-bling/award-bling.visual.test.ts +26 -0
  44. package/lib/{css/components/badges.less → components/badge/badge.less} +251 -251
  45. package/lib/components/banner/banner.a11y.test.ts +37 -0
  46. package/lib/components/banner/banner.less +51 -0
  47. package/lib/{test/s-banner.test.ts → components/banner/banner.test.ts} +73 -73
  48. package/lib/{ts/controllers/s-banner.ts → components/banner/banner.ts} +149 -149
  49. package/lib/components/banner/banner.visual.test.ts +37 -0
  50. package/lib/components/block-link/block-link.a11y.test.ts +68 -0
  51. package/lib/{css/components → components/block-link}/block-link.less +80 -80
  52. package/lib/components/block-link/block-link.visual.test.ts +61 -0
  53. package/lib/components/breadcrumbs/breadcrumbs.a11y.test.ts +37 -0
  54. package/lib/{css/components → components/breadcrumbs}/breadcrumbs.less +41 -41
  55. package/lib/components/breadcrumbs/breadcrumbs.visual.test.ts +37 -0
  56. package/lib/components/button/button.a11y.test.ts +32 -0
  57. package/lib/{css/components/buttons.less → components/button/button.less} +502 -501
  58. package/lib/components/button/button.visual.test.ts +52 -0
  59. package/lib/{css/components/button-groups.less → components/button-group/button-group.less} +83 -83
  60. package/lib/components/card/card.a11y.test.ts +13 -0
  61. package/lib/{css/components/cards.less → components/card/card.less} +29 -29
  62. package/lib/components/card/card.visual.test.ts +54 -0
  63. package/lib/components/check-control/check-control.less +17 -0
  64. package/lib/components/check-group/check-group.less +19 -0
  65. package/lib/{css/components/checkboxes-radios.less → components/checkbox_radio/checkbox_radio.less} +158 -158
  66. package/lib/{css/components/code-blocks.less → components/code-block/code-block.less} +116 -116
  67. package/lib/{css/components → components/description}/description.less +9 -9
  68. package/lib/{css/components/empty-states.less → components/empty-state/empty-state.less} +16 -16
  69. package/lib/{css/components → components/expandable}/expandable.less +118 -115
  70. package/lib/components/expandable/expandable.test.ts +51 -0
  71. package/lib/{ts/controllers/s-expandable-control.ts → components/expandable/expandable.ts} +238 -238
  72. package/lib/components/input-fill/input-fill.less +35 -0
  73. package/lib/components/input-icon/input-icon.less +45 -0
  74. package/lib/components/input-message/input-message.less +48 -0
  75. package/lib/{css/components/inputs.less → components/input_textarea/input_textarea.less} +166 -297
  76. package/lib/{css/components/labels.less → components/label/label.less} +111 -111
  77. package/lib/{css/components → components/link}/link.less +119 -119
  78. package/lib/{css/components/link-previews.less → components/link-preview/link-preview.less} +139 -139
  79. package/lib/{css/components → components/menu}/menu.less +41 -41
  80. package/lib/{css/components/modals.less → components/modal/modal.less} +113 -113
  81. package/lib/{ts/controllers/s-modal.ts → components/modal/modal.ts} +379 -379
  82. package/lib/{css/components → components/navigation}/navigation.less +134 -134
  83. package/lib/{ts/controllers/s-navigation-tablist.ts → components/navigation/navigation.ts} +128 -128
  84. package/lib/{css/components/notices.less → components/notice/notice.less} +203 -292
  85. package/lib/{css/components/page-titles.less → components/page-title/page-title.less} +51 -51
  86. package/lib/{css/components → components/pagination}/pagination.less +52 -52
  87. package/lib/{css/components/popovers.less → components/popover/popover.less} +148 -147
  88. package/lib/{ts/controllers/s-popover.ts → components/popover/popover.ts} +651 -651
  89. package/lib/{test/s-tooltip.test.ts → components/popover/tooltip.test.ts} +62 -62
  90. package/lib/{ts/controllers/s-tooltip.ts → components/popover/tooltip.ts} +343 -343
  91. package/lib/{test/s-tooltip.visual.test.ts → components/popover/tooltip.visual.test.ts} +31 -31
  92. package/lib/{css/components → components/post-summary}/post-summary.less +415 -415
  93. package/lib/{css/components/progress-bars.less → components/progress-bar/progress-bar.less} +291 -291
  94. package/lib/{css/components → components/prose}/prose.less +452 -452
  95. package/lib/{css/components → components/select}/select.less +148 -148
  96. package/lib/{css/components/sidebar-widgets.less → components/sidebar-widget/sidebar-widget.less} +257 -259
  97. package/lib/{css/components → components/spinner}/spinner.less +103 -103
  98. package/lib/{css/components → components/table}/table.less +307 -297
  99. package/lib/components/table/table.test.ts +366 -0
  100. package/lib/{ts/controllers/s-table.ts → components/table/table.ts} +296 -263
  101. package/lib/components/table-container/table-container.less +4 -0
  102. package/lib/{css/components/tags.less → components/tag/tag.less} +213 -213
  103. package/lib/components/toast/toast.less +35 -0
  104. package/lib/{test/s-toast.test.ts → components/toast/toast.test.ts} +63 -63
  105. package/lib/{ts/controllers/s-toast.ts → components/toast/toast.ts} +357 -357
  106. package/lib/components/toast/toast.visual.test.ts +27 -0
  107. package/lib/{css/components/toggle-switches.less → components/toggle-switch/toggle-switch.less} +110 -110
  108. package/lib/{css/components → components/topbar}/topbar.less +436 -435
  109. package/lib/{css/components → components/uploader}/uploader.less +195 -195
  110. package/lib/{ts/controllers/s-uploader.ts → components/uploader/uploader.ts} +205 -205
  111. package/lib/{css/components/user-cards.less → components/user-card/user-card.less} +129 -129
  112. package/lib/controllers.ts +33 -0
  113. package/lib/{css/exports → exports}/constants-colors.less +1112 -1111
  114. package/lib/{css/exports → exports}/constants-helpers.less +108 -108
  115. package/lib/{css/exports → exports}/constants-type.less +153 -153
  116. package/lib/{css/exports → exports}/exports.less +15 -15
  117. package/lib/{css/exports → exports}/mixins.less +299 -299
  118. package/lib/{ts/index.ts → index.ts} +32 -32
  119. package/lib/{css/input-utils.less → input-utils.less} +44 -44
  120. package/lib/{css/stacks-dynamic.less → stacks-dynamic.less} +24 -25
  121. package/lib/stacks-static.less +93 -0
  122. package/lib/{css/stacks.less → stacks.less} +13 -13
  123. package/lib/{ts/stacks.ts → stacks.ts} +113 -113
  124. package/lib/test/open-wc-testing-patch.d.ts +26 -0
  125. package/lib/test/test-utils.ts +466 -0
  126. package/lib/tsconfig.build.json +4 -0
  127. package/lib/tsconfig.json +16 -13
  128. package/package.json +106 -105
  129. package/dist/controllers/index.d.ts +0 -9
  130. package/dist/controllers/s-table.d.ts +0 -8
  131. package/lib/css/stacks-static.less +0 -87
  132. package/lib/test/s-avatar.a11y.test.ts +0 -77
  133. package/lib/test/s-banner.visual.test.ts +0 -61
  134. package/lib/test/s-btn.a11y.test.ts +0 -123
  135. package/lib/test/s-btn.visual.test.ts +0 -16
  136. package/lib/test/s-toast.visual.test.ts +0 -48
  137. package/lib/ts/controllers/index.ts +0 -17
@@ -1,297 +1,307 @@
1
- .s-table-container {
2
- overflow-x: auto;
3
- @scrollbar-styles();
4
- }
5
-
6
- .s-table {
7
- @ta-cell-border: var(--su-static1) solid var(--bc-medium);
8
- @ta-columns: (100% / 12);
9
-
10
- --_ta-tbody-tbody-bc: var(--bc-medium);
11
- --_ta-tbody-tbody-bw: var(--su-static2);
12
- --_ta-tbody-tr-even-bg: unset;
13
- --_ta-td-bbw: 0;
14
- --_ta-td-bc: var(--bc-medium);
15
- --_ta-td-fs: unset;
16
- --_ta-td-fw: unset;
17
- --_ta-td-p: var(--su8);
18
- --_ta-td-ta: left;
19
- --_ta-td-va: middle;
20
- --_ta-td-w: unset;
21
- --_ta-thead-th-bg: var(--black-025);
22
- --_ta-th-bbw: 0;
23
- --_ta-th-bc: var(--bc-medium);
24
- --_ta-th-fs: unset;
25
- --_ta-th-p: var(--su8);
26
- --_ta-th-ta: left;
27
- --_ta-th-va: middle;
28
- --_ta-th-w: unset;
29
-
30
- // VARIANTS
31
- &&__stripes {
32
- --_ta-tbody-tr-even-bg: var(--black-025);
33
- --_ta-thead-th-bg: var(--black-050);
34
- }
35
-
36
- // MODIFIERS
37
- &.ta-center {
38
- --_ta-td-ta: center;
39
- --_ta-th-ta: center;
40
- }
41
-
42
- &.ta-left {
43
- --_ta-td-ta: left;
44
- --_ta-th-ta: left;
45
- }
46
-
47
- &.ta-justify {
48
- --_ta-td-ta: justify;
49
- --_ta-th-ta: justify;
50
- }
51
-
52
- &.ta-right {
53
- --_ta-td-ta: right;
54
- --_ta-th-ta: right;
55
- }
56
-
57
- &.va-bottom {
58
- --_ta-td-va: bottom;
59
- --_ta-th-va: bottom;
60
- }
61
-
62
- &.va-middle {
63
- --_ta-td-va: middle;
64
- --_ta-th-va: middle;
65
- }
66
-
67
- &.va-top {
68
- --_ta-td-va: top;
69
- --_ta-th-va: top;
70
- }
71
-
72
- &&__b0 {
73
- --_ta-td-bc: transparent;
74
- --_ta-th-bc: transparent;
75
- --_ta-tbody-tbody-bc: transparent; // [1]
76
- --_ta-tbody-tbody-bw: var(--su-static12); // [1]
77
- --_ta-thead-th-bg: transparent;
78
-
79
- thead th {
80
- font-size: inherit;
81
- text-transform: initial;
82
- letter-spacing: initial;
83
- }
84
- }
85
-
86
- &&__bx {
87
- tr {
88
- > *:not(:first-child) {
89
- border-left-color: transparent;
90
- }
91
- > *:not(:last-child) {
92
- border-right-color: transparent;
93
- }
94
- }
95
- }
96
-
97
- &&__bx-simple {
98
- --_ta-thead-th-bg: transparent;
99
- --_ta-foot-td-bc: transparent;
100
- --_ta-foot-th-bc: transparent;
101
-
102
- td,
103
- th {
104
- border-left-color: transparent;
105
- border-right-color: transparent;
106
- }
107
-
108
- tbody tr {
109
- &:first-of-type th,
110
- &:first-of-type td {
111
- border-top-color: transparent;
112
- }
113
- &:last-of-type th,
114
- &:last-of-type td {
115
- border-bottom-color: transparent;
116
- }
117
- }
118
-
119
- thead th {
120
- border-top-color: transparent;
121
- border-bottom-color: var(--bc-darker);
122
- font-size: inherit;
123
- text-transform: initial;
124
- letter-spacing: initial;
125
- }
126
- }
127
-
128
- &&__sortable {
129
- thead th {
130
- a { // If an anchor is used, it should appear like a normal header
131
- color: inherit;
132
- }
133
-
134
- &.is-sorted { // Selected state
135
- color: var(--black-900);
136
- }
137
-
138
- color: var(--fc-light);
139
- cursor: pointer;
140
- }
141
- }
142
-
143
- // Sizes
144
- &&__sm {
145
- --_ta-td-p: var(--su4);
146
- --_ta-th-p: var(--su4);
147
- }
148
-
149
- &&__lg {
150
- --_ta-td-p: var(--su12);
151
- --_ta-th-p: var(--su12);
152
- }
153
-
154
- // CHILD ELEMENTS
155
- & &--cell {
156
- .generate-cell-widths-classes(@n, @i: 1) when (@i =< @n) {
157
- &@{i} { // generates iterated cell classes
158
- @ta-cell-w: @ta-columns * @i;
159
- --_ta-td-w: @ta-cell-w;
160
- --_ta-th-w: @ta-cell-w;
161
- }
162
- .generate-cell-widths-classes(@n, (@i + 1));
163
- }
164
-
165
- .generate-cell-widths-classes(12);
166
- }
167
-
168
- & &--totals {
169
- --_ta-td-fs: var(--fs-subheading);
170
- --_ta-td-pt: var(--su12);
171
- --_ta-td-fw: bold;
172
- --_ta-th-fs: var(--fs-subheading);
173
- --_ta-th-pt: var(--su12);
174
- }
175
-
176
- tbody {
177
- + tbody { // If two table bodies are next to each other, visually separate them
178
- border-top: var(--_ta-tbody-tbody-bw) solid var(--_ta-tbody-tbody-bc);
179
- }
180
-
181
- th {
182
- font-weight: normal;
183
- }
184
-
185
- tr {
186
- &:nth-child(2n) {
187
- background-color: var(--_ta-tbody-tr-even-bg);
188
- }
189
- }
190
- }
191
-
192
- td {
193
- .s-checkbox {
194
- display: block;
195
- }
196
-
197
- &.s-table--bulk {
198
- --_ta-td-w: calc(var(--su32) - var(--su2)); // 30px;
199
- }
200
-
201
- &.s-table--progress {
202
- --_ta-td-ta: right;
203
- --_ta-td-brw: 0;
204
- }
205
-
206
- &.s-table--progress-bar {
207
- --_ta-td-blw: 0;
208
- --_ta-td-pl: 0;
209
- --_ta-td-w: 120px;
210
- }
211
-
212
- border: var(--su-static1) solid var(--_ta-td-bc);
213
- border-bottom-width: var(--_ta-td-bbw, var(--su-static1));
214
- border-left-width: var(--_ta-td-blw, var(--su-static1));
215
- border-right-width: var(--_ta-td-brw, var(--su-static1));
216
- border-top-width: var(--_ta-td-btw, var(--su-static1));
217
- font-size: var(--_ta-td-fs);
218
- font-weight: var(--_ta-td-fw);
219
- padding: var(--_ta-td-p);
220
- padding-left: var(--_ta-td-pl, var(--_ta-td-p));
221
- padding-top: var(--_ta-td-pt, var(--_ta-td-p));
222
- text-align: var(--_ta-td-ta);
223
- vertical-align: var(--_ta-td-va);
224
- width: var(--_ta-td-w);
225
-
226
- color: var(--fc-medium);
227
- }
228
-
229
- tfoot {
230
- td {
231
- border-bottom-color: var(--_ta-foot-td-bc, var(--_ta-td-bc));
232
- }
233
-
234
- th {
235
- border-bottom-color: var(--_ta-foot-th-bc, var(--_ta-td-bc));
236
- }
237
- }
238
-
239
- th {
240
- .s-checkbox {
241
- display: block;
242
- }
243
-
244
- &.s-table--bulk {
245
- --_ta-th-w: calc(var(--su32) - var(--su2)); // 30px;
246
- }
247
-
248
- border: var(--su-static1) solid var(--_ta-th-bc);
249
- border-width: var(--su-static1) var(--su-static1) var(--_ta-th-bbw);
250
- font-size: var(--_ta-th-fs);
251
- padding: var(--_ta-th-p);
252
- padding-top: var(--_ta-th-pt, var(--_ta-th-p));
253
- text-align: var(--_ta-th-ta);
254
- vertical-align: var(--_ta-th-va);
255
- width: var(--_ta-th-w);
256
-
257
- color: var(--fc-dark);
258
- font-weight: bold;
259
- }
260
-
261
- thead {
262
- th {
263
- background-color: var(--_ta-thead-th-bg);
264
-
265
- line-height: var(--lh-sm);
266
- vertical-align: bottom;
267
- white-space: nowrap;
268
- }
269
- }
270
-
271
- tr {
272
- &:last-of-type {
273
- --_ta-td-bbw: var(--su-static1);
274
- --_ta-th-bbw: var(--su-static1);
275
- }
276
-
277
- &.is-disabled {
278
- background-color: var(--black-025);
279
- --_ta-tbody-tr-even-bg: var(--black-025);
280
-
281
- th:not(.is-enabled),
282
- td:not(.is-enabled) {
283
- opacity: calc(var(--_o-disabled) * 0.6); // 0.5 * 0.6 = 0.3
284
- }
285
- }
286
- }
287
-
288
- border-collapse: collapse;
289
- border-spacing: 0;
290
- display: table;
291
- font-size: var(--fs-body1);
292
- max-width: 100%;
293
- width: 100%;
294
- }
295
-
296
- // [1] This makes the border transparent, so we need to use whitespace
297
- // to achieve the same effect a 2px gray border achieves.
1
+ .s-table {
2
+ @ta-cell-border: var(--su-static1) solid var(--bc-medium);
3
+ @ta-columns: (100% / 12);
4
+
5
+ --_ta-tbody-tbody-bc: var(--bc-medium);
6
+ --_ta-tbody-tbody-bw: var(--su-static2);
7
+ --_ta-tbody-tr-even-bg: unset;
8
+ --_ta-td-bbw: 0;
9
+ --_ta-td-bc: var(--bc-medium);
10
+ --_ta-td-fs: unset;
11
+ --_ta-td-fw: unset;
12
+ --_ta-td-p: var(--su8);
13
+ --_ta-td-ta: left;
14
+ --_ta-td-va: middle;
15
+ --_ta-td-w: unset;
16
+ --_ta-thead-th-bg: var(--black-025);
17
+ --_ta-th-bbw: 0;
18
+ --_ta-th-bc: var(--bc-medium);
19
+ --_ta-th-fs: unset;
20
+ --_ta-th-p: var(--su8);
21
+ --_ta-th-ta: left;
22
+ --_ta-th-va: middle;
23
+ --_ta-th-w: unset;
24
+
25
+ // VARIANTS
26
+ &&__stripes {
27
+ --_ta-tbody-tr-even-bg: var(--black-025);
28
+ --_ta-thead-th-bg: var(--black-050);
29
+ }
30
+
31
+ // MODIFIERS
32
+ &.ta-center {
33
+ --_ta-td-ta: center;
34
+ --_ta-th-ta: center;
35
+ }
36
+
37
+ &.ta-left {
38
+ --_ta-td-ta: left;
39
+ --_ta-th-ta: left;
40
+ }
41
+
42
+ &.ta-justify {
43
+ --_ta-td-ta: justify;
44
+ --_ta-th-ta: justify;
45
+ }
46
+
47
+ &.ta-right {
48
+ --_ta-td-ta: right;
49
+ --_ta-th-ta: right;
50
+ }
51
+
52
+ &.va-bottom {
53
+ --_ta-td-va: bottom;
54
+ --_ta-th-va: bottom;
55
+ }
56
+
57
+ &.va-middle {
58
+ --_ta-td-va: middle;
59
+ --_ta-th-va: middle;
60
+ }
61
+
62
+ &.va-top {
63
+ --_ta-td-va: top;
64
+ --_ta-th-va: top;
65
+ }
66
+
67
+ &&__b0 {
68
+ --_ta-td-bc: transparent;
69
+ --_ta-th-bc: transparent;
70
+ --_ta-tbody-tbody-bc: transparent; // [1]
71
+ --_ta-tbody-tbody-bw: var(--su-static12); // [1]
72
+ --_ta-thead-th-bg: transparent;
73
+
74
+ thead th {
75
+ font-size: inherit;
76
+ text-transform: initial;
77
+ letter-spacing: initial;
78
+ }
79
+ }
80
+
81
+ &&__bx {
82
+ tr {
83
+ > *:not(:first-child) {
84
+ border-left-color: transparent;
85
+ }
86
+ > *:not(:last-child) {
87
+ border-right-color: transparent;
88
+ }
89
+ }
90
+ }
91
+
92
+ &&__bx-simple {
93
+ --_ta-thead-th-bg: transparent;
94
+ --_ta-foot-td-bc: transparent;
95
+ --_ta-foot-th-bc: transparent;
96
+
97
+ td,
98
+ th {
99
+ border-left-color: transparent;
100
+ border-right-color: transparent;
101
+ }
102
+
103
+ tbody tr {
104
+ &:first-of-type th,
105
+ &:first-of-type td {
106
+ border-top-color: transparent;
107
+ }
108
+ &:last-of-type th,
109
+ &:last-of-type td {
110
+ border-bottom-color: transparent;
111
+ }
112
+ }
113
+
114
+ thead th {
115
+ border-top-color: transparent;
116
+ border-bottom-color: var(--bc-darker);
117
+ font-size: inherit;
118
+ text-transform: initial;
119
+ letter-spacing: initial;
120
+ }
121
+ }
122
+
123
+ &&__sortable {
124
+ thead th {
125
+ a,
126
+ button { // If an anchor is used, it should appear like a normal header
127
+ color: inherit;
128
+ }
129
+
130
+ button {
131
+ appearance: none;
132
+ background-color: transparent;
133
+ border: 0;
134
+ cursor: pointer;
135
+ display: flex;
136
+ gap: var(--su-static4);
137
+ font-weight: inherit;
138
+ margin: calc(var(--_ta-th-p) * -1);
139
+ padding: var(--_ta-th-p);
140
+ text-align: left;
141
+ width: calc(100% + calc(var(--_ta-th-p) * 2));
142
+ }
143
+
144
+ &.is-sorted { // Selected state
145
+ color: var(--black-900);
146
+ }
147
+
148
+ color: var(--fc-light);
149
+ cursor: pointer;
150
+ }
151
+ }
152
+
153
+ // Sizes
154
+ &&__sm {
155
+ --_ta-td-p: var(--su4);
156
+ --_ta-th-p: var(--su4);
157
+ }
158
+
159
+ &&__lg {
160
+ --_ta-td-p: var(--su12);
161
+ --_ta-th-p: var(--su12);
162
+ }
163
+
164
+ // CHILD ELEMENTS
165
+ & &--cell {
166
+ .generate-cell-widths-classes(@n, @i: 1) when (@i =< @n) {
167
+ &@{i} { // generates iterated cell classes
168
+ @ta-cell-w: @ta-columns * @i;
169
+ --_ta-td-w: @ta-cell-w;
170
+ --_ta-th-w: @ta-cell-w;
171
+ }
172
+ .generate-cell-widths-classes(@n, (@i + 1));
173
+ }
174
+
175
+ .generate-cell-widths-classes(12);
176
+ }
177
+
178
+ & &--totals {
179
+ --_ta-td-fs: var(--fs-subheading);
180
+ --_ta-td-pt: var(--su12);
181
+ --_ta-td-fw: bold;
182
+ --_ta-th-fs: var(--fs-subheading);
183
+ --_ta-th-pt: var(--su12);
184
+ }
185
+
186
+ tbody {
187
+ + tbody { // If two table bodies are next to each other, visually separate them
188
+ border-top: var(--_ta-tbody-tbody-bw) solid var(--_ta-tbody-tbody-bc);
189
+ }
190
+
191
+ th {
192
+ font-weight: normal;
193
+ }
194
+
195
+ tr {
196
+ &:nth-child(2n) {
197
+ background-color: var(--_ta-tbody-tr-even-bg);
198
+ }
199
+ }
200
+ }
201
+
202
+ td {
203
+ .s-checkbox {
204
+ display: block;
205
+ }
206
+
207
+ &.s-table--bulk {
208
+ --_ta-td-w: calc(var(--su32) - var(--su2)); // 30px;
209
+ }
210
+
211
+ &.s-table--progress {
212
+ --_ta-td-ta: right;
213
+ --_ta-td-brw: 0;
214
+ }
215
+
216
+ &.s-table--progress-bar {
217
+ --_ta-td-blw: 0;
218
+ --_ta-td-pl: 0;
219
+ --_ta-td-w: 120px;
220
+ }
221
+
222
+ border: var(--su-static1) solid var(--_ta-td-bc);
223
+ border-bottom-width: var(--_ta-td-bbw, var(--su-static1));
224
+ border-left-width: var(--_ta-td-blw, var(--su-static1));
225
+ border-right-width: var(--_ta-td-brw, var(--su-static1));
226
+ border-top-width: var(--_ta-td-btw, var(--su-static1));
227
+ font-size: var(--_ta-td-fs);
228
+ font-weight: var(--_ta-td-fw);
229
+ padding: var(--_ta-td-p);
230
+ padding-left: var(--_ta-td-pl, var(--_ta-td-p));
231
+ padding-top: var(--_ta-td-pt, var(--_ta-td-p));
232
+ text-align: var(--_ta-td-ta);
233
+ vertical-align: var(--_ta-td-va);
234
+ width: var(--_ta-td-w);
235
+
236
+ color: var(--fc-medium);
237
+ }
238
+
239
+ tfoot {
240
+ td {
241
+ border-bottom-color: var(--_ta-foot-td-bc, var(--_ta-td-bc));
242
+ }
243
+
244
+ th {
245
+ border-bottom-color: var(--_ta-foot-th-bc, var(--_ta-td-bc));
246
+ }
247
+ }
248
+
249
+ th {
250
+ .s-checkbox {
251
+ display: block;
252
+ }
253
+
254
+ &.s-table--bulk {
255
+ --_ta-th-w: calc(var(--su32) - var(--su2)); // 30px;
256
+ }
257
+
258
+ border: var(--su-static1) solid var(--_ta-th-bc);
259
+ border-width: var(--su-static1) var(--su-static1) var(--_ta-th-bbw);
260
+ font-size: var(--_ta-th-fs);
261
+ padding: var(--_ta-th-p);
262
+ padding-top: var(--_ta-th-pt, var(--_ta-th-p));
263
+ text-align: var(--_ta-th-ta);
264
+ vertical-align: var(--_ta-th-va);
265
+ width: var(--_ta-th-w);
266
+
267
+ color: var(--fc-dark);
268
+ font-weight: bold;
269
+ }
270
+
271
+ thead {
272
+ th {
273
+ background-color: var(--_ta-thead-th-bg);
274
+
275
+ line-height: var(--lh-sm);
276
+ vertical-align: bottom;
277
+ white-space: nowrap;
278
+ }
279
+ }
280
+
281
+ tr {
282
+ &:last-of-type {
283
+ --_ta-td-bbw: var(--su-static1);
284
+ --_ta-th-bbw: var(--su-static1);
285
+ }
286
+
287
+ &.is-disabled {
288
+ background-color: var(--black-025);
289
+ --_ta-tbody-tr-even-bg: var(--black-025);
290
+
291
+ th:not(.is-enabled),
292
+ td:not(.is-enabled) {
293
+ opacity: calc(var(--_o-disabled) * 0.6); // 0.5 * 0.6 = 0.3
294
+ }
295
+ }
296
+ }
297
+
298
+ border-collapse: collapse;
299
+ border-spacing: 0;
300
+ display: table;
301
+ font-size: var(--fs-body1);
302
+ max-width: 100%;
303
+ width: 100%;
304
+ }
305
+
306
+ // [1] This makes the border transparent, so we need to use whitespace
307
+ // to achieve the same effect a 2px gray border achieves.