maverick-wave 3.3.0 → 3.3.2

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 (77) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +208 -0
  2. package/.claude/skills/maverick-wave/examples/angular-form.md +275 -0
  3. package/.claude/skills/maverick-wave/examples/angular-list-page.md +304 -0
  4. package/.claude/skills/maverick-wave/examples/angular-services.md +348 -0
  5. package/.claude/skills/maverick-wave/examples/static-landing-page.md +362 -0
  6. package/.claude/skills/maverick-wave/references/components.md +812 -0
  7. package/.claude/skills/maverick-wave/references/forms.md +289 -0
  8. package/.claude/skills/maverick-wave/references/javascript.md +70 -0
  9. package/.claude/skills/maverick-wave/references/layout.md +300 -0
  10. package/.claude/skills/maverick-wave/references/theming.md +192 -0
  11. package/.github/workflows/ci.yml +41 -0
  12. package/CHANGELOG.md +13 -0
  13. package/README.md +115 -21
  14. package/index.html +15 -9
  15. package/maverick-wave.min.css +1 -1
  16. package/maverick-wave.min.js +1 -1
  17. package/package.json +3 -1
  18. package/scripts/verify.js +137 -0
  19. package/src/js/main.js +39 -11
  20. package/src/partials/accordions-container.html +22 -27
  21. package/src/partials/alerts-container.html +26 -0
  22. package/src/partials/avatars-container.html +22 -0
  23. package/src/partials/buttons-container.html +11 -15
  24. package/src/partials/cards-container.html +8 -8
  25. package/src/partials/colors-container.html +33 -20
  26. package/src/partials/documentation-container.html +3 -0
  27. package/src/partials/form-field-container.html +16 -12
  28. package/src/partials/get-started-container.html +93 -35
  29. package/src/partials/header-utilities-container.html +64 -6
  30. package/src/partials/input-group-container.html +5 -3
  31. package/src/partials/page-header-container.html +78 -0
  32. package/src/partials/tables-container.html +130 -0
  33. package/src/partials/tabs-container.html +20 -16
  34. package/src/partials/tags-container.html +55 -1
  35. package/src/scss/abstracts/_index.scss +4 -1
  36. package/src/scss/abstracts/_variables.scss +128 -106
  37. package/src/scss/base/_base.scss +32 -136
  38. package/src/scss/base/_reset.scss +1 -1
  39. package/src/scss/base/_typography.scss +0 -92
  40. package/src/scss/components/_accordions.scss +3 -3
  41. package/src/scss/components/_avatars.scss +28 -1
  42. package/src/scss/components/_blog-post.scss +1 -1
  43. package/src/scss/components/_button-bar.scss +6 -6
  44. package/src/scss/components/_buttons.scss +33 -10
  45. package/src/scss/components/_cards.scss +7 -7
  46. package/src/scss/components/_coming-soon.scss +4 -4
  47. package/src/scss/components/_gallery.scss +2 -2
  48. package/src/scss/components/_index.scss +1 -0
  49. package/src/scss/components/_info.scss +20 -3
  50. package/src/scss/components/_lists.scss +11 -10
  51. package/src/scss/components/_modals.scss +14 -7
  52. package/src/scss/components/_pagination.scss +3 -3
  53. package/src/scss/components/_panels.scss +4 -4
  54. package/src/scss/components/_progress.scss +1 -1
  55. package/src/scss/components/_ratings.scss +1 -1
  56. package/src/scss/components/_spinners.scss +2 -2
  57. package/src/scss/components/_stepper.scss +3 -2
  58. package/src/scss/components/_tables.scss +42 -1
  59. package/src/scss/components/_tabs.scss +5 -5
  60. package/src/scss/components/_tags.scss +43 -27
  61. package/src/scss/components/_tiles.scss +3 -3
  62. package/src/scss/components/_timelines.scss +2 -2
  63. package/src/scss/components/_toasts.scss +92 -0
  64. package/src/scss/form-elements/_form.scss +11 -3
  65. package/src/scss/form-elements/_input.scss +24 -0
  66. package/src/scss/form-elements/_toggle.scss +1 -1
  67. package/src/scss/layout/_footer.scss +4 -4
  68. package/src/scss/layout/_header.scss +219 -59
  69. package/src/scss/layout/_index.scss +1 -0
  70. package/src/scss/layout/_main.scss +1 -1
  71. package/src/scss/layout/_page-header.scss +48 -0
  72. package/src/scss/layout/_section.scss +15 -14
  73. package/src/scss/main.scss +4 -0
  74. package/src/scss/utilities/_flex.scss +4 -0
  75. package/src/scss/utilities/_index.scss +1 -0
  76. package/src/scss/utilities/_text.scss +105 -0
  77. package/.claude/commands/mw.md +0 -595
