maverick-wave 4.10.0 → 4.12.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 (120) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +114 -12
  2. package/.claude/skills/maverick-wave/examples/angular-services.md +8 -4
  3. package/.claude/skills/maverick-wave/examples/static-landing-page.md +18 -8
  4. package/.claude/skills/maverick-wave/references/components.md +168 -9
  5. package/.claude/skills/maverick-wave/references/forms.md +26 -0
  6. package/.claude/skills/maverick-wave/references/javascript.md +34 -27
  7. package/.claude/skills/maverick-wave/references/layout.md +38 -3
  8. package/.claude/skills/maverick-wave/references/theming.md +33 -7
  9. package/CHANGELOG.md +12 -0
  10. package/README.md +79 -4
  11. package/index.html +16 -0
  12. package/maverick-wave.min.css +3 -3
  13. package/maverick-wave.min.js +1 -1
  14. package/package.json +2 -2
  15. package/src/js/main.js +79 -1
  16. package/src/partials/accordions-container.html +41 -16
  17. package/src/partials/alerts-container.html +5 -0
  18. package/src/partials/avatars-container.html +5 -0
  19. package/src/partials/badges-container.html +114 -0
  20. package/src/partials/blog-posts-container.html +5 -0
  21. package/src/partials/breadcrumbs-container.html +1 -1
  22. package/src/partials/button-bar-container.html +5 -0
  23. package/src/partials/buttons-container.html +84 -0
  24. package/src/partials/calendar-container.html +1 -1
  25. package/src/partials/cards-container.html +5 -0
  26. package/src/partials/code-container.html +6 -0
  27. package/src/partials/colors-container.html +1 -1
  28. package/src/partials/coming-soon-container.html +4 -0
  29. package/src/partials/divider-container.html +4 -0
  30. package/src/partials/dropdown-container.html +119 -0
  31. package/src/partials/empty-state-container.html +5 -0
  32. package/src/partials/form-container.html +5 -0
  33. package/src/partials/form-elements-container.html +5 -0
  34. package/src/partials/form-field-container.html +5 -0
  35. package/src/partials/gallery-container.html +5 -0
  36. package/src/partials/get-started-container.html +16 -4
  37. package/src/partials/header-container.html +6 -2
  38. package/src/partials/header-utilities-container.html +8 -2
  39. package/src/partials/html-lists-container.html +5 -0
  40. package/src/partials/info-container.html +4 -0
  41. package/src/partials/input-group-container.html +5 -0
  42. package/src/partials/item-lists-container.html +5 -0
  43. package/src/partials/kanban-container.html +1 -1
  44. package/src/partials/kbd-container.html +63 -0
  45. package/src/partials/meta-info-container.html +5 -0
  46. package/src/partials/pagination-container.html +1 -1
  47. package/src/partials/panels-container.html +4 -0
  48. package/src/partials/progress-container.html +4 -0
  49. package/src/partials/ratings-container.html +1 -1
  50. package/src/partials/skeleton-container.html +5 -0
  51. package/src/partials/spinners-container.html +5 -1
  52. package/src/partials/stepper-container.html +4 -0
  53. package/src/partials/tables-container.html +7 -0
  54. package/src/partials/tabs-container.html +35 -13
  55. package/src/partials/tags-container.html +5 -0
  56. package/src/partials/tiles-container.html +1 -1
  57. package/src/partials/typography-container.html +5 -0
  58. package/src/partials/utilities-container.html +153 -0
  59. package/src/scss/abstracts/_functions.scss +18 -0
  60. package/src/scss/abstracts/_mixins.scss +176 -0
  61. package/src/scss/abstracts/_variables.scss +192 -4
  62. package/src/scss/base/_base.scss +103 -2
  63. package/src/scss/base/_reset.scss +38 -3
  64. package/src/scss/base/_typography.scss +47 -0
  65. package/src/scss/components/_accordions.scss +37 -7
  66. package/src/scss/components/_alerts.scss +3 -3
  67. package/src/scss/components/_avatars.scss +27 -6
  68. package/src/scss/components/_badge.scss +157 -0
  69. package/src/scss/components/_blog-post.scss +10 -7
  70. package/src/scss/components/_breadcrumbs.scss +11 -2
  71. package/src/scss/components/_button-bar.scss +9 -2
  72. package/src/scss/components/_buttons.scss +133 -17
  73. package/src/scss/components/_calendar.scss +13 -2
  74. package/src/scss/components/_cards.scss +12 -5
  75. package/src/scss/components/_code.scss +15 -0
  76. package/src/scss/components/_coming-soon.scss +5 -2
  77. package/src/scss/components/_content-slider.scss +1 -1
  78. package/src/scss/components/_dropdown.scss +219 -0
  79. package/src/scss/components/_gallery.scss +17 -8
  80. package/src/scss/components/_index.scss +3 -0
  81. package/src/scss/components/_info.scss +14 -8
  82. package/src/scss/components/_kanban.scss +40 -6
  83. package/src/scss/components/_kbd.scss +43 -0
  84. package/src/scss/components/_lists.scss +26 -23
  85. package/src/scss/components/_modals.scss +71 -6
  86. package/src/scss/components/_pagination.scss +4 -3
  87. package/src/scss/components/_panels.scss +13 -14
  88. package/src/scss/components/_progress.scss +1 -1
  89. package/src/scss/components/_segmented.scss +8 -4
  90. package/src/scss/components/_stepper.scss +3 -3
  91. package/src/scss/components/_tables.scss +5 -8
  92. package/src/scss/components/_tabs.scss +22 -3
  93. package/src/scss/components/_tags.scss +1 -2
  94. package/src/scss/components/_techstack-bucket.scss +8 -5
  95. package/src/scss/components/_theme-toggle.scss +16 -8
  96. package/src/scss/components/_tiles.scss +14 -4
  97. package/src/scss/components/_timelines.scss +9 -6
  98. package/src/scss/components/_toasts.scss +1 -1
  99. package/src/scss/form-elements/_checkbox.scss +2 -1
  100. package/src/scss/form-elements/_form.scss +2 -2
  101. package/src/scss/form-elements/_input-group.scss +30 -1
  102. package/src/scss/form-elements/_input.scss +10 -10
  103. package/src/scss/form-elements/_login.scss +1 -1
  104. package/src/scss/form-elements/_radio.scss +4 -3
  105. package/src/scss/form-elements/_select.scss +9 -10
  106. package/src/scss/form-elements/_slider.scss +11 -11
  107. package/src/scss/form-elements/_textarea.scss +5 -8
  108. package/src/scss/form-elements/_toggle.scss +6 -5
  109. package/src/scss/layout/_footer.scss +14 -7
  110. package/src/scss/layout/_header.scss +18 -17
  111. package/src/scss/layout/_home.scss +1 -1
  112. package/src/scss/layout/_main.scss +6 -6
  113. package/src/scss/layout/_section.scss +7 -4
  114. package/src/scss/utilities/_accessibility.scss +38 -0
  115. package/src/scss/utilities/_aspect.scss +27 -0
  116. package/src/scss/utilities/_display.scss +52 -0
  117. package/src/scss/utilities/_elevation.scss +16 -0
  118. package/src/scss/utilities/_index.scss +2 -0
  119. package/src/scss/utilities/_text.scss +63 -0
  120. package/src/scss/utilities/_touch-targets.scss +63 -0
