maverick-wave 5.30.0 → 5.32.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 (147) hide show
  1. package/README.md +2 -2
  2. package/maverick-wave.min.css +2 -2
  3. package/package.json +8 -2
  4. package/src/scss/abstracts/_variables.scss +2 -0
  5. package/src/scss/components/_modals.scss +23 -9
  6. package/src/scss/components/_testimonial.scss +2 -0
  7. package/src/scss/layout/_home.scss +46 -0
  8. package/src/scss/layout/_main.scss +20 -0
  9. package/src/scss/layout/_parallax.scss +2 -2
  10. package/src/scss/main-lean.scss +8 -3
  11. package/.claude/settings.local.json +0 -43
  12. package/.claude/skills/mw-maverick-wave/SKILL.md +0 -532
  13. package/.claude/skills/mw-maverick-wave/examples/angular-form.md +0 -279
  14. package/.claude/skills/mw-maverick-wave/examples/angular-list-page.md +0 -309
  15. package/.claude/skills/mw-maverick-wave/examples/angular-services.md +0 -538
  16. package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +0 -530
  17. package/.claude/skills/mw-maverick-wave/references/components.md +0 -2170
  18. package/.claude/skills/mw-maverick-wave/references/forms.md +0 -358
  19. package/.claude/skills/mw-maverick-wave/references/javascript.md +0 -164
  20. package/.claude/skills/mw-maverick-wave/references/layout.md +0 -764
  21. package/.claude/skills/mw-maverick-wave/references/theming.md +0 -530
  22. package/.github/workflows/ci.yml +0 -41
  23. package/.idea/codeStyles/Project.xml +0 -59
  24. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  25. package/.idea/maverick-wave.iml +0 -12
  26. package/.idea/modules.xml +0 -8
  27. package/.idea/prettier.xml +0 -6
  28. package/.idea/vcs.xml +0 -6
  29. package/.prettierignore +0 -8
  30. package/.prettierrc.json +0 -7
  31. package/CHANGELOG.md +0 -956
  32. package/CLAUDE.md +0 -60
  33. package/gulpfile.js +0 -167
  34. package/index.html +0 -1730
  35. package/release.sh +0 -31
  36. package/scripts/verify.js +0 -252
  37. package/src/assets/favicon/apple-touch-icon.png +0 -0
  38. package/src/assets/favicon/favicon-96x96.png +0 -0
  39. package/src/assets/favicon/favicon.svg +0 -1
  40. package/src/assets/favicon/site.webmanifest +0 -37
  41. package/src/assets/favicon/web-app-manifest-192x192.png +0 -0
  42. package/src/assets/favicon/web-app-manifest-512x512.png +0 -0
  43. package/src/assets/favicon.ico +0 -0
  44. package/src/assets/header-logo.svg +0 -24
  45. package/src/assets/images/gallery-city.svg +0 -49
  46. package/src/assets/images/gallery-desert.svg +0 -25
  47. package/src/assets/images/gallery-forest.svg +0 -46
  48. package/src/assets/images/gallery-lake.svg +0 -26
  49. package/src/assets/images/gallery-mountain.svg +0 -19
  50. package/src/assets/images/gallery-ocean.svg +0 -26
  51. package/src/assets/images/gallery-oldtown.svg +0 -41
  52. package/src/assets/images/gallery-snow.svg +0 -39
  53. package/src/assets/images/photo-balloon.svg +0 -35
  54. package/src/assets/images/photo-forest-path.svg +0 -31
  55. package/src/assets/images/photo-lighthouse.svg +0 -42
  56. package/src/assets/images/photo-palm.svg +0 -27
  57. package/src/assets/images/photo-peak.svg +0 -27
  58. package/src/assets/images/photo-tower.svg +0 -34
  59. package/src/assets/images/photo-waterfall.svg +0 -32
  60. package/src/assets/images/slider-field.svg +0 -124
  61. package/src/assets/images/slider-forest.svg +0 -33
  62. package/src/assets/images/slider-lake.svg +0 -35
  63. package/src/assets/images/slider-mountains.svg +0 -29
  64. package/src/assets/images/slider-trees.svg +0 -41
  65. package/src/assets/images/story-aurora.svg +0 -36
  66. package/src/assets/images/story-beach.svg +0 -34
  67. package/src/assets/images/story-stars.svg +0 -35
  68. package/src/assets/images/tile-analytics.svg +0 -22
  69. package/src/assets/images/tile-cloud.svg +0 -19
  70. package/src/assets/images/tile-ecommerce.svg +0 -14
  71. package/src/assets/images/tile-enterprise.svg +0 -22
  72. package/src/assets/images/tile-marketing.svg +0 -16
  73. package/src/assets/media/demo-chime.wav +0 -0
  74. package/src/assets/media/story-sunrise.jpg +0 -0
  75. package/src/assets/media/story-sunrise.mp4 +0 -0
  76. package/src/partials/accordions-container.html +0 -179
  77. package/src/partials/alerts-container.html +0 -151
  78. package/src/partials/announcement-container.html +0 -67
  79. package/src/partials/avatars-container.html +0 -229
  80. package/src/partials/badges-container.html +0 -114
  81. package/src/partials/blog-posts-container.html +0 -158
  82. package/src/partials/breadcrumbs-container.html +0 -126
  83. package/src/partials/button-bar-container.html +0 -175
  84. package/src/partials/buttons-container.html +0 -272
  85. package/src/partials/calendar-container.html +0 -203
  86. package/src/partials/cards-container.html +0 -727
  87. package/src/partials/code-container.html +0 -194
  88. package/src/partials/colors-container.html +0 -263
  89. package/src/partials/coming-soon-container.html +0 -10
  90. package/src/partials/contact-container.html +0 -85
  91. package/src/partials/content-slider-container.html +0 -36
  92. package/src/partials/divider-container.html +0 -70
  93. package/src/partials/documentation-container.html +0 -204
  94. package/src/partials/dropdown-container.html +0 -119
  95. package/src/partials/empty-state-container.html +0 -79
  96. package/src/partials/feed-container.html +0 -506
  97. package/src/partials/footer-container.html +0 -113
  98. package/src/partials/form-container.html +0 -262
  99. package/src/partials/form-elements-container.html +0 -616
  100. package/src/partials/form-field-container.html +0 -166
  101. package/src/partials/gallery-container.html +0 -62
  102. package/src/partials/get-started-container.html +0 -423
  103. package/src/partials/grid-container.html +0 -191
  104. package/src/partials/header-container.html +0 -69
  105. package/src/partials/header-utilities-container.html +0 -331
  106. package/src/partials/highlights-container.html +0 -71
  107. package/src/partials/history-container.html +0 -67
  108. package/src/partials/home-container.html +0 -31
  109. package/src/partials/html-lists-container.html +0 -63
  110. package/src/partials/info-container.html +0 -104
  111. package/src/partials/input-group-container.html +0 -299
  112. package/src/partials/item-lists-container.html +0 -368
  113. package/src/partials/kanban-container.html +0 -459
  114. package/src/partials/kbd-container.html +0 -63
  115. package/src/partials/leader-row-container.html +0 -139
  116. package/src/partials/login-container.html +0 -65
  117. package/src/partials/lunch-menu-container.html +0 -341
  118. package/src/partials/media-container.html +0 -27
  119. package/src/partials/meta-info-container.html +0 -21
  120. package/src/partials/modals-container.html +0 -199
  121. package/src/partials/mosaic-container.html +0 -173
  122. package/src/partials/page-header-container.html +0 -78
  123. package/src/partials/pagination-container.html +0 -64
  124. package/src/partials/palette-container.html +0 -480
  125. package/src/partials/panels-container.html +0 -126
  126. package/src/partials/parallax-container.html +0 -147
  127. package/src/partials/portrait-gallery-container.html +0 -175
  128. package/src/partials/preview-container.html +0 -136
  129. package/src/partials/pricing-container.html +0 -523
  130. package/src/partials/progress-container.html +0 -230
  131. package/src/partials/prose-container.html +0 -43
  132. package/src/partials/ratings-container.html +0 -104
  133. package/src/partials/section-head-container.html +0 -77
  134. package/src/partials/segmented-container.html +0 -66
  135. package/src/partials/skeleton-container.html +0 -87
  136. package/src/partials/spinners-container.html +0 -96
  137. package/src/partials/stepper-container.html +0 -111
  138. package/src/partials/stories-container.html +0 -182
  139. package/src/partials/tables-container.html +0 -309
  140. package/src/partials/tabs-container.html +0 -290
  141. package/src/partials/tags-container.html +0 -242
  142. package/src/partials/techstack-bucket-container.html +0 -187
  143. package/src/partials/testimonials-container.html +0 -88
  144. package/src/partials/tiles-container.html +0 -247
  145. package/src/partials/timelines-container.html +0 -196
  146. package/src/partials/typography-container.html +0 -74
  147. package/src/partials/utilities-container.html +0 -553