@@ -43,11 +43,36 @@
43
43
 
44
44
  <!-- Secondary (Tools) -->
45
45
  <h5 class="mw-text-medium mw-mb-2">Secondary</h5>
46
- <div class="mw-tags mw-tags-secondary">
46
+ <div class="mw-tags mw-tags-secondary mw-mb-4">
47
47
  <span class="mw-tags-item">Docker</span>
48
48
  <span class="mw-tags-item">Kubernetes</span>
49
49
  <span class="mw-tags-item">Git</span>
50
50
  </div>
51
+
52
+ <!-- Warning (Pending) -->
53
+ <h5 class="mw-text-medium mw-mb-2">Warning</h5>
54
+ <div class="mw-tags mw-tags-warning mw-mb-4">
55
+ <span class="mw-tags-item">
56
+ <i class="fas fa-clock mw-tags-icon"></i>Pending
57
+ </span>
58
+ <span class="mw-tags-item">Review</span>
59
+ </div>
60
+
61
+ <!-- Danger (Failed) -->
62
+ <h5 class="mw-text-medium mw-mb-2">Danger</h5>
63
+ <div class="mw-tags mw-tags-danger mw-mb-4">
64
+ <span class="mw-tags-item">
65
+ <i class="fas fa-xmark mw-tags-icon"></i>Failed
66
+ </span>
67
+ <span class="mw-tags-item">Deprecated</span>
68
+ </div>
69
+
70
+ <!-- Muted (Neutral) -->
71
+ <h5 class="mw-text-medium mw-mb-2">Muted</h5>
72
+ <div class="mw-tags mw-tags-muted">
73
+ <span class="mw-tags-item">Draft</span>
74
+ <span class="mw-tags-item">Archived</span>
75
+ </div>
51
76
  </div>
52
77
  </div>
53
78
 
@@ -165,4 +190,33 @@
165
190
  </div>
166
191
  </div>
167
192
  </div>
193
+
194
+ <!-- COLUMN 4: Single tag -->
195
+ <div>
196
+ <h3 class="mw-card-title mw-mb-4">Single Tag</h3>
197
+ <div class="mw-card mw-card-simple">
198
+ <p class="mw-text-muted mw-mb-4">
199
+ For a single status chip &ndash; e.g. in a table cell &ndash; use
200
+ <strong>mw-tag</strong>. It carries the colour itself, so no
201
+ <strong>mw-tags</strong> container is needed.
202
+ </p>
203
+
204
+ <h5 class="mw-text-medium mw-mb-2">Variants</h5>
205
+ <div class="mw-d-flex mw-flex-wrap mw-gap-2 mw-mb-4">
206
+ <span class="mw-tag mw-tag-primary">Primary</span>
207
+ <span class="mw-tag mw-tag-secondary">Secondary</span>
208
+ <span class="mw-tag mw-tag-success">Paid</span>
209
+ <span class="mw-tag mw-tag-info">Info</span>
210
+ <span class="mw-tag mw-tag-warning">Open</span>
211
+ <span class="mw-tag mw-tag-danger">Cancelled</span>
212
+ <span class="mw-tag mw-tag-muted">Draft</span>
213
+ </div>
214
+
215
+ <h5 class="mw-text-medium mw-mb-2">Large</h5>
216
+ <div class="mw-d-flex mw-flex-wrap mw-gap-2">
217
+ <span class="mw-tag mw-tag-success mw-tag-lg">Paid</span>
218
+ <span class="mw-tag mw-tag-muted mw-tag-lg">Draft</span>
219
+ </div>
220
+ </div>
221
+ </div>
168
222
  </div>
