maverick-wave 3.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.
Files changed (141) hide show
  1. package/.claude/commands/mw.md +580 -0
  2. package/.claude/settings.local.json +11 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/maverick-wave.iml +12 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/prettier.xml +6 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/.prettierignore +6 -0
  10. package/.prettierrc.json +7 -0
  11. package/CHANGELOG.md +420 -0
  12. package/CLAUDE.md +53 -0
  13. package/LICENSE +21 -0
  14. package/README.md +191 -0
  15. package/gulpfile.js +158 -0
  16. package/index.html +472 -0
  17. package/maverick-wave.min.css +1 -0
  18. package/maverick-wave.min.js +1 -0
  19. package/package.json +52 -0
  20. package/release.sh +17 -0
  21. package/src/assets/favicon/android-chrome-192x192.png +0 -0
  22. package/src/assets/favicon/android-chrome-512x512.png +0 -0
  23. package/src/assets/favicon/apple-touch-icon.png +0 -0
  24. package/src/assets/favicon/favicon-16x16.png +0 -0
  25. package/src/assets/favicon/favicon-32x32.png +0 -0
  26. package/src/assets/favicon/site.webmanifest +1 -0
  27. package/src/assets/favicon.ico +0 -0
  28. package/src/assets/header-logo.svg +24 -0
  29. package/src/js/main.js +587 -0
  30. package/src/partials/accordions-container.html +163 -0
  31. package/src/partials/alerts-container.html +120 -0
  32. package/src/partials/avatars-container.html +84 -0
  33. package/src/partials/blog-posts-container.html +157 -0
  34. package/src/partials/breadcrumbs-container.html +126 -0
  35. package/src/partials/button-bar-container.html +168 -0
  36. package/src/partials/buttons-container.html +133 -0
  37. package/src/partials/cards-container.html +508 -0
  38. package/src/partials/code-container.html +194 -0
  39. package/src/partials/colors-container.html +125 -0
  40. package/src/partials/coming-soon-container.html +6 -0
  41. package/src/partials/content-slider-container.html +47 -0
  42. package/src/partials/divider-container.html +52 -0
  43. package/src/partials/documentation-container.html +161 -0
  44. package/src/partials/empty-state-container.html +74 -0
  45. package/src/partials/footer-container.html +113 -0
  46. package/src/partials/form-container.html +257 -0
  47. package/src/partials/form-elements-container.html +595 -0
  48. package/src/partials/form-field-container.html +141 -0
  49. package/src/partials/gallery-container.html +49 -0
  50. package/src/partials/get-started-container.html +294 -0
  51. package/src/partials/grid-container.html +171 -0
  52. package/src/partials/header-container.html +49 -0
  53. package/src/partials/header-utilities-container.html +80 -0
  54. package/src/partials/home-container.html +48 -0
  55. package/src/partials/html-lists-container.html +58 -0
  56. package/src/partials/info-container.html +87 -0
  57. package/src/partials/input-group-container.html +285 -0
  58. package/src/partials/item-lists-container.html +413 -0
  59. package/src/partials/login-container.html +61 -0
  60. package/src/partials/meta-info-container.html +16 -0
  61. package/src/partials/modals-container.html +136 -0
  62. package/src/partials/pagination-container.html +27 -0
  63. package/src/partials/panels-container.html +196 -0
  64. package/src/partials/progress-container.html +226 -0
  65. package/src/partials/ratings-container.html +104 -0
  66. package/src/partials/skeleton-container.html +82 -0
  67. package/src/partials/spinners-container.html +92 -0
  68. package/src/partials/stepper-container.html +107 -0
  69. package/src/partials/tables-container.html +120 -0
  70. package/src/partials/tabs-container.html +263 -0
  71. package/src/partials/tags-container.html +168 -0
  72. package/src/partials/techstack-bucket-container.html +174 -0
  73. package/src/partials/tiles-container.html +245 -0
  74. package/src/partials/timelines-container.html +196 -0
  75. package/src/partials/typography-container.html +66 -0
  76. package/src/partials/utilities-container.html +85 -0
  77. package/src/scss/abstracts/_functions.scss +37 -0
  78. package/src/scss/abstracts/_index.scss +3 -0
  79. package/src/scss/abstracts/_mixins.scss +45 -0
  80. package/src/scss/abstracts/_variables.scss +222 -0
  81. package/src/scss/base/_base.scss +165 -0
  82. package/src/scss/base/_index.scss +3 -0
  83. package/src/scss/base/_reset.scss +75 -0
  84. package/src/scss/base/_typography.scss +230 -0
  85. package/src/scss/components/_accordions.scss +91 -0
  86. package/src/scss/components/_alerts.scss +105 -0
  87. package/src/scss/components/_avatars.scss +123 -0
  88. package/src/scss/components/_blog-post.scss +268 -0
  89. package/src/scss/components/_breadcrumbs.scss +108 -0
  90. package/src/scss/components/_button-bar.scss +139 -0
  91. package/src/scss/components/_buttons.scss +164 -0
  92. package/src/scss/components/_cards.scss +316 -0
  93. package/src/scss/components/_code.scss +252 -0
  94. package/src/scss/components/_coming-soon.scss +92 -0
  95. package/src/scss/components/_content-slider.scss +119 -0
  96. package/src/scss/components/_divider.scss +70 -0
  97. package/src/scss/components/_empty-state.scss +73 -0
  98. package/src/scss/components/_gallery.scss +158 -0
  99. package/src/scss/components/_index.scss +33 -0
  100. package/src/scss/components/_info.scss +143 -0
  101. package/src/scss/components/_lists.scss +653 -0
  102. package/src/scss/components/_localhost-indicator.scss +29 -0
  103. package/src/scss/components/_meta-info.scss +34 -0
  104. package/src/scss/components/_modals.scss +118 -0
  105. package/src/scss/components/_pagination.scss +99 -0
  106. package/src/scss/components/_panels.scss +112 -0
  107. package/src/scss/components/_progress.scss +107 -0
  108. package/src/scss/components/_ratings.scss +47 -0
  109. package/src/scss/components/_skeleton.scss +90 -0
  110. package/src/scss/components/_spinners.scss +208 -0
  111. package/src/scss/components/_stepper.scss +145 -0
  112. package/src/scss/components/_tables.scss +127 -0
  113. package/src/scss/components/_tabs.scss +146 -0
  114. package/src/scss/components/_tags.scss +93 -0
  115. package/src/scss/components/_techstack-bucket.scss +145 -0
  116. package/src/scss/components/_theme-toggle.scss +50 -0
  117. package/src/scss/components/_tiles.scss +217 -0
  118. package/src/scss/components/_timelines.scss +339 -0
  119. package/src/scss/form-elements/_checkbox.scss +174 -0
  120. package/src/scss/form-elements/_form.scss +122 -0
  121. package/src/scss/form-elements/_index.scss +10 -0
  122. package/src/scss/form-elements/_input-group.scss +103 -0
  123. package/src/scss/form-elements/_input.scss +72 -0
  124. package/src/scss/form-elements/_login.scss +62 -0
  125. package/src/scss/form-elements/_radio.scss +144 -0
  126. package/src/scss/form-elements/_select.scss +56 -0
  127. package/src/scss/form-elements/_slider.scss +174 -0
  128. package/src/scss/form-elements/_textarea.scss +74 -0
  129. package/src/scss/form-elements/_toggle.scss +174 -0
  130. package/src/scss/layout/_footer.scss +214 -0
  131. package/src/scss/layout/_grid.scss +287 -0
  132. package/src/scss/layout/_header.scss +441 -0
  133. package/src/scss/layout/_home.scss +40 -0
  134. package/src/scss/layout/_index.scss +6 -0
  135. package/src/scss/layout/_main.scss +116 -0
  136. package/src/scss/layout/_section.scss +89 -0
  137. package/src/scss/main.scss +5 -0
  138. package/src/scss/utilities/_display.scss +35 -0
  139. package/src/scss/utilities/_flex.scss +66 -0
  140. package/src/scss/utilities/_index.scss +3 -0
  141. package/src/scss/utilities/_spacing.scss +78 -0
