maverick-wave 4.4.0 → 4.4.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 (56) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +3 -2
  2. package/.claude/skills/maverick-wave/examples/static-landing-page.md +1 -1
  3. package/.claude/skills/maverick-wave/references/theming.md +91 -67
  4. package/CHANGELOG.md +6 -0
  5. package/README.md +100 -22
  6. package/index.html +7 -29
  7. package/maverick-wave.min.css +2 -2
  8. package/package.json +1 -1
  9. package/scripts/verify.js +8 -2
  10. package/src/assets/favicon/apple-touch-icon.png +0 -0
  11. package/src/assets/favicon/favicon-96x96.png +0 -0
  12. package/src/assets/favicon/favicon.svg +1 -0
  13. package/src/assets/favicon/site.webmanifest +37 -1
  14. package/src/assets/favicon/web-app-manifest-192x192.png +0 -0
  15. package/src/assets/favicon/web-app-manifest-512x512.png +0 -0
  16. package/src/assets/favicon.ico +0 -0
  17. package/src/assets/header-logo.svg +4 -4
  18. package/src/partials/accordions-container.html +6 -6
  19. package/src/partials/colors-container.html +76 -4
  20. package/src/partials/get-started-container.html +17 -14
  21. package/src/partials/tabs-container.html +7 -6
  22. package/src/scss/abstracts/_variables.scss +152 -45
  23. package/src/scss/base/_typography.scss +2 -2
  24. package/src/scss/components/_alerts.scss +2 -2
  25. package/src/scss/components/_avatars.scss +1 -1
  26. package/src/scss/components/_blog-post.scss +5 -5
  27. package/src/scss/components/_breadcrumbs.scss +3 -3
  28. package/src/scss/components/_button-bar.scss +4 -4
  29. package/src/scss/components/_buttons.scss +6 -6
  30. package/src/scss/components/_calendar.scss +10 -10
  31. package/src/scss/components/_cards.scss +2 -2
  32. package/src/scss/components/_divider.scss +3 -3
  33. package/src/scss/components/_empty-state.scss +4 -4
  34. package/src/scss/components/_gallery.scss +1 -1
  35. package/src/scss/components/_info.scss +3 -3
  36. package/src/scss/components/_kanban.scss +3 -3
  37. package/src/scss/components/_lists.scss +13 -12
  38. package/src/scss/components/_localhost-indicator.scss +2 -2
  39. package/src/scss/components/_meta-info.scss +1 -1
  40. package/src/scss/components/_ratings.scss +1 -1
  41. package/src/scss/components/_segmented.scss +3 -3
  42. package/src/scss/components/_spinners.scss +10 -10
  43. package/src/scss/components/_stepper.scss +4 -4
  44. package/src/scss/components/_tabs.scss +5 -5
  45. package/src/scss/components/_techstack-bucket.scss +2 -2
  46. package/src/scss/components/_timelines.scss +10 -10
  47. package/src/scss/form-elements/_form.scss +2 -2
  48. package/src/scss/form-elements/_login.scss +2 -2
  49. package/src/scss/layout/_footer.scss +3 -3
  50. package/src/scss/layout/_header.scss +4 -4
  51. package/src/scss/layout/_section.scss +5 -5
  52. package/src/scss/utilities/_text.scss +6 -6
  53. package/src/assets/favicon/android-chrome-192x192.png +0 -0
  54. package/src/assets/favicon/android-chrome-512x512.png +0 -0
  55. package/src/assets/favicon/favicon-16x16.png +0 -0
  56. package/src/assets/favicon/favicon-32x32.png +0 -0
