maverick-wave 4.21.0 → 4.23.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 (53) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +9 -7
  2. package/.claude/skills/maverick-wave/references/components.md +85 -0
  3. package/.claude/skills/maverick-wave/references/layout.md +30 -7
  4. package/.claude/skills/maverick-wave/references/theming.md +1 -1
  5. package/.github/workflows/ci.yml +1 -1
  6. package/.prettierignore +2 -0
  7. package/CHANGELOG.md +17 -0
  8. package/CLAUDE.md +7 -4
  9. package/gulpfile.js +4 -4
  10. package/index.html +40 -0
  11. package/maverick-wave.min.css +3 -3
  12. package/package.json +3 -3
  13. package/release.sh +1 -1
  14. package/scripts/verify.js +15 -0
  15. package/src/assets/images/gallery-city.svg +49 -0
  16. package/src/assets/images/gallery-desert.svg +25 -0
  17. package/src/assets/images/gallery-forest.svg +46 -0
  18. package/src/assets/images/gallery-lake.svg +26 -0
  19. package/src/assets/images/gallery-mountain.svg +19 -0
  20. package/src/assets/images/gallery-ocean.svg +26 -0
  21. package/src/assets/images/gallery-oldtown.svg +41 -0
  22. package/src/assets/images/gallery-snow.svg +39 -0
  23. package/src/assets/images/slider-field.svg +124 -0
  24. package/src/assets/images/slider-forest.svg +33 -0
  25. package/src/assets/images/slider-lake.svg +35 -0
  26. package/src/assets/images/slider-mountains.svg +29 -0
  27. package/src/assets/images/slider-trees.svg +41 -0
  28. package/src/assets/images/tile-analytics.svg +22 -0
  29. package/src/assets/images/tile-cloud.svg +19 -0
  30. package/src/assets/images/tile-ecommerce.svg +14 -0
  31. package/src/assets/images/tile-enterprise.svg +22 -0
  32. package/src/assets/images/tile-marketing.svg +16 -0
  33. package/src/assets/media/demo-chime.wav +0 -0
  34. package/src/partials/announcement-container.html +67 -0
  35. package/src/partials/content-slider-container.html +5 -17
  36. package/src/partials/gallery-container.html +8 -8
  37. package/src/partials/home-container.html +11 -20
  38. package/src/partials/media-container.html +27 -0
  39. package/src/partials/prose-container.html +43 -0
  40. package/src/partials/testimonials-container.html +82 -0
  41. package/src/partials/tiles-container.html +5 -20
  42. package/src/scss/base/_base.scss +7 -1
  43. package/src/scss/components/_announcement.scss +84 -0
  44. package/src/scss/components/_index.scss +4 -0
  45. package/src/scss/components/_media.scss +26 -0
  46. package/src/scss/components/_prose.scss +42 -0
  47. package/src/scss/components/_testimonial.scss +58 -0
  48. package/src/scss/layout/_grid.scss +39 -0
  49. package/src/scss/layout/_main.scss +9 -1
  50. package/src/scss/layout/_section.scss +14 -0
  51. package/src/scss/utilities/_index.scss +1 -0
  52. package/src/scss/utilities/_reveal.scss +34 -0
  53. package/src/scss/utilities/_touch-targets.scss +10 -2
@@ -215,7 +215,8 @@ feature frame) ·
215
215
  `mw-rating` · `mw-meta-header` · `mw-stepper` · `mw-timeline-big` /
216
216
  `mw-timeline-simple`
217
217
 
218
- **Feedback** `mw-alert` · `mw-toast-stack` · `mw-empty-state` ·
218
+ **Feedback** `mw-alert` · `mw-toast-stack` · `mw-announcement` (+ `-content`,
219
+ `-highlight`, `-static`, color variants) · `mw-empty-state` ·
219
220
  `mw-spinner-border` / `mw-spinner-dots` / `mw-spinner-dual-ring` · `mw-skeleton`
220
221
 
221
222
  **Navigation** `mw-header` + `mw-navbar` · `mw-breadcrumbs` · `mw-pagination` ·
@@ -223,9 +224,10 @@ feature frame) ·
223
224
  `-caret`, `-end`, `-up`) · `mw-section-nav` (`references/layout.md`)
224
225
 
225
226
  **Media & content** `mw-avatar` (+ `initials`, `group`) · `mw-gallery` ·
