m3-svelte 5.15.4 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/package/buttons/Button.svelte +137 -131
  2. package/package/buttons/ConnectedButtons.svelte +1 -1
  3. package/package/buttons/FAB.svelte +30 -21
  4. package/package/buttons/SplitButton.svelte +30 -21
  5. package/package/containers/BottomSheet.svelte +10 -8
  6. package/package/containers/Card.svelte +15 -13
  7. package/package/containers/Dialog.svelte +36 -45
  8. package/package/containers/Dialog.svelte.d.ts +0 -8
  9. package/package/containers/ListItem.svelte +43 -11
  10. package/package/containers/Menu.svelte +6 -4
  11. package/package/containers/MenuItem.svelte +13 -6
  12. package/package/containers/Snackbar.svelte +49 -45
  13. package/package/containers/Snackbar.svelte.d.ts +4 -17
  14. package/package/containers/SnackbarItem.svelte +9 -7
  15. package/package/containers/StandardSideSheet.svelte +11 -2
  16. package/package/forms/Checkbox.svelte +12 -12
  17. package/package/forms/Chip.svelte +31 -19
  18. package/package/forms/CircularProgress.svelte +3 -3
  19. package/package/forms/CircularProgressEstimate.svelte +2 -2
  20. package/package/forms/DateField.svelte +33 -19
  21. package/package/forms/DateFieldOutlined.svelte +42 -28
  22. package/package/forms/DatePickerDocked.svelte +5 -3
  23. package/package/forms/LinearProgress.svelte +5 -5
  24. package/package/forms/LinearProgressEstimate.svelte +4 -4
  25. package/package/forms/LoadingIndicator.svelte +4 -4
  26. package/package/forms/RadioAnim1.svelte +9 -9
  27. package/package/forms/RadioAnim2.svelte +9 -9
  28. package/package/forms/RadioAnim3.svelte +9 -9
  29. package/package/forms/Select.svelte +46 -36
  30. package/package/forms/SelectOutlined.svelte +47 -37
  31. package/package/forms/Slider.svelte +40 -33
  32. package/package/forms/Switch.svelte +30 -29
  33. package/package/forms/TextField.svelte +44 -27
  34. package/package/forms/TextFieldMultiline.svelte +44 -27
  35. package/package/forms/TextFieldOutlined.svelte +44 -30
  36. package/package/forms/TextFieldOutlinedMultiline.svelte +44 -30
  37. package/package/forms/WavyLinearProgress.svelte +2 -7
  38. package/package/forms/WavyLinearProgressEstimate.svelte +2 -7
  39. package/package/forms/_picker/CalendarPicker.svelte +9 -2
  40. package/package/forms/_picker/FocusPicker.svelte +9 -7
  41. package/package/forms/_picker/Header.svelte +12 -5
  42. package/package/forms/_picker/Item.svelte +15 -8
  43. package/package/index.d.ts +4 -8
  44. package/package/index.js +4 -7
  45. package/package/{utils → misc}/Divider.svelte +1 -1
  46. package/package/misc/Icon.svelte +0 -4
  47. package/package/misc/Layer.svelte +1 -1
  48. package/package/{utils → misc}/badge.js +8 -5
  49. package/package/misc/recommended-styles.css +12 -10
  50. package/package/misc/styles.css +183 -250
  51. package/package/misc/tailwind-styles.css +199 -107
  52. package/package/misc/utils.js +2 -4
  53. package/package/nav/NavCMLX.svelte +65 -29
  54. package/package/nav/NavCMLX.svelte.d.ts +1 -1
  55. package/package/nav/NavCMLXItem.svelte +359 -188
  56. package/package/nav/NavCMLXItem.svelte.d.ts +4 -7
  57. package/package/nav/Tabs.svelte +19 -10
  58. package/package/nav/TabsLink.svelte +19 -10
  59. package/package/nav/VariableTabs.svelte +18 -9
  60. package/package/nav/VariableTabsLink.svelte +18 -9
  61. package/package.json +16 -13
  62. package/package/containers/NewSnackbar.svelte +0 -113
  63. package/package/containers/NewSnackbar.svelte.d.ts +0 -7
  64. package/package/forms/CircularProgressIndeterminate.svelte +0 -62
  65. package/package/forms/CircularProgressIndeterminate.svelte.d.ts +0 -5
  66. package/package/forms/LinearProgressIndeterminate.svelte +0 -55
  67. package/package/forms/LinearProgressIndeterminate.svelte.d.ts +0 -5
  68. package/package/forms/SliderTicks.svelte +0 -12
  69. package/package/forms/SliderTicks.svelte.d.ts +0 -18
  70. /package/package/{utils → misc}/ChipChooser.svelte +0 -0
  71. /package/package/{utils → misc}/ChipChooser.svelte.d.ts +0 -0
  72. /package/package/{utils → misc}/Divider.svelte.d.ts +0 -0
  73. /package/package/{utils → misc}/badge.d.ts +0 -0