@@ -9,25 +9,51 @@ $mw-hero-image: url('https://images.unsplash.com/photo-1591638462868-19cfad9c49d
9
9
  //
10
10
  // These are the only values a project has to set. Every other tone is derived
11
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.
12
+ // CSS (:root { --mw-primary-color: ... }) cascades to all of its variants -
13
+ // including the lightened variants the dark theme needs.
13
14
  // ---------------------------------------------------------------------------
15
+
16
+ // Brand
14
17
  $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: #db182f !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;
18
+ $secondary-color: #bb5710 !default;
19
+
20
+ // Neutrals - a touch of the brand hue, so grays sit next to the brand colors
21
+ // instead of fighting them
22
+ $gray-color: #6e6e78 !default;
23
+ // Deep enough to read as dark, light enough that the surfaces derived from it
24
+ // still have somewhere to go - see the surface stack below
25
+ $dark-background: #171f30 !default;
26
+ $dark-text-color: #f0eef9 !default;
27
+ $light-background: #e7e7f0 !default;
28
+ $light-text-color: #131925 !default;
29
+ // Text on solid colored surfaces, in both themes. The one token that cannot be
30
+ // derived: a dark brand color needs a light label, a light one a dark label.
31
+ // Set it to the opposite end of your palette from $primary-color.
32
+ $accent-text-color: #f2f6fc !default;
27
33
  // Form controls stay light in both themes, so they get their own root value
28
- $form-elements-background: #efefef !default;
29
- // Text on solid colored surfaces stays white in both themes
30
- $accent-text-color: #efefef !default;
34
+ $form-elements-background: #f4f7fb !default;
35
+
36
+ // Status - kept clear of the brand colors, so "accent" never reads as
37
+ // "attention"
38
+ $success-color: #157f1a !default;
39
+ $warning-color: #d1bb21 !default;
40
+ $danger-color: #d41708 !default;
41
+ $info-color: #0780ca !default;
42
+
43
+ // Uniform hover tone for every solid brand/status surface. Darkening, in both
44
+ // themes: the label on a solid surface is $accent-text-color, and lightening
45
+ // a solid surface is what breaks it.
46
+ $hover-shift: 15% !default;
47
+
48
+ // How light a color has to be before it reads as ink on a dark surface, and how
49
+ // dark before it reads as ink on a light one - OKLch lightness, 0 to 1. A bound,
50
+ // not a target: a color already inside the range is used untouched, so a bright
51
+ // brand color stays bright and only one that would drown gets moved.
52
+ $ink-lightness-dark: 0.4 !default;
53
+ $ink-lightness-light: 0.7 !default;
54
+ // How much of the primary color the muted text gray picks up, so it belongs to
55
+ // the palette instead of being a stock #888. 0% is a true gray.
56
+ $muted-tint: 23% !default;
31
57
 
32
58
  // ---------------------------------------------------------------------------
33
59
  // Derivation helpers
@@ -40,6 +66,11 @@ $accent-text-color: #efefef !default;
40
66
  // Mixing with black/white also lowers the saturation a little - that is why
41
67
  // hover tones read slightly softer than the base color. Alpha blending uses
42
68
  // `srgb` against `transparent`.
69
+ //
70
+ // A derived token may only reference a token whose value does not depend on the
71
+ // active theme, i.e. a root color or a theme-prefixed one (dark-*/light-*).
72
+ // Custom properties are substituted on the element they are declared on, so a
73
+ // base token pointing at a theme alias would freeze the dark value on :root.
43
74
  // ---------------------------------------------------------------------------
44
75
 
45
76
  // Reference another token as-is
@@ -68,24 +99,74 @@ $accent-text-color: #efefef !default;
68
99
  );
69
100
  }
70
101
 