226
- `mw-image-slider` · `mw-blog-post` · `mw-code-block` / `mw-terminal` ·
227
- `mw-techstack-bucket` · `mw-coming-soon` · `mw-divider` · `mw-kbd` ·
228
- `mw-list` family
227
+ `mw-image-slider` · `mw-blog-post` · `mw-testimonial` (+ `-source`, `-detail`,
228
+ `-featured`) · `mw-prose` · `mw-media` (+ `-caption`) · `mw-code-block` /
229
+ `mw-terminal` · `mw-techstack-bucket` · `mw-coming-soon` · `mw-divider` ·
230
+ `mw-kbd` · `mw-list` family
229
231
 
230
232
  **Forms** (`references/forms.md`) `mw-field` · `mw-input` · `mw-select` ·
231
233
  `mw-textarea` · `mw-checkbox` · `mw-radio` · `mw-toggle` · `mw-slider` ·
@@ -233,8 +235,8 @@ feature frame) ·
233
235
  `mw-form-actions` · `mw-login`
234
236
 
235
237
  **Layout** (`references/layout.md`) `mw-main` · `mw-container` · `mw-content` ·
236
- `mw-section` · `mw-page-header` · `mw-grid-*` · `mw-row-split` · `mw-hero` ·
237
- `mw-footer`
238
+ `mw-section` (+ `mw-section-intro`) · `mw-page-header` · `mw-grid-*` ·
239
+ `mw-columns-2/3` · `mw-row-split` · `mw-hero` · `mw-footer`
238
240
 
239
241
  **Utilities** (`references/layout.md`) `mw-sr-only` / `mw-sr-only-focusable` /
240
242
  `mw-skip-link` · `mw-row-split` (+ `center`) · `mw-text-numeric` /
@@ -244,7 +246,7 @@ feature frame) ·
244
246
  `mw-corner-plain` ·
245
247
  `mw-aspect-square|video|wide|portrait|photo` · `mw-d-{sm,md,lg,xl}-*` /
246
248
  `mw-hide-mobile` / `mw-hide-desktop` · `mw-overflow-*` / `mw-snap-x` ·
247
- spacing, flex, display, text
249
+ `mw-reveal` · spacing, flex, display, text
248
250
 
249
251
  ## Pitfalls
250
252
 
@@ -636,6 +636,32 @@ class), `-top-center`, `-bottom-right`. Width is capped at
636
636
  the entry animation respects `prefers-reduced-motion`. Auto-dismiss is the
637
637
  application's job.
638
638
 
639
+ ## Announcement
640
+
641
+ The ribbon glued under the fixed header - a discount, a launch note, a
642
+ maintenance window. One per page.
643
+
644
+ ```html
645
+ <aside class="mw-announcement mw-announcement-secondary">
646
+ <a class="mw-announcement-content" href="#pricing">
647
+ <span class="mw-announcement-highlight">-20 %</span>
648
+ <span>Summer discount on all coachings until 06.09.</span>
649
+ </a>
650
+ </aside>
651
+ ```
652
+
653
+ Positioned fixed below the header and one z-index layer under it, and it stays
654
+ there - the page scrolls beneath it. Variants: `mw-announcement-secondary`,
655
+ `-success`, `-warning`, `-danger`, `-info` (primary is the default).
656
+ `mw-announcement-highlight` is the pill in front of the text; the content
657
+ element is usually an `<a>` but a plain `<div>` works.
658
+ `mw-announcement-static` puts the ribbon into the document flow instead - it
659
+ then scrolls with the content and shifts no anchor offset.
660
+
661
+ The height lives in `--mw-announcement-height` and drives the anchor scroll
662
+ offset (`scroll-padding-top`) automatically - a taller ribbon raises the token
663
+ instead of fighting the offset.
664
+
639
665
  ## Empty state
640
666
 
