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.
- package/.claude/settings.local.json +29 -1
- package/.claude/skills/mw-maverick-wave/SKILL.md +39 -24
- package/.claude/skills/mw-maverick-wave/examples/angular-services.md +16 -4
- package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +13 -4
- package/.claude/skills/mw-maverick-wave/references/components.md +42 -5
- package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
- package/.claude/skills/mw-maverick-wave/references/javascript.md +17 -4
- package/.claude/skills/mw-maverick-wave/references/layout.md +53 -19
- package/.claude/skills/mw-maverick-wave/references/theming.md +38 -1
- package/.impeccable/config.local.json +5 -0
- package/.impeccable/hook.cache.json +1 -0
- package/CHANGELOG.md +11 -0
- package/CLAUDE.md +5 -5
- package/README.md +48 -4
- package/index.html +19 -38
- package/maverick-wave.min.css +14 -12
- package/maverick-wave.min.js +1 -1
- package/package.json +2 -2
- package/scripts/verify.js +27 -2
- package/src/js/main.js +223 -83
- package/src/partials/accordions-container.html +6 -10
- package/src/partials/alerts-container.html +6 -6
- package/src/partials/announcement-container.html +5 -5
- package/src/partials/avatars-container.html +85 -17
- package/src/partials/badges-container.html +6 -6
- package/src/partials/blog-posts-container.html +11 -12
- package/src/partials/buttons-container.html +3 -3
- package/src/partials/cards-container.html +26 -9
- package/src/partials/code-container.html +5 -5
- package/src/partials/content-slider-container.html +5 -4
- package/src/partials/divider-container.html +7 -7
- package/src/partials/dropdown-container.html +2 -2
- package/src/partials/empty-state-container.html +5 -5
- package/src/partials/footer-container.html +21 -18
- package/src/partials/form-elements-container.html +14 -14
- package/src/partials/gallery-container.html +16 -8
- package/src/partials/get-started-container.html +4 -8
- package/src/partials/header-container.html +18 -7
- package/src/partials/home-container.html +10 -20
- package/src/partials/input-group-container.html +11 -2
- package/src/partials/kbd-container.html +1 -1
- package/src/partials/login-container.html +5 -1
- package/src/partials/media-container.html +2 -2
- package/src/partials/modals-container.html +22 -32
- package/src/partials/pricing-container.html +9 -9
- package/src/partials/skeleton-container.html +6 -6
- package/src/partials/stepper-container.html +2 -2
- package/src/partials/tables-container.html +12 -12
- package/src/partials/tabs-container.html +17 -27
- package/src/partials/tags-container.html +23 -17
- package/src/partials/techstack-bucket-container.html +13 -0
- package/src/partials/tiles-container.html +26 -9
- package/src/partials/typography-container.html +7 -6
- package/src/partials/utilities-container.html +35 -15
- package/src/scss/_layers.scss +10 -0
- package/src/scss/abstracts/_index.scss +6 -0
- package/src/scss/abstracts/_mixins.scss +61 -153
- package/src/scss/abstracts/_variables.scss +123 -319
- package/src/scss/base/_base.scss +170 -190
- package/src/scss/base/_reset.scss +106 -104
- package/src/scss/base/_typography.scss +153 -151
- package/src/scss/components/_accordions.scss +97 -97
- package/src/scss/components/_alerts.scss +71 -70
- package/src/scss/components/_announcement.scss +71 -70
- package/src/scss/components/_avatars.scss +130 -142
- package/src/scss/components/_badge.scss +131 -132
- package/src/scss/components/_blog-post.scss +223 -220
- package/src/scss/components/_breadcrumbs.scss +93 -92
- package/src/scss/components/_button-bar.scss +102 -110
- package/src/scss/components/_buttons.scss +319 -324
- package/src/scss/components/_calendar.scss +251 -252
- package/src/scss/components/_cards.scss +359 -386
- package/src/scss/components/_code.scss +190 -194
- package/src/scss/components/_coming-soon.scss +77 -75
- package/src/scss/components/_content-slider.scss +90 -89
- package/src/scss/components/_divider.scss +55 -53
- package/src/scss/components/_dropdown.scss +179 -185
- package/src/scss/components/_empty-state.scss +57 -57
- package/src/scss/components/_flag.scss +294 -278
- package/src/scss/components/_gallery.scss +131 -133
- package/src/scss/components/_info.scss +151 -167
- package/src/scss/components/_kanban.scss +332 -341
- package/src/scss/components/_kbd.scss +40 -38
- package/src/scss/components/_lang-switch.scss +89 -97
- package/src/scss/components/_links.scss +21 -28
- package/src/scss/components/_lists.scss +510 -514
- package/src/scss/components/_localhost-indicator.scss +26 -24
- package/src/scss/components/_media.scss +22 -20
- package/src/scss/components/_meta-info.scss +35 -33
- package/src/scss/components/_modals.scss +277 -186
- package/src/scss/components/_pagination.scss +81 -87
- package/src/scss/components/_panels.scss +99 -97
- package/src/scss/components/_pricing.scss +183 -241
- package/src/scss/components/_progress.scss +112 -89
- package/src/scss/components/_prose.scss +35 -33
- package/src/scss/components/_ratings.scss +40 -38
- package/src/scss/components/_segmented.scss +82 -84
- package/src/scss/components/_skeleton.scss +66 -72
- package/src/scss/components/_spinners.scss +155 -159
- package/src/scss/components/_stepper.scss +116 -116
- package/src/scss/components/_tables.scss +155 -148
- package/src/scss/components/_tabs.scss +232 -141
- package/src/scss/components/_tags.scss +109 -107
- package/src/scss/components/_techstack-bucket.scss +123 -122
- package/src/scss/components/_testimonial.scss +72 -70
- package/src/scss/components/_theme-toggle.scss +53 -51
- package/src/scss/components/_tiles.scss +174 -174
- package/src/scss/components/_timelines.scss +282 -280
- package/src/scss/components/_toasts.scss +66 -72
- package/src/scss/form-elements/_checkbox.scss +117 -132
- package/src/scss/form-elements/_form.scss +149 -115
- package/src/scss/form-elements/_input-group.scss +99 -103
- package/src/scss/form-elements/_input.scss +74 -74
- package/src/scss/form-elements/_login.scss +48 -48
- package/src/scss/form-elements/_prefilled.scss +53 -51
- package/src/scss/form-elements/_radio.scss +95 -107
- package/src/scss/form-elements/_select.scss +42 -42
- package/src/scss/form-elements/_slider.scss +117 -132
- package/src/scss/form-elements/_textarea.scss +68 -54
- package/src/scss/form-elements/_toggle.scss +127 -140
- package/src/scss/layout/_footer.scss +172 -171
- package/src/scss/layout/_grid.scss +268 -302
- package/src/scss/layout/_header.scss +426 -427
- package/src/scss/layout/_home.scss +28 -27
- package/src/scss/layout/_main.scss +275 -238
- package/src/scss/layout/_page-header.scss +38 -36
- package/src/scss/layout/_section.scss +150 -124
- package/src/scss/main.scss +1 -1
- package/src/scss/utilities/_accessibility.scss +46 -45
- package/src/scss/utilities/_aspect.scss +22 -20
- package/src/scss/utilities/_corner.scss +23 -5
- package/src/scss/utilities/_display.scss +76 -70
- package/src/scss/utilities/_elevation.scss +13 -11
- package/src/scss/utilities/_flex.scss +83 -85
- package/src/scss/utilities/_reveal.scss +40 -63
- package/src/scss/utilities/_spacing.scss +63 -64
- package/src/scss/utilities/_text.scss +139 -141
- package/src/scss/utilities/_touch-targets.scss +130 -147
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<button
|
|
19
19
|
type="button"
|
|
20
20
|
class="mw-btn-mini mw-btn-mini-danger mw-alert-close"
|
|
21
|
-
|
|
21
|
+
aria-label="Dismiss System Update"
|
|
22
22
|
>
|
|
23
23
|
<i class="fas fa-times"></i>
|
|
24
24
|
</button>
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<button
|
|
37
37
|
type="button"
|
|
38
38
|
class="mw-btn-mini mw-btn-mini-danger mw-alert-close"
|
|
39
|
-
|
|
39
|
+
aria-label="Dismiss Notification"
|
|
40
40
|
>
|
|
41
41
|
<i class="fas fa-times"></i>
|
|
42
42
|
</button>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<button
|
|
55
55
|
type="button"
|
|
56
56
|
class="mw-btn-mini mw-btn-mini-danger mw-alert-close"
|
|
57
|
-
|
|
57
|
+
aria-label="Dismiss Profile Updated"
|
|
58
58
|
>
|
|
59
59
|
<i class="fas fa-times"></i>
|
|
60
60
|
</button>
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
<button
|
|
76
76
|
type="button"
|
|
77
77
|
class="mw-btn-mini mw-btn-mini-danger mw-alert-close"
|
|
78
|
-
|
|
78
|
+
aria-label="Dismiss Storage Low"
|
|
79
79
|
>
|
|
80
80
|
<i class="fas fa-times"></i>
|
|
81
81
|
</button>
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
<button
|
|
97
97
|
type="button"
|
|
98
98
|
class="mw-btn-mini mw-btn-mini-danger mw-alert-close"
|
|
99
|
-
|
|
99
|
+
aria-label="Dismiss Connection Failed"
|
|
100
100
|
>
|
|
101
101
|
<i class="fas fa-times"></i>
|
|
102
102
|
</button>
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
<button
|
|
118
118
|
type="button"
|
|
119
119
|
class="mw-btn-mini mw-btn-mini-danger mw-alert-close"
|
|
120
|
-
|
|
120
|
+
aria-label="Dismiss Did you know?"
|
|
121
121
|
>
|
|
122
122
|
<i class="fas fa-times"></i>
|
|
123
123
|
</button>
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
<div class="mw-grid-1 mw-gap-6">
|
|
14
14
|
<div>
|
|
15
|
-
<
|
|
15
|
+
<h4 class="mw-text-medium mw-mb-2">
|
|
16
16
|
Default (primary) with highlight pill - over content, showing the 75%
|
|
17
17
|
surface and the blur
|
|
18
|
-
</
|
|
18
|
+
</h4>
|
|
19
19
|
<div
|
|
20
20
|
style="
|
|
21
21
|
background: url('images/slider-mountains.svg') center / cover;
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
34
|
<div>
|
|
35
|
-
<
|
|
35
|
+
<h4 class="mw-text-medium mw-mb-2">Secondary</h4>
|
|
36
36
|
<aside
|
|
37
37
|
class="mw-announcement mw-announcement-secondary mw-announcement-static"
|
|
38
38
|
>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
</div>
|
|
45
45
|
|
|
46
46
|
<div>
|
|
47
|
-
<
|
|
47
|
+
<h4 class="mw-text-medium mw-mb-2">Warning, without a link</h4>
|
|
48
48
|
<aside
|
|
49
49
|
class="mw-announcement mw-announcement-warning mw-announcement-static"
|
|
50
50
|
>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
</div>
|
|
56
56
|
|
|
57
57
|
<div>
|
|
58
|
-
<
|
|
58
|
+
<h4 class="mw-text-medium mw-mb-2">Danger</h4>
|
|
59
59
|
<aside
|
|
60
60
|
class="mw-announcement mw-announcement-danger mw-announcement-static"
|
|
61
61
|
>
|
|
@@ -11,19 +11,39 @@
|
|
|
11
11
|
<div class="mw-card mw-card-simple">
|
|
12
12
|
<div class="mw-grid-stack-center">
|
|
13
13
|
<div class="mw-avatar mw-avatar-xs">
|
|
14
|
-
<img
|
|
14
|
+
<img
|
|
15
|
+
src="https://i.pravatar.cc/150?img=1"
|
|
16
|
+
alt="Avatar"
|
|
17
|
+
loading="lazy"
|
|
18
|
+
/>
|
|
15
19
|
</div>
|
|
16
20
|
<div class="mw-avatar mw-avatar-sm">
|
|
17
|
-
<img
|
|
21
|
+
<img
|
|
22
|
+
src="https://i.pravatar.cc/150?img=2"
|
|
23
|
+
alt="Avatar"
|
|
24
|
+
loading="lazy"
|
|
25
|
+
/>
|
|
18
26
|
</div>
|
|
19
27
|
<div class="mw-avatar">
|
|
20
|
-
<img
|
|
28
|
+
<img
|
|
29
|
+
src="https://i.pravatar.cc/150?img=3"
|
|
30
|
+
alt="Avatar"
|
|
31
|
+
loading="lazy"
|
|
32
|
+
/>
|
|
21
33
|
</div>
|
|
22
34
|
<div class="mw-avatar mw-avatar-lg">
|
|
23
|
-
<img
|
|
35
|
+
<img
|
|
36
|
+
src="https://i.pravatar.cc/150?img=4"
|
|
37
|
+
alt="Avatar"
|
|
38
|
+
loading="lazy"
|
|
39
|
+
/>
|
|
24
40
|
</div>
|
|
25
41
|
<div class="mw-avatar mw-avatar-xl">
|
|
26
|
-
<img
|
|
42
|
+
<img
|
|
43
|
+
src="https://i.pravatar.cc/150?img=5"
|
|
44
|
+
alt="Avatar"
|
|
45
|
+
loading="lazy"
|
|
46
|
+
/>
|
|
27
47
|
</div>
|
|
28
48
|
</div>
|
|
29
49
|
</div>
|
|
@@ -35,37 +55,69 @@
|
|
|
35
55
|
<h4 class="mw-mb-2">Avatar Shapes</h4>
|
|
36
56
|
<div>
|
|
37
57
|
<div class="mw-avatar">
|
|
38
|
-
<img
|
|
58
|
+
<img
|
|
59
|
+
src="https://i.pravatar.cc/150?img=6"
|
|
60
|
+
alt="Avatar"
|
|
61
|
+
loading="lazy"
|
|
62
|
+
/>
|
|
39
63
|
</div>
|
|
40
64
|
<div class="mw-avatar mw-avatar-square">
|
|
41
|
-
<img
|
|
65
|
+
<img
|
|
66
|
+
src="https://i.pravatar.cc/150?img=7"
|
|
67
|
+
alt="Avatar"
|
|
68
|
+
loading="lazy"
|
|
69
|
+
/>
|
|
42
70
|
</div>
|
|
43
71
|
</div>
|
|
44
72
|
|
|
45
73
|
<h4 class="mw-mb-2 mw-mt-4">Avatar Colors</h4>
|
|
46
74
|
<div>
|
|
47
75
|
<div class="mw-avatar mw-avatar-primary">
|
|
48
|
-
<img
|
|
76
|
+
<img
|
|
77
|
+
src="https://i.pravatar.cc/150?img=9"
|
|
78
|
+
alt="Avatar"
|
|
79
|
+
loading="lazy"
|
|
80
|
+
/>
|
|
49
81
|
</div>
|
|
50
82
|
<div class="mw-avatar mw-avatar-secondary">
|
|
51
|
-
<img
|
|
83
|
+
<img
|
|
84
|
+
src="https://i.pravatar.cc/150?img=10"
|
|
85
|
+
alt="Avatar"
|
|
86
|
+
loading="lazy"
|
|
87
|
+
/>
|
|
52
88
|
</div>
|
|
53
89
|
</div>
|
|
54
90
|
<div>
|
|
55
91
|
<div class="mw-avatar mw-avatar-success">
|
|
56
|
-
<img
|
|
92
|
+
<img
|
|
93
|
+
src="https://i.pravatar.cc/150?img=11"
|
|
94
|
+
alt="Avatar"
|
|
95
|
+
loading="lazy"
|
|
96
|
+
/>
|
|
57
97
|
</div>
|
|
58
98
|
|
|
59
99
|
<div class="mw-avatar mw-avatar-warning">
|
|
60
|
-
<img
|
|
100
|
+
<img
|
|
101
|
+
src="https://i.pravatar.cc/150?img=12"
|
|
102
|
+
alt="Avatar"
|
|
103
|
+
loading="lazy"
|
|
104
|
+
/>
|
|
61
105
|
</div>
|
|
62
106
|
|
|
63
107
|
<div class="mw-avatar mw-avatar-danger">
|
|
64
|
-
<img
|
|
108
|
+
<img
|
|
109
|
+
src="https://i.pravatar.cc/150?img=13"
|
|
110
|
+
alt="Avatar"
|
|
111
|
+
loading="lazy"
|
|
112
|
+
/>
|
|
65
113
|
</div>
|
|
66
114
|
|
|
67
115
|
<div class="mw-avatar">
|
|
68
|
-
<img
|
|
116
|
+
<img
|
|
117
|
+
src="https://i.pravatar.cc/150?img=14"
|
|
118
|
+
alt="Avatar"
|
|
119
|
+
loading="lazy"
|
|
120
|
+
/>
|
|
69
121
|
</div>
|
|
70
122
|
</div>
|
|
71
123
|
|
|
@@ -94,16 +146,32 @@
|
|
|
94
146
|
<h4 class="mw-mb-2 mw-mt-4">Avatar Group</h4>
|
|
95
147
|
<div class="mw-avatar-group mw-mt-3 mw-mb-5">
|
|
96
148
|
<div class="mw-avatar mw-avatar-sm">
|
|
97
|
-
<img
|
|
149
|
+
<img
|
|
150
|
+
src="https://i.pravatar.cc/150?img=19"
|
|
151
|
+
alt="Avatar"
|
|
152
|
+
loading="lazy"
|
|
153
|
+
/>
|
|
98
154
|
</div>
|
|
99
155
|
<div class="mw-avatar mw-avatar-sm">
|
|
100
|
-
<img
|
|
156
|
+
<img
|
|
157
|
+
src="https://i.pravatar.cc/150?img=20"
|
|
158
|
+
alt="Avatar"
|
|
159
|
+
loading="lazy"
|
|
160
|
+
/>
|
|
101
161
|
</div>
|
|
102
162
|
<div class="mw-avatar mw-avatar-sm">
|
|
103
|
-
<img
|
|
163
|
+
<img
|
|
164
|
+
src="https://i.pravatar.cc/150?img=21"
|
|
165
|
+
alt="Avatar"
|
|
166
|
+
loading="lazy"
|
|
167
|
+
/>
|
|
104
168
|
</div>
|
|
105
169
|
<div class="mw-avatar mw-avatar-sm">
|
|
106
|
-
<img
|
|
170
|
+
<img
|
|
171
|
+
src="https://i.pravatar.cc/150?img=22"
|
|
172
|
+
alt="Avatar"
|
|
173
|
+
loading="lazy"
|
|
174
|
+
/>
|
|
107
175
|
</div>
|
|
108
176
|
</div>
|
|
109
177
|
</div>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<h3 class="mw-card-title mw-mb-4">Counts</h3>
|
|
13
13
|
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
14
14
|
<div>
|
|
15
|
-
<
|
|
15
|
+
<h4 class="mw-text-medium mw-mb-2">Colors</h4>
|
|
16
16
|
<div class="mw-d-flex mw-items-center mw-gap-3 mw-flex-wrap">
|
|
17
17
|
<span class="mw-badge">3</span>
|
|
18
18
|
<span class="mw-badge mw-badge-secondary">8</span>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
</div>
|
|
26
26
|
</div>
|
|
27
27
|
<div>
|
|
28
|
-
<
|
|
28
|
+
<h4 class="mw-text-medium mw-mb-2">Sizes</h4>
|
|
29
29
|
<div class="mw-d-flex mw-items-center mw-gap-3">
|
|
30
30
|
<span class="mw-badge mw-badge-sm">7</span>
|
|
31
31
|
<span class="mw-badge">7</span>
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
</p>
|
|
40
40
|
</div>
|
|
41
41
|
<div>
|
|
42
|
-
<
|
|
42
|
+
<h4 class="mw-text-medium mw-mb-2">Anchored to something</h4>
|
|
43
43
|
<div class="mw-d-flex mw-items-center mw-gap-6">
|
|
44
44
|
<span class="mw-badge-anchor">
|
|
45
45
|
<button class="mw-btn mw-btn-outline">
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
<h3 class="mw-card-title mw-mb-4">Status</h3>
|
|
69
69
|
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
70
70
|
<div>
|
|
71
|
-
<
|
|
71
|
+
<h4 class="mw-text-medium mw-mb-2">Dot with a label</h4>
|
|
72
72
|
<div class="mw-grid-1 mw-gap-3">
|
|
73
73
|
<span class="mw-badge-status mw-badge-status-success">
|
|
74
74
|
<span class="mw-badge-dot"></span> Online
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
</div>
|
|
86
86
|
</div>
|
|
87
87
|
<div>
|
|
88
|
-
<
|
|
88
|
+
<h4 class="mw-text-medium mw-mb-2">Live</h4>
|
|
89
89
|
<p class="mw-text-muted mw-text-sm mw-mb-0">
|
|
90
90
|
<code>mw-badge-pulse</code> adds a ring that grows out and fades. The
|
|
91
91
|
dot underneath never moves, so a column of them in a table stays
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
</p>
|
|
95
95
|
</div>
|
|
96
96
|
<div>
|
|
97
|
-
<
|
|
97
|
+
<h4 class="mw-text-medium mw-mb-2">In a row</h4>
|
|
98
98
|
<div class="mw-row-split mw-row-split-center">
|
|
99
99
|
<span>Deployment #4812</span>
|
|
100
100
|
<span class="mw-badge-status mw-badge-status-success">
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
<div class="mw-blog-post-meta-item">
|
|
23
23
|
<i class="far fa-user"></i>
|
|
24
|
-
<span>By
|
|
24
|
+
<span>By Nadia Kern</span>
|
|
25
25
|
</div>
|
|
26
26
|
<div class="mw-blog-post-meta-item">
|
|
27
27
|
<i class="far fa-clock"></i>
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
src="https://images.unsplash.com/photo-1603969072881-b0fc7f3d77d7?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
35
35
|
alt="UI/UX design"
|
|
36
36
|
class="mw-blog-post-featured-image"
|
|
37
|
+
loading="lazy"
|
|
37
38
|
/>
|
|
38
39
|
|
|
39
40
|
<div class="mw-blog-post-content-markdown">
|
|
@@ -58,16 +59,15 @@
|
|
|
58
59
|
</p>
|
|
59
60
|
|
|
60
61
|
<blockquote>
|
|
61
|
-
"AI
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
"AI did not replace us. It took the boilerplate, and left the part where
|
|
63
|
+
you decide what the thing should do." - Elena Vega, Lead Developer at
|
|
64
|
+
TechFront
|
|
64
65
|
</blockquote>
|
|
65
66
|
|
|
66
67
|
<h3>Serverless Architecture: Beyond the Basics</h3>
|
|
67
68
|
<p>
|
|
68
|
-
Serverless
|
|
69
|
-
|
|
70
|
-
generation of serverless platforms offers:
|
|
69
|
+
Serverless has grown past single functions. Whole applications now run on
|
|
70
|
+
it, and the current generation of platforms offers:
|
|
71
71
|
</p>
|
|
72
72
|
|
|
73
73
|
<ul>
|
|
@@ -136,12 +136,11 @@ export async function handler(event, context) {
|
|
|
136
136
|
</li>
|
|
137
137
|
</ul>
|
|
138
138
|
|
|
139
|
-
<h3>
|
|
139
|
+
<h3>What this means for the next project</h3>
|
|
140
140
|
<p>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
efficient, and maintainable applications.
|
|
141
|
+
None of this is exotic any more. The tooling ships with the framework, the
|
|
142
|
+
runtimes are on every major host, and the cost of trying one of them on a
|
|
143
|
+
real feature is an afternoon.
|
|
145
144
|
</p>
|
|
146
145
|
</div>
|
|
147
146
|
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
<h3 class="mw-mb-4">Ghost, Icon & Block</h3>
|
|
41
41
|
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
42
42
|
<div>
|
|
43
|
-
<
|
|
43
|
+
<h4 class="mw-text-medium mw-mb-2">Ghost</h4>
|
|
44
44
|
<div class="mw-d-flex mw-flex-wrap mw-items-center mw-gap-3">
|
|
45
45
|
<button type="button" class="mw-btn mw-btn-ghost">Rename</button>
|
|
46
46
|
<button type="button" class="mw-btn mw-btn-ghost mw-active">
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
</p>
|
|
60
60
|
</div>
|
|
61
61
|
<div>
|
|
62
|
-
<
|
|
62
|
+
<h4 class="mw-text-medium mw-mb-2">Icon only</h4>
|
|
63
63
|
<div class="mw-d-flex mw-flex-wrap mw-items-center mw-gap-3">
|
|
64
64
|
<button
|
|
65
65
|
type="button"
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
</p>
|
|
104
104
|
</div>
|
|
105
105
|
<div>
|
|
106
|
-
<
|
|
106
|
+
<h4 class="mw-text-medium mw-mb-2">Block</h4>
|
|
107
107
|
<button type="button" class="mw-btn mw-btn-primary mw-btn-block">
|
|
108
108
|
Sign in
|
|
109
109
|
</button>
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
<img
|
|
13
13
|
src="https://images.unsplash.com/photo-1550745165-9bc0b252726f?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
14
14
|
alt="Tech Image"
|
|
15
|
+
loading="lazy"
|
|
15
16
|
/>
|
|
16
17
|
</div>
|
|
17
18
|
<div class="mw-card-body">
|
|
@@ -120,7 +121,11 @@
|
|
|
120
121
|
<div class="mw-card-body">
|
|
121
122
|
<h3 class="mw-card-title">
|
|
122
123
|
<span class="mw-card-title-icon mw-card-title-icon-lg">
|
|
123
|
-
<img
|
|
124
|
+
<img
|
|
125
|
+
src="https://m1well.com/images/header_logo.svg"
|
|
126
|
+
alt=""
|
|
127
|
+
loading="lazy"
|
|
128
|
+
/>
|
|
124
129
|
</span>
|
|
125
130
|
A logo instead of an icon
|
|
126
131
|
</h3>
|
|
@@ -141,7 +146,7 @@
|
|
|
141
146
|
<div class="mw-card-stack-icon">
|
|
142
147
|
<i class="fas fa-laptop-code"></i>
|
|
143
148
|
</div>
|
|
144
|
-
<
|
|
149
|
+
<h4 class="mw-card-stack-title">Frontend</h4>
|
|
145
150
|
</div>
|
|
146
151
|
<div class="mw-card-stack-body">
|
|
147
152
|
<div class="mw-tags">
|
|
@@ -161,7 +166,7 @@
|
|
|
161
166
|
<div class="mw-card-stack-icon">
|
|
162
167
|
<i class="fas fa-server"></i>
|
|
163
168
|
</div>
|
|
164
|
-
<
|
|
169
|
+
<h4 class="mw-card-stack-title">Backend</h4>
|
|
165
170
|
</div>
|
|
166
171
|
<div class="mw-card-stack-body">
|
|
167
172
|
<div class="mw-tags">
|
|
@@ -181,7 +186,7 @@
|
|
|
181
186
|
<div class="mw-card-stack-icon">
|
|
182
187
|
<i class="fas fa-database"></i>
|
|
183
188
|
</div>
|
|
184
|
-
<
|
|
189
|
+
<h4 class="mw-card-stack-title">Data Storage</h4>
|
|
185
190
|
</div>
|
|
186
191
|
<div class="mw-card-stack-body">
|
|
187
192
|
<div class="mw-tags">
|
|
@@ -201,7 +206,7 @@
|
|
|
201
206
|
<div class="mw-card-stack-icon">
|
|
202
207
|
<i class="fas fa-cloud"></i>
|
|
203
208
|
</div>
|
|
204
|
-
<
|
|
209
|
+
<h4 class="mw-card-stack-title">DevOps & Cloud</h4>
|
|
205
210
|
</div>
|
|
206
211
|
<div class="mw-card-stack-body">
|
|
207
212
|
<div class="mw-tags">
|
|
@@ -221,7 +226,7 @@
|
|
|
221
226
|
<div class="mw-card-stack-icon">
|
|
222
227
|
<i class="fas fa-vial"></i>
|
|
223
228
|
</div>
|
|
224
|
-
<
|
|
229
|
+
<h4 class="mw-card-stack-title">Testing & Quality</h4>
|
|
225
230
|
</div>
|
|
226
231
|
<div class="mw-card-stack-body">
|
|
227
232
|
<p class="mw-card-stack-text">
|
|
@@ -250,6 +255,7 @@
|
|
|
250
255
|
<img
|
|
251
256
|
src="https://images.unsplash.com/photo-1493246507139-91e8fad9978e?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
252
257
|
alt="Mountain Scenery Portrait"
|
|
258
|
+
loading="lazy"
|
|
253
259
|
/>
|
|
254
260
|
</div>
|
|
255
261
|
<div class="mw-card-body">
|
|
@@ -274,6 +280,7 @@
|
|
|
274
280
|
<img
|
|
275
281
|
src="https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
276
282
|
alt="Team Member Portrait"
|
|
283
|
+
loading="lazy"
|
|
277
284
|
/>
|
|
278
285
|
</div>
|
|
279
286
|
<div class="mw-card-body">
|
|
@@ -304,6 +311,7 @@
|
|
|
304
311
|
<img
|
|
305
312
|
src="https://images.unsplash.com/photo-1544005313-94ddf0286df2?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
306
313
|
alt="Portrait Style Image"
|
|
314
|
+
loading="lazy"
|
|
307
315
|
/>
|
|
308
316
|
</div>
|
|
309
317
|
<div class="mw-card-body">
|
|
@@ -330,6 +338,7 @@
|
|
|
330
338
|
<img
|
|
331
339
|
src="https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
332
340
|
alt="Portrait Style Image"
|
|
341
|
+
loading="lazy"
|
|
333
342
|
/>
|
|
334
343
|
</div>
|
|
335
344
|
<div class="mw-card-body">
|
|
@@ -418,10 +427,14 @@
|
|
|
418
427
|
<hr class="mw-card-title-divider" />
|
|
419
428
|
<div class="mw-d-flex mw-items-center mw-gap-3 mw-mb-3">
|
|
420
429
|
<div class="mw-avatar">
|
|
421
|
-
<img
|
|
430
|
+
<img
|
|
431
|
+
src="https://i.pravatar.cc/150?img=32"
|
|
432
|
+
alt="User Avatar"
|
|
433
|
+
loading="lazy"
|
|
434
|
+
/>
|
|
422
435
|
</div>
|
|
423
436
|
<div class="mw-flex-grow-1 mw-ml-1">
|
|
424
|
-
<p class="mw-mb-0"><strong>
|
|
437
|
+
<p class="mw-mb-0"><strong>Nadia Kern</strong></p>
|
|
425
438
|
<p class="mw-text-muted mw-mb-0">Product Designer</p>
|
|
426
439
|
</div>
|
|
427
440
|
</div>
|
|
@@ -479,7 +492,7 @@
|
|
|
479
492
|
<h3 class="mw-card-title">Latest Gadget</h3>
|
|
480
493
|
<hr class="mw-card-title-divider" />
|
|
481
494
|
<p class="mw-card-text">
|
|
482
|
-
|
|
495
|
+
The one we spent two years on. It is finally ready.
|
|
483
496
|
</p>
|
|
484
497
|
<div class="mw-card-footer">
|
|
485
498
|
<button type="button" class="mw-btn mw-btn-primary">Explore</button>
|
|
@@ -493,6 +506,7 @@
|
|
|
493
506
|
<img
|
|
494
507
|
src="https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
495
508
|
alt="Profile"
|
|
509
|
+
loading="lazy"
|
|
496
510
|
/>
|
|
497
511
|
</div>
|
|
498
512
|
<div class="mw-card-body">
|
|
@@ -513,6 +527,7 @@
|
|
|
513
527
|
<img
|
|
514
528
|
src="https://images.unsplash.com/photo-1512436991641-6745cdb1723f?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
515
529
|
alt="Sale"
|
|
530
|
+
loading="lazy"
|
|
516
531
|
/>
|
|
517
532
|
</div>
|
|
518
533
|
<div class="mw-card-body">
|
|
@@ -558,6 +573,7 @@
|
|
|
558
573
|
<img
|
|
559
574
|
src="https://images.unsplash.com/photo-1504674900247-0877df9cc836?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
560
575
|
alt="Product Spotlight"
|
|
576
|
+
loading="lazy"
|
|
561
577
|
/>
|
|
562
578
|
</div>
|
|
563
579
|
<div class="mw-card-body">
|
|
@@ -596,6 +612,7 @@
|
|
|
596
612
|
<img
|
|
597
613
|
src="https://images.unsplash.com/photo-1519389950473-47ba0277781c?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
|
|
598
614
|
alt="Dashboard Beta"
|
|
615
|
+
loading="lazy"
|
|
599
616
|
/>
|
|
600
617
|
</div>
|
|
601
618
|
<div class="mw-card-body">
|
|
@@ -92,7 +92,7 @@ function Counter() {
|
|
|
92
92
|
<strong>does not include a built-in JavaScript library</strong>
|
|
93
93
|
for automatically parsing code and applying these highlighting classes.
|
|
94
94
|
</p>
|
|
95
|
-
<
|
|
95
|
+
<h4 class="mw-mt-4 mw-mb-2">Option 1: Manual Highlighting</h4>
|
|
96
96
|
<p>
|
|
97
97
|
For simple snippets, you can manually wrap parts of your code with
|
|
98
98
|
<code><span></code> tags using the provided
|
|
@@ -111,9 +111,9 @@ function Counter() {
|
|
|
111
111
|
</div>
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
|
-
<
|
|
114
|
+
<h4 class="mw-mt-4 mw-mb-2">
|
|
115
115
|
Option 2: Using a Syntax Highlighting Library
|
|
116
|
-
</
|
|
116
|
+
</h4>
|
|
117
117
|
<p>
|
|
118
118
|
For automatic highlighting of various languages, integrate a dedicated
|
|
119
119
|
JavaScript library like
|
|
@@ -141,8 +141,8 @@ function Counter() {
|
|
|
141
141
|
</li>
|
|
142
142
|
</ol>
|
|
143
143
|
<p>
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
Use an external library for reliable, multi-language syntax
|
|
145
|
+
highlighting.
|
|
146
146
|
</p>
|
|
147
147
|
</div>
|
|
148
148
|
</div>
|
|
@@ -7,21 +7,22 @@
|
|
|
7
7
|
src="images/slider-mountains.svg"
|
|
8
8
|
class="mw-image-slider-base-image"
|
|
9
9
|
alt="Mountain Landscape"
|
|
10
|
+
loading="lazy"
|
|
10
11
|
/>
|
|
11
12
|
</div>
|
|
12
13
|
|
|
13
14
|
<div class="mw-image-slider-overlay">
|
|
14
15
|
<div class="mw-image-slider-overlay-image" data-index="1">
|
|
15
|
-
<img src="images/slider-lake.svg" alt="Lake" />
|
|
16
|
+
<img src="images/slider-lake.svg" alt="Lake" loading="lazy" />
|
|
16
17
|
</div>
|
|
17
18
|
<div class="mw-image-slider-overlay-image" data-index="2">
|
|
18
|
-
<img src="images/slider-forest.svg" alt="Forest" />
|
|
19
|
+
<img src="images/slider-forest.svg" alt="Forest" loading="lazy" />
|
|
19
20
|
</div>
|
|
20
21
|
<div class="mw-image-slider-overlay-image" data-index="3">
|
|
21
|
-
<img src="images/slider-field.svg" alt="Field" />
|
|
22
|
+
<img src="images/slider-field.svg" alt="Field" loading="lazy" />
|
|
22
23
|
</div>
|
|
23
24
|
<div class="mw-image-slider-overlay-image" data-index="4">
|
|
24
|
-
<img src="images/slider-trees.svg" alt="Trees" />
|
|
25
|
+
<img src="images/slider-trees.svg" alt="Trees" loading="lazy" />
|
|
25
26
|
</div>
|
|
26
27
|
</div>
|
|
27
28
|
|
|
@@ -9,25 +9,25 @@
|
|
|
9
9
|
<h3 class="mw-card-title mw-mb-4">Horizontal</h3>
|
|
10
10
|
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
11
11
|
<div>
|
|
12
|
-
<
|
|
12
|
+
<h4 class="mw-text-medium mw-mb-2">Default</h4>
|
|
13
13
|
<p class="mw-text-muted">Content above</p>
|
|
14
14
|
<hr class="mw-divider" />
|
|
15
15
|
<p class="mw-text-muted">Content below</p>
|
|
16
16
|
</div>
|
|
17
17
|
<div>
|
|
18
|
-
<
|
|
18
|
+
<h4 class="mw-text-medium mw-mb-2">Thick</h4>
|
|
19
19
|
<hr class="mw-divider mw-divider-thick" />
|
|
20
20
|
</div>
|
|
21
21
|
<div>
|
|
22
|
-
<
|
|
22
|
+
<h4 class="mw-text-medium mw-mb-2">Dashed</h4>
|
|
23
23
|
<hr class="mw-divider mw-divider-dashed" />
|
|
24
24
|
</div>
|
|
25
25
|
<div>
|
|
26
|
-
<
|
|
26
|
+
<h4 class="mw-text-medium mw-mb-2">Primary color</h4>
|
|
27
27
|
<hr class="mw-divider mw-divider-primary" />
|
|
28
28
|
</div>
|
|
29
29
|
<div>
|
|
30
|
-
<
|
|
30
|
+
<h4 class="mw-text-medium mw-mb-2">Secondary color</h4>
|
|
31
31
|
<hr class="mw-divider mw-divider-secondary" />
|
|
32
32
|
</div>
|
|
33
33
|
</div>
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<h3 class="mw-card-title mw-mb-4">With Text & Vertical</h3>
|
|
38
38
|
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
39
39
|
<div>
|
|
40
|
-
<
|
|
40
|
+
<h4 class="mw-text-medium mw-mb-2">With label</h4>
|
|
41
41
|
<div class="mw-divider-text">
|
|
42
42
|
<span>or</span>
|
|
43
43
|
</div>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
56
|
<div>
|
|
57
|
-
<
|
|
57
|
+
<h4 class="mw-text-medium mw-mb-2">Vertical (inside flex row)</h4>
|
|
58
58
|
<div
|
|
59
59
|
style="display: flex; align-items: center; gap: 1rem; height: 70px"
|
|
60
60
|
>
|