71
- // Uniform hover tone for every solid brand/status surface
72
- $hover-shift: 12%;
102
+ // The two ink variants. They clamp lightness in OKLch and keep hue and chroma,
103
+ // which is what makes them palette-agnostic: the same expression lifts a very
104
+ // dark color, deepens a very light one and leaves everything in between alone.
105
+ @function ink-on-dark($name) {
106
+ @return string.unquote(
107
+ 'oklch(from var(--mw-#{$name}) max(l, #{$ink-lightness-dark}) c h)'
108
+ );
109
+ }
110
+
111
+ @function ink-on-light($name) {
112
+ @return string.unquote(
113
+ 'oklch(from var(--mw-#{$name}) min(l, #{$ink-lightness-light}) c h)'
114
+ );
115
+ }
116
+
117
+ // A theme surface derived from the page background: OKLch lightness and chroma
118
+ // scaled by the same factor, hue kept. Below 1 steps toward black, above 1
119
+ // toward white. Chroma rides along because that is what a hand-picked stack
120
+ // does - a darker surface of the same hue carries less color, not the same
121
+ // color at a lower lightness, which would read oversaturated.
122
+ @function surface($name, $factor) {
123
+ @return string.unquote(
124
+ 'oklch(from var(--mw-#{$name}) calc(l * #{$factor}) calc(c * #{$factor}) h)'
125
+ );
126
+ }
127
+
128
+ // Muted text tone. Built from a true gray on purpose, not by stepping the
129
+ // theme's text color back: darkening keeps the source saturation and fading
130
+ // keeps its hue, so a tinted text color hands its tint straight through - a
131
+ // mint white page ends up with mint green secondary text. Starting neutral and
132
+ // adding back a defined share of the brand keeps that under control. Opaque,
133
+ // so it reads the same on the page and on a card.
134
+ @function muted($lightness) {
135
+ @return string.unquote(
136
+ 'color-mix(in oklab, oklch(#{$lightness} 0 0), var(--mw-primary-color) #{$muted-tint})'
137
+ );
138
+ }
73
139
 
74
140
  // Base colors that don't change between themes.
75
141
  // Emitted as --mw-<key>.