641
667
  ```html
@@ -1561,6 +1587,65 @@ current button carry `active`.
1561
1587
  `mw-blog-post-content-markdown` styles unclassed HTML - the target for rendered
1562
1588
  markdown. `mw-blog-post-content` is the same wrapper for hand-written markup.
1563
1589
 
1590
+ ## Testimonial
1591
+
1592
+ A quote card with its source - a voice about the product. A `figure`, because
1593
+ quote and attribution belong together:
1594
+
1595
+ ```html
1596
+ <figure class="mw-testimonial">
1597
+ <blockquote>
1598
+ The workshop picked me up after a long day of talking.
1599
+ </blockquote>
1600
+ <figcaption class="mw-testimonial-source">
1601
+ Anna M. <span class="mw-testimonial-detail">&middot; voice workshop</span>
1602
+ </figcaption>
1603
+ </figure>
1604
+ ```
1605
+
1606
+ The card carries the surface, so inside it the blockquote drops most of its
1607
+ tint and keeps only the edge and the quotation marks. `mw-testimonial-source`
1608
+ uses `margin-top: auto` - in a grid of equal-height cards every source line
1609
+ sits on its card's bottom edge. `mw-testimonial-featured` sets the quote a
1610
+ size larger, for the one voice lifted above the grid.
1611
+
1612
+ For a wall of testimonials of unequal length, put them in `mw-columns-2` or
1613
+ `mw-columns-3` (`references/layout.md`) instead of a grid.
1614
+
1615
+ ## Prose
1616
+
1617
+ Long-form running text - a legal page, terms, a plain article. One class on
1618
+ the container, bare `h2`/`h3`/`p`/`ul` inside:
1619
+
1620
+ ```html
1621
+ <div class="mw-card mw-card-simple mw-prose">
1622
+ <h2>1. Scope</h2>
1623
+ <p>...</p>
1624
+ <h2>2. Contact</h2>
1625
+ <p>...</p>
1626
+ </div>
1627
+ ```
1628
+
1629
+ Headings are deliberately small (`lg`/`md`, primary ink) - in a document they
1630
+ structure the reading rather than compete with the page title. First and last
1631
+ child lose their outer margins, so the container's own padding rules.
1632
+
1633
+ ## Media
1634
+
1635
+ Self-hosted audio and video. The native controls are the player -
1636
+ `accent-color` already brands them - the wrapper only makes the element sit
1637
+ right:
1638
+
1639
+ ```html
1640
+ <div class="mw-media">
1641
+ <video src="/media/intro.mp4" controls preload="metadata"></video>
1642
+ <p class="mw-media-caption">Two minutes about how a session works.</p>
1643
+ </div>
1644
+ ```
1645
+
1646
+ `audio` and `video` become full-width blocks; a video also gets the surface
1647
+ silhouette and a resting shadow. Works with `<audio controls>` the same way.
1648
+
1564
1649
  ## Code & terminal
1565
1650
 
1566
1651
  ```html
@@ -162,13 +162,14 @@ viewport, so keep long tooltips off the outermost elements.
162
162
 
163
163
  ## Sections
164
164
 
165
- | Class | Use |
166
- | ----------------------------------- | -------------------------------------------------------------------------- |
167
- | `mw-section` | Vertical rhythm for a page band - `--mw-section-padding-block`, 1.75rem |
168
- | `mw-section-alternate` | Diagonal pattern background; combine with `mw-section` |
169
- | `mw-section-title` | Centered `3xl` heading with a decorative primary underline - landing pages |
170
- | `mw-section-subtitle` | Centered `2xl` heading with a thin secondary underline |
171
- | `mw-section-nav` + `mw-section-btn` | Centered, wrapping row of outline-style jump links |
165
+ | Class | Use |
166
+ | ----------------------------------- | -------------------------------------------------------------------------------------------------------------- |
167
+ | `mw-section` | Vertical rhythm for a page band - `--mw-section-padding-block`, 3.3rem (2.5rem below `md`, 1.75rem below `sm`) |
168
+ | `mw-section-alternate` | Diagonal pattern background; combine with `mw-section` |
169
+ | `mw-section-title` | Centered `3xl` heading with a decorative primary underline - landing pages |
170
+ | `mw-section-intro` | The lead paragraph under a section title - centred, muted, 46rem measure |
171
+ | `mw-section-subtitle` | Centered `2xl` heading with a thin secondary underline |
172
+ | `mw-section-nav` + `mw-section-btn` | Centered, wrapping row of outline-style jump links |
172
173
 