@@ -1,3 +1,6 @@
1
+ // 'variables' first: it is the only configurable module, and both 'functions'
2
+ // and 'mixins' load it themselves. Forwarding it later would mean it is
3
+ // already loaded by the time a `with (...)` configuration reaches it.
4
+ @forward 'variables';
1
5
  @forward 'functions';
2
6
  @forward 'mixins';
3
- @forward 'variables';
@@ -1,135 +1,157 @@
1
- @use 'sass:map';
2
- @use 'sass:color';
1
+ @use 'sass:string';
3
2
 
4
3
  $mw-theme-mode: 'switchable' !default; // 'dark', 'light', or 'switchable'
5
4
 
6
5
  $mw-hero-image: url('https://images.unsplash.com/photo-1591638462868-19cfad9c49d1?q=80&w=1300&auto=format&fit=crop') !default;
7
6
 
8
- $primary-color: #1031bb;
9
- $secondary-color: #bb3110;
10
- $success-color: #28a745;
11
- $warning-color: #d4a310;
12
- $danger-color: #d72537;
13
- $info-color: #17a2b8;
14
- $gray-color: #565656;
15
- $dark-background: #0b111a;
16
- $dark-text-color: #d6dbdf;
17
- $light-background: #d2d1e1;
18
- $light-text-color: #1a1a1d;
19
-
20
- // Base colors that don't change between themes
7
+ // ---------------------------------------------------------------------------
8
+ // Root colors
9
+ //
10
+ // These are the only values a project has to set. Every other tone is derived
11
+ // from them at runtime via color-mix(), so overriding a root token in plain
12
+ // CSS (:root { --mw-primary-color: ... }) cascades to all of its variants.
13
+ // ---------------------------------------------------------------------------
14
+ $primary-color: #1031bb !default;
15
+ $secondary-color: #bb3110 !default;
16
+ // Darkened a little so light button text stays readable on the solid surface
17
+ $success-color: #218838 !default;
18
+ $warning-color: #d4a310 !default;
19
+ // Darkened a little so light button text stays readable on the solid surface
20
+ $danger-color: #c82333 !default;
21
+ $info-color: #17a2b8 !default;
22
+ $gray-color: #565656 !default;
23
+ $dark-background: #0b111a !default;
24
+ $dark-text-color: #d6dbdf !default;
25
+ $light-background: #d2d1e1 !default;
26
+ $light-text-color: #1a1a1d !default;
27
+ // Form controls stay light in both themes, so they get their own root value
28
+ $form-elements-background: #efefef !default;
29
+
30
+ // ---------------------------------------------------------------------------
31
+ // Derivation helpers
32
+ //
33
+ // They emit color-mix() referring back to another --mw-* token instead of
34
+ // baking a value at compile time.
35
+ //
36
+ // shade()/tint() mix `in hsl`, which behaves like color.adjust($lightness: ...)
37
+ // and scales proportionally, so a derivation looks the same on every palette.
38
+ // Mixing with black/white also lowers the saturation a little — that is why
39
+ // hover tones read slightly softer than the base color. Alpha blending uses
40
+ // `srgb` against `transparent`.
41
+ // ---------------------------------------------------------------------------
42
+
43
+ // Reference another token as-is
44
+ @function token($name) {
45
+ @return string.unquote('var(--mw-#{$name})');
46
+ }
47
+
48
+ // Translucent variant of a token ($amount = remaining opacity)
49
+ @function fade($name, $amount) {
50
+ @return string.unquote(
51
+ 'color-mix(in srgb, var(--mw-#{$name}) #{$amount}, transparent)'
52
+ );
53
+ }
54
+
55
+ // Darker, fully opaque variant of a token
56
+ @function shade($name, $amount) {
57
+ @return string.unquote(
58
+ 'color-mix(in hsl, var(--mw-#{$name}), black #{$amount})'
59
+ );
60
+ }
61
+
62
+ // Lighter, fully opaque variant of a token
63
+ @function tint($name, $amount) {
64
+ @return string.unquote(
65
+ 'color-mix(in hsl, var(--mw-#{$name}), white #{$amount})'
66
+ );
67
+ }
68
+
69
+ // Uniform hover tone for every solid brand/status surface
70
+ $hover-shift: 18%;
71
+
72
+ // Base colors that don't change between themes.
73
+ // Emitted as --mw-<key>.
21
74
  $base-colors: (
22
75
  'primary-color': $primary-color,
23
- 'primary-color-hover': color.adjust(
24
- $primary-color,
25
- $lightness: -3%,
26
- $alpha: -0.3
27
- ),
28
- 'primary-background': color.adjust(
29
- $primary-color,
30
- $lightness: -8%,
31
- $alpha: -0.8
32
- ),
33
- 'primary-background-hover': color.adjust(
34
- $primary-color,
35
- $lightness: -4%,
36
- $alpha: -0.5
37
- ),
38
- 'primary-info-background': color.adjust(
39
- $primary-color,
40
- $lightness: -1%,
41
- $alpha: -0.3
42
- ),
43
- 'primary-text-color': $dark-text-color,
76
+ 'primary-color-hover': shade('primary-color', $hover-shift),
77
+ 'primary-background': fade('primary-color', 20%),
78
+ 'primary-background-hover': fade('primary-color', 50%),
79
+ 'primary-info-background': fade('primary-color', 70%),
44
80
  'secondary-color': $secondary-color,
45
- 'secondary-color-hover': color.adjust(
46
- $secondary-color,
47
- $lightness: -3%,
48
- $alpha: -0.4
49
- ),
50
- 'secondary-background': color.adjust(
51
- $secondary-color,
52
- $lightness: -8%,
53
- $alpha: -0.8
54
- ),
55
- 'secondary-background-hover': color.adjust(
56
- $secondary-color,
57
- $lightness: -3%,
58
- $alpha: -0.6
59
- ),
60
- 'secondary-info-background': color.adjust(
61
- $secondary-color,
62
- $lightness: -8%,
63
- $alpha: -0.3
64
- ),
65
- 'secondary-text-color': $dark-text-color,
81
+ 'secondary-color-hover': shade('secondary-color', $hover-shift),
82
+ 'secondary-background': fade('secondary-color', 20%),
83
+ 'secondary-background-hover': fade('secondary-color', 40%),
84
+ 'secondary-info-background': fade('secondary-color-hover', 70%),
85
+ // Translucent accent line used for dividers, rules and outlines
86
+ 'border-accent': fade('primary-color', 70%),
87
+ // Text on any solid colored surface — buttons of every variant, table and
88
+ // panel headers, badges, stepper dots. Deliberately not derived from a brand
89
+ // color, so retuning the palette never drags it along.
90
+ 'accent-text-color': token('dark-text-color'),
66
91
  'gray-color': $gray-color,
67
- 'white-color': $dark-text-color,
68
- 'gray-background': color.adjust($gray-color, $lightness: +5%, $alpha: -0.4),
69
- 'section-alternate-pattern': color.adjust($gray-color, $alpha: -0.55),
70
- 'form-elements-background': color.adjust($light-background, $lightness: +15%),
71
- 'form-elements-color': color.adjust($light-text-color, $lightness: -2%),
92
+ // Subtle neutral surface: zebra rows, disabled fields, tracks, skeletons
93
+ 'gray-background': fade('gray-color', 20%),
94
+ // Heavy scrim behind modals and blocking spinners
95
+ 'overlay-background': fade('gray-color', 60%),
96
+ 'section-alternate-pattern': fade('gray-color', 45%),
97
+ 'form-elements-background': $form-elements-background,
98
+ 'form-elements-color': shade('light-text-color', 18%),
72
99
  );
