@angular/material 20.0.0-rc.0 → 20.0.0-rc.1

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 (153) hide show
  1. package/badge/_badge-theme.scss +27 -14
  2. package/badge/_m3-badge.scss +39 -67
  3. package/button-toggle/_m3-button-toggle.scss +1 -1
  4. package/core/color/_all-color.scss +1 -1
  5. package/core/theming/_all-theme.scss +41 -0
  6. package/core/theming/_color-api-backwards-compatibility.scss +3 -6
  7. package/core/theming/_definition.scss +72 -72
  8. package/core/theming/_inspection.scss +24 -22
  9. package/core/tokens/_m3-system.scss +112 -69
  10. package/core/tokens/_m3-tokens.scss +30 -226
  11. package/core/tokens/_m3-utils.scss +35 -0
  12. package/core/tokens/_token-utils.scss +22 -1
  13. package/core/tokens/m3/_index.scss +6 -8
  14. package/core/tokens/m3/_md-sys-color.scss +125 -137
  15. package/core/tokens/m3/_md-sys-elevation.scss +7 -7
  16. package/core/tokens/m3/_md-sys-motion.scss +27 -38
  17. package/core/tokens/m3/_md-sys-shape.scss +13 -16
  18. package/core/tokens/m3/_md-sys-state.scss +5 -5
  19. package/core/tokens/m3/_md-sys-typescale.scss +107 -306
  20. package/fesm2022/autocomplete.mjs +23 -23
  21. package/fesm2022/autocomplete.mjs.map +1 -1
  22. package/fesm2022/badge.mjs +11 -11
  23. package/fesm2022/badge.mjs.map +1 -1
  24. package/fesm2022/bottom-sheet.mjs +11 -11
  25. package/fesm2022/bottom-sheet.mjs.map +1 -1
  26. package/fesm2022/button-toggle.mjs +16 -16
  27. package/fesm2022/button-toggle.mjs.map +1 -1
  28. package/fesm2022/button.mjs +21 -21
  29. package/fesm2022/button.mjs.map +1 -1
  30. package/fesm2022/card.mjs +47 -47
  31. package/fesm2022/card.mjs.map +1 -1
  32. package/fesm2022/checkbox.mjs +11 -11
  33. package/fesm2022/checkbox.mjs.map +1 -1
  34. package/fesm2022/chips.mjs +47 -47
  35. package/fesm2022/chips.mjs.map +1 -1
  36. package/fesm2022/{common-module-DZl8g1kc.mjs → common-module-CF0eSYO4.mjs} +5 -5
  37. package/fesm2022/{common-module-DZl8g1kc.mjs.map → common-module-CF0eSYO4.mjs.map} +1 -1
  38. package/fesm2022/core.mjs +24 -24
  39. package/fesm2022/core.mjs.map +1 -1
  40. package/fesm2022/datepicker.mjs +90 -90
  41. package/fesm2022/datepicker.mjs.map +1 -1
  42. package/fesm2022/dialog/testing.mjs +2 -2
  43. package/fesm2022/dialog.mjs +2 -2
  44. package/fesm2022/divider.mjs +8 -8
  45. package/fesm2022/divider.mjs.map +1 -1
  46. package/fesm2022/{error-options-BWOa3B4G.mjs → error-options-CbAHLQL5.mjs} +7 -7
  47. package/fesm2022/{error-options-BWOa3B4G.mjs.map → error-options-CbAHLQL5.mjs.map} +1 -1
  48. package/fesm2022/expansion.mjs +27 -27
  49. package/fesm2022/expansion.mjs.map +1 -1
  50. package/fesm2022/{form-field-B3aq6ikj.mjs → form-field-sL9_TuE-.mjs} +68 -60
  51. package/fesm2022/form-field-sL9_TuE-.mjs.map +1 -0
  52. package/fesm2022/form-field.mjs +3 -3
  53. package/fesm2022/grid-list.mjs +24 -24
  54. package/fesm2022/grid-list.mjs.map +1 -1
  55. package/fesm2022/icon/testing.mjs +8 -8
  56. package/fesm2022/icon/testing.mjs.map +1 -1
  57. package/fesm2022/{icon-button-DH8TBWWr.mjs → icon-button-BASP1JI8.mjs} +10 -10
  58. package/fesm2022/{icon-button-DH8TBWWr.mjs.map → icon-button-BASP1JI8.mjs.map} +1 -1
  59. package/fesm2022/{icon-registry-Bk5cM8Z5.mjs → icon-registry-DVLYRZv3.mjs} +4 -4
  60. package/fesm2022/{icon-registry-Bk5cM8Z5.mjs.map → icon-registry-DVLYRZv3.mjs.map} +1 -1
  61. package/fesm2022/icon.mjs +10 -10
  62. package/fesm2022/icon.mjs.map +1 -1
  63. package/fesm2022/index-BNtCg9r0.mjs +22 -0
  64. package/fesm2022/{index-BHJ4tVIe.mjs.map → index-BNtCg9r0.mjs.map} +1 -1
  65. package/fesm2022/index-DxCSjCL3.mjs +20 -0
  66. package/fesm2022/{index-D2rZ0V78.mjs.map → index-DxCSjCL3.mjs.map} +1 -1
  67. package/fesm2022/input.mjs +12 -12
  68. package/fesm2022/input.mjs.map +1 -1
  69. package/fesm2022/{internal-form-field-DVvKYBKJ.mjs → internal-form-field-_OHaksOO.mjs} +4 -4
  70. package/fesm2022/{internal-form-field-DVvKYBKJ.mjs.map → internal-form-field-_OHaksOO.mjs.map} +1 -1
  71. package/fesm2022/{line-Dwrcg_t9.mjs → line-CtAKiRo6.mjs} +9 -9
  72. package/fesm2022/{line-Dwrcg_t9.mjs.map → line-CtAKiRo6.mjs.map} +1 -1
  73. package/fesm2022/list.mjs +55 -55
  74. package/fesm2022/list.mjs.map +1 -1
  75. package/fesm2022/menu.mjs +20 -20
  76. package/fesm2022/menu.mjs.map +1 -1
  77. package/fesm2022/{module-B-ci3hbc.mjs → module-ChwDH6BC.mjs} +27 -27
  78. package/fesm2022/{module-B-ci3hbc.mjs.map → module-ChwDH6BC.mjs.map} +1 -1
  79. package/fesm2022/{module-hX_hFZhs.mjs → module-DToxyW7l.mjs} +7 -7
  80. package/fesm2022/{module-hX_hFZhs.mjs.map → module-DToxyW7l.mjs.map} +1 -1
  81. package/fesm2022/{module-D9IKGg_w.mjs → module-DqTK2swA.mjs} +17 -17
  82. package/fesm2022/{module-D9IKGg_w.mjs.map → module-DqTK2swA.mjs.map} +1 -1
  83. package/fesm2022/{module-X29xYsIk.mjs → module-m5vWw9-5.mjs} +12 -12
  84. package/fesm2022/{module-X29xYsIk.mjs.map → module-m5vWw9-5.mjs.map} +1 -1
  85. package/fesm2022/{option-MOeehkAg.mjs → option-hkPAbXDN.mjs} +10 -10
  86. package/fesm2022/{option-MOeehkAg.mjs.map → option-hkPAbXDN.mjs.map} +1 -1
  87. package/fesm2022/paginator.mjs +25 -25
  88. package/fesm2022/paginator.mjs.map +1 -1
  89. package/fesm2022/progress-bar.mjs +8 -8
  90. package/fesm2022/progress-bar.mjs.map +1 -1
  91. package/fesm2022/progress-spinner.mjs +8 -8
  92. package/fesm2022/progress-spinner.mjs.map +1 -1
  93. package/fesm2022/{pseudo-checkbox-BFGIaGxz.mjs → pseudo-checkbox-Ddidc23S.mjs} +4 -4
  94. package/fesm2022/{pseudo-checkbox-BFGIaGxz.mjs.map → pseudo-checkbox-Ddidc23S.mjs.map} +1 -1
  95. package/fesm2022/pseudo-checkbox-module--am9-RIA.mjs +20 -0
  96. package/fesm2022/{pseudo-checkbox-module-Dxth-mPi.mjs.map → pseudo-checkbox-module--am9-RIA.mjs.map} +1 -1
  97. package/fesm2022/radio.mjs +15 -15
  98. package/fesm2022/radio.mjs.map +1 -1
  99. package/fesm2022/{ripple-CuyVtN3V.mjs → ripple-DUGA2BAa.mjs} +7 -7
  100. package/fesm2022/{ripple-CuyVtN3V.mjs.map → ripple-DUGA2BAa.mjs.map} +1 -1
  101. package/fesm2022/{ripple-loader-pOctSZby.mjs → ripple-loader-Xy4bv6Xh.mjs} +5 -5
  102. package/fesm2022/{ripple-loader-pOctSZby.mjs.map → ripple-loader-Xy4bv6Xh.mjs.map} +1 -1
  103. package/fesm2022/select.mjs +12 -12
  104. package/fesm2022/sidenav.mjs +23 -23
  105. package/fesm2022/sidenav.mjs.map +1 -1
  106. package/fesm2022/slide-toggle.mjs +11 -11
  107. package/fesm2022/slide-toggle.mjs.map +1 -1
  108. package/fesm2022/slider.mjs +20 -20
  109. package/fesm2022/slider.mjs.map +1 -1
  110. package/fesm2022/snack-bar.mjs +28 -28
  111. package/fesm2022/snack-bar.mjs.map +1 -1
  112. package/fesm2022/sort.mjs +15 -15
  113. package/fesm2022/sort.mjs.map +1 -1
  114. package/fesm2022/stepper.mjs +37 -37
  115. package/fesm2022/stepper.mjs.map +1 -1
  116. package/fesm2022/{structural-styles-CasigI3l.mjs → structural-styles-DA18Hchc.mjs} +4 -4
  117. package/fesm2022/{structural-styles-CasigI3l.mjs.map → structural-styles-DA18Hchc.mjs.map} +1 -1
  118. package/fesm2022/table.mjs +56 -56
  119. package/fesm2022/table.mjs.map +1 -1
  120. package/fesm2022/tabs.mjs +46 -46
  121. package/fesm2022/tabs.mjs.map +1 -1
  122. package/fesm2022/timepicker.mjs +20 -20
  123. package/fesm2022/timepicker.mjs.map +1 -1
  124. package/fesm2022/toolbar.mjs +11 -11
  125. package/fesm2022/toolbar.mjs.map +1 -1
  126. package/fesm2022/tooltip.mjs +2 -2
  127. package/fesm2022/tree.mjs +26 -26
  128. package/fesm2022/tree.mjs.map +1 -1
  129. package/form-field/index.d.ts +2 -2
  130. package/{form-field.d-CIxjiZIX.d.ts → form-field.d-C6p5uYjG.d.ts} +4 -2
  131. package/input/index.d.ts +4 -4
  132. package/{module.d-CDrqNC7Q.d.ts → module.d-D1Ym5Wf2.d.ts} +1 -1
  133. package/{module.d-DZ8DPHcV.d.ts → module.d-DMabQ4_c.d.ts} +2 -2
  134. package/package.json +2 -2
  135. package/paginator/index.d.ts +5 -5
  136. package/{paginator.d-Ci_wE-RV.d.ts → paginator.d-DuJ-oYgT.d.ts} +1 -1
  137. package/prebuilt-themes/azure-blue.css +1 -1
  138. package/prebuilt-themes/cyan-orange.css +1 -1
  139. package/prebuilt-themes/magenta-violet.css +1 -1
  140. package/prebuilt-themes/rose-red.css +1 -1
  141. package/schematics/ng-add/index.js +1 -1
  142. package/schematics/ng-generate/theme-color/index_bundled.js +2 -2
  143. package/schematics/ng-generate/theme-color/index_bundled.js.map +1 -1
  144. package/schematics/ng-update/index_bundled.js +54 -2
  145. package/schematics/ng-update/index_bundled.js.map +1 -1
  146. package/select/index.d.ts +3 -3
  147. package/table/index.d.ts +2 -2
  148. package/core/tokens/m3/_md-ref-palette.scss +0 -100
  149. package/core/tokens/m3/_md-ref-typeface.scss +0 -14
  150. package/fesm2022/form-field-B3aq6ikj.mjs.map +0 -1
  151. package/fesm2022/index-BHJ4tVIe.mjs +0 -22
  152. package/fesm2022/index-D2rZ0V78.mjs +0 -20
  153. package/fesm2022/pseudo-checkbox-module-Dxth-mPi.mjs +0 -20
