@angular/material 18.1.1 → 18.1.3

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 (508) hide show
  1. package/button/_button-base.scss +5 -11
  2. package/checkbox/_checkbox-common.scss +9 -11
  3. package/chips/index.d.ts +3 -8
  4. package/core/_core.scss +15 -18
  5. package/core/m2/_typography.scss +129 -2
  6. package/core/ripple/_ripple.scss +1 -1
  7. package/core/style/_elevation.scss +116 -27
  8. package/core/theming/_definition.scss +2 -0
  9. package/core/tokens/_m3-tokens.scss +17 -15
  10. package/core/tokens/_token-definition.scss +266 -0
  11. package/core/tokens/_token-utils.scss +7 -202
  12. package/core/tokens/m2/mat/_app.scss +4 -4
  13. package/core/tokens/m2/mat/_autocomplete.scss +4 -4
  14. package/core/tokens/m2/mat/_badge.scss +4 -4
  15. package/core/tokens/m2/mat/_bottom-sheet.scss +4 -4
  16. package/core/tokens/m2/mat/_card.scss +4 -4
  17. package/core/tokens/m2/mat/_checkbox.scss +4 -4
  18. package/core/tokens/m2/mat/_chip.scss +4 -4
  19. package/core/tokens/m2/mat/_datepicker.scss +4 -4
  20. package/core/tokens/m2/mat/_dialog.scss +4 -4
  21. package/core/tokens/m2/mat/_divider.scss +4 -4
  22. package/core/tokens/m2/mat/_expansion.scss +4 -4
  23. package/core/tokens/m2/mat/_fab-small.scss +7 -7
  24. package/core/tokens/m2/mat/_fab.scss +7 -7
  25. package/core/tokens/m2/mat/_filled-button.scss +7 -7
  26. package/core/tokens/m2/mat/_form-field.scss +4 -6
  27. package/core/tokens/m2/mat/_full-pseudo-checkbox.scss +4 -4
  28. package/core/tokens/m2/mat/_grid-list.scss +4 -4
  29. package/core/tokens/m2/mat/_icon-button.scss +4 -4
  30. package/core/tokens/m2/mat/_icon.scss +4 -4
  31. package/core/tokens/m2/mat/_legacy-button-toggle.scss +4 -4
  32. package/core/tokens/m2/mat/_list.scss +4 -4
  33. package/core/tokens/m2/mat/_menu.scss +4 -4
  34. package/core/tokens/m2/mat/_minimal-pseudo-checkbox.scss +4 -4
  35. package/core/tokens/m2/mat/_optgroup.scss +4 -4
  36. package/core/tokens/m2/mat/_option.scss +4 -4
  37. package/core/tokens/m2/mat/_outlined-button.scss +4 -4
  38. package/core/tokens/m2/mat/_paginator.scss +4 -4
  39. package/core/tokens/m2/mat/_protected-button.scss +7 -7
  40. package/core/tokens/m2/mat/_radio.scss +4 -4
  41. package/core/tokens/m2/mat/_ripple.scss +4 -4
  42. package/core/tokens/m2/mat/_select.scss +7 -7
  43. package/core/tokens/m2/mat/_sidenav.scss +4 -4
  44. package/core/tokens/m2/mat/_slider.scss +4 -4
  45. package/core/tokens/m2/mat/_snack-bar.scss +4 -4
  46. package/core/tokens/m2/mat/_sort.scss +4 -4
  47. package/core/tokens/m2/mat/_standard-button-toggle.scss +4 -4
  48. package/core/tokens/m2/mat/_stepper.scss +4 -4
  49. package/core/tokens/m2/mat/_switch.scss +4 -4
  50. package/core/tokens/m2/mat/_tab-header-with-background.scss +4 -4
  51. package/core/tokens/m2/mat/_tab-header.scss +4 -4
  52. package/core/tokens/m2/mat/_table.scss +4 -4
  53. package/core/tokens/m2/mat/_text-button.scss +4 -4
  54. package/core/tokens/m2/mat/_toolbar.scss +4 -4
  55. package/core/tokens/m2/mat/_tree.scss +4 -4
  56. package/core/tokens/m2/mdc/_checkbox.scss +6 -7
  57. package/core/tokens/m2/mdc/_chip.scss +4 -4
  58. package/core/tokens/m2/mdc/_circular-progress.scss +4 -4
  59. package/core/tokens/m2/mdc/_dialog.scss +5 -5
  60. package/core/tokens/m2/mdc/_elevated-card.scss +4 -4
  61. package/core/tokens/m2/mdc/_extended-fab.scss +4 -4
  62. package/core/tokens/m2/mdc/_fab-small.scss +4 -4
  63. package/core/tokens/m2/mdc/_fab.scss +4 -4
  64. package/core/tokens/m2/mdc/_filled-button.scss +6 -7
  65. package/core/tokens/m2/mdc/_filled-text-field.scss +7 -7
  66. package/core/tokens/m2/mdc/_icon-button.scss +4 -4
  67. package/core/tokens/m2/mdc/_linear-progress.scss +4 -4
  68. package/core/tokens/m2/mdc/_list.scss +4 -4
  69. package/core/tokens/m2/mdc/_outlined-button.scss +5 -5
  70. package/core/tokens/m2/mdc/_outlined-card.scss +4 -4
  71. package/core/tokens/m2/mdc/_outlined-text-field.scss +7 -7
  72. package/core/tokens/m2/mdc/_plain-tooltip.scss +4 -4
  73. package/core/tokens/m2/mdc/_protected-button.scss +6 -7
  74. package/core/tokens/m2/mdc/_radio.scss +4 -4
  75. package/core/tokens/m2/mdc/_secondary-navigation-tab.scss +4 -4
  76. package/core/tokens/m2/mdc/_slider.scss +4 -4
  77. package/core/tokens/m2/mdc/_snack-bar.scss +4 -4
  78. package/core/tokens/m2/mdc/_switch.scss +4 -4
  79. package/core/tokens/m2/mdc/_tab-indicator.scss +4 -4
  80. package/core/tokens/m2/mdc/_text-button.scss +4 -4
  81. package/core/tokens/m3/definitions/_index.scss +94 -0
  82. package/core/tokens/m3/definitions/_md-comp-checkbox.scss +120 -0
  83. package/core/tokens/m3/definitions/_md-comp-circular-progress-indicator.scss +27 -0
  84. package/core/tokens/m3/definitions/_md-comp-data-table.scss +90 -0
  85. package/core/tokens/m3/definitions/_md-comp-dialog.scss +123 -0
  86. package/core/tokens/m3/definitions/_md-comp-elevated-button.scss +87 -0
  87. package/core/tokens/m3/definitions/_md-comp-elevated-card.scss +53 -0
  88. package/core/tokens/m3/definitions/_md-comp-extended-fab-primary.scss +90 -0
  89. package/core/tokens/m3/definitions/_md-comp-extended-fab-secondary.scss +91 -0
  90. package/core/tokens/m3/definitions/_md-comp-extended-fab-tertiary.scss +91 -0
  91. package/core/tokens/m3/definitions/_md-comp-fab-primary-small.scss +59 -0
  92. package/core/tokens/m3/definitions/_md-comp-fab-primary.scss +59 -0
  93. package/core/tokens/m3/definitions/_md-comp-fab-secondary-small.scss +60 -0
  94. package/core/tokens/m3/definitions/_md-comp-fab-secondary.scss +60 -0
  95. package/core/tokens/m3/definitions/_md-comp-fab-tertiary-small.scss +60 -0
  96. package/core/tokens/m3/definitions/_md-comp-fab-tertiary.scss +60 -0
  97. package/core/tokens/m3/definitions/_md-comp-filled-button.scss +85 -0
  98. package/core/tokens/m3/definitions/_md-comp-filled-card.scss +52 -0
  99. package/core/tokens/m3/definitions/_md-comp-filled-icon-button.scss +73 -0
  100. package/core/tokens/m3/definitions/_md-comp-filled-text-field.scss +189 -0
  101. package/core/tokens/m3/definitions/_md-comp-icon-button.scss +64 -0
  102. package/core/tokens/m3/definitions/_md-comp-linear-progress-indicator.scss +29 -0
  103. package/core/tokens/m3/definitions/_md-comp-list.scss +252 -0
  104. package/core/tokens/m3/definitions/_md-comp-outlined-button.scss +80 -0
  105. package/core/tokens/m3/definitions/_md-comp-outlined-card.scss +59 -0
  106. package/core/tokens/m3/definitions/_md-comp-outlined-icon-button.scss +73 -0
  107. package/core/tokens/m3/definitions/_md-comp-outlined-text-field.scss +171 -0
  108. package/core/tokens/m3/definitions/_md-comp-plain-tooltip.scss +51 -0
  109. package/core/tokens/m3/definitions/_md-comp-radio-button.scss +62 -0
  110. package/core/tokens/m3/definitions/_md-comp-secondary-navigation-tab.scss +80 -0
  111. package/core/tokens/m3/definitions/_md-comp-slider.scss +110 -0
  112. package/core/tokens/m3/definitions/_md-comp-snackbar.scss +125 -0
  113. package/core/tokens/m3/definitions/_md-comp-switch.scss +130 -0
  114. package/core/tokens/m3/definitions/_md-comp-text-button.scss +73 -0
  115. package/core/tokens/m3/definitions/_md-ref-palette.scss +100 -0
  116. package/core/tokens/m3/definitions/_md-ref-typeface.scss +14 -0
  117. package/core/tokens/m3/definitions/_md-sys-color.scss +126 -0
  118. package/core/tokens/m3/definitions/_md-sys-elevation.scss +15 -0
  119. package/core/tokens/m3/definitions/_md-sys-motion.scss +46 -0
  120. package/core/tokens/m3/definitions/_md-sys-shape.scss +24 -0
  121. package/core/tokens/m3/definitions/_md-sys-state.scss +13 -0
  122. package/core/tokens/m3/definitions/_md-sys-typescale.scss +308 -0
  123. package/core/tokens/m3/definitions/unused/_md-comp-assist-chip.scss +105 -0
  124. package/core/tokens/m3/definitions/unused/_md-comp-badge.scss +54 -0
  125. package/core/tokens/m3/definitions/unused/_md-comp-banner.scss +71 -0
  126. package/core/tokens/m3/definitions/unused/_md-comp-bottom-app-bar.scss +29 -0
  127. package/core/tokens/m3/definitions/unused/_md-comp-carousel-item.scss +59 -0
  128. package/core/tokens/m3/definitions/unused/_md-comp-date-input-modal.scss +87 -0
  129. package/core/tokens/m3/definitions/unused/_md-comp-date-picker-docked.scss +248 -0
  130. package/core/tokens/m3/definitions/unused/_md-comp-date-picker-modal.scss +313 -0
  131. package/core/tokens/m3/definitions/unused/_md-comp-divider.scss +19 -0
  132. package/core/tokens/m3/definitions/unused/_md-comp-extended-fab-branded.scss +82 -0
  133. package/core/tokens/m3/definitions/unused/_md-comp-extended-fab-surface.scss +86 -0
  134. package/core/tokens/m3/definitions/unused/_md-comp-fab-branded-large.scss +54 -0
  135. package/core/tokens/m3/definitions/unused/_md-comp-fab-branded.scss +54 -0
  136. package/core/tokens/m3/definitions/unused/_md-comp-fab-primary-large.scss +59 -0
  137. package/core/tokens/m3/definitions/unused/_md-comp-fab-secondary-large.scss +60 -0
  138. package/core/tokens/m3/definitions/unused/_md-comp-fab-surface-large.scss +58 -0
  139. package/core/tokens/m3/definitions/unused/_md-comp-fab-surface-small.scss +58 -0
  140. package/core/tokens/m3/definitions/unused/_md-comp-fab-surface.scss +58 -0
  141. package/core/tokens/m3/definitions/unused/_md-comp-fab-tertiary-large.scss +60 -0
  142. package/core/tokens/m3/definitions/unused/_md-comp-filled-autocomplete.scss +269 -0
  143. package/core/tokens/m3/definitions/unused/_md-comp-filled-menu-button.scss +94 -0
  144. package/core/tokens/m3/definitions/unused/_md-comp-filled-select.scss +274 -0
  145. package/core/tokens/m3/definitions/unused/_md-comp-filled-tonal-button.scss +95 -0
  146. package/core/tokens/m3/definitions/unused/_md-comp-filled-tonal-icon-button.scss +80 -0
  147. package/core/tokens/m3/definitions/unused/_md-comp-filter-chip.scss +205 -0
  148. package/core/tokens/m3/definitions/unused/_md-comp-full-screen-dialog.scss +109 -0
  149. package/core/tokens/m3/definitions/unused/_md-comp-input-chip.scss +180 -0
  150. package/core/tokens/m3/definitions/unused/_md-comp-menu.scss +31 -0
  151. package/core/tokens/m3/definitions/unused/_md-comp-navigation-bar.scss +110 -0
  152. package/core/tokens/m3/definitions/unused/_md-comp-navigation-drawer.scss +162 -0
  153. package/core/tokens/m3/definitions/unused/_md-comp-navigation-rail.scss +127 -0
  154. package/core/tokens/m3/definitions/unused/_md-comp-outlined-autocomplete.scss +259 -0
  155. package/core/tokens/m3/definitions/unused/_md-comp-outlined-menu-button.scss +90 -0
  156. package/core/tokens/m3/definitions/unused/_md-comp-outlined-segmented-button.scss +108 -0
  157. package/core/tokens/m3/definitions/unused/_md-comp-outlined-select.scss +264 -0
  158. package/core/tokens/m3/definitions/unused/_md-comp-primary-navigation-tab.scss +117 -0
  159. package/core/tokens/m3/definitions/unused/_md-comp-rich-tooltip.scss +121 -0
  160. package/core/tokens/m3/definitions/unused/_md-comp-scrim.scss +19 -0
  161. package/core/tokens/m3/definitions/unused/_md-comp-search-bar.scss +97 -0
  162. package/core/tokens/m3/definitions/unused/_md-comp-search-view.scss +91 -0
  163. package/core/tokens/m3/definitions/unused/_md-comp-sheet-bottom.scss +39 -0
  164. package/core/tokens/m3/definitions/unused/_md-comp-sheet-floating.scss +28 -0
  165. package/core/tokens/m3/definitions/unused/_md-comp-sheet-side.scss +87 -0
  166. package/core/tokens/m3/definitions/unused/_md-comp-standard-menu-button.scss +94 -0
  167. package/core/tokens/m3/definitions/unused/_md-comp-suggestion-chip.scss +121 -0
  168. package/core/tokens/m3/definitions/unused/_md-comp-time-input.scss +222 -0
  169. package/core/tokens/m3/definitions/unused/_md-comp-time-picker.scss +268 -0
  170. package/core/tokens/m3/definitions/unused/_md-comp-top-app-bar-large.scss +59 -0
  171. package/core/tokens/m3/definitions/unused/_md-comp-top-app-bar-medium.scss +59 -0
  172. package/core/tokens/m3/definitions/unused/_md-comp-top-app-bar-small-centered.scss +62 -0
  173. package/core/tokens/m3/definitions/unused/_md-comp-top-app-bar-small.scss +60 -0
  174. package/core/tokens/m3/mat/_app.scss +2 -2
  175. package/core/tokens/m3/mat/_autocomplete.scss +3 -4
  176. package/core/tokens/m3/mat/_badge.scss +18 -18
  177. package/core/tokens/m3/mat/_bottom-sheet.scss +4 -4
  178. package/core/tokens/m3/mat/_card.scss +4 -4
  179. package/core/tokens/m3/mat/_checkbox.scss +2 -2
  180. package/core/tokens/m3/mat/_chip.scss +5 -5
  181. package/core/tokens/m3/mat/_datepicker.scss +7 -7
  182. package/core/tokens/m3/mat/_dialog.scss +12 -11
  183. package/core/tokens/m3/mat/_divider.scss +3 -3
  184. package/core/tokens/m3/mat/_expansion.scss +7 -7
  185. package/core/tokens/m3/mat/_fab-small.scss +2 -2
  186. package/core/tokens/m3/mat/_fab.scss +2 -2
  187. package/core/tokens/m3/mat/_filled-button.scss +5 -5
  188. package/core/tokens/m3/mat/_form-field.scss +5 -5
  189. package/core/tokens/m3/mat/_full-pseudo-checkbox.scss +2 -2
  190. package/core/tokens/m3/mat/_grid-list.scss +2 -2
  191. package/core/tokens/m3/mat/_icon-button.scss +2 -2
  192. package/core/tokens/m3/mat/_icon.scss +3 -3
  193. package/core/tokens/m3/mat/_list.scss +2 -2
  194. package/core/tokens/m3/mat/_menu.scss +12 -12
  195. package/core/tokens/m3/mat/_minimal-pseudo-checkbox.scss +2 -2
  196. package/core/tokens/m3/mat/_optgroup.scss +3 -3
  197. package/core/tokens/m3/mat/_option.scss +2 -2
  198. package/core/tokens/m3/mat/_outlined-button.scss +5 -5
  199. package/core/tokens/m3/mat/_paginator.scss +3 -3
  200. package/core/tokens/m3/mat/_protected-button.scss +5 -5
  201. package/core/tokens/m3/mat/_radio.scss +2 -2
  202. package/core/tokens/m3/mat/_ripple.scss +2 -2
  203. package/core/tokens/m3/mat/_select.scss +4 -4
  204. package/core/tokens/m3/mat/_sidenav.scss +6 -5
  205. package/core/tokens/m3/mat/_slider.scss +12 -10
  206. package/core/tokens/m3/mat/_snack-bar.scss +2 -2
  207. package/core/tokens/m3/mat/_sort.scss +2 -2
  208. package/core/tokens/m3/mat/_standard-button-toggle.scss +6 -5
  209. package/core/tokens/m3/mat/_stepper.scss +3 -3
  210. package/core/tokens/m3/mat/_switch.scss +27 -22
  211. package/core/tokens/m3/mat/_tab-header.scss +4 -4
  212. package/core/tokens/m3/mat/_table.scss +7 -6
  213. package/core/tokens/m3/mat/_text-button.scss +6 -6
  214. package/core/tokens/m3/mat/_toolbar.scss +3 -3
  215. package/core/tokens/m3/mat/_tree.scss +2 -2
  216. package/core/tokens/m3/mdc/_checkbox.scss +10 -8
  217. package/core/tokens/m3/mdc/_chip.scss +12 -11
  218. package/core/tokens/m3/mdc/_circular-progress.scss +5 -4
  219. package/core/tokens/m3/mdc/_dialog.scss +4 -4
  220. package/core/tokens/m3/mdc/_elevated-card.scss +3 -3
  221. package/core/tokens/m3/mdc/_extended-fab.scss +9 -5
  222. package/core/tokens/m3/mdc/_fab-small.scss +8 -5
  223. package/core/tokens/m3/mdc/_fab.scss +6 -5
  224. package/core/tokens/m3/mdc/_filled-button.scss +6 -6
  225. package/core/tokens/m3/mdc/_filled-text-field.scss +7 -6
  226. package/core/tokens/m3/mdc/_icon-button.scss +10 -8
  227. package/core/tokens/m3/mdc/_linear-progress.scss +5 -4
  228. package/core/tokens/m3/mdc/_list.scss +3 -3
  229. package/core/tokens/m3/mdc/_outlined-button.scss +7 -6
  230. package/core/tokens/m3/mdc/_outlined-card.scss +3 -3
  231. package/core/tokens/m3/mdc/_outlined-text-field.scss +7 -6
  232. package/core/tokens/m3/mdc/_plain-tooltip.scss +3 -3
  233. package/core/tokens/m3/mdc/_protected-button.scss +6 -6
  234. package/core/tokens/m3/mdc/_radio.scss +4 -3
  235. package/core/tokens/m3/mdc/_secondary-navigation-tab.scss +4 -3
  236. package/core/tokens/m3/mdc/_slider.scss +4 -3
  237. package/core/tokens/m3/mdc/_snack-bar.scss +3 -3
  238. package/core/tokens/m3/mdc/_switch.scss +4 -3
  239. package/core/tokens/m3/mdc/_tab-indicator.scss +5 -4
  240. package/core/tokens/m3/mdc/_text-button.scss +6 -6
  241. package/esm2022/autocomplete/animations.mjs +1 -2
  242. package/esm2022/autocomplete/autocomplete-origin.mjs +4 -4
  243. package/esm2022/autocomplete/autocomplete-trigger.mjs +4 -4
  244. package/esm2022/autocomplete/autocomplete.mjs +4 -4
  245. package/esm2022/autocomplete/module.mjs +5 -5
  246. package/esm2022/badge/badge-module.mjs +5 -5
  247. package/esm2022/badge/badge.mjs +7 -7
  248. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +4 -4
  249. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +5 -5
  250. package/esm2022/bottom-sheet/bottom-sheet.mjs +4 -4
  251. package/esm2022/button/button-base.mjs +7 -7
  252. package/esm2022/button/button.mjs +7 -7
  253. package/esm2022/button/fab.mjs +13 -13
  254. package/esm2022/button/icon-button.mjs +7 -7
  255. package/esm2022/button/module.mjs +5 -5
  256. package/esm2022/button-toggle/button-toggle-module.mjs +5 -5
  257. package/esm2022/button-toggle/button-toggle.mjs +8 -8
  258. package/esm2022/card/card.mjs +43 -43
  259. package/esm2022/card/module.mjs +5 -5
  260. package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
  261. package/esm2022/checkbox/checkbox.mjs +4 -4
  262. package/esm2022/checkbox/module.mjs +9 -9
  263. package/esm2022/chips/chip-action.mjs +4 -4
  264. package/esm2022/chips/chip-edit-input.mjs +4 -4
  265. package/esm2022/chips/chip-grid.mjs +4 -4
  266. package/esm2022/chips/chip-icons.mjs +10 -10
  267. package/esm2022/chips/chip-input.mjs +4 -4
  268. package/esm2022/chips/chip-listbox.mjs +4 -4
  269. package/esm2022/chips/chip-option.mjs +6 -6
  270. package/esm2022/chips/chip-row.mjs +7 -7
  271. package/esm2022/chips/chip-set.mjs +4 -4
  272. package/esm2022/chips/chip.mjs +6 -27
  273. package/esm2022/chips/module.mjs +5 -5
  274. package/esm2022/core/common-behaviors/common-module.mjs +5 -5
  275. package/esm2022/core/datetime/index.mjs +9 -9
  276. package/esm2022/core/datetime/native-date-adapter.mjs +4 -4
  277. package/esm2022/core/error/error-options.mjs +7 -7
  278. package/esm2022/core/internal-form-field/internal-form-field.mjs +4 -4
  279. package/esm2022/core/line/line.mjs +8 -8
  280. package/esm2022/core/option/index.mjs +5 -5
  281. package/esm2022/core/option/optgroup.mjs +4 -4
  282. package/esm2022/core/option/option.mjs +4 -4
  283. package/esm2022/core/private/ripple-loader.mjs +4 -4
  284. package/esm2022/core/ripple/index.mjs +5 -5
  285. package/esm2022/core/ripple/ripple.mjs +4 -4
  286. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +5 -5
  287. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  288. package/esm2022/core/version.mjs +1 -1
  289. package/esm2022/datepicker/calendar-body.mjs +4 -4
  290. package/esm2022/datepicker/calendar.mjs +7 -7
  291. package/esm2022/datepicker/date-range-input-parts.mjs +10 -10
  292. package/esm2022/datepicker/date-range-input.mjs +4 -4
  293. package/esm2022/datepicker/date-range-picker.mjs +4 -4
  294. package/esm2022/datepicker/date-range-selection-strategy.mjs +4 -4
  295. package/esm2022/datepicker/date-selection-model.mjs +10 -10
  296. package/esm2022/datepicker/datepicker-actions.mjs +10 -10
  297. package/esm2022/datepicker/datepicker-base.mjs +7 -7
  298. package/esm2022/datepicker/datepicker-input-base.mjs +4 -4
  299. package/esm2022/datepicker/datepicker-input.mjs +4 -4
  300. package/esm2022/datepicker/datepicker-intl.mjs +4 -4
  301. package/esm2022/datepicker/datepicker-module.mjs +5 -5
  302. package/esm2022/datepicker/datepicker-toggle.mjs +7 -7
  303. package/esm2022/datepicker/datepicker.mjs +4 -4
  304. package/esm2022/datepicker/month-view.mjs +4 -4
  305. package/esm2022/datepicker/multi-year-view.mjs +4 -4
  306. package/esm2022/datepicker/year-view.mjs +4 -4
  307. package/esm2022/dialog/dialog-container.mjs +5 -8
  308. package/esm2022/dialog/dialog-content-directives.mjs +16 -16
  309. package/esm2022/dialog/dialog.mjs +4 -4
  310. package/esm2022/dialog/module.mjs +5 -5
  311. package/esm2022/divider/divider-module.mjs +5 -5
  312. package/esm2022/divider/divider.mjs +4 -4
  313. package/esm2022/expansion/accordion.mjs +4 -4
  314. package/esm2022/expansion/expansion-module.mjs +5 -5
  315. package/esm2022/expansion/expansion-panel-content.mjs +4 -4
  316. package/esm2022/expansion/expansion-panel-header.mjs +10 -10
  317. package/esm2022/expansion/expansion-panel.mjs +7 -7
  318. package/esm2022/form-field/directives/error.mjs +4 -4
  319. package/esm2022/form-field/directives/floating-label.mjs +4 -4
  320. package/esm2022/form-field/directives/hint.mjs +4 -4
  321. package/esm2022/form-field/directives/label.mjs +4 -4
  322. package/esm2022/form-field/directives/line-ripple.mjs +4 -4
  323. package/esm2022/form-field/directives/notched-outline.mjs +4 -4
  324. package/esm2022/form-field/directives/prefix.mjs +4 -4
  325. package/esm2022/form-field/directives/suffix.mjs +4 -4
  326. package/esm2022/form-field/form-field-control.mjs +4 -4
  327. package/esm2022/form-field/form-field.mjs +7 -4
  328. package/esm2022/form-field/module.mjs +5 -5
  329. package/esm2022/grid-list/grid-list-module.mjs +5 -5
  330. package/esm2022/grid-list/grid-list.mjs +4 -4
  331. package/esm2022/grid-list/grid-tile.mjs +16 -16
  332. package/esm2022/icon/icon-module.mjs +5 -5
  333. package/esm2022/icon/icon-registry.mjs +4 -4
  334. package/esm2022/icon/icon.mjs +4 -4
  335. package/esm2022/icon/testing/fake-icon-registry.mjs +8 -8
  336. package/esm2022/input/input.mjs +39 -6
  337. package/esm2022/input/module.mjs +5 -5
  338. package/esm2022/list/action-list.mjs +4 -4
  339. package/esm2022/list/list-base.mjs +7 -7
  340. package/esm2022/list/list-item-sections.mjs +19 -19
  341. package/esm2022/list/list-module.mjs +5 -5
  342. package/esm2022/list/list-option.mjs +4 -4
  343. package/esm2022/list/list.mjs +7 -7
  344. package/esm2022/list/nav-list.mjs +4 -4
  345. package/esm2022/list/selection-list.mjs +4 -4
  346. package/esm2022/list/subheader.mjs +4 -4
  347. package/esm2022/list/testing/selection-list-harness.mjs +2 -2
  348. package/esm2022/menu/menu-content.mjs +4 -4
  349. package/esm2022/menu/menu-item.mjs +4 -4
  350. package/esm2022/menu/menu-trigger.mjs +4 -4
  351. package/esm2022/menu/menu.mjs +4 -4
  352. package/esm2022/menu/module.mjs +5 -5
  353. package/esm2022/paginator/module.mjs +5 -5
  354. package/esm2022/paginator/paginator-intl.mjs +4 -4
  355. package/esm2022/paginator/paginator.mjs +4 -4
  356. package/esm2022/progress-bar/module.mjs +5 -5
  357. package/esm2022/progress-bar/progress-bar.mjs +4 -4
  358. package/esm2022/progress-spinner/module.mjs +5 -5
  359. package/esm2022/progress-spinner/progress-spinner.mjs +4 -4
  360. package/esm2022/radio/module.mjs +5 -5
  361. package/esm2022/radio/radio.mjs +7 -7
  362. package/esm2022/select/module.mjs +5 -5
  363. package/esm2022/select/select.mjs +7 -7
  364. package/esm2022/sidenav/drawer.mjs +10 -10
  365. package/esm2022/sidenav/sidenav-module.mjs +5 -5
  366. package/esm2022/sidenav/sidenav.mjs +10 -10
  367. package/esm2022/slide-toggle/module.mjs +9 -9
  368. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +4 -4
  369. package/esm2022/slide-toggle/slide-toggle.mjs +6 -6
  370. package/esm2022/slider/module.mjs +5 -5
  371. package/esm2022/slider/slider-input.mjs +7 -7
  372. package/esm2022/slider/slider-thumb.mjs +4 -4
  373. package/esm2022/slider/slider.mjs +4 -4
  374. package/esm2022/snack-bar/module.mjs +5 -5
  375. package/esm2022/snack-bar/simple-snack-bar.mjs +4 -4
  376. package/esm2022/snack-bar/snack-bar-container.mjs +4 -4
  377. package/esm2022/snack-bar/snack-bar-content.mjs +10 -10
  378. package/esm2022/snack-bar/snack-bar.mjs +4 -4
  379. package/esm2022/sort/sort-header-intl.mjs +4 -4
  380. package/esm2022/sort/sort-header.mjs +4 -4
  381. package/esm2022/sort/sort-module.mjs +5 -5
  382. package/esm2022/sort/sort.mjs +4 -4
  383. package/esm2022/stepper/step-content.mjs +4 -4
  384. package/esm2022/stepper/step-header.mjs +4 -4
  385. package/esm2022/stepper/step-label.mjs +4 -4
  386. package/esm2022/stepper/stepper-button.mjs +7 -7
  387. package/esm2022/stepper/stepper-icon.mjs +4 -4
  388. package/esm2022/stepper/stepper-intl.mjs +4 -4
  389. package/esm2022/stepper/stepper-module.mjs +5 -5
  390. package/esm2022/stepper/stepper.mjs +7 -7
  391. package/esm2022/table/cell.mjs +22 -22
  392. package/esm2022/table/module.mjs +5 -5
  393. package/esm2022/table/row.mjs +22 -22
  394. package/esm2022/table/table.mjs +7 -7
  395. package/esm2022/table/text-column.mjs +4 -4
  396. package/esm2022/tabs/ink-bar.mjs +4 -4
  397. package/esm2022/tabs/module.mjs +5 -5
  398. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  399. package/esm2022/tabs/tab-body.mjs +7 -7
  400. package/esm2022/tabs/tab-content.mjs +4 -4
  401. package/esm2022/tabs/tab-group.mjs +4 -4
  402. package/esm2022/tabs/tab-header.mjs +4 -4
  403. package/esm2022/tabs/tab-label-wrapper.mjs +4 -4
  404. package/esm2022/tabs/tab-label.mjs +4 -4
  405. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +10 -10
  406. package/esm2022/tabs/tab.mjs +4 -4
  407. package/esm2022/tabs/testing/tab-harness.mjs +2 -2
  408. package/esm2022/toolbar/toolbar-module.mjs +5 -5
  409. package/esm2022/toolbar/toolbar.mjs +7 -7
  410. package/esm2022/tooltip/module.mjs +5 -5
  411. package/esm2022/tooltip/tooltip.mjs +7 -7
  412. package/esm2022/tree/node.mjs +10 -10
  413. package/esm2022/tree/outlet.mjs +4 -4
  414. package/esm2022/tree/padding.mjs +4 -4
  415. package/esm2022/tree/toggle.mjs +4 -4
  416. package/esm2022/tree/tree-module.mjs +5 -5
  417. package/esm2022/tree/tree.mjs +4 -4
  418. package/fesm2022/autocomplete.mjs +13 -14
  419. package/fesm2022/autocomplete.mjs.map +1 -1
  420. package/fesm2022/badge.mjs +10 -10
  421. package/fesm2022/badge.mjs.map +1 -1
  422. package/fesm2022/bottom-sheet.mjs +10 -10
  423. package/fesm2022/bottom-sheet.mjs.map +1 -1
  424. package/fesm2022/button-toggle.mjs +11 -11
  425. package/fesm2022/button-toggle.mjs.map +1 -1
  426. package/fesm2022/button.mjs +34 -34
  427. package/fesm2022/button.mjs.map +1 -1
  428. package/fesm2022/card.mjs +46 -46
  429. package/fesm2022/card.mjs.map +1 -1
  430. package/fesm2022/checkbox.mjs +14 -14
  431. package/fesm2022/checkbox.mjs.map +1 -1
  432. package/fesm2022/chips.mjs +47 -68
  433. package/fesm2022/chips.mjs.map +1 -1
  434. package/fesm2022/core.mjs +59 -59
  435. package/fesm2022/core.mjs.map +1 -1
  436. package/fesm2022/datepicker.mjs +82 -82
  437. package/fesm2022/datepicker.mjs.map +1 -1
  438. package/fesm2022/dialog.mjs +26 -29
  439. package/fesm2022/dialog.mjs.map +1 -1
  440. package/fesm2022/divider.mjs +7 -7
  441. package/fesm2022/divider.mjs.map +1 -1
  442. package/fesm2022/expansion.mjs +25 -25
  443. package/fesm2022/expansion.mjs.map +1 -1
  444. package/fesm2022/form-field.mjs +37 -34
  445. package/fesm2022/form-field.mjs.map +1 -1
  446. package/fesm2022/grid-list.mjs +22 -22
  447. package/fesm2022/grid-list.mjs.map +1 -1
  448. package/fesm2022/icon/testing.mjs +7 -7
  449. package/fesm2022/icon/testing.mjs.map +1 -1
  450. package/fesm2022/icon.mjs +10 -10
  451. package/fesm2022/icon.mjs.map +1 -1
  452. package/fesm2022/input.mjs +42 -9
  453. package/fesm2022/input.mjs.map +1 -1
  454. package/fesm2022/list/testing.mjs +1 -1
  455. package/fesm2022/list/testing.mjs.map +1 -1
  456. package/fesm2022/list.mjs +49 -49
  457. package/fesm2022/list.mjs.map +1 -1
  458. package/fesm2022/menu.mjs +16 -16
  459. package/fesm2022/menu.mjs.map +1 -1
  460. package/fesm2022/paginator.mjs +10 -10
  461. package/fesm2022/paginator.mjs.map +1 -1
  462. package/fesm2022/progress-bar.mjs +7 -7
  463. package/fesm2022/progress-bar.mjs.map +1 -1
  464. package/fesm2022/progress-spinner.mjs +7 -7
  465. package/fesm2022/progress-spinner.mjs.map +1 -1
  466. package/fesm2022/radio.mjs +10 -10
  467. package/fesm2022/radio.mjs.map +1 -1
  468. package/fesm2022/select.mjs +10 -10
  469. package/fesm2022/select.mjs.map +1 -1
  470. package/fesm2022/sidenav.mjs +22 -22
  471. package/fesm2022/sidenav.mjs.map +1 -1
  472. package/fesm2022/slide-toggle.mjs +16 -16
  473. package/fesm2022/slide-toggle.mjs.map +1 -1
  474. package/fesm2022/slider.mjs +16 -16
  475. package/fesm2022/slider.mjs.map +1 -1
  476. package/fesm2022/snack-bar.mjs +22 -22
  477. package/fesm2022/snack-bar.mjs.map +1 -1
  478. package/fesm2022/sort.mjs +13 -13
  479. package/fesm2022/sort.mjs.map +1 -1
  480. package/fesm2022/stepper.mjs +31 -31
  481. package/fesm2022/stepper.mjs.map +1 -1
  482. package/fesm2022/table.mjs +55 -55
  483. package/fesm2022/table.mjs.map +1 -1
  484. package/fesm2022/tabs/testing.mjs +1 -1
  485. package/fesm2022/tabs/testing.mjs.map +1 -1
  486. package/fesm2022/tabs.mjs +43 -43
  487. package/fesm2022/tabs.mjs.map +1 -1
  488. package/fesm2022/toolbar.mjs +10 -10
  489. package/fesm2022/toolbar.mjs.map +1 -1
  490. package/fesm2022/tooltip.mjs +10 -10
  491. package/fesm2022/tooltip.mjs.map +1 -1
  492. package/fesm2022/tree.mjs +25 -25
  493. package/fesm2022/tree.mjs.map +1 -1
  494. package/form-field/_form-field-focus-overlay.scss +1 -1
  495. package/form-field/_mdc-text-field-density-overrides.scss +4 -4
  496. package/form-field/_mdc-text-field-structure.scss +6 -6
  497. package/input/index.d.ts +13 -1
  498. package/list/testing/index.d.ts +1 -1
  499. package/package.json +3 -51
  500. package/prebuilt-themes/azure-blue.css +1 -1
  501. package/prebuilt-themes/cyan-orange.css +1 -1
  502. package/prebuilt-themes/magenta-violet.css +1 -1
  503. package/prebuilt-themes/rose-red.css +1 -1
  504. package/radio/_radio-common.scss +5 -5
  505. package/schematics/ng-add/index.js +1 -1
  506. package/schematics/ng-add/index.mjs +1 -1
  507. package/tabs/testing/index.d.ts +1 -1
  508. package/core/mdc-helpers/_mdc-helpers.scss +0 -60