@@ -0,0 +1,508 @@
1
+ <h3 class="mw-section-subtitle">Cards</h3>
2
+
3
+ <h3 class="mw-mb-4">Standard Cards</h3>
4
+ <div class="mw-grid-3">
5
+ <div class="mw-card mw-card-content">
6
+ <div class="mw-card-img">
7
+ <img
8
+ src="https://images.unsplash.com/photo-1550745165-9bc0b252726f?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
9
+ alt="Tech Image"
10
+ />
11
+ </div>
12
+ <div class="mw-card-body">
13
+ <h3 class="mw-card-title">Featured Article</h3>
14
+ <hr class="mw-card-title-divider" />
15
+ <p class="mw-card-subtitle">
16
+ This is the subtitle of this card in secondary text color
17
+ </p>
18
+ <p class="mw-card-text">
19
+ Cards are versatile containers for displaying related content and
20
+ actions. This example shows an image card with a title and descriptive
21
+ text.
22
+ </p>
23
+ <div class="mw-card-footer">
24
+ <button type="button" class="mw-btn mw-btn-link">Read Article</button>
25
+ </div>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="mw-card mw-card-content">
30
+ <div class="mw-card-body">
31
+ <h3 class="mw-card-title">Project Update</h3>
32
+ <hr class="mw-card-title-divider" />
33
+ <p class="mw-card-text">
34
+ A simple card without an image works well for text-focused content. Use
35
+ cards to organize information into digestible sections with clear visual
36
+ hierarchy.
37
+ </p>
38
+ <div class="mw-card-footer">
39
+ <button type="button" class="mw-btn mw-btn-outline">
40
+ View Details
41
+ </button>
42
+ <span class="mw-text-secondary">Last updated: 2025-04-12</span>
43
+ </div>
44
+ </div>
45
+ </div>
46
+
47
+ <div class="mw-card mw-card-content">
48
+ <div class="mw-card-body">
49
+ <h3 class="mw-card-title">Development Stack</h3>
50
+ <hr class="mw-card-title-divider" />
51
+ <p class="mw-card-text">
52
+ Cards can include various components like tags to categorize content.
53
+ This example shows how to display technologies used in a project.
54
+ </p>
55
+ <div class="mw-tags">
56
+ <span class="mw-tags-item">HTML</span>
57
+ <span class="mw-tags-item">CSS</span>
58
+ <span class="mw-tags-item">JavaScript</span>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+
64
+ <h3 class="mw-mb-4 mw-mt-6">Tech-Stack Cards</h3>
65
+ <div class="mw-grid-5">
66
+ <div class="mw-card mw-card-stack">
67
+ <div class="mw-card-stack-header">
68
+ <div class="mw-card-stack-icon">
69
+ <i class="fas fa-laptop-code"></i>
70
+ </div>
71
+ <h5 class="mw-card-stack-title">Frontend</h5>
72
+ </div>
73
+ <div class="mw-card-stack-body">
74
+ <div class="mw-tags mw-tags-stack">
75
+ <span class="mw-tags-item">React</span>
76
+ <span class="mw-tags-item">TypeScript</span>
77
+ <span class="mw-tags-item">Next.js</span>
78
+ <span class="mw-tags-item">Tailwind CSS</span>
79
+ </div>
80
+ <p class="mw-card-stack-text">
81
+ Building responsive, accessible, and performant user interfaces
82
+ </p>
83
+ </div>
84
+ </div>
85
+
86
+ <div class="mw-card mw-card-stack">
87
+ <div class="mw-card-stack-header">
88
+ <div class="mw-card-stack-icon">
89
+ <i class="fas fa-server"></i>
90
+ </div>
91
+ <h5 class="mw-card-stack-title">Backend</h5>
92
+ </div>
93
+ <div class="mw-card-stack-body">
94
+ <div class="mw-tags mw-tags-stack">
95
+ <span class="mw-tags-item">Node.js</span>
96
+ <span class="mw-tags-item">Express</span>
97
+ <span class="mw-tags-item">NestJS</span>
98
+ <span class="mw-tags-item">GraphQL</span>
99
+ </div>
100
+ <p class="mw-card-stack-text">
101
+ Developing scalable APIs and server-side applications
102
+ </p>
103
+ </div>
104
+ </div>
105
+
106
+ <div class="mw-card mw-card-stack">
107
+ <div class="mw-card-stack-header">
108
+ <div class="mw-card-stack-icon">
109
+ <i class="fas fa-database"></i>
110
+ </div>
111
+ <h5 class="mw-card-stack-title">Data Storage</h5>
112
+ </div>
113
+ <div class="mw-card-stack-body">
114
+ <div class="mw-tags mw-tags-stack">
115
+ <span class="mw-tags-item">MongoDB</span>
116
+ <span class="mw-tags-item">PostgreSQL</span>
117
+ <span class="mw-tags-item">Redis</span>
118
+ <span class="mw-tags-item">Prisma</span>
119
+ </div>
120
+ <p class="mw-card-stack-text">
121
+ Managing structured and unstructured data with the right tools
122
+ </p>
123
+ </div>
124
+ </div>
125
+
126
+ <div class="mw-card mw-card-stack">
127
+ <div class="mw-card-stack-header">
128
+ <div class="mw-card-stack-icon">
129
+ <i class="fas fa-cloud"></i>
130
+ </div>
131
+ <h5 class="mw-card-stack-title">DevOps & Cloud</h5>
132
+ </div>
133
+ <div class="mw-card-stack-body">
134
+ <div class="mw-tags mw-tags-stack">
135
+ <span class="mw-tags-item">Docker</span>
136
+ <span class="mw-tags-item">GitHub Actions</span>
137
+ <span class="mw-tags-item">AWS</span>
138
+ <span class="mw-tags-item">Vercel</span>
139
+ </div>
140
+ <p class="mw-card-stack-text">
141
+ Automating deployment and scaling applications in the cloud
142
+ </p>
143
+ </div>
144
+ </div>
145
+
146
+ <div class="mw-card mw-card-stack">
147
+ <div class="mw-card-stack-header">
148
+ <div class="mw-card-stack-icon">
149
+ <i class="fas fa-vial"></i>
150
+ </div>
151
+ <h5 class="mw-card-stack-title">Testing & Quality</h5>
152
+ </div>
153
+ <div class="mw-card-stack-body">
154
+ <p class="mw-card-stack-text">
155
+ Ensuring code quality and reliability through automated testing
156
+ </p>
157
+ </div>
158
+ </div>
159
+ </div>
160
+
161
+ <h3 class="mw-mb-4 mw-mt-6">Large Cards</h3>
162
+ <p class="mw-text-muted">
163
+ If you have a image and want to display the entire image, replace the standard
164
+ <code>mw-card-img</code> class with <code>mw-card-img-contain</code> in your
165
+ card markup. This alternative style ensures the complete image is visible
166
+ while maintaining centering and proportions. (See the first large and the
167
+ second extra large card)
168
+ </p>
169
+ <div class="mw-grid-2">
170
+ <div class="mw-card mw-card-content mw-card-lg">
171
+ <div class="mw-card-img">
172
+ <img
173
+ src="https://images.unsplash.com/photo-1493246507139-91e8fad9978e?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
174
+ alt="Mountain Scenery Portrait"
175
+ />
176
+ </div>
177
+ <div class="mw-card-body">
178
+ <h3 class="mw-card-title">Large Card</h3>
179
+ <hr class="mw-card-title-divider" />
180
+ <p class="mw-card-text">
181
+ Large cards feature taller images (330px height) that work well for
182
+ portrait-oriented photos or when you want to showcase more of your
183
+ visual content.
184
+ </p>
185
+ <div class="mw-card-footer">
186
+ <button type="button" class="mw-btn mw-btn-primary">
187
+ View Gallery
188
+ </button>
189
+ <span class="mw-text-muted">12 Photos</span>
190
+ </div>
191
+ </div>
192
+ </div>
193
+
194
+ <div class="mw-card mw-card-content mw-card-lg">
195
+ <div class="mw-card-img">
196
+ <img
197
+ src="https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
198
+ alt="Team Member Portrait"
199
+ />
200
+ </div>
201
+ <div class="mw-card-body">
202
+ <h3 class="mw-card-title">Team Member</h3>
203
+ <hr class="mw-card-title-divider" />
204
+ <p class="mw-card-text">
205
+ Large cards are perfect for team profiles, product features, or any
206
+ content where the image deserves more prominence in your layout.
207
+ </p>
208
+ <div class="mw-tags">
209
+ <span class="mw-tags-item">Design</span>
210
+ <span class="mw-tags-item">UX Research</span>
211
+ <span class="mw-tags-item">Prototyping</span>
212
+ </div>
213
+ </div>
214
+ </div>
215
+ </div>
216
+
217
+ <h3 class="mw-mb-4 mw-mt-6">Extra Large Cards</h3>
218
+ <p class="mw-text-muted">
219
+ Here you can see the difference in portrait images between the standard
220
+ <code>mw-card-img</code> class on the first image and
221
+ <code>mw-card-img-contain</code> class on the second image.
222
+ </p>
223
+ <div class="mw-grid-2">
224
+ <div class="mw-card mw-card-content mw-card-xl">
225
+ <div class="mw-card-img">
226
+ <img
227
+ src="https://images.unsplash.com/photo-1544005313-94ddf0286df2?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
228
+ alt="Portrait Style Image"
229
+ />
230
+ </div>
231
+ <div class="mw-card-body">
232
+ <h3 class="mw-card-title">Featured Profile</h3>
233
+ <hr class="mw-card-title-divider" />
234
+ <p class="mw-card-subtitle">
235
+ This is the subtitle of this card in secondary text color
236
+ </p>
237
+ <p class="mw-card-text">
238
+ Extra large cards with 480px image height are ideal for portrait
239
+ photography, profile spotlights, or when the visual element is the
240
+ primary focus of your content.
241
+ </p>
242
+ <div class="mw-card-footer">
243
+ <button type="button" class="mw-btn mw-btn-primary">
244
+ View Profile
245
+ </button>
246
+ </div>
247
+ </div>
248
+ </div>
249
+
250
+ <div class="mw-card mw-card-content mw-card-xl">
251
+ <div class="mw-card-img-contain">
252
+ <img
253
+ src="https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
254
+ alt="Portrait Style Image"
255
+ />
256
+ </div>
257
+ <div class="mw-card-body">
258
+ <h3 class="mw-card-title">Artist Spotlight</h3>
259
+ <p class="mw-card-text">
260
+ The extra large card format creates a dramatic visual impact, making it
261
+ perfect for highlighting key people, products, or artistic content in
262
+ your application.
263
+ </p>
264
+ <div class="mw-card-footer">
265
+ <button type="button" class="mw-btn mw-btn-outline">
266
+ View Portfolio
267
+ </button>
268
+ <span class="mw-text-muted">Featured Artist</span>
269
+ </div>
270
+ </div>
271
+ </div>
272
+ </div>
273
+
274
+ <h3 class="mw-mb-4 mw-mt-6">Card Variations</h3>
275
+ <div class="mw-grid-3">
276
+ <div class="mw-card mw-card-content">
277
+ <div class="mw-card-body">
278
+ <h3 class="mw-card-title">Card with Tags</h3>
279
+ <hr class="mw-card-title-divider" />
280
+ <p class="mw-card-text">
281
+ Tags can be used to categorize content or show related topics.
282
+ </p>
283
+ <div class="mw-tags">
284
+ <span class="mw-tags-item">Primary</span>
285
+ <span class="mw-tags-item mw-tags-item-success">Success</span>
286
+ <span class="mw-tags-item mw-tags-item-danger">Danger</span>
287
+ </div>
288
+ <div class="mw-card-footer">
289
+ <button type="button" class="mw-btn mw-btn-link">Learn More</button>
290
+ </div>
291
+ </div>
292
+ </div>
293
+
294
+ <div class="mw-card mw-card-content">
295
+ <div class="mw-card-body">
296
+ <h3 class="mw-card-title">Card with Avatar</h3>
297
+ <hr class="mw-card-title-divider" />
298
+ <div class="mw-d-flex mw-items-center mw-gap-3 mw-mb-3">
299
+ <div class="mw-avatar">
300
+ <img src="https://i.pravatar.cc/150?img=32" alt="User Avatar" />
301
+ </div>
302
+ <div class="mw-flex-grow-1 mw-ml-1">
303
+ <p class="mw-mb-0"><strong>Sarah Johnson</strong></p>
304
+ <p class="mw-text-muted mw-mb-0">Product Designer</p>
305
+ </div>
306
+ </div>
307
+ <p class="mw-card-text">
308
+ Cards can include avatars to represent users or team members.
309
+ </p>
310
+ <div class="mw-card-footer">
311
+ <button type="button" class="mw-btn mw-btn-outline mw-btn-sm">
312
+ View Profile
313
+ </button>
314
+ </div>
315
+ </div>
316
+ </div>
317
+
318
+ <div class="mw-card mw-card-content">
319
+ <div class="mw-card-body">
320
+ <h3 class="mw-card-title">Card with Progress</h3>
321
+ <hr class="mw-card-title-divider" />
322
+ <p class="mw-card-text">
323
+ Include progress bars to show completion status or metrics.
324
+ </p>
325
+ <div class="mw-progress-container">
326
+ <div class="mw-progress-barinfo">
327
+ <span class="mw-progress-label">Project Status</span>
328
+ <span class="mw-progress-value mw-progress-percent">70</span>
329
+ </div>
330
+ <div class="mw-progress-bar">
331
+ <div class="mw-progress-fill" style="width: 70%"></div>
332
+ </div>
333
+ </div>
334
+ <div class="mw-card-footer">
335
+ <button type="button" class="mw-btn mw-btn-primary mw-btn-sm">
336
+ View Details
337
+ </button>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ </div>
342
+
343
+ <h3 class="mw-mb-4 mw-mt-6">Additional Cards</h3>
344
+ <p class="mw-text-muted">
345
+ You can also use badges or ribbons on top of a card.
346
+ </p>
347
+
348
+ <div class="mw-grid-1">
349
+ <!-- Badges column -->
350
+ <div class="mw-p-2">
351
+ <h3 class="mw-card-title">Badges</h3>
352
+ <div class="mw-grid-2-lg">
353
+ <!-- Badge 1 -->
354
+ <div class="mw-card mw-card-content">
355
+ <div class="mw-card-badge mw-card-addon-primary">New</div>
356
+ <div class="mw-card-body">
357
+ <h3 class="mw-card-title">Latest Gadget</h3>
358
+ <hr class="mw-card-title-divider" />
359
+ <p class="mw-card-text">
360
+ Introducing our brand‐new gadget with cutting-edge features.
361
+ </p>
362
+ <div class="mw-card-footer">
363
+ <button type="button" class="mw-btn mw-btn-primary">Explore</button>
364
+ </div>
365
+ </div>
366
+ </div>
367
+ <!-- Badge 2 -->
368
+ <div class="mw-card mw-card-content">
369
+ <div class="mw-card-badge mw-card-addon-secondary">Hot</div>
370
+ <div class="mw-card-img">
371
+ <img
372
+ src="https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
373
+ alt="Profile"
374
+ />
375
+ </div>
376
+ <div class="mw-card-body">
377
+ <h3 class="mw-card-title">Team Spotlight</h3>
378
+ <hr class="mw-card-title-divider" />
379
+ <p class="mw-card-text">
380
+ Meet our star contributor of the month and learn their tips.
381
+ </p>
382
+ <div class="mw-card-footer">
383
+ <button type="button" class="mw-btn mw-btn-link">Read More</button>
384
+ </div>
385
+ </div>
386
+ </div>
387
+ <!-- Badge 3 -->
388
+ <div class="mw-card mw-card-content">
389
+ <div class="mw-card-badge mw-card-addon-success">Sale</div>
390
+ <div class="mw-card-img">
391
+ <img
392
+ src="https://images.unsplash.com/photo-1512436991641-6745cdb1723f?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
393
+ alt="Sale"
394
+ />
395
+ </div>
396
+ <div class="mw-card-body">
397
+ <h3 class="mw-card-title">Winter Sale</h3>
398
+ <hr class="mw-card-title-divider" />
399
+ <p class="mw-card-text">
400
+ Enjoy up to 50% off on selected items while stocks last.
401
+ </p>
402
+ <div class="mw-card-footer">
403
+ <button type="button" class="mw-btn mw-btn-outline">
404
+ Shop Now
405
+ </button>
406
+ </div>
407
+ </div>
408
+ </div>
409
+ <!-- Badge 4 -->
410
+ <div class="mw-card mw-card-content">
411
+ <div class="mw-card-badge mw-card-addon-danger">Limited</div>
412
+ <div class="mw-card-body">
413
+ <h3 class="mw-card-title">Limited Offer</h3>
414
+ <hr class="mw-card-title-divider" />
415
+ <p class="mw-card-text">
416
+ Only a few spots remain. Secure yours before it’s gone!
417
+ </p>
418
+ <div class="mw-card-footer">
419
+ <button type="button" class="mw-btn mw-btn-primary mw-btn-sm">
420
+ Sign Up
421
+ </button>
422
+ </div>
423
+ </div>
424
+ </div>
425
+ </div>
426
+ </div>
427
+
428
+ <!-- Ribbons column -->
429
+ <div class="mw-p-2">
430
+ <h3 class="mw-card-title">Ribbons</h3>
431
+ <div class="mw-grid-2-lg">
432
+ <!-- Ribbon 1 -->
433
+ <div class="mw-card mw-card-content">
434
+ <div class="mw-card-ribbon mw-card-addon-primary">Featured</div>
435
+ <div class="mw-card-img">
436
+ <img
437
+ src="https://images.unsplash.com/photo-1504674900247-0877df9cc836?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
438
+ alt="Product Spotlight"
439
+ />
440
+ </div>
441
+ <div class="mw-card-body">
442
+ <h3 class="mw-card-title">Featured Product</h3>
443
+ <hr class="mw-card-title-divider" />
444
+ <p class="mw-card-text">
445
+ Our top pick selected by experts for quality and design.
446
+ </p>
447
+ <div class="mw-card-footer">
448
+ <button type="button" class="mw-btn mw-btn-link">Learn More</button>
449
+ </div>
450
+ </div>
451
+ </div>
452
+ <!-- Ribbon 2 -->
453
+ <div class="mw-card mw-card-content">
454
+ <div class="mw-card-ribbon mw-card-addon-info">
455
+ <span>Info</span>
456
+ </div>
457
+ <div class="mw-card-body">
458
+ <h3 class="mw-card-title">System Update</h3>
459
+ <hr class="mw-card-title-divider" />
460
+ <p class="mw-card-text">
461
+ A minor update will be rolled out tonight to improve performance.
462
+ </p>
463
+ <div class="mw-card-footer">
464
+ <button type="button" class="mw-btn mw-btn-outline mw-btn-sm">
465
+ Dismiss
466
+ </button>
467
+ </div>
468
+ </div>
469
+ </div>
470
+ <!-- Ribbon 3 -->
471
+ <div class="mw-card mw-card-content">
472
+ <div class="mw-card-ribbon mw-card-addon-warning">Beta</div>
473
+ <div class="mw-card-img">
474
+ <img
475
+ src="https://images.unsplash.com/photo-1519389950473-47ba0277781c?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80"
476
+ alt="Dashboard Beta"
477
+ />
478
+ </div>
479
+ <div class="mw-card-body">
480
+ <h3 class="mw-card-title">Dashboard Beta</h3>
481
+ <hr class="mw-card-title-divider" />
482
+ <p class="mw-card-text">
483
+ Try out our redesigned dashboard and send us your feedback.
484
+ </p>
485
+ <div class="mw-card-footer">
486
+ <button type="button" class="mw-btn mw-btn-primary">Try It</button>
487
+ </div>
488
+ </div>
489
+ </div>
490
+ <!-- Ribbon 4 -->
491
+ <div class="mw-card mw-card-content">
492
+ <div class="mw-card-ribbon mw-card-addon-danger">Highlight Project</div>
493
+ <div class="mw-card-body">
494
+ <h3 class="mw-card-title">VIP Access</h3>
495
+ <hr class="mw-card-title-divider" />
496
+ <p class="mw-card-text">
497
+ Invitation-only preview of our upcoming premium features.
498
+ </p>
499
+ <div class="mw-card-footer">
500
+ <button type="button" class="mw-btn mw-btn-outline">
501
+ Request Invite
502
+ </button>
503
+ </div>
504
+ </div>
505
+ </div>
506
+ </div>
507
+ </div>
508
+ </div>