73
100
 
101
+ // Status colors. Every status offers the same four tones.
102
+ // Emitted as --mw-<key>.
74
103
  $status-colors: (
75
104
  'success-color': $success-color,
76
- 'success-info-background': color.adjust(
77
- $success-color,
78
- $lightness: -9%,
79
- $alpha: -0.1
80
- ),
81
- 'success-info-background-hover': color.adjust(
82
- $success-color,
83
- $lightness: +4%,
84
- $alpha: -0.3
85
- ),
105
+ 'success-color-hover': shade('success-color', $hover-shift),
106
+ 'success-info-background': fade('success-color-hover', 90%),
107
+ 'success-info-background-hover': fade('success-color', 70%),
86
108
  'warning-color': $warning-color,
87
- 'warning-info-background': color.adjust(
88
- $warning-color,
89
- $lightness: -9%,
90
- $alpha: -0.1
91
- ),
109
+ 'warning-color-hover': shade('warning-color', $hover-shift),
110
+ 'warning-info-background': fade('warning-color-hover', 90%),
111
+ 'warning-info-background-hover': fade('warning-color', 70%),
92
112
  'danger-color': $danger-color,
93
- 'danger-info-background': color.adjust(
94
- $danger-color,
95
- $lightness: -9%,
96
- $alpha: -0.1
97
- ),
113
+ 'danger-color-hover': shade('danger-color', $hover-shift),
114
+ 'danger-info-background': fade('danger-color-hover', 90%),
115
+ 'danger-info-background-hover': fade('danger-color', 70%),
98
116
  'info-color': $info-color,
99
- 'info-info-background': color.adjust(
100
- $info-color,
101
- $lightness: -9%,
102
- $alpha: -0.1
103
- ),
104
- 'info-info-background-hover': color.adjust(
105
- $info-color,
106
- $lightness: +4%,
107
- $alpha: -0.3
108
- ),
117
+ 'info-color-hover': shade('info-color', $hover-shift),
118
+ 'info-info-background': fade('info-color-hover', 90%),
119
+ 'info-info-background-hover': fade('info-color', 70%),
109
120
  );