@@ -0,0 +1,266 @@
1
+ @use 'sass:color';
2
+ @use 'sass:list';
3
+ @use 'sass:map';
4
+ @use 'sass:meta';
5
+ @use 'sass:math';
6
+ @use '../m2/palette' as m2-palette;
7
+ @use '../m2/theming' as m2-theming;
8
+ @use '../m2/typography' as m2-typography;
9
+ @use './m3/definitions' as m3-token-definitions;
10
+
11
+ // Indicates whether we're building internally. Used for backwards compatibility.
12
+ $private-is-internal-build: false;
13
+
14
+ $_placeholder-color-palette: m2-theming.define-palette(m2-palette.$red-palette);
15
+
16
+ // Placeholder color config that can be passed to token getter functions when generating token
17
+ // slots.
18
+ $placeholder-color-config: (
19
+ primary: $_placeholder-color-palette,
20
+ accent: $_placeholder-color-palette,
21
+ warn: $_placeholder-color-palette,
22
+ is-dark: false,
23
+ foreground: m2-palette.$light-theme-foreground-palette,
24
+ background: m2-palette.$light-theme-background-palette,
25
+ );
26
+
27
+ $_placeholder-typography-level-config: m2-typography.typography-config-level-from-mdc(body1);
28
+
29
+ // Placeholder typography config that can be passed to token getter functions when generating token
30
+ // slots.
31
+ $placeholder-typography-config: (
32
+ font-family: 'Roboto, sans-serif',
33
+ headline-1: $_placeholder-typography-level-config,
34
+ headline-2: $_placeholder-typography-level-config,
35
+ headline-3: $_placeholder-typography-level-config,
36
+ headline-4: $_placeholder-typography-level-config,
37
+ headline-5: $_placeholder-typography-level-config,
38
+ headline-6: $_placeholder-typography-level-config,
39
+ subtitle-1: $_placeholder-typography-level-config,
40
+ subtitle-2: $_placeholder-typography-level-config,
41
+ body-1: $_placeholder-typography-level-config,
42
+ body-2: $_placeholder-typography-level-config,
43
+ caption: $_placeholder-typography-level-config,
44
+ button: $_placeholder-typography-level-config,
45
+ overline: $_placeholder-typography-level-config,
46
+ subheading-1: $_placeholder-typography-level-config,
47
+ title: $_placeholder-typography-level-config,
48
+ );
49
+
50
+ // Placeholder density config that can be passed to token getter functions when generating token
51
+ // slots.
52
+ $placeholder-density-config: 0;
53
+
54
+ $_tokens: null;
55
+ $_component-prefix: null;
56
+ $_system-fallbacks: null;
57
+
58
+ /// Gets all the MDC token values for a specific component. This function serves as single
59
+ /// point at which we directly reference a specific version of the MDC tokens.
60
+ /// @param {String} $component Name of the component for which to get the tokens
61
+ /// @param {Map} $systems The MDC system tokens
62
+ /// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values
63
+ /// @return {List} Map of token names to values
64
+ @function get-mdc-tokens($component, $systems, $exclude-hardcoded) {
65
+ $full-name: 'md-comp-' + $component + '-values';
66
+ $fn: meta.get-function($name: $full-name, $module: 'm3-token-definitions');
67
+ @return meta.call($fn, $systems, $exclude-hardcoded);
68
+ }
69
+
70
+ /// Gets the MDC tokens for the given prefix, M3 token values, and supported token slots.
71
+ /// @param {List} $prefix The token prefix for the given tokens.
72
+ /// @param {Map|(Map, Map)} $values A map of M3 token values for the given prefix.
73
+ /// This param may also be a tuple of maps, the first one representing the default M3 token values,
74
+ // and the second containing overrides for different color variants.
75
+ // Single map example:
76
+ // (token1: green, token2: 2px)
77
+ // Tuple example:
78
+ // (
79
+ // (token1: green, token2: 2px),
80
+ // (
81
+ // secondary: (token1: blue),
82
+ // error: (token1: red),
83
+ // )
84
+ // )
85
+ /// @param {Map} $slots A map of token slots, with null value indicating the token is not supported.
86
+ /// @param {String|null} $variant The name of the variant the token values are for.
87
+ /// @return {Map} A map of fully qualified token names to values, for only the supported tokens.
88
+ @function namespace-tokens($prefix, $values, $slots, $variant: null) {
89
+ $result: ();
90
+ @if $variant == null and meta.type-of($values) == 'list' and list.length($values == 2) {
91
+ $variants: list.nth($values, 2);
92
+ $values: list.nth($values, 1);
93
+ @each $variant, $overrides in $variants {
94
+ $result: map.merge($result, namespace-tokens($prefix, $overrides, $slots, $variant));
95
+ }
96
+ }
97
+ $used-token-names: map.keys(_filter-nulls(map.get($slots, $prefix)));
98
+ $used-m3-tokens: _pick(_filter-nulls($values), $used-token-names);
99
+ $prefix: if($variant == null, $prefix, list.append($prefix, $variant));
100
+ @return map.merge($result, ($prefix: $used-m3-tokens));
101
+ }
102
+
103
+ /// Hardcode the given value, or null if hardcoded values are excluded.
104
+ @function hardcode($value, $exclude-hardcoded) {
105
+ @return if($exclude-hardcoded, null, $value);
106
+ }
107
+
108
+ /// Sets all of the standard typography tokens for the given token base name to the given typography
109
+ /// level.
110
+ /// @param {Map} $systems The MDC system tokens
111
+ /// @param {String} $base-name The token base name to get the typography tokens for
112
+ /// @param {String} $typography-level The typography level to base the token values on
113
+ /// @return {Map} A map containing the typography tokens for the given base token name
114
+ @function generate-typography-tokens($systems, $base-name, $typography-level) {
115
+ $result: ();
116
+ @each $prop in (font, line-height, size, tracking, weight) {
117
+ $result: map.set($result, #{$base-name}-#{$prop},
118
+ map.get($systems, md-sys-typescale, #{$typography-level}-#{$prop}));
119
+ }
120
+ @return $result;
121
+ }
122
+
123
+ /// Maps the values in a map to new values using the given mapping function
124
+ /// @param {Map} $map The maps whose values will be mapped to new values.
125
+ /// @param {Function} $fn The value mapping function.
126
+ /// @param {Map} A new map with its values updated using the mapping function.
127
+ @function map-values($map, $fn) {
128
+ $result: ();
129
+ @each $key, $value in $map {
130
+ $result: map.set($result, $key, meta.call($fn, $value));
131
+ }
132
+ @return $result;
133
+ }
134
+
135
+ /// Renames the keys in a map
136
+ /// @param {Map} $map The map whose keys should be renamed
137
+ /// @param {Map} $rename-keys A map of original key to renamed key to apply to $map
138
+ /// @return {Map} The result of applying the given key renames to the given map.
139
+ @function rename-map-keys($map, $rename-keys) {
140
+ $result: $map;
141
+ @each $old-key-name, $new-key-name in $rename-keys {
142
+ @if map.has-key($map, $old-key-name) {
143
+ $result: map.set($result, $new-key-name, map.get($map, $old-key-name));
144
+ }
145
+ }
146
+ @return $result;
147
+ }
148
+
149
+ /// At the time of writing, some color tokens (e.g. disabled state) are defined as a solid color
150
+ /// token and a separate opacity token. This function applies the opacity to the color and drops the
151
+ /// opacity key from the map. Can be removed once b/213331407 is resolved.
152
+ /// @param {Map} $tokens The map of tokens currently being generated
153
+ /// @param {Map} $all-tokens A map of all tokens, including hardcoded values
154
+ /// @param {List} $pairs Pairs of color token names and their opacities. Should be in the shape of
155
+ /// `((color: 'color-key', opacity: 'opacity-key'))`.
156
+ /// @return {Map} The initial tokens with the combined color values.
157
+ @function combine-color-tokens($tokens, $opacity-lookup, $pairs) {
158
+ $result: $tokens;
159
+
160
+ @each $pair in $pairs {
161
+ $color-key: map.get($pair, color);
162
+ $opacity-key: map.get($pair, opacity);
163
+ $color: map.get($tokens, $color-key);
164
+ $opacity: map.get($opacity-lookup, $opacity-key);
165
+
166
+ @if(meta.type-of($color) == 'color') {
167
+ $result: map.remove($result, $opacity-key);
168
+ $result: map.set($result, $color-key, rgba($color, $opacity));
169
+ }
170
+ @else if($color != null) {
171
+ $result: map.remove($result, $opacity-key);
172
+ $combined-color: #{color-mix(in srgb, #{$color} #{($opacity * 100) + '%'}, transparent)};
173
+ $result: map.set($result, $color-key, $combined-color);
174
+ }
175
+ }
176
+
177
+ @return $result;
178
+ }
179
+
180
+ /// Inherited function from MDC that computes which contrast tone to use on top of a color.
181
+ /// This is used only in a narrow set of use cases when generating M2 button tokens to maintain
182
+ /// backwards compatibility.
183
+ /// @param {Color} $value Color for which we're calculating the contrast tone.
184
+ /// @param {Boolean} $is-dark Whether the current theme is dark.
185
+ /// @return {Map} Either `dark` or `light`.
186
+ @function contrast-tone($value, $is-dark) {
187
+ @if ($value == 'dark') {
188
+ @return 'light';
189
+ }
190
+
191
+ @if ($value == 'light') {
192
+ @return 'dark';
193
+ }
194
+
195
+ // Fallback if the app is using a non-color palette (e.g. CSS variable based).
196
+ @if (meta.type-of($value) != 'color') {
197
+ @return if($is-dark, 'light', 'dark');
198
+ }
199
+
200
+ $minimum-contrast: 3.1;
201
+ $light-contrast: _contrast($value, #fff);
202
+ $dark-contrast: _contrast($value, rgba(0, 0, 0, 0.87));
203
+
204
+ @if ($light-contrast < $minimum-contrast) and ($dark-contrast > $light-contrast) {
205
+ @return 'dark';
206
+ }
207
+
208
+ @return 'light';
209
+ }
210
+
211
+ @function _linear-channel-value($channel-value) {
212
+ $normalized-channel-value: math.div($channel-value, 255);
213
+
214
+ @if ($normalized-channel-value < 0.03928) {
215
+ @return math.div($normalized-channel-value, 12.92);
216
+ }
217
+
218
+ @return math.pow(math.div($normalized-channel-value + 0.055, 1.055), 2.4);
219
+ }
220
+
221
+ // Calculate the luminance for a color.
222
+ // See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
223
+ @function _luminance($color) {
224
+ $red: _linear-channel-value(color.red($color));
225
+ $green: _linear-channel-value(color.green($color));
226
+ $blue: _linear-channel-value(color.blue($color));
227
+
228
+ @return 0.2126 * $red + 0.7152 * $green + 0.0722 * $blue;
229
+ }
230
+
231
+ // Calculate the contrast ratio between two colors.
232
+ // See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
233
+ @function _contrast($back, $front) {
234
+ $back-lum: _luminance($back) + 0.05;
235
+ $fore-lum: _luminance($front) + 0.05;
236
+
237
+ @return math.div(math.max($back-lum, $fore-lum), math.min($back-lum, $fore-lum));
238
+ }
239
+
240
+ /// Picks a submap containing only the given keys out the given map.
241
+ /// @param {Map} $map The map to pick from.
242
+ /// @param {List} $keys The map keys to pick.
243
+ /// @return {Map} A submap containing only the given keys.
244
+ @function _pick($map, $keys) {
245
+ $result: ();
246
+ @each $key in $keys {
247
+ @if map.has-key($map, $key) {
248
+ $result: map.set($result, $key, map.get($map, $key));
249
+ }
250
+ }
251
+ @return $result;
252
+ }
253
+
254
+
255
+ /// Filters keys with a null value out of the map.
256
+ /// @param {Map} $map The map to filter.
257
+ /// @return {Map} The given map with all of the null keys filtered out.
258
+ @function _filter-nulls($map) {
259
+ $result: ();
260
+ @each $key, $val in $map {
261
+ @if $val != null {
262
+ $result: map.set($result, $key, $val);
263
+ }
264
+ }
265
+ @return $result;
266
+ }
@@ -1,56 +1,8 @@
1
1
  @use 'sass:list';
2
2
  @use 'sass:map';
3
- @use 'sass:meta';
4
3
  @use 'sass:string';
5
- @use '@material/tokens/v0_161' as mdc-tokens;
6
4
  @use '../style/elevation';
7
5
  @use '../style/sass-utils';
8
- @use '../m2/palette' as m2-palette;
9
- @use '../m2/theming' as m2-theming;
10
- @use '../m2/typography' as m2-typography;
11
-
12
- // Indicates whether we're building internally. Used for backwards compatibility.
13
- $private-is-internal-build: false;
14
-
15
- $_placeholder-color-palette: m2-theming.define-palette(m2-palette.$red-palette);
16
-
17
- // Placeholder color config that can be passed to token getter functions when generating token
18
- // slots.
19
- $placeholder-color-config: (
20
- primary: $_placeholder-color-palette,
21
- accent: $_placeholder-color-palette,
22
- warn: $_placeholder-color-palette,
23
- is-dark: false,
24
- foreground: m2-palette.$light-theme-foreground-palette,
25
- background: m2-palette.$light-theme-background-palette,
26
- );
27
-
28
- $_placeholder-typography-level-config: m2-typography.typography-config-level-from-mdc(body1);
29
-
30
- // Placeholder typography config that can be passed to token getter functions when generating token
31
- // slots.
32
- $placeholder-typography-config: (
33
- font-family: 'Roboto, sans-serif',
34
- headline-1: $_placeholder-typography-level-config,
35
- headline-2: $_placeholder-typography-level-config,
36
- headline-3: $_placeholder-typography-level-config,
37
- headline-4: $_placeholder-typography-level-config,
38
- headline-5: $_placeholder-typography-level-config,
39
- headline-6: $_placeholder-typography-level-config,
40
- subtitle-1: $_placeholder-typography-level-config,
41
- subtitle-2: $_placeholder-typography-level-config,
42
- body-1: $_placeholder-typography-level-config,
43
- body-2: $_placeholder-typography-level-config,
44
- caption: $_placeholder-typography-level-config,
45
- button: $_placeholder-typography-level-config,
46
- overline: $_placeholder-typography-level-config,
47
- subheading-1: $_placeholder-typography-level-config,
48
- title: $_placeholder-typography-level-config,
49
- );
50
-
51
- // Placeholder density config that can be passed to token getter functions when generating token
52
- // slots.
53
- $placeholder-density-config: 0;
54
6
 
55
7
  $_tokens: null;
56
8
  $_component-prefix: null;
@@ -109,7 +61,7 @@ $_component-prefix: null;
109
61
 
110
62
  // Returns the name of a token including the current prefix. Intended to be used in calculations
111
63
  // involving tokens. `create-token-slot` should be used when outputting tokens.
112
- @function get-token-variable($token) {
64
+ @function get-token-variable-name($token) {
113
65
  @if $_component-prefix == null or $_tokens == null {
114
66
  @error '`get-token-variable` must be used within `use-tokens`';
115
67
  }
@@ -120,10 +72,9 @@ $_component-prefix: null;
120
72
  @return _get-css-variable($_component-prefix, $token);
121
73
  }
122
74
 
123
- // TODO(crisbeto): should be able to replace the usages of `get-token-variable` with this.
124
75
  // Returns a `var()` reference to a specific token. Intended for declarations
125
76
  // where the token has to be referenced as a part of a larger expression.
126
- @function get-token-variable-reference($token, $emit-fallback: false) {
77
+ @function get-token-variable($token, $use-tokens-fallback: false, $fallback: null) {
127
78
  @if $_component-prefix == null or $_tokens == null {
128
79
  @error '`get-token-variable-reference` must be used within `use-tokens`';
129
80
  }
@@ -131,8 +82,11 @@ $_component-prefix: null;
131
82
  @error 'Token #{$token} does not exist. Configured tokens are: #{map.keys($_tokens)}';
132
83
  }
133
84
 
134
- $var: get-token-variable($token);
135
- $fallback: if($emit-fallback, map.get($_tokens, $token), null);
85
+ $var: get-token-variable-name($token);
86
+
87
+ @if ($use-tokens-fallback) {
88
+ $fallback: map.get($_tokens, $token);
89
+ }
136
90
 
137
91
  @if ($fallback != null) {
138
92
  @return var($var, $fallback);
@@ -153,17 +107,6 @@ $_component-prefix: null;
153
107
  }
154
108
  }
155
109
 
156
- /// Gets all the MDC token values for a specific component. This function serves as single
157
- /// point at which we directly reference a specific version of the MDC tokens.
158
- /// @param {String} $component Name of the component for which to get the tokens
159
- /// @param {Map} $systems The MDC system tokens
160
- /// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values
161
- /// @return {List} Map of token names to values
162
- @function get-mdc-tokens($component, $systems, $exclude-hardcoded) {
163
- $fn: meta.get-function($name: 'md-comp-' + $component + '-values', $module: 'mdc-tokens');
164
- @return meta.call($fn, $systems, $exclude-hardcoded);
165
- }
166
-
167
110
  // MDC doesn't currently handle elevation tokens properly. As a temporary workaround we can combine
168
111
  // the elevation and shadow-color tokens into a full box-shadow and use it as the value for the
169
112
  // elevation token.
@@ -257,116 +200,6 @@ $_component-prefix: null;
257
200
  }
258
201
  }
259
202
 
260
- /// Gets the MDC tokens for the given prefix, M3 token values, and supported token slots.
261
- /// @param {List} $prefix The token prefix for the given tokens.
262
- /// @param {Map|(Map, Map)} $values A map of M3 token values for the given prefix.
263
- /// This param may also be a tuple of maps, the first one representing the default M3 token values,
264
- // and the second containing overrides for different color variants.
265
- // Single map example:
266
- // (token1: green, token2: 2px)
267
- // Tuple example:
268
- // (
269
- // (token1: green, token2: 2px),
270
- // (
271
- // secondary: (token1: blue),
272
- // error: (token1: red),
273
- // )
274
- // )
275
- /// @param {Map} $slots A map of token slots, with null value indicating the token is not supported.
276
- /// @param {String|null} $variant The name of the variant the token values are for.
277
- /// @return {Map} A map of fully qualified token names to values, for only the supported tokens.
278
- @function namespace-tokens($prefix, $values, $slots, $variant: null) {
279
- $result: ();
280
- @if $variant == null and meta.type-of($values) == 'list' and list.length($values == 2) {
281
- $variants: list.nth($values, 2);
282
- $values: list.nth($values, 1);
283
- @each $variant, $overrides in $variants {
284
- $result: map.merge($result, namespace-tokens($prefix, $overrides, $slots, $variant));
285
- }
286
- }
287
- $used-token-names: map.keys(_filter-nulls(map.get($slots, $prefix)));
288
- $used-m3-tokens: _pick(_filter-nulls($values), $used-token-names);
289
- $prefix: if($variant == null, $prefix, list.append($prefix, $variant));
290
- @return map.merge($result, ($prefix: $used-m3-tokens));
291
- }
292
-
293
- /// Hardcode the given value, or null if hardcoded values are excluded.
294
- @function hardcode($value, $exclude-hardcoded) {
295
- @return if($exclude-hardcoded, null, $value);
296
- }
297
-
298
- /// Sets all of the standard typography tokens for the given token base name to the given typography
299
- /// level.
300
- /// @param {Map} $systems The MDC system tokens
301
- /// @param {String} $base-name The token base name to get the typography tokens for
302
- /// @param {String} $typography-level The typography level to base the token values on
303
- /// @return {Map} A map containing the typography tokens for the given base token name
304
- @function generate-typography-tokens($systems, $base-name, $typography-level) {
305
- $result: ();
306
- @each $prop in (font, line-height, size, tracking, weight) {
307
- $result: map.set($result, #{$base-name}-#{$prop},
308
- map.get($systems, md-sys-typescale, #{$typography-level}-#{$prop}));
309
- }
310
- @return $result;
311
- }
312
-
313
- /// Maps the values in a map to new values using the given mapping function
314
- /// @param {Map} $map The maps whose values will be mapped to new values.
315
- /// @param {Function} $fn The value mapping function.
316
- /// @param {Map} A new map with its values updated using the mapping function.
317
- @function map-values($map, $fn) {
318
- $result: ();
319
- @each $key, $value in $map {
320
- $result: map.set($result, $key, meta.call($fn, $value));
321
- }
322
- @return $result;
323
- }
324
-
325
- /// Renames the keys in a map
326
- /// @param {Map} $map The map whose keys should be renamed
327
- /// @param {Map} $rename-keys A map of original key to renamed key to apply to $map
328
- /// @return {Map} The result of applying the given key renames to the given map.
329
- @function rename-map-keys($map, $rename-keys) {
330
- $result: $map;
331
- @each $old-key-name, $new-key-name in $rename-keys {
332
- @if map.has-key($map, $old-key-name) {
333
- $result: map.set($result, $new-key-name, map.get($map, $old-key-name));
334
- }
335
- }
336
- @return $result;
337
- }
338
-
339
- /// At the time of writing, some color tokens (e.g. disabled state) are defined as a solid color
340
- /// token and a separate opacity token. This function applies the opacity to the color and drops the
341
- /// opacity key from the map. Can be removed once b/213331407 is resolved.
342
- /// @param {Map} $tokens The map of tokens currently being generated
343
- /// @param {Map} $all-tokens A map of all tokens, including hardcoded values
344
- /// @param {List} $pairs Pairs of color token names and their opacities. Should be in the shape of
345
- /// `((color: 'color-key', opacity: 'opacity-key'))`.
346
- /// @return {Map} The initial tokens with the combined color values.
347
- @function combine-color-tokens($tokens, $opacity-lookup, $pairs) {
348
- $result: $tokens;
349
-
350
- @each $pair in $pairs {
351
- $color-key: map.get($pair, color);
352
- $opacity-key: map.get($pair, opacity);
353
- $color: map.get($tokens, $color-key);
354
- $opacity: map.get($opacity-lookup, $opacity-key);
355
-
356
- @if(meta.type-of($color) == 'color') {
357
- $result: map.remove($result, $opacity-key);
358
- $result: map.set($result, $color-key, rgba($color, $opacity));
359
- }
360
- @else if($color != null) {
361
- $result: map.remove($result, $opacity-key);
362
- $combined-color: #{color-mix(in srgb, #{$color} #{($opacity * 100) + '%'}, transparent)};
363
- $result: map.set($result, $color-key, $combined-color);
364
- }
365
- }
366
-
367
- @return $result;
368
- }
369
-
370
203
  /// Verifies that the token overrides exist and are used in one of the given token maps.
371
204
  @mixin _validate-token-overrides($overrides: (), $token-maps) {
372
205
  $valid-token-names: ();
@@ -388,31 +221,3 @@ $_component-prefix: null;
388
221
  }
389
222
  }
390
223
  }
391
-
392
- /// Picks a submap containing only the given keys out the given map.
393
- /// @param {Map} $map The map to pick from.
394
- /// @param {List} $keys The map keys to pick.
395
- /// @return {Map} A submap containing only the given keys.
396
- @function _pick($map, $keys) {
397
- $result: ();
398
- @each $key in $keys {
399
- @if map.has-key($map, $key) {
400
- $result: map.set($result, $key, map.get($map, $key));
401
- }
402
- }
403
- @return $result;
404
- }
405
-
406
-
407
- /// Filters keys with a null value out of the map.
408
- /// @param {Map} $map The map to filter.
409
- /// @return {Map} The given map with all of the null keys filtered out.
410
- @function _filter-nulls($map) {
411
- $result: ();
412
- @each $key, $val in $map {
413
- @if $val != null {
414
- $result: map.set($result, $key, $val);
415
- }
416
- }
417
- @return $result;
418
- }
@@ -1,5 +1,5 @@
1
1
  @use 'sass:map';
2
- @use '../../token-utils';
2
+ @use '../../token-definition';
3
3
  @use '../../../theming/inspection';
4
4
  @use '../../../style/sass-utils';
5
5
  @use '../../../style/elevation';
@@ -45,8 +45,8 @@ $prefix: (mat, app);
45
45
  @function get-token-slots() {
46
46
  @return sass-utils.deep-merge-all(
47
47
  get-unthemable-tokens(),
48
- get-color-tokens(token-utils.$placeholder-color-config),
49
- get-typography-tokens(token-utils.$placeholder-typography-config),
50
- get-density-tokens(token-utils.$placeholder-density-config)
48
+ get-color-tokens(token-definition.$placeholder-color-config),
49
+ get-typography-tokens(token-definition.$placeholder-typography-config),
50
+ get-density-tokens(token-definition.$placeholder-density-config)
51
51
  );
52
52
  }
@@ -1,4 +1,4 @@
1
- @use '../../token-utils';
1
+ @use '../../token-definition';
2
2
  @use '../../../theming/inspection';
3
3
  @use '../../../style/elevation';
4
4
  @use '../../../style/sass-utils';
@@ -37,8 +37,8 @@ $prefix: (mat, autocomplete);
37
37
  @function get-token-slots() {
38
38
  @return sass-utils.deep-merge-all(
39
39
  get-unthemable-tokens(),
40
- get-color-tokens(token-utils.$placeholder-color-config),
41
- get-typography-tokens(token-utils.$placeholder-typography-config),
42
- get-density-tokens(token-utils.$placeholder-density-config)
40
+ get-color-tokens(token-definition.$placeholder-color-config),
41
+ get-typography-tokens(token-definition.$placeholder-typography-config),
42
+ get-density-tokens(token-definition.$placeholder-density-config)
43
43
  );
44
44
  }
@@ -2,7 +2,7 @@
2
2
  @use 'sass:map';
3
3
  @use 'sass:math';
4
4
  @use 'sass:color';
5
- @use '../../token-utils';
5
+ @use '../../token-definition';
6
6
  @use '../../../theming/inspection';
7
7
  @use '../../../style/sass-utils';
8
8
 
@@ -94,8 +94,8 @@ $prefix: (mat, badge);
94
94
  @function get-token-slots() {
95
95
  @return sass-utils.deep-merge-all(
96
96
  get-unthemable-tokens(),
97
- get-color-tokens(token-utils.$placeholder-color-config),
98
- get-typography-tokens(token-utils.$placeholder-typography-config),
99
- get-density-tokens(token-utils.$placeholder-density-config)
97
+ get-color-tokens(token-definition.$placeholder-color-config),
98
+ get-typography-tokens(token-definition.$placeholder-typography-config),
99
+ get-density-tokens(token-definition.$placeholder-density-config)
100
100
  );
101
101
  }
@@ -1,4 +1,4 @@
1
- @use '../../token-utils';
1
+ @use '../../token-definition';
2
2
  @use '../../../theming/inspection';
3
3
  @use '../../../style/sass-utils';
4
4
 
@@ -43,8 +43,8 @@ $prefix: (mat, bottom-sheet);
43
43
  @function get-token-slots() {
44
44
  @return sass-utils.deep-merge-all(
45
45
  get-unthemable-tokens(),
46
- get-color-tokens(token-utils.$placeholder-color-config),
47
- get-typography-tokens(token-utils.$placeholder-typography-config),
48
- get-density-tokens(token-utils.$placeholder-density-config)
46
+ get-color-tokens(token-definition.$placeholder-color-config),
47
+ get-typography-tokens(token-definition.$placeholder-typography-config),
48
+ get-density-tokens(token-definition.$placeholder-density-config)
49
49
  );
50
50
  }
@@ -1,4 +1,4 @@
1
- @use '../../token-utils';
1
+ @use '../../token-definition';
2
2
  @use '../../../theming/inspection';
3
3
  @use '../../../style/sass-utils';
4
4
 
@@ -55,8 +55,8 @@ $prefix: (mat, card);
55
55
  @function get-token-slots() {
56
56
  @return sass-utils.deep-merge-all(
57
57
  get-unthemable-tokens(),
58
- get-color-tokens(token-utils.$placeholder-color-config),
59
- get-typography-tokens(token-utils.$placeholder-typography-config),
60
- get-density-tokens(token-utils.$placeholder-density-config)
58
+ get-color-tokens(token-definition.$placeholder-color-config),
59
+ get-typography-tokens(token-definition.$placeholder-typography-config),
60
+ get-density-tokens(token-definition.$placeholder-density-config)
61
61
  );
62
62
  }
@@ -1,4 +1,4 @@
1
- @use '../../token-utils';
1
+ @use '../../token-definition';
2
2
  @use '../../../theming/theming';
3
3
  @use '../../../theming/inspection';
4
4
  @use '../../../style/sass-utils';
@@ -43,8 +43,8 @@ $prefix: (mat, checkbox);
43
43
  @function get-token-slots() {
44
44
  @return sass-utils.deep-merge-all(
45
45
  get-unthemable-tokens(),
46
- get-color-tokens(token-utils.$placeholder-color-config),
47
- get-typography-tokens(token-utils.$placeholder-typography-config),
48
- get-density-tokens(token-utils.$placeholder-density-config)
46
+ get-color-tokens(token-definition.$placeholder-color-config),
47
+ get-typography-tokens(token-definition.$placeholder-typography-config),
48
+ get-density-tokens(token-definition.$placeholder-density-config)
49
49
  );
50
50
  }
@@ -1,5 +1,5 @@
1
1
  @use 'sass:map';
2
- @use '../../token-utils';
2
+ @use '../../token-definition';
3
3
  @use '../../../theming/inspection';
4
4
  @use '../../../style/sass-utils';
5
5
  @use '../../../m2/palette' as m2-palette;
@@ -56,8 +56,8 @@ $prefix: (mat, chip);
56
56
  @function get-token-slots() {
57
57
  @return sass-utils.deep-merge-all(
58
58
  get-unthemable-tokens(),
59
- get-color-tokens(token-utils.$placeholder-color-config),
60
- get-typography-tokens(token-utils.$placeholder-typography-config),
61
- get-density-tokens(token-utils.$placeholder-density-config)
59
+ get-color-tokens(token-definition.$placeholder-color-config),
60
+ get-typography-tokens(token-definition.$placeholder-typography-config),
61
+ get-density-tokens(token-definition.$placeholder-density-config)
62
62
  );
63
63
  }
@@ -1,7 +1,7 @@
1
1
  @use 'sass:color';
2
2
  @use 'sass:meta';
3
3
  @use 'sass:math';
4
- @use '../../token-utils';
4
+ @use '../../token-definition';
5
5
  @use '../../../theming/inspection';
6
6
  @use '../../../style/elevation';
7
7
  @use '../../../style/sass-utils';
@@ -175,8 +175,8 @@ $private-default-overlap-color: #a8dab5;
175
175
  @function get-token-slots() {
176
176
  @return sass-utils.deep-merge-all(
177
177
  get-unthemable-tokens(),
178
- get-color-tokens(token-utils.$placeholder-color-config),
179
- get-typography-tokens(token-utils.$placeholder-typography-config),
180
- get-density-tokens(token-utils.$placeholder-density-config)
178
+ get-color-tokens(token-definition.$placeholder-color-config),
179
+ get-typography-tokens(token-definition.$placeholder-typography-config),
180
+ get-density-tokens(token-definition.$placeholder-density-config)
181
181
  );
182
182
  }