@@ -40,8 +40,8 @@
40
40
  inset: -0.625rem;
41
41
  width: 2.5rem;
42
42
  height: 2.5rem;
43
- border-radius: var(--m3-util-rounding-full);
44
- color: rgb(var(--m3-scheme-on-surface-variant));
43
+ border-radius: var(--m3-shape-full);
44
+ color: var(--m3c-on-surface-variant);
45
45
  cursor: pointer;
46
46
  }
47
47
 
@@ -50,9 +50,9 @@
50
50
  inset: 0.625rem;
51
51
  width: 1.25rem;
52
52
  height: 1.25rem;
53
- border-radius: var(--m3-util-rounding-full);
53
+ border-radius: var(--m3-shape-full);
54
54
  border: solid 0.125rem currentColor;
55
- transition: border var(--m3-util-easing-fast);
55
+ transition: border var(--m3-easing-fast);
56
56
  }
57
57
 
58
58
  .radio-dot {
@@ -61,25 +61,25 @@
61
61
  width: 0.625rem;
62
62
  height: 0.625rem;
63
63
  scale: 0;
64
- border-radius: var(--m3-util-rounding-full);
64
+ border-radius: var(--m3-shape-full);
65
65
  background-color: currentColor;
66
66
  }
67
67
 
68
68
  :global(input:focus-visible) + .layer-container {
69
- color: rgb(var(--m3-scheme-on-surface));
69
+ color: var(--m3c-on-surface);
70
70
  }
71
71
 
72
72
  :global(input:checked) + .layer-container {
73
- color: rgb(var(--m3-scheme-primary));
73
+ color: var(--m3c-primary);
74
74
  }
75
75
 
76
76
  :global(input:checked) + .layer-container .radio-dot {
77
77
  scale: 1;
78
- transition: scale var(--m3-util-easing-fast-spatial);
78
+ transition: scale var(--m3-easing-fast-spatial);
79
79
  }
80
80
 
81
81
  :global(input:disabled) + .layer-container {
82
- color: rgb(var(--m3-scheme-on-surface) / 0.38);
82
+ color: oklab(from var(--m3c-on-surface) l a b / 0.38);
83
83
  cursor: not-allowed;
84
84
  }
85
85
 
@@ -40,8 +40,8 @@
40
40
  inset: -0.625rem;
41
41
  width: 2.5rem;
42
42
  height: 2.5rem;
43
- border-radius: var(--m3-util-rounding-full);
44
- color: rgb(var(--m3-scheme-on-surface-variant));
43
+ border-radius: var(--m3-shape-full);
44
+ color: var(--m3c-on-surface-variant);
45
45
  cursor: pointer;
46
46
  }
47
47
 
@@ -50,9 +50,9 @@
50
50
  inset: 0.625rem;
51
51
  width: 1.25rem;
52
52
  height: 1.25rem;
53
- border-radius: var(--m3-util-rounding-full);
53
+ border-radius: var(--m3-shape-full);
54
54
  border: solid 0.125rem currentColor;
55
- transition: border var(--m3-util-easing-fast);
55
+ transition: border var(--m3-easing-fast);
56
56
  }
57
57
 
58
58
  .radio-dot {
@@ -60,17 +60,17 @@
60
60
  inset: 0.75rem;
61
61
  width: 1rem;
62
62
  height: 1rem;
63
- border-radius: var(--m3-util-rounding-full);
63
+ border-radius: var(--m3-shape-full);
64
64
  outline: solid 0 currentColor;
65
- transition: var(--m3-util-easing);
65
+ transition: var(--m3-easing);
66
66
  }