110
121
 
111
- // Dark theme colors
122
+ // Dark theme colors. Emitted as --mw-dark-<key>, hence the prefixed references.
112
123
  $dark-theme-colors: (
113
124
  'page-background': $dark-background,
114
- 'hero-overlay-background': color.adjust($dark-background, $alpha: -0.7),
115
- 'card-background': color.adjust($dark-background, $lightness: +5%),
116
- 'footer-background': color.adjust($dark-background, $lightness: +3%),
117
- 'border': color.adjust($dark-background, $lightness: +15%),
118
- 'shadow': color.adjust($dark-text-color, $alpha: -0.7),
125
+ 'hero-overlay-background': fade('dark-page-background', 30%),
126
+ 'card-background': tint('dark-page-background', 5%),
127
+ 'footer-background': tint('dark-page-background', 3%),
128
+ 'border': tint('dark-page-background', 16%),
129
+ 'shadow': fade('dark-text-color', 30%),
119
130
  'text-color': $dark-text-color,
120
- 'text-muted-color': color.adjust($dark-text-color, $lightness: -26%),
131
+ 'text-muted-color': shade('dark-text-color', 30%),
121
132
  );
122
133
 
123
- // Light theme colors
134
+ // Light theme colors. Emitted as --mw-light-<key>.
124
135
  $light-theme-colors: (
125
136
  'page-background': $light-background,
126
- 'hero-overlay-background': color.adjust($light-background, $alpha: -0.7),
127
- 'card-background': color.adjust($light-background, $lightness: +6%),
128
- 'footer-background': color.adjust($light-background, $lightness: -2%),
129
- 'border': color.adjust($light-background, $lightness: -13%),
130
- 'shadow': color.adjust($light-text-color, $alpha: -0.7),
137
+ 'hero-overlay-background': fade('light-page-background', 30%),
138
+ 'card-background': tint('light-page-background', 40%),
139
+ 'footer-background': shade('light-page-background', 2%),
140
+ 'border': shade('light-page-background', 15%),
141
+ 'shadow': fade('light-text-color', 30%),
131
142
  'text-color': $light-text-color,
132
- 'text-muted-color': color.adjust($light-text-color, $lightness: +29%),
143
+ 'text-muted-color': tint('light-text-color', 32%),
144
+ );
145
+
146
+ // Header/navbar colors. They stay dark in both themes but can be retuned on
147
+ // their own. Emitted as --mw-header-<key>.
148
+ $header-colors: (
149
+ 'background': token('dark-footer-background'),
150
+ 'text-color': token('dark-text-color'),
151
+ 'navbar-list-color': token('dark-text-muted-color'),
152
+ 'navbar-list-active-color': token('primary-color'),
153
+ 'burgerbutton-color': token('dark-text-color'),
154
+ 'border': token('border-accent'),
133
155
  );
134
156
 
135
157
  // Typography
