maverick-wave 4.28.0 → 5.0.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 (138) hide show
  1. package/.claude/settings.local.json +29 -1
  2. package/.claude/skills/mw-maverick-wave/SKILL.md +39 -24
  3. package/.claude/skills/mw-maverick-wave/examples/angular-services.md +16 -4
  4. package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +13 -4
  5. package/.claude/skills/mw-maverick-wave/references/components.md +42 -5
  6. package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
  7. package/.claude/skills/mw-maverick-wave/references/javascript.md +17 -4
  8. package/.claude/skills/mw-maverick-wave/references/layout.md +53 -19
  9. package/.claude/skills/mw-maverick-wave/references/theming.md +38 -1
  10. package/.impeccable/config.local.json +5 -0
  11. package/.impeccable/hook.cache.json +1 -0
  12. package/CHANGELOG.md +11 -0
  13. package/CLAUDE.md +5 -5
  14. package/README.md +48 -4
  15. package/index.html +19 -38
  16. package/maverick-wave.min.css +14 -12
  17. package/maverick-wave.min.js +1 -1
  18. package/package.json +2 -2
  19. package/scripts/verify.js +27 -2
  20. package/src/js/main.js +223 -83
  21. package/src/partials/accordions-container.html +6 -10
  22. package/src/partials/alerts-container.html +6 -6
  23. package/src/partials/announcement-container.html +5 -5
  24. package/src/partials/avatars-container.html +85 -17
  25. package/src/partials/badges-container.html +6 -6
  26. package/src/partials/blog-posts-container.html +11 -12
  27. package/src/partials/buttons-container.html +3 -3
  28. package/src/partials/cards-container.html +26 -9
  29. package/src/partials/code-container.html +5 -5
  30. package/src/partials/content-slider-container.html +5 -4
  31. package/src/partials/divider-container.html +7 -7
  32. package/src/partials/dropdown-container.html +2 -2
  33. package/src/partials/empty-state-container.html +5 -5
  34. package/src/partials/footer-container.html +21 -18
  35. package/src/partials/form-elements-container.html +14 -14
  36. package/src/partials/gallery-container.html +16 -8
  37. package/src/partials/get-started-container.html +4 -8
  38. package/src/partials/header-container.html +18 -7
  39. package/src/partials/home-container.html +10 -20
  40. package/src/partials/input-group-container.html +11 -2
  41. package/src/partials/kbd-container.html +1 -1
  42. package/src/partials/login-container.html +5 -1
  43. package/src/partials/media-container.html +2 -2
  44. package/src/partials/modals-container.html +22 -32
  45. package/src/partials/pricing-container.html +9 -9
  46. package/src/partials/skeleton-container.html +6 -6
  47. package/src/partials/stepper-container.html +2 -2
  48. package/src/partials/tables-container.html +12 -12
  49. package/src/partials/tabs-container.html +17 -27
  50. package/src/partials/tags-container.html +23 -17
  51. package/src/partials/techstack-bucket-container.html +13 -0
  52. package/src/partials/tiles-container.html +26 -9
  53. package/src/partials/typography-container.html +7 -6
  54. package/src/partials/utilities-container.html +35 -15
  55. package/src/scss/_layers.scss +10 -0
  56. package/src/scss/abstracts/_index.scss +6 -0
  57. package/src/scss/abstracts/_mixins.scss +61 -153
  58. package/src/scss/abstracts/_variables.scss +123 -319
  59. package/src/scss/base/_base.scss +170 -190
  60. package/src/scss/base/_reset.scss +106 -104
  61. package/src/scss/base/_typography.scss +153 -151
  62. package/src/scss/components/_accordions.scss +97 -97
  63. package/src/scss/components/_alerts.scss +71 -70
  64. package/src/scss/components/_announcement.scss +71 -70
  65. package/src/scss/components/_avatars.scss +130 -142
  66. package/src/scss/components/_badge.scss +131 -132
  67. package/src/scss/components/_blog-post.scss +223 -220
  68. package/src/scss/components/_breadcrumbs.scss +93 -92
  69. package/src/scss/components/_button-bar.scss +102 -110
  70. package/src/scss/components/_buttons.scss +319 -324
  71. package/src/scss/components/_calendar.scss +251 -252
  72. package/src/scss/components/_cards.scss +359 -386
  73. package/src/scss/components/_code.scss +190 -194
  74. package/src/scss/components/_coming-soon.scss +77 -75
  75. package/src/scss/components/_content-slider.scss +90 -89
  76. package/src/scss/components/_divider.scss +55 -53
  77. package/src/scss/components/_dropdown.scss +179 -185
  78. package/src/scss/components/_empty-state.scss +57 -57
  79. package/src/scss/components/_flag.scss +294 -278
  80. package/src/scss/components/_gallery.scss +131 -133
  81. package/src/scss/components/_info.scss +151 -167
  82. package/src/scss/components/_kanban.scss +332 -341
  83. package/src/scss/components/_kbd.scss +40 -38
  84. package/src/scss/components/_lang-switch.scss +89 -97
  85. package/src/scss/components/_links.scss +21 -28
  86. package/src/scss/components/_lists.scss +510 -514
  87. package/src/scss/components/_localhost-indicator.scss +26 -24
  88. package/src/scss/components/_media.scss +22 -20
  89. package/src/scss/components/_meta-info.scss +35 -33
  90. package/src/scss/components/_modals.scss +277 -186
  91. package/src/scss/components/_pagination.scss +81 -87
  92. package/src/scss/components/_panels.scss +99 -97
  93. package/src/scss/components/_pricing.scss +183 -241
  94. package/src/scss/components/_progress.scss +112 -89
  95. package/src/scss/components/_prose.scss +35 -33
  96. package/src/scss/components/_ratings.scss +40 -38
  97. package/src/scss/components/_segmented.scss +82 -84
  98. package/src/scss/components/_skeleton.scss +66 -72
  99. package/src/scss/components/_spinners.scss +155 -159
  100. package/src/scss/components/_stepper.scss +116 -116
  101. package/src/scss/components/_tables.scss +155 -148
  102. package/src/scss/components/_tabs.scss +232 -141
  103. package/src/scss/components/_tags.scss +109 -107
  104. package/src/scss/components/_techstack-bucket.scss +123 -122
  105. package/src/scss/components/_testimonial.scss +72 -70
  106. package/src/scss/components/_theme-toggle.scss +53 -51
  107. package/src/scss/components/_tiles.scss +174 -174
  108. package/src/scss/components/_timelines.scss +282 -280
  109. package/src/scss/components/_toasts.scss +66 -72
  110. package/src/scss/form-elements/_checkbox.scss +117 -132
  111. package/src/scss/form-elements/_form.scss +149 -115
  112. package/src/scss/form-elements/_input-group.scss +99 -103
  113. package/src/scss/form-elements/_input.scss +74 -74
  114. package/src/scss/form-elements/_login.scss +48 -48
  115. package/src/scss/form-elements/_prefilled.scss +53 -51
  116. package/src/scss/form-elements/_radio.scss +95 -107
  117. package/src/scss/form-elements/_select.scss +42 -42
  118. package/src/scss/form-elements/_slider.scss +117 -132
  119. package/src/scss/form-elements/_textarea.scss +68 -54
  120. package/src/scss/form-elements/_toggle.scss +127 -140
  121. package/src/scss/layout/_footer.scss +172 -171
  122. package/src/scss/layout/_grid.scss +268 -302
  123. package/src/scss/layout/_header.scss +426 -427
  124. package/src/scss/layout/_home.scss +28 -27
  125. package/src/scss/layout/_main.scss +275 -238
  126. package/src/scss/layout/_page-header.scss +38 -36
  127. package/src/scss/layout/_section.scss +150 -124
  128. package/src/scss/main.scss +1 -1
  129. package/src/scss/utilities/_accessibility.scss +46 -45
  130. package/src/scss/utilities/_aspect.scss +22 -20
  131. package/src/scss/utilities/_corner.scss +23 -5
  132. package/src/scss/utilities/_display.scss +76 -70
  133. package/src/scss/utilities/_elevation.scss +13 -11
  134. package/src/scss/utilities/_flex.scss +83 -85
  135. package/src/scss/utilities/_reveal.scss +40 -63
  136. package/src/scss/utilities/_spacing.scss +63 -64
  137. package/src/scss/utilities/_text.scss +139 -141
  138. package/src/scss/utilities/_touch-targets.scss +130 -147
