maverick-wave 4.2.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +2 -1
  2. package/.claude/skills/maverick-wave/examples/angular-form.md +4 -0
  3. package/.claude/skills/maverick-wave/references/forms.md +27 -0
  4. package/CHANGELOG.md +10 -0
  5. package/CLAUDE.md +10 -10
  6. package/README.md +9 -9
  7. package/maverick-wave.min.css +1 -1
  8. package/package.json +2 -2
  9. package/scripts/verify.js +5 -5
  10. package/src/js/main.js +3 -3
  11. package/src/partials/accordions-container.html +3 -3
  12. package/src/partials/blog-posts-container.html +1 -1
  13. package/src/partials/buttons-container.html +1 -1
  14. package/src/partials/colors-container.html +4 -4
  15. package/src/partials/footer-container.html +3 -3
  16. package/src/partials/form-elements-container.html +98 -0
  17. package/src/partials/form-field-container.html +20 -4
  18. package/src/partials/get-started-container.html +19 -19
  19. package/src/partials/header-utilities-container.html +1 -1
  20. package/src/partials/modals-container.html +1 -1
  21. package/src/partials/ratings-container.html +1 -1
  22. package/src/partials/segmented-container.html +2 -2
  23. package/src/partials/tables-container.html +4 -4
  24. package/src/partials/tags-container.html +1 -1
  25. package/src/partials/timelines-container.html +5 -5
  26. package/src/partials/utilities-container.html +1 -1
  27. package/src/scss/abstracts/_variables.scss +7 -2
  28. package/src/scss/base/_base.scss +1 -1
  29. package/src/scss/components/_avatars.scss +1 -1
  30. package/src/scss/components/_kanban.scss +9 -9
  31. package/src/scss/form-elements/_checkbox.scss +1 -1
  32. package/src/scss/form-elements/_form.scss +2 -2
  33. package/src/scss/form-elements/_index.scss +1 -0
  34. package/src/scss/form-elements/_input-group.scss +1 -1
  35. package/src/scss/form-elements/_input.scss +3 -3
  36. package/src/scss/form-elements/_prefilled.scss +65 -0
  37. package/src/scss/form-elements/_select.scss +2 -2
  38. package/src/scss/form-elements/_slider.scss +1 -1
  39. package/src/scss/form-elements/_textarea.scss +2 -2
  40. package/src/scss/layout/_header.scss +1 -1
  41. package/src/scss/utilities/_flex.scss +1 -1
@@ -1,6 +1,6 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- // Pixel-precise shape values no fractional keys in the spacing map
3
+ // Pixel-precise shape values - no fractional keys in the spacing map
4
4
  $_mw-kanban-action-size: 26px;
5
5
  $_mw-kanban-action-size-touch: 32px;
6
6
  // Room the ribbon needs in the top right corner of a ticket
@@ -22,7 +22,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
22
22
  // Board
23
23
  // ---------------------------------------------------------------------------
24
24
  .mw-kanban {
25
- // Board surface drop it with .mw-kanban-plain or override per board.
25
+ // Board surface - drop it with .mw-kanban-plain or override per board.
26
26
  --mw-kanban-background: color-mix(
27
27
  in srgb,
28
28
  var(--mw-gray-color) 40%,
@@ -30,7 +30,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
30
30
  );
31
31
  --mw-kanban-lane-border: 1px dashed
32
32
  color-mix(in srgb, var(--mw-text-muted-color) 40%, transparent);
33
- // Keeps an empty lane from collapsing onto its header raise it per board
33
+ // Keeps an empty lane from collapsing onto its header - raise it per board
34
34
  // to give a board that starts out empty some presence
35
35
  --mw-kanban-column-min-height: 120px;
36
36
 
@@ -55,7 +55,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
55
55
  }
56
56
  }
57
57
 
58
- // Board without its own surface for pages that already sit on a panel
58
+ // Board without its own surface - for pages that already sit on a panel
59
59
  .mw-kanban-plain {
60
60
  --mw-kanban-background: transparent;
61
61
  padding: spacing('0');
@@ -108,7 +108,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
108
108
  flex-shrink: 0;
109
109
  }
110
110
 
111
- // Sits on .mw-btn this only trims it down to the header's line height
111
+ // Sits on .mw-btn - this only trims it down to the header's line height
112
112
  .mw-kanban-add {
113
113
  padding: spacing('1') spacing('3');
114
114
  line-height: 1;
@@ -124,7 +124,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
124
124
  min-height: var(--mw-kanban-column-min-height);
125
125
  }