@@ -1,122 +1,40 @@
1
- @use 'sass:map';
2
1
  @use '../abstracts' as *;
3
2
 
3
+ // Active theme set and its token prefix, derived from $mw-theme-mode
4
+ $_active-theme: $dark-theme-colors;
5
+ $_active-prefix: 'dark';
6
+
7
+ @if $mw-theme-mode == 'light' {
8
+ $_active-theme: $light-theme-colors;
9
+ $_active-prefix: 'light';
10
+ }
11
+
4
12
  // CSS Variables for theming and overriding
5
13
  :root {
6
- // Base colors
7
- --mw-primary-color: #{map.get($base-colors, 'primary-color')};
8
- --mw-primary-color-hover: #{map.get($base-colors, 'primary-color-hover')};
9
- --mw-primary-background: #{map.get($base-colors, 'primary-background')};
10
- --mw-primary-background-hover: #{map.get(
11
- $base-colors,
12
- 'primary-background-hover'
13
- )};
14
- --mw-primary-info-background: #{map.get(
15
- $base-colors,
16
- 'primary-info-background'
17
- )};
18
- --mw-primary-text-color: #{map.get($base-colors, 'primary-text-color')};
19
- --mw-secondary-color: #{map.get($base-colors, 'secondary-color')};
20
- --mw-secondary-color-hover: #{map.get($base-colors, 'secondary-color-hover')};
21
- --mw-secondary-background: #{map.get($base-colors, 'secondary-background')};
22
- --mw-secondary-background-hover: #{map.get(
23
- $base-colors,
24
- 'secondary-background-hover'
25
- )};
26
- --mw-secondary-info-background: #{map.get(
27
- $base-colors,
28
- 'secondary-info-background'
29
- )};
30
- --mw-secondary-text-color: #{map.get($base-colors, 'secondary-text-color')};
31
- --mw-white-color: #{map.get($base-colors, 'white-color')};
32
- --mw-gray-color: #{map.get($base-colors, 'gray-color')};
33
- --mw-gray-background: #{map.get($base-colors, 'gray-background')};
34
- --mw-section-alternate-pattern: #{map.get(
35
- $base-colors,
36
- 'section-alternate-pattern'
37
- )};
38
-
39
- // form
40
- --mw-form-elements-background: #{map.get(
41
- $base-colors,
42
- 'form-elements-background'
43
- )};
44
- --mw-form-elements-color: #{map.get($base-colors, 'form-elements-color')};
14
+ // Brand and neutral colors
15
+ @each $name, $value in $base-colors {
16
+ --mw-#{$name}: #{$value};
17
+ }
45
18
 
46
19
  // Status colors
47
- --mw-success-color: #{map.get($status-colors, 'success-color')};
48
- --mw-success-info-background: #{map.get(
49
- $status-colors,
50
- 'success-info-background'
51
- )};
52
- --mw-success-info-background-hover: #{map.get(
53
- $status-colors,
54
- 'success-info-background-hover'
55
- )};
56
- --mw-warning-color: #{map.get($status-colors, 'warning-color')};
57
- --mw-warning-info-background: #{map.get(
58
- $status-colors,
59
- 'warning-info-background'
60
- )};
61
- --mw-danger-color: #{map.get($status-colors, 'danger-color')};
62
- --mw-danger-info-background: #{map.get(
63
- $status-colors,
64
- 'danger-info-background'
65
- )};
66
- --mw-info-color: #{map.get($status-colors, 'info-color')};
67
- --mw-info-info-background: #{map.get($status-colors, 'info-info-background')};
68
- --mw-info-info-background-hover: #{map.get(
69
- $status-colors,
70
- 'info-info-background-hover'
71
- )};
20
+ @each $name, $value in $status-colors {
21
+ --mw-#{$name}: #{$value};
22
+ }
72
23
 