173
174
  ```html
174
175
  <section class="mw-section mw-section-alternate">
@@ -303,6 +304,21 @@ Every one of them has a `-lg` twin with a wider gap (2.5rem instead of 1.35rem):
303
304
  | `mw-grid-stack-stretch` | full width (same result as `mw-grid-1`) |
304
305
  | `mw-grid-stack-lg`, `mw-grid-stack-center-lg` | wide-gap twins |
305
306
 
307
+ **Masonry columns** - `mw-columns-2` and `mw-columns-3`, for cards of unequal
308
+ height where a row grid tears a gap under every short one. CSS multi-column:
309
+ the children flow into columns and close up, the count steps down with the
310
+ viewport (3 → 2 below `lg`, → 1 below `sm`), and every child keeps
311
+ `break-inside: avoid` so a break never lands mid-card. Reading order runs top
312
+ to bottom, then across - right for testimonials and galleries, wrong for
313
+ anything ranked or chronological.
314
+
315
+ ```html
316
+ <div class="mw-columns-3">
317
+ <figure class="mw-testimonial">...</figure>
318
+ <figure class="mw-testimonial">...</figure>
319
+ </div>
320
+ ```
321
+
306
322
  ## Utilities
307
323
 
308
324
  **Spacing** - margin `mw-m-*`, `mw-mt-*`, `mw-mb-*`, `mw-ml-*`, `mw-mr-*`,
@@ -340,6 +356,13 @@ with it; `mw-text-capitalize` is the plain transform.
340
356
  **Elevation** - `mw-elevation-0` through `-5`, the same ramp every component
341
357
  uses. See the scale table in `SKILL.md`. Never hand-roll a `box-shadow`.
342
358
 
359
+ **Scroll entrance** - `mw-reveal` lets a block rise briefly as it scrolls into
360
+ view, driven by the browser's scroll timeline (`animation-timeline: view()`) -
361
+ no JavaScript, no observer. Doubly guarded: `prefers-reduced-motion` turns it
362
+ off, and a browser without scroll timelines renders the block in place instead
363
+ of leaving it invisible. Put it on section content, not on the section itself -
364
+ a screen-high band finishes its entrance before its content is halfway up.
365
+
343
366
  **Corner accent** - `mw-corner-plain` drops the accent arc that sits on the
344
367
  two round corners of every card, panel, modal, tile, accordion, calendar,
345
368
  pagination and login box. Everything else stays: the radii, the border, the
@@ -77,7 +77,7 @@ Safari 16.4+, Firefox 128+. The same range is declared as `browserslist` in
77
77
  | `--mw-table-scroll-height` | Per-table height cap for `mw-table-responsive-scroll` |
78
78
  | `--mw-kanban-background`, `--mw-kanban-lane-border`, `--mw-kanban-column-min-height` | Per-board surface, lane border and lane floor (120px, 90px on `mw-kanban-compact`) |
79
79
  | `--mw-container-gutter`, `--mw-container-width` | Page gutter of `mw-container` (fluid `clamp(1rem, 4.2vw + 0.5rem, 4rem)`, never below the safe-area inset) and the width derived from it (`min(1200px, 100% - 2 * gutter)`) |
80
- | `--mw-section-padding-block` | Top/bottom rhythm of `mw-section` (1.75rem) |
80
+ | `--mw-section-padding-block` | Top/bottom rhythm of `mw-section` (3.3rem, stepping down to 2.5rem below `md` and 1.75rem below `sm`) |
81
81
  | `--mw-calendar-dot` | Colour of a single calendar dot - set it per dot or per cell; the `mw-calendar-dot-*` classes are presets for it |
82
82
  | `--mw-scroll-hint-cover` | Colour the scroll hint on a tab bar fades into. Preset to the page, re-pointed to the card background inside `mw-card`, `mw-panel`, `mw-modal`, `mw-tile`, `mw-calendar` |
83
83
  | `--mw-elevation-1` … `-5` | Every shadow in the framework. Two layers per level - contact plus ambient. Never write a `box-shadow` by hand: a hand-rolled one is the wrong colour in one of the two themes |
@@ -22,7 +22,7 @@ jobs:
22
22
  run: npm ci
23
23
 
24
24
  - name: Check formatting
25
- run: npm run format:check
25
+ run: npm run format
26
26
 
27
27
  # Fails on any Sass error, so a broken @use or an unknown function
28
28
  # never reaches a release
package/.prettierignore CHANGED
@@ -4,3 +4,5 @@ package-lock.json
4
4
 
5
5
  # built output
6
6
  dist
7
+ maverick-wave.min.css
8
+ maverick-wave.min.js
package/CHANGELOG.md CHANGED
@@ -6,6 +6,23 @@ Patch releases are only for test purposes - here I only document major and minor
6
6
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
7
7
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
8
 
9
+ ## [4.23.0] - 2026-09-01
10
+
11
+ ### Changed
12
+
13
+ - Technical updates
14
+
15
+ ## [4.22.0] - 2026-09-01
16
+
17
+ ### Added
18
+
19
+ - `mw-announcement` - the ribbon under the fixed header (discount, launch note), with `-content`, `-highlight` pill, color variants, a `-static` in-flow variant and `--mw-announcement-height` driving the anchor scroll offset
20
+ - `mw-testimonial` - quote card with `-source`, `-detail` and `-featured`, built for walls of voices
21
+ - `mw-prose` - long-form running text container (legal pages, terms, articles): bare h2/h3/p/ul inside, no utility chains
22
+ - `mw-section-intro` - the lead paragraph under a `mw-section-title`
23
+ - `mw-reveal` - scroll entrance via `animation-timeline: view()`, guarded for reduced motion and older browsers
24
+ - `mw-media` - self-hosted audio and video sit full width, video in the surface silhouette
25
+
9
26
  ## [4.21.0] - 2026-08-31
10
27
 
11
28
  ### Fixed
package/CLAUDE.md CHANGED
@@ -12,9 +12,12 @@ MaverickWave is a lightweight, modern CSS framework providing a grid system, 25+
12
12
  npm start # Build + watch for changes (development)
13
13
  npm run build # Clean dist, then full build
14
14
  npm run showcase # Serve built dist on http://localhost:8888
15
- npm run clean # Remove dist/ and root maverick-wave.{css,js}
16
- npm run format # Format all SCSS, JS, JSON, HTML, MD with Prettier
17
- npm run release # Build non-minified maverick-wave.{css,js} in project root
15
+ npm run clean # Remove dist/ (never touches the root release files)
16
+ npm run format # Check formatting of SCSS, JS, JSON, HTML, MD (used by CI)
17
+ npm run format:fix # Format all files with Prettier
18
+ npm run verify # Consistency checks between built CSS, markup and docs
19
+ npm run prepack # Build minified maverick-wave.min.{css,js} in project root
20
+ # (runs automatically before npm pack / npm publish)
18
21
  ```