126
126
 
127
- // Ticket a plain .mw-card, only smaller
127
+ // Ticket - a plain .mw-card, only smaller
128
128
  .mw-kanban-card {
129
129
  padding: spacing('4');
130
130
 
@@ -169,7 +169,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
169
169
  line-height: 1.45;
170
170
  }
171
171
 
172
- // Footer ticket key on the left, assignee and the action buttons on the right
172
+ // Footer - ticket key on the left, assignee and the action buttons on the right
173
173
  .mw-kanban-card-footer {
174
174
  display: flex;
175
175
  align-items: center;
@@ -247,7 +247,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
247
247
  border-color: var(--mw-danger-color);
248
248
  }
249
249
 
250
- // Composer one per board, moved into whichever lane it is needed in
250
+ // Composer - one per board, moved into whichever lane it is needed in
251
251
  .mw-kanban-composer {
252
252
  display: none;
253
253
  flex-direction: column;
@@ -310,7 +310,7 @@ $_mw-kanban-ribbon-clearance-compact: 58px;
310
310
  display: none;
311
311
  }
312
312
 
313
- // Compact board for many lanes or a board next to a sidebar
313
+ // Compact board - for many lanes or a board next to a sidebar
314
314
  .mw-kanban-compact {
315
315
  --mw-kanban-column-min-height: 90px;
316
316
 
@@ -5,7 +5,7 @@ $_size-sm: spacing('5');
5
5
  $_size-default: spacing('6');
6
6
  $_size-lg: spacing('7');
7
7
 
8
- // Checkmark dimensions (not from spacing map these are shape-drawing values)
8
+ // Checkmark dimensions (not from spacing map - these are shape-drawing values)
9
9
  $_check-sm-w: 9px;
10
10
  $_check-sm-h: 6px;
11
11
  $_check-default-w: 14px;
@@ -84,7 +84,7 @@
84
84
  }
85
85
  }
86
86
 
87
- // ===== Form Field label + input + hint + error as a unit =====
87
+ // ===== Form Field - label + input + hint + error as a unit =====
88
88
  // Designed e.g. for Angular reactive forms pattern:
89
89
  // <div class="mw-field">
90
90
  // <label class="mw-field-label mw-required">Email</label>
@@ -103,7 +103,7 @@
103
103
  color: var(--mw-text-color);
104
104
  }
105
105
 
106
- // Required field asterisk add class mw-required or attribute data-required
106
+ // Required field asterisk - add class mw-required or attribute data-required
107
107
  &-label.mw-required::after,
108
108
  &-label[data-required='true']::after {
109
109
  content: ' *';
@@ -8,3 +8,4 @@
8
8
  @forward 'slider';
9
9
  @forward 'textarea';
10
10
  @forward 'toggle';
11
+ @forward 'prefilled';
@@ -84,7 +84,7 @@
84
84
  }
85
85
  }
86
86
 
87
- // Size variants applied to the group, cascades to prefix/suffix
87
+ // Size variants - applied to the group, cascades to prefix/suffix
88
88
  &-sm {
89
89
  .mw-input-group-prefix,
90
90
  .mw-input-group-suffix {
@@ -27,7 +27,7 @@
27
27
  }
28
28
 
29
29
  &:read-only {
30
- background: var(--mw-gray-background);
30
+ background-color: var(--mw-gray-background);
31
31
  color: var(--mw-text-muted-color);
32
32
  cursor: default;
33
33
  box-shadow: none;
@@ -66,7 +66,7 @@
66
66
  }
67
67
  }
68
68
 
69
- // Date / time inputs style the native picker indicator
69
+ // Date / time inputs - style the native picker indicator
70
70
  &[type='date'],
71
71
  &[type='time'],
