@angular/material 18.0.0-next.5 → 18.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/_index.scss +67 -60
  2. package/autocomplete/_autocomplete-theme.scss +7 -0
  3. package/badge/_badge-theme.scss +9 -0
  4. package/bottom-sheet/_bottom-sheet-theme.scss +7 -0
  5. package/button/_button-theme.scss +25 -0
  6. package/button/_fab-theme.scss +13 -0
  7. package/button/_icon-button-theme.scss +8 -0
  8. package/button-toggle/_button-toggle-theme.scss +12 -0
  9. package/card/_card-theme.scss +9 -0
  10. package/checkbox/_checkbox-theme.scss +2 -4
  11. package/chips/_chips-theme.scss +10 -0
  12. package/core/_core-theme.scss +17 -0
  13. package/core/m2/_index.scss +52 -0
  14. package/core/m2/_theming.scss +295 -0
  15. package/core/{typography/_property-getters.scss → m2/_typography-utils.scss} +14 -0
  16. package/core/{typography/_definition.scss → m2/_typography.scss} +1 -1
  17. package/core/option/_optgroup-theme.scss +7 -0
  18. package/core/option/_option-theme.scss +9 -0
  19. package/core/ripple/_ripple-theme.scss +7 -0
  20. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +13 -0
  21. package/core/style/_sass-utils.scss +14 -1
  22. package/core/theming/_color-api-backwards-compatibility.scss +128 -0
  23. package/core/theming/_config-validation.scss +173 -0
  24. package/core/theming/_definition.scss +113 -0
  25. package/core/theming/_m2-inspection.scss +23 -22
  26. package/core/theming/_palettes.scss +947 -0
  27. package/core/theming/_theming-deprecated.scss +9 -9
  28. package/core/theming/_theming.scss +73 -339
  29. package/core/tokens/_density.scss +191 -0
  30. package/core/tokens/_format-tokens.scss +5 -0
  31. package/core/tokens/_m3-tokens.scss +382 -0
  32. package/core/tokens/_token-utils.scss +179 -42
  33. package/core/tokens/m2/mat/_chip.scss +3 -3
  34. package/core/tokens/m2/mat/_form-field.scss +3 -3
  35. package/core/tokens/m2/mat/_switch.scss +1 -0
  36. package/core/tokens/m2/mdc/_checkbox.scss +3 -2
  37. package/core/tokens/m2/mdc/_chip.scss +3 -3
  38. package/core/tokens/m2/mdc/_radio.scss +3 -2
  39. package/core/tokens/m3/_index.scss +161 -0
  40. package/core/tokens/m3/mat/_app.scss +19 -0
  41. package/core/tokens/m3/mat/_autocomplete.scss +22 -0
  42. package/core/tokens/m3/mat/_badge.scss +77 -0
  43. package/core/tokens/m3/mat/_bottom-sheet.scss +24 -0
  44. package/core/tokens/m3/mat/_card.scss +24 -0
  45. package/core/tokens/m3/mat/_checkbox.scss +21 -0
  46. package/core/tokens/m3/mat/_chip.scss +46 -0
  47. package/core/tokens/m3/mat/_datepicker.scss +123 -0
  48. package/core/tokens/m3/mat/_dialog.scss +30 -0
  49. package/core/tokens/m3/mat/_divider.scss +19 -0
  50. package/core/tokens/m3/mat/_expansion.scss +41 -0
  51. package/core/tokens/m3/mat/_fab-small.scss +50 -0
  52. package/core/tokens/m3/mat/_fab.scss +50 -0
  53. package/core/tokens/m3/mat/_filled-button.scss +54 -0
  54. package/core/tokens/m3/mat/_form-field.scss +59 -0
  55. package/core/tokens/m3/mat/_full-pseudo-checkbox.scss +42 -0
  56. package/core/tokens/m3/mat/_grid-list.scss +21 -0
  57. package/core/tokens/m3/mat/_icon-button.scss +27 -0
  58. package/core/tokens/m3/mat/_icon.scss +33 -0
  59. package/core/tokens/m3/mat/_list.scss +19 -0
  60. package/core/tokens/m3/mat/_menu.scss +42 -0
  61. package/core/tokens/m3/mat/_minimal-pseudo-checkbox.scss +33 -0
  62. package/core/tokens/m3/mat/_optgroup.scss +22 -0
  63. package/core/tokens/m3/mat/_option.scss +55 -0
  64. package/core/tokens/m3/mat/_outlined-button.scss +54 -0
  65. package/core/tokens/m3/mat/_paginator.scss +27 -0
  66. package/core/tokens/m3/mat/_protected-button.scss +55 -0
  67. package/core/tokens/m3/mat/_radio.scss +34 -0
  68. package/core/tokens/m3/mat/_ripple.scss +19 -0
  69. package/core/tokens/m3/mat/_select.scss +46 -0
  70. package/core/tokens/m3/mat/_sidenav.scss +28 -0
  71. package/core/tokens/m3/mat/_slider.scss +56 -0
  72. package/core/tokens/m3/mat/_snack-bar.scss +18 -0
  73. package/core/tokens/m3/mat/_sort.scss +18 -0
  74. package/core/tokens/m3/mat/_standard-button-toggle.scss +57 -0
  75. package/core/tokens/m3/mat/_stepper.scss +79 -0
  76. package/core/tokens/m3/mat/_switch.scss +45 -0
  77. package/core/tokens/m3/mat/_tab-header.scss +51 -0
  78. package/core/tokens/m3/mat/_table.scss +28 -0
  79. package/core/tokens/m3/mat/_text-button.scss +55 -0
  80. package/core/tokens/m3/mat/_toolbar.scss +23 -0
  81. package/core/tokens/m3/mat/_tree.scss +22 -0
  82. package/core/tokens/m3/mdc/_checkbox.scss +110 -0
  83. package/core/tokens/m3/mdc/_chip.scss +91 -0
  84. package/core/tokens/m3/mdc/_circular-progress.scss +29 -0
  85. package/core/tokens/m3/mdc/_dialog.scss +39 -0
  86. package/core/tokens/m3/mdc/_elevated-card.scss +15 -0
  87. package/core/tokens/m3/mdc/_extended-fab.scss +21 -0
  88. package/core/tokens/m3/mdc/_fab-small.scss +21 -0
  89. package/core/tokens/m3/mdc/_fab.scss +21 -0
  90. package/core/tokens/m3/mdc/_filled-button.scss +86 -0
  91. package/core/tokens/m3/mdc/_filled-text-field.scss +92 -0
  92. package/core/tokens/m3/mdc/_form-field.scss +25 -0
  93. package/core/tokens/m3/mdc/_icon-button.scss +39 -0
  94. package/core/tokens/m3/mdc/_linear-progress.scss +32 -0
  95. package/core/tokens/m3/mdc/_list.scss +37 -0
  96. package/core/tokens/m3/mdc/_outlined-button.scss +83 -0
  97. package/core/tokens/m3/mdc/_outlined-card.scss +15 -0
  98. package/core/tokens/m3/mdc/_outlined-text-field.scss +85 -0
  99. package/core/tokens/m3/mdc/_plain-tooltip.scss +15 -0
  100. package/core/tokens/m3/mdc/_protected-button.scss +84 -0
  101. package/core/tokens/m3/mdc/_radio.scss +46 -0
  102. package/core/tokens/m3/mdc/_slider.scss +61 -0
  103. package/core/tokens/m3/mdc/_snack-bar.scss +15 -0
  104. package/core/tokens/m3/mdc/_switch.scss +70 -0
  105. package/core/tokens/m3/mdc/_tab-indicator.scss +33 -0
  106. package/core/tokens/m3/mdc/_tab.scss +15 -0
  107. package/core/tokens/m3/mdc/_text-button.scss +79 -0
  108. package/core/typography/_all-typography.scss +3 -2
  109. package/core/typography/_typography-utils.scss +0 -26
  110. package/core/typography/_typography.scss +0 -2
  111. package/core/typography/_versioning.scss +3 -3
  112. package/datepicker/_datepicker-theme.scss +9 -0
  113. package/datepicker/index.d.ts +5 -0
  114. package/dialog/_dialog-theme.scss +8 -0
  115. package/dialog/index.d.ts +4 -3
  116. package/divider/_divider-theme.scss +7 -0
  117. package/esm2022/autocomplete/autocomplete-origin.mjs +3 -3
  118. package/esm2022/autocomplete/autocomplete-trigger.mjs +3 -3
  119. package/esm2022/autocomplete/autocomplete.mjs +3 -3
  120. package/esm2022/autocomplete/module.mjs +4 -4
  121. package/esm2022/badge/badge-module.mjs +4 -4
  122. package/esm2022/badge/badge.mjs +6 -6
  123. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +3 -3
  124. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +4 -4
  125. package/esm2022/bottom-sheet/bottom-sheet.mjs +3 -3
  126. package/esm2022/button/button-base.mjs +6 -6
  127. package/esm2022/button/button.mjs +6 -6
  128. package/esm2022/button/fab.mjs +12 -12
  129. package/esm2022/button/icon-button.mjs +6 -6
  130. package/esm2022/button/module.mjs +4 -4
  131. package/esm2022/button-toggle/button-toggle-module.mjs +4 -4
  132. package/esm2022/button-toggle/button-toggle.mjs +6 -6
  133. package/esm2022/card/card.mjs +42 -42
  134. package/esm2022/card/module.mjs +4 -4
  135. package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
  136. package/esm2022/checkbox/checkbox.mjs +3 -3
  137. package/esm2022/checkbox/module.mjs +8 -8
  138. package/esm2022/chips/chip-action.mjs +3 -3
  139. package/esm2022/chips/chip-edit-input.mjs +3 -3
  140. package/esm2022/chips/chip-grid.mjs +3 -3
  141. package/esm2022/chips/chip-icons.mjs +9 -9
  142. package/esm2022/chips/chip-input.mjs +3 -3
  143. package/esm2022/chips/chip-listbox.mjs +3 -3
  144. package/esm2022/chips/chip-option.mjs +3 -3
  145. package/esm2022/chips/chip-row.mjs +3 -3
  146. package/esm2022/chips/chip-set.mjs +3 -3
  147. package/esm2022/chips/chip.mjs +3 -3
  148. package/esm2022/chips/module.mjs +4 -4
  149. package/esm2022/core/common-behaviors/common-module.mjs +4 -4
  150. package/esm2022/core/datetime/index.mjs +8 -8
  151. package/esm2022/core/datetime/native-date-adapter.mjs +3 -3
  152. package/esm2022/core/error/error-options.mjs +6 -6
  153. package/esm2022/core/internal-form-field/internal-form-field.mjs +3 -3
  154. package/esm2022/core/line/line.mjs +7 -7
  155. package/esm2022/core/option/index.mjs +4 -4
  156. package/esm2022/core/option/optgroup.mjs +3 -3
  157. package/esm2022/core/option/option.mjs +3 -3
  158. package/esm2022/core/private/ripple-loader.mjs +3 -3
  159. package/esm2022/core/ripple/index.mjs +4 -4
  160. package/esm2022/core/ripple/ripple.mjs +3 -3
  161. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +4 -4
  162. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  163. package/esm2022/core/version.mjs +1 -1
  164. package/esm2022/datepicker/calendar-body.mjs +3 -3
  165. package/esm2022/datepicker/calendar.mjs +6 -6
  166. package/esm2022/datepicker/date-range-input-parts.mjs +9 -9
  167. package/esm2022/datepicker/date-range-input.mjs +9 -4
  168. package/esm2022/datepicker/date-range-picker.mjs +3 -3
  169. package/esm2022/datepicker/date-range-selection-strategy.mjs +3 -3
  170. package/esm2022/datepicker/date-selection-model.mjs +9 -9
  171. package/esm2022/datepicker/datepicker-actions.mjs +9 -9
  172. package/esm2022/datepicker/datepicker-base.mjs +6 -6
  173. package/esm2022/datepicker/datepicker-input-base.mjs +3 -3
  174. package/esm2022/datepicker/datepicker-input.mjs +3 -3
  175. package/esm2022/datepicker/datepicker-intl.mjs +3 -3
  176. package/esm2022/datepicker/datepicker-module.mjs +4 -4
  177. package/esm2022/datepicker/datepicker-toggle.mjs +6 -6
  178. package/esm2022/datepicker/datepicker.mjs +3 -3
  179. package/esm2022/datepicker/month-view.mjs +3 -3
  180. package/esm2022/datepicker/multi-year-view.mjs +3 -3
  181. package/esm2022/datepicker/year-view.mjs +3 -3
  182. package/esm2022/dialog/dialog-container.mjs +3 -3
  183. package/esm2022/dialog/dialog-content-directives.mjs +19 -16
  184. package/esm2022/dialog/dialog.mjs +3 -3
  185. package/esm2022/dialog/module.mjs +4 -4
  186. package/esm2022/divider/divider-module.mjs +4 -4
  187. package/esm2022/divider/divider.mjs +3 -3
  188. package/esm2022/expansion/accordion.mjs +3 -3
  189. package/esm2022/expansion/expansion-module.mjs +4 -4
  190. package/esm2022/expansion/expansion-panel-content.mjs +3 -3
  191. package/esm2022/expansion/expansion-panel-header.mjs +9 -9
  192. package/esm2022/expansion/expansion-panel.mjs +6 -6
  193. package/esm2022/form-field/directives/error.mjs +3 -3
  194. package/esm2022/form-field/directives/floating-label.mjs +3 -3
  195. package/esm2022/form-field/directives/hint.mjs +3 -3
  196. package/esm2022/form-field/directives/label.mjs +3 -3
  197. package/esm2022/form-field/directives/line-ripple.mjs +3 -3
  198. package/esm2022/form-field/directives/notched-outline.mjs +3 -3
  199. package/esm2022/form-field/directives/prefix.mjs +3 -3
  200. package/esm2022/form-field/directives/suffix.mjs +3 -3
  201. package/esm2022/form-field/form-field-control.mjs +4 -4
  202. package/esm2022/form-field/form-field.mjs +6 -6
  203. package/esm2022/form-field/module.mjs +4 -4
  204. package/esm2022/grid-list/grid-list-module.mjs +4 -4
  205. package/esm2022/grid-list/grid-list.mjs +3 -3
  206. package/esm2022/grid-list/grid-tile.mjs +15 -15
  207. package/esm2022/icon/icon-module.mjs +4 -4
  208. package/esm2022/icon/icon-registry.mjs +3 -3
  209. package/esm2022/icon/icon.mjs +3 -3
  210. package/esm2022/icon/testing/fake-icon-registry.mjs +7 -7
  211. package/esm2022/input/input.mjs +3 -3
  212. package/esm2022/input/module.mjs +4 -4
  213. package/esm2022/list/action-list.mjs +3 -3
  214. package/esm2022/list/list-base.mjs +6 -6
  215. package/esm2022/list/list-item-sections.mjs +18 -18
  216. package/esm2022/list/list-module.mjs +4 -4
  217. package/esm2022/list/list-option.mjs +3 -3
  218. package/esm2022/list/list.mjs +6 -6
  219. package/esm2022/list/nav-list.mjs +3 -3
  220. package/esm2022/list/selection-list.mjs +3 -3
  221. package/esm2022/list/subheader.mjs +3 -3
  222. package/esm2022/menu/menu-content.mjs +3 -3
  223. package/esm2022/menu/menu-item.mjs +3 -3
  224. package/esm2022/menu/menu-trigger.mjs +3 -3
  225. package/esm2022/menu/menu.mjs +3 -3
  226. package/esm2022/menu/module.mjs +4 -4
  227. package/esm2022/paginator/module.mjs +4 -4
  228. package/esm2022/paginator/paginator-intl.mjs +3 -3
  229. package/esm2022/paginator/paginator.mjs +3 -3
  230. package/esm2022/progress-bar/module.mjs +4 -4
  231. package/esm2022/progress-bar/progress-bar.mjs +5 -5
  232. package/esm2022/progress-spinner/module.mjs +4 -4
  233. package/esm2022/progress-spinner/progress-spinner.mjs +3 -3
  234. package/esm2022/radio/module.mjs +4 -4
  235. package/esm2022/radio/radio.mjs +6 -6
  236. package/esm2022/select/module.mjs +4 -4
  237. package/esm2022/select/select.mjs +12 -7
  238. package/esm2022/sidenav/drawer.mjs +9 -9
  239. package/esm2022/sidenav/sidenav-module.mjs +4 -4
  240. package/esm2022/sidenav/sidenav.mjs +9 -9
  241. package/esm2022/slide-toggle/module.mjs +8 -8
  242. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +3 -3
  243. package/esm2022/slide-toggle/slide-toggle.mjs +6 -6
  244. package/esm2022/slider/module.mjs +4 -4
  245. package/esm2022/slider/slider-input.mjs +6 -6
  246. package/esm2022/slider/slider-thumb.mjs +3 -3
  247. package/esm2022/slider/slider.mjs +3 -3
  248. package/esm2022/snack-bar/module.mjs +4 -4
  249. package/esm2022/snack-bar/simple-snack-bar.mjs +3 -3
  250. package/esm2022/snack-bar/snack-bar-container.mjs +3 -3
  251. package/esm2022/snack-bar/snack-bar-content.mjs +9 -9
  252. package/esm2022/snack-bar/snack-bar.mjs +3 -3
  253. package/esm2022/sort/sort-header-intl.mjs +3 -3
  254. package/esm2022/sort/sort-header.mjs +3 -3
  255. package/esm2022/sort/sort-module.mjs +4 -4
  256. package/esm2022/sort/sort.mjs +3 -3
  257. package/esm2022/stepper/step-content.mjs +3 -3
  258. package/esm2022/stepper/step-header.mjs +3 -3
  259. package/esm2022/stepper/step-label.mjs +3 -3
  260. package/esm2022/stepper/stepper-button.mjs +6 -6
  261. package/esm2022/stepper/stepper-icon.mjs +3 -3
  262. package/esm2022/stepper/stepper-intl.mjs +3 -3
  263. package/esm2022/stepper/stepper-module.mjs +4 -4
  264. package/esm2022/stepper/stepper.mjs +6 -6
  265. package/esm2022/table/cell.mjs +21 -21
  266. package/esm2022/table/module.mjs +4 -4
  267. package/esm2022/table/row.mjs +21 -21
  268. package/esm2022/table/table.mjs +6 -6
  269. package/esm2022/table/text-column.mjs +3 -3
  270. package/esm2022/tabs/ink-bar.mjs +3 -3
  271. package/esm2022/tabs/module.mjs +4 -4
  272. package/esm2022/tabs/paginated-tab-header.mjs +3 -3
  273. package/esm2022/tabs/tab-body.mjs +6 -6
  274. package/esm2022/tabs/tab-content.mjs +3 -3
  275. package/esm2022/tabs/tab-group.mjs +3 -3
  276. package/esm2022/tabs/tab-header.mjs +3 -3
  277. package/esm2022/tabs/tab-label-wrapper.mjs +3 -3
  278. package/esm2022/tabs/tab-label.mjs +3 -3
  279. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +9 -9
  280. package/esm2022/tabs/tab.mjs +3 -3
  281. package/esm2022/toolbar/toolbar-module.mjs +4 -4
  282. package/esm2022/toolbar/toolbar.mjs +6 -6
  283. package/esm2022/tooltip/module.mjs +4 -4
  284. package/esm2022/tooltip/tooltip.mjs +6 -6
  285. package/esm2022/tree/node.mjs +9 -9
  286. package/esm2022/tree/outlet.mjs +3 -3
  287. package/esm2022/tree/padding.mjs +3 -3
  288. package/esm2022/tree/toggle.mjs +3 -3
  289. package/esm2022/tree/tree-module.mjs +4 -4
  290. package/esm2022/tree/tree.mjs +3 -3
  291. package/expansion/_expansion-theme.scss +7 -0
  292. package/fesm2022/autocomplete.mjs +13 -13
  293. package/fesm2022/badge.mjs +10 -10
  294. package/fesm2022/bottom-sheet.mjs +10 -10
  295. package/fesm2022/button-toggle.mjs +10 -10
  296. package/fesm2022/button.mjs +34 -34
  297. package/fesm2022/card.mjs +46 -46
  298. package/fesm2022/checkbox.mjs +14 -14
  299. package/fesm2022/chips.mjs +40 -40
  300. package/fesm2022/core.mjs +59 -59
  301. package/fesm2022/core.mjs.map +1 -1
  302. package/fesm2022/datepicker.mjs +87 -82
  303. package/fesm2022/datepicker.mjs.map +1 -1
  304. package/fesm2022/dialog.mjs +28 -25
  305. package/fesm2022/dialog.mjs.map +1 -1
  306. package/fesm2022/divider.mjs +7 -7
  307. package/fesm2022/expansion.mjs +25 -25
  308. package/fesm2022/form-field.mjs +36 -36
  309. package/fesm2022/form-field.mjs.map +1 -1
  310. package/fesm2022/grid-list.mjs +22 -22
  311. package/fesm2022/icon/testing.mjs +7 -7
  312. package/fesm2022/icon.mjs +10 -10
  313. package/fesm2022/input.mjs +7 -7
  314. package/fesm2022/list.mjs +49 -49
  315. package/fesm2022/menu.mjs +16 -16
  316. package/fesm2022/paginator.mjs +10 -10
  317. package/fesm2022/progress-bar.mjs +8 -8
  318. package/fesm2022/progress-bar.mjs.map +1 -1
  319. package/fesm2022/progress-spinner.mjs +7 -7
  320. package/fesm2022/radio.mjs +10 -10
  321. package/fesm2022/select.mjs +15 -10
  322. package/fesm2022/select.mjs.map +1 -1
  323. package/fesm2022/sidenav.mjs +22 -22
  324. package/fesm2022/slide-toggle.mjs +16 -16
  325. package/fesm2022/slide-toggle.mjs.map +1 -1
  326. package/fesm2022/slider.mjs +16 -16
  327. package/fesm2022/snack-bar.mjs +22 -22
  328. package/fesm2022/sort.mjs +13 -13
  329. package/fesm2022/stepper.mjs +31 -31
  330. package/fesm2022/table.mjs +55 -55
  331. package/fesm2022/tabs.mjs +43 -43
  332. package/fesm2022/toolbar.mjs +10 -10
  333. package/fesm2022/tooltip.mjs +10 -10
  334. package/fesm2022/tree.mjs +25 -25
  335. package/form-field/_form-field-theme.scss +15 -0
  336. package/form-field/index.d.ts +6 -0
  337. package/grid-list/_grid-list-theme.scss +7 -0
  338. package/icon/_icon-theme.scss +9 -0
  339. package/input/_input-theme.scss +8 -0
  340. package/list/_list-theme.scss +8 -0
  341. package/menu/_menu-theme.scss +7 -0
  342. package/package.json +3 -2
  343. package/paginator/_paginator-theme.scss +7 -0
  344. package/prebuilt-themes/azure-blue.css +1 -1
  345. package/prebuilt-themes/cyan-orange.css +1 -1
  346. package/prebuilt-themes/deeppurple-amber.css +1 -1
  347. package/prebuilt-themes/indigo-pink.css +1 -1
  348. package/prebuilt-themes/magenta-violet.css +1 -1
  349. package/prebuilt-themes/pink-bluegrey.css +1 -1
  350. package/prebuilt-themes/purple-green.css +1 -1
  351. package/prebuilt-themes/rose-red.css +1 -1
  352. package/progress-bar/_progress-bar-theme.scss +11 -0
  353. package/progress-spinner/_progress-spinner-theme.scss +11 -0
  354. package/radio/_radio-theme.scss +10 -0
  355. package/schematics/ng-add/index.js +1 -1
  356. package/schematics/ng-add/index.mjs +1 -1
  357. package/schematics/ng-add/theming/create-custom-theme.js +5 -6
  358. package/schematics/ng-add/theming/create-custom-theme.mjs +5 -6
  359. package/schematics/ng-generate/m3-theme/index_bundled.js +4 -4
  360. package/schematics/ng-generate/m3-theme/index_bundled.js.map +1 -1
  361. package/schematics/ng-update/index_bundled.js +240 -26
  362. package/schematics/ng-update/index_bundled.js.map +4 -4
  363. package/select/_select-theme.scss +9 -0
  364. package/select/index.d.ts +5 -0
  365. package/sidenav/_sidenav-theme.scss +7 -0
  366. package/slide-toggle/_slide-toggle-theme.scss +11 -0
  367. package/slider/_slider-theme.scss +10 -0
  368. package/snack-bar/_snack-bar-theme.scss +10 -0
  369. package/sort/_sort-theme.scss +7 -0
  370. package/stepper/_stepper-theme.scss +9 -0
  371. package/table/_table-theme.scss +7 -0
  372. package/tabs/_tabs-theme.scss +20 -0
  373. package/toolbar/_toolbar-theme.scss +9 -0
  374. package/tooltip/_tooltip-theme.scss +8 -0
  375. package/tree/_tree-theme.scss +7 -0
  376. /package/core/{theming → m2}/_palette.scss +0 -0