19
22
 
20
23
  There are no test or lint scripts.
@@ -46,7 +49,7 @@ There are no test or lint scripts.
46
49
 
47
50
  ## Code Formatting
48
51
 
49
- Prettier is the single formatter. Config (`.prettierrc.json`): single quotes, 80-char print width, 2-space tabs, semicolons, trailing commas (ES5). Run `npm run format` before committing.
52
+ Prettier is the single formatter. Config (`.prettierrc.json`): single quotes, 80-char print width, 2-space tabs, semicolons, trailing commas (ES5). Run `npm run format:fix` before committing.
50
53
 
51
54
  ## Commit Convention
52
55
 
package/gulpfile.js CHANGED
@@ -135,11 +135,11 @@ gulp.task('inject-build-info', function () {
135
135
  .pipe(gulp.dest(paths.dist));
136
136
  });
137
137
 
138
- // clean - remove dist and maverick-wave.css & maverick-wave.js
138
+ // clean - remove dist only. The root maverick-wave.min.* files are committed
139
+ // release artifacts - deleting them here once shipped a broken npm package
140
+ // (4.22.0) because a plain build before publish wiped them.
139
141
  gulp.task('clean', async function () {
140
- await deleteAsync(['dist', 'maverick-wave.min.css', 'maverick-wave.min.js'], {
141
- force: true,
142
- });
142
+ await deleteAsync(['dist'], { force: true });
143
143
  });
144
144
 
145
145
  // Watch for changes
package/index.html CHANGED
@@ -150,6 +150,10 @@
150
150
  <section id="foundations" class="mw-section">
151
151
  <div class="mw-container">
152
152
  <h2 class="mw-section-title">Foundations</h2>
153
+ <p class="mw-section-intro">
154
+ The raw material - type, color, spacing and the small utilities
155
+ everything else is built from.
156
+ </p>
153
157
  <nav class="mw-section-nav">
154
158
  <a href="#typography" class="mw-section-btn">Typography</a>
155
159
  <a href="#colors" class="mw-section-btn">Main Colors</a>
@@ -197,6 +201,10 @@
197
201
  <section id="layout" class="mw-section mw-section-alternate">
198
202
  <div class="mw-container">
199
203
  <h2 class="mw-section-title">Layout</h2>
