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.
- package/.claude/commands/mw.md +580 -0
- package/.claude/settings.local.json +11 -0
- package/.idea/codeStyles/Project.xml +59 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/maverick-wave.iml +12 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/.prettierignore +6 -0
- package/.prettierrc.json +7 -0
- package/CHANGELOG.md +420 -0
- package/CLAUDE.md +53 -0
- package/LICENSE +21 -0
- package/README.md +191 -0
- package/gulpfile.js +158 -0
- package/index.html +472 -0
- package/maverick-wave.min.css +1 -0
- package/maverick-wave.min.js +1 -0
- package/package.json +52 -0
- package/release.sh +17 -0
- package/src/assets/favicon/android-chrome-192x192.png +0 -0
- package/src/assets/favicon/android-chrome-512x512.png +0 -0
- package/src/assets/favicon/apple-touch-icon.png +0 -0
- package/src/assets/favicon/favicon-16x16.png +0 -0
- package/src/assets/favicon/favicon-32x32.png +0 -0
- package/src/assets/favicon/site.webmanifest +1 -0
- package/src/assets/favicon.ico +0 -0
- package/src/assets/header-logo.svg +24 -0
- package/src/js/main.js +587 -0
- package/src/partials/accordions-container.html +163 -0
- package/src/partials/alerts-container.html +120 -0
- package/src/partials/avatars-container.html +84 -0
- package/src/partials/blog-posts-container.html +157 -0
- package/src/partials/breadcrumbs-container.html +126 -0
- package/src/partials/button-bar-container.html +168 -0
- package/src/partials/buttons-container.html +133 -0
- package/src/partials/cards-container.html +508 -0
- package/src/partials/code-container.html +194 -0
- package/src/partials/colors-container.html +125 -0
- package/src/partials/coming-soon-container.html +6 -0
- package/src/partials/content-slider-container.html +47 -0
- package/src/partials/divider-container.html +52 -0
- package/src/partials/documentation-container.html +161 -0
- package/src/partials/empty-state-container.html +74 -0
- package/src/partials/footer-container.html +113 -0
- package/src/partials/form-container.html +257 -0
- package/src/partials/form-elements-container.html +595 -0
- package/src/partials/form-field-container.html +141 -0
- package/src/partials/gallery-container.html +49 -0
- package/src/partials/get-started-container.html +294 -0
- package/src/partials/grid-container.html +171 -0
- package/src/partials/header-container.html +49 -0
- package/src/partials/header-utilities-container.html +80 -0
- package/src/partials/home-container.html +48 -0
- package/src/partials/html-lists-container.html +58 -0
- package/src/partials/info-container.html +87 -0
- package/src/partials/input-group-container.html +285 -0
- package/src/partials/item-lists-container.html +413 -0
- package/src/partials/login-container.html +61 -0
- package/src/partials/meta-info-container.html +16 -0
- package/src/partials/modals-container.html +136 -0
- package/src/partials/pagination-container.html +27 -0
- package/src/partials/panels-container.html +196 -0
- package/src/partials/progress-container.html +226 -0
- package/src/partials/ratings-container.html +104 -0
- package/src/partials/skeleton-container.html +82 -0
- package/src/partials/spinners-container.html +92 -0
- package/src/partials/stepper-container.html +107 -0
- package/src/partials/tables-container.html +120 -0
- package/src/partials/tabs-container.html +263 -0
- package/src/partials/tags-container.html +168 -0
- package/src/partials/techstack-bucket-container.html +174 -0
- package/src/partials/tiles-container.html +245 -0
- package/src/partials/timelines-container.html +196 -0
- package/src/partials/typography-container.html +66 -0
- package/src/partials/utilities-container.html +85 -0
- package/src/scss/abstracts/_functions.scss +37 -0
- package/src/scss/abstracts/_index.scss +3 -0
- package/src/scss/abstracts/_mixins.scss +45 -0
- package/src/scss/abstracts/_variables.scss +222 -0
- package/src/scss/base/_base.scss +165 -0
- package/src/scss/base/_index.scss +3 -0
- package/src/scss/base/_reset.scss +75 -0
- package/src/scss/base/_typography.scss +230 -0
- package/src/scss/components/_accordions.scss +91 -0
- package/src/scss/components/_alerts.scss +105 -0
- package/src/scss/components/_avatars.scss +123 -0
- package/src/scss/components/_blog-post.scss +268 -0
- package/src/scss/components/_breadcrumbs.scss +108 -0
- package/src/scss/components/_button-bar.scss +139 -0
- package/src/scss/components/_buttons.scss +164 -0
- package/src/scss/components/_cards.scss +316 -0
- package/src/scss/components/_code.scss +252 -0
- package/src/scss/components/_coming-soon.scss +92 -0
- package/src/scss/components/_content-slider.scss +119 -0
- package/src/scss/components/_divider.scss +70 -0
- package/src/scss/components/_empty-state.scss +73 -0
- package/src/scss/components/_gallery.scss +158 -0
- package/src/scss/components/_index.scss +33 -0
- package/src/scss/components/_info.scss +143 -0
- package/src/scss/components/_lists.scss +653 -0
- package/src/scss/components/_localhost-indicator.scss +29 -0
- package/src/scss/components/_meta-info.scss +34 -0
- package/src/scss/components/_modals.scss +118 -0
- package/src/scss/components/_pagination.scss +99 -0
- package/src/scss/components/_panels.scss +112 -0
- package/src/scss/components/_progress.scss +107 -0
- package/src/scss/components/_ratings.scss +47 -0
- package/src/scss/components/_skeleton.scss +90 -0
- package/src/scss/components/_spinners.scss +208 -0
- package/src/scss/components/_stepper.scss +145 -0
- package/src/scss/components/_tables.scss +127 -0
- package/src/scss/components/_tabs.scss +146 -0
- package/src/scss/components/_tags.scss +93 -0
- package/src/scss/components/_techstack-bucket.scss +145 -0
- package/src/scss/components/_theme-toggle.scss +50 -0
- package/src/scss/components/_tiles.scss +217 -0
- package/src/scss/components/_timelines.scss +339 -0
- package/src/scss/form-elements/_checkbox.scss +174 -0
- package/src/scss/form-elements/_form.scss +122 -0
- package/src/scss/form-elements/_index.scss +10 -0
- package/src/scss/form-elements/_input-group.scss +103 -0
- package/src/scss/form-elements/_input.scss +72 -0
- package/src/scss/form-elements/_login.scss +62 -0
- package/src/scss/form-elements/_radio.scss +144 -0
- package/src/scss/form-elements/_select.scss +56 -0
- package/src/scss/form-elements/_slider.scss +174 -0
- package/src/scss/form-elements/_textarea.scss +74 -0
- package/src/scss/form-elements/_toggle.scss +174 -0
- package/src/scss/layout/_footer.scss +214 -0
- package/src/scss/layout/_grid.scss +287 -0
- package/src/scss/layout/_header.scss +441 -0
- package/src/scss/layout/_home.scss +40 -0
- package/src/scss/layout/_index.scss +6 -0
- package/src/scss/layout/_main.scss +116 -0
- package/src/scss/layout/_section.scss +89 -0
- package/src/scss/main.scss +5 -0
- package/src/scss/utilities/_display.scss +35 -0
- package/src/scss/utilities/_flex.scss +66 -0
- package/src/scss/utilities/_index.scss +3 -0
- 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 & 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 & 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
|
+
❮
|
|
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
|
+
❯
|
|
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><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/m1well/maverick-wave@v{{VERSION}}/maverick-wave.min.css">
|
|
10
|
+
<script src="https://cdn.jsdelivr.net/gh/m1well/maverick-wave@v{{VERSION}}/maverick-wave.min.js"></script></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><!DOCTYPE html>
|
|
44
|
+
<html lang="en">
|
|
45
|
+
<head>
|
|
46
|
+
<meta charset="UTF-8">
|
|
47
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
48
|
+
<title>My MaverickWave Project</title>
|
|
49
|
+
<!-- Framework CSS -->
|
|
50
|
+
<link rel="stylesheet" href="path/to/maverick-wave.min.css">
|
|
51
|
+
|
|
52
|
+
<!-- Your Custom Styles (load AFTER framework) -->
|
|
53
|
+
<link rel="stylesheet" href="your-custom-styles.css">
|
|
54
|
+
</head>
|
|
55
|
+
<body>
|
|
56
|
+
<!-- Your content -->
|
|
57
|
+
|
|
58
|
+
<!-- Framework JS -->
|
|
59
|
+
<script src="path/to/maverick-wave.min.js"></script>
|
|
60
|
+
</body>
|
|
61
|
+
</html></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><body></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><link rel="stylesheet"
|
|
168
|
+
href="https://cdn.jsdelivr.net/gh/m1well/maverick-wave@v{{VERSION}}/maverick-wave.min.css"></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><div class="mw-field" [class.mw-field-has-error]="email.invalid && email.touched">
|
|
191
|
+
<label class="mw-field-label mw-required" for="email">Email</label>
|
|
192
|
+
<input id="email" type="email" class="mw-input" formControlName="email" />
|
|
193
|
+
<span class="mw-field-error" *ngIf="email.invalid && email.touched">
|
|
194
|
+
<i class="fas fa-exclamation-circle"></i> Please enter a valid email.
|
|
195
|
+
</span>
|
|
196
|
+
</div></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
|
+
<div className="mw-container">
|
|
217
|
+
<h1 className="mw-text-primary">Hello, MaverickWave!</h1>
|
|
218
|
+
<button className="mw-btn mw-btn-primary">Get Started</button>
|
|
219
|
+
</div>
|
|
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>
|