@@ -19,6 +19,7 @@
19
19
  @use '../style/sass-utils';
20
20
  @use '../theming/config-validation';
21
21
  @use '../theming/definition';
22
+ @use '../theming/palettes';
22
23
  @use './m3';
23
24
  @use './m3-tokens';
24
25
  @use 'sass:list';
@@ -63,9 +64,40 @@
63
64
  $color: map.set($color, theme-type, color-scheme);
64
65
  }
65
66
 
66
- $color-config: if($is-palette,
67
- definition.define-colors((primary: $color, theme-type: color-scheme)),
68
- definition.define-colors($color));
67
+ $color-config: $color;
68
+ @if ($is-palette) {
69
+ $color: map.set($color, tertiary, $color);
70
+ $color-config: (
71
+ definition.$internals: (
72
+ palettes: (
73
+ primary: map.remove($color, neutral, neutral-variant, secondary),
74
+ secondary: map.get($color, secondary),
75
+ tertiary: map.remove($color, neutral, neutral-variant, secondary, error),
76
+ neutral: map.get($color, neutral),
77
+ neutral-variant: map.get($color, neutral-variant),
78
+ error: map.get($color, error),
79
+ ),
80
+ theme-type: color-scheme,
81
+ )
82
+ );
83
+ } @else {
84
+ $primary: map.get($color, primary) or palettes.$violet-palette;
85
+ $tertiary: map.get($color, tertiary) or $primary;
86
+ $color-config: (
87
+ definition.$internals: (
88
+ palettes: (
89
+ primary: map.remove($primary, neutral, neutral-variant, secondary),
90
+ secondary: map.get($primary, secondary),
91
+ tertiary: map.remove($tertiary, neutral, neutral-variant, secondary, error),
92
+ neutral: map.get($primary, neutral),
93
+ neutral-variant: map.get($primary, neutral-variant),
94
+ error: map.get($primary, error),
95
+ ),
96
+ theme-type: map.get($color, theme-type),
97
+ )
98
+ );
99
+ }
100
+
69
101
  @include system-level-colors($color-config, $overrides, definition.$system-fallback-prefix);