73
- // Header/navbar colors (they are fixed, but you can change them separately)
74
- --mw-header-background: #{map.get($dark-theme-colors, 'footer-background')};
75
- --mw-header-navbar-list-color: #{map.get(
76
- $dark-theme-colors,
77
- 'text-muted-color'
78
- )};
79
- --mw-header-navbar-list-active-color: #{map.get(
80
- $base-colors,
81
- 'primary-color'
82
- )};
83
- --mw-header-burgerbutton-color: #{map.get($dark-theme-colors, 'text-color')};
84
- --mw-header-border: #{map.get($base-colors, 'primary-color-hover')};
24
+ // Header/navbar colors (fixed across themes, but overridable on their own)
25
+ @each $name, $value in $header-colors {
26
+ --mw-header-#{$name}: #{$value};
27
+ }
85
28
 
86
29
  // Dark theme colors
87
- --mw-dark-page-background: #{map.get($dark-theme-colors, 'page-background')};
88
- --mw-dark-hero-overlay-background: #{map.get(
89
- $dark-theme-colors,
90
- 'hero-overlay-background'
91
- )};
92
- --mw-dark-card-background: #{map.get($dark-theme-colors, 'card-background')};
93
- --mw-dark-footer-background: #{map.get(
94
- $dark-theme-colors,
95
- 'footer-background'
96
- )};
97
- --mw-dark-border: #{map.get($dark-theme-colors, 'border')};
98
- --mw-dark-shadow: #{map.get($dark-theme-colors, 'shadow')};
99
- --mw-dark-text-color: #{map.get($dark-theme-colors, 'text-color')};
100
- --mw-dark-text-muted-color: #{map.get($dark-theme-colors, 'text-muted-color')};
30
+ @each $name, $value in $dark-theme-colors {
31
+ --mw-dark-#{$name}: #{$value};
32
+ }
101
33
 
102
34
  // Light theme colors
103
- --mw-light-page-background: #{map.get($light-theme-colors, 'page-background')};
104
- --mw-light-hero-overlay-background: #{map.get(
105
- $light-theme-colors,
106
- 'hero-overlay-background'
107
- )};
108
- --mw-light-card-background: #{map.get($light-theme-colors, 'card-background')};
109
- --mw-light-footer-background: #{map.get(
110
- $light-theme-colors,
111
- 'footer-background'
112
- )};
113
- --mw-light-border: #{map.get($light-theme-colors, 'border')};
114
- --mw-light-shadow: #{map.get($light-theme-colors, 'shadow')};
115
- --mw-light-text-color: #{map.get($light-theme-colors, 'text-color')};
116
- --mw-light-text-muted-color: #{map.get(
117
- $light-theme-colors,
118
- 'text-muted-color'
119
- )};
35
+ @each $name, $value in $light-theme-colors {
36
+ --mw-light-#{$name}: #{$value};
37
+ }
120
38
 
121
39
  // Transitions
122
40
  --mw-transition: #{$transition-default};
@@ -127,39 +45,17 @@
127
45
  // hero background image
128
46
  --mw-hero-background: #{$mw-hero-image};
129
47
 
130
- @if $mw-theme-mode == 'dark' or $mw-theme-mode == 'switchable' {
131
- // Dark theme variables
132
- --mw-page-background: var(--mw-dark-page-background);
133
- --mw-hero-overlay-background: var(--mw-dark-hero-overlay-background);
134
- --mw-card-background: var(--mw-dark-card-background);
135
- --mw-footer-background: var(--mw-dark-footer-background);
136
- --mw-border: var(--mw-dark-border);
137
- --mw-shadow: var(--mw-dark-shadow);
138
- --mw-text-color: var(--mw-dark-text-color);
139
- --mw-text-muted-color: var(--mw-dark-text-muted-color);
140
- } @else {
141
- // Light theme variables
142
- --mw-page-background: var(--mw-light-page-background);
143
- --mw-hero-overlay-background: var(--mw-light-hero-overlay-background);
144
- --mw-card-background: var(--mw-light-card-background);
145
- --mw-footer-background: var(--mw-light-footer-background);
146
- --mw-border: var(--mw-light-border);
147
- --mw-shadow: var(--mw-light-shadow);
148
- --mw-text-color: var(--mw-light-text-color);
149
- --mw-text-muted-color: var(--mw-light-text-muted-color);
48
+ // Active theme aliases onto the dark or light set above
49
+ @each $name, $value in $_active-theme {
50
+ --mw-#{$name}: var(--mw-#{$_active-prefix}-#{$name});
150
51
  }
151
52
  }
152
53
 