@@ -1,229 +0,0 @@
1
- <h3 class="mw-section-subtitle">Avatars</h3>
2
- <p class="mw-text-muted mw-text-measure">
3
- A picture or a pair of initials, in five sizes. The colour variants sit on the
4
- border, so they still read over a photo; on an initials avatar they fill the
5
- circle as well. Inside a group the overlap follows the avatar size.
6
- <code>mw-avatar-landscape</code> (3:2) and
7
- <code>mw-avatar-portrait</code> (9:16, 2:3 on <code>-lg</code>) are for a
8
- photo that is not square - meant for the two large sizes. Both run larger than
9
- the round step, and a landscape avatar shrinks to fit a narrow column.
10
- </p>
11
-
12
- <div class="mw-grid-2">
13
- <div>
14
- <h3 class="mw-mb-4">Avatar Sizes</h3>
15
- <div class="mw-card mw-card-simple">
16
- <div class="mw-grid-stack-center">
17
- <div class="mw-avatar mw-avatar-xs">
18
- <img
19
- src="https://i.pravatar.cc/150?img=1"
20
- alt="Avatar"
21
- loading="lazy"
22
- />
23
- </div>
24
- <div class="mw-avatar mw-avatar-sm">
25
- <img
26
- src="https://i.pravatar.cc/150?img=2"
27
- alt="Avatar"
28
- loading="lazy"
29
- />
30
- </div>
31
- <div class="mw-avatar">
32
- <img
33
- src="https://i.pravatar.cc/150?img=3"
34
- alt="Avatar"
35
- loading="lazy"
36
- />
37
- </div>
38
- <div class="mw-avatar mw-avatar-lg">
39
- <img
40
- src="https://i.pravatar.cc/150?img=4"
41
- alt="Avatar"
42
- loading="lazy"
43
- />
44
- </div>
45
- <div class="mw-avatar mw-avatar-xl">
46
- <img
47
- src="https://i.pravatar.cc/150?img=5"
48
- alt="Avatar"
49
- loading="lazy"
50
- />
51
- </div>
52
- </div>
53
- </div>
54
- </div>
55
-
56
- <div>
57
- <h3 class="mw-mb-4">Avatar Shapes & Colors & Group</h3>
58
- <div class="mw-card mw-card-simple">
59
- <h4 class="mw-mb-2">Avatar Shapes</h4>
60
- <div>
61
- <div class="mw-avatar">
62
- <img
63
- src="https://i.pravatar.cc/150?img=6"
64
- alt="Avatar"
65
- loading="lazy"
66
- />
67
- </div>
68
- <div class="mw-avatar mw-avatar-square">
69
- <img
70
- src="https://i.pravatar.cc/150?img=7"
71
- alt="Avatar"
72
- loading="lazy"
73
- />
74
- </div>
75
- </div>
76
-
77
- <h4 class="mw-mb-2 mw-mt-4">Avatar Colors</h4>
78
- <div>
79
- <div class="mw-avatar mw-avatar-primary">
80
- <img
81
- src="https://i.pravatar.cc/150?img=9"
82
- alt="Avatar"
83
- loading="lazy"
84
- />
85
- </div>
86
- <div class="mw-avatar mw-avatar-secondary">
87
- <img
88
- src="https://i.pravatar.cc/150?img=10"
89
- alt="Avatar"
90
- loading="lazy"
91
- />
92
- </div>
93
- </div>
94
- <div>
95
- <div class="mw-avatar mw-avatar-success">
96
- <img
97
- src="https://i.pravatar.cc/150?img=11"
98
- alt="Avatar"
99
- loading="lazy"
100
- />
101
- </div>
102
-
103
- <div class="mw-avatar mw-avatar-warning">
104
- <img
105
- src="https://i.pravatar.cc/150?img=12"
106
- alt="Avatar"
107
- loading="lazy"
108
- />
109
- </div>
110
-
111
- <div class="mw-avatar mw-avatar-danger">
112
- <img
113
- src="https://i.pravatar.cc/150?img=13"
114
- alt="Avatar"
115
- loading="lazy"
116
- />
117
- </div>
118
-
119
- <div class="mw-avatar">
120
- <img
121
- src="https://i.pravatar.cc/150?img=14"
122
- alt="Avatar"
123
- loading="lazy"
124
- />
125
- </div>
126
- </div>
127
-
128
- <h4 class="mw-mb-2 mw-mt-4">Avatar Initials</h4>
129
- <p class="mw-text-muted mw-text-sm">
130
- For users without a picture. The color variants tint the surface here
131
- instead of the border.
132
- </p>
133
- <div>
134
- <div class="mw-avatar mw-avatar-initials mw-avatar-xs">MW</div>
135
- <div class="mw-avatar mw-avatar-initials mw-avatar-sm">AB</div>
136
- <div class="mw-avatar mw-avatar-initials">CD</div>
137
- <div class="mw-avatar mw-avatar-initials mw-avatar-secondary">EF</div>
138
- </div>
139
- <div>
140
- <div class="mw-avatar mw-avatar-initials mw-avatar-success">GH</div>
141
- <div class="mw-avatar mw-avatar-initials mw-avatar-warning">IJ</div>
142
- <div class="mw-avatar mw-avatar-initials mw-avatar-danger">KL</div>
143
- <div
144
- class="mw-avatar mw-avatar-initials mw-avatar-info mw-avatar-square"
145
- >
146
- MN
147
- </div>
148
- </div>
149
-
150
- <h4 class="mw-mb-2 mw-mt-4">Avatar Group</h4>
151
- <div class="mw-avatar-group mw-mt-3 mw-mb-5">
152
- <div class="mw-avatar mw-avatar-sm">
153
- <img
154
- src="https://i.pravatar.cc/150?img=19"
155
- alt="Avatar"
156
- loading="lazy"
157
- />
158
- </div>
159
- <div class="mw-avatar mw-avatar-sm">
160
- <img
161
- src="https://i.pravatar.cc/150?img=20"
162
- alt="Avatar"
163
- loading="lazy"
164
- />
165
- </div>
166
- <div class="mw-avatar mw-avatar-sm">
167
- <img
168
- src="https://i.pravatar.cc/150?img=21"
169
- alt="Avatar"
170
- loading="lazy"
171
- />
172
- </div>
173
- <div class="mw-avatar mw-avatar-sm">
174
- <img
175
- src="https://i.pravatar.cc/150?img=22"
176
- alt="Avatar"
177
- loading="lazy"
178
- />
179
- </div>
180
- </div>
181
- </div>
182
- </div>
183
- </div>
184
-
185
- <div class="mw-grid-2 mw-grid-from-lg mw-mt-6">
186
- <div>
187
- <h3 class="mw-mb-4">Landscape</h3>
188
- <div class="mw-card mw-card-simple">
189
- <div class="mw-d-flex mw-flex-column mw-items-center mw-gap-6">
190
- <div class="mw-avatar mw-avatar-lg mw-avatar-landscape">
191
- <img
192
- src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&crop=faces&w=720&h=480&q=80"
193
- alt="Avatar"
194
- loading="lazy"
195
- />
196
- </div>
197
- <div class="mw-avatar mw-avatar-xl mw-avatar-landscape">
198
- <img
199
- src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&crop=faces&w=720&h=480&q=80"
200
- alt="Avatar"
201
- loading="lazy"
202
- />
203
- </div>
204
- </div>
205
- </div>
206
- </div>
207
-
208
- <div>
209
- <h3 class="mw-mb-4">Portrait</h3>
210
- <div class="mw-card mw-card-simple">
211
- <div class="mw-d-flex mw-flex-wrap mw-justify-center mw-items-end">
212
- <div class="mw-avatar mw-avatar-lg mw-avatar-portrait">
213
- <img
214
- src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&crop=faces&w=480&h=720&q=80"
215
- alt="Avatar"
216
- loading="lazy"
217
- />
218
- </div>
219
- <div class="mw-avatar mw-avatar-xl mw-avatar-portrait">
220
- <img
221
- src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?auto=format&fit=crop&crop=faces&w=450&h=800&q=80"
222
- alt="Avatar"
223
- loading="lazy"
224
- />
225
- </div>
226
- </div>
227
- </div>
228
- </div>
229
- </div>
@@ -1,114 +0,0 @@
1
- <h3 class="mw-section-subtitle">Badges</h3>
2
-
3
- <p class="mw-text-muted mw-text-measure">
4
- A badge is not a tag. A tag names something and sits in a row of its own kind;
5
- a badge carries a count or a status and usually sits <em>on</em> something -
6
- the number on a bell, the dot on an avatar. That is why it fills its colour
7
- instead of tinting it, and why it comes with an anchor.
8
- </p>
9
-
10
- <div class="mw-grid-2 mw-gap-6">
11
- <div>
12
- <h3 class="mw-card-title mw-mb-4">Counts</h3>
13
- <div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
14
- <div>
15
- <h4 class="mw-text-medium mw-mb-2">Colors</h4>
16
- <div class="mw-d-flex mw-items-center mw-gap-3 mw-flex-wrap">
17
- <span class="mw-badge">3</span>
18
- <span class="mw-badge mw-badge-secondary">8</span>
19
- <span class="mw-badge mw-badge-success">1</span>
20
- <span class="mw-badge mw-badge-warning">4</span>
21
- <span class="mw-badge mw-badge-danger">99+</span>
22
- <span class="mw-badge mw-badge-info">12</span>
23
- <span class="mw-badge mw-badge-muted">0</span>
24
- <span class="mw-badge mw-badge-outline">new</span>
25
- </div>
26
- </div>
27
- <div>
28
- <h4 class="mw-text-medium mw-mb-2">Sizes</h4>
29
- <div class="mw-d-flex mw-items-center mw-gap-3">
30
- <span class="mw-badge mw-badge-sm">7</span>
31
- <span class="mw-badge">7</span>
32
- <span class="mw-badge mw-badge-lg">7</span>
33
- </div>
34
- <p class="mw-text-muted mw-text-sm mw-mt-3 mw-mb-0">
35
- Round on one character, a pill from two on - a
36
- <code>min-width</code> the padding grows past, the same rule an OS
37
- badge follows. The digits are tabular, so a counter ticking 9 to 10
38
- does not shift what sits beside it.
39
- </p>
40
- </div>
41
- <div>
42
- <h4 class="mw-text-medium mw-mb-2">Anchored to something</h4>
43
- <div class="mw-d-flex mw-items-center mw-gap-6">
44
- <span class="mw-badge-anchor">
45
- <button class="mw-btn mw-btn-outline">
46
- <i class="fas fa-inbox"></i> Inbox
47
- </button>
48
- <span class="mw-badge mw-badge-danger mw-badge-float">5</span>
49
- </span>
50
- <span class="mw-badge-anchor">
51
- <i class="fas fa-bell mw-text-xl"></i>
52
- <span class="mw-badge mw-badge-primary mw-badge-float mw-badge-sm"
53
- >2</span
54
- >
55
- </span>
56
- </div>
57
- <p class="mw-text-muted mw-text-sm mw-mt-3 mw-mb-0">
58
- <code>mw-badge-anchor</code> on the thing being badged,
59
- <code>mw-badge-float</code> on the badge. It hangs off the corner and
60
- carries a ring in the surface colour, so it reads as a separate object
61
- rather than a blob on the icon.
62
- </p>
63
- </div>
64
- </div>
65
- </div>
66
-
67
- <div>
68
- <h3 class="mw-card-title mw-mb-4">Status</h3>
69
- <div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
70
- <div>
71
- <h4 class="mw-text-medium mw-mb-2">Dot with a label</h4>
72
- <div class="mw-grid-1 mw-gap-3">
73
- <span class="mw-badge-status mw-badge-status-success">
74
- <span class="mw-badge-dot"></span> Online
75
- </span>
76
- <span class="mw-badge-status mw-badge-status-warning">
77
- <span class="mw-badge-dot"></span> Degraded
78
- </span>
79
- <span class="mw-badge-status mw-badge-status-danger">
80
- <span class="mw-badge-dot mw-badge-pulse"></span> Incident
81
- </span>
82
- <span class="mw-badge-status mw-badge-status-muted">
83
- <span class="mw-badge-dot"></span> Archived
84
- </span>
85
- </div>
86
- </div>
87
- <div>
88
- <h4 class="mw-text-medium mw-mb-2">Live</h4>
89
- <p class="mw-text-muted mw-text-sm mw-mb-0">
90
- <code>mw-badge-pulse</code> adds a ring that grows out and fades. The
91
- dot underneath never moves, so a column of them in a table stays
92
- readable. For something actually running - a job, an open connection -
93
- not for decoration.
94
- </p>
95
- </div>
96
- <div>
97
- <h4 class="mw-text-medium mw-mb-2">In a row</h4>
98
- <div class="mw-row-split mw-row-split-center">
99
- <span>Deployment #4812</span>
100
- <span class="mw-badge-status mw-badge-status-success">
101
- <span class="mw-badge-dot"></span> Passed
102
- </span>
103
- </div>
104
- <hr class="mw-divider" />
105
- <div class="mw-row-split mw-row-split-center">
106
- <span>Deployment #4811</span>
107
- <span class="mw-badge-status mw-badge-status-danger">
108
- <span class="mw-badge-dot"></span> Failed
109
- </span>
110
- </div>
111
- </div>
112
- </div>
113
- </div>
114
- </div>
@@ -1,158 +0,0 @@
1
- <h3 class="mw-section-subtitle">Blog Posts</h3>
2
- <p class="mw-text-muted mw-text-measure">
3
- A long-form article rather than a card: title, meta line, body and the way
4
- back out. The gradient rule down the left edge is what makes it read as a page
5
- instead of a panel.
6
- </p>
7
-
8
- <div class="mw-blog-post">
9
- <h2 class="mw-blog-post-title">
10
- Just a dummy blog post (markdown generated)
11
- </h2>
12
-
13
- <div class="mw-blog-post-header">
14
- <div class="mw-blog-post-header-icon">
15
- <i class="fas fa-code"></i>
16
- </div>
17
- <div class="mw-blog-post-meta">
18
- <div class="mw-blog-post-meta-item">
19
- <i class="far fa-calendar"></i>
20
- <span>April 10, 2025</span>
21
- </div>
22
- <div class="mw-blog-post-meta-item">
23
- <i class="far fa-user"></i>
24
- <span>By Nadia Kern</span>
25
- </div>
26
- <div class="mw-blog-post-meta-item">
27
- <i class="far fa-clock"></i>
28
- <span>8 min read</span>
29
- </div>
30
- </div>
31
- </div>
32
-
33
- <img
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
- alt="UI/UX design"
36
- class="mw-blog-post-featured-image"
37
- loading="lazy"
38
- />
39
-
40
- <div class="mw-blog-post-content-markdown">
41
- <p>
42
- The landscape of web development continues to evolve at a rapid pace. In
43
- this article, we explore the latest frameworks, tools, and methodologies
44
- that are shaping the industry in 2025.
45
- </p>
46
-
47
- <h3>The Rise of AI-Assisted Development</h3>
48
- <p>
49
- Artificial intelligence has transformed how we approach coding. Modern
50
- IDEs now come equipped with sophisticated AI assistants that can generate
51
- entire components, optimize performance, and even identify potential bugs
52
- before they manifest.
53
- </p>
54
-
55
- <p>
56
- The most significant advancement has been in the realm of natural language
57
- programming, where developers can describe functionality in plain English
58
- and have the AI generate the corresponding code.
59
- </p>
60
-
61
- <blockquote>
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
65
- </blockquote>
66
-
67
- <h3>Serverless Architecture: Beyond the Basics</h3>
68
- <p>
69
- Serverless has grown past single functions. Whole applications now run on
70
- it, and the current generation of platforms offers:
71
- </p>
72
-
73
- <ul>
74
- <li>Stateful serverless functions with built-in memory persistence</li>
75
- <li>Edge-optimized execution for global performance</li>
76
- <li>Integrated database connections with automatic scaling</li>
77
- <li>Real-time monitoring and debugging capabilities</li>
78
- </ul>
79
-
80
- <h4>Code Example: Modern Serverless Function</h4>
81
- <pre><code>// Modern serverless function with state management
82
- export async function handler(event, context) {
83
- // Access persistent state across invocations
84
- const state = await context.getState();
85
-
86
- // Process the incoming request
87
- const result = processRequest(event, state);
88
-
89
- // Update the state for future invocations
90
- await context.setState({
91
- lastProcessed: new Date(),
92
- counter: (state.counter || 0) + 1,
93
- recentRequests: [...(state.recentRequests || []), event.id].slice(-10)
94
- });
95
-
96
- return {
97
- statusCode: 200,
98
- body: JSON.stringify(result)
99
- };
100
- }</code></pre>
101
-
102
- <h3>Web Components and Micro-Frontends</h3>
103
- <p>
104
- The component-based architecture has evolved into a more standardized
105
- approach with Web Components becoming the foundation of modern frontend
106
- development. This has enabled true interoperability between different
107
- frameworks and libraries.
108
- </p>
109
-
110
- <p>
111
- Micro-frontends have also gained widespread adoption, allowing teams to
112
- develop, test, and deploy parts of a frontend independently, using
113
- different technologies if necessary.
114
- </p>
115
-
116
- <ul>
117
- <li>
118
- DOP is not anti-OOP - it's a refinement for clearer thinking and
119
- modeling.
120
- </li>
121
- <li>
122
- With <code>record</code>, <code>sealed interface</code>, and Pattern
123
- Matching, Java is finally ready for this style.
124
- </li>
125
- <li>
126
- You’ll get:
127
- <ul>
128
- <li>Transparent and predictable models</li>
129
- <li>Easier testing and logging</li>
130
- <li>Less coupling and fewer side effects</li>
131
- </ul>
132
- </li>
133
- <li>
134
- This approach can make your domain models sharper and your codebase
135
- easier to reason about.
136
- </li>
137
- </ul>
138
-
139
- <h3>What this means for the next project</h3>
140
- <p>
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.
144
- </p>
145
- </div>
146
-
147
- <div class="mw-blog-post-footer">
148
- <button type="button" class="mw-btn mw-blog-post-footer-button">
149
- <i class="fas fa-arrow-left"></i>
150
- <span>Previous Post</span>
151
- </button>
152
- <button type="button" class="mw-btn mw-btn-primary">Back to Blog</button>
153
- <button type="button" class="mw-btn mw-blog-post-footer-button next">
154
- <i class="fas fa-arrow-right"></i>
155
- <span>Next Post</span>
156
- </button>
157
- </div>
158
- </div>
@@ -1,126 +0,0 @@
1
- <h3 class="mw-section-subtitle">Breadcrumbs</h3>
2
- <p class="mw-text-muted mw-text-measure">
3
- Modern skewed navigation breadcrumbs with overlapping design.
4
- </p>
5
-
6
- <div class="mw-grid-stack-stretch">
7
- <div>
8
- <h4 class="mw-mb-2">Basic Breadcrumbs</h4>
9
- <nav class="mw-breadcrumbs" aria-label="Breadcrumb">
10
- <ol class="mw-breadcrumbs-list">
11
- <li class="mw-breadcrumbs-item">
12
- <a href="#">
13
- <span>Home</span>
14
- </a>
15
- </li>
16
- <li class="mw-breadcrumbs-item">
17
- <a href="#">
18
- <span>Products</span>
19
- </a>
20
- </li>
21
- <li class="mw-breadcrumbs-item">
22
- <a href="#">
23
- <span>Electronics</span>
24
- </a>
25
- </li>
26
- <li class="mw-breadcrumbs-item mw-breadcrumbs-current">
27
- <a href="#" class="mw-breadcrumbs-active">
28
- <span>Phones</span>
29
- </a>
30
- </li>
31
- </ol>
32
- </nav>
33
- </div>
34
-
35
- <div>
36
- <h4 class="mw-mb-2">With Home Icon</h4>
37
- <nav class="mw-breadcrumbs" aria-label="Breadcrumb">
38
- <ol class="mw-breadcrumbs-list">
39
- <li class="mw-breadcrumbs-item">
40
- <a href="#" aria-label="Home">
41
- <i class="fas fa-home"></i>
42
- </a>
43
- </li>
44
- <li class="mw-breadcrumbs-item">
45
- <a href="#">
46
- <span>Products</span>
47
- </a>
48
- </li>
49
- <li class="mw-breadcrumbs-item">
50
- <a href="#">
51
- <span>Electronics</span>
52
- </a>
53
- </li>
54
- <li class="mw-breadcrumbs-item mw-breadcrumbs-current">
55
- <a href="#" class="mw-breadcrumbs-active">
56
- <span>Phones</span>
57
- </a>
58
- </li>
59
- </ol>
60
- </nav>
61
- </div>
62
-
63
- <div>
64
- <h4 class="mw-mb-2">Small Size Variant</h4>
65
- <nav class="mw-breadcrumbs mw-breadcrumbs-sm" aria-label="Breadcrumb">
66
- <ol class="mw-breadcrumbs-list">
67
- <li class="mw-breadcrumbs-item">
68
- <a href="#">
69
- <span>Admin</span>
70
- </a>
71
- </li>
72
- <li class="mw-breadcrumbs-item">
73
- <a href="#">
74
- <span>Users</span>
75
- </a>
76
- </li>
77
- <li class="mw-breadcrumbs-item mw-breadcrumbs-current">
78
- <a href="#" class="mw-breadcrumbs-active">
79
- <span>Profile</span>
80
- </a>
81
- </li>
82
- </ol>
83
- </nav>
84
- </div>
85
-
86
- <div>
87
- <h4 class="mw-mb-2">Long Path (Responsive Collapse)</h4>
88
- <p class="mw-text-muted mw-text-sm mw-mt-1">
89
- Middle items collapse on smaller screens.
90
- </p>
91
- <nav class="mw-breadcrumbs mw-breadcrumbs-collapse" aria-label="Breadcrumb">
92
- <ol class="mw-breadcrumbs-list">
93
- <li class="mw-breadcrumbs-item">
94
- <a href="#">
95
- <span>E-commerce</span>
96
- </a>
97
- </li>
98
- <li class="mw-breadcrumbs-item">
99
- <a href="#">
100
- <span>Electronics</span>
101
- </a>
102
- </li>
103
- <li class="mw-breadcrumbs-item">
104
- <a href="#">
105
- <span>Computers</span>
106
- </a>
107
- </li>
108
- <li class="mw-breadcrumbs-item">
109
- <a href="#">
110
- <span>Laptops</span>
111
- </a>
112
- </li>
113
- <li class="mw-breadcrumbs-item">
114
- <a href="#">
115
- <span>Gaming</span>
116
- </a>
117
- </li>
118
- <li class="mw-breadcrumbs-item mw-breadcrumbs-current">
119
- <a href="#" class="mw-breadcrumbs-active">
120
- <span>RTX 4080</span>
121
- </a>
122
- </li>
123
- </ol>
124
- </nav>
125
- </div>
126
- </div>