@@ -0,0 +1,173 @@
1
+ @use 'sass:list';
2
+ @use 'sass:map';
3
+ @use 'sass:meta';
4
+ @use 'sass:string';
5
+ @use '../style/validation';
6
+ @use './palettes';
7
+
8
+ /// Creates an error message by finding `$config` in the existing message and appending a suffix to
9
+ /// it.
10
+ /// @param {List|String} $err The error message.
11
+ /// @param {String} $suffix The suffix to add.
12
+ /// @return {List|String} The updated error message.
13
+ @function _create-dollar-config-error-message($err, $suffix) {
14
+ @if meta.type-of($err) == 'list' {
15
+ @for $i from 1 through list.length($err) {
16
+ $err: list.set-nth($err, $i,
17
+ _create-dollar-config-error-message(list.nth($err, $i), $suffix));
18
+ }
19
+ }
20
+ @else if meta.type-of($err) == 'string' {
21
+ $start: string.index($err, '$config');
22
+ @if $start {
23
+ $err: string.insert($err, $suffix, $start + 7);
24
+ }
25
+ }
26
+ @return $err;
27
+ }
28
+
29
+ /// Validates that the given object is an M3 palette.
30
+ /// @param {*} $palette The object to test
31
+ /// @return {Boolean|null} null if it is a valid M3 palette, else true.
32
+ @function _validate-palette($palette) {
33
+ @if not meta.type-of($palette) == 'map' {
34
+ @return true;
35
+ }
36
+ $keys: map.keys($palette);
37
+ $expected-keys: map.keys(palettes.$red-palette);
38
+ @if validation.validate-allowed-values($keys, $expected-keys...) or
39
+ validation.validate-required-values($keys, $expected-keys...) {
40
+ @return true;
41
+ }
42
+ $nv-keys: map.keys(map.get($palette, neutral-variant));
43
+ $expected-nv-keys: map.keys(map.get(palettes.$red-palette, neutral-variant));
44
+ @if validation.validate-allowed-values($nv-keys, $expected-nv-keys...) or
45
+ validation.validate-required-values($nv-keys, $expected-nv-keys...) {
46
+ @return true;
47
+ }
48
+ @return null;
49
+ }
50
+
51
+ /// Validates a theme config.
52
+ /// @param {Map} $config The config to test.
53
+ /// @return {List} null if no error, else the error message
54
+ @function validate-theme-config($config) {
55
+ $err: validation.validate-type($config, 'map', 'null');
56
+ @if $err {
57
+ @return (#{'$config should be a configuration object. Got:'} $config);
58
+ }
59
+ $allowed: (color, typography, density);
60
+ $err: validation.validate-allowed-values(map.keys($config or ()), $allowed...);
61
+ @if $err {
62
+ @return (
63
+ #{'$config has unexpected properties. Valid properties are'}
64
+ #{'#{$allowed}.'}
65
+ #{'Found:'}
66
+ $err
67
+ );
68
+ }
69
+ $err: validate-color-config(map.get($config, color));
70
+ @if $err {
71
+ @return _create-dollar-config-error-message($err, '.color');
72
+ }
73
+ $err: validate-typography-config(map.get($config, typography));
74
+ @if $err {
75
+ @return _create-dollar-config-error-message($err, '.typography');
76
+ }
77
+ $err: validate-density-config(map.get($config, density));
78
+ @if $err {
79
+ @return _create-dollar-config-error-message($err, '.density');
80
+ }
81
+ @return null;
82
+ }
83
+
84
+ /// Validates a theme color config.
85
+ /// @param {Map} $config The config to test.
86
+ /// @return {List} null if no error, else the error message
87
+ @function validate-color-config($config) {
88
+ $err: validation.validate-type($config, 'map', 'null');
89
+ @if $err {
90
+ @return (#{'$config should be a color configuration object. Got:'} $config);
91
+ }
92
+ $allowed: (theme-type, primary, tertiary, use-system-variables);
93
+ $err: validation.validate-allowed-values(map.keys($config or ()), $allowed...);
94
+ @if $err {
95
+ @return (
96
+ #{'$config has unexpected properties. Valid properties are'}
97
+ #{'#{$allowed}.'}
98
+ #{'Found:'}
99
+ $err
100
+ );
101
+ }
102
+ @if $config and map.has-key($config, theme-type) and
103
+ not list.index((light, dark), map.get($config, theme-type)) {
104
+ @return (
105
+ #{'Expected $config.theme-type to be one of: light, dark. Got:'}
106
+ map.get($config, theme-type)
107
+ );
108
+ }
109
+ @each $palette in (primary, secondary, tertiary) {
110
+ @if $config and map.has-key($config, $palette) {
111
+ $err: _validate-palette(map.get($config, $palette));
112
+ @if $err {
113
+ @return (
114
+ #{'Expected $config.#{$palette} to be a valid M3 palette. Got:'}
115
+ map.get($config, $palette)
116
+ );
117
+ }
118
+ }
119
+ }
120
+ @return null;
121
+ }
122
+
123
+ /// Validates a theme typography config.
124
+ /// @param {Map} $config The config to test.
125
+ /// @return {List} null if no error, else the error message
126
+ @function validate-typography-config($config) {
127
+ $err: validation.validate-type($config, 'map', 'null');
128
+ @if $err {
129
+ @return (#{'$config should be a typography configuration object. Got:'} $config);
130
+ }
131
+ $allowed: (
132
+ brand-family,
133
+ plain-family,
134
+ bold-weight,
135
+ medium-weight,
136
+ regular-weight,
137
+ use-system-variables
138
+ );
139
+ $err: validation.validate-allowed-values(map.keys($config or ()), $allowed...);
140
+ @if $err {
141
+ @return (
142
+ #{'$config has unexpected properties. Valid properties are'}
143
+ #{'#{$allowed}.'}
144
+ #{'Found:'}
145
+ $err
146
+ );
147
+ }
148
+ @return null;
149
+ }
150
+
151
+ /// Validates a theme density config.
152
+ /// @param {Map} $config The config to test.
153
+ /// @return {List} null if no error, else the error message
154
+ @function validate-density-config($config) {
155
+ $err: validation.validate-type($config, 'map', 'null');
156
+ @if $err {
157
+ @return (#{'$config should be a density configuration object. Got:'} $config);
158
+ }
159
+ $err: validation.validate-allowed-values(map.keys($config or ()), scale);
160
+ @if $err {
161
+ @return (#{'$config has unexpected properties. Valid properties are: scale. Found:'} $err);
162
+ }
163
+ @if $config and map.has-key($config, scale) {
164
+ $allowed-scales: (0, -1, -2, -3, -4, -5, minimum, maximum);
165
+ @if validation.validate-allowed-values(map.get($config, scale), $allowed-scales...) {
166
+ @return (
167
+ #{'Expected $config.scale to be one of: #{$allowed-scales}. Got:'}
168
+ map.get($config, scale)
169
+ );
170
+ }
171
+ }
172
+ @return null;
173
+ }
@@ -0,0 +1,113 @@
1
+ // This file contains functions used to define Angular Material theme objects.
2
+
3
+ @use 'sass:map';
4
+ @use '../style/sass-utils';
5
+ @use './palettes';
6
+ @use '../tokens/m3-tokens';
7
+ @use './config-validation';
8
+
9
+ /// Map key used to store internals of theme config.
10
+ $internals: _mat-theming-internals-do-not-access;
11
+ /// The theme version of generated themes.
12
+ $theme-version: 1;
13
+
14
+ /// Defines an Angular Material theme object with color, typography, and density settings.
15
+ /// @param {Map} $config The theme configuration
16
+ /// @return {Map} A theme object
17
+ @function define-theme($config: ()) {
18
+ $err: config-validation.validate-theme-config($config);
19
+ @if $err {
20
+ @error $err;
21
+ }
22
+
23
+ @return sass-utils.deep-merge-all(
24
+ define-colors(map.get($config, color) or ()),
25
+ define-typography(map.get($config, typography) or ()),
26
+ define-density(map.get($config, density) or ()),
27
+ ($internals: (base-tokens: m3-tokens.generate-base-tokens())),
28
+ );
29
+ }
30
+
31
+ /// Defines an Angular Material theme object with color settings.
32
+ /// @param {Map} $config The color configuration
33
+ /// @return {Map} A theme object
34
+ @function define-colors($config: ()) {
35
+ $err: config-validation.validate-color-config($config);
36
+ @if $err {
37
+ @error $err;
38
+ }
39
+
40
+ $type: map.get($config, theme-type) or light;
41
+ $primary: map.get($config, primary) or palettes.$violet-palette;
42
+ $tertiary: map.get($config, tertiary) or $primary;
43
+ sass-utils.$use-system-color-variables: map.get($config, use-system-variables) or false;
44
+
45
+ @return (
46
+ $internals: (
47
+ theme-version: $theme-version,
48
+ theme-type: $type,
49
+ palettes: (
50
+ primary: map.remove($primary, neutral, neutral-variant, secondary),
51
+ secondary: map.get($primary, secondary),
52
+ tertiary: map.remove($tertiary, neutral, neutral-variant, secondary),
53
+ neutral: map.get($primary, neutral),
54
+ neutral-variant: map.get($primary, neutral-variant),
55
+ error: map.get($primary, error),
56
+ ),
57
+ color-tokens: m3-tokens.generate-color-tokens(
58
+ $type, $primary, $tertiary, map.get($primary, error))
59
+ )
60
+ );
61
+ }
62
+
63
+ /// Defines an Angular Material theme object with typography settings.
64
+ /// @param {Map} $config The typography configuration
65
+ /// @return {Map} A theme object
66
+ @function define-typography($config: ()) {
67
+ $err: config-validation.validate-typography-config($config);
68
+ @if $err {
69
+ @error $err;
70
+ }
71
+
72
+ $plain: map.get($config, plain-family) or (Roboto, sans-serif);
73
+ $brand: map.get($config, brand-family) or $plain;
74
+ $bold: map.get($config, bold-weight) or 700;
75
+ $medium: map.get($config, medium-weight) or 500;
76
+ $regular: map.get($config, regular-weight) or 400;
77
+ sass-utils.$use-system-typography-variables: map.get($config, use-system-variables) or false;
78
+
79
+ @return (
80
+ $internals: (
81
+ theme-version: $theme-version,
82
+ font-definition: (
83
+ plain: $plain,
84
+ brand: $brand,
85
+ bold: $bold,
86
+ medium: $medium,
87
+ regular: $regular,
88
+ ),
89
+ typography-tokens: m3-tokens.generate-typography-tokens(
90
+ $brand, $plain, $bold, $medium, $regular)
91
+ )
92
+ );
93
+ }
94
+
95
+ /// Defines an Angular Material theme object with density settings.
96
+ /// @param {Map} $config The density configuration
97
+ /// @return {Map} A theme object
98
+ @function define-density($config: ()) {
99
+ $err: config-validation.validate-density-config($config);
100
+ @if $err {
101
+ @error $err;
102
+ }
103
+
104
+ $density-scale: map.get($config, scale) or 0;
105
+
106
+ @return (
107
+ $internals: (
108
+ theme-version: $theme-version,
109
+ density-scale: $density-scale,
110
+ density-tokens: m3-tokens.generate-density-tokens($density-scale)
111
+ )
112
+ );
113
+ }
@@ -2,7 +2,8 @@
2
2
  @use 'sass:map';
3
3
  @use 'sass:meta';
4
4
  @use './theming';
5
- @use '../typography/property-getters' as typography-getters;
5
+ @use '../m2/theming' as m2-theming;
6
+ @use '../m2/typography-utils' as m2-typography-utils;
6
7
  @use '../typography/versioning' as typography-versioning;
7
8
 
8
9
  /// Key used to access the Angular Material theme internals.
@@ -92,11 +93,11 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
92
93
  @if not theme-has($theme, color) {
93
94
  @error 'Color information is not available on this theme.';
94
95
  }
95
- $colors: theming.get-color-config($theme);
96
+ $colors: m2-theming.get-color-config($theme);
96
97
  // Some apps seem to have mistakenly created nested color themes that somehow work with our old
97
98
  // theme normalization logic. This check allows those apps to keep working.
98
99
  @if theme-has($colors, color) {
99
- $colors: theming.get-color-config($colors);
100
+ $colors: m2-theming.get-color-config($colors);
100
101
  }
101
102
  @return if(map.get($colors, is-dark), dark, light);
102
103
  }
@@ -115,18 +116,18 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
115
116
  @if not theme-has($theme, color) {
116
117
  @error 'Color information is not available on this theme.';
117
118
  }
118
- $colors: theming.get-color-config($theme);
119
+ $colors: m2-theming.get-color-config($theme);
119
120
  // Some apps seem to have mistakenly created nested color themes that somehow work with our old
120
121
  // theme normalization logic. This check allows those apps to keep working.
121
122
  @if theme-has($colors, color) {
122
- $colors: theming.get-color-config($colors);
123
+ $colors: m2-theming.get-color-config($colors);
123
124
  }
124
125
  $palette: map.get($colors, $palette-name);
125
126
  @if not $palette {
126
127
  @error $palette-name $args $theme;
127
128
  @error #{'Unrecognized palette name:'} $palette-name;
128
129
  }
129
- @return theming.get-color-from-palette($palette, $args...);
130
+ @return m2-theming.get-color-from-palette($palette, $args...);
130
131
  }
131
132
 
132
133
  /// Gets a typography value from a theme object.
@@ -141,29 +142,29 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
141
142
  @error 'Typography information is not available on this theme.';
142
143
  }
143
144
  $typography: typography-versioning.private-typography-to-2018-config(
144
- theming.get-typography-config($theme));
145
+ m2-theming.get-typography-config($theme));
145
146
  @if $property == font {
146
- $font-weight: typography-getters.font-weight($typography, $typescale);
147
- $font-size: typography-getters.font-size($typography, $typescale);
148
- $line-height: typography-getters.line-height($typography, $typescale);
149
- $font-family: typography-getters.font-family($typography, $typescale);
147
+ $font-weight: m2-typography-utils.font-weight($typography, $typescale);
148
+ $font-size: m2-typography-utils.font-size($typography, $typescale);
149
+ $line-height: m2-typography-utils.line-height($typography, $typescale);
150
+ $font-family: m2-typography-utils.font-family($typography, $typescale);
150
151
  @return ($font-weight list.slash($font-size, $line-height) $font-family);
151
152
  }
152
153
  @else if $property == font-family {
153
- $result: typography-getters.font-family($typography, $typescale);
154
- @return $result or typography-getters.font-family($typography);
154
+ $result: m2-typography-utils.font-family($typography, $typescale);
155
+ @return $result or m2-typography-utils.font-family($typography);
155
156
  }
156
157
  @else if $property == font-size {
157
- @return typography-getters.font-size($typography, $typescale);
158
+ @return m2-typography-utils.font-size($typography, $typescale);
158
159
  }
159
160
  @else if $property == font-weight {
160
- @return typography-getters.font-weight($typography, $typescale);
161
+ @return m2-typography-utils.font-weight($typography, $typescale);
161
162
  }
162
163
  @else if $property == line-height {
163
- @return typography-getters.line-height($typography, $typescale);
164
+ @return m2-typography-utils.line-height($typography, $typescale);
164
165
  }
165
166
  @else if $property == letter-spacing {
166
- @return typography-getters.letter-spacing($typography, $typescale);
167
+ @return m2-typography-utils.letter-spacing($typography, $typescale);
167
168
  }
168
169
  @else {
169
170
  @error #{'Valid typography properties are: #{$_typography-properties}. Got:'} $property;
@@ -178,7 +179,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
178
179
  @if not theme-has($theme, density) {
179
180
  @error 'Density information is not available on this theme.';
180
181
  }
181
- $scale: theming.get-density-config($theme);
182
+ $scale: m2-theming.get-density-config($theme);
182
183
  @return theming.clamp-density($scale, -5);
183
184
  }
184
185
 
@@ -192,11 +193,11 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
192
193
  @return true;
193
194
  }