67
67
 
68
68
  :global(input:focus-visible) + .layer-container {
69
- color: rgb(var(--m3-scheme-on-surface));
69
+ color: var(--m3c-on-surface);
70
70
  }
71
71
 
72
72
  :global(input:checked) + .layer-container {
73
- color: rgb(var(--m3-scheme-primary));
73
+ color: var(--m3c-primary);
74
74
  }
75
75
 
76
76
  :global(input:checked) + .layer-container .radio-dot {
@@ -79,7 +79,7 @@
79
79
  }
80
80
 
81
81
  :global(input:disabled) + .layer-container {
82
- color: rgb(var(--m3-scheme-on-surface) / 0.38);
82
+ color: oklab(from var(--m3c-on-surface) l a b / 0.38);
83
83
  cursor: not-allowed;
84
84
  }
85
85
 
@@ -28,7 +28,7 @@
28
28
  class:enabled={!extra.disabled}
29
29
  style:align-self={width == "auto" ? "start" : undefined}
30
30
  >
31
- <select class="m3-font-body-large" style:--width={width} bind:value {id} {...extra}>
31
+ <select style:--width={width} bind:value {id} {...extra}>
32
32
  {#each options as { icon, text, ...extra }, i (i)}
33
33
  <option class="focus-inset" {...extra}>
34
34
  <Layer />
@@ -39,28 +39,30 @@
39
39
  </option>
40
40
  {/each}
41
41
  </select>
42
- <label for={id} class="m3-font-body-small">
42
+ <label for={id}>
43
43
  {label}
44
44
  </label>
45
45
  </div>
46
46
 
47
47
  <style>
48
- :root {
49
- --m3-menu-shape: var(--m3-util-rounding-extra-small);
50
- --m3-field-filled-shape: var(--m3-util-rounding-extra-small);
48
+ @layer tokens {
49
+ :root {
50
+ --m3-menu-shape: var(--m3-shape-extra-small);
51
+ --m3-field-filled-shape: var(--m3-shape-extra-small);
52
+ }
51
53
  }
52
54
 
53
55
  .m3-container {
54
56
  display: flex;
55
57
  flex-direction: column;
56
58
  position: relative;
57
- --secondary-color: rgb(var(--m3-scheme-on-surface-variant));
59
+ --secondary-color: var(--m3c-on-surface-variant);
58
60
  &.enabled {
59
61
  &:hover {
60
- --secondary-color: rgb(var(--m3-scheme-on-surface));
62
+ --secondary-color: var(--m3c-on-surface);
61
63
  }
62
64
  &:focus-within {
63
- --secondary-color: rgb(var(--m3-scheme-primary));
65
+ --secondary-color: var(--m3c-primary);
64
66
  select {
65
67
  box-shadow: inset 0px -2px var(--secondary-color);
66
68
  }
@@ -68,12 +70,19 @@
68
70
  }
69
71
  }
70
72
  label {
73
+
74
+ font-family: var(--m3-font);
75
+ font-size: 0.75rem;
76
+ line-height: 1.333;
77
+ letter-spacing: 0.025rem;
78
+ font-weight: 400;
79
+
71
80
  position: absolute;
72
81
  top: 0.5rem;
73
82
  inset-inline: 1rem;
74
83
  color: var(--secondary-color);
75
84
  pointer-events: none;
76
- transition: color var(--m3-util-easing-fast);
85
+ transition: color var(--m3-easing-fast);
77
86
  }
78
87
 
79
88
  select {
@@ -85,17 +94,24 @@
85
94
  }
86
95
 
87
96
  select {
97
+
98
+ font-family: var(--m3-font);
99
+ font-size: 1rem;
100
+ line-height: 1.5;
101
+ letter-spacing: 0;
102
+ font-weight: 400;
103
+
88
104
  display: flex;
89
105
  align-items: center;
90
- height: calc(3.5rem + var(--m3-util-density-term));
91
- padding-top: calc(var(--m3-font-body-small-size) * var(--m3-font-body-small-height));
106
+ height: calc(3.5rem + (var(--m3v-density) * 0.25rem));
107
+ padding-top: 1rem;
92
108
  padding-inline: 1rem;
93
109
 
94
110
  border-radius: var(--m3-field-filled-shape) var(--m3-field-filled-shape) 0 0;
95
- background-color: rgb(var(--m3-scheme-surface-container-highest));
111
+ background-color: var(--m3c-surface-container-highest);
96
112
  transition:
97
- background-color var(--m3-util-easing-fast),
98
- box-shadow var(--m3-util-easing-fast);
113
+ background-color var(--m3-easing-fast),
114
+ box-shadow var(--m3-easing-fast);
99
115
 
100
116
  border: none;
101
117
  position: relative;
@@ -106,7 +122,7 @@
106
122
  &:open {
107
123
  background-color: color-mix(
108
124
  in oklab,
109
- rgb(var(--m3-scheme-surface-container-highest)),
125
+ var(--m3c-surface-container-highest),
110
126
  currentColor 8%
111
127
  );
112
128
  }
@@ -119,16 +135,16 @@
119
135
  scale: 1 0.6; /* yes we are squashing the arrow, surely you don't have a problem with that */
120
136
  color: var(--secondary-color);
121
137
  transition:
122
- color var(--m3-util-easing-fast),
123
- rotate var(--m3-util-easing-fast);
138
+ color var(--m3-easing-fast),
139
+ rotate var(--m3-easing-fast);
124
140
  }
125
141
  select:open::picker-icon {
126
142
  rotate: 180deg;
127
143
  }
128
144
 
129
145
  ::picker(select) {
130
- background-color: rgb(var(--m3-scheme-surface-container));
131
- box-shadow: var(--m3-util-elevation-2);
146
+ background-color: var(--m3c-surface-container);
147
+ box-shadow: var(--m3-elevation-2);
132
148
  border-radius: var(--m3-menu-shape);
133
149
 
134
150
  box-sizing: border-box;
@@ -137,10 +153,10 @@
137
153
  interpolate-size: allow-keywords;
138
154
  overflow: hidden;
139
155
  transition:
140
- width var(--m3-util-easing-fast),
141
- height var(--m3-util-easing-fast),
142
- display var(--m3-util-duration-fast) allow-discrete,
143
- overlay var(--m3-util-duration-fast) allow-discrete;
156
+ width var(--m3-easing-fast),
157
+ height var(--m3-easing-fast),
158
+ display var(--m3-duration-fast) allow-discrete,
159
+ overlay var(--m3-duration-fast) allow-discrete;
144
160
 
145
161
  border: none;
146
162
  cursor: auto;
@@ -150,7 +166,7 @@
150
166
  height: auto;
151
167
  transition:
152
168
  width 500ms linear,
153
- height 500ms var(--m3-util-timing-function-emphasized-decel),
169
+ height 500ms var(--m3-timing-function-emphasized-decel),
154
170
  display 500ms allow-discrete,
155
171
  overlay 500ms allow-discrete;
156
172
  }
@@ -165,13 +181,7 @@
165
181
  display: grid;
166
182
  grid-template-columns: auto 1fr;
167
183
  padding-inline: 1rem;
168
- padding-block: calc(
169
- (
170
- 3rem + var(--m3-util-density-term) -
171
- (var(--m3-font-body-large-size) * var(--m3-font-body-large-height))
172
- ) /
173
- 2
174
- );
184
+ padding-block: calc((calc(3rem + (var(--m3v-density) * 0.25rem)) - 1lh) / 2);
175
185
  &:first-child {
176
186
  margin-top: 0.5rem;
177
187
  }
@@ -181,8 +191,8 @@
181
191
 
182
192
  background-color: transparent;
183
193
  &:checked {
184
- background-color: rgb(var(--m3-scheme-primary-container));
185
- color: rgb(var(--m3-scheme-on-primary-container));
194
+ background-color: var(--m3c-primary-container);
195
+ color: var(--m3c-on-primary-container);
186
196
  }
187
197
 
188
198
  > *,
@@ -199,7 +209,7 @@
199
209
  margin-right: 0.5rem;
200
210
  }
201
211
  &:not(:checked) > :global(svg) {
202
- color: rgb(var(--m3-scheme-on-surface-variant));
212
+ color: var(--m3c-on-surface-variant);
203
213
  }
204
214
  &:checked > :global(svg) {
205
215
  opacity: 0.8;
@@ -210,8 +220,8 @@
210
220
  }
211
221
 
212
222
  transition:
213
- background-color var(--m3-util-easing-fast),
214
- color var(--m3-util-easing-fast);
223
+ background-color var(--m3-easing-fast),
224
+ color var(--m3-easing-fast);
215
225
 
216
226
  position: relative;
217
227
  cursor: pointer;
@@ -28,7 +28,7 @@
28
28
  class:enabled={!extra.disabled}
29
29
  style:align-self={width == "auto" ? "start" : undefined}
30
30
  >
31
- <select class="m3-font-body-large" style:--width={width} bind:value {id} {...extra}>
31
+ <select style:--width={width} bind:value {id} {...extra}>
32
32
  {#each options as { icon, text, ...extra }, i (i)}
33
33
  <option class="focus-inset" {...extra}>
34
34
  <Layer />
@@ -40,7 +40,7 @@
40
40
  {/each}
41
41
  </select>
42
42
  <div class="layer"></div>
43
- <label for={id} class="m3-font-body-small">
43
+ <label for={id}>
44
44
  {label}
45
45
  </label>
46
46
  </div>
@@ -48,27 +48,29 @@
48
48
  <style>
49
49
  /*
50
50
  want to customize the label's background?
51
- do this: <SelectOutlined --m3-util-background="rgb(var(--m3-scheme-surface-container))" />
51
+ do this: <SelectOutlined --m3v-background="var(--m3c-surface-container)" />
52
52
  */
53
- :root {
54
- --m3-menu-shape: var(--m3-util-rounding-extra-small);
55
- --m3-field-outlined-shape: var(--m3-util-rounding-extra-small);
53
+ @layer tokens {
54
+ :root {
55
+ --m3-menu-shape: var(--m3-shape-extra-small);
56
+ --m3-field-outlined-shape: var(--m3-shape-extra-small);
57
+ }
56
58
  }
57
59
 
58
60
  .m3-container {
59
61
  display: flex;
60
62
  flex-direction: column;
61
63
  position: relative;
62
- --secondary-color: rgb(var(--m3-scheme-on-surface-variant));
63
- --outline-color: rgb(var(--m3-scheme-outline));
64
+ --secondary-color: var(--m3c-on-surface-variant);
65
+ --outline-color: var(--m3c-outline);
64
66
  &.enabled {
65
67
  &:hover {
66
- --secondary-color: rgb(var(--m3-scheme-on-surface));
67
- --outline-color: rgb(var(--m3-scheme-on-surface));
68
+ --secondary-color: var(--m3c-on-surface);
69
+ --outline-color: var(--m3c-on-surface);
68
70
  }
69
71
  &:focus-within {
70
- --secondary-color: rgb(var(--m3-scheme-primary));
71
- --outline-color: rgb(var(--m3-scheme-primary));
72
+ --secondary-color: var(--m3c-primary);
73
+ --outline-color: var(--m3c-primary);
72
74
  .layer {
73
75
  border-width: 0.125rem;
74
76
  }
@@ -84,15 +86,22 @@
84
86
  transition: all 100ms;
85
87
  }
86
88
  label {
89
+
90
+ font-family: var(--m3-font);
91
+ font-size: 0.75rem;
92
+ line-height: 1.333;
93
+ letter-spacing: 0.025rem;
94
+ font-weight: 400;
95
+
87
96
  position: absolute;
88
97
  top: 0;
89
98
  inset-inline-start: 0.75rem;
90
99
  translate: 0 -50%;
91
100
  color: var(--secondary-color);
92
- background-color: var(--m3-util-background, rgb(var(--m3-scheme-surface)));
101
+ background-color: var(--m3v-background);
93
102
  padding: 0 0.25rem;
94
103
  pointer-events: none;
95
- transition: color var(--m3-util-easing-fast);
104
+ transition: color var(--m3-easing-fast);
96
105
  }
97
106
 
98
107
  select {
@@ -104,14 +113,21 @@
104
113
  }
105
114
 
106
115
  select {
116
+
117
+ font-family: var(--m3-font);
118
+ font-size: 1rem;
119
+ line-height: 1.5;
120
+ letter-spacing: 0;
121
+ font-weight: 400;
122
+
107
123
  display: flex;
108
124
  align-items: center;
109
- height: calc(3.5rem + var(--m3-util-density-term));
125
+ height: calc(3.5rem + (var(--m3v-density) * 0.25rem));
110
126
  padding-inline: 1rem;
111
127
 
112
128
  border-radius: var(--m3-field-outlined-shape);
113
129
  background-color: transparent;
114
- color: rgb(var(--m3-scheme-on-surface));
130
+ color: var(--m3c-on-surface);
115
131
 
116
132
  border: none;
117
133
  outline: none;
@@ -126,16 +142,16 @@
126
142
  scale: 1 0.6;
127
143
  color: var(--secondary-color);
128
144
  transition:
129
- color var(--m3-util-easing-fast),
130
- rotate var(--m3-util-easing-fast);
145
+ color var(--m3-easing-fast),
146
+ rotate var(--m3-easing-fast);
131
147
  }
132
148
  select:open::picker-icon {
133
149
  rotate: 180deg;
134
150
  }
135
151
 
136
152
  ::picker(select) {
137
- background-color: rgb(var(--m3-scheme-surface-container));
138
- box-shadow: var(--m3-util-elevation-2);
153
+ background-color: var(--m3c-surface-container);
154
+ box-shadow: var(--m3-elevation-2);
139
155
  border-radius: var(--m3-menu-shape);
140
156
 
141
157
  box-sizing: border-box;
@@ -144,10 +160,10 @@
144
160
  interpolate-size: allow-keywords;
145
161
  overflow: hidden;
146
162
  transition:
147
- width var(--m3-util-easing-fast),
148
- height var(--m3-util-easing-fast),
149
- display var(--m3-util-duration-fast) allow-discrete,
150
- overlay var(--m3-util-duration-fast) allow-discrete;
163
+ width var(--m3-easing-fast),
164
+ height var(--m3-easing-fast),
165
+ display var(--m3-duration-fast) allow-discrete,
166
+ overlay var(--m3-duration-fast) allow-discrete;
151
167
 
152
168
  border: none;
153
169
  cursor: auto;
@@ -157,7 +173,7 @@
157
173
  height: auto;
158
174
  transition:
159
175
  width 500ms linear,
160
- height 500ms var(--m3-util-timing-function-emphasized-decel),
176
+ height 500ms var(--m3-timing-function-emphasized-decel),
161
177
  display 500ms allow-discrete,
162
178
  overlay 500ms allow-discrete;
163
179
  }
@@ -172,13 +188,7 @@
172
188
  display: grid;
173
189
  grid-template-columns: auto 1fr;
174
190
  padding-inline: 1rem;
175
- padding-block: calc(
176
- (
177
- 3rem + var(--m3-util-density-term) -
178
- (var(--m3-font-body-large-size) * var(--m3-font-body-large-height))
179
- ) /
180
- 2
181
- );
191
+ padding-block: calc((calc(3rem + (var(--m3v-density) * 0.25rem)) - 1lh) / 2);
182
192
  &:first-child {
183
193
  margin-top: 0.5rem;
184
194
  }
@@ -188,8 +198,8 @@
188
198
 
189
199
  background-color: transparent;
190
200
  &:checked {
191
- background-color: rgb(var(--m3-scheme-primary-container));
192
- color: rgb(var(--m3-scheme-on-primary-container));
201
+ background-color: var(--m3c-primary-container);
202
+ color: var(--m3c-on-primary-container);
193
203
  }
194
204
 
195
205
  > *,
@@ -206,7 +216,7 @@
206
216
  margin-right: 0.5rem;
207
217
  }
208
218
  &:not(:checked) > :global(svg) {
209
- color: rgb(var(--m3-scheme-on-surface-variant));
219
+ color: var(--m3c-on-surface-variant);
210
220
  }
211
221
  &:checked > :global(svg) {
212
222
  opacity: 0.8;
@@ -217,8 +227,8 @@
217
227
  }
218
228
 
219
229
  transition:
220
- background-color var(--m3-util-easing-fast),
221
- color var(--m3-util-easing-fast);
230
+ background-color var(--m3-easing-fast),
231
+ color var(--m3-easing-fast);
222
232
 
223
233
  position: relative;
224
234
  cursor: pointer;