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
package/gulpfile.js ADDED
@@ -0,0 +1,158 @@
1
+ const gulp = require('gulp');
2
+ const fileinclude = require('gulp-file-include');
3
+ const sass = require('gulp-sass')(require('sass'));
4
+ const postcss = require('gulp-postcss');
5
+ const autoprefixer = require('autoprefixer');
6
+ const cleanCSS = require('gulp-clean-css');
7
+ const terser = require('gulp-terser');
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+ const rename = require('gulp-rename');
11
+ const through = require('through2');
12
+ const { deleteAsync } = require('del');
13
+
14
+ // Paths
15
+ const paths = {
16
+ root: '.',
17
+ src: 'src',
18
+ dist: 'dist',
19
+ scss: 'src/scss/**/*.scss',
20
+ html: '*.html',
21
+ js: 'src/js/*.js',
22
+ assets: 'src/assets/**/*',
23
+ };
24
+
25
+ function convertDateFormat(dateStr) {
26
+ // Use regex to match day, month, and year
27
+ const regex = /(\d{2})\/(\d{2})\/(\d{4})/;
28
+ // Replace with year-month-day format
29
+ return dateStr.replace(regex, '$3-$2-$1');
30
+ }
31
+
32
+ // Process HTML files
33
+ gulp.task('html', function () {
34
+ return gulp
35
+ .src(paths.html)
36
+ .pipe(
37
+ fileinclude({
38
+ prefix: '@@',
39
+ basepath: '@file',
40
+ })
41
+ )
42
+ .pipe(gulp.dest(paths.dist));
43
+ });
44
+
45
+ // Process SCSS files
46
+ gulp.task('scss-build', function () {
47
+ return gulp
48
+ .src(paths.scss)
49
+ .pipe(sass().on('error', sass.logError))
50
+ .pipe(postcss([autoprefixer()]))
51
+ .pipe(cleanCSS())
52
+ .pipe(rename('maverick-wave.min.css'))
53
+ .pipe(gulp.dest(path.join(paths.dist)));
54
+ });
55
+ gulp.task('scss-release', function () {
56
+ return gulp
57
+ .src(paths.scss)
58
+ .pipe(sass().on('error', sass.logError))
59
+ .pipe(postcss([autoprefixer()]))
60
+ .pipe(cleanCSS())
61
+ .pipe(rename('maverick-wave.min.css'))
62
+ .pipe(gulp.dest(path.join(paths.root)));
63
+ });
64
+
65
+ // Copy JavaScript files
66
+ gulp.task('js-build', function () {
67
+ return gulp
68
+ .src(paths.js)
69
+ .pipe(terser())
70
+ .pipe(rename('maverick-wave.min.js'))
71
+ .pipe(gulp.dest(path.join(paths.dist)));
72
+ });
73
+ gulp.task('js-release', function () {
74
+ return gulp
75
+ .src(paths.js)
76
+ .pipe(terser())
77
+ .pipe(rename('maverick-wave.min.js'))
78
+ .pipe(gulp.dest(path.join(paths.root)));
79
+ });
80
+
81
+ // Copy assets
82
+ gulp.task('assets', function () {
83
+ return gulp
84
+ .src(paths.assets, { encoding: false })
85
+ .pipe(gulp.dest(path.join(paths.dist)));
86
+ });
87
+
88
+ // Inject build info into HTML
89
+ gulp.task('inject-build-info', function () {
90
+ // Get package.json data
91
+ const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
92
+
93
+ // Create build info object
94
+ const buildInfo = {
95
+ name: packageJson.name,
96
+ version: packageJson.version,
97
+ buildDate: convertDateFormat(new Date().toLocaleDateString('en-DE')),
98
+ };
99
+
100
+ // Create a custom transform stream to inject build info
101
+ const injectBuildInfo = through.obj(function (file, enc, cb) {
102
+ if (file.isBuffer()) {
103
+ let contents = file.contents.toString();
104
+
105
+ // Replace placeholders with actual values
106
+ contents = contents.replace(/\{\{VERSION\}\}/g, buildInfo.version);
107
+ contents = contents.replace(
108
+ /\{\{LAST_BUILD_DATE\}\}/g,
109
+ buildInfo.buildDate
110
+ );
111
+ contents = contents.replace(
112
+ /\{\{LAST_BUILD_YEAR\}\}/g,
113
+ buildInfo.buildDate.slice(0, 4)
114
+ );
115
+
116
+ file.contents = Buffer.from(contents);
117
+ }
118
+
119
+ this.push(file);
120
+ cb();
121
+ });
122
+
123
+ return gulp
124
+ .src(path.join(paths.dist, '*.html'))
125
+ .pipe(injectBuildInfo)
126
+ .pipe(gulp.dest(paths.dist));
127
+ });
128
+
129
+ // clean - remove dist and maverick-wave.css & maverick-wave.js
130
+ gulp.task('clean', async function () {
131
+ await deleteAsync(['dist', 'maverick-wave.min.css', 'maverick-wave.min.js'], {
132
+ force: true,
133
+ });
134
+ });
135
+
136
+ // Watch for changes
137
+ gulp.task('watch', function () {
138
+ gulp.watch(paths.scss, gulp.series('scss-build'));
139
+ gulp.watch('*.html', gulp.series('html', 'inject-build-info'));
140
+ gulp.watch('src/partials/*.html', gulp.series('html', 'inject-build-info'));
141
+ gulp.watch(paths.js, gulp.series('js-build'));
142
+ gulp.watch(paths.assets, gulp.series('assets'));
143
+ });
144
+
145
+ // Build task
146
+ gulp.task(
147
+ 'build',
148
+ gulp.series(
149
+ gulp.parallel('scss-build', 'js-build', 'assets', 'html'),
150
+ 'inject-build-info'
151
+ )
152
+ );
153
+
154
+ // Release task
155
+ gulp.task('release', gulp.series(gulp.parallel('scss-release', 'js-release')));
156
+
157
+ // Default task
158
+ gulp.task('default', gulp.series('build', 'watch'));
package/index.html ADDED
@@ -0,0 +1,472 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta
6
+ name="viewport"
7
+ content="width=device-width, minimum-scale=1, initial-scale=1"
8
+ />
9
+ <meta
10
+ name="format-detection"
11
+ content="telephone=no,email=no,address=no,date=no"
12
+ />
13
+ <title>MaverickWave</title>
14
+ <link
15
+ rel="stylesheet"
16
+ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
17
+ />
18
+ <link rel="stylesheet" href="maverick-wave.min.css" />
19
+ <!-- Basic favicon -->
20
+ <link rel="icon" type="image/x-icon" href="favicon.ico" />
21
+
22
+ <!-- PNG favicons -->
23
+ <link
24
+ rel="icon"
25
+ type="image/png"
26
+ sizes="32x32"
27
+ href="favicon/favicon-32x32.png"
28
+ />
29
+ <link
30
+ rel="icon"
31
+ type="image/png"
32
+ sizes="16x16"
33
+ href="favicon/favicon-16x16.png"
34
+ />
35
+
36
+ <!-- Apple Touch Icon (for iOS devices) -->
37
+ <link
38
+ rel="apple-touch-icon"
39
+ sizes="180x180"
40
+ href="favicon/apple-touch-icon.png"
41
+ />
42
+
43
+ <!-- Safari Pinned Tab Icon -->
44
+ <link
45
+ rel="mask-icon"
46
+ href="favicon/safari-pinned-tab.svg"
47
+ color="#5bbad5"
48
+ />
49
+
50
+ <!-- Android/Chrome Icons -->
51
+ <link rel="manifest" href="favicon/site.webmanifest" />
52
+
53
+ <!-- Microsoft Tiles (for Windows) -->
54
+ <meta name="msapplication-TileColor" content="#da532c" />
55
+ <meta name="msapplication-config" content="favicon/browserconfig.xml" />
56
+
57
+ <!-- Theme Color for browsers that support it -->
58
+ <meta name="theme-color" content="#ffffff" />
59
+ <style>
60
+ /* Additional styles only for the showcase page */
61
+ .position-relative {
62
+ position: relative;
63
+ }
64
+
65
+ .version-corner {
66
+ position: absolute;
67
+ top: -24px;
68
+ right: 13%;
69
+ background: var(--mw-primary-color);
70
+ color: var(--mw-primary-text-color);
71
+ font-size: 1.1rem;
72
+ padding: 0.3rem 0.7rem;
73
+ border-radius: 0.4rem;
74
+ font-weight: 600;
75
+ box-shadow: 3px 7px 10px var(--mw-shadow);
76
+ transform: rotate(7deg);
77
+ }
78
+
79
+ .color-card {
80
+ padding: 18px;
81
+ }
82
+
83
+ .color-card p {
84
+ margin-bottom: 5px !important;
85
+ font-size: 0.9rem;
86
+ }
87
+
88
+ .color-swatch {
89
+ width: 100%;
90
+ height: 70px;
91
+ border-radius: 6px;
92
+ margin-bottom: 9px;
93
+ border: 1px solid var(--mw-border);
94
+ }
95
+
96
+ /* Medium screens */
97
+ @media (max-width: 992px) {
98
+ .version-corner {
99
+ right: 7%;
100
+ font-size: 1rem;
101
+ }
102
+ }
103
+
104
+ /* Small screens */
105
+ @media (max-width: 576px) {
106
+ .version-corner {
107
+ right: 4%;
108
+ }
109
+
110
+ .color-swatch {
111
+ margin: 0 auto 7px auto;
112
+ width: 92%;
113
+ height: 50px;
114
+ }
115
+ }
116
+ </style>
117
+
118
+ <script src="maverick-wave.min.js"></script>
119
+ </head>
120
+
121
+ <body>
122
+ <!-- Header -->
123
+ <header class="mw-header mw-localhost-indicator-activated">
124
+ <div class="mw-container">
125
+ @@include('./src/partials/header-container.html')
126
+ </div>
127
+ </header>
128
+
129
+ <main class="mw-main">
130
+ <!-- Home section -->
131
+ <section id="home">
132
+ <div class="mw-container">
133
+ @@include('./src/partials/home-container.html')
134
+ </div>
135
+ </section>
136
+
137
+ <!-- Get started section -->
138
+ <section id="get-started">
139
+ <div class="mw-container">
140
+ <h2 class="mw-section-title">Get started</h2>
141
+ @@include('./src/partials/get-started-container.html')
142
+ </div>
143
+ </section>
144
+
145
+ <!-- Documentation section -->
146
+ <section id="documentation" class="mw-section-alternate">
147
+ <div class="mw-container">
148
+ <h2 class="mw-section-title">Documentation</h2>
149
+ @@include('./src/partials/documentation-container.html')
150
+ </div>
151
+ </section>
152
+
153
+ <!-- Foundations section -->
154
+ <section id="foundations">
155
+ <div class="mw-container">
156
+ <h2 class="mw-section-title">Foundations</h2>
157
+ <div class="mw-button-bar mw-button-bar-primary">
158
+ <a href="#typography" class="mw-btn">Typography</a>
159
+ <a href="#colors" class="mw-btn">Main Colors</a>
160
+ <a href="#utilities" class="mw-btn">Utilities</a>
161
+ <a href="#header-utilities" class="mw-btn">Header Utilities</a>
162
+ <a href="#coming-soon" class="mw-btn">Coming Soon Banner</a>
163
+ <a href="#divider" class="mw-btn">Divider</a>
164
+ </div>
165
+
166
+ <!-- Typography container -->
167
+ <div id="typography">
168
+ @@include('./src/partials/typography-container.html')
169
+ </div>
170
+
171
+ <!-- Colors container -->
172
+ <div id="colors">
173
+ @@include('./src/partials/colors-container.html')
174
+ </div>
175
+
176
+ <!-- Utilities container -->
177
+ <div id="utilities">
178
+ @@include('./src/partials/utilities-container.html')
179
+ </div>
180
+
181
+ <!-- Header Utilities container -->
182
+ <div id="header-utilities">
183
+ @@include('./src/partials/header-utilities-container.html')
184
+ </div>
185
+
186
+ <!-- Coming Soon container -->
187
+ <div id="coming-soon">
188
+ @@include('./src/partials/coming-soon-container.html')
189
+ </div>
190
+
191
+ <!-- Divider container -->
192
+ <div id="divider">
193
+ @@include('./src/partials/divider-container.html')
194
+ </div>
195
+ </div>
196
+ </section>
197
+
198
+ <!-- Layout section -->
199
+ <section id="layout" class="mw-section-alternate">
200
+ <div class="mw-container">
201
+ <h2 class="mw-section-title">Layout</h2>
202
+ <div class="mw-button-bar mw-button-bar-primary">
203
+ <a href="#grid" class="mw-btn">Grid System</a>
204
+ <a href="#cards" class="mw-btn">Cards</a>
205
+ <a href="#panels" class="mw-btn">Panels</a>
206
+ <a href="#tabs" class="mw-btn">Tabs</a>
207
+ <a href="#accordions" class="mw-btn">Accordions</a>
208
+ <a href="#tiles" class="mw-btn">Tiles</a>
209
+ <a href="#breadcrumbs" class="mw-btn">Breadcrumbs</a>
210
+ <a href="#modals" class="mw-btn">Modals</a>
211
+ <a href="#html-lists" class="mw-btn">HTML Lists</a>
212
+ <a href="#item-lists" class="mw-btn">Item Lists</a>
213
+ <a href="#stepper" class="mw-btn">Stepper</a>
214
+ </div>
215
+
216
+ <!-- Grid container -->
217
+ <div id="grid">@@include('./src/partials/grid-container.html')</div>
218
+
219
+ <!-- Cards container -->
220
+ <div id="cards">@@include('./src/partials/cards-container.html')</div>
221
+
222
+ <!-- Panels container -->
223
+ <div id="panels">
224
+ @@include('./src/partials/panels-container.html')
225
+ </div>
226
+
227
+ <!-- Tabs container -->
228
+ <div id="tabs">@@include('./src/partials/tabs-container.html')</div>
229
+
230
+ <!-- Accordions contaier -->
231
+ <div id="accordions">
232
+ @@include('./src/partials/accordions-container.html')
233
+ </div>
234
+
235
+ <!-- Tiles container -->
236
+ <div id="tiles">@@include('./src/partials/tiles-container.html')</div>
237
+
238
+ <!-- Breadcrumbs container -->
239
+ <div id="breadcrumbs">
240
+ @@include('./src/partials/breadcrumbs-container.html')
241
+ </div>
242
+
243
+ <!-- Modals container -->
244
+ <div id="modals">
245
+ @@include('./src/partials/modals-container.html')
246
+ </div>
247
+
248
+ <!-- HTML Lists container -->
249
+ <div id="html-lists">
250
+ @@include('./src/partials/html-lists-container.html')
251
+ </div>
252
+
253
+ <!-- Item Lists container -->
254
+ <div id="item-lists">
255
+ @@include('./src/partials/item-lists-container.html')
256
+ </div>
257
+
258
+ <!-- Stepper container -->
259
+ <div id="stepper">
260
+ @@include('./src/partials/stepper-container.html')
261
+ </div>
262
+ </div>
263
+ </section>
264
+
265
+ <!-- Components section -->
266
+ <section id="components">
267
+ <div class="mw-container">
268
+ <h2 class="mw-section-title">Components</h2>
269
+ <div class="mw-button-bar mw-button-bar-primary">
270
+ <a href="#buttons" class="mw-btn">Buttons</a>
271
+ <a href="#button-bar" class="mw-btn">Button Bar</a>
272
+ <a href="#progress" class="mw-btn">Progress Bars</a>
273
+ <a href="#spinners" class="mw-btn">Loading Spinners</a>
274
+ <a href="#avatars" class="mw-btn">Avatars</a>
275
+ <a href="#tags" class="mw-btn">Tags</a>
276
+ <a href="#ratings" class="mw-btn">Ratings</a>
277
+ <a href="#info" class="mw-btn">Info</a>
278
+ <a href="#alerts" class="mw-btn">Alerts</a>
279
+ <a href="#code" class="mw-btn">Code</a>
280
+ <a href="#skeleton" class="mw-btn">Skeleton</a>
281
+ <a href="#empty-state" class="mw-btn">Empty State</a>
282
+ </div>
283
+
284
+ <!-- Buttons container -->
285
+ <div id="buttons">
286
+ @@include('./src/partials/buttons-container.html')
287
+ </div>
288
+
289
+ <!-- Button Bar container -->
290
+ <div id="button-bar">
291
+ @@include('./src/partials/button-bar-container.html')
292
+ </div>
293
+
294
+ <!-- Progress container -->
295
+ <div id="progress">
296
+ @@include('./src/partials/progress-container.html')
297
+ </div>
298
+
299
+ <!-- Spinners container -->
300
+ <div id="spinners">
301
+ @@include('./src/partials/spinners-container.html')
302
+ </div>
303
+
304
+ <!-- Avatars container -->
305
+ <div id="avatars">
306
+ @@include('./src/partials/avatars-container.html')
307
+ </div>
308
+
309
+ <!-- Tags container -->
310
+ <div id="tags">@@include('./src/partials/tags-container.html')</div>
311
+
312
+ <!-- Ratings container -->
313
+ <div id="ratings">
314
+ @@include('./src/partials/ratings-container.html')
315
+ </div>
316
+
317
+ <!-- Info container -->
318
+ <div id="info">@@include('./src/partials/info-container.html')</div>
319
+
320
+ <!-- Alerts container -->
321
+ <div id="alerts">
322
+ @@include('./src/partials/alerts-container.html')
323
+ </div>
324
+
325
+ <!-- Code container -->
326
+ <div id="code">@@include('./src/partials/code-container.html')</div>
327
+
328
+ <!-- Skeleton container -->
329
+ <div id="skeleton">
330
+ @@include('./src/partials/skeleton-container.html')
331
+ </div>
332
+
333
+ <!-- Empty State container -->
334
+ <div id="empty-state">
335
+ @@include('./src/partials/empty-state-container.html')
336
+ </div>
337
+ </div>
338
+ </section>
339
+
340
+ <!-- Forms section -->
341
+ <section id="forms" class="mw-section-alternate">
342
+ <div class="mw-container">
343
+ <h2 class="mw-section-title">Forms</h2>
344
+ <div class="mw-button-bar mw-button-bar-primary">
345
+ <a href="#form-elements" class="mw-btn">Form Elements</a>
346
+ <a href="#input-group" class="mw-btn">Input Group</a>
347
+ <a href="#form-field" class="mw-btn">Field Pattern</a>
348
+ <a href="#form" class="mw-btn">Form</a>
349
+ <a href="#login" class="mw-btn">Login</a>
350
+ </div>
351
+
352
+ <!-- Form elements container -->
353
+ <div id="form-elements">
354
+ @@include('./src/partials/form-elements-container.html')
355
+ </div>
356
+
357
+ <!-- Input Group container -->
358
+ <div id="input-group">
359
+ @@include('./src/partials/input-group-container.html')
360
+ </div>
361
+
362
+ <!-- Form Field pattern container -->
363
+ <div id="form-field">
364
+ @@include('./src/partials/form-field-container.html')
365
+ </div>
366
+
367
+ <!-- Form container -->
368
+ <div id="form">@@include('./src/partials/form-container.html')</div>
369
+
370
+ <!-- Login container -->
371
+ <div id="login">@@include('./src/partials/login-container.html')</div>
372
+ </div>
373
+ </section>
374
+
375
+ <!-- Data & display section -->
376
+ <section id="data-display">
377
+ <div class="mw-container">
378
+ <h2 class="mw-section-title">Data & Display</h2>
379
+ <div class="mw-button-bar mw-button-bar-primary">
380
+ <a href="#meta-info" class="mw-btn">Meta Info</a>
381
+ <a href="#tables" class="mw-btn">Tables</a>
382
+ <a href="#pagination" class="mw-btn">Pagination</a>
383
+ <a href="#timelines" class="mw-btn">Timelines</a>
384
+ <a href="#gallery" class="mw-btn">Image Gallery</a>
385
+ <a href="#techstack-bucket" class="mw-btn"
386
+ >Technology Stack Bucket</a
387
+ >
388
+ <a href="#content-slider" class="mw-btn">Content Slider</a>
389
+ <a href="#blog-posts" class="mw-btn">Blog Posts</a>
390
+ </div>
391
+
392
+ <!-- Meta Info container -->
393
+ <div id="meta-info">
394
+ @@include('./src/partials/meta-info-container.html')
395
+ </div>
396
+
397
+ <!-- Tables container -->
398
+ <div id="tables">
399
+ @@include('./src/partials/tables-container.html')
400
+ </div>
401
+
402
+ <!-- Pagination container -->
403
+ <div id="pagination">
404
+ @@include('./src/partials/pagination-container.html')
405
+ </div>
406
+
407
+ <!-- Timeline container -->
408
+ <div id="timelines">
409
+ @@include('./src/partials/timelines-container.html')
410
+ </div>
411
+
412
+ <!-- Gallery container-->
413
+ <div id="gallery">
414
+ @@include('./src/partials/gallery-container.html')
415
+ </div>
416
+
417
+ <!-- Tech stack container-->
418
+ <div id="techstack-bucket">
419
+ @@include('./src/partials/techstack-bucket-container.html')
420
+ </div>
421
+
422
+ <!-- Content slider container-->
423
+ <div id="content-slider">
424
+ @@include('./src/partials/content-slider-container.html')
425
+ </div>
426
+
427
+ <!-- Blogposts container-->
428
+ <div id="blog-posts">
429
+ @@include('./src/partials/blog-posts-container.html')
430
+ </div>
431
+ </div>
432
+ </section>
433
+ </main>
434
+
435
+ <!-- Footer -->
436
+ <footer class="mw-footer">
437
+ <div class="mw-container">
438
+ @@include('./src/partials/footer-container.html')
439
+ </div>
440
+ </footer>
441
+ <script>
442
+ // just for the showcase (login button triggers login error)
443
+ document.addEventListener('DOMContentLoaded', () => {
444
+ const loginCard = document.querySelector('.mw-login');
445
+ const form = document.getElementById('login-form');
446
+ if (form) {
447
+ const btn = form.querySelector('.mw-btn-primary');
448
+ if (btn) {
449
+ btn.addEventListener('click', (e) => {
450
+ e.preventDefault();
451
+ loginCard.classList.remove('mw-login-error');
452
+ void loginCard.offsetWidth;
453
+ loginCard.classList.add('mw-login-error');
454
+ setTimeout(() => {
455
+ loginCard.classList.remove('mw-login-error');
456
+ }, 4000);
457
+ });
458
+ }
459
+ }
460
+ });
461
+
462
+ // for the modals
463
+ function openModal(modalId) {
464
+ document.getElementById(modalId).classList.add('mw-modal-open');
465
+ }
466
+
467
+ function closeModal(modalId) {
468
+ document.getElementById(modalId).classList.remove('mw-modal-open');
469
+ }
470
+ </script>
471
+ </body>
472
+ </html>