@@ -28,7 +28,7 @@ $_mw-tag-colors: (
28
28
  border-radius: radius('xl');
29
29
  font-size: font-size('xs');
30
30
  border: 1px solid var(--mw-border);
31
- transition: all 0.2s ease;
31
+ transition: var(--mw-transition-fast);
32
32
  user-select: none;
33
33
 
34
34
  &:hover {
@@ -65,7 +65,6 @@ $_mw-tag-colors: (
65
65
 
66
66
  .mw-tags-icon {
67
67
  display: inline-flex;
68
- margin-left: spacing('1');
69
68
  margin-right: spacing('2');
70
69
  font-size: 0.9rem;
71
70
  }
@@ -14,7 +14,7 @@
14
14
  border: 1px solid var(--mw-border);
15
15
  border-radius: radius('md');
16
16
  padding: spacing('2');
17
- transition: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
17
+ transition: var(--mw-transition-fast);
18
18
  color: var(--mw-text-color);
19
19
  min-width: 50px;
20
20
  min-height: 50px;
@@ -32,9 +32,12 @@
32
32
  font-size: font-size('xs');
33
33
  }
34
34
 
35
- &:hover {
35
+ @include hover {
36
36
  transform: translateY(-2px);
37
- box-shadow: 0 3px 10px var(--mw-shadow);
37
+ }
38
+
39
+ &:hover {
40
+ box-shadow: var(--mw-elevation-3);
38
41
  border-color: var(--mw-primary-text-color);
39
42
 
40
43
  .mw-techstack-logo {
@@ -76,7 +79,7 @@
76
79
  &-logo {
77
80
  object-fit: contain;
78
81
  border-radius: radius('sm');
79
- transition: transform 0.2s ease;
82
+ transition: transform var(--mw-duration-fast) var(--mw-ease-out);
80
83
  flex-shrink: 0;
81
84
  }
82
85
 
@@ -91,7 +94,7 @@
91
94
  &-name {
92
95
  font-weight: font-weight('bold');
93
96
  line-height: 1.1;
94
- transition: color 0.2s ease;
97
+ transition: color var(--mw-duration-fast) var(--mw-ease-out);
95
98
  }
96
99
 
97
100
  &-desc {
@@ -14,6 +14,16 @@
14
14
  align-items: center;
15
15
  transition: var(--mw-transition);
16
16
  margin-right: spacing('5');
17
+ appearance: none;
18
+ padding: 0;
19
+ @include tappable;
20
+ @include focus-ring;
21
+
22
+ &:active {
23
+ transform: scale(0.95);
24
+ transition-duration: var(--mw-duration-instant);
25
+ }
26
+
17
27
  @include media-down('lg') {
18
28
  margin-right: spacing('6');
19
29
  }
@@ -21,6 +31,8 @@
21
31
  &-slider {
22
32
  position: absolute;
23
33
  left: 3px;
34
+ top: 50%;
35
+ transform: translateY(-50%);
24
36
  width: 20px;
25
37
  height: 20px;
26
38
  border-radius: radius('full');
@@ -38,15 +50,11 @@
38
50
  left: 35px;
39
51
  }
40
52
 
41
- &.mw-active &-icon,
42
- &.active &-icon {
43
- left: 2px;
44
- }
45
-
46
53
  &-icon {
47
- position: absolute;
48
- top: -2px;
49
- left: 3px;
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ line-height: 1;
50
58
  font-size: font-size('base');
51
59
  transform: rotate(16deg);
52
60
  }
@@ -64,7 +64,7 @@
64
64
  background: var(--mw-card-background);
65
65
  border-radius: radius('sm') radius('xl') radius('sm') radius('xl');
66
66
  padding: spacing('5');
67
- box-shadow: 0 5px 10px var(--mw-shadow);
67
+ box-shadow: var(--mw-elevation-2);
68
68
  transition: var(--mw-transition);
69
69
  border: 1px solid var(--mw-border);
70
70
  position: relative;
@@ -74,11 +74,21 @@
74
74
  cursor: pointer;
75
75
 
76
76
  &:hover {
77
- transform: translateY(-2px);
78
- box-shadow: 0 7px 15px var(--mw-shadow);
77
+ box-shadow: var(--mw-elevation-3);
79
78
  border-color: var(--mw-border-accent);
80
79
  }
81
80
 
81
+ @include hover {
82
+ transform: translateY(-2px);
83
+ }
84
+
85
+ // A tile is tapped, so it needs a press of its own - the lift above never
86
+ // runs on a finger.
87
+ &:active {
88
+ transform: scale(0.985);
89
+ transition-duration: var(--mw-duration-instant);
90
+ }
91
+
82
92
  // Tile image
83
93
  &-img {
84
94
  width: 100px;
@@ -92,7 +102,7 @@
92
102
  width: 100%;
93
103
  height: 100%;
94
104
  object-fit: cover;
95
- transition: var(--mw-transition);
105
+ transition: transform var(--mw-duration-zoom) var(--mw-ease-out);
96
106
  }
97
107
  }
98
108
 
@@ -55,7 +55,7 @@ $_simple-date-width: 110px;
55
55
  position: relative;
56
56
  margin: spacing('1') auto;
57
57
  padding: spacing('5') 0;
58
- width: min(96%, 900px);
58
+ width: min(100%, 900px);
59
59
 
60
60
  // Center vertical line
61
61
  &::before {
@@ -88,7 +88,7 @@ $_simple-date-width: 110px;
88
88
  justify-content: center;
89
89
  gap: spacing('2');
90
90
  cursor: default;
91
- transition: transform 0.2s ease;
91
+ transition: transform var(--mw-duration-fast) var(--mw-ease-out);
92
92
  margin-bottom: spacing('4');
93
93
  }
94
94
 
@@ -109,7 +109,7 @@ $_simple-date-width: 110px;
109
109
  display: flex;
110
110
  flex-direction: column;
111
111
  opacity: 0;
112
- animation-duration: 0.9s;
112
+ animation-duration: var(--mw-duration-slower);
113
113
  animation-fill-mode: forwards;
114
114
  }
115
115
 
@@ -117,7 +117,7 @@ $_simple-date-width: 110px;
117
117
  margin-top: spacing('4');
118
118
  padding: spacing('2') spacing('3');
119
119
  background: var(--mw-card-background);
120
- box-shadow: 0 2px 7px var(--mw-shadow);
120
+ box-shadow: var(--mw-elevation-2);
121
121
  border-radius: radius('sm');
122
122
  cursor: default;
123
123
 
@@ -290,7 +290,7 @@ $_simple-date-width: 110px;
290
290
  position: relative;
291
291
  z-index: z-index('card');
292
292
  cursor: default;
293
- transition: transform 0.2s ease;
293
+ transition: transform var(--mw-duration-fast) var(--mw-ease-out);
294
294
  }
295
295
 
296
296
  &-content {
@@ -304,7 +304,10 @@ $_simple-date-width: 110px;
304
304
  // Staggered animation
305
305
  @for $i from 1 through 10 {
306
306
  &-step:nth-child(#{$i}) &-content {
307
- animation: mw-slide-in-right 0.6s forwards;
307
+ animation: mw-slide-in-right
308
+ var(--mw-duration-slow)
309
+ var(--mw-ease-out)
310
+ forwards;
308
311
  animation-delay: $i * 0.2s;
309
312
  }
310
313
  }
@@ -15,7 +15,7 @@
15
15
  > * {
16
16
  pointer-events: auto;
17
17
  margin-bottom: spacing('0');
18
- animation: mw-toast-in 0.3s ease;
18
+ animation: mw-toast-in var(--mw-duration-base) var(--mw-ease-spring);
19
19
  }
20
20
 
21
21
  // Default position
@@ -43,6 +43,7 @@ $_mw-checkbox-colors: (
43
43
  display: inline-flex;
44
44
  align-items: center;
45
45
  gap: spacing('2');
46
+ min-height: 1.5rem;
46
47
  cursor: pointer;
47
48
  user-select: none;
48
49
  position: relative;
@@ -83,7 +84,7 @@ $_mw-checkbox-colors: (
83
84
 
84
85
  // focus-visible state
85
86
  input[type='checkbox']:focus-visible + .mw-checkbox-box {
86
- box-shadow: 0 0 0 2px var(--mw-primary-background);
87
+ @include focus-halo;
87
88
  border-color: var(--mw-primary-color);
88
89
  }
89
90
 
@@ -107,7 +107,7 @@
107
107
  .mw-field {
108
108
  display: flex;
109
109
  flex-direction: column;
110
- gap: spacing('1');
110
+ gap: spacing('2');
111
111
 
112
112
  &-label {
113
113
  font-size: font-size('base');
@@ -142,7 +142,7 @@
142
142
  .mw-select,
143
143
  .mw-textarea {
144
144
  border-color: var(--mw-danger-color);
145
- box-shadow: 0 0 0 2px var(--mw-danger-info-background);
145
+ @include focus-halo('danger-text-color');
146
146
  }
147
147
  }
148
148
  }
@@ -63,10 +63,20 @@
63
63
  }
64
64
  }
65
65
 
66
+ // The field inside gives its halo up - three boxes each drawing their own
67
+ // ring around themselves is not a focused control, it is three focused
68
+ // controls - and the group draws one around the whole thing instead. Without
69
+ // this the group was the one field on the page whose focus was a border
70
+ // colour and nothing else.
66
71
  .mw-input:focus {
67
72
  box-shadow: none;
68
73
  }
69
74
 
75
+ &:focus-within {
76
+ border-radius: radius('sm');
77
+ @include focus-halo;
78
+ }
79
+
70
80
  // Button as suffix/prefix (e.g. search button, copy button)
71
81
  .mw-btn {
72
82
  border-radius: 0;
@@ -84,13 +94,23 @@
84
94
  }
85
95
  }
86
96
 
87
- // Size variants - applied to the group, cascades to prefix/suffix
97
+ // Size variants - put on the group, and they reach the field too. They used
98
+ // to style only the prefix and suffix, so `mw-input-group-sm` around a plain
99
+ // `mw-input` gave a small frame around a full-size field and the modifier
100
+ // looked broken unless you also knew to write `mw-input-sm` inside it.
88
101
  &-sm {
89
102
  .mw-input-group-prefix,
90
103
  .mw-input-group-suffix {
91
104
  padding: spacing('1') spacing('2');
92
105
  font-size: font-size('xs');
93
106
  }
107
+
108
+ .mw-input,
109
+ .mw-btn {
110
+ min-height: var(--mw-control-height-sm);
111
+ font-size: var(--mw-control-font-sm);
112
+ padding-block: spacing('1');
113
+ }
94
114
  }
95
115
 
96
116
  &-lg {
@@ -99,5 +119,14 @@
99
119
  padding: spacing('3') spacing('4');
100
120
  font-size: font-size('sm');
101
121
  }
122
+
123
+ .mw-input,
124
+ .mw-btn {
125
+ min-height: var(--mw-control-height-lg);
126
+ font-size: var(--mw-control-font-lg);
127
+ // A step under the minimum, or the padding wins and the group grows past
128
+ // the size step it was asked for - same trap as on the standalone field
129
+ padding-block: spacing('2');
130
+ }
102
131
  }
103
132
  }
@@ -3,7 +3,9 @@
3
3
  .mw-input {
4
4
  width: 100%;
5
5
  padding: spacing('2') spacing('3');
6
- font-size: font-size('sm');
6
+ font-size: var(--mw-control-font);
7
+ line-height: var(--mw-control-line-height);
8
+ min-height: var(--mw-control-height);
7
9
  background: var(--mw-form-elements-background);
8
10
  color: var(--mw-form-elements-color);
9
11
  border: 2px solid var(--mw-border);
@@ -20,11 +22,7 @@
20
22
  border-color: var(--mw-gray-color);
21
23
  }
22
24
 
23
- &:focus {
24
- outline: none;
25
- border-color: var(--mw-primary-color);
26
- box-shadow: 0 0 0 2px var(--mw-primary-background);
27
- }
25
+ @include field-focus;
28
26
 
29
27
  &:read-only {
30
28
  background-color: var(--mw-gray-background);
@@ -35,11 +33,13 @@
35
33
 
36
34
  &-sm {
37
35
  padding: spacing('1') spacing('2');
38
- font-size: font-size('xs');
36
+ font-size: var(--mw-control-font-sm);
37
+ min-height: var(--mw-control-height-sm);
39
38
  }
40
39
  &-lg {
41
- padding: spacing('3') spacing('4');
42
- font-size: font-size('sm');
40
+ padding: spacing('2') spacing('4');
41
+ font-size: var(--mw-control-font-lg);
42
+ min-height: var(--mw-control-height-lg);
43
43
  }
44
44
 
45
45
  // Numeric input for money and other figures - the entry counterpart to the
@@ -75,7 +75,7 @@
75
75
  opacity: 0.55;
76
76
  padding: 0;
77
77
  margin-left: spacing('1');
78
- transition: opacity 0.2s ease;
78
+ transition: opacity var(--mw-duration-fast) var(--mw-ease-out);
79
79
 
80
80
  &:hover {
81
81
  opacity: 1;
@@ -3,7 +3,7 @@
3
3
  .mw-login {
4
4
  background: var(--mw-card-background);
5
5
  border-radius: radius('sm') radius('xl') radius('sm') radius('xl');
6
- box-shadow: 0 5px 10px var(--mw-shadow);
6
+ box-shadow: var(--mw-elevation-2);
7
7
  transition: var(--mw-transition);
8
8
  border: 1px solid var(--mw-border);
9
9
  position: relative;
@@ -33,6 +33,7 @@ $_size-lg: spacing('7');
33
33
  display: inline-flex;
34
34
  align-items: center;
35
35
  gap: spacing('2');
36
+ min-height: 1.5rem;
36
37
  cursor: pointer;
37
38
  user-select: none;
38
39
 
@@ -50,7 +51,7 @@ $_size-lg: spacing('7');
50
51
  width: $_size-default;
51
52
  height: $_size-default;
52
53
  border: 2px solid var(--mw-border);
53
- border-radius: 50%;
54
+ border-radius: radius('full');
54
55
  transition: var(--mw-transition);
55
56
  background: var(--mw-form-elements-background);
56
57
 
@@ -62,7 +63,7 @@ $_size-lg: spacing('7');
62
63
  width: 50%;
63
64
  height: 50%;
64
65
  background: var(--mw-primary-color);
65
- border-radius: 50%;
66
+ border-radius: radius('full');
66
67
  transform: translate(-50%, -50%) scale(0);
67
68
  transition: var(--mw-transition);
68
69
  }
@@ -70,7 +71,7 @@ $_size-lg: spacing('7');
70
71
 
71
72
  // focus-visible state
72
73
  input[type='radio']:focus-visible + .mw-radio-button {
73
- box-shadow: 0 0 0 2px var(--mw-primary-background);
74
+ @include focus-halo;
74
75
  border-color: var(--mw-primary-color);
75
76
  }
76
77
 
@@ -3,7 +3,8 @@
3
3
  .mw-select {
4
4
  width: 100%;
5
5
  padding: spacing('2') spacing('6') spacing('2') spacing('3');
6
- font-size: font-size('xs');
6
+ font-size: var(--mw-control-font);
7
+ min-height: var(--mw-control-height);
7
8
  background: var(--mw-form-elements-background);
8
9
  color: var(--mw-form-elements-color);
9
10
  border: 2px solid var(--mw-border);
@@ -16,28 +17,26 @@
16
17
  background-position: right spacing('3') center;
17
18
  background-size: spacing('3') spacing('3');
18
19
  font-family: inherit;
19
- line-height: 1.5;
20
+ line-height: var(--mw-control-line-height);
20
21
 
21
22
  &:hover:not(:focus):not(:disabled) {
22
23
  border-color: var(--mw-gray-color);
23
24
  }
24
25
 
25
- &:focus {
26
- outline: none;
27
- border-color: var(--mw-primary-color);
28
- box-shadow: 0 0 0 2px var(--mw-primary-background);
29
- }
26
+ @include field-focus;
30
27
 
31
28
  // size modifiers
32
29
  &-sm {
33
30
  padding: spacing('1') spacing('5') spacing('1') spacing('2');
34
- font-size: font-size('xs');
31
+ font-size: var(--mw-control-font-sm);
32
+ min-height: var(--mw-control-height-sm);
35
33
  background-position: right spacing('2') center;
36
34
  background-size: spacing('2') spacing('2');
37
35
  }
38
36
  &-lg {
39
- padding: spacing('3') spacing('7') spacing('3') spacing('4');
40
- font-size: font-size('sm');
37
+ padding: spacing('2') spacing('7') spacing('2') spacing('4');
38
+ font-size: var(--mw-control-font-lg);
39
+ min-height: var(--mw-control-height-lg);
41
40
  background-position: right spacing('4') center;
42
41
  background-size: spacing('4') spacing('4');
43
42
  }
@@ -28,7 +28,7 @@ $_mw-slider-colors: (
28
28
  border-radius: radius('sm');
29
29
  appearance: none;
30
30
  cursor: pointer;
31
- margin-top: 0.35rem;
31
+ margin-top: spacing('2');
32
32
 
33
33
  // thumb
34
34
  &::-webkit-slider-thumb {
@@ -37,11 +37,11 @@ $_mw-slider-colors: (
37
37
  height: spacing('5');
38
38
  background: var(--fill);
39
39
  border: 2px solid var(--mw-border);
40
- border-radius: 50%;
40
+ border-radius: radius('full');
41
41
  margin-top: spacing('0');
42
42
  transition:
43
- transform 0.2s ease,
44
- border-color 0.2s ease;
43
+ transform var(--mw-duration-fast) var(--mw-ease-out),
44
+ border-color var(--mw-duration-fast) var(--mw-ease-out);
45
45
  }
46
46
  &::-webkit-slider-thumb:hover {
47
47
  transform: scale(1.1);
@@ -51,10 +51,10 @@ $_mw-slider-colors: (
51
51
  width: spacing('5');
52
52
  height: spacing('5');
53
53
  border: 2px solid var(--fill);
54
- border-radius: 50%;
54
+ border-radius: radius('full');
55
55
  transition:
56
- transform 0.2s ease,
57
- border-color 0.2s ease;
56
+ transform var(--mw-duration-fast) var(--mw-ease-out),
57
+ border-color var(--mw-duration-fast) var(--mw-ease-out);
58
58
  }
59
59
  &::-moz-range-thumb:hover {
60
60
  transform: scale(1.1);
@@ -76,7 +76,7 @@ $_mw-slider-colors: (
76
76
  width: spacing('5');
77
77
  height: spacing('5');
78
78
  border: 2px solid var(--fill);
79
- border-radius: 50%;
79
+ border-radius: radius('full');
80
80
  }
81
81
 
82
82
  // sizes
@@ -97,7 +97,7 @@ $_mw-slider-colors: (
97
97
  }
98
98
  &-lg {
99
99
  height: 16px;
100
- margin-top: 0.35rem;
100
+ margin-top: spacing('2');
101
101
  &::-webkit-slider-thumb {
102
102
  width: spacing('6');
103
103
  height: spacing('6');
@@ -128,8 +128,8 @@ $_mw-slider-colors: (
128
128
  .mw-slider-container {
129
129
  position: relative;
130
130
  width: 100%;
131
- line-height: 0.9;
132
- padding-bottom: 0.4rem;
131
+ line-height: 1.2;
132
+ padding-bottom: spacing('2');
133
133
 
134
134
  // the badge in top-right
135
135
  .mw-slider-value {
@@ -5,7 +5,8 @@
5
5
  width: 100%;
6
6
  height: auto;
7
7
  padding: spacing('2') spacing('3');
8
- font-size: font-size('xs');
8
+ font-size: var(--mw-control-font);
9
+ line-height: var(--mw-control-line-height);
9
10
  background: var(--mw-form-elements-background);
10
11
  color: var(--mw-form-elements-color);
11
12
  border: 2px solid var(--mw-border);
@@ -23,11 +24,7 @@
23
24
  border-color: var(--mw-gray-color);
24
25
  }
25
26
 
26
- &:focus {
27
- outline: none;
28
- border-color: var(--mw-primary-color);
29
- box-shadow: 0 0 0 2px var(--mw-primary-background);
30
- }
27
+ @include field-focus;
31
28
 
32
29
  &:read-only {
33
30
  background-color: var(--mw-gray-background);
@@ -38,12 +35,12 @@
38
35
 
39
36
  &-sm {
40
37
  padding: spacing('1') spacing('2');
41
- font-size: font-size('xs');
38
+ font-size: var(--mw-control-font-sm);
42
39
  }
43
40
  &-lg {
44
41
  min-height: spacing('11');
45
42
  padding: spacing('3') spacing('4');
46
- font-size: font-size('sm');
43
+ font-size: var(--mw-control-font-lg);
47
44
  }
48
45
 
49
46
  &-resizable {
@@ -34,6 +34,7 @@ $_knob-travel-lg: calc(
34
34
  display: inline-flex;
35
35
  align-items: center;
36
36
  gap: spacing('2');
37
+ min-height: 1.5rem;
37
38
  cursor: pointer;
38
39
  user-select: none;
39
40
  position: relative;
@@ -57,8 +58,8 @@ $_knob-travel-lg: calc(
57
58
  background: var(--mw-border);
58
59
  border-radius: radius('lg');
59
60
  transition:
60
- background 0.25s ease,
61
- box-shadow 0.25s ease;
61
+ background var(--mw-duration-base) var(--mw-ease-out),
62
+ box-shadow var(--mw-duration-base) var(--mw-ease-out);
62
63
  flex-shrink: 0;
63
64
 
64
65
  // The sliding knob
@@ -73,8 +74,8 @@ $_knob-travel-lg: calc(
73
74
  // fill *and* on the empty track, so it cannot follow the fill color
74
75
  background: var(--mw-accent-text-color);
75
76
  border-radius: radius('full');
76
- transition: transform 0.25s ease;
77
- box-shadow: 0 1px 4px var(--mw-shadow);
77
+ transition: transform var(--mw-duration-base) var(--mw-ease-out);
78
+ box-shadow: var(--mw-elevation-1);
78
79
  }
79
80
  }
80
81
 
@@ -87,7 +88,7 @@ $_knob-travel-lg: calc(
87
88
  }
88
89
 
89
90
  input[type='checkbox']:focus-visible + .mw-toggle-track {
90
- box-shadow: 0 0 0 2px var(--mw-primary-background);
91
+ @include focus-halo;
91
92
  }
92
93
 
93
94
  .mw-toggle-label {
@@ -61,8 +61,8 @@
61
61
  transform: scaleX(1);
62
62
  transform-origin: left;
63
63
  transition:
64
- transform 0.2s ease,
65
- opacity 0.2s ease;
64
+ transform var(--mw-duration-fast) var(--mw-ease-out),
65
+ opacity var(--mw-duration-fast) var(--mw-ease-out);
66
66
  }
67
67
 
68
68
  &:hover {
@@ -107,15 +107,23 @@
107
107
  font-size: font-size('xl');
108
108
  transition: var(--mw-transition);
109
109
  border: 1px solid var(--mw-border-accent);
110
- box-shadow: 0 3px 10px var(--mw-shadow);
110
+ box-shadow: var(--mw-elevation-3);
111
111
  text-decoration: none;
112
112
 
113
113
  &:hover {
114
114
  background: var(--mw-primary-color);
115
115
  color: var(--mw-primary-accent-text-color);
116
- transform: translateY(-2px);
117
116
  border-color: var(--mw-primary-color);
118
117
  }
118
+
119
+ @include hover {
120
+ transform: translateY(-2px);
121
+ }
122
+
123
+ &:active {
124
+ transform: scale(0.92);
125
+ transition-duration: var(--mw-duration-instant);
126
+ }
119
127
  }
120
128
  }
121
129
 
@@ -134,8 +142,8 @@
134
142
  font-size: font-size('sm');
135
143
  padding-top: spacing('4');
136
144
  margin: spacing('7') auto spacing('1') auto;
137
- width: 85%;
138
- border-top: 1px solid var(--mw-secondary-text-color);
145
+ width: 100%;
146
+ border-top: 1px solid var(--mw-border-accent);
139
147
  }
140
148
 
141
149
  .mw-last-updated {
@@ -202,7 +210,6 @@
202
210
  }
203
211
 
204
212
  .mw-copyright {
205
- width: 100%;
206
213
  margin-top: spacing('5');
207
214
  font-size: font-size('xs');
208
215
  }