maverick-wave 5.25.0 → 5.26.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 (66) hide show
  1. package/.claude/skills/mw-maverick-wave/references/layout.md +16 -10
  2. package/.claude/skills/mw-maverick-wave/references/theming.md +13 -9
  3. package/CHANGELOG.md +6 -0
  4. package/README.md +2 -2
  5. package/maverick-wave.min.css +5 -3
  6. package/package.json +2 -2
  7. package/src/partials/accordions-container.html +1 -1
  8. package/src/partials/alerts-container.html +1 -1
  9. package/src/partials/announcement-container.html +1 -1
  10. package/src/partials/avatars-container.html +1 -1
  11. package/src/partials/badges-container.html +1 -1
  12. package/src/partials/blog-posts-container.html +2 -2
  13. package/src/partials/breadcrumbs-container.html +1 -1
  14. package/src/partials/button-bar-container.html +1 -1
  15. package/src/partials/buttons-container.html +1 -1
  16. package/src/partials/calendar-container.html +1 -1
  17. package/src/partials/cards-container.html +1 -1
  18. package/src/partials/code-container.html +1 -1
  19. package/src/partials/colors-container.html +3 -3
  20. package/src/partials/coming-soon-container.html +1 -1
  21. package/src/partials/contact-container.html +1 -1
  22. package/src/partials/divider-container.html +1 -1
  23. package/src/partials/dropdown-container.html +1 -1
  24. package/src/partials/empty-state-container.html +1 -1
  25. package/src/partials/form-container.html +1 -1
  26. package/src/partials/form-elements-container.html +1 -1
  27. package/src/partials/form-field-container.html +1 -1
  28. package/src/partials/gallery-container.html +1 -1
  29. package/src/partials/grid-container.html +1 -1
  30. package/src/partials/header-utilities-container.html +2 -2
  31. package/src/partials/html-lists-container.html +1 -1
  32. package/src/partials/info-container.html +1 -1
  33. package/src/partials/input-group-container.html +1 -1
  34. package/src/partials/item-lists-container.html +1 -1
  35. package/src/partials/kanban-container.html +2 -2
  36. package/src/partials/kbd-container.html +1 -1
  37. package/src/partials/leader-row-container.html +2 -2
  38. package/src/partials/login-container.html +2 -2
  39. package/src/partials/lunch-menu-container.html +2 -2
  40. package/src/partials/media-container.html +1 -1
  41. package/src/partials/meta-info-container.html +1 -1
  42. package/src/partials/modals-container.html +1 -1
  43. package/src/partials/page-header-container.html +1 -1
  44. package/src/partials/pagination-container.html +2 -2
  45. package/src/partials/palette-container.html +2 -2
  46. package/src/partials/panels-container.html +2 -2
  47. package/src/partials/parallax-container.html +1 -1
  48. package/src/partials/pricing-container.html +2 -2
  49. package/src/partials/progress-container.html +1 -1
  50. package/src/partials/prose-container.html +1 -1
  51. package/src/partials/ratings-container.html +1 -1
  52. package/src/partials/section-head-container.html +6 -3
  53. package/src/partials/segmented-container.html +1 -1
  54. package/src/partials/skeleton-container.html +1 -1
  55. package/src/partials/spinners-container.html +1 -1
  56. package/src/partials/stepper-container.html +1 -1
  57. package/src/partials/tables-container.html +1 -1
  58. package/src/partials/tabs-container.html +1 -1
  59. package/src/partials/tags-container.html +1 -1
  60. package/src/partials/testimonials-container.html +1 -1
  61. package/src/partials/tiles-container.html +1 -1
  62. package/src/partials/typography-container.html +1 -1
  63. package/src/partials/utilities-container.html +1 -1
  64. package/src/scss/base/_base.scss +21 -5
  65. package/src/scss/layout/_section.scss +32 -9
  66. package/src/scss/utilities/_touch-targets.scss +4 -0
@@ -152,17 +152,33 @@
152
152
  calc(100% - 2 * var(--mw-container-gutter))
153
153
  );
154
154
  --mw-section-padding-block: #{spacing('10')};
155
- // The third regime beside the stepped default and the two flat presets:
155
+ // The two presets, as tokens rather than the values themselves: a preset is
156
+ // picked by pointing `--mw-section-padding-block` at one, and that lands
157
+ // inline on the element, where a media query cannot reach it. Named here,
158
+ // the phone steps below apply to a preset as much as to the default - a
159
+ // compact page stays the tightest of the three at every width.
160
+ --mw-section-padding-compact: #{spacing('8')};
161
+ --mw-section-padding-airy: #{spacing('12')};
162
+ // The third regime beside the stepped default and the two stepped presets:
156
163
  // spacing that grows with the screen. It starts at the value a phone already
157
164
  // gets below `sm` and reaches the airy preset at `xl`, so a desktop pushes
158
165
  // less content past per wheel notch while the phone carries none of that air.
159
- // Point `--mw-section-padding-block` at it to switch a page over - a choice
160
- // like the presets are, not the default.
166
+ // Needs no steps of its own - the ramp is the steps.
161
167
  --mw-section-padding-fluid: #{fluid(spacing('7'), spacing('12'), $to: 'xl')};
162
168
  // The section head: the gap it leaves to the content below, the space
163
169
  // between its rule and the title, and the mark sitting on that rule.