70
102
  @include system-level-elevation($color-config, $overrides, definition.$system-fallback-prefix);
71
103
  }
@@ -73,9 +105,31 @@
73
105
  $typography: map.get($config, typography);
74
106
  $typography-config: null;
75
107
  @if ($typography) {
76
- $typography-config: if(meta.type-of($typography) == 'map',
77
- definition.define-typography($typography),
78
- definition.define-typography((plain-family: $typography)));
108
+ $plain: (Roboto, sans-serif);
109
+ $brand: $plain;
110
+ $bold: 700;
111
+ $medium: 500;
112
+ $regular: 400;
113
+ @if (meta.type-of($typography) == map) {
114
+ $plain: map.get($typography, plain-family);
115
+ $brand: map.get($typography, brand-family) or $plain;
116
+ $bold: map.get($typography, bold-weight) or $bold;
117
+ $medium: map.get($typography, medium-weight) or $medium;
118
+ $regular: map.get($typography, regular-weight) or $regular;
119
+ } @else {
120
+ $plain: $typography;
121
+ }
122
+ $typography-config: (
123
+ definition.$internals: (
124
+ font-definition: (
125
+ plain: $plain,
126
+ brand: $brand,
127
+ bold: $bold,
128
+ medium: $medium,
129
+ regular: $regular,
130
+ )
131
+ )
132
+ );
79
133
  @include system-level-typography(
80
134
  $typography-config, $overrides, definition.$system-fallback-prefix);
81
135
  }
@@ -83,10 +137,12 @@
83
137
  $density: map.get($config, density);
