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,141 @@
1
+ <h3 class="mw-section-subtitle">Form Field Pattern</h3>
2
+
3
+ <div class="mw-grid-2 mw-gap-6">
4
+ <!-- LEFT: mw-field wrapper -->
5
+ <div>
6
+ <h3 class="mw-card-title mw-mb-4">Field Wrapper (mw-field)</h3>
7
+ <div class="mw-card mw-card-simple">
8
+ <p class="mw-text-muted mw-text-sm mw-mb-4">
9
+ The <code>mw-field</code> wrapper groups label, input, hint, and error
10
+ message as a single unit — the recommended pattern for Angular reactive
11
+ forms.
12
+ </p>
13
+
14
+ <!-- Normal field with hint -->
15
+ <div class="mw-field mw-mb-4">
16
+ <label class="mw-field-label mw-required" for="ff-email"
17
+ >Email address</label
18
+ >
19
+ <input
20
+ id="ff-email"
21
+ type="email"
22
+ class="mw-input"
23
+ placeholder="user@example.com"
24
+ />
25
+ <span class="mw-field-hint"
26
+ >We'll never share your email with anyone.</span
27
+ >
28
+ </div>
29
+
30
+ <!-- Field in error state -->
31
+ <div class="mw-field mw-field-has-error mw-mb-4">
32
+ <label class="mw-field-label mw-required" for="ff-email-err"
33
+ >Email address</label
34
+ >
35
+ <input
36
+ id="ff-email-err"
37
+ type="email"
38
+ class="mw-input"
39
+ value="not-an-email"
40
+ />
41
+ <span class="mw-field-error">
42
+ <i class="fas fa-exclamation-circle"></i>
43
+ Please enter a valid email address.
44
+ </span>
45
+ </div>
46
+
47
+ <!-- Select field with hint -->
48
+ <div class="mw-field mw-mb-4">
49
+ <label class="mw-field-label" for="ff-country">Country</label>
50
+ <select id="ff-country" class="mw-select">
51
+ <option value="" disabled selected>Select a country</option>
52
+ <option>Germany</option>
53
+ <option>Austria</option>
54
+ <option>Switzerland</option>
55
+ </select>
56
+ <span class="mw-field-hint"
57
+ >Your billing country for tax purposes.</span
58
+ >
59
+ </div>
60
+
61
+ <!-- Textarea with character hint -->
62
+ <div class="mw-field">
63
+ <label class="mw-field-label mw-required" for="ff-bio">Bio</label>
64
+ <textarea
65
+ id="ff-bio"
66
+ class="mw-textarea"
67
+ rows="3"
68
+ placeholder="Tell us about yourself..."
69
+ ></textarea>
70
+ <span class="mw-field-hint">Maximum 500 characters.</span>
71
+ </div>
72
+ </div>
73
+ </div>
74
+
75
+ <!-- RIGHT: Angular validation simulation + readonly -->
76
+ <div>
77
+ <h3 class="mw-card-title mw-mb-4">Validation & Readonly States</h3>
78
+ <div class="mw-card mw-card-simple">
79
+ <p class="mw-text-muted mw-text-sm mw-mb-4">
80
+ Angular adds <code>.ng-invalid.ng-touched</code> and
81
+ <code>.ng-valid.ng-touched.ng-dirty</code>
82
+ automatically. The styles below are applied by the framework.
83
+ </p>
84
+
85
+ <!-- Simulated ng-invalid ng-touched -->
86
+ <div class="mw-field mw-mb-4">
87
+ <label class="mw-field-label mw-required" for="ff-username"
88
+ >Username (invalid &amp; touched)</label
89
+ >
90
+ <input
91
+ id="ff-username"
92
+ type="text"
93
+ class="mw-input ng-invalid ng-touched"
94
+ value=""
95
+ placeholder="Required"
96
+ />
97
+ <span class="mw-field-error">
98
+ <i class="fas fa-exclamation-circle"></i> Username is required.
99
+ </span>
100
+ </div>
101
+
102
+ <!-- Simulated ng-valid ng-touched ng-dirty -->
103
+ <div class="mw-field mw-mb-4">
104
+ <label class="mw-field-label mw-required" for="ff-password"
105
+ >Password (valid &amp; dirty)</label
106
+ >
107
+ <input
108
+ id="ff-password"
109
+ type="password"
110
+ class="mw-input ng-valid ng-touched ng-dirty"
111
+ value="secret123"
112
+ />
113
+ <span class="mw-field-hint">Looks good!</span>
114
+ </div>
115
+
116
+ <!-- Readonly -->
117
+ <div class="mw-field mw-mb-4">
118
+ <label class="mw-field-label" for="ff-account-id"
119
+ >Account ID (readonly)</label
120
+ >
121
+ <input
122
+ id="ff-account-id"
123
+ type="text"
124
+ class="mw-input"
125
+ readonly
126
+ value="USR-00042"
127
+ />
128
+ <span class="mw-field-hint">This value cannot be changed.</span>
129
+ </div>
130
+
131
+ <!-- Disabled -->
132
+ <div class="mw-field">
133
+ <label class="mw-field-label" for="ff-plan">Plan (disabled)</label>
134
+ <select id="ff-plan" class="mw-select" disabled>
135
+ <option>Enterprise</option>
136
+ </select>
137
+ <span class="mw-field-hint">Contact support to change your plan.</span>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
@@ -0,0 +1,49 @@
1
+ <h3 class="mw-section-subtitle">Image Gallery</h3>
2
+
3
+ <div class="mw-gallery-container">
4
+ <div class="mw-gallery">
5
+ <!-- Prev button -->
6
+ <button type="button" class="mw-gallery-navi mw-gallery-navi-prev">
7
+ &#10094;
8
+ </button>
9
+
10
+ <!-- Track -->
11
+ <div class="mw-gallery-track">
12
+ <div class="mw-gallery-slide" data-desc="Beautiful Mountain">
13
+ <img src="https://picsum.photos/id/1011/800/400" alt="1" />
14
+ </div>
15
+ <div class="mw-gallery-slide" data-desc="Peaceful Lake">
16
+ <img src="https://picsum.photos/id/1012/800/400" alt="2" />
17
+ </div>
18
+ <div class="mw-gallery-slide" data-desc="City Vibes">
19
+ <img src="https://picsum.photos/id/1015/800/400" alt="3" />
20
+ </div>
21
+ <div class="mw-gallery-slide" data-desc="Golden Forest">
22
+ <img src="https://picsum.photos/id/1016/800/400" alt="4" />
23
+ </div>
24
+ <div class="mw-gallery-slide" data-desc="Desert View">
25
+ <img src="https://picsum.photos/id/1018/800/400" alt="5" />
26
+ </div>
27
+ <div class="mw-gallery-slide" data-desc="Ocean Breeze">
28
+ <img src="https://picsum.photos/id/1020/800/400" alt="6" />
29
+ </div>
30
+ <div class="mw-gallery-slide" data-desc="Old Town">
31
+ <img src="https://picsum.photos/id/1021/800/400" alt="7" />
32
+ </div>
33
+ <div class="mw-gallery-slide" data-desc="Snowy Hills">
34
+ <img src="https://picsum.photos/id/1025/800/400" alt="8" />
35
+ </div>
36
+ </div>
37
+
38
+ <!-- Next button -->
39
+ <button type="button" class="mw-gallery-navi mw-gallery-navi-next">
40
+ &#10095;
41
+ </button>
42
+ </div>
43
+
44
+ <!-- Description below slider -->
45
+ <div class="mw-gallery-desc">Beautiful Mountain</div>
46
+
47
+ <!-- Dots -->
48
+ <div class="mw-gallery-dots"></div>
49
+ </div>
@@ -0,0 +1,294 @@
1
+ <h3>Installation</h3>
2
+ <p>
3
+ Add MaverickWave CSS framework to your project using one of these methods:
4
+ </p>
5
+
6
+ <h4 class="mw-mt-4">Option 1: CDN</h4>
7
+ <pre
8
+ class="mw-code-block"
9
+ ><code>&lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/m1well/maverick-wave@v{{VERSION}}/maverick-wave.min.css"&gt;
10
+ &lt;script src="https://cdn.jsdelivr.net/gh/m1well/maverick-wave@v{{VERSION}}/maverick-wave.min.js"&gt;&lt;/script&gt;</code></pre>
11
+
12
+ <h4 class="mw-mt-4">Option 2: Direct Download</h4>
13
+ <div class="mw-d-flex mw-gap-4">
14
+ <a href="maverick-wave.min.css" download class="mw-btn mw-btn-primary">
15
+ Download CSS
16
+ </a>
17
+ <a href="maverick-wave.min.js" download class="mw-btn mw-btn-outline">
18
+ Download JS
19
+ </a>
20
+ </div>
21
+
22
+ <h3 class="mw-mt-6">Integration Options</h3>
23
+
24
+ <div class="mw-tabs mw-mb-6">
25
+ <div class="mw-tabs-nav">
26
+ <div class="mw-tabs-nav-item active" data-tab="html-css">HTML/CSS</div>
27
+ <div class="mw-tabs-nav-item" data-tab="scss">SCSS Projects</div>
28
+ <div class="mw-tabs-nav-item" data-tab="angular">Angular</div>
29
+ <div class="mw-tabs-nav-item" data-tab="react">React</div>
30
+ </div>
31
+
32
+ <div class="mw-tabs-content">
33
+ <!-- HTML/CSS Tab -->
34
+ <div class="mw-tabs-panel active" id="html-css">
35
+ <div class="mw-card mw-card-simple">
36
+ <h4>Using Pre-compiled CSS (CDN or Download)</h4>
37
+ <p>
38
+ This is the simplest method if you don't need SCSS customization. Link
39
+ the compiled <code>maverick-wave.min.css</code> and
40
+ <code>maverick-wave.min.js</code> files in your HTML head and before
41
+ the closing body tag, respectively.
42
+ </p>
43
+ <pre class="mw-code-block"><code>&lt;!DOCTYPE html&gt;
44
+ &lt;html lang="en"&gt;
45
+ &lt;head&gt;
46
+ &lt;meta charset="UTF-8"&gt;
47
+ &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
48
+ &lt;title&gt;My MaverickWave Project&lt;/title&gt;
49
+ &lt;!-- Framework CSS --&gt;
50
+ &lt;link rel="stylesheet" href="path/to/maverick-wave.min.css"&gt;
51
+
52
+ &lt;!-- Your Custom Styles (load AFTER framework) --&gt;
53
+ &lt;link rel="stylesheet" href="your-custom-styles.css"&gt;
54
+ &lt;/head&gt;
55
+ &lt;body&gt;
56
+ &lt;!-- Your content --&gt;
57
+
58
+ &lt;!-- Framework JS --&gt;
59
+ &lt;script src="path/to/maverick-wave.min.js"&gt;&lt;/script&gt;
60
+ &lt;/body&gt;
61
+ &lt;/html&gt;</code></pre>
62
+
63
+ <h5 class="mw-mt-4">Customizing via CSS Variables</h5>
64
+ <p>
65
+ Even without SCSS, you can customize colors and fonts by overriding
66
+ the CSS custom properties. Create your own CSS file and load it
67
+ <strong>after</strong> the MaverickWave CSS.
68
+ </p>
69
+ <pre class="mw-code-block"><code>/* your-custom-styles.css */
70
+ :root {
71
+ /* Brand colors */
72
+ --mw-primary-color: #e94560;
73
+ --mw-secondary-color: #f39c12;
74
+
75
+ /* Dark theme overrides */
76
+ --mw-dark-page-background: #1a1a2e;
77
+ --mw-dark-card-background: #2a2a4a;
78
+
79
+ /* Light theme overrides */
80
+ --mw-light-page-background: #ffffff;
81
+ --mw-light-card-background: #f0f0f5;
82
+
83
+ /* Font */
84
+ --mw-font-family-base: 'Your Custom Font', sans-serif;
85
+ }</code></pre>
86
+ </div>
87
+ </div>
88
+
89
+ <!-- SCSS Tab -->
90
+ <div class="mw-tabs-panel" id="scss">
91
+ <div class="mw-card mw-card-simple">
92
+ <h4>Using SCSS Source Files</h4>
93
+ <p>
94
+ For full customization, clone the repository and integrate the SCSS
95
+ source directly into your project's Sass build (Dart Sass required).
96
+ The entry point is <code>src/scss/main.scss</code>.
97
+ </p>
98
+ <p>
99
+ MaverickWave uses <code>@use</code> / <code>@forward</code> (modern
100
+ Sass module syntax). Override Sass variables <em>before</em> importing
101
+ the framework.
102
+ </p>
103
+
104
+ <h5 class="mw-mt-4">Theme Mode</h5>
105
+ <p>Set <code>$mw-theme-mode</code> to control theme behavior:</p>
106
+ <ul>
107
+ <li>
108
+ <code>'switchable'</code> (default) — dark base, toggleable to light
109
+ via <code>.mw-theme-light</code> on <code>&lt;body&gt;</code>
110
+ </li>
111
+ <li><code>'dark'</code> — compile dark theme only</li>
112
+ <li><code>'light'</code> — compile light theme only</li>
113
+ </ul>
114
+ <p class="mw-text-warning">
115
+ <i class="fas fa-exclamation-triangle mw-mr-1"></i>
116
+ <strong>Note:</strong> The main header and navigation always use the
117
+ dark appearance regardless of theme mode.
118
+ </p>
119
+
120
+ <h5 class="mw-mt-4">Example — your main SCSS file</h5>
121
+ <pre class="mw-code-block"><code>// styles.scss
122
+
123
+ // 1. Theme mode (optional, default is 'switchable')
124
+ $mw-theme-mode: 'switchable';
125
+
126
+ // 2. Override base color variables
127
+ $primary-color: #e94560;
128
+ $secondary-color: #f39c12;
129
+
130
+ // 3. Override background / text colors
131
+ $dark-background: #1f1f2e;
132
+ $light-background: #f8f9fa;
133
+ $dark-text-color: #ffffff;
134
+ $light-text-color: #1c1c1c;
135
+
136
+ // 4. Import the framework (adjust path as needed)
137
+ @use 'path/to/maverick-wave/src/scss/main';
138
+
139
+ // 5. Your additional styles
140
+ body {
141
+ // custom overrides
142
+ }</code></pre>
143
+ </div>
144
+ </div>
145
+
146
+ <!-- Angular Tab -->
147
+ <div class="mw-tabs-panel" id="angular">
148
+ <div class="mw-card mw-card-simple">
149
+ <h4>Angular Integration</h4>
150
+ <p>
151
+ Download the compiled files and place them in your Angular project
152
+ (e.g. <code>src/assets/</code>), then reference them in
153
+ <code>angular.json</code>:
154
+ </p>
155
+ <pre class="mw-code-block"><code>// angular.json
156
+ "styles": [
157
+ "src/assets/maverick-wave.min.css",
158
+ "src/styles.scss"
159
+ ],
160
+ "scripts": [
161
+ "src/assets/maverick-wave.min.js"
162
+ ]</code></pre>
163
+ <p>
164
+ Alternatively, use the CDN link directly in
165
+ <code>src/index.html</code>:
166
+ </p>
167
+ <pre class="mw-code-block"><code>&lt;link rel="stylesheet"
168
+ href="https://cdn.jsdelivr.net/gh/m1well/maverick-wave@v{{VERSION}}/maverick-wave.min.css"&gt;</code></pre>
169
+ <p>
170
+ For SCSS integration, copy the <code>src/scss/</code> source into your
171
+ project and import it from <code>src/styles.scss</code>:
172
+ </p>
173
+ <pre class="mw-code-block"><code>// src/styles.scss
174
+ $primary-color: #3f51b5;
175
+ $mw-theme-mode: 'switchable';
176
+
177
+ @use 'maverick-wave/src/scss/main';</code></pre>
178
+ <h5 class="mw-mt-4">Theme switching</h5>
179
+ <pre class="mw-code-block"><code>// app.component.ts
180
+ toggleTheme() {
181
+ document.body.classList.toggle('mw-theme-light');
182
+ }</code></pre>
183
+ <h5 class="mw-mt-4">Reactive Forms</h5>
184
+ <p>
185
+ MaverickWave automatically styles Angular form state classes. Use the
186
+ <code>mw-field</code> wrapper pattern:
187
+ </p>
188
+ <pre
189
+ class="mw-code-block"
190
+ ><code>&lt;div class="mw-field" [class.mw-field-has-error]="email.invalid && email.touched"&gt;
191
+ &lt;label class="mw-field-label mw-required" for="email"&gt;Email&lt;/label&gt;
192
+ &lt;input id="email" type="email" class="mw-input" formControlName="email" /&gt;
193
+ &lt;span class="mw-field-error" *ngIf="email.invalid && email.touched"&gt;
194
+ &lt;i class="fas fa-exclamation-circle"&gt;&lt;/i&gt; Please enter a valid email.
195
+ &lt;/span&gt;
196
+ &lt;/div&gt;</code></pre>
197
+ </div>
198
+ </div>
199
+
200
+ <!-- React Tab -->
201
+ <div class="mw-tabs-panel" id="react">
202
+ <div class="mw-card mw-card-simple">
203
+ <h4>React Integration</h4>
204
+ <p>
205
+ Download the compiled CSS file and import it in your entry point, or
206
+ use the CDN link in <code>index.html</code>:
207
+ </p>
208
+ <pre class="mw-code-block"><code>// main.jsx / index.js
209
+ import './assets/maverick-wave.min.css';
210
+
211
+ // If you need the JS functionality (accordion, tabs, etc.)
212
+ import './assets/maverick-wave.min.js';</code></pre>
213
+ <p>Example usage in a React component:</p>
214
+ <pre class="mw-code-block"><code>function App() {
215
+ return (
216
+ &lt;div className="mw-container"&gt;
217
+ &lt;h1 className="mw-text-primary"&gt;Hello, MaverickWave!&lt;/h1&gt;
218
+ &lt;button className="mw-btn mw-btn-primary"&gt;Get Started&lt;/button&gt;
219
+ &lt;/div&gt;
220
+ );
221
+ }</code></pre>
222
+ <p>
223
+ For SCSS integration with Vite, copy the source and import from your
224
+ main stylesheet:
225
+ </p>
226
+ <pre class="mw-code-block"><code>/* src/index.css or src/App.scss */
227
+ @use './maverick-wave/src/scss/main';</code></pre>
228
+ </div>
229
+ </div>
230
+ </div>
231
+ </div>
232
+
233
+ <h3 class="mw-mt-6">Adding Custom Fonts</h3>
234
+ <p>
235
+ To use custom fonts with MaverickWave, load the font files using
236
+ <code>@font-face</code> and then override the CSS font variable.
237
+ </p>
238
+ <div class="mw-card mw-card-simple">
239
+ <h5 class="mw-mb-2">1. Load the Font</h5>
240
+ <pre class="mw-code-block"><code>/* your-custom-styles.css */
241
+ @font-face {
242
+ font-family: 'Your Custom Font';
243
+ src: url('/path/to/font.woff2') format('woff2'),
244
+ url('/path/to/font.woff') format('woff');
245
+ font-weight: 400;
246
+ font-style: normal;
247
+ font-display: swap;
248
+ }
249
+
250
+ @font-face {
251
+ font-family: 'Your Custom Font';
252
+ src: url('/path/to/font-bold.woff2') format('woff2'),
253
+ url('/path/to/font-bold.woff') format('woff');
254
+ font-weight: 700;
255
+ font-style: normal;
256
+ font-display: swap;
257
+ }
258
+ </code></pre>
259
+
260
+ <h5 class="mw-mt-4 mw-mb-2">2. Apply the Font</h5>
261
+ <p>
262
+ <strong>CSS Variable Method:</strong>
263
+ </p>
264
+ <pre
265
+ class="mw-code-block"
266
+ ><code>/* your-custom-styles.css — load AFTER maverick-wave.min.css */
267
+ :root {
268
+ --mw-font-family-base: 'Your Custom Font', system-ui, sans-serif;
269
+ --mw-font-family-heading: 'Your Custom Font', system-ui, sans-serif;
270
+ }</code></pre>
271
+ </div>
272
+
273
+ <div class="mw-d-flex mw-flex-wrap mw-gap-4 mw-justify-center mw-mt-6">
274
+ <button
275
+ type="button"
276
+ onclick="location.href = '#documentation'"
277
+ class="mw-btn mw-btn-primary"
278
+ >
279
+ Explore Documentation
280
+ </button>
281
+ <button
282
+ type="button"
283
+ onclick="
284
+ window.open(
285
+ 'https://github.com/m1well/maverick-wave',
286
+ '_blank',
287
+ 'noopener'
288
+ )
289
+ "
290
+ class="mw-btn mw-btn-outline"
291
+ >
292
+ <i class="fab fa-github"></i> GitHub Repository
293
+ </button>
294
+ </div>
@@ -0,0 +1,171 @@
1
+ <h3 class="mw-section-subtitle">Grid System</h3>
2
+
3
+ <p class="mw-text-muted mw-mb-4">
4
+ MaverickWave CSS framework provides a simple grid system that adapts to
5
+ different screen sizes, making responsive layouts simple to implement. It also
6
+ has an advanced grid system with custom column spans. Perfect for complex
7
+ layouts that need different column widths. Automatically stacks to single
8
+ column on mobile devices.
9
+ </p>
10
+
11
+ <h3 class="mw-mb-4">Grid with 1 Column</h3>
12
+ <div class="mw-grid-1 mw-mb-6">
13
+ <div class="mw-card mw-card-simple">Column 1</div>
14
+ </div>
15
+
16
+ <h3 class="mw-mb-4">Grid with 2 Columns</h3>
17
+ <div class="mw-grid-2 mw-mb-6">
18
+ <div class="mw-card mw-card-simple">Column 1</div>
19
+ <div class="mw-card mw-card-simple">Column 2</div>
20
+ </div>
21
+
22
+ <h3 class="mw-mb-4">Grid with 3 Columns</h3>
23
+ <div class="mw-grid-3 mw-mb-6">
24
+ <div class="mw-card mw-card-simple">Column 1</div>
25
+ <div class="mw-card mw-card-simple">Column 2</div>
26
+ <div class="mw-card mw-card-simple">Column 3</div>
27
+ </div>
28
+
29
+ <h3 class="mw-mb-4">Grid with 4 Columns</h3>
30
+ <div class="mw-grid-4 mw-mb-6">
31
+ <div class="mw-card mw-card-simple">Column 1</div>
32
+ <div class="mw-card mw-card-simple">Column 2</div>
33
+ <div class="mw-card mw-card-simple">Column 3</div>
34
+ <div class="mw-card mw-card-simple">Column 4</div>
35
+ </div>
36
+
37
+ <h3 class="mw-mb-4">Grid with 5 Columns</h3>
38
+ <div class="mw-grid-5 mw-mb-6">
39
+ <div class="mw-card mw-card-simple">Column 1</div>
40
+ <div class="mw-card mw-card-simple">Column 2</div>
41
+ <div class="mw-card mw-card-simple">Column 3</div>
42
+ <div class="mw-card mw-card-simple">Column 4</div>
43
+ <div class="mw-card mw-card-simple">Column 5</div>
44
+ </div>
45
+
46
+ <h3 class="mw-mb-3">Flexible Grid with Column Spans</h3>
47
+ <p class="mw-mb-2 mw-text-sm mw-text-muted">
48
+ 12-column grid with custom spans: 2 columns + 4 columns + 1 column
49
+ </p>
50
+ <div class="mw-grid-flex mw-mb-6">
51
+ <div class="mw-col-span-2 mw-card mw-card-simple">Span 2 Columns</div>
52
+ <div class="mw-col-span-4 mw-card mw-card-simple">Span 4 Columns</div>
53
+ <div class="mw-col-span-1 mw-card mw-card-simple">1 col</div>
54
+ </div>
55
+
56
+ <h3 class="mw-mb-3">Mixed Column Spans</h3>
57
+ <p class="mw-mb-2 mw-text-sm mw-text-muted">
58
+ Various column combinations: 3 + 6 + 3 columns
59
+ </p>
60
+ <div class="mw-grid-flex mw-mb-6">
61
+ <div class="mw-col-span-3 mw-card mw-card-simple">Span 3 Columns</div>
62
+ <div class="mw-col-span-6 mw-card mw-card-simple">
63
+ Span 6 Columns (Main Content)
64
+ </div>
65
+ <div class="mw-col-span-3 mw-card mw-card-simple">Span 3 Columns</div>
66
+ </div>
67
+
68
+ <h3 class="mw-mb-3">Asymmetric Layout</h3>
69
+ <p class="mw-mb-2 mw-text-sm mw-text-muted">
70
+ Sidebar + content layout: 4 + 8 columns
71
+ </p>
72
+ <div class="mw-grid-flex mw-mb-6">
73
+ <div class="mw-col-span-4 mw-card mw-card-simple">Sidebar (4 cols)</div>
74
+ <div class="mw-col-span-8 mw-card mw-card-simple">
75
+ Main Content Area (8 cols)
76
+ </div>
77
+ </div>
78
+
79
+ <h3 class="mw-mb-3">Auto Grid (Responsive Card Layout)</h3>
80
+ <p class="mw-mb-2 mw-text-sm mw-text-muted">
81
+ Perfect for unknown number of items. Cards maintain minimum 300px width and
82
+ automatically wrap to new rows. Great for product listings, galleries, or any
83
+ dynamic content.
84
+ </p>
85
+ <div class="mw-grid-auto-sm mw-mb-6">
86
+ <div class="mw-card mw-card-simple">Product Card</div>
87
+ <div class="mw-card mw-card-simple">Service Card</div>
88
+ <div class="mw-card mw-card-simple">Team Member</div>
89
+ <div class="mw-card mw-card-simple">Portfolio Item</div>
90
+ <div class="mw-card mw-card-simple">Blog Post</div>
91
+ <div class="mw-card mw-card-simple">Feature</div>
92
+ </div>
93
+
94
+ <h3 class="mw-mb-4">Grid with 3 Columns - Default Spacing</h3>
95
+ <div class="mw-grid-3 mw-mb-6">
96
+ <div class="mw-card mw-card-simple">Column 1</div>
97
+ <div class="mw-card mw-card-simple">Column 2</div>
98
+ <div class="mw-card mw-card-simple">Column 3</div>
99
+ </div>
100
+
101
+ <h3 class="mw-mb-4">Grid with 3 Columns - Large Spacing</h3>
102
+ <div class="mw-grid-3-lg mw-mb-6">
103
+ <div class="mw-card mw-card-simple">Column 1</div>
104
+ <div class="mw-card mw-card-simple">Column 2</div>
105
+ <div class="mw-card mw-card-simple">Column 3</div>
106
+ </div>
107
+
108
+ <h3 class="mw-mb-4">Flexible Grid - Default Spacing</h3>
109
+ <div class="mw-grid-flex mw-mb-6">
110
+ <div class="mw-col-span-4 mw-card mw-card-simple">4 Columns</div>
111
+ <div class="mw-col-span-8 mw-card mw-card-simple">8 Columns</div>
112
+ </div>
113
+
114
+ <h3 class="mw-mb-4">Flexible Grid - Large Spacing</h3>
115
+ <div class="mw-grid-flex-lg mw-mb-6">
116
+ <div class="mw-col-span-4 mw-card mw-card-simple">4 Columns</div>
117
+ <div class="mw-col-span-8 mw-card mw-card-simple">8 Columns</div>
118
+ </div>
119
+
120
+ <h3 class="mw-mb-4">Auto Grid - Large Spacing</h3>
121
+ <div class="mw-grid-auto-lg mw-mb-6">
122
+ <div class="mw-card mw-card-simple">Auto 1</div>
123
+ <div class="mw-card mw-card-simple">Auto 2</div>
124
+ <div class="mw-card mw-card-simple">Auto 3</div>
125
+ <div class="mw-card mw-card-simple">Auto 4</div>
126
+ </div>
127
+
128
+ <h3 class="mw-mb-4">Grid Stack - Natural Width (Left Aligned)</h3>
129
+ <div class="mw-grid-stack mw-mb-6">
130
+ <button class="mw-btn mw-btn-primary">Small Button</button>
131
+ <button class="mw-btn mw-btn-secondary">Medium Length Button</button>
132
+ <button class="mw-btn mw-btn-outline">Very Long Button Text Here</button>
133
+ <div class="mw-card mw-card-simple" style="width: 200px">
134
+ Fixed Width Card
135
+ </div>
136
+ </div>
137
+
138
+ <h3 class="mw-mb-4">Grid Stack - Centered</h3>
139
+ <div class="mw-grid-stack-center mw-mb-6">
140
+ <button class="mw-btn mw-btn-primary">Small Button</button>
141
+ <button class="mw-btn mw-btn-secondary">Medium Length Button</button>
142
+ <button class="mw-btn mw-btn-outline">Very Long Button Text Here</button>
143
+ <div class="mw-card mw-card-simple" style="width: 200px">
144
+ Fixed Width Card
145
+ </div>
146
+ </div>
147
+
148
+ <h3 class="mw-mb-4">Grid Stack - Right Aligned</h3>
149
+ <div class="mw-grid-stack-end mw-mb-6">
150
+ <button class="mw-btn mw-btn-primary">Small Button</button>
151
+ <button class="mw-btn mw-btn-secondary">Medium Length Button</button>
152
+ <button class="mw-btn mw-btn-outline">Very Long Button Text Here</button>
153
+ <div class="mw-card mw-card-simple" style="width: 200px">
154
+ Fixed Width Card
155
+ </div>
156
+ </div>
157
+
158
+ <h3 class="mw-mb-4">Grid Stack - Full Width (Same as Grid-1)</h3>
159
+ <div class="mw-grid-stack-stretch mw-mb-6">
160
+ <button class="mw-btn mw-btn-primary">Small Button</button>
161
+ <button class="mw-btn mw-btn-secondary">Medium Length Button</button>
162
+ <button class="mw-btn mw-btn-outline">Very Long Button Text Here</button>
163
+ <div class="mw-card mw-card-simple">Full Width Card</div>
164
+ </div>
165
+
166
+ <h3 class="mw-mb-4">Grid Stack - Large Spacing & Centered</h3>
167
+ <div class="mw-grid-stack-center-lg mw-mb-6">
168
+ <button class="mw-btn mw-btn-primary">Button 1</button>
169
+ <button class="mw-btn mw-btn-secondary">Button 2</button>
170
+ <div class="mw-card mw-card-simple" style="width: 300px">Centered Card</div>
171
+ </div>