153
54
  @if $mw-theme-mode == 'switchable' {
154
55
  .mw-theme-light {
155
56
  // Light theme variables for switching
156
- --mw-page-background: var(--mw-light-page-background);
157
- --mw-hero-overlay-background: var(--mw-light-hero-overlay-background);
158
- --mw-card-background: var(--mw-light-card-background);
159
- --mw-footer-background: var(--mw-light-footer-background);
160
- --mw-border: var(--mw-light-border);
161
- --mw-shadow: var(--mw-light-shadow);
162
- --mw-text-color: var(--mw-light-text-color);
163
- --mw-text-muted-color: var(--mw-light-text-muted-color);
57
+ @each $name, $value in $light-theme-colors {
58
+ --mw-#{$name}: var(--mw-light-#{$name});
59
+ }
164
60
  }
165
61
  }
@@ -72,7 +72,7 @@ td {
72
72
 
73
73
  th {
74
74
  background: var(--mw-primary-color);
75
- color: var(--mw-primary-text-color);
75
+ color: var(--mw-accent-text-color);
76
76
  }
77
77
 
78
78
  tbody tr:nth-child(even) {
@@ -148,95 +148,3 @@ blockquote {
148
148
  right: spacing('4');
149
149
  }
150
150
  }
151
-
152
- // Text utilities
153
- .mw-text {
154
- &-center {
155
- text-align: center;
156
- }
157
-
158
- &-left {
159
- text-align: left;
160
- }
161
-
162
- &-right {
163
- text-align: right;
164
- }
165
-
166
- &-primary {
167
- color: var(--mw-primary-color);
168
- }
169
-
170
- &-secondary {
171
- color: var(--mw-secondary-color);
172
- }
173
-
174
- &-success {
175
- color: var(--mw-success-color);
176
- }
177
-
178
- &-warning {
179
- color: var(--mw-warning-color);
180
- }
181
-
182
- &-danger {
183
- color: var(--mw-danger-color);
184
- }
185
-
186
- &-info {
187
- color: var(--mw-info-color);
188
- }
189
-
190
- &-muted {
191
- color: var(--mw-text-muted-color);
192
- }
193
-
194
- &-bold {
195
- font-weight: font-weight('bold');
196
- }
197
-
198
- &-medium {
199
- font-weight: font-weight('medium');
200
- }
201
-
202
- &-normal {
203
- font-weight: font-weight('normal');
204
- }
205
-
206
- &-light {
207
- font-weight: font-weight('light');
208
- }
209
-
210
- &-italic {
211
- font-style: italic;
212
- }
213
-
214
- &-color-dark {
215
- color: var(--mw-dark-text-color);
216
- }
217
-
218
- &-color-light {
219
- color: var(--mw-light-text-color);
220
- }
221
-
222
- @each $name, $size in $font-sizes {
223
- &-#{$name} {
224
- font-size: $size;
225
- }
226
- }
227
- }
228
-
229
- // Line height utilities
230
- .mw-leading {
231
- &-tight {
232
- line-height: 1.2;
233
- }
234
-
235
- &-normal {
236
- line-height: 1.5;
237
- }
238
-
239
- &-loose {
240
- line-height: 1.8;
241
- }
242
- }
@@ -7,7 +7,7 @@
7
7
  margin: spacing('2');
8
8
 
9
9
  &-item {
10
- border-bottom: 1px solid var(--mw-primary-color-hover);
10
+ border-bottom: 1px solid var(--mw-border-accent);
11
11
 
12
12
  &:last-child {
13
13
  border-bottom: none;
@@ -44,7 +44,7 @@
44
44
 
45
45
  &.active {
46
46
  background: var(--mw-primary-color);
47
- color: var(--mw-primary-text-color);
47
+ color: var(--mw-accent-text-color);
48
48
 
49
49
  .mw-accordion-icon {
50
50
  transform: rotate(180deg);
@@ -61,7 +61,7 @@
61
61
 
62
62
  &-inner {
63
63
  padding: spacing('4');
64
- border-top: 1px solid var(--mw-primary-color-hover);
64
+ border-top: 1px solid var(--mw-border-accent);
65
65
  @include media-down('sm') {
66
66
  font-size: font-size('sm');
67
67
  }