84
138
  $density-config: null;
85
139
  @if ($density) {
86
- $density-config: if(meta.type-of($density) == 'map',
87
- definition.define-density($density),
88
- definition.define-density((scale: $density)));
89
- $scale: map.get($density-config, _mat-theming-internals-do-not-access, density-scale);
140
+ $scale: 0;
141
+ @if (meta.type-of($density) == map) {
142
+ $scale: map.get($density, scale);
143
+ } @else {
144
+ $scale: $density;
145
+ }
90
146
  @if ($scale != 0) {
91
147
  // Emit component-level density tokens if the scale is lower than 0. The density tokens
92
148
  // do not fallback to any system-level values and must be defined if the scale is different.
@@ -130,8 +186,14 @@
130
186
  /// change the primary color to red, use `mat.theme-overrides((primary: red));`
131
187
  @mixin theme-overrides($overrides, $prefix: definition.$system-fallback-prefix) {
132
188
  $sys-names: map-merge-all(
133
- m3.md-sys-color-values-light(),
134
- m3.md-sys-typescale-values(),
189
+ m3.md-sys-color-values-light(palettes.$blue-palette),
190
+ m3.md-sys-typescale-values((
191
+ brand: (Roboto),
192
+ plain: (Roboto),
193
+ bold: 700,
194
+ medium: 500,
195
+ regular: 400
196
+ )),
135
197
  m3.md-sys-elevation-values(),
136
198
  m3.md-sys-shape-values(),
137
199
  m3.md-sys-state-values());
@@ -146,36 +208,21 @@
146
208
  }
147
209
 
148
210
  @mixin system-level-colors($theme, $overrides: (), $prefix: null) {
149
- $palettes: map.get($theme, _mat-theming-internals-do-not-access, palettes);
150
- $base-palettes: (
151
- neutral: map.get($palettes, neutral),
152
- neutral-variant: map.get($palettes, neutral-variant),
153
- secondary: map.get($palettes, secondary),
154
- error: map.get($palettes, error),
155
- );
156
-
157
- $type: map.get($theme, _mat-theming-internals-do-not-access, theme-type);
158
- $primary: map.merge(map.get($palettes, primary), $base-palettes);
159
- $tertiary: map.merge(map.get($palettes, tertiary), $base-palettes);
160
- $error: map.get($palettes, error);
211
+ $palettes: map.get($theme, definition.$internals, palettes);
212
+ $type: map.get($theme, definition.$internals, theme-type);
161
213
 
162
214
  @if (not $prefix) {
163
- $prefix: map.get($theme, _mat-theming-internals-do-not-access,
215
+ $prefix: map.get($theme, definition.$internals,
164
216
  color-system-variables-prefix) or definition.$system-level-prefix;
165
217
  }
166
218
 
167
- $ref: (
168
- md-ref-palette: m3-tokens.generate-ref-palette-tokens($primary, $tertiary, $error)
169
- );
170
219
 
171
- $sys-colors: _generate-sys-colors($ref, $type);
220
+ $sys-colors: _generate-sys-colors($palettes, $type);
172
221
 
173
222
  // Manually insert a subset of palette values that are used directly by components
174
223
  // instead of system variables.
175
- $sys-colors: map.set($sys-colors,
176
- 'neutral-variant20', map.get($ref, md-ref-palette, neutral-variant20));
177
- $sys-colors: map.set($sys-colors,
178
- 'neutral10', map.get($ref, md-ref-palette, neutral10));
224
+ $sys-colors: map.set($sys-colors, neutral-variant20, map.get($palettes, neutral-variant, 20));
225
+ $sys-colors: map.set($sys-colors, neutral10, map.get($palettes, neutral, 10));
179
226
 
180
227
  & {
181
228
  @each $name, $value in $sys-colors {
@@ -184,13 +231,13 @@
184
231
  }
185
232
  }
186
233
 
187
- @function _generate-sys-colors($ref, $type) {
188
- $light-sys-colors: m3.md-sys-color-values-light($ref);
234
+ @function _generate-sys-colors($palettes, $type) {
235
+ $light-sys-colors: m3.md-sys-color-values-light($palettes);
189
236
  @if ($type == light) {
190
237
  @return $light-sys-colors;
191
238
  }
192
239
 
193
- $dark-sys-colors: m3.md-sys-color-values-dark($ref);
240
+ $dark-sys-colors: m3.md-sys-color-values-dark($palettes);
194
241
  @if ($type == dark) {
195
242
  @return $dark-sys-colors;
196
243
  }
@@ -209,23 +256,15 @@
209
256
  }
210
257
 
211
258
  @mixin system-level-typography($theme, $overrides: (), $prefix: null) {
212
- $font-definition: map.get($theme, _mat-theming-internals-do-not-access, font-definition);
213
- $brand: map.get($font-definition, brand);
214
- $plain: map.get($font-definition, plain);
215
- $bold: map.get($font-definition, bold);
216
- $medium: map.get($font-definition, medium);
217
- $regular: map.get($font-definition, regular);
218
- $ref: (md-ref-typeface:
219
- m3-tokens.generate-ref-typeface-tokens($brand, $plain, $bold, $medium, $regular)
220
- );
259
+ $font-definition: map.get($theme, definition.$internals, font-definition);
221
260
 
222
261
  @if (not $prefix) {
223
- $prefix: map.get($theme, _mat-theming-internals-do-not-access,
262
+ $prefix: map.get($theme, definition.$internals,
224
263
  typography-system-variables-prefix) or definition.$system-level-prefix;
225
264
  }
226
265
 
227
266
  & {
228
- @each $name, $value in m3.md-sys-typescale-values($ref) {
267
+ @each $name, $value in m3.md-sys-typescale-values($font-definition) {
229
268
  --#{$prefix}-#{$name}: #{map.get($overrides, $name) or $value};
230
269
  }
231
270
  }
@@ -233,7 +272,7 @@
233
272
 
234
273
  @mixin system-level-elevation($theme, $overrides: (), $prefix: definition.$system-level-prefix) {
235
274
  $shadow-color: map.get(
236
- $theme, _mat-theming-internals-do-not-access, color-tokens, (mat, theme), shadow);
275
+ $theme, definition.$internals, palettes, neutral, 0);
237
276
 
238
277
  @each $name, $value in m3.md-sys-elevation-values() {
239
278
  $level: map.get($overrides, $name) or $value;
@@ -275,27 +314,6 @@
275
314
  // system fallback variables referencing Material's system keys.
276
315
  // Includes density token fallbacks where density is 0.
277
316
  @function create-system-fallbacks() {
278
- $app-vars: (
279
- 'md-sys-color':
280
- _create-system-app-vars-map(m3.md-sys-color-values-light()),
281
- 'md-sys-typescale':
282
- _create-system-app-vars-map(m3.md-sys-typescale-values()),
283
- 'md-sys-elevation':
284
- _create-system-app-vars-map(m3.md-sys-elevation-values()),
285
- 'md-sys-state':
286
- _create-system-app-vars-map(m3.md-sys-state-values()),
287
- 'md-sys-shape':
288
- _create-system-app-vars-map(m3.md-sys-shape-values()),
289
- // Add a subset of palette-specific colors used by components instead of system values
290
- 'md-ref-palette':
291
- _create-system-app-vars-map(
292
- (
293
- neutral10: '', // Form field native select option text color
294
- neutral-variant20: '', // Sidenav scrim (container background shadow when opened),
295
- )
296
- ),
297
- );
298
-
299
317
  @return sass-utils.deep-merge-all(
300
318
  m3-tokens.generate-tokens($app-vars, true, true),
301
319
  get-density-tokens(0),
@@ -310,3 +328,28 @@
310
328
  }
311
329
  @return $result;
312
330
  }
331
+
332
+ $placeholder-palettes: m3.md-sys-color-values-light(palettes.$blue-palette);
333
+ $placeholder-palettes: map.set($placeholder-palettes, primary, palettes.$blue-palette);
334
+ $app-vars: (
335
+ 'md-sys-color': _create-system-app-vars-map(m3.md-sys-color-values-light($placeholder-palettes)),
336
+ 'md-sys-typescale': _create-system-app-vars-map(m3.md-sys-typescale-values((
337
+ brand: (Roboto),
338
+ plain: (Roboto),
339
+ bold: 700,
340
+ medium: 500,
341
+ regular: 400
342
+ ))),
343
+ 'md-sys-elevation': _create-system-app-vars-map(m3.md-sys-elevation-values()),
344
+ 'md-sys-state': _create-system-app-vars-map(m3.md-sys-state-values()),
345
+ 'md-sys-shape': _create-system-app-vars-map(m3.md-sys-shape-values()),
346
+ // Add a subset of palette-specific colors used by components instead of system values
347
+ 'md-ref-palette': _create-system-app-vars-map(
348
+ (
349
+ neutral10: '', // Form field native select option text color
350
+ neutral-variant20: '', // Sidenav scrim (container background shadow when opened),
351
+ )
352
+ ),
353
+ );
354
+
355
+ $theme-with-system-vars: (definition.$internals: $app-vars);
@@ -1,5 +1,4 @@
1
1
  @use '../../autocomplete/m3-autocomplete';
2
- @use '../../badge/m3-badge';
3
2
  @use '../../bottom-sheet/m3-bottom-sheet';
4
3
  @use '../../button-toggle/m3-button-toggle';
5
4
  @use '../../button/m3-button';
@@ -41,61 +40,10 @@
41
40
  @use '../ripple/m3-ripple';
42
41
  @use '../selection/pseudo-checkbox/m3-pseudo-checkbox';
43
42
  @use '../style/sass-utils';
44
- @use './format-tokens';
45
43
  @use './m2-tokens';
46
44
  @use './m3';
47
45
  @use 'sass:map';
48
46
 
49
- /// Generates tokens for the given palette with the given prefix.
50
- /// @param {Map} $palette The palette to generate tokens for
51
- /// @param {String} $prefix The key prefix used to name the tokens
52
- /// @return {Map} A set of tokens for the given palette
53
- @function _generate-palette-tokens($palette, $prefix) {
54
- $palette: map.remove($palette, neutral, neutral-variant);
55
- $result: ();
56
- @each $hue, $value in $palette {
57
- $result: map.set($result, '#{$prefix}#{$hue}', $value);
58
- }
59
- @return $result;
60
- }
61
-
62
- /// Creates a set of `md-ref-palette` tokens from the given palettes. (See
63
- /// ./m3/definitions/_md-ref-palette.scss)
64
- /// @param {Map} $primary The primary palette
65
- /// @param {Map} $secondary The secondary palette
66
- /// @param {Map} $tertiary The tertiary palette
67
- /// @param {Map} $error The error palette
68
- /// @return {Map} A set of `md-ref-palette` tokens
69
- @function generate-ref-palette-tokens($primary, $tertiary, $error) {
70
- @return sass-utils.merge-all(
71
- (black: #000, white: #fff),
72
- _generate-palette-tokens($primary, primary),
73
- _generate-palette-tokens(map.get($primary, secondary), secondary),
74
- _generate-palette-tokens($tertiary, tertiary),
75
- _generate-palette-tokens(map.get($primary, neutral), neutral),
76
- _generate-palette-tokens(map.get($primary, neutral-variant), neutral-variant),
77
- _generate-palette-tokens($error, error),
78
- );
79
- }
80
-
81
- /// Creates a set of `md-ref-typeface` tokens from the given palettes. (See
82
- /// ./m3/definitions/_md-ref-typeface.scss)
83
- /// @param {List|String} $brand The font-family to use for brand text
84
- /// @param {List|String} $plain The font-family to use for plain text
85
- /// @param {String} $bold The font-weight to use for bold text
86
- /// @param {String} $medium The font-weight to use for medium text
87
- /// @param {String} $regular The font-weight to use for regular text
88
- /// @return {Map} A set of `md-ref-typeface` tokens
89
- @function generate-ref-typeface-tokens($brand, $plain, $bold, $medium, $regular) {
90
- @return (
91
- brand: $brand,
92
- plain: $plain,
93
- weight-bold: $bold,
94
- weight-medium: $medium,
95
- weight-regular: $regular,
96
- );
97
- }
98
-
99
47
  $_cached-token-slots: null;
100
48
 
101
49
  /// Determines the token slots for all components.
@@ -138,9 +86,6 @@ $_cached-token-slots: null;
138
86
  ), $systems);
139
87
  $exclude-hardcoded: not $include-non-systemized;
140
88
 
141
- // DO NOT REMOVE
142
- // This function is used internally.
143
- $systems: format-tokens.private-format-tokens($systems);
144
89
  $token-slots: _get-token-slots();
145
90
 
146
91
  // TODO(mmalerba): Fill in remaining tokens.
@@ -164,170 +109,34 @@ $_cached-token-slots: null;
164
109
  @return $result;
165
110
  }
166
111
 
167
- @function _get-sys-color($type, $ref, $prefix) {
168
- $mdc-sys-color: if($type == dark,
169
- m3.md-sys-color-values-dark($ref),
170
- m3.md-sys-color-values-light($ref));
112
+ @function get-sys-color($type, $palettes, $prefix) {
113
+ $sys-color: if($type == dark,
114
+ m3.md-sys-color-values-dark($palettes),
115
+ m3.md-sys-color-values-light($palettes));
171
116
 
172
117
  @if (sass-utils.$use-system-color-variables) {
173
- $keys: (
174
- 'background',
175
- 'error',
176
- 'error-container',
177
- 'inverse-on-surface',
178
- 'inverse-primary',
179
- 'inverse-surface',
180
- 'on-background',
181
- 'on-error',
182
- 'on-error-container',
183
- 'on-primary',
184
- 'on-primary-container',
185
- 'on-primary-fixed',
186
- 'on-primary-fixed-variant',
187
- 'on-secondary',
188
- 'on-secondary-container',
189
- 'on-secondary-fixed',
190
- 'on-secondary-fixed-variant',
191
- 'on-surface',
192
- 'on-surface-variant',
193
- 'on-tertiary',
194
- 'on-tertiary-container',
195
- 'on-tertiary-fixed',
196
- 'on-tertiary-fixed-variant',
197
- 'outline',
198
- 'outline-variant',
199
- 'primary',
200
- 'primary-container',
201
- 'primary-fixed',
202
- 'primary-fixed-dim',
203
- 'scrim',
204
- 'secondary',
205
- 'secondary-container',
206
- 'secondary-fixed',
207
- 'secondary-fixed-dim',
208
- 'surface',
209
- 'surface-bright',
210
- 'surface-container',
211
- 'surface-container-high',
212
- 'surface-container-highest',
213
- 'surface-container-low',
214
- 'surface-container-lowest',
215
- 'surface-dim',
216
- 'surface-tint',
217
- 'surface-variant',
218
- 'tertiary',
219
- 'tertiary-container',
220
- 'tertiary-fixed',
221
- 'tertiary-fixed-dim'
222
- );
223
- @return map.merge(create-map($keys, $prefix), (
224
- shadow: map.get($mdc-sys-color, shadow)
225
- ));
118
+ $var-values: ();
119
+ @each $key in map.keys($sys-color) {
120
+ $var-values: map.set($var-values, $key, var(--#{$prefix}-#{$key}));
121
+ }
122
+ $var-values: map.set($var-values, shadow, map.get($sys-color, shadow));
123
+ @return $var-values;
226
124
  }
227
125
 
228
- @return $mdc-sys-color;
126
+ @return $sys-color;
229
127
  }
230
128
 
231
- @function _get-sys-typeface($ref, $prefix) {
129
+ @function get-sys-typeface($typography, $prefix) {
130
+ $sys-typography: m3.md-sys-typescale-values($typography);
232
131
  @if (sass-utils.$use-system-typography-variables) {
233
- $keys: (
234
- 'body-large',
235
- 'body-large-font',
236
- 'body-large-line-height',
237
- 'body-large-size',
238
- 'body-large-tracking',
239
- 'body-large-weight',
240
- 'body-medium',
241
- 'body-medium-font',
242
- 'body-medium-line-height',
243
- 'body-medium-size',
244
- 'body-medium-tracking',
245
- 'body-medium-weight',
246
- 'body-small',
247
- 'body-small-font',
248
- 'body-small-line-height',
249
- 'body-small-size',
250
- 'body-small-tracking',
251
- 'body-small-weight',
252
- 'display-large',
253
- 'display-large-font',
254
- 'display-large-line-height',
255
- 'display-large-size',
256
- 'display-large-tracking',
257
- 'display-large-weight',
258
- 'display-medium',
259
- 'display-medium-font',
260
- 'display-medium-line-height',
261
- 'display-medium-size',
262
- 'display-medium-tracking',
263
- 'display-medium-weight',
264
- 'display-small',
265
- 'display-small-font',
266
- 'display-small-line-height',
267
- 'display-small-size',
268
- 'display-small-tracking',
269
- 'display-small-weight',
270
- 'headline-large',
271
- 'headline-large-font',
272
- 'headline-large-line-height',
273
- 'headline-large-size',
274
- 'headline-large-tracking',
275
- 'headline-large-weight',
276
- 'headline-medium',
277
- 'headline-medium-font',
278
- 'headline-medium-line-height',
279
- 'headline-medium-size',
280
- 'headline-medium-tracking',
281
- 'headline-medium-weight',
282
- 'headline-small',
283
- 'headline-small-font',
284
- 'headline-small-line-height',
285
- 'headline-small-size',
286
- 'headline-small-tracking',
287
- 'headline-small-weight',
288
- 'label-large',
289
- 'label-large-font',
290
- 'label-large-line-height',
291
- 'label-large-size',
292
- 'label-large-tracking',
293
- 'label-large-weight',
294
- 'label-large-weight-prominent',
295
- 'label-medium',
296
- 'label-medium-font',
297
- 'label-medium-line-height',
298
- 'label-medium-size',
299
- 'label-medium-tracking',
300
- 'label-medium-weight',
301
- 'label-medium-weight-prominent',
302
- 'label-small',
303
- 'label-small-font',
304
- 'label-small-line-height',
305
- 'label-small-size',
306
- 'label-small-tracking',
307
- 'label-small-weight',
308
- 'title-large',
309
- 'title-large-font',
310
- 'title-large-line-height',
311
- 'title-large-size',
312
- 'title-large-tracking',
313
- 'title-large-weight',
314
- 'title-medium',
315
- 'title-medium-font',
316
- 'title-medium-line-height',
317
- 'title-medium-size',
318
- 'title-medium-tracking',
319
- 'title-medium-weight',
320
- 'title-small',
321
- 'title-small-font',
322
- 'title-small-line-height',
323
- 'title-small-size',
324
- 'title-small-tracking',
325
- 'title-small-weight'
326
- );
327
-
328
- @return create-map($keys, $prefix);
132
+ $var-values: ();
133
+ @each $key in map.keys($sys-typography) {
134
+ $var-values: map.set($var-values, $key, var(--#{$prefix}-#{$key}));
135
+ }
136
+ @return $var-values;
329
137
  }
330
- @return m3.md-sys-typescale-values($ref);
138
+
139
+ @return $sys-typography;
331
140
  }
332
141
 
333
142
  /// Generates a set of namespaced color tokens for all components.
@@ -337,15 +146,15 @@ $_cached-token-slots: null;
337
146
  /// @param {Map} $error The error palette
338
147
  /// @param {String} $system-variables-prefix The prefix of system tokens
339
148
  /// @return {Map} A map of namespaced color tokens
340
- @function generate-color-tokens($type, $primary, $tertiary, $error, $system-variables-prefix) {
341
- $ref: (
342
- md-ref-palette: generate-ref-palette-tokens($primary, $tertiary, $error)
343
- );
149
+ @function generate-color-tokens($type, $palettes, $system-variables-prefix) {
150
+ $sys-color: get-sys-color($type, $palettes, $system-variables-prefix);
344
151
 
345
- $sys-color: _get-sys-color($type, $ref, $system-variables-prefix);
346
-
347
- @return generate-tokens(map.merge($ref, (
152
+ @return generate-tokens((
348
153
  md-sys-color: $sys-color,
154
+ md-ref-palette: (
155
+ neutral-10: map.get($palettes, neutral, 10),
156
+ neutral-variant20: map.get($palettes, neutral-variant, 20),
157
+ ),
349
158
  // Because the elevation values are always combined with color values to create the box shadow,
350
159
  // elevation needs to be part of the color dimension.
351
160
  md-sys-elevation: m3.md-sys-elevation-values(),
@@ -354,7 +163,7 @@ $_cached-token-slots: null;
354
163
  // TODO(mmalerba): If at some point we remove the need for these combined values, we can move
355
164
  // state to the base dimension.
356
165
  md-sys-state: m3.md-sys-state-values(),
357
- )));
166
+ ));
358
167
  }
359
168
 
360
169
  /// Generates a set of namespaced color tokens for all components.
@@ -365,12 +174,8 @@ $_cached-token-slots: null;
365
174
  /// @param {String|Number} $regular The regular font-weight
366
175
  /// @param {String} $system-variables-prefix The prefix of system tokens
367
176
  /// @return {Map} A map of namespaced typography tokens
368
- @function generate-typography-tokens($brand, $plain, $bold, $medium, $regular,
369
- $system-variables-prefix) {
370
- $ref: (
371
- md-ref-typeface: generate-ref-typeface-tokens($brand, $plain, $bold, $medium, $regular)
372
- );
373
- $sys-typeface: _get-sys-typeface($ref, $system-variables-prefix);
177
+ @function generate-typography-tokens($typography, $system-variables-prefix) {
178
+ $sys-typeface: get-sys-typeface($typography, $system-variables-prefix);
374
179
  @return generate-tokens((
375
180
  md-sys-typescale: $sys-typeface
376
181
  ));
@@ -396,7 +201,6 @@ $system-variables-prefix) {
396
201
  $tokens-list: (
397
202
  m3-app.get-tokens($systems, $exclude-hardcoded, $token-slots),
398
203
  m3-autocomplete.get-tokens($systems, $exclude-hardcoded, $token-slots),
399
- m3-badge.get-tokens($systems, $exclude-hardcoded, $token-slots),
400
204
  m3-bottom-sheet.get-tokens($systems, $exclude-hardcoded, $token-slots),
401
205
  m3-button-toggle.get-tokens($systems, $exclude-hardcoded, $token-slots),
402
206
  m3-button.get-tokens($systems, $exclude-hardcoded, $token-slots),
@@ -1,6 +1,7 @@
1
1
  @use 'sass:map';
2
2
  @use 'sass:list';
3
3
  @use 'sass:meta';
4
+ @use 'sass:string';
4
5
 
5
6
  /// Gets the MDC tokens for the given prefix, M3 token values, and supported token slots.
6
7
  /// @param {List} $prefix The token prefix for the given tokens.
@@ -83,3 +84,37 @@
83
84
  }
84
85
  @return $result;
85
86
  }
87
+
88
+ // Replaces color tokens in the map with those defined as the variant color.
89
+ @function replace-colors-with-variant($system, $color, $variant) {
90
+ $system: map.set($system, on-#{$color}, map.get($system, on-#{$variant}));
91
+ $system: map.set($system, on-#{$color}-container, map.get($system, on-#{$variant}-container));
92
+ $system: map.set($system, #{$color}, map.get($system, #{$variant}));
93
+ $system: map.set($system, #{$color}-container, map.get($system, #{$variant}-container));
94
+ @return $system;
95
+ }
96
+
97
+ // Gets the theme's system values as a flat map.
98
+ @function get-system($theme) {
99
+ $system: ();
100
+ $system: map.merge($system,
101
+ map.get($theme, _mat-theming-internals-do-not-access, md-sys-color));
102
+ $system: map.merge($system,
103
+ map.get($theme, _mat-theming-internals-do-not-access, md-sys-elevation));
104
+ $system: map.merge($system,
105
+ map.get($theme, _mat-theming-internals-do-not-access, md-sys-shape));
106
+ $system: map.merge($system,
107
+ map.get($theme, _mat-theming-internals-do-not-access, md-sys-state));
108
+ $system: map.merge($system,
109
+ map.get($theme, _mat-theming-internals-do-not-access, md-sys-typescale));
110
+ @return $system;
111
+ }
112
+
113
+ // Returns the color with an opacity value using color-mix. If the color is a variable name, it
114
+ // will wrap it with `var()`.
115
+ @function color-with-opacity($color, $opacity) {
116
+ @if (meta.type-of($color) == string and string.index($color, '--') == 1) {
117
+ $color: var($color);
118
+ }
119
+ @return color-mix(in srgb, #{$color} #{$opacity}, transparent);
120
+ }
@@ -9,16 +9,29 @@
9
9
  $_tokens: null;
10
10
  $_component-prefix: null;
11
11
  $_system-fallbacks: m3-system.create-system-fallbacks();
12
+ $_direct-system-fallbacks: ();
12
13
 
13
14
  // Sets the token prefix and map to use when creating token slots.
14
- @mixin use-tokens($prefix, $tokens) {
15
+ @mixin use-tokens($prefix, $tokens, $direct-system-fallbacks: null) {
15
16
  $_component-prefix: $prefix !global;
16
17
  $_tokens: $tokens !global;
17
18
 
19
+ // Direct system fallbacks are a map of base, color, typography, and density tokens. To simplify
20
+ // lookup, flatten these token groups into a single map.
21
+ @if $direct-system-fallbacks {
22
+ $_direct-system-fallbacks: () !global;
23
+ @each $tokens in map.values($direct-system-fallbacks) {
24
+ @each $token, $value in $tokens {
25
+ $_direct-system-fallbacks: map.set($_direct-system-fallbacks, $token, $value) !global;
26
+ }
27
+ }
28
+ }
29
+
18
30
  @content;
19
31
 
20
32
  $_component-prefix: null !global;
21
33
  $_tokens: null !global;
34
+ $_direct-system-fallbacks: () !global;
22
35
  }
23
36
 
24
37
  // Combines a prefix and a string to generate a CSS variable name for a token.
@@ -90,6 +103,14 @@ $_system-fallbacks: m3-system.create-system-fallbacks();
90
103
  $fallback: map.get($_tokens, $token);
91
104
  }
92
105
 
106
+ $direct-sys-fallback: map.get($_direct-system-fallbacks, $token);
107
+ @if ($direct-sys-fallback) {
108
+ @if (sass-utils.is-css-var-name($direct-sys-fallback)) {
109
+ @return _create-var($direct-sys-fallback, $fallback);
110
+ }
111
+ @return $direct-sys-fallback;
112
+ }
113
+
93
114
  // Check whether there's a system-level fallback. If not, return the optional
94
115
  // provided fallback (otherwise null).
95
116
  $sys-fallback: map.get($_system-fallbacks, $_component-prefix, $token);