@@ -1,147 +1,147 @@
1
1
  @use 'sass:math';
2
2
  @use '../abstracts' as *;
3
3
 
4
- // Horizontal
5
- .mw-stepper {
6
- display: flex;
7
- align-items: flex-start;
8
- width: 100%;
9
-
10
- &-step {
4
+ @layer mw.components {
5
+ .mw-stepper {
11
6
  display: flex;
12
- flex-direction: column;
13
- align-items: center;
14
- gap: spacing('2');
15
- flex: 1;
16
- min-width: 0;
17
- }
18
-
19
- // Horizontal connector line between steps
20
- &-connector {
21
- flex: 1;
22
- height: 2px;
23
- background: var(--mw-border);
24
- margin-top: spacing('4');
25
- transition: background var(--mw-duration-base) var(--mw-ease-out);
26
-
27
- &.mw-done {
28
- background: var(--mw-primary-color);
7
+ align-items: flex-start;
8
+ width: 100%;
9
+
10
+ &-step {
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ gap: spacing('2');
15
+ flex: 1;
16
+ min-width: 0;
29
17
  }
30
- }
31
18
 
32
- // Step circle with number or icon
33
- &-indicator {
34
- width: 28px;
35
- height: 28px;
36
- border-radius: radius('full');
37
- border: 2px solid var(--mw-border);
38
- background: var(--mw-card-background);
39
- color: var(--mw-text-muted-color);
40
- display: flex;
41
- align-items: center;
42
- justify-content: center;
43
- font-size: font-size('sm');
44
- font-weight: font-weight('bold');
45
- transition: var(--mw-transition);
46
- flex-shrink: 0;
47
- user-select: none;
48
-
49
- &.mw-active {
50
- border-color: var(--mw-primary-color);
51
- background: var(--mw-primary-color);
52
- color: var(--mw-primary-accent-text-color);
53
- }
19
+ &-connector {
20
+ flex: 1;
21
+ height: 2px;
22
+ background: var(--mw-border);
23
+ margin-top: spacing('4');
24
+ transition: background var(--mw-duration-base) var(--mw-ease-out);
54
25
 
55
- &.mw-done {
56
- border-color: var(--mw-success-color);
57
- background: var(--mw-success-color);
58
- color: var(--mw-success-accent-text-color);
26
+ &.mw-done {
27
+ background: var(--mw-primary-color);
28
+ }
59
29
  }
60
- }
61
30
 
62
- // Step label below the circle
63
- &-label {
64
- font-size: font-size('xs');
65
- color: var(--mw-text-muted-color);
66
- text-align: center;
67
- line-height: 1.2;
68
- transition: color var(--mw-duration-base) var(--mw-ease-out);
69
-
70
- &.mw-active {
71
- color: var(--mw-primary-text-color);
72
- font-weight: font-weight('medium');
73
- }
31
+ &-indicator {
32
+ width: 28px;
33
+ height: 28px;
34
+ border-radius: radius('full');
35
+ border: 2px solid var(--mw-border);
36
+ background: var(--mw-card-background);
37
+ color: var(--mw-text-muted-color);
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ font-size: font-size('sm');
42
+ font-weight: font-weight('bold');
43
+ transition: var(--mw-transition);
44
+ flex-shrink: 0;
45
+ user-select: none;
46
+
47
+ // The halo is what says "you are here". Without it the current step is a
48
+ // filled circle and so is every finished one, which leaves the hue as the
49
+ // only thing telling them apart - and a stepper is read at a glance, by
50
+ // people who do not all see blue against green.
51
+ &.mw-active {
52
+ border-color: var(--mw-primary-color);
53
+ background: var(--mw-primary-color);
54
+ color: var(--mw-primary-accent-text-color);
55
+ @include focus-halo;
56
+ }
74
57
 
75
- &.mw-done {
76
- color: var(--mw-success-text-color);
58
+ &.mw-done {
59
+ border-color: var(--mw-success-color);
60
+ background: var(--mw-success-color);
61
+ color: var(--mw-success-accent-text-color);
62
+ }
77
63
  }
78
- }
79
64
 
80
- @include media-down('sm') {
81
65
  &-label {
82
66
  font-size: font-size('2xs');
67
+ color: var(--mw-text-muted-color);
68
+ text-align: center;
69
+ line-height: 1.2;
70
+ transition: color var(--mw-duration-base) var(--mw-ease-out);
71
+
72
+ &.mw-active {
73
+ color: var(--mw-primary-text-color);
74
+ font-weight: font-weight('medium');
75
+ }
76
+
77
+ &.mw-done {
78
+ color: var(--mw-success-text-color);
79
+ }
83
80
  }
84
- }
85
- }
86
81
 
87
- // Vertical
88
- .mw-stepper-vertical {
89
- display: flex;
90
- flex-direction: column;
82
+ @include media-up('sm') {
83
+ &-label {
84
+ font-size: font-size('xs');
85
+ }
86
+ }
87
+ }
91
88
 
92
- .mw-stepper-step {
89
+ .mw-stepper-vertical {
93
90
  display: flex;
94
- flex-direction: row;
95
- align-items: flex-start;
96
- gap: spacing('3');
97
- position: relative;
98
- padding-bottom: spacing('5');
91
+ flex-direction: column;
99
92
 
100
- &:last-child {
101
- padding-bottom: spacing('0');
102
- }
93
+ .mw-stepper-step {
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-items: flex-start;
97
+ gap: spacing('3');
98
+ position: relative;
99
+ padding-bottom: spacing('5');
103
100
 
104
- // Connecting line drawn below each step (except last)
105
- &:not(:last-child)::after {
106
- content: '';
107
- position: absolute;
108
- left: calc(#{spacing('7')} / 2 - 1px);
109
- top: spacing('7');
110
- bottom: 0;
111
- width: 2px;
112
- background: var(--mw-border);
113
- transition: background var(--mw-duration-base) var(--mw-ease-out);
114
- }
101
+ &:last-child {
102
+ padding-bottom: spacing('0');
103
+ }
104
+
105
+ &:not(:last-child)::after {
106
+ content: '';
107
+ position: absolute;
108
+ left: calc(#{spacing('7')} / 2 - 1px);
109
+ top: spacing('7');
110
+ bottom: 0;
111
+ width: 2px;
112
+ background: var(--mw-border);
113
+ transition: background var(--mw-duration-base) var(--mw-ease-out);
114
+ }
115
115
 
116
- &.mw-done:not(:last-child)::after {
117
- background: var(--mw-primary-text-color);
116
+ &.mw-done:not(:last-child)::after {
117
+ background: var(--mw-primary-text-color);
118
+ }
118
119
  }
119
- }
120
120
 
121
- .mw-stepper-indicator {
122
- flex-shrink: 0;
123
- }
121
+ .mw-stepper-indicator {
122
+ flex-shrink: 0;
123
+ }
124
124
 
125
- // Content area next to the indicator
126
- .mw-stepper-content {
127
- flex: 1;
128
- margin-left: spacing('1');
125
+ .mw-stepper-content {
126
+ flex: 1;
127
+ margin-left: spacing('1');
129
128
 
130
- &-title {
131
- font-size: font-size('base');
132
- font-weight: font-weight('medium');
133
- color: var(--mw-text-color);
134
- margin-bottom: spacing('1');
129
+ &-title {
130
+ font-size: font-size('base');
131
+ font-weight: font-weight('medium');
132
+ color: var(--mw-text-color);
133
+ margin-bottom: spacing('1');
135
134
 
136
- .mw-stepper-step.mw-active & {
137
- color: var(--mw-primary-text-color);
135
+ .mw-stepper-step.mw-active & {
136
+ color: var(--mw-primary-text-color);
137
+ }
138
138
  }
139
- }
140
139
 
141
- &-desc {
142
- font-size: font-size('sm');
143
- color: var(--mw-text-muted-color);
144
- line-height: 1.5;
140
+ &-desc {
141
+ font-size: font-size('sm');
142
+ color: var(--mw-text-muted-color);
143
+ line-height: 1.5;
144
+ }
145
145
  }
146
146
  }
147
147
  }
@@ -1,186 +1,193 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- // Base table styles
4
- .mw-table {
5
- width: 100%;
6
- margin: spacing('1') spacing('0');
7
- border-collapse: collapse;
8
- background: var(--mw-card-background);
9
-
10
- th,
11
- td {
12
- padding: spacing('3') spacing('4');
13
- text-align: left;
14
- border: 1px solid var(--mw-border);
15
- color: var(--mw-text-muted-color);
16
- }
17
-
18
- th {
19
- font-weight: font-weight('medium');
20
- color: var(--mw-primary-accent-text-color);
21
- background: var(--mw-primary-color);
22
- user-select: none;
23
- }
24
-
25
- // Zebra striping
26
- tr:nth-child(even) {
27
- background: var(--mw-gray-background);
28
- }
29
-
30
- tr:hover {
31
- td {
32
- background: var(--mw-primary-background-hover);
33
- color: var(--mw-text-color);
34
- }
35
- }
3
+ @layer mw.components {
4
+ // Base table styles
5
+ .mw-table {
6
+ width: 100%;
7
+ margin: spacing('1') spacing('0');
8
+ border-collapse: collapse;
9
+ background: var(--mw-card-background);
36
10
 
37
- @include media-down('sm') {
38
11
  th,
39
12
  td {
40
- padding: spacing('2') spacing('3');
41
- font-size: font-size('xs');
13
+ padding: spacing('3') spacing('4');
14
+ text-align: left;
15
+ border: 1px solid var(--mw-border);
16
+ color: var(--mw-text-muted-color);
42
17
  }
43
- }
44
- }
45
-
46
- // Responsive table container
47
- .mw-table-responsive {
48
- display: block;
49
- width: 100%;
50
- overflow-x: auto;
51
- -webkit-overflow-scrolling: touch;
52
- margin: spacing('1');
53
18
 
54
- .mw-table {
55
- margin-bottom: spacing('0');
56
- }
57
- }
58
-
59
- // Scroll hint for a table that is known to be wider than its frame.
60
- //
61
- // Opt-in, unlike the one on the tab bar, and by a different mechanism. A table
62
- // paints its own opaque surface, so the gradient trick used on `.mw-tabs-nav`
63
- // would sit behind the rows and never show. A mask sits in front of the
64
- // content and works - but masks have no `local` attachment, so it cannot
65
- // disappear once the last column is reached. Hence the extra class: only put
66
- // it on a table that really does overflow.
67
- .mw-table-responsive-hint {
68
- mask-image: linear-gradient(
69
- to right,
70
- #000 calc(100% - 2.5rem),
71
- transparent 100%
72
- );
73
- }
74
-
75
- // Card view for mobile - clean and simple approach
76
- .mw-table-cards {
77
- @include media-down('md') {
78
- // Hide table header on mobile
79
- thead {
80
- display: none;
19
+ th {
20
+ font-weight: font-weight('medium');
21
+ color: var(--mw-primary-accent-text-color);
22
+ background: var(--mw-primary-color);
23
+ user-select: none;
81
24
  }
82
25
 
83
- // Make each row a card
84
- tr {
85
- display: block;
86
- margin-bottom: spacing('3');
87
- box-shadow: var(--mw-elevation-2);
88
- background: var(--mw-card-background);
89
- cursor: text;
26
+ // Zebra striping
27
+ tr:nth-child(even) {
28
+ background: var(--mw-gray-background);
90
29
  }
91
30
 
92
- // Style each cell as a row in the card
93
- td {
94
- display: flex;
95
- justify-content: space-between;
96
- align-items: center;
97
- padding: spacing('1') spacing('4');
98
-
99
- // Add the column header as a label
100
- &::before {
101
- content: attr(data-label);
102
- font-weight: font-weight('medium');
31
+ // The tinted surface at rest, not the hovered one. A row starts out
32
+ // transparent, so it takes the whole step in one go - and at the hover tone
33
+ // it lands close enough to the solid header above it to read as selected
34
+ // rather than as pointed at. A badge or a tag is already sitting on the
35
+ // resting tint, which is why the louder one is right there and not here.
36
+ tr:hover {
37
+ td {
38
+ background: var(--mw-primary-background);
103
39
  color: var(--mw-text-color);
104
- flex: 1;
105
- text-align: left;
106
40
  }
41
+ }
107
42
 
108
- // The cell value
109
- span,
110
- a,
111
- div {
112
- flex: 2;
113
- text-align: right;
43
+ @include media-down('sm') {
44
+ th,
45
+ td {
46
+ padding: spacing('2') spacing('3');
47
+ font-size: font-size('xs');
114
48
  }
115
49
  }
50
+ }
51
+
52
+ // Responsive table container
53
+ .mw-table-responsive {
54
+ display: block;
55
+ width: 100%;
56
+ overflow-x: auto;
57
+ -webkit-overflow-scrolling: touch;
58
+ margin: spacing('1');
116
59
 
117
- // Add some visual separation between cards
118
- tr:not(:last-child) {
119
- margin-bottom: spacing('4');
60
+ .mw-table {
61
+ margin-bottom: spacing('0');
120
62
  }
121
63
  }
122
- }
123
64
 
124
- // Compact table
125
- .mw-table-compact {
126
- th,
127
- td {
128
- padding: spacing('1') spacing('2');
129
- font-size: font-size('sm');
65
+ // Scroll hint for a table that is known to be wider than its frame.
66
+ //
67
+ // Opt-in, unlike the one on the tab bar, and by a different mechanism. A table
68
+ // paints its own opaque surface, so the gradient trick used on `.mw-tabs-nav`
69
+ // would sit behind the rows and never show. A mask sits in front of the
70
+ // content and works - but masks have no `local` attachment, so it cannot
71
+ // disappear once the last column is reached. Hence the extra class: only put
72
+ // it on a table that really does overflow.
73
+ .mw-table-responsive-hint {
74
+ mask-image: linear-gradient(
75
+ to right,
76
+ #000 calc(100% - 2.5rem),
77
+ transparent 100%
78
+ );
79
+ }
80
+
81
+ // Card view for mobile - clean and simple approach
82
+ .mw-table-cards {
83
+ @include media-down('md') {
84
+ // Hide table header on mobile
85
+ thead {
86
+ display: none;
87
+ }
88
+
89
+ // Make each row a card
90
+ tr {
91
+ display: block;
92
+ margin-bottom: spacing('3');
93
+ box-shadow: var(--mw-elevation-2);
94
+ background: var(--mw-card-background);
95
+ cursor: text;
96
+ }
97
+
98
+ // Style each cell as a row in the card
99
+ td {
100
+ display: flex;
101
+ justify-content: space-between;
102
+ align-items: center;
103
+ padding: spacing('1') spacing('4');
104
+
105
+ // Add the column header as a label
106
+ &::before {
107
+ content: attr(data-label);
108
+ font-weight: font-weight('medium');
109
+ color: var(--mw-text-color);
110
+ flex: 1;
111
+ text-align: left;
112
+ }
113
+
114
+ // The cell value
115
+ span,
116
+ a,
117
+ div {
118
+ flex: 2;
119
+ text-align: right;
120
+ }
121
+ }
122
+
123
+ // Add some visual separation between cards
124
+ tr:not(:last-child) {
125
+ margin-bottom: spacing('4');
126
+ }
127
+ }
130
128
  }
131
129
 
132
- @include media-down('sm') {
130
+ // Compact table
131
+ .mw-table-compact {
133
132
  th,
134
133
  td {
134
+ padding: spacing('1') spacing('2');
135
135
  font-size: font-size('2xs');
136
136
  }
137
- }
138
- }
139
137
 
140
- // Hoverable rows
141
- .mw-table-hover {
142
- tbody tr:hover {
143
- background: var(--mw-primary-background-hover);
138
+ @include media-up('sm') {
139
+ th,
140
+ td {
141
+ font-size: font-size('sm');
142
+ }
143
+ }
144
144
  }
145
- }
146
145
 
147
- // Quiet header for data-heavy views
148
- .mw-table-subtle {
149
- th {
150
- background: color-mix(
151
- in srgb,
152
- var(--mw-gray-color) 20%,
153
- var(--mw-card-background)
154
- );
155
- color: var(--mw-text-color);
156
- border-bottom: 2px solid var(--mw-border-accent);
146
+ // Hoverable rows
147
+ .mw-table-hover {
148
+ tbody tr:hover {
149
+ background: var(--mw-primary-background);
150
+ }
157
151
  }
158
- }
159
152
 
160
- // Header stays visible while the body scrolls
161
- .mw-table-sticky-head {
162
- th {
163
- position: sticky;
164
- top: spacing('0');
165
- z-index: z-index('lift');
166
- box-shadow:
167
- inset 0 1px 0 var(--mw-border),
168
- inset 0 -1px 0 var(--mw-border);
153
+ // Quiet header for data-heavy views
154
+ .mw-table-subtle {
155
+ th {
156
+ background: color-mix(
157
+ in srgb,
158
+ var(--mw-gray-color) 20%,
159
+ var(--mw-card-background)
160
+ );
161
+ color: var(--mw-text-color);
162
+ border-bottom: 2px solid var(--mw-border-accent);
163
+ }
169
164
  }
170
- }
171
-
172
- .mw-table-responsive-scroll {
173
- @extend .mw-table-responsive;
174
- --mw-table-scroll-height: 400px;
175
- max-height: var(--mw-table-scroll-height);
176
- overflow-y: auto;
177
165
 
178
- .mw-table {
179
- margin-top: spacing('0');
166
+ // Header stays visible while the body scrolls
167
+ .mw-table-sticky-head {
168
+ th {
169
+ position: sticky;
170
+ top: spacing('0');
171
+ z-index: z-index('lift');
172
+ box-shadow:
173
+ inset 0 1px 0 var(--mw-border),
174
+ inset 0 -1px 0 var(--mw-border);
175
+ }
180
176
  }
181
177
 
182
- // Rows get shorter on small screens
183
- @include media-down('sm') {
178
+ .mw-table-responsive-scroll {
179
+ @extend .mw-table-responsive;
184
180
  --mw-table-scroll-height: 260px;
181
+ max-height: var(--mw-table-scroll-height);
182
+ overflow-y: auto;
183
+
184
+ .mw-table {
185
+ margin-top: spacing('0');
186
+ }
187
+
188
+ // Rows get shorter on small screens
189
+ @include media-up('sm') {
190
+ --mw-table-scroll-height: 400px;
191
+ }
185
192
  }
186
193
  }