164
- --mw-section-head-gap: #{spacing('10')};
165
- --mw-section-head-pad: #{spacing('6')};
170
+ //
171
+ // One step, and every measure in a head is a multiple of it. It follows the
172
+ // section rhythm, so the spacing switch moves the heads with it and the
173
+ // fluid preset needs no ramp of its own - at a fraction of the swing,
174
+ // because a head is a boundary inside the page and would otherwise grow
175
+ // past the section it opens. The multipliers land on today's values at the
176
+ // default rhythm.
177
+ --mw-section-head-step: calc(
178
+ #{spacing('4')} + var(--mw-section-padding-block) * 0.18
179
+ );
180
+ --mw-section-head-gap: calc(var(--mw-section-head-step) * 1.86);
181
+ --mw-section-head-pad: var(--mw-section-head-step);
166
182
  --mw-section-head-mark-width: 80px;
167
183
  --mw-section-head-mark-color: var(--mw-primary-color);
168
184
  --mw-scroll-hint-offset: #{spacing('9')};
@@ -17,6 +17,12 @@
17
17
  // every background the framework paints.
18
18
  border-top: 2px solid var(--mw-border);
19
19
 
20
+ // A head without a lead is a rule and one line of type, and the gap sized
21
+ // to follow a paragraph reads as a hole under it
22
+ &:not(:has(.mw-section-head-intro)) {
23
+ --mw-section-head-gap: calc(var(--mw-section-head-step) * 1.3);
24
+ }
25
+
20
26
  // The rule stays quiet so it reads as a boundary and not as a border, and
21
27
  // quiet is still hard to see on a patterned band. Hence the mark:
22
28
  // a short, thicker piece of the accent colour sitting on the line at the
@@ -49,7 +55,7 @@
49
55
  // is left - four fifths of a phone is a column nothing fits in.
50
56
  .mw-section-head-intro {
51
57
  max-width: 75ch;
52
- margin: spacing('4') spacing('0') spacing('0');
58
+ margin: calc(var(--mw-section-head-step) * 0.56) spacing('0') spacing('0');
53
59
  font-size: font-size('md');
54
60
  line-height: 1.6;
55
61
  color: var(--mw-text-muted-color);
@@ -113,9 +119,11 @@
113
119
  // levels read as a hierarchy rather than as two of the same thing.
114
120
  .mw-section-subtitle {
115
121
  font-size: fluid('xl', '2xl', $to: 'sm');
116
- // The section boundary is 56px on a phone, so the component boundary sits
117
- // with it or the two stop being distinguishable
118
- margin: spacing('6') spacing('0') spacing('4') spacing('0');
122
+ // The section boundary steps down on a phone, so the component boundary
123
+ // sits with it or the two stop being distinguishable
124
+ margin-block: var(--mw-section-head-step)
125
+ calc(var(--mw-section-head-step) * 0.56);
126
+ margin-inline: spacing('0');
119
127
  position: relative;
120
128
 
121
129
  &::after {
@@ -130,6 +138,21 @@
130
138
  }
131
139
  }
132
140
 
141
+ // The lead under a subtitle is a plain paragraph, so nothing but this gives it
142
+ // the gap to the content - every page would otherwise spell it out per instance.
143
+ // Two selectors because a lead sometimes runs to a second paragraph, and the
144
+ // gap has to sit under the last one.
145
+ .mw-section-subtitle + p,
146
+ .mw-section-subtitle + p + p {
147
+ margin-bottom: var(--mw-section-head-step);
148
+ }
149
+
150
+ // Nothing between the heading and the content: the heading carries the gap the
151
+ // lead would have carried
152
+ .mw-section-subtitle:not(:has(+ p)) {
153
+ margin-bottom: var(--mw-section-head-step);
154
+ }
155
+
133
156
  // Sticky, because the strip is the only way back: inside a long section the
134
157
  // nav at the entrance can be twenty thousand pixels behind the reader
135
158
  .mw-section-nav {
@@ -200,12 +223,12 @@
200
223
  }
201
224
 
202
225
  @include media-up('sm') {
203
- // One step above the demo gap of spacing('6'), and that step is the whole
204
- // margin the boundary between two components has over the one between two
205
- // demos - the heading leans toward what it names, not toward what came
206
- // before it.
226
+ // Half a step more than the gap it leaves below itself, and that difference
227
+ // is the whole margin the boundary between two components has over the one
228
+ // between two demos - the heading leans toward what it names, not toward
229
+ // what came before it.
207
230
  .mw-section-subtitle {
208
- margin-top: spacing('8');
231
+ margin-top: calc(var(--mw-section-head-step) * 1.49);
209
232
  }
210
233
  }
211
234
 
@@ -139,12 +139,16 @@
139
139
  @include media-down('md') {
140
140
  :root {
141
141
  --mw-section-padding-block: #{spacing('9')};
142
+ --mw-section-padding-compact: #{spacing('7')};
143
+ --mw-section-padding-airy: #{spacing('10')};
142
144
  }
143
145
  }
144
146
 
145
147
  @include media-down('sm') {
146
148
  :root {
147
149
  --mw-section-padding-block: #{spacing('7')};
150
+ --mw-section-padding-compact: #{spacing('6')};
151
+ --mw-section-padding-airy: #{spacing('9')};
148
152
  }
149
153
  }
150
154