204
+ <p class="mw-section-intro">
205
+ The bones of a page - grids, cards, panels and the containers that
206
+ hold content together.
207
+ </p>
200
208
  <nav class="mw-section-nav">
201
209
  <a href="#grid" class="mw-section-btn">Grid System</a>
202
210
  <a href="#cards" class="mw-section-btn">Cards</a>
@@ -264,6 +272,10 @@
264
272
  <section id="components" class="mw-section">
265
273
  <div class="mw-container">
266
274
  <h2 class="mw-section-title">Components</h2>
275
+ <p class="mw-section-intro">
276
+ The everyday parts - buttons, tags, alerts and their many friends,
277
+ ready to drop in.
278
+ </p>
267
279
  <nav class="mw-section-nav">
268
280
  <a href="#buttons" class="mw-section-btn">Buttons</a>
269
281
  <a href="#button-bar" class="mw-section-btn">Button Bar</a>
@@ -277,6 +289,7 @@
277
289
  <a href="#ratings" class="mw-section-btn">Ratings</a>
278
290
  <a href="#info" class="mw-section-btn">Info</a>
279
291
  <a href="#alerts" class="mw-section-btn">Alerts</a>
292
+ <a href="#announcement" class="mw-section-btn">Announcement</a>
280
293
  <a href="#code" class="mw-section-btn">Code</a>
281
294
  <a href="#skeleton" class="mw-section-btn">Skeleton</a>
282
295
  <a href="#empty-state" class="mw-section-btn">Empty State</a>
@@ -337,6 +350,11 @@
337
350
  @@include('./src/partials/alerts-container.html')
338
351
  </div>
339
352
 
353
+ <!-- Announcement container -->
354
+ <div id="announcement">
355
+ @@include('./src/partials/announcement-container.html')
356
+ </div>
357
+
340
358
  <!-- Code container -->
341
359
  <div id="code">@@include('./src/partials/code-container.html')</div>
342
360
 
@@ -361,6 +379,10 @@
361
379
  <section id="forms" class="mw-section mw-section-alternate">
362
380
  <div class="mw-container">
363
381
  <h2 class="mw-section-title">Forms</h2>
382
+ <p class="mw-section-intro">
383
+ Inputs, selects, toggles and validation - fields and buttons share
384
+ one height scale by construction.
385
+ </p>
364
386
  <nav class="mw-section-nav">
365
387
  <a href="#form-elements" class="mw-section-btn">Form Elements</a>
366
388
  <a href="#input-group" class="mw-section-btn">Input Group</a>
@@ -402,6 +424,10 @@
402
424
  <section id="data-display" class="mw-section">
403
425
  <div class="mw-container">
404
426
  <h2 class="mw-section-title">Data & Display</h2>
427
+ <p class="mw-section-intro">
428
+ Tables, boards, timelines and long-form content - everything that
429
+ shows real data.
430
+ </p>
405
431
  <nav class="mw-section-nav">
406
432
  <a href="#page-header" class="mw-section-btn">Page Header</a>
407
433
  <a href="#meta-info" class="mw-section-btn">Meta Info</a>
@@ -415,6 +441,9 @@
415
441
  >Technology Stack Bucket</a
416
442
  >
417
443
  <a href="#content-slider" class="mw-section-btn">Content Slider</a>
444
+ <a href="#testimonials" class="mw-section-btn">Testimonials</a>
445
+ <a href="#prose" class="mw-section-btn">Prose</a>
446
+ <a href="#media" class="mw-section-btn">Media</a>
418
447
  <a href="#blog-posts" class="mw-section-btn">Blog Posts</a>
419
448
  </nav>
420
449
 
@@ -468,6 +497,17 @@
468
497
  @@include('./src/partials/content-slider-container.html')
469
498
  </div>
470
499
 
500
+ <!-- Testimonials container-->
501
+ <div id="testimonials">
502
+ @@include('./src/partials/testimonials-container.html')
503
+ </div>
504
+
505
+ <!-- Prose container-->
506
+ <div id="prose">@@include('./src/partials/prose-container.html')</div>
507
+
508
+ <!-- Media container-->
509
+ <div id="media">@@include('./src/partials/media-container.html')</div>
510
+
471
511
  <!-- Blogposts container-->
472
512
  <div id="blog-posts">
473
513
  @@include('./src/partials/blog-posts-container.html')