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.
- package/.claude/skills/maverick-wave/SKILL.md +9 -7
- package/.claude/skills/maverick-wave/references/components.md +85 -0
- package/.claude/skills/maverick-wave/references/layout.md +30 -7
- package/.claude/skills/maverick-wave/references/theming.md +1 -1
- package/.github/workflows/ci.yml +1 -1
- package/.prettierignore +2 -0
- package/CHANGELOG.md +17 -0
- package/CLAUDE.md +7 -4
- package/gulpfile.js +4 -4
- package/index.html +40 -0
- package/maverick-wave.min.css +3 -3
- package/package.json +3 -3
- package/release.sh +1 -1
- package/scripts/verify.js +15 -0
- package/src/assets/images/gallery-city.svg +49 -0
- package/src/assets/images/gallery-desert.svg +25 -0
- package/src/assets/images/gallery-forest.svg +46 -0
- package/src/assets/images/gallery-lake.svg +26 -0
- package/src/assets/images/gallery-mountain.svg +19 -0
- package/src/assets/images/gallery-ocean.svg +26 -0
- package/src/assets/images/gallery-oldtown.svg +41 -0
- package/src/assets/images/gallery-snow.svg +39 -0
- package/src/assets/images/slider-field.svg +124 -0
- package/src/assets/images/slider-forest.svg +33 -0
- package/src/assets/images/slider-lake.svg +35 -0
- package/src/assets/images/slider-mountains.svg +29 -0
- package/src/assets/images/slider-trees.svg +41 -0
- package/src/assets/images/tile-analytics.svg +22 -0
- package/src/assets/images/tile-cloud.svg +19 -0
- package/src/assets/images/tile-ecommerce.svg +14 -0
- package/src/assets/images/tile-enterprise.svg +22 -0
- package/src/assets/images/tile-marketing.svg +16 -0
- package/src/assets/media/demo-chime.wav +0 -0
- package/src/partials/announcement-container.html +67 -0
- package/src/partials/content-slider-container.html +5 -17
- package/src/partials/gallery-container.html +8 -8
- package/src/partials/home-container.html +11 -20
- package/src/partials/media-container.html +27 -0
- package/src/partials/prose-container.html +43 -0
- package/src/partials/testimonials-container.html +82 -0
- package/src/partials/tiles-container.html +5 -20
- package/src/scss/base/_base.scss +7 -1
- package/src/scss/components/_announcement.scss +84 -0
- package/src/scss/components/_index.scss +4 -0
- package/src/scss/components/_media.scss +26 -0
- package/src/scss/components/_prose.scss +42 -0
- package/src/scss/components/_testimonial.scss +58 -0
- package/src/scss/layout/_grid.scss +39 -0
- package/src/scss/layout/_main.scss +9 -1
- package/src/scss/layout/_section.scss +14 -0
- package/src/scss/utilities/_index.scss +1 -0
- package/src/scss/utilities/_reveal.scss +34 -0
- package/src/scss/utilities/_touch-targets.scss +10 -2
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200" role="img" aria-label="Business intelligence suite">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="an-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#7a5cf0"/>
|
|
5
|
+
<stop offset="1" stop-color="#3d2a9c"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="200" height="200" fill="url(#an-bg)"/>
|
|
9
|
+
<circle cx="40" cy="36" r="52" fill="#ffffff" opacity="0.09"/>
|
|
10
|
+
<g fill="#ffffff" opacity="0.9">
|
|
11
|
+
<rect x="62" y="114" width="20" height="34" rx="4"/>
|
|
12
|
+
<rect x="90" y="96" width="20" height="52" rx="4"/>
|
|
13
|
+
<rect x="118" y="78" width="20" height="70" rx="4"/>
|
|
14
|
+
</g>
|
|
15
|
+
<path d="M72 104 l28 -18 l28 -20" fill="none" stroke="#ffd166" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
16
|
+
<g fill="#ffd166">
|
|
17
|
+
<circle cx="72" cy="104" r="6"/>
|
|
18
|
+
<circle cx="100" cy="86" r="6"/>
|
|
19
|
+
<circle cx="128" cy="66" r="6"/>
|
|
20
|
+
</g>
|
|
21
|
+
<rect x="58" y="154" width="84" height="6" rx="3" fill="#ffffff" opacity="0.55"/>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200" role="img" aria-label="Cloud infrastructure">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="cl-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#2eb6c9"/>
|
|
5
|
+
<stop offset="1" stop-color="#1d6d95"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="200" height="200" fill="url(#cl-bg)"/>
|
|
9
|
+
<circle cx="172" cy="176" r="52" fill="#ffffff" opacity="0.09"/>
|
|
10
|
+
<path d="M70 100 a24 24 0 0 1 46 -11 a18 18 0 0 1 14 30 h-52 a22 22 0 0 1 -8 -19 Z" fill="#ffffff" opacity="0.94"/>
|
|
11
|
+
<g fill="#ffffff" opacity="0.75">
|
|
12
|
+
<rect x="68" y="132" width="64" height="14" rx="4"/>
|
|
13
|
+
<rect x="68" y="152" width="64" height="14" rx="4"/>
|
|
14
|
+
</g>
|
|
15
|
+
<g fill="#1d6d95">
|
|
16
|
+
<circle cx="78" cy="139" r="3.5"/>
|
|
17
|
+
<circle cx="78" cy="159" r="3.5"/>
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200" role="img" aria-label="E-commerce platform">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="ec-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#2f6fed"/>
|
|
5
|
+
<stop offset="1" stop-color="#1b3f9c"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="200" height="200" fill="url(#ec-bg)"/>
|
|
9
|
+
<circle cx="160" cy="40" r="52" fill="#ffffff" opacity="0.09"/>
|
|
10
|
+
<path d="M64 88 h72 l-7 56 a9 9 0 0 1 -9 8 h-40 a9 9 0 0 1 -9 -8 Z" fill="#ffffff" opacity="0.94"/>
|
|
11
|
+
<path d="M84 90 v-10 a16 16 0 0 1 32 0 v10" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
|
|
12
|
+
<circle cx="88" cy="110" r="6" fill="#2f6fed"/>
|
|
13
|
+
<circle cx="112" cy="110" r="6" fill="#2f6fed"/>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200" role="img" aria-label="Enterprise solutions">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="en-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#3fa66f"/>
|
|
5
|
+
<stop offset="1" stop-color="#1c5c46"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="200" height="200" fill="url(#en-bg)"/>
|
|
9
|
+
<circle cx="166" cy="46" r="50" fill="#ffffff" opacity="0.09"/>
|
|
10
|
+
<g fill="#ffffff" opacity="0.92">
|
|
11
|
+
<rect x="58" y="96" width="42" height="52" rx="5"/>
|
|
12
|
+
<rect x="106" y="70" width="42" height="78" rx="5"/>
|
|
13
|
+
</g>
|
|
14
|
+
<g fill="#1c5c46">
|
|
15
|
+
<rect x="67" y="106" width="10" height="10" rx="2.5"/><rect x="82" y="106" width="10" height="10" rx="2.5"/>
|
|
16
|
+
<rect x="67" y="124" width="10" height="10" rx="2.5"/><rect x="82" y="124" width="10" height="10" rx="2.5"/>
|
|
17
|
+
<rect x="115" y="80" width="10" height="10" rx="2.5"/><rect x="130" y="80" width="10" height="10" rx="2.5"/>
|
|
18
|
+
<rect x="115" y="98" width="10" height="10" rx="2.5"/><rect x="130" y="98" width="10" height="10" rx="2.5"/>
|
|
19
|
+
<rect x="115" y="116" width="10" height="10" rx="2.5"/><rect x="130" y="116" width="10" height="10" rx="2.5"/>
|
|
20
|
+
</g>
|
|
21
|
+
<rect x="52" y="152" width="102" height="7" rx="3.5" fill="#ffffff" opacity="0.6"/>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200" role="img" aria-label="Marketing automation">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="mk-bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#e8646a"/>
|
|
5
|
+
<stop offset="1" stop-color="#a32f6e"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="200" height="200" fill="url(#mk-bg)"/>
|
|
9
|
+
<circle cx="36" cy="168" r="56" fill="#ffffff" opacity="0.09"/>
|
|
10
|
+
<path d="M66 92 h16 l38 -26 v70 l-38 -26 h-16 a9 9 0 0 1 -9 -9 Z" fill="#ffffff" opacity="0.94"/>
|
|
11
|
+
<path d="M82 110 l5 28 h16 l-5 -28 Z" fill="#ffffff" opacity="0.94"/>
|
|
12
|
+
<g fill="none" stroke="#ffffff" stroke-width="6" stroke-linecap="round" opacity="0.7">
|
|
13
|
+
<path d="M132 90 a20 20 0 0 1 0 24"/>
|
|
14
|
+
<path d="M144 78 a38 38 0 0 1 0 48"/>
|
|
15
|
+
</g>
|
|
16
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Announcement</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The ribbon glued under the fixed header - a discount, a launch note, a
|
|
4
|
+
maintenance window. Shown here with <code>mw-announcement-static</code>, so
|
|
5
|
+
the demos sit in the flow instead of over this page. Without it the ribbon
|
|
6
|
+
fixes itself below the header, stays put while the page scrolls beneath it,
|
|
7
|
+
and reserves the anchor scroll offset via
|
|
8
|
+
<code>--mw-announcement-height</code>. The surface is 75% opaque with a
|
|
9
|
+
backdrop blur - visible wherever content sits behind it, like the first demo
|
|
10
|
+
below.
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<div class="mw-grid-1 mw-gap-6">
|
|
14
|
+
<div>
|
|
15
|
+
<h5 class="mw-text-medium mw-mb-2">
|
|
16
|
+
Default (primary) with highlight pill - over content, showing the 75%
|
|
17
|
+
surface and the blur
|
|
18
|
+
</h5>
|
|
19
|
+
<div
|
|
20
|
+
style="
|
|
21
|
+
background: url('images/slider-mountains.svg') center / cover;
|
|
22
|
+
padding: 1.75rem 1rem;
|
|
23
|
+
"
|
|
24
|
+
>
|
|
25
|
+
<aside class="mw-announcement mw-announcement-static">
|
|
26
|
+
<a class="mw-announcement-content" href="#announcement">
|
|
27
|
+
<span class="mw-announcement-highlight">-20 %</span>
|
|
28
|
+
<span>Summer discount on every plan until 30.09.</span>
|
|
29
|
+
</a>
|
|
30
|
+
</aside>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div>
|
|
35
|
+
<h5 class="mw-text-medium mw-mb-2">Secondary</h5>
|
|
36
|
+
<aside
|
|
37
|
+
class="mw-announcement mw-announcement-secondary mw-announcement-static"
|
|
38
|
+
>
|
|
39
|
+
<a class="mw-announcement-content" href="#announcement">
|
|
40
|
+
<span class="mw-announcement-highlight">NEW</span>
|
|
41
|
+
<span>Version 5 is out - see what changed.</span>
|
|
42
|
+
</a>
|
|
43
|
+
</aside>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div>
|
|
47
|
+
<h5 class="mw-text-medium mw-mb-2">Warning, without a link</h5>
|
|
48
|
+
<aside
|
|
49
|
+
class="mw-announcement mw-announcement-warning mw-announcement-static"
|
|
50
|
+
>
|
|
51
|
+
<div class="mw-announcement-content">
|
|
52
|
+
<span>Maintenance window on Saturday, 02:00 - 04:00 UTC.</span>
|
|
53
|
+
</div>
|
|
54
|
+
</aside>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div>
|
|
58
|
+
<h5 class="mw-text-medium mw-mb-2">Danger</h5>
|
|
59
|
+
<aside
|
|
60
|
+
class="mw-announcement mw-announcement-danger mw-announcement-static"
|
|
61
|
+
>
|
|
62
|
+
<div class="mw-announcement-content">
|
|
63
|
+
<span>The legacy API shuts down on 01.12. - migrate now.</span>
|
|
64
|
+
</div>
|
|
65
|
+
</aside>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<div class="mw-image-slider">
|
|
5
5
|
<div class="mw-image-slider-base" data-index="0">
|
|
6
6
|
<img
|
|
7
|
-
src="
|
|
7
|
+
src="images/slider-mountains.svg"
|
|
8
8
|
class="mw-image-slider-base-image"
|
|
9
9
|
alt="Mountain Landscape"
|
|
10
10
|
/>
|
|
@@ -12,28 +12,16 @@
|
|
|
12
12
|
|
|
13
13
|
<div class="mw-image-slider-overlay">
|
|
14
14
|
<div class="mw-image-slider-overlay-image" data-index="1">
|
|
15
|
-
<img
|
|
16
|
-
src="https://images.unsplash.com/photo-1439066615861-d1af74d74000?w=800&h=500&fit=crop"
|
|
17
|
-
alt="Lake"
|
|
18
|
-
/>
|
|
15
|
+
<img src="images/slider-lake.svg" alt="Lake" />
|
|
19
16
|
</div>
|
|
20
17
|
<div class="mw-image-slider-overlay-image" data-index="2">
|
|
21
|
-
<img
|
|
22
|
-
src="https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=800&h=500&fit=crop"
|
|
23
|
-
alt="Forest"
|
|
24
|
-
/>
|
|
18
|
+
<img src="images/slider-forest.svg" alt="Forest" />
|
|
25
19
|
</div>
|
|
26
20
|
<div class="mw-image-slider-overlay-image" data-index="3">
|
|
27
|
-
<img
|
|
28
|
-
src="https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&h=500&fit=crop"
|
|
29
|
-
alt="Field"
|
|
30
|
-
/>
|
|
21
|
+
<img src="images/slider-field.svg" alt="Field" />
|
|
31
22
|
</div>
|
|
32
23
|
<div class="mw-image-slider-overlay-image" data-index="4">
|
|
33
|
-
<img
|
|
34
|
-
src="https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=800&h=500&fit=crop"
|
|
35
|
-
alt="Trees"
|
|
36
|
-
/>
|
|
24
|
+
<img src="images/slider-trees.svg" alt="Trees" />
|
|
37
25
|
</div>
|
|
38
26
|
</div>
|
|
39
27
|
|
|
@@ -15,28 +15,28 @@
|
|
|
15
15
|
<!-- Track -->
|
|
16
16
|
<div class="mw-gallery-track">
|
|
17
17
|
<div class="mw-gallery-slide" data-desc="Beautiful Mountain">
|
|
18
|
-
<img src="
|
|
18
|
+
<img src="images/gallery-mountain.svg" alt="Beautiful Mountain" />
|
|
19
19
|
</div>
|
|
20
20
|
<div class="mw-gallery-slide" data-desc="Peaceful Lake">
|
|
21
|
-
<img src="
|
|
21
|
+
<img src="images/gallery-lake.svg" alt="Peaceful Lake" />
|
|
22
22
|
</div>
|
|
23
23
|
<div class="mw-gallery-slide" data-desc="City Vibes">
|
|
24
|
-
<img src="
|
|
24
|
+
<img src="images/gallery-city.svg" alt="City Vibes" />
|
|
25
25
|
</div>
|
|
26
26
|
<div class="mw-gallery-slide" data-desc="Golden Forest">
|
|
27
|
-
<img src="
|
|
27
|
+
<img src="images/gallery-forest.svg" alt="Golden Forest" />
|
|
28
28
|
</div>
|
|
29
29
|
<div class="mw-gallery-slide" data-desc="Desert View">
|
|
30
|
-
<img src="
|
|
30
|
+
<img src="images/gallery-desert.svg" alt="Desert View" />
|
|
31
31
|
</div>
|
|
32
32
|
<div class="mw-gallery-slide" data-desc="Ocean Breeze">
|
|
33
|
-
<img src="
|
|
33
|
+
<img src="images/gallery-ocean.svg" alt="Ocean Breeze" />
|
|
34
34
|
</div>
|
|
35
35
|
<div class="mw-gallery-slide" data-desc="Old Town">
|
|
36
|
-
<img src="
|
|
36
|
+
<img src="images/gallery-oldtown.svg" alt="Old Town" />
|
|
37
37
|
</div>
|
|
38
38
|
<div class="mw-gallery-slide" data-desc="Snowy Hills">
|
|
39
|
-
<img src="
|
|
39
|
+
<img src="images/gallery-snow.svg" alt="Snowy Hills" />
|
|
40
40
|
</div>
|
|
41
41
|
</div>
|
|
42
42
|
|
|
@@ -7,9 +7,14 @@
|
|
|
7
7
|
Build stunning, responsive websites effortlessly with a modern,
|
|
8
8
|
lightweight CSS framework crafted for speed, style, and flexibility.
|
|
9
9
|
</p>
|
|
10
|
+
<p>
|
|
11
|
+
Effortless dark mode, mobile-first layouts and accessibility at its
|
|
12
|
+
core. The same foundation carries a portfolio, a corporate site and a
|
|
13
|
+
full e-commerce platform.
|
|
14
|
+
</p>
|
|
10
15
|
</div>
|
|
11
16
|
|
|
12
|
-
<div class="mw-d-flex mw-gap-8 mw-justify-center
|
|
17
|
+
<div class="mw-d-flex mw-gap-8 mw-justify-center">
|
|
13
18
|
<button
|
|
14
19
|
type="button"
|
|
15
20
|
onclick="location.href = '#get-started'"
|
|
@@ -25,24 +30,10 @@
|
|
|
25
30
|
Documentation
|
|
26
31
|
</button>
|
|
27
32
|
</div>
|
|
28
|
-
|
|
29
|
-
<div class="mw-card mw-card-simple mw-text-center">
|
|
30
|
-
<h3 class="mw-text-2xl mw-mb-4">Simple. Adaptive. Unstoppable.</h3>
|
|
31
|
-
<p class="mw-mb-4">
|
|
32
|
-
MaverickWave is a sleek foundation for creators who value elegance
|
|
33
|
-
without compromise. Its fluid design philosophy bends and flexes like
|
|
34
|
-
the tide - shaping itself perfectly to your vision.
|
|
35
|
-
</p>
|
|
36
|
-
<p class="mw-mb-4">
|
|
37
|
-
Launch stunning portfolios, vibrant corporate sites, and powerful
|
|
38
|
-
e-commerce platforms faster than ever. MaverickWave gives you the
|
|
39
|
-
ultimate creative freedom without sacrificing performance.
|
|
40
|
-
</p>
|
|
41
|
-
<p>
|
|
42
|
-
Experience the future of styling with effortless dark mode, mobile-first
|
|
43
|
-
responsive layouts, and accessibility at its core - because great design
|
|
44
|
-
is for everyone.
|
|
45
|
-
</p>
|
|
46
|
-
</div>
|
|
47
33
|
</div>
|
|
48
34
|
</div>
|
|
35
|
+
|
|
36
|
+
<a class="mw-scroll-hint" href="#get-started">
|
|
37
|
+
More
|
|
38
|
+
<i class="fas fa-chevron-down"></i>
|
|
39
|
+
</a>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Media</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Self-hosted audio and video. The framework ships no player - the native
|
|
4
|
+
controls are the player, and <code>accent-color</code> already brands them.
|
|
5
|
+
The wrapper makes the element a full-width block; a <code>video</code> also
|
|
6
|
+
gets the surface silhouette and a resting shadow, same markup with a
|
|
7
|
+
<code><video></code> element inside.
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<div class="mw-grid-2 mw-gap-6">
|
|
11
|
+
<div>
|
|
12
|
+
<h5 class="mw-text-medium mw-mb-2">Audio with caption</h5>
|
|
13
|
+
<div class="mw-card mw-card-simple">
|
|
14
|
+
<div class="mw-media">
|
|
15
|
+
<audio controls preload="metadata" src="media/demo-chime.wav"></audio>
|
|
16
|
+
<p class="mw-media-caption">A short chime, served from this site.</p>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div>
|
|
22
|
+
<h5 class="mw-text-medium mw-mb-2">Bare, without a card</h5>
|
|
23
|
+
<div class="mw-media">
|
|
24
|
+
<audio controls preload="metadata" src="media/demo-chime.wav"></audio>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Prose</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Long-form running text - a legal page, terms, a plain article. One class on
|
|
4
|
+
the container, bare <code>h2</code>/<code>h3</code>/<code>p</code>/<code
|
|
5
|
+
>ul</code
|
|
6
|
+
>
|
|
7
|
+
inside: exactly what a CMS or a JSON-driven page produces. Headings stay
|
|
8
|
+
deliberately small - in a document they structure the reading, they do not
|
|
9
|
+
compete with the page title.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<div class="mw-card mw-card-simple mw-prose">
|
|
13
|
+
<h2>1. Scope</h2>
|
|
14
|
+
<p>
|
|
15
|
+
These terms apply to every order placed through this site. Deviating
|
|
16
|
+
conditions of the customer do not apply unless expressly confirmed in
|
|
17
|
+
writing.
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<h2>2. Contract</h2>
|
|
21
|
+
<p>
|
|
22
|
+
The presentation of products is not a binding offer. A contract comes into
|
|
23
|
+
existence when the order confirmation arrives, at the latest with the
|
|
24
|
+
delivery of the goods.
|
|
25
|
+
</p>
|
|
26
|
+
<h3>2.1 Cancellation</h3>
|
|
27
|
+
<p>
|
|
28
|
+
Consumers may cancel within fourteen days without giving a reason. The
|
|
29
|
+
period starts on the day the goods arrive. For the cancellation to count,
|
|
30
|
+
one of the following is enough:
|
|
31
|
+
</p>
|
|
32
|
+
<ul>
|
|
33
|
+
<li>an informal e-mail naming the order number</li>
|
|
34
|
+
<li>the returned goods with a short note</li>
|
|
35
|
+
<li>the cancellation form from the appendix</li>
|
|
36
|
+
</ul>
|
|
37
|
+
|
|
38
|
+
<h2>3. Prices</h2>
|
|
39
|
+
<p>
|
|
40
|
+
All prices are final prices and include the statutory value-added tax.
|
|
41
|
+
Shipping costs are shown separately before the order is placed.
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Testimonials</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A quote card with its source - a <code>figure</code>, because quote and
|
|
4
|
+
attribution belong together. One voice may stand above the grid as
|
|
5
|
+
<code>mw-testimonial-featured</code>; the rest flow in
|
|
6
|
+
<code>mw-columns-3</code>, the masonry layout for cards of unequal height. The
|
|
7
|
+
cards below also carry <code>mw-reveal</code> - scroll them into view to see
|
|
8
|
+
the entrance.
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<figure class="mw-testimonial mw-testimonial-featured mw-mb-6">
|
|
12
|
+
<blockquote>
|
|
13
|
+
We rebuilt our whole customer portal on this in three weeks. The team never
|
|
14
|
+
argued about spacing or shadows again - the framework had already decided,
|
|
15
|
+
and it had decided well.
|
|
16
|
+
</blockquote>
|
|
17
|
+
<figcaption class="mw-testimonial-source">
|
|
18
|
+
Maren K.
|
|
19
|
+
<span class="mw-testimonial-detail">· Head of Engineering</span>
|
|
20
|
+
</figcaption>
|
|
21
|
+
</figure>
|
|
22
|
+
|
|
23
|
+
<div class="mw-columns-3">
|
|
24
|
+
<figure class="mw-testimonial mw-reveal">
|
|
25
|
+
<blockquote>
|
|
26
|
+
The dark theme just worked. We flipped one class and every component
|
|
27
|
+
followed.
|
|
28
|
+
</blockquote>
|
|
29
|
+
<figcaption class="mw-testimonial-source">
|
|
30
|
+
Jonas R.
|
|
31
|
+
<span class="mw-testimonial-detail">· Frontend Developer</span>
|
|
32
|
+
</figcaption>
|
|
33
|
+
</figure>
|
|
34
|
+
|
|
35
|
+
<figure class="mw-testimonial mw-reveal">
|
|
36
|
+
<blockquote>
|
|
37
|
+
I came for the grid and stayed for the corner accents. Our app finally
|
|
38
|
+
looks like one product instead of five teams.
|
|
39
|
+
</blockquote>
|
|
40
|
+
<figcaption class="mw-testimonial-source">
|
|
41
|
+
Priya S.
|
|
42
|
+
<span class="mw-testimonial-detail">· Product Designer</span>
|
|
43
|
+
</figcaption>
|
|
44
|
+
</figure>
|
|
45
|
+
|
|
46
|
+
<figure class="mw-testimonial mw-reveal">
|
|
47
|
+
<blockquote>Small CSS, no build step, readable class names.</blockquote>
|
|
48
|
+
<figcaption class="mw-testimonial-source">
|
|
49
|
+
Tom W. <span class="mw-testimonial-detail">· Freelancer</span>
|
|
50
|
+
</figcaption>
|
|
51
|
+
</figure>
|
|
52
|
+
|
|
53
|
+
<figure class="mw-testimonial mw-reveal">
|
|
54
|
+
<blockquote>
|
|
55
|
+
The form controls line up with the buttons out of the box. That alone
|
|
56
|
+
saved us a week of pixel pushing across three breakpoints - and the touch
|
|
57
|
+
targets grow on their own on mobile.
|
|
58
|
+
</blockquote>
|
|
59
|
+
<figcaption class="mw-testimonial-source">
|
|
60
|
+
Aylin D. <span class="mw-testimonial-detail">· Agency Lead</span>
|
|
61
|
+
</figcaption>
|
|
62
|
+
</figure>
|
|
63
|
+
|
|
64
|
+
<figure class="mw-testimonial mw-reveal">
|
|
65
|
+
<blockquote>
|
|
66
|
+
Swapped one primary color, the whole palette followed.
|
|
67
|
+
</blockquote>
|
|
68
|
+
<figcaption class="mw-testimonial-source">
|
|
69
|
+
Ben L. <span class="mw-testimonial-detail">· Indie Hacker</span>
|
|
70
|
+
</figcaption>
|
|
71
|
+
</figure>
|
|
72
|
+
|
|
73
|
+
<figure class="mw-testimonial mw-reveal">
|
|
74
|
+
<blockquote>
|
|
75
|
+
Our legal pages, our landing page and our admin tables all speak the same
|
|
76
|
+
language now.
|
|
77
|
+
</blockquote>
|
|
78
|
+
<figcaption class="mw-testimonial-source">
|
|
79
|
+
Carla M. <span class="mw-testimonial-detail">· CTO</span>
|
|
80
|
+
</figcaption>
|
|
81
|
+
</figure>
|
|
82
|
+
</div>
|
|
@@ -69,10 +69,7 @@
|
|
|
69
69
|
<div class="mw-tiles mw-tiles-2col">
|
|
70
70
|
<div class="mw-tile">
|
|
71
71
|
<div class="mw-tile-img">
|
|
72
|
-
<img
|
|
73
|
-
src="https://picsum.photos/80/80?random=1"
|
|
74
|
-
alt="E-commerce platform"
|
|
75
|
-
/>
|
|
72
|
+
<img src="images/tile-ecommerce.svg" alt="E-commerce platform" />
|
|
76
73
|
</div>
|
|
77
74
|
<h3 class="mw-tile-header">E-commerce Platform</h3>
|
|
78
75
|
<div class="mw-tile-body">
|
|
@@ -84,10 +81,7 @@
|
|
|
84
81
|
|
|
85
82
|
<div class="mw-tile">
|
|
86
83
|
<div class="mw-tile-img">
|
|
87
|
-
<img
|
|
88
|
-
src="https://picsum.photos/80/80?random=2"
|
|
89
|
-
alt="Marketing automation"
|
|
90
|
-
/>
|
|
84
|
+
<img src="images/tile-marketing.svg" alt="Marketing automation" />
|
|
91
85
|
</div>
|
|
92
86
|
<h3 class="mw-tile-header">Marketing Automation</h3>
|
|
93
87
|
<div class="mw-tile-body">
|
|
@@ -181,10 +175,7 @@
|
|
|
181
175
|
<div class="mw-tiles">
|
|
182
176
|
<div class="mw-tile mw-tile-lg">
|
|
183
177
|
<div class="mw-tile-img">
|
|
184
|
-
<img
|
|
185
|
-
src="https://picsum.photos/80/80?random=3"
|
|
186
|
-
alt="Cloud infrastructure"
|
|
187
|
-
/>
|
|
178
|
+
<img src="images/tile-cloud.svg" alt="Cloud infrastructure" />
|
|
188
179
|
</div>
|
|
189
180
|
<h2 class="mw-tile-header">Cloud Infrastructure</h2>
|
|
190
181
|
<div class="mw-tile-body">
|
|
@@ -201,10 +192,7 @@
|
|
|
201
192
|
|
|
202
193
|
<div class="mw-tile mw-tile-lg">
|
|
203
194
|
<div class="mw-tile-img">
|
|
204
|
-
<img
|
|
205
|
-
src="https://picsum.photos/100/100?random=8"
|
|
206
|
-
alt="Business intelligence"
|
|
207
|
-
/>
|
|
195
|
+
<img src="images/tile-analytics.svg" alt="Business intelligence" />
|
|
208
196
|
</div>
|
|
209
197
|
<h2 class="mw-tile-header">Business Intelligence Suite</h2>
|
|
210
198
|
<div class="mw-tile-body">
|
|
@@ -222,10 +210,7 @@
|
|
|
222
210
|
|
|
223
211
|
<div class="mw-tile mw-tile-lg">
|
|
224
212
|
<div class="mw-tile-img">
|
|
225
|
-
<img
|
|
226
|
-
src="https://picsum.photos/100/100?random=9"
|
|
227
|
-
alt="Enterprise solutions"
|
|
228
|
-
/>
|
|
213
|
+
<img src="images/tile-enterprise.svg" alt="Enterprise solutions" />
|
|
229
214
|
</div>
|
|
230
215
|
<h2 class="mw-tile-header">Enterprise Solutions</h2>
|
|
231
216
|
<div class="mw-tile-body">
|
package/src/scss/base/_base.scss
CHANGED
|
@@ -99,6 +99,12 @@ $_active-prefix: 'dark';
|
|
|
99
99
|
// header height
|
|
100
100
|
--mw-header-height: #{$header-height};
|
|
101
101
|
|
|
102
|
+
// Height the announcement ribbon reserves - the anchor scroll offset is
|
|
103
|
+
// calculated from it, so a project with a taller ribbon raises this token
|
|
104
|
+
// rather than fighting the offset. Below `sm` the component itself steps it
|
|
105
|
+
// up for the wrapped line.
|
|
106
|
+
--mw-announcement-height: 2.7rem;
|
|
107
|
+
|
|
102
108
|
// Layout knobs. A good default is not enough here: what reads as generous on
|
|
103
109
|
// a landing page costs visible content in an application with a sticky
|
|
104
110
|
// header. Same framework, two different right answers.
|
|
@@ -123,7 +129,7 @@ $_active-prefix: 'dark';
|
|
|
123
129
|
1200px,
|
|
124
130
|
calc(100% - 2 * var(--mw-container-gutter))
|
|
125
131
|
);
|
|
126
|
-
--mw-section-padding-block: #{spacing('
|
|
132
|
+
--mw-section-padding-block: #{spacing('10')};
|
|
127
133
|
--mw-section-title-gap: #{spacing('7')};
|
|
128
134
|
--mw-scroll-hint-offset: #{spacing('9')};
|
|
129
135
|
--mw-scroll-hint-inline: var(--mw-container-gutter);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
@use '../abstracts' as *;
|
|
2
|
+
|
|
3
|
+
// The ribbon under the fixed header - a discount, a launch note, a maintenance
|
|
4
|
+
// window. One per page, and always a single line of content with an optional
|
|
5
|
+
// highlight pill in front of it.
|
|
6
|
+
.mw-announcement {
|
|
7
|
+
position: fixed;
|
|
8
|
+
top: var(--mw-header-height);
|
|
9
|
+
right: 0;
|
|
10
|
+
left: 0;
|
|
11
|
+
z-index: z-index('header') - 10;
|
|
12
|
+
background: color-mix(in srgb, var(--mw-primary-color) 75%, transparent);
|
|
13
|
+
backdrop-filter: blur(7px);
|
|
14
|
+
color: var(--mw-primary-accent-text-color);
|
|
15
|
+
box-shadow: var(--mw-elevation-2);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// The one row inside - usually a link to the thing announced.
|
|
19
|
+
.mw-announcement-content {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
gap: spacing('4');
|
|
24
|
+
min-height: var(--mw-announcement-height);
|
|
25
|
+
padding: spacing('1') spacing('4');
|
|
26
|
+
font-size: font-size('sm');
|
|
27
|
+
text-align: center;
|
|
28
|
+
color: inherit;
|
|
29
|
+
text-decoration: none;
|
|
30
|
+
|
|
31
|
+
&:hover,
|
|
32
|
+
&:focus-visible {
|
|
33
|
+
background: color-mix(in srgb, #000 10%, transparent);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@include focus-ring-inset;
|
|
37
|
+
@include tappable;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// The highlight pill - the "-20 %", the "NEW". Darkened glass rather than a
|
|
41
|
+
// color of its own, so it works on every variant without a token per pair.
|
|
42
|
+
.mw-announcement-highlight {
|
|
43
|
+
flex-shrink: 0;
|
|
44
|
+
padding: spacing('1') spacing('3');
|
|
45
|
+
border-radius: 999px;
|
|
46
|
+
background: color-mix(in srgb, #000 18%, transparent);
|
|
47
|
+
font-weight: font-weight('bold');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// The ribbon in the document flow instead of glued under the header - for a
|
|
51
|
+
// notice inside a page, or a demo of the component itself. Static, it scrolls
|
|
52
|
+
// with the content and shifts no anchor offset below.
|
|
53
|
+
.mw-announcement-static {
|
|
54
|
+
position: static;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Anchors scrolled to under the fixed chrome would land under the ribbon too -
|
|
58
|
+
// the same reason the reset reserves the header height. Scoped with :has, so a
|
|
59
|
+
// page without a ribbon keeps the plain offset - and a static ribbon does not
|
|
60
|
+
// count, it scrolls with the content.
|
|
61
|
+
html:has(.mw-announcement:not(.mw-announcement-static)) {
|
|
62
|
+
scroll-padding-top: calc(
|
|
63
|
+
var(--mw-header-height) + var(--mw-announcement-height)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// On a phone the line wraps and the ribbon grows - the height token follows,
|
|
68
|
+
// so the scroll offset above stays honest. Here and not in base, so cherry-
|
|
69
|
+
// picking the component brings the whole behaviour along.
|
|
70
|
+
@include media-down('sm') {
|
|
71
|
+
:root {
|
|
72
|
+
--mw-announcement-height: 3.4rem;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Color variants
|
|
77
|
+
$_mw-announcement-colors: (secondary, success, warning, danger, info);
|
|
78
|
+
|
|
79
|
+
@each $name in $_mw-announcement-colors {
|
|
80
|
+
.mw-announcement-#{$name} {
|
|
81
|
+
background: color-mix(in srgb, var(--mw-#{$name}-color) 75%, transparent);
|
|
82
|
+
color: var(--mw-#{$name}-accent-text-color);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@forward 'accordions';
|
|
2
2
|
@forward 'alerts';
|
|
3
|
+
@forward 'announcement';
|
|
3
4
|
@forward 'avatars';
|
|
4
5
|
@forward 'badge';
|
|
5
6
|
@forward 'blog-post';
|
|
@@ -21,12 +22,14 @@
|
|
|
21
22
|
@forward 'links';
|
|
22
23
|
@forward 'lists';
|
|
23
24
|
@forward 'localhost-indicator';
|
|
25
|
+
@forward 'media';
|
|
24
26
|
@forward 'meta-info';
|
|
25
27
|
@forward 'modals';
|
|
26
28
|
@forward 'pagination';
|
|
27
29
|
@forward 'panels';
|
|
28
30
|
@forward 'pricing';
|
|
29
31
|
@forward 'progress';
|
|
32
|
+
@forward 'prose';
|
|
30
33
|
@forward 'ratings';
|
|
31
34
|
@forward 'segmented';
|
|
32
35
|
@forward 'skeleton';
|
|
@@ -36,6 +39,7 @@
|
|
|
36
39
|
@forward 'tabs';
|
|
37
40
|
@forward 'tags';
|
|
38
41
|
@forward 'techstack-bucket';
|
|
42
|
+
@forward 'testimonial';
|
|
39
43
|
@forward 'theme-toggle';
|
|
40
44
|
@forward 'tiles';
|
|
41
45
|
@forward 'timelines';
|