142
+ //
143
+ // A brand color has two jobs, and they need two tokens:
144
+ // --mw-primary-color the exact brand tone, for anything it *fills* -
145
+ // buttons, badges, bars, filled surfaces. The label
146
+ // on top is --mw-accent-text-color.
147
+ // --mw-primary-text-color the same color as ink on a theme surface - text,
148
+ // icons, focus rings, accent borders. Lives in the
149
+ // theme maps below, because a color chosen to carry
150
+ // a label is by definition too dark or too light to
151
+ // be read *on* the page it sits on.
152
+ // Same split for secondary and for every status color.
76
153
  $base-colors: (
77
154
  'primary-color': $primary-color,
78
155
  'primary-color-hover': shade('primary-color', $hover-shift),
79
- 'primary-background': fade('primary-color', 20%),
156
+ // One rule for every tinted surface in the framework: 20% of the color, 45%
157
+ // while hovered. Both stay close enough to the surface underneath that the
158
+ // theme's own --mw-text-color keeps working on top - which is what makes a
159
+ // soft alert, badge or tag readable in the light *and* the dark theme.
160
+ 'primary-background': fade('primary-color', 30%),
80
161
  'primary-background-hover': fade('primary-color', 50%),
81
- 'primary-info-background': fade('primary-color', 70%),
162
+ // Same surface under the name the status colors use, so a component can
163
+ // interpolate one token name across all six colors
164
+ 'primary-info-background': token('primary-background'),
82
165
  'secondary-color': $secondary-color,
83
166
  'secondary-color-hover': shade('secondary-color', $hover-shift),
84
- 'secondary-background': fade('secondary-color', 20%),
85
- 'secondary-background-hover': fade('secondary-color', 40%),
86
- 'secondary-info-background': fade('secondary-color-hover', 70%),
87
- // Translucent accent line used for dividers, rules and outlines
88
- 'border-accent': fade('primary-color', 70%),
167
+ 'secondary-background': fade('secondary-color', 30%),
168
+ 'secondary-background-hover': fade('secondary-color', 50%),
169
+ 'secondary-info-background': token('secondary-background'),
89
170
  // Text on any solid colored surface - buttons of every variant, table and
90
171
  // panel headers, badges, tooltips, mini close buttons, stepper dots.
91
172
  // Deliberately derived from neither a brand color nor a theme text color:
@@ -101,7 +182,7 @@ $base-colors: (
101
182
  'surface-muted': token('gray-background'),
102
183
  // Heavy scrim behind modals and blocking spinners
103
184
  'overlay-background': fade('gray-color', 60%),
104
- 'section-alternate-pattern': fade('gray-color', 45%),
185
+ 'section-alternate-pattern': fade('gray-color', 30%),
105
186
  'form-elements-background': $form-elements-background,
106
187
  'form-elements-color': shade('light-text-color', 18%),
107
188
  );
@@ -111,55 +192,81 @@ $base-colors: (
111
192
  $status-colors: (
112
193
  'success-color': $success-color,
113
194
  'success-color-hover': shade('success-color', $hover-shift),
114
- 'success-info-background': fade('success-color-hover', 90%),
115
- 'success-info-background-hover': fade('success-color', 70%),
195
+ 'success-info-background': fade('success-color', 30%),
196
+ 'success-info-background-hover': fade('success-color', 50%),
116
197
  'warning-color': $warning-color,
117
198
  'warning-color-hover': shade('warning-color', $hover-shift),
118
- 'warning-info-background': fade('warning-color-hover', 90%),
119
- 'warning-info-background-hover': fade('warning-color', 70%),
199
+ 'warning-info-background': fade('warning-color', 30%),
200
+ 'warning-info-background-hover': fade('warning-color', 50%),
120
201
  'danger-color': $danger-color,
121
202
  'danger-color-hover': shade('danger-color', $hover-shift),
122
- 'danger-info-background': fade('danger-color-hover', 90%),
123
- 'danger-info-background-hover': fade('danger-color', 70%),
203
+ 'danger-info-background': fade('danger-color', 30%),
204
+ 'danger-info-background-hover': fade('danger-color', 50%),
124
205
  'info-color': $info-color,
125
206
  'info-color-hover': shade('info-color', $hover-shift),
126
- 'info-info-background': fade('info-color-hover', 90%),
127
- 'info-info-background-hover': fade('info-color', 70%),
207
+ 'info-info-background': fade('info-color', 30%),
208
+ 'info-info-background-hover': fade('info-color', 50%),
128
209
  );
129
210
 
130
211
  // Dark theme colors. Emitted as --mw-dark-<key>, hence the prefixed references.
131
212
  $dark-theme-colors: (
132
213
  'page-background': $dark-background,
133
214
  'hero-overlay-background': fade('dark-page-background', 30%),
134
- 'card-background': tint('dark-page-background', 5%),
135
- 'footer-background': shade('dark-page-background', 30%),
136
- 'border': tint('dark-page-background', 16%),
215
+ // The surface stack. A card steps *away* from the text color - down here, up
216
+ // in the light theme - so content sits on the cleaner of the two surfaces.
217
+ // Footer and header chrome step further out, the rule steps back the other way.
218
+ 'card-background': surface('dark-page-background', 0.8),
219
+ 'footer-background': surface('dark-page-background', 0.75),
220
+ 'border': surface('dark-page-background', 1.5),
137
221
  'shadow': fade('dark-text-color', 30%),
138
222
  'text-color': $dark-text-color,
139
- 'text-muted-color': shade('dark-text-color', 30%),
223
+ 'text-muted-color': muted(0.7),
224
+ // Every color as ink on this page. Derived, not hardcoded - a project that
225
+ // overrides a root color gets a readable dark-theme variant without setting a
226
+ // second value, and a palette that is already light passes through unchanged.
227
+ 'primary-text-color': ink-on-dark('primary-color'),
228
+ 'secondary-text-color': ink-on-dark('secondary-color'),
229
+ 'success-text-color': ink-on-dark('success-color'),
230
+ 'warning-text-color': ink-on-dark('warning-color'),
231
+ 'danger-text-color': ink-on-dark('danger-color'),
232
+ 'info-text-color': ink-on-dark('info-color'),
233
+ // Translucent accent line used for dividers, rules and outlines. Built from
234
+ // the ink tone, not the fill tone, or the line disappears into the page.
235
+ 'border-accent': fade('dark-primary-text-color', 70%),
140
236
  );
141
237
 
142
238
  // Light theme colors. Emitted as --mw-light-<key>.
143
239
  $light-theme-colors: (
144
240
  'page-background': $light-background,
145
241
  'hero-overlay-background': fade('light-page-background', 30%),
146
- 'card-background': tint('light-page-background', 40%),
147
- 'footer-background': shade('light-page-background', 8%),
148
- 'border': shade('light-page-background', 15%),
242
+ 'card-background': surface('light-page-background', 1.05),
243
+ 'footer-background': surface('light-page-background', 0.95),
244
+ 'border': surface('light-page-background', 0.85),
149
245
  'shadow': fade('light-text-color', 30%),
150
246
  'text-color': $light-text-color,
151
- 'text-muted-color': tint('light-text-color', 32%),
247
+ 'text-muted-color': muted(0.5),
248
+ // Same idea, other direction: a color too light to be read on paper is
249
+ // deepened, everything else passes through as it is
250
+ 'primary-text-color': ink-on-light('primary-color'),
251
+ 'secondary-text-color': ink-on-light('secondary-color'),
252
+ 'success-text-color': ink-on-light('success-color'),
253
+ 'warning-text-color': ink-on-light('warning-color'),
254
+ 'danger-text-color': ink-on-light('danger-color'),
255
+ 'info-text-color': ink-on-light('info-color'),
256
+ 'border-accent': fade('light-primary-text-color', 70%),
152
257
  );
153
258
 
154
259
  // Header/navbar colors. They stay dark in both themes but can be retuned on
155
- // their own. Emitted as --mw-header-<key>.
260
+ // their own, hence the dark-* references. Emitted as --mw-header-<key>.
156
261
  $header-colors: (
157
262
  'background': token('dark-footer-background'),
158
263
  'text-color': token('dark-text-color'),
159
264
  'navbar-list-color': token('dark-text-muted-color'),
160
- 'navbar-list-active-color': token('primary-color'),
265
+ // Primary carries the navigation, secondary stays a signal. The bar is dark in
266
+ // both themes, so the active item takes the dark ink tone in both.
267
+ 'navbar-list-active-color': token('dark-primary-text-color'),
161
268
  'burgerbutton-color': token('dark-text-color'),
162
- 'border': token('border-accent'),
269
+ 'border': token('dark-border-accent'),
163
270
  );
164
271
  // Drives the bar height, the anchor scroll offset and the mobile drawer padding.
165
272
  // 59px is the intrinsic height: 42px logo + 2 × spacing('3') + 1px border.
@@ -47,7 +47,7 @@ h3 {
47
47
  font-size: font-size('xl');
48
48
 
49
49
  &.mw-accent {
50
- color: var(--mw-primary-color);
50
+ color: var(--mw-primary-text-color);
51
51
  }
52
52
  }
53
53
 
@@ -89,7 +89,7 @@ code {
89
89
  }
90
90
 
91
91
  blockquote {
92
- color: var(--mw-secondary-color);
92
+ color: var(--mw-secondary-text-color);
93
93
  font-style: italic;
94
94
  position: relative;
95
95
  padding: spacing('4') spacing('8');
@@ -80,10 +80,10 @@ $_mw-alert-colors: (
80
80
  var(--mw-#{$name}-info-background)
81
81
  );
82
82
  border: 1px solid color-mix(in srgb, #{$col} 20%, transparent);
83
- border-left: 4px solid #{$col};
83
+ border-left: 4px solid var(--mw-#{$name}-text-color);
84
84
 
85
85
  .mw-alert-icon {
86
- color: #{$col};
86
+ color: var(--mw-#{$name}-text-color);
87
87
  }
88
88
  }
89
89
  }
@@ -93,7 +93,7 @@ $_mw-avatar-colors: (
93
93
  .mw-avatar {
94
94
  margin-right: -15px;
95
95
  margin-bottom: -15px;
96
- border: 2px solid var(--mw-secondary-color);
96
+ border: 2px solid var(--mw-secondary-text-color);
97
97
  transition: transform 0.3s ease;
98
98
 
99
99
  &:hover {
@@ -50,7 +50,7 @@
50
50
  left: spacing('0');
51
51
  width: 200px;
52
52
  height: 5px;
53
- background: var(--mw-primary-color);
53
+ background: var(--mw-primary-text-color);
54
54
  }
55
55
  }
56
56
 
@@ -112,7 +112,7 @@
112
112
  }
113
113
 
114
114
  i {
115
- color: var(--mw-primary-color);
115
+ color: var(--mw-primary-text-color);
116
116
  flex-shrink: 0;
117
117
  }
118
118
  }
@@ -196,7 +196,7 @@
196
196
  }
197
197
 
198
198
  &:hover {
199
- color: var(--mw-primary-color);
199
+ color: var(--mw-primary-text-color);
200
200
  &::after {
201
201
  opacity: 1;
202
202
  height: 2px;
@@ -248,7 +248,7 @@
248
248
  &-footer {
249
249
  margin-top: spacing('6');
250
250
  padding-top: spacing('4');
251
- border-top: 1px solid var(--mw-secondary-color);
251
+ border-top: 1px solid var(--mw-secondary-text-color);
252
252
  display: flex;
253
253
  justify-content: space-between;
254
254
  align-items: center;
@@ -260,7 +260,7 @@
260
260
 
261
261
  &-button {
262
262
  transition: var(--mw-transition);
263
- color: var(--mw-primary-color);
263
+ color: var(--mw-primary-text-color);
264
264
 
265
265
  &:hover {
266
266
  transform: translateX(-7px);
@@ -51,8 +51,8 @@
51
51
  &:focus,
52
52
  &.mw-breadcrumbs-active {
53
53
  outline: 0;
54
- color: var(--mw-primary-color);
55
- border-color: var(--mw-primary-color);
54
+ color: var(--mw-primary-text-color);
55
+ border-color: var(--mw-primary-text-color);
56
56
  z-index: z-index('lift');
57
57
  }
58
58
 
@@ -66,7 +66,7 @@
66
66
  &.mw-breadcrumbs-current a,
67
67
  &:last-child a {
68
68
  color: var(--mw-text-color);
69
- border-color: var(--mw-primary-color);
69
+ border-color: var(--mw-primary-text-color);
70
70
  cursor: default;
71
71
  pointer-events: none;
72
72
  }
@@ -83,8 +83,8 @@
83
83
  [class*='mw-btn-link']
84
84
  ) {
85
85
  background: transparent;
86
- border-color: var(--mw-primary-color);
87
- color: var(--mw-primary-color);
86
+ border-color: var(--mw-primary-text-color);
87
+ color: var(--mw-primary-text-color);
88
88
 
89
89
  &:hover:not(:disabled) {
90
90
  background: var(--mw-primary-color);
@@ -101,8 +101,8 @@
101
101
  .mw-btn:first-child:not([class*='mw-btn-']),
102
102
  .mw-btn:last-child:not([class*='mw-btn-']) {
103
103
  background: transparent;
104
- border-color: var(--mw-primary-color);
105
- color: var(--mw-primary-color);
104
+ border-color: var(--mw-primary-text-color);
105
+ color: var(--mw-primary-text-color);
106
106
 
107
107
  &:hover:not(:disabled) {
108
108
  background: var(--mw-primary-color);
@@ -19,7 +19,7 @@
19
19
  font-size: inherit;
20
20
 
21
21
  &:focus-visible {
22
- outline: 2px solid var(--mw-primary-color);
22
+ outline: 2px solid var(--mw-primary-text-color);
23
23
  outline-offset: 2px;
24
24
  }
25
25
 
@@ -81,8 +81,8 @@
81
81
  }
82
82
  .mw-btn-outline {
83
83
  background: transparent;
84
- border-color: var(--mw-primary-color);
85
- color: var(--mw-primary-color);
84
+ border-color: var(--mw-primary-text-color);
85
+ color: var(--mw-primary-text-color);
86
86
  &:hover:not(:disabled) {
87
87
  background: var(--mw-primary-color);
88
88
  color: var(--mw-accent-text-color);
@@ -97,7 +97,7 @@
97
97
  background: transparent;
98
98
  border: none;
99
99
  padding: 0;
100
- color: var(--mw-primary-color);
100
+ color: var(--mw-primary-text-color);
101
101
  &:hover:not(:disabled) {
102
102
  text-decoration: underline;
103
103
  }
@@ -108,7 +108,7 @@
108
108
  padding: 0;
109
109
  color: var(--mw-text-muted-color);
110
110
  &:hover:not(:disabled) {
111
- color: var(--mw-primary-color);
111
+ color: var(--mw-primary-text-color);
112
112
  text-decoration: underline;
113
113
  }
114
114
  }
@@ -133,7 +133,7 @@
133
133
  cursor: pointer;
134
134
 
135
135
  &:focus-visible {
136
- outline: 2px solid var(--mw-primary-color);
136
+ outline: 2px solid var(--mw-primary-text-color);
137
137
  outline-offset: 2px;
138
138
  }
139
139
 
@@ -10,12 +10,12 @@ $_mw-calendar-grid-gap-sm: 3px;
10
10
  $_mw-calendar-grid-gap-compact: 3px;
11
11
 
12
12
  $_mw-calendar-dot-tones: (
13
- 'primary': var(--mw-primary-color),
14
- 'secondary': var(--mw-secondary-color),
15
- 'success': var(--mw-success-color),
16
- 'warning': var(--mw-warning-color),
17
- 'danger': var(--mw-danger-color),
18
- 'info': var(--mw-info-color),
13
+ 'primary': var(--mw-primary-text-color),
14
+ 'secondary': var(--mw-secondary-text-color),
15
+ 'success': var(--mw-success-text-color),
16
+ 'warning': var(--mw-warning-text-color),
17
+ 'danger': var(--mw-danger-text-color),
18
+ 'info': var(--mw-info-text-color),
19
19
  );
20
20
 
21
21
  // Same silhouette as a card, but without the hover lift
@@ -86,7 +86,7 @@ $_mw-calendar-dot-tones: (
86
86
  // Saturday and Sunday read like a wall calendar - the label carries the
87
87
  // weekend, the cell below only gets a faint tint
88
88
  .mw-calendar-weekday.mw-calendar-weekend {
89
- color: var(--mw-danger-color);
89
+ color: var(--mw-danger-text-color);
90
90
  }
91
91
 
92
92
  // A fixed row height instead of an aspect ratio
@@ -128,19 +128,19 @@ $_mw-calendar-dot-tones: (
128
128
  .mw-calendar-day:focus-visible {
129
129
  outline: none;
130
130
  box-shadow: 0 0 0 2px var(--mw-primary-background);
131
- border-color: var(--mw-primary-color);
131
+ border-color: var(--mw-primary-text-color);
132
132
  }
133
133
 
134
134
  // Today gets the outline, the selection gets the fill - both at once would be
135
135
  // indistinguishable. Secondary, so it never reads as a selection.
136
136
  .mw-calendar-day.mw-calendar-today {
137
- border-color: var(--mw-secondary-color);
137
+ border-color: var(--mw-secondary-text-color);
138
138
  font-weight: font-weight('bold');
139
139
  }
140
140
 
141
141
  .mw-calendar-day.mw-selected {
142
142
  background: var(--mw-primary-color);
143
- border-color: var(--mw-primary-color);
143
+ border-color: var(--mw-primary-text-color);
144
144
  color: var(--mw-accent-text-color);
145
145
  opacity: 1;
146
146
  }
@@ -13,8 +13,8 @@ $_mw-card-addon-colors: (
13
13
  @mixin _card-divider-gradient {
14
14
  background-image: linear-gradient(
15
15
  to right,
16
- var(--mw-secondary-color),
17
- var(--mw-secondary-color),
16
+ var(--mw-secondary-text-color),
17
+ var(--mw-secondary-text-color),
18
18
  var(--mw-gray-background),
19
19
  transparent
20
20
  );
@@ -17,11 +17,11 @@
17
17
  }
18
18
 
19
19
  &-primary {
20
- border-top-color: var(--mw-primary-color);
20
+ border-top-color: var(--mw-primary-text-color);
21
21
  }
22
22
 
23
23
  &-secondary {
24
- border-top-color: var(--mw-secondary-color);
24
+ border-top-color: var(--mw-secondary-text-color);
25
25
  }
26
26
  }
27
27
 
@@ -67,7 +67,7 @@
67
67
  }
68
68
 
69
69
  span {
70
- color: var(--mw-primary-color);
70
+ color: var(--mw-primary-text-color);
71
71
  }
72
72
  }
73
73
  }
@@ -52,22 +52,22 @@
52
52
 
53
53
  // Color variants (change icon color)
54
54
  &-primary .mw-empty-state-icon {
55
- color: var(--mw-primary-color);
55
+ color: var(--mw-primary-text-color);
56
56
  opacity: 0.7;
57
57
  }
58
58
 
59
59
  &-success .mw-empty-state-icon {
60
- color: var(--mw-success-color);
60
+ color: var(--mw-success-text-color);
61
61
  opacity: 0.7;
62
62
  }
63
63
 
64
64
  &-warning .mw-empty-state-icon {
65
- color: var(--mw-warning-color);
65
+ color: var(--mw-warning-text-color);
66
66
  opacity: 0.7;
67
67
  }
68
68
 
69
69
  &-danger .mw-empty-state-icon {
70
- color: var(--mw-danger-color);
70
+ color: var(--mw-danger-text-color);
71
71
  opacity: 0.7;
72
72
  }
73
73
  }
@@ -66,7 +66,7 @@
66
66
  }
67
67
 
68
68
  &:focus-visible {
69
- outline: 2px solid var(--mw-primary-color);
69
+ outline: 2px solid var(--mw-primary-text-color);
70
70
  outline-offset: 2px;
71
71
  }
72
72
 
@@ -78,7 +78,7 @@ button.mw-info {
78
78
  cursor: pointer;
79
79
 
80
80
  &:focus-visible {
81
- outline: 2px solid var(--mw-primary-color);
81
+ outline: 2px solid var(--mw-primary-text-color);
82
82
  outline-offset: 2px;
83
83
  }
84
84
  }
@@ -149,8 +149,8 @@ button.mw-info {
149
149
  @each $name, $col in $_mw-info-colors {
150
150
  .mw-info-#{$name} {
151
151
  background: var(--mw-#{$name}-info-background);
152
- border-color: #{$col};
153
- border-left: 6px solid #{$col};
152
+ border-color: var(--mw-#{$name}-text-color);
153
+ border-left: 6px solid var(--mw-#{$name}-text-color);
154
154
  }
155
155
 
156
156
  .mw-info-mini-#{$name} {
@@ -221,12 +221,12 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
221
221
 
222
222
  &:hover:not(:disabled) {
223
223
  background: var(--mw-primary-color);
224
- border-color: var(--mw-primary-color);
224
+ border-color: var(--mw-primary-text-color);
225
225
  color: var(--mw-accent-text-color);
226
226
  }
227
227
 
228
228
  &:focus-visible {
229
- outline: 2px solid var(--mw-primary-color);
229
+ outline: 2px solid var(--mw-primary-text-color);
230
230
  outline-offset: 2px;
231
231
  }
232
232
 
@@ -254,7 +254,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
254
254
  gap: spacing('3');
255
255
  padding: spacing('4');
256
256
  background: var(--mw-card-background);
257
- border: 1px dashed var(--mw-primary-color);
257
+ border: 1px dashed var(--mw-primary-text-color);
258
258
  // Same silhouette as a ticket, so it reads as one being written
259
259
  border-radius: radius('sm') radius('xl') radius('sm') radius('xl');
260
260