72
72
  &[type='datetime-local'] {
@@ -85,7 +85,7 @@
85
85
 
86
86
  // disabled state
87
87
  &:disabled {
88
- background: var(--mw-gray-background);
88
+ background-color: var(--mw-gray-background);
89
89
  color: var(--mw-text-muted-color);
90
90
  cursor: not-allowed;
91
91
  }
@@ -0,0 +1,65 @@
1
+ @use '../abstracts' as *;
2
+
3
+ // ===== Prefilled marker =====
4
+ // Marks a control whose value did not come from the user in this session -
5
+ // loaded from an existing record, restored from a draft, filled with a
6
+ // default. Add `mw-prefilled` to the control itself, not to the wrapper, so
7
+ // it also works outside `mw-field` (input groups, standalone selects).
8
+
9
+ $_marker-sm: 10px;
10
+ $_marker-base: 12px;
11
+ $_marker-lg: 14px;
12
+
13
+ // 135deg puts the hard edge on the anti-diagonal, which fills the top left
14
+ // half of the background box - a right triangle pointing into the corner.
15
+ $_marker-image: linear-gradient(
16
+ 135deg,
17
+ var(--mw-info-color) 50%,
18
+ transparent 50%
19
+ );
20
+
21
+ @mixin _marker($size) {
22
+ background-image: $_marker-image;
23
+ background-repeat: no-repeat;
24
+ background-position: left top;
25
+ background-size: $size $size;
26
+ }
27
+
28
+ // A select already paints its arrow, so adding a layer means restating both.
29
+ @mixin _marker-select($size, $arrow-inset, $arrow-size) {
30
+ background-image: $_marker-image, $select-arrow-image;
31
+ background-repeat: no-repeat;
32
+ background-position:
33
+ left top,
34
+ right $arrow-inset center;
35
+ background-size:
36
+ $size $size,
37
+ $arrow-size $arrow-size;
38
+ }
39
+
40
+ .mw-prefilled {
41
+ @include _marker($_marker-base);
42
+
43
+ &.mw-input-sm,
44
+ &.mw-textarea-sm {
45
+ @include _marker($_marker-sm);
46
+ }
47
+
48
+ &.mw-input-lg,
49
+ &.mw-textarea-lg {
50
+ @include _marker($_marker-lg);
51
+ }
52
+
53
+ // Selects last: each size restates the arrow layer it would otherwise lose.
54
+ &.mw-select {
55
+ @include _marker-select($_marker-base, spacing('3'), spacing('3'));
56
+ }
57
+
58
+ &.mw-select-sm {
59
+ @include _marker-select($_marker-sm, spacing('2'), spacing('2'));
60
+ }
61
+
62
+ &.mw-select-lg {
63
+ @include _marker-select($_marker-lg, spacing('4'), spacing('4'));
64
+ }
65
+ }
@@ -11,7 +11,7 @@
11
11
  transition: var(--mw-transition);
12
12
  appearance: none;
13
13
  -webkit-appearance: none;
14
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath fill='%23666' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");
14
+ background-image: $select-arrow-image;
15
15
  background-repeat: no-repeat;
16
16
  background-position: right spacing('3') center;
17
17
  background-size: spacing('3') spacing('3');
@@ -44,7 +44,7 @@
44
44
 
45
45
  // disabled state
46
46
  &:disabled {
47
- background: var(--mw-gray-background);
47
+ background-color: var(--mw-gray-background);
48
48
  color: var(--mw-text-muted-color);
49
49
  cursor: not-allowed;
50
50
  }
@@ -145,7 +145,7 @@ $_mw-slider-colors: (
145
145
  top: -15px;
146
146
  }
147
147
 
148
- // 110 numeric style
148
+ // 1-10 numeric style
149
149
  &.mw-slider-numeric::after {
150
150
  content: attr(data-value) '/10';
151
151
  }
@@ -30,7 +30,7 @@
30
30
  }
31
31
 
32
32
  &:read-only {
33
- background: var(--mw-gray-background);
33
+ background-color: var(--mw-gray-background);
34
34
  color: var(--mw-text-muted-color);
35
35
  cursor: default;
36
36
  box-shadow: none;
@@ -58,7 +58,7 @@
58
58
 
59
59
  // disabled state
60
60
  &:disabled {
61
- background: var(--mw-gray-background);
61
+ background-color: var(--mw-gray-background);
62
62
  color: var(--mw-text-muted-color);
63
63
  cursor: not-allowed;
64
64
  }
@@ -79,7 +79,7 @@
79
79
  }
80
80
 
81
81
  &:disabled {
82
- // Same treatment as every other disabled button a theme-bound text
82
+ // Same treatment as every other disabled button - a theme-bound text
83
83
  // color would go dark on this always-primary surface in light mode
84
84
  opacity: 0.6;
85
85
  cursor: not-allowed;
@@ -77,7 +77,7 @@
77
77
  }
78
78
  }
79
79
 
80
- // Align self the per-item counterpart to .mw-items-*
80
+ // Align self - the per-item counterpart to .mw-items-*
81
81
  .mw-self {
82
82
  &-start {
83
83
  align-self: flex-start;