194
195
  @if $system == color {
195
- $color: theming.get-color-config($theme);
196
+ $color: m2-theming.get-color-config($theme);
196
197
  @return $color != null and _has-any-key($color, $_color-keys);
197
198
  }
198
199
  @if $system == typography {
199
- $typography: theming.get-typography-config($theme);
200
+ $typography: m2-theming.get-typography-config($theme);
200
201
  @return $typography != null and _has-any-key($typography, $_typography-keys);
201
202
  }
202
203
  @if $system == density {
@@ -205,7 +206,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
205
206
  @if meta.type-of($theme) == 'map' and map.get($theme, density) {
206
207
  @return true;
207
208
  }
208
- $density: theming.get-density-config($theme);
209
+ $density: m2-theming.get-density-config($theme);
209
210
  @return $density != null and _is-density-value($density);
210
211
  }
211
212
  @error 'Valid systems are: base, color, typography, density. Got:' $system;
@@ -247,7 +248,7 @@ $_typography-properties: (font, font-family, line-height, font-size, letter-spac
247
248
  $internal: map.get($theme, $_internals, m2-config);
248
249
  $theme: map.remove($theme, $_internals);
249
250
  @if theme-has($theme, typography) {
250
- $typography-config: theming.get-typography-config($theme);
251
+ $typography-config: m2-theming.get-typography-config($theme);
251
252
  // gmat configs have both 2018 and 2014 keys.
252
253
  @if (not typography-versioning.private-typography-is-2014-config($typography-config)) or
253
254
  (not typography-versioning.private-typography-is-2018-config($typography-config)) {