material-plus-ui 1.7.0 → 1.9.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 (263) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +28 -18
  3. package/dist/a2ui/catalog.d.ts +104 -0
  4. package/dist/a2ui/catalog.js +1 -0
  5. package/dist/a2ui/components/MPA2uiAudioPlayer.d.ts +1 -0
  6. package/dist/a2ui/components/MPA2uiAudioPlayer.js +2 -0
  7. package/dist/a2ui/components/MPA2uiButton.d.ts +1 -0
  8. package/dist/a2ui/components/MPA2uiButton.js +2 -0
  9. package/dist/a2ui/components/MPA2uiCard.d.ts +1 -0
  10. package/dist/a2ui/components/MPA2uiCard.js +2 -0
  11. package/dist/a2ui/components/MPA2uiCheckBox.d.ts +1 -0
  12. package/dist/a2ui/components/MPA2uiCheckBox.js +2 -0
  13. package/dist/a2ui/components/MPA2uiChoicePicker.d.ts +1 -0
  14. package/dist/a2ui/components/MPA2uiChoicePicker.js +2 -0
  15. package/dist/a2ui/components/MPA2uiColumn.d.ts +1 -0
  16. package/dist/a2ui/components/MPA2uiColumn.js +2 -0
  17. package/dist/a2ui/components/MPA2uiDateTimeInput.d.ts +1 -0
  18. package/dist/a2ui/components/MPA2uiDateTimeInput.js +2 -0
  19. package/dist/a2ui/components/MPA2uiDivider.d.ts +1 -0
  20. package/dist/a2ui/components/MPA2uiDivider.js +2 -0
  21. package/dist/a2ui/components/MPA2uiIcon.d.ts +1 -0
  22. package/dist/a2ui/components/MPA2uiIcon.js +2 -0
  23. package/dist/a2ui/components/MPA2uiImage.d.ts +1 -0
  24. package/dist/a2ui/components/MPA2uiImage.js +2 -0
  25. package/dist/a2ui/components/MPA2uiList.d.ts +1 -0
  26. package/dist/a2ui/components/MPA2uiList.js +2 -0
  27. package/dist/a2ui/components/MPA2uiModal.d.ts +1 -0
  28. package/dist/a2ui/components/MPA2uiModal.js +2 -0
  29. package/dist/a2ui/components/MPA2uiRow.d.ts +1 -0
  30. package/dist/a2ui/components/MPA2uiRow.js +2 -0
  31. package/dist/a2ui/components/MPA2uiSlider.d.ts +1 -0
  32. package/dist/a2ui/components/MPA2uiSlider.js +2 -0
  33. package/dist/a2ui/components/MPA2uiTabs.d.ts +1 -0
  34. package/dist/a2ui/components/MPA2uiTabs.js +2 -0
  35. package/dist/a2ui/components/MPA2uiText.d.ts +1 -0
  36. package/dist/a2ui/components/MPA2uiText.js +2 -0
  37. package/dist/a2ui/components/MPA2uiTextField.d.ts +1 -0
  38. package/dist/a2ui/components/MPA2uiTextField.js +2 -0
  39. package/dist/a2ui/components/MPA2uiVideo.d.ts +1 -0
  40. package/dist/a2ui/components/MPA2uiVideo.js +2 -0
  41. package/dist/a2ui/extended/MPA2uiBarChart.d.ts +1 -0
  42. package/dist/a2ui/extended/MPA2uiBarChart.js +2 -0
  43. package/dist/a2ui/extended/MPA2uiDataTable.d.ts +1 -0
  44. package/dist/a2ui/extended/MPA2uiDataTable.js +2 -0
  45. package/dist/a2ui/extended/MPA2uiLineChart.d.ts +1 -0
  46. package/dist/a2ui/extended/MPA2uiLineChart.js +2 -0
  47. package/dist/a2ui/extended/MPA2uiPieChart.d.ts +1 -0
  48. package/dist/a2ui/extended/MPA2uiPieChart.js +2 -0
  49. package/dist/a2ui/extended/MPA2uiStatistic.d.ts +1 -0
  50. package/dist/a2ui/extended/MPA2uiStatistic.js +2 -0
  51. package/dist/a2ui/extended/api.d.ts +1436 -0
  52. package/dist/a2ui/extended/api.js +1 -0
  53. package/dist/a2ui/extended/chart.d.ts +26 -0
  54. package/dist/a2ui/extended/chart.js +1 -0
  55. package/dist/a2ui/index.d.ts +103 -0
  56. package/dist/a2ui/index.js +1 -0
  57. package/dist/a2ui/internal/children.d.ts +28 -0
  58. package/dist/a2ui/internal/children.js +1 -0
  59. package/dist/a2ui/internal/common.d.ts +113 -0
  60. package/dist/a2ui/internal/common.js +1 -0
  61. package/dist/a2ui/internal/icons.d.ts +3 -0
  62. package/dist/a2ui/internal/icons.js +1 -0
  63. package/dist/components/alert/MPAlert.d.ts +2 -2
  64. package/dist/components/alert/MPAlert.js +1 -1
  65. package/dist/components/anchor/MPAnchor.js +1 -1
  66. package/dist/components/animate-counter/MPAnimateCounter.js +1 -1
  67. package/dist/components/animate-grow/MPAnimateGrow.d.ts +1 -1
  68. package/dist/components/animate-slide/MPAnimateSlide.d.ts +1 -1
  69. package/dist/components/animate-zoom/MPAnimateZoom.d.ts +2 -2
  70. package/dist/components/app-logo/MPAppLogo.d.ts +16 -1
  71. package/dist/components/app-logo/MPAppLogo.js +1 -1
  72. package/dist/components/area-chart/MPAreaChart.d.ts +18 -3
  73. package/dist/components/area-chart/MPAreaChart.js +1 -1
  74. package/dist/components/aspect-ratio/MPAspectRatio.d.ts +1 -1
  75. package/dist/components/aspect-ratio/MPAspectRatio.js +1 -1
  76. package/dist/components/avatar/MPAvatar.d.ts +1 -1
  77. package/dist/components/bar-chart/MPBarChart.d.ts +15 -5
  78. package/dist/components/bar-chart/MPBarChart.js +1 -1
  79. package/dist/components/blockquote/MPBlockquote.d.ts +9 -1
  80. package/dist/components/blockquote/MPBlockquote.js +1 -1
  81. package/dist/components/bottom-navigation/MPBottomNavigation.js +1 -1
  82. package/dist/components/box/MPBox.d.ts +1 -1
  83. package/dist/components/breadcrumb/MPBreadcrumb.js +1 -1
  84. package/dist/components/button/MPButton.js +1 -1
  85. package/dist/components/calendar/MPCalendar.js +1 -1
  86. package/dist/components/carousel/MPCarousel.js +1 -1
  87. package/dist/components/checkbox/MPCheckbox.js +1 -1
  88. package/dist/components/chip/MPChip.d.ts +2 -2
  89. package/dist/components/chip/MPChip.js +1 -1
  90. package/dist/components/color-picker/MPColorPicker.js +1 -1
  91. package/dist/components/combobox/MPCombobox.js +1 -1
  92. package/dist/components/confirm/MPConfirmProvider.js +1 -1
  93. package/dist/components/data-table/MPDataTable.d.ts +20 -1
  94. package/dist/components/data-table/MPDataTable.js +1 -1
  95. package/dist/components/date-picker/MPDatePicker.js +1 -1
  96. package/dist/components/empty/MPEmpty.d.ts +1 -1
  97. package/dist/components/floating-action-button/MPFloatingActionButton.js +1 -1
  98. package/dist/components/grid/MPGrid.d.ts +25 -8
  99. package/dist/components/grid/MPGrid.js +1 -1
  100. package/dist/components/heatmap-chart/MPHeatmapChart.d.ts +12 -3
  101. package/dist/components/heatmap-chart/MPHeatmapChart.js +1 -1
  102. package/dist/components/hover-card/MPHoverCard.d.ts +1 -0
  103. package/dist/components/hover-card/MPHoverCard.js +1 -1
  104. package/dist/components/icon/MPIcon.js +1 -1
  105. package/dist/components/image/MPImage.d.ts +112 -4
  106. package/dist/components/image/MPImage.js +1 -1
  107. package/dist/components/image/index.d.ts +1 -1
  108. package/dist/components/line-chart/MPLineChart.d.ts +20 -2
  109. package/dist/components/line-chart/MPLineChart.js +1 -1
  110. package/dist/components/list/MPList.js +1 -1
  111. package/dist/components/menu/MPMenu.d.ts +1 -1
  112. package/dist/components/menubar/MPMenubar.js +1 -1
  113. package/dist/components/navigation-menu/MPNavigationMenu.js +1 -1
  114. package/dist/components/number-field/MPNumberField.js +1 -1
  115. package/dist/components/pie-chart/MPPieChart.d.ts +23 -1
  116. package/dist/components/pie-chart/MPPieChart.js +1 -1
  117. package/dist/components/pill/MPPill.js +1 -1
  118. package/dist/components/popconfirm/MPPopconfirm.d.ts +2 -2
  119. package/dist/components/popover/MPPopover.d.ts +1 -0
  120. package/dist/components/popover/MPPopover.js +1 -1
  121. package/dist/components/portal/MPPortal.d.ts +1 -1
  122. package/dist/components/radio-group/MPRadioGroup.js +1 -1
  123. package/dist/components/rating/MPRating.js +1 -1
  124. package/dist/components/scatter-chart/MPScatterChart.d.ts +5 -1
  125. package/dist/components/segmented-button/MPSegmentedButton.js +1 -1
  126. package/dist/components/select/MPSelect.js +1 -1
  127. package/dist/components/sparkline/MPSparkline.d.ts +14 -1
  128. package/dist/components/sparkline/MPSparkline.js +1 -1
  129. package/dist/components/statistic/MPStatistic.js +1 -1
  130. package/dist/components/stepper/MPStepper.js +1 -1
  131. package/dist/components/table/MPTable.d.ts +1 -1
  132. package/dist/components/tabs/MPTabs.js +1 -1
  133. package/dist/components/timeline/MPTimeline.js +1 -1
  134. package/dist/components/timeline-chart/MPTimelineChart.d.ts +6 -2
  135. package/dist/components/toggle/MPToggle.js +1 -1
  136. package/dist/components/tooltip/MPTooltip.js +1 -1
  137. package/dist/components/tour/MPTour.js +1 -1
  138. package/dist/components/transfer/MPTransfer.js +1 -1
  139. package/dist/components/typography/MPTypography.d.ts +1 -1
  140. package/dist/constants/glyphs.d.ts +32 -32
  141. package/dist/constants/icons.d.ts +32 -32
  142. package/dist/internal/Calendar.js +1 -1
  143. package/dist/internal/ChartChrome.d.ts +63 -19
  144. package/dist/internal/ChartChrome.js +1 -1
  145. package/dist/internal/ChartFrame.d.ts +24 -4
  146. package/dist/internal/ChartFrame.js +1 -1
  147. package/dist/internal/FieldOutline.js +1 -1
  148. package/dist/internal/Picker.js +1 -1
  149. package/dist/internal/PopupArrow.d.ts +60 -0
  150. package/dist/internal/PopupArrow.js +2 -0
  151. package/dist/internal/SupportingText.js +1 -1
  152. package/dist/internal/chart.d.ts +91 -13
  153. package/dist/internal/chart.js +1 -1
  154. package/dist/internal/color-scheme.d.ts +0 -9
  155. package/dist/internal/color-scheme.js +1 -1
  156. package/dist/internal/data-table.d.ts +35 -2
  157. package/dist/internal/data-table.js +1 -1
  158. package/dist/internal/date.d.ts +22 -18
  159. package/dist/internal/date.js +1 -1
  160. package/dist/internal/i18n.d.ts +14 -0
  161. package/dist/internal/intl.d.ts +64 -0
  162. package/dist/internal/intl.js +1 -0
  163. package/dist/internal/messages/chart.d.ts +1 -1
  164. package/dist/internal/messages/chart.js +1 -1
  165. package/dist/internal/messages/transfer.d.ts +1 -1
  166. package/dist/internal/messages/transfer.js +1 -1
  167. package/dist/internal/text.js +1 -1
  168. package/dist/internal/time-scale.js +1 -1
  169. package/dist/locales/ar.js +1 -1
  170. package/dist/locales/de.js +1 -1
  171. package/dist/locales/es.js +1 -1
  172. package/dist/locales/fr.js +1 -1
  173. package/dist/locales/hi.js +1 -1
  174. package/dist/locales/id.js +1 -1
  175. package/dist/locales/it.js +1 -1
  176. package/dist/locales/ja.js +1 -1
  177. package/dist/locales/ko.js +1 -1
  178. package/dist/locales/nl.js +1 -1
  179. package/dist/locales/pl.js +1 -1
  180. package/dist/locales/pt.js +1 -1
  181. package/dist/locales/ru.js +1 -1
  182. package/dist/locales/th.js +1 -1
  183. package/dist/locales/tr.js +1 -1
  184. package/dist/locales/vi.js +1 -1
  185. package/dist/locales/zh-hans.js +1 -1
  186. package/dist/locales/zh-hant.js +1 -1
  187. package/dist/styles/accordion.css +1 -1
  188. package/dist/styles/alert.css +1 -1
  189. package/dist/styles/app-logo.css +1 -1
  190. package/dist/styles/area-chart.css +1 -1
  191. package/dist/styles/aspect-ratio.css +1 -1
  192. package/dist/styles/bar-chart.css +1 -1
  193. package/dist/styles/blockquote.css +1 -1
  194. package/dist/styles/bottom-navigation.css +1 -1
  195. package/dist/styles/breadcrumb.css +1 -1
  196. package/dist/styles/button.css +1 -1
  197. package/dist/styles/calendar.css +1 -1
  198. package/dist/styles/carousel.css +1 -1
  199. package/dist/styles/chat-bubble.css +1 -1
  200. package/dist/styles/checkbox.css +1 -1
  201. package/dist/styles/chip.css +1 -1
  202. package/dist/styles/code-block.css +1 -1
  203. package/dist/styles/collapsible.css +1 -1
  204. package/dist/styles/color-picker.css +1 -1
  205. package/dist/styles/combobox.css +1 -1
  206. package/dist/styles/confirm.css +1 -1
  207. package/dist/styles/data-table.css +1 -1
  208. package/dist/styles/date-picker.css +1 -1
  209. package/dist/styles/date-range-picker.css +1 -1
  210. package/dist/styles/date-time-picker.css +1 -1
  211. package/dist/styles/dialog.css +1 -1
  212. package/dist/styles/drawer.css +1 -1
  213. package/dist/styles/file-picker.css +1 -1
  214. package/dist/styles/flex.css +1 -1
  215. package/dist/styles/floating-action-button.css +1 -1
  216. package/dist/styles/gauge-chart.css +1 -1
  217. package/dist/styles/grid.css +1 -1
  218. package/dist/styles/heatmap-chart.css +1 -1
  219. package/dist/styles/icon-button.css +1 -1
  220. package/dist/styles/icon.css +1 -1
  221. package/dist/styles/image.css +1 -1
  222. package/dist/styles/line-chart.css +1 -1
  223. package/dist/styles/list.css +1 -1
  224. package/dist/styles/menu.css +1 -1
  225. package/dist/styles/menubar.css +1 -1
  226. package/dist/styles/navigation-menu.css +1 -1
  227. package/dist/styles/number-field.css +1 -1
  228. package/dist/styles/otp-field.css +1 -1
  229. package/dist/styles/pagination.css +1 -1
  230. package/dist/styles/pie-chart.css +1 -1
  231. package/dist/styles/pill.css +1 -1
  232. package/dist/styles/popconfirm.css +1 -1
  233. package/dist/styles/popover.css +1 -1
  234. package/dist/styles/radio-group.css +1 -1
  235. package/dist/styles/rating.css +1 -1
  236. package/dist/styles/scatter-chart.css +1 -1
  237. package/dist/styles/scroll-zone.css +1 -1
  238. package/dist/styles/segmented-button.css +1 -1
  239. package/dist/styles/select.css +1 -1
  240. package/dist/styles/sidebar.css +1 -1
  241. package/dist/styles/snackbar.css +1 -1
  242. package/dist/styles/sparkline.css +1 -1
  243. package/dist/styles/spoiler.css +1 -1
  244. package/dist/styles/statistic.css +1 -1
  245. package/dist/styles/stepper.css +1 -1
  246. package/dist/styles/switch.css +1 -1
  247. package/dist/styles/tabs.css +1 -1
  248. package/dist/styles/text-field.css +1 -1
  249. package/dist/styles/text-link.css +1 -1
  250. package/dist/styles/time-picker.css +1 -1
  251. package/dist/styles/timeline-chart.css +1 -1
  252. package/dist/styles/timeline.css +1 -1
  253. package/dist/styles/toggle.css +1 -1
  254. package/dist/styles/tokens.css +1 -1
  255. package/dist/styles/tour.css +1 -1
  256. package/dist/styles/transfer.css +1 -1
  257. package/dist/styles/tree-select.css +1 -1
  258. package/dist/styles/tree-view.css +1 -1
  259. package/dist/styles.css +1 -1
  260. package/dist/tailwind.css +1253 -55
  261. package/dist/types.d.ts +210 -3
  262. package/package.json +47 -26
  263. package/.fix.py +0 -92
package/dist/tailwind.css CHANGED
@@ -324,13 +324,13 @@
324
324
  * boundary take back whatever will not fit — which is why `primary` at tone 40
325
325
  * is vivid and `primary-container` at tone 90 is a pale wash, from one number.
326
326
  * The container and `on-` roles are written the same way: the palette's chroma
327
- * goes in unmodified and the browser's own gamut mapping does the clipping, at
328
- * constant lightness and hue, exactly as HCT's does.
327
+ * goes in unmodified, and the roles themselves take back what sRGB cannot
328
+ * show — see "Inside sRGB" on the roles below. The browser does not: it clips
329
+ * each channel on its own, which moves the hue and the lightness with it.
329
330
  *
330
- * Fed the baseline source, that lands the twelve container and `on-` roles
331
- * within 0.01 of MD3's own — bar the two `error` containers, which come out up
332
- * to 0.025 more chromatic because sRGB's boundary is a blunter clip than HCT's
333
- * and the error palette is the only one saturated enough to notice.
331
+ * Fed the baseline source, that lands the eighteen container and `on-` roles
332
+ * of the three accent families within a ΔE of 0.02 of MD3's own, and
333
+ * `on-primary`, `on-secondary` and `on-tertiary` exactly on its white.
334
334
  *
335
335
  * `error` is an absolute chroma rather than a multiplier, because it is not
336
336
  * derived from the source colour at all.
@@ -491,17 +491,127 @@
491
491
  *
492
492
  * `oklch(from … h)` keeps the source colour's hue and replaces lightness and
493
493
  * chroma. See the note above for why this is on `*` rather than `:root`.
494
+ *
495
+ * ## Inside sRGB
496
+ *
497
+ * A palette's chroma is too much for the ends of its own ramp. At the tone of
498
+ * `on-primary` there is no chroma left inside sRGB at all, and at the tone of
499
+ * a container there is a fraction of it. A browser handed such a colour does
500
+ * not bring it in at constant lightness and hue, which is what CSS Color 4
501
+ * describes: it clips each channel on its own. Measured in Chromium, Firefox
502
+ * and WebKit alike, the default `on-primary` came out `#b8ffff` instead of
503
+ * white, its container a saturated cyan, and `error-container` a salmon at a
504
+ * ΔE of 0.1 from MD3's.
505
+ *
506
+ * So the accent and error roles bring the colour in themselves, written as
507
+ * nested relative colours. The innermost converts the role to linear sRGB
508
+ * and works out, for each channel, how far along the straight line from the
509
+ * grey of the same lightness the colour can go before that channel leaves
510
+ * [0, 1]; the smallest of the three is carried in the alpha channel. The
511
+ * next scales the colour's OKLab chroma by that factor, which keeps its
512
+ * lightness and hue exactly and lands it at or near the edge of sRGB. The
513
+ * last two repeat the measurement on that colour and move whatever still
514
+ * does not fit along the line in linear light, then set the alpha back to 1.
515
+ * A colour already inside sRGB comes out unchanged, because every channel
516
+ * then allows the whole line.
517
+ *
518
+ * The factor comes from a line in linear light rather than from the curved
519
+ * edge of the gamut, so the result is near an exact chroma reduction rather
520
+ * than on it. For the default source the worst role is a ΔE of 0.004 from
521
+ * that colour, where clipping each channel was 0.084 off. Across every hue
522
+ * at the same saturation the worst is 0.009 against 0.122, and at the
523
+ * saturation of the most vivid sRGB sources 0.099 against 0.299. An
524
+ * estimate can also stop short of the edge: a pure `#0000ff` source comes
525
+ * out 0.072 away, where the linear line alone gave 0.053. The `0.0000001`
526
+ * keeps a channel that sits exactly on the grey from dividing zero by zero.
527
+ *
528
+ * The neutral roles carry too little chroma to leave sRGB, and stay as they
529
+ * are. The one exception is the light `surface` near a hue of 270°, which
530
+ * passes the edge by less than 4% of one channel.
494
531
  */
495
532
  *,
496
533
  ::before,
497
534
  ::after,
498
535
  ::backdrop {
536
+ /*
537
+ * The grey each accent tone sits on, in linear light: an OKLCh lightness
538
+ * with no chroma is the same value in all three sRGB channels, and that
539
+ * value is the lightness cubed. The roles below pull a colour towards it
540
+ * when the colour will not fit sRGB — see "Inside sRGB" above.
541
+ */
542
+ --_mp-grey-accent: calc(
543
+ var(--_mp-tone-accent) * var(--_mp-tone-accent) * var(--_mp-tone-accent)
544
+ );
545
+ --_mp-grey-on-accent: calc(
546
+ var(--_mp-tone-on-accent) * var(--_mp-tone-on-accent) * var(--_mp-tone-on-accent)
547
+ );
548
+ --_mp-grey-accent-container: calc(
549
+ var(--_mp-tone-accent-container) * var(--_mp-tone-accent-container) *
550
+ var(--_mp-tone-accent-container)
551
+ );
552
+ --_mp-grey-on-accent-container: calc(
553
+ var(--_mp-tone-on-accent-container) * var(--_mp-tone-on-accent-container) *
554
+ var(--_mp-tone-on-accent-container)
555
+ );
556
+ --_mp-grey-inverse-accent: calc(
557
+ var(--_mp-tone-inverse-accent) * var(--_mp-tone-inverse-accent) *
558
+ var(--_mp-tone-inverse-accent)
559
+ );
560
+ --_mp-grey-error: calc(var(--_mp-tone-error) * var(--_mp-tone-error) * var(--_mp-tone-error));
561
+
499
562
  --_mp-color-primary: var(
500
563
  --mp-sys-color-primary,
501
564
  var(
502
565
  --md-sys-color-primary,
503
- oklch(
504
- from var(--mp-source-color) var(--_mp-tone-accent) calc(c * var(--_mp-chroma-primary)) h
566
+ color(
567
+ from
568
+ color(
569
+ from
570
+ oklab(
571
+ from
572
+ color(
573
+ from
574
+ oklch(
575
+ from var(--mp-source-color) var(--_mp-tone-accent)
576
+ calc(c * var(--_mp-chroma-primary)) h
577
+ )
578
+ srgb-linear r g b /
579
+ min(
580
+ calc(
581
+ (clamp(0, r, 1) - var(--_mp-grey-accent) + 0.0000001) /
582
+ (r - var(--_mp-grey-accent) + 0.0000001)
583
+ ),
584
+ calc(
585
+ (clamp(0, g, 1) - var(--_mp-grey-accent) + 0.0000001) /
586
+ (g - var(--_mp-grey-accent) + 0.0000001)
587
+ ),
588
+ calc(
589
+ (clamp(0, b, 1) - var(--_mp-grey-accent) + 0.0000001) /
590
+ (b - var(--_mp-grey-accent) + 0.0000001)
591
+ )
592
+ )
593
+ )
594
+ l calc(a * alpha) calc(b * alpha) / 1
595
+ )
596
+ srgb-linear r g b /
597
+ min(
598
+ calc(
599
+ (clamp(0, r, 1) - var(--_mp-grey-accent) + 0.0000001) /
600
+ (r - var(--_mp-grey-accent) + 0.0000001)
601
+ ),
602
+ calc(
603
+ (clamp(0, g, 1) - var(--_mp-grey-accent) + 0.0000001) /
604
+ (g - var(--_mp-grey-accent) + 0.0000001)
605
+ ),
606
+ calc(
607
+ (clamp(0, b, 1) - var(--_mp-grey-accent) + 0.0000001) /
608
+ (b - var(--_mp-grey-accent) + 0.0000001)
609
+ )
610
+ )
611
+ )
612
+ srgb-linear calc(var(--_mp-grey-accent) + alpha * (r - var(--_mp-grey-accent)))
613
+ calc(var(--_mp-grey-accent) + alpha * (g - var(--_mp-grey-accent)))
614
+ calc(var(--_mp-grey-accent) + alpha * (b - var(--_mp-grey-accent))) / 1
505
615
  )
506
616
  )
507
617
  );
@@ -509,9 +619,55 @@
509
619
  --mp-sys-color-on-primary,
510
620
  var(
511
621
  --md-sys-color-on-primary,
512
- oklch(
513
- from var(--mp-source-color) var(--_mp-tone-on-accent) calc(c * var(--_mp-palette-primary))
514
- h
622
+ color(
623
+ from
624
+ color(
625
+ from
626
+ oklab(
627
+ from
628
+ color(
629
+ from
630
+ oklch(
631
+ from var(--mp-source-color) var(--_mp-tone-on-accent)
632
+ calc(c * var(--_mp-palette-primary)) h
633
+ )
634
+ srgb-linear r g b /
635
+ min(
636
+ calc(
637
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
638
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
639
+ ),
640
+ calc(
641
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
642
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
643
+ ),
644
+ calc(
645
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
646
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
647
+ )
648
+ )
649
+ )
650
+ l calc(a * alpha) calc(b * alpha) / 1
651
+ )
652
+ srgb-linear r g b /
653
+ min(
654
+ calc(
655
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
656
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
657
+ ),
658
+ calc(
659
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
660
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
661
+ ),
662
+ calc(
663
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
664
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
665
+ )
666
+ )
667
+ )
668
+ srgb-linear calc(var(--_mp-grey-on-accent) + alpha * (r - var(--_mp-grey-on-accent)))
669
+ calc(var(--_mp-grey-on-accent) + alpha * (g - var(--_mp-grey-on-accent)))
670
+ calc(var(--_mp-grey-on-accent) + alpha * (b - var(--_mp-grey-on-accent))) / 1
515
671
  )
516
672
  )
517
673
  );
@@ -519,9 +675,59 @@
519
675
  --mp-sys-color-primary-container,
520
676
  var(
521
677
  --md-sys-color-primary-container,
522
- oklch(
523
- from var(--mp-source-color) var(--_mp-tone-accent-container)
524
- calc(c * var(--_mp-palette-primary)) h
678
+ color(
679
+ from
680
+ color(
681
+ from
682
+ oklab(
683
+ from
684
+ color(
685
+ from
686
+ oklch(
687
+ from var(--mp-source-color) var(--_mp-tone-accent-container)
688
+ calc(c * var(--_mp-palette-primary)) h
689
+ )
690
+ srgb-linear r g b /
691
+ min(
692
+ calc(
693
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
694
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
695
+ ),
696
+ calc(
697
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
698
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
699
+ ),
700
+ calc(
701
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
702
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
703
+ )
704
+ )
705
+ )
706
+ l calc(a * alpha) calc(b * alpha) / 1
707
+ )
708
+ srgb-linear r g b /
709
+ min(
710
+ calc(
711
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
712
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
713
+ ),
714
+ calc(
715
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
716
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
717
+ ),
718
+ calc(
719
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
720
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
721
+ )
722
+ )
723
+ )
724
+ srgb-linear
725
+ calc(var(--_mp-grey-accent-container) + alpha * (r - var(--_mp-grey-accent-container)))
726
+ calc(var(--_mp-grey-accent-container) + alpha * (g - var(--_mp-grey-accent-container)))
727
+ calc(
728
+ var(--_mp-grey-accent-container) + alpha * (b - var(--_mp-grey-accent-container))
729
+ ) /
730
+ 1
525
731
  )
526
732
  )
527
733
  );
@@ -529,9 +735,66 @@
529
735
  --mp-sys-color-on-primary-container,
530
736
  var(
531
737
  --md-sys-color-on-primary-container,
532
- oklch(
533
- from var(--mp-source-color) var(--_mp-tone-on-accent-container)
534
- calc(c * var(--_mp-palette-primary)) h
738
+ color(
739
+ from
740
+ color(
741
+ from
742
+ oklab(
743
+ from
744
+ color(
745
+ from
746
+ oklch(
747
+ from var(--mp-source-color) var(--_mp-tone-on-accent-container)
748
+ calc(c * var(--_mp-palette-primary)) h
749
+ )
750
+ srgb-linear r g b /
751
+ min(
752
+ calc(
753
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
754
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
755
+ ),
756
+ calc(
757
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
758
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
759
+ ),
760
+ calc(
761
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
762
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
763
+ )
764
+ )
765
+ )
766
+ l calc(a * alpha) calc(b * alpha) / 1
767
+ )
768
+ srgb-linear r g b /
769
+ min(
770
+ calc(
771
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
772
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
773
+ ),
774
+ calc(
775
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
776
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
777
+ ),
778
+ calc(
779
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
780
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
781
+ )
782
+ )
783
+ )
784
+ srgb-linear
785
+ calc(
786
+ var(--_mp-grey-on-accent-container) + alpha *
787
+ (r - var(--_mp-grey-on-accent-container))
788
+ )
789
+ calc(
790
+ var(--_mp-grey-on-accent-container) + alpha *
791
+ (g - var(--_mp-grey-on-accent-container))
792
+ )
793
+ calc(
794
+ var(--_mp-grey-on-accent-container) + alpha *
795
+ (b - var(--_mp-grey-on-accent-container))
796
+ ) /
797
+ 1
535
798
  )
536
799
  )
537
800
  );
@@ -540,8 +803,55 @@
540
803
  --mp-sys-color-secondary,
541
804
  var(
542
805
  --md-sys-color-secondary,
543
- oklch(
544
- from var(--mp-source-color) var(--_mp-tone-accent) calc(c * var(--_mp-chroma-secondary)) h
806
+ color(
807
+ from
808
+ color(
809
+ from
810
+ oklab(
811
+ from
812
+ color(
813
+ from
814
+ oklch(
815
+ from var(--mp-source-color) var(--_mp-tone-accent)
816
+ calc(c * var(--_mp-chroma-secondary)) h
817
+ )
818
+ srgb-linear r g b /
819
+ min(
820
+ calc(
821
+ (clamp(0, r, 1) - var(--_mp-grey-accent) + 0.0000001) /
822
+ (r - var(--_mp-grey-accent) + 0.0000001)
823
+ ),
824
+ calc(
825
+ (clamp(0, g, 1) - var(--_mp-grey-accent) + 0.0000001) /
826
+ (g - var(--_mp-grey-accent) + 0.0000001)
827
+ ),
828
+ calc(
829
+ (clamp(0, b, 1) - var(--_mp-grey-accent) + 0.0000001) /
830
+ (b - var(--_mp-grey-accent) + 0.0000001)
831
+ )
832
+ )
833
+ )
834
+ l calc(a * alpha) calc(b * alpha) / 1
835
+ )
836
+ srgb-linear r g b /
837
+ min(
838
+ calc(
839
+ (clamp(0, r, 1) - var(--_mp-grey-accent) + 0.0000001) /
840
+ (r - var(--_mp-grey-accent) + 0.0000001)
841
+ ),
842
+ calc(
843
+ (clamp(0, g, 1) - var(--_mp-grey-accent) + 0.0000001) /
844
+ (g - var(--_mp-grey-accent) + 0.0000001)
845
+ ),
846
+ calc(
847
+ (clamp(0, b, 1) - var(--_mp-grey-accent) + 0.0000001) /
848
+ (b - var(--_mp-grey-accent) + 0.0000001)
849
+ )
850
+ )
851
+ )
852
+ srgb-linear calc(var(--_mp-grey-accent) + alpha * (r - var(--_mp-grey-accent)))
853
+ calc(var(--_mp-grey-accent) + alpha * (g - var(--_mp-grey-accent)))
854
+ calc(var(--_mp-grey-accent) + alpha * (b - var(--_mp-grey-accent))) / 1
545
855
  )
546
856
  )
547
857
  );
@@ -549,9 +859,55 @@
549
859
  --mp-sys-color-on-secondary,
550
860
  var(
551
861
  --md-sys-color-on-secondary,
552
- oklch(
553
- from var(--mp-source-color) var(--_mp-tone-on-accent)
554
- calc(c * var(--_mp-palette-secondary)) h
862
+ color(
863
+ from
864
+ color(
865
+ from
866
+ oklab(
867
+ from
868
+ color(
869
+ from
870
+ oklch(
871
+ from var(--mp-source-color) var(--_mp-tone-on-accent)
872
+ calc(c * var(--_mp-palette-secondary)) h
873
+ )
874
+ srgb-linear r g b /
875
+ min(
876
+ calc(
877
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
878
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
879
+ ),
880
+ calc(
881
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
882
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
883
+ ),
884
+ calc(
885
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
886
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
887
+ )
888
+ )
889
+ )
890
+ l calc(a * alpha) calc(b * alpha) / 1
891
+ )
892
+ srgb-linear r g b /
893
+ min(
894
+ calc(
895
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
896
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
897
+ ),
898
+ calc(
899
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
900
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
901
+ ),
902
+ calc(
903
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
904
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
905
+ )
906
+ )
907
+ )
908
+ srgb-linear calc(var(--_mp-grey-on-accent) + alpha * (r - var(--_mp-grey-on-accent)))
909
+ calc(var(--_mp-grey-on-accent) + alpha * (g - var(--_mp-grey-on-accent)))
910
+ calc(var(--_mp-grey-on-accent) + alpha * (b - var(--_mp-grey-on-accent))) / 1
555
911
  )
556
912
  )
557
913
  );
@@ -559,9 +915,59 @@
559
915
  --mp-sys-color-secondary-container,
560
916
  var(
561
917
  --md-sys-color-secondary-container,
562
- oklch(
563
- from var(--mp-source-color) var(--_mp-tone-accent-container)
564
- calc(c * var(--_mp-palette-secondary)) h
918
+ color(
919
+ from
920
+ color(
921
+ from
922
+ oklab(
923
+ from
924
+ color(
925
+ from
926
+ oklch(
927
+ from var(--mp-source-color) var(--_mp-tone-accent-container)
928
+ calc(c * var(--_mp-palette-secondary)) h
929
+ )
930
+ srgb-linear r g b /
931
+ min(
932
+ calc(
933
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
934
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
935
+ ),
936
+ calc(
937
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
938
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
939
+ ),
940
+ calc(
941
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
942
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
943
+ )
944
+ )
945
+ )
946
+ l calc(a * alpha) calc(b * alpha) / 1
947
+ )
948
+ srgb-linear r g b /
949
+ min(
950
+ calc(
951
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
952
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
953
+ ),
954
+ calc(
955
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
956
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
957
+ ),
958
+ calc(
959
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
960
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
961
+ )
962
+ )
963
+ )
964
+ srgb-linear
965
+ calc(var(--_mp-grey-accent-container) + alpha * (r - var(--_mp-grey-accent-container)))
966
+ calc(var(--_mp-grey-accent-container) + alpha * (g - var(--_mp-grey-accent-container)))
967
+ calc(
968
+ var(--_mp-grey-accent-container) + alpha * (b - var(--_mp-grey-accent-container))
969
+ ) /
970
+ 1
565
971
  )
566
972
  )
567
973
  );
@@ -569,9 +975,66 @@
569
975
  --mp-sys-color-on-secondary-container,
570
976
  var(
571
977
  --md-sys-color-on-secondary-container,
572
- oklch(
573
- from var(--mp-source-color) var(--_mp-tone-on-accent-container)
574
- calc(c * var(--_mp-palette-secondary)) h
978
+ color(
979
+ from
980
+ color(
981
+ from
982
+ oklab(
983
+ from
984
+ color(
985
+ from
986
+ oklch(
987
+ from var(--mp-source-color) var(--_mp-tone-on-accent-container)
988
+ calc(c * var(--_mp-palette-secondary)) h
989
+ )
990
+ srgb-linear r g b /
991
+ min(
992
+ calc(
993
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
994
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
995
+ ),
996
+ calc(
997
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
998
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
999
+ ),
1000
+ calc(
1001
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1002
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
1003
+ )
1004
+ )
1005
+ )
1006
+ l calc(a * alpha) calc(b * alpha) / 1
1007
+ )
1008
+ srgb-linear r g b /
1009
+ min(
1010
+ calc(
1011
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1012
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
1013
+ ),
1014
+ calc(
1015
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1016
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
1017
+ ),
1018
+ calc(
1019
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1020
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
1021
+ )
1022
+ )
1023
+ )
1024
+ srgb-linear
1025
+ calc(
1026
+ var(--_mp-grey-on-accent-container) + alpha *
1027
+ (r - var(--_mp-grey-on-accent-container))
1028
+ )
1029
+ calc(
1030
+ var(--_mp-grey-on-accent-container) + alpha *
1031
+ (g - var(--_mp-grey-on-accent-container))
1032
+ )
1033
+ calc(
1034
+ var(--_mp-grey-on-accent-container) + alpha *
1035
+ (b - var(--_mp-grey-on-accent-container))
1036
+ ) /
1037
+ 1
575
1038
  )
576
1039
  )
577
1040
  );
@@ -581,9 +1044,55 @@
581
1044
  --mp-sys-color-tertiary,
582
1045
  var(
583
1046
  --md-sys-color-tertiary,
584
- oklch(
585
- from var(--mp-source-color) var(--_mp-tone-accent) calc(c * var(--_mp-chroma-tertiary))
586
- calc(h + var(--_mp-hue-tertiary))
1047
+ color(
1048
+ from
1049
+ color(
1050
+ from
1051
+ oklab(
1052
+ from
1053
+ color(
1054
+ from
1055
+ oklch(
1056
+ from var(--mp-source-color) var(--_mp-tone-accent)
1057
+ calc(c * var(--_mp-chroma-tertiary)) calc(h + var(--_mp-hue-tertiary))
1058
+ )
1059
+ srgb-linear r g b /
1060
+ min(
1061
+ calc(
1062
+ (clamp(0, r, 1) - var(--_mp-grey-accent) + 0.0000001) /
1063
+ (r - var(--_mp-grey-accent) + 0.0000001)
1064
+ ),
1065
+ calc(
1066
+ (clamp(0, g, 1) - var(--_mp-grey-accent) + 0.0000001) /
1067
+ (g - var(--_mp-grey-accent) + 0.0000001)
1068
+ ),
1069
+ calc(
1070
+ (clamp(0, b, 1) - var(--_mp-grey-accent) + 0.0000001) /
1071
+ (b - var(--_mp-grey-accent) + 0.0000001)
1072
+ )
1073
+ )
1074
+ )
1075
+ l calc(a * alpha) calc(b * alpha) / 1
1076
+ )
1077
+ srgb-linear r g b /
1078
+ min(
1079
+ calc(
1080
+ (clamp(0, r, 1) - var(--_mp-grey-accent) + 0.0000001) /
1081
+ (r - var(--_mp-grey-accent) + 0.0000001)
1082
+ ),
1083
+ calc(
1084
+ (clamp(0, g, 1) - var(--_mp-grey-accent) + 0.0000001) /
1085
+ (g - var(--_mp-grey-accent) + 0.0000001)
1086
+ ),
1087
+ calc(
1088
+ (clamp(0, b, 1) - var(--_mp-grey-accent) + 0.0000001) /
1089
+ (b - var(--_mp-grey-accent) + 0.0000001)
1090
+ )
1091
+ )
1092
+ )
1093
+ srgb-linear calc(var(--_mp-grey-accent) + alpha * (r - var(--_mp-grey-accent)))
1094
+ calc(var(--_mp-grey-accent) + alpha * (g - var(--_mp-grey-accent)))
1095
+ calc(var(--_mp-grey-accent) + alpha * (b - var(--_mp-grey-accent))) / 1
587
1096
  )
588
1097
  )
589
1098
  );
@@ -591,9 +1100,55 @@
591
1100
  --mp-sys-color-on-tertiary,
592
1101
  var(
593
1102
  --md-sys-color-on-tertiary,
594
- oklch(
595
- from var(--mp-source-color) var(--_mp-tone-on-accent)
596
- calc(c * var(--_mp-palette-tertiary)) calc(h + var(--_mp-hue-tertiary))
1103
+ color(
1104
+ from
1105
+ color(
1106
+ from
1107
+ oklab(
1108
+ from
1109
+ color(
1110
+ from
1111
+ oklch(
1112
+ from var(--mp-source-color) var(--_mp-tone-on-accent)
1113
+ calc(c * var(--_mp-palette-tertiary)) calc(h + var(--_mp-hue-tertiary))
1114
+ )
1115
+ srgb-linear r g b /
1116
+ min(
1117
+ calc(
1118
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1119
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
1120
+ ),
1121
+ calc(
1122
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1123
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
1124
+ ),
1125
+ calc(
1126
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1127
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
1128
+ )
1129
+ )
1130
+ )
1131
+ l calc(a * alpha) calc(b * alpha) / 1
1132
+ )
1133
+ srgb-linear r g b /
1134
+ min(
1135
+ calc(
1136
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1137
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
1138
+ ),
1139
+ calc(
1140
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1141
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
1142
+ ),
1143
+ calc(
1144
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1145
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
1146
+ )
1147
+ )
1148
+ )
1149
+ srgb-linear calc(var(--_mp-grey-on-accent) + alpha * (r - var(--_mp-grey-on-accent)))
1150
+ calc(var(--_mp-grey-on-accent) + alpha * (g - var(--_mp-grey-on-accent)))
1151
+ calc(var(--_mp-grey-on-accent) + alpha * (b - var(--_mp-grey-on-accent))) / 1
597
1152
  )
598
1153
  )
599
1154
  );
@@ -601,9 +1156,59 @@
601
1156
  --mp-sys-color-tertiary-container,
602
1157
  var(
603
1158
  --md-sys-color-tertiary-container,
604
- oklch(
605
- from var(--mp-source-color) var(--_mp-tone-accent-container)
606
- calc(c * var(--_mp-palette-tertiary)) calc(h + var(--_mp-hue-tertiary))
1159
+ color(
1160
+ from
1161
+ color(
1162
+ from
1163
+ oklab(
1164
+ from
1165
+ color(
1166
+ from
1167
+ oklch(
1168
+ from var(--mp-source-color) var(--_mp-tone-accent-container)
1169
+ calc(c * var(--_mp-palette-tertiary)) calc(h + var(--_mp-hue-tertiary))
1170
+ )
1171
+ srgb-linear r g b /
1172
+ min(
1173
+ calc(
1174
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1175
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
1176
+ ),
1177
+ calc(
1178
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1179
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
1180
+ ),
1181
+ calc(
1182
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1183
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
1184
+ )
1185
+ )
1186
+ )
1187
+ l calc(a * alpha) calc(b * alpha) / 1
1188
+ )
1189
+ srgb-linear r g b /
1190
+ min(
1191
+ calc(
1192
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1193
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
1194
+ ),
1195
+ calc(
1196
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1197
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
1198
+ ),
1199
+ calc(
1200
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1201
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
1202
+ )
1203
+ )
1204
+ )
1205
+ srgb-linear
1206
+ calc(var(--_mp-grey-accent-container) + alpha * (r - var(--_mp-grey-accent-container)))
1207
+ calc(var(--_mp-grey-accent-container) + alpha * (g - var(--_mp-grey-accent-container)))
1208
+ calc(
1209
+ var(--_mp-grey-accent-container) + alpha * (b - var(--_mp-grey-accent-container))
1210
+ ) /
1211
+ 1
607
1212
  )
608
1213
  )
609
1214
  );
@@ -611,9 +1216,66 @@
611
1216
  --mp-sys-color-on-tertiary-container,
612
1217
  var(
613
1218
  --md-sys-color-on-tertiary-container,
614
- oklch(
615
- from var(--mp-source-color) var(--_mp-tone-on-accent-container)
616
- calc(c * var(--_mp-palette-tertiary)) calc(h + var(--_mp-hue-tertiary))
1219
+ color(
1220
+ from
1221
+ color(
1222
+ from
1223
+ oklab(
1224
+ from
1225
+ color(
1226
+ from
1227
+ oklch(
1228
+ from var(--mp-source-color) var(--_mp-tone-on-accent-container)
1229
+ calc(c * var(--_mp-palette-tertiary)) calc(h + var(--_mp-hue-tertiary))
1230
+ )
1231
+ srgb-linear r g b /
1232
+ min(
1233
+ calc(
1234
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1235
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
1236
+ ),
1237
+ calc(
1238
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1239
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
1240
+ ),
1241
+ calc(
1242
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1243
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
1244
+ )
1245
+ )
1246
+ )
1247
+ l calc(a * alpha) calc(b * alpha) / 1
1248
+ )
1249
+ srgb-linear r g b /
1250
+ min(
1251
+ calc(
1252
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1253
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
1254
+ ),
1255
+ calc(
1256
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1257
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
1258
+ ),
1259
+ calc(
1260
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1261
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
1262
+ )
1263
+ )
1264
+ )
1265
+ srgb-linear
1266
+ calc(
1267
+ var(--_mp-grey-on-accent-container) + alpha *
1268
+ (r - var(--_mp-grey-on-accent-container))
1269
+ )
1270
+ calc(
1271
+ var(--_mp-grey-on-accent-container) + alpha *
1272
+ (g - var(--_mp-grey-on-accent-container))
1273
+ )
1274
+ calc(
1275
+ var(--_mp-grey-on-accent-container) + alpha *
1276
+ (b - var(--_mp-grey-on-accent-container))
1277
+ ) /
1278
+ 1
617
1279
  )
618
1280
  )
619
1281
  );
@@ -700,9 +1362,56 @@
700
1362
  --mp-sys-color-inverse-primary,
701
1363
  var(
702
1364
  --md-sys-color-inverse-primary,
703
- oklch(
704
- from var(--mp-source-color) var(--_mp-tone-inverse-accent)
705
- calc(c * var(--_mp-chroma-inverse-primary)) h
1365
+ color(
1366
+ from
1367
+ color(
1368
+ from
1369
+ oklab(
1370
+ from
1371
+ color(
1372
+ from
1373
+ oklch(
1374
+ from var(--mp-source-color) var(--_mp-tone-inverse-accent)
1375
+ calc(c * var(--_mp-chroma-inverse-primary)) h
1376
+ )
1377
+ srgb-linear r g b /
1378
+ min(
1379
+ calc(
1380
+ (clamp(0, r, 1) - var(--_mp-grey-inverse-accent) + 0.0000001) /
1381
+ (r - var(--_mp-grey-inverse-accent) + 0.0000001)
1382
+ ),
1383
+ calc(
1384
+ (clamp(0, g, 1) - var(--_mp-grey-inverse-accent) + 0.0000001) /
1385
+ (g - var(--_mp-grey-inverse-accent) + 0.0000001)
1386
+ ),
1387
+ calc(
1388
+ (clamp(0, b, 1) - var(--_mp-grey-inverse-accent) + 0.0000001) /
1389
+ (b - var(--_mp-grey-inverse-accent) + 0.0000001)
1390
+ )
1391
+ )
1392
+ )
1393
+ l calc(a * alpha) calc(b * alpha) / 1
1394
+ )
1395
+ srgb-linear r g b /
1396
+ min(
1397
+ calc(
1398
+ (clamp(0, r, 1) - var(--_mp-grey-inverse-accent) + 0.0000001) /
1399
+ (r - var(--_mp-grey-inverse-accent) + 0.0000001)
1400
+ ),
1401
+ calc(
1402
+ (clamp(0, g, 1) - var(--_mp-grey-inverse-accent) + 0.0000001) /
1403
+ (g - var(--_mp-grey-inverse-accent) + 0.0000001)
1404
+ ),
1405
+ calc(
1406
+ (clamp(0, b, 1) - var(--_mp-grey-inverse-accent) + 0.0000001) /
1407
+ (b - var(--_mp-grey-inverse-accent) + 0.0000001)
1408
+ )
1409
+ )
1410
+ )
1411
+ srgb-linear
1412
+ calc(var(--_mp-grey-inverse-accent) + alpha * (r - var(--_mp-grey-inverse-accent)))
1413
+ calc(var(--_mp-grey-inverse-accent) + alpha * (g - var(--_mp-grey-inverse-accent)))
1414
+ calc(var(--_mp-grey-inverse-accent) + alpha * (b - var(--_mp-grey-inverse-accent))) / 1
706
1415
  )
707
1416
  )
708
1417
  );
@@ -844,28 +1553,234 @@
844
1553
  --mp-sys-color-error,
845
1554
  var(
846
1555
  --md-sys-color-error,
847
- oklch(var(--_mp-tone-error) var(--_mp-chroma-error) var(--_mp-hue-error))
1556
+ color(
1557
+ from
1558
+ color(
1559
+ from
1560
+ oklab(
1561
+ from
1562
+ color(
1563
+ from oklch(var(--_mp-tone-error) var(--_mp-chroma-error) var(--_mp-hue-error))
1564
+ srgb-linear r g b /
1565
+ min(
1566
+ calc(
1567
+ (clamp(0, r, 1) - var(--_mp-grey-error) + 0.0000001) /
1568
+ (r - var(--_mp-grey-error) + 0.0000001)
1569
+ ),
1570
+ calc(
1571
+ (clamp(0, g, 1) - var(--_mp-grey-error) + 0.0000001) /
1572
+ (g - var(--_mp-grey-error) + 0.0000001)
1573
+ ),
1574
+ calc(
1575
+ (clamp(0, b, 1) - var(--_mp-grey-error) + 0.0000001) /
1576
+ (b - var(--_mp-grey-error) + 0.0000001)
1577
+ )
1578
+ )
1579
+ )
1580
+ l calc(a * alpha) calc(b * alpha) / 1
1581
+ )
1582
+ srgb-linear r g b /
1583
+ min(
1584
+ calc(
1585
+ (clamp(0, r, 1) - var(--_mp-grey-error) + 0.0000001) /
1586
+ (r - var(--_mp-grey-error) + 0.0000001)
1587
+ ),
1588
+ calc(
1589
+ (clamp(0, g, 1) - var(--_mp-grey-error) + 0.0000001) /
1590
+ (g - var(--_mp-grey-error) + 0.0000001)
1591
+ ),
1592
+ calc(
1593
+ (clamp(0, b, 1) - var(--_mp-grey-error) + 0.0000001) /
1594
+ (b - var(--_mp-grey-error) + 0.0000001)
1595
+ )
1596
+ )
1597
+ )
1598
+ srgb-linear calc(var(--_mp-grey-error) + alpha * (r - var(--_mp-grey-error)))
1599
+ calc(var(--_mp-grey-error) + alpha * (g - var(--_mp-grey-error)))
1600
+ calc(var(--_mp-grey-error) + alpha * (b - var(--_mp-grey-error))) / 1
1601
+ )
848
1602
  )
849
1603
  );
850
1604
  --_mp-color-on-error: var(
851
1605
  --mp-sys-color-on-error,
852
1606
  var(
853
1607
  --md-sys-color-on-error,
854
- oklch(var(--_mp-tone-on-accent) var(--_mp-palette-error) var(--_mp-hue-error))
1608
+ color(
1609
+ from
1610
+ color(
1611
+ from
1612
+ oklab(
1613
+ from
1614
+ color(
1615
+ from
1616
+ oklch(
1617
+ var(--_mp-tone-on-accent) var(--_mp-palette-error) var(--_mp-hue-error)
1618
+ )
1619
+ srgb-linear r g b /
1620
+ min(
1621
+ calc(
1622
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1623
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
1624
+ ),
1625
+ calc(
1626
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1627
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
1628
+ ),
1629
+ calc(
1630
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1631
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
1632
+ )
1633
+ )
1634
+ )
1635
+ l calc(a * alpha) calc(b * alpha) / 1
1636
+ )
1637
+ srgb-linear r g b /
1638
+ min(
1639
+ calc(
1640
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1641
+ (r - var(--_mp-grey-on-accent) + 0.0000001)
1642
+ ),
1643
+ calc(
1644
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1645
+ (g - var(--_mp-grey-on-accent) + 0.0000001)
1646
+ ),
1647
+ calc(
1648
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent) + 0.0000001) /
1649
+ (b - var(--_mp-grey-on-accent) + 0.0000001)
1650
+ )
1651
+ )
1652
+ )
1653
+ srgb-linear calc(var(--_mp-grey-on-accent) + alpha * (r - var(--_mp-grey-on-accent)))
1654
+ calc(var(--_mp-grey-on-accent) + alpha * (g - var(--_mp-grey-on-accent)))
1655
+ calc(var(--_mp-grey-on-accent) + alpha * (b - var(--_mp-grey-on-accent))) / 1
1656
+ )
855
1657
  )
856
1658
  );
857
1659
  --_mp-color-error-container: var(
858
1660
  --mp-sys-color-error-container,
859
1661
  var(
860
1662
  --md-sys-color-error-container,
861
- oklch(var(--_mp-tone-accent-container) var(--_mp-palette-error) var(--_mp-hue-error))
1663
+ color(
1664
+ from
1665
+ color(
1666
+ from
1667
+ oklab(
1668
+ from
1669
+ color(
1670
+ from
1671
+ oklch(
1672
+ var(--_mp-tone-accent-container) var(--_mp-palette-error)
1673
+ var(--_mp-hue-error)
1674
+ )
1675
+ srgb-linear r g b /
1676
+ min(
1677
+ calc(
1678
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1679
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
1680
+ ),
1681
+ calc(
1682
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1683
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
1684
+ ),
1685
+ calc(
1686
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1687
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
1688
+ )
1689
+ )
1690
+ )
1691
+ l calc(a * alpha) calc(b * alpha) / 1
1692
+ )
1693
+ srgb-linear r g b /
1694
+ min(
1695
+ calc(
1696
+ (clamp(0, r, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1697
+ (r - var(--_mp-grey-accent-container) + 0.0000001)
1698
+ ),
1699
+ calc(
1700
+ (clamp(0, g, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1701
+ (g - var(--_mp-grey-accent-container) + 0.0000001)
1702
+ ),
1703
+ calc(
1704
+ (clamp(0, b, 1) - var(--_mp-grey-accent-container) + 0.0000001) /
1705
+ (b - var(--_mp-grey-accent-container) + 0.0000001)
1706
+ )
1707
+ )
1708
+ )
1709
+ srgb-linear
1710
+ calc(var(--_mp-grey-accent-container) + alpha * (r - var(--_mp-grey-accent-container)))
1711
+ calc(var(--_mp-grey-accent-container) + alpha * (g - var(--_mp-grey-accent-container)))
1712
+ calc(
1713
+ var(--_mp-grey-accent-container) + alpha * (b - var(--_mp-grey-accent-container))
1714
+ ) /
1715
+ 1
1716
+ )
862
1717
  )
863
1718
  );
864
1719
  --_mp-color-on-error-container: var(
865
1720
  --mp-sys-color-on-error-container,
866
1721
  var(
867
1722
  --md-sys-color-on-error-container,
868
- oklch(var(--_mp-tone-on-accent-container) var(--_mp-palette-error) var(--_mp-hue-error))
1723
+ color(
1724
+ from
1725
+ color(
1726
+ from
1727
+ oklab(
1728
+ from
1729
+ color(
1730
+ from
1731
+ oklch(
1732
+ var(--_mp-tone-on-accent-container) var(--_mp-palette-error)
1733
+ var(--_mp-hue-error)
1734
+ )
1735
+ srgb-linear r g b /
1736
+ min(
1737
+ calc(
1738
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1739
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
1740
+ ),
1741
+ calc(
1742
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1743
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
1744
+ ),
1745
+ calc(
1746
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1747
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
1748
+ )
1749
+ )
1750
+ )
1751
+ l calc(a * alpha) calc(b * alpha) / 1
1752
+ )
1753
+ srgb-linear r g b /
1754
+ min(
1755
+ calc(
1756
+ (clamp(0, r, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1757
+ (r - var(--_mp-grey-on-accent-container) + 0.0000001)
1758
+ ),
1759
+ calc(
1760
+ (clamp(0, g, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1761
+ (g - var(--_mp-grey-on-accent-container) + 0.0000001)
1762
+ ),
1763
+ calc(
1764
+ (clamp(0, b, 1) - var(--_mp-grey-on-accent-container) + 0.0000001) /
1765
+ (b - var(--_mp-grey-on-accent-container) + 0.0000001)
1766
+ )
1767
+ )
1768
+ )
1769
+ srgb-linear
1770
+ calc(
1771
+ var(--_mp-grey-on-accent-container) + alpha *
1772
+ (r - var(--_mp-grey-on-accent-container))
1773
+ )
1774
+ calc(
1775
+ var(--_mp-grey-on-accent-container) + alpha *
1776
+ (g - var(--_mp-grey-on-accent-container))
1777
+ )
1778
+ calc(
1779
+ var(--_mp-grey-on-accent-container) + alpha *
1780
+ (b - var(--_mp-grey-on-accent-container))
1781
+ ) /
1782
+ 1
1783
+ )
869
1784
  )
870
1785
  );
871
1786
 
@@ -998,6 +1913,256 @@
998
1913
  --ease-mp-standard: var(--mp-sys-motion-easing-standard);
999
1914
  }
1000
1915
 
1916
+ /*
1917
+ * The colour roles again, for a browser that cannot compute them.
1918
+ *
1919
+ * The roles above need relative colour syntax, and the gamut step inside the
1920
+ * accent and error roles needs `clamp()` and `min()` on a channel, which is
1921
+ * newer still. A role a browser cannot compute does not fail loudly: it is
1922
+ * invalid at computed-value time, so every property that reads it falls back
1923
+ * to its initial value — a filled button with no fill, a dialog with no sheet
1924
+ * behind its text. The block below keeps the colours in the browsers without
1925
+ * that syntax, Chrome and Edge before 119, Firefox before 128 and Safari
1926
+ * before 18, and every browser that has it skips the block.
1927
+ *
1928
+ * What those browsers get is the default scheme, light and dark, written out
1929
+ * as the colours a current browser draws for the default `--mp-source-color`.
1930
+ * A `--mp-source-color` set by a consumer changes nothing there, because
1931
+ * reading a hue out of a colour is exactly what they cannot do. A role set
1932
+ * through `--mp-sys-color-*` or `--md-sys-color-*` still wins, as it does
1933
+ * everywhere.
1934
+ *
1935
+ * The condition asks for the syntax the roles are written in rather than
1936
+ * naming a browser. The origin is a literal `red` and not `var()`, because any
1937
+ * declaration containing `var()` passes `@supports` unparsed. Safari 16.4 to
1938
+ * 17.6 implement an earlier draft of relative colour syntax, in which hue
1939
+ * arithmetic needs a unit and a channel cannot go inside `clamp()`, and both
1940
+ * halves of the condition turn them away. Measured in WebKit 16.4 and 17.4.
1941
+ *
1942
+ * `test/styles/relative-colour.test.tsx` holds every value below to the colour
1943
+ * the roles above draw, in both schemes, and names the new value when a tone
1944
+ * stop moves.
1945
+ */
1946
+ @supports not (
1947
+ (color: oklch(from red l c calc(h + 1))) and
1948
+ (color: color(from red srgb-linear clamp(0, r, 1) g b / min(1, r)))
1949
+ ) {
1950
+ :root,
1951
+ [data-mp-scheme='light'] {
1952
+ --_mp-fallback-primary: #0a67a0;
1953
+ --_mp-fallback-on-primary: #ffffff;
1954
+ --_mp-fallback-primary-container: #cfe8fd;
1955
+ --_mp-fallback-on-primary-container: #00213b;
1956
+ --_mp-fallback-secondary: #536574;
1957
+ --_mp-fallback-on-secondary: #ffffff;
1958
+ --_mp-fallback-secondary-container: #d2e7f8;
1959
+ --_mp-fallback-on-secondary-container: #12212e;
1960
+ --_mp-fallback-tertiary: #6b5a7a;
1961
+ --_mp-fallback-on-tertiary: #ffffff;
1962
+ --_mp-fallback-tertiary-container: #eedbff;
1963
+ --_mp-fallback-on-tertiary-container: #271833;
1964
+ --_mp-fallback-surface: #f3fbff;
1965
+ --_mp-fallback-surface-container-low: #eef5fc;
1966
+ --_mp-fallback-surface-container: #e8f1f9;
1967
+ --_mp-fallback-surface-container-high: #e1eaf2;
1968
+ --_mp-fallback-surface-container-highest: #dbe4eb;
1969
+ --_mp-fallback-inverse-surface: #2c3237;
1970
+ --_mp-fallback-inverse-on-surface: #ebf3f9;
1971
+ --_mp-fallback-inverse-primary: #99d0fd;
1972
+ --_mp-fallback-on-surface: #181d21;
1973
+ --_mp-fallback-on-surface-variant: #3f4850;
1974
+ --_mp-fallback-outline: #6f7880;
1975
+ --_mp-fallback-outline-variant: #bec9d2;
1976
+ --_mp-fallback-error: #b3261e;
1977
+ --_mp-fallback-on-error: #ffffff;
1978
+ --_mp-fallback-error-container: #fddbd5;
1979
+ --_mp-fallback-on-error-container: #400705;
1980
+ }
1981
+
1982
+ @media (prefers-color-scheme: dark) {
1983
+ :root:not([data-mp-scheme='light']) {
1984
+ --_mp-fallback-primary: #99d0fd;
1985
+ --_mp-fallback-on-primary: #00375b;
1986
+ --_mp-fallback-primary-container: #004e7d;
1987
+ --_mp-fallback-on-primary-container: #cfe8fd;
1988
+ --_mp-fallback-secondary: #b7ccde;
1989
+ --_mp-fallback-on-secondary: #263644;
1990
+ --_mp-fallback-secondary-container: #3b4d5b;
1991
+ --_mp-fallback-on-secondary-container: #d2e7f8;
1992
+ --_mp-fallback-tertiary: #d5bfe7;
1993
+ --_mp-fallback-on-tertiary: #3d2c49;
1994
+ --_mp-fallback-tertiary-container: #534261;
1995
+ --_mp-fallback-on-tertiary-container: #eedbff;
1996
+ --_mp-fallback-surface: #0e1418;
1997
+ --_mp-fallback-surface-container-low: #181d21;
1998
+ --_mp-fallback-surface-container: #1b2126;
1999
+ --_mp-fallback-surface-container-high: #252b30;
2000
+ --_mp-fallback-surface-container-highest: #30363b;
2001
+ --_mp-fallback-inverse-surface: #dbe4eb;
2002
+ --_mp-fallback-inverse-on-surface: #2c3237;
2003
+ --_mp-fallback-inverse-primary: #0a67a0;
2004
+ --_mp-fallback-on-surface: #dbe4eb;
2005
+ --_mp-fallback-on-surface-variant: #bec9d2;
2006
+ --_mp-fallback-outline: #8a939a;
2007
+ --_mp-fallback-outline-variant: #3f4850;
2008
+ --_mp-fallback-error: #f2b8b5;
2009
+ --_mp-fallback-on-error: #650714;
2010
+ --_mp-fallback-error-container: #8e031d;
2011
+ --_mp-fallback-on-error-container: #fedad8;
2012
+ }
2013
+ }
2014
+
2015
+ [data-mp-scheme='dark'],
2016
+ .dark {
2017
+ --_mp-fallback-primary: #99d0fd;
2018
+ --_mp-fallback-on-primary: #00375b;
2019
+ --_mp-fallback-primary-container: #004e7d;
2020
+ --_mp-fallback-on-primary-container: #cfe8fd;
2021
+ --_mp-fallback-secondary: #b7ccde;
2022
+ --_mp-fallback-on-secondary: #263644;
2023
+ --_mp-fallback-secondary-container: #3b4d5b;
2024
+ --_mp-fallback-on-secondary-container: #d2e7f8;
2025
+ --_mp-fallback-tertiary: #d5bfe7;
2026
+ --_mp-fallback-on-tertiary: #3d2c49;
2027
+ --_mp-fallback-tertiary-container: #534261;
2028
+ --_mp-fallback-on-tertiary-container: #eedbff;
2029
+ --_mp-fallback-surface: #0e1418;
2030
+ --_mp-fallback-surface-container-low: #181d21;
2031
+ --_mp-fallback-surface-container: #1b2126;
2032
+ --_mp-fallback-surface-container-high: #252b30;
2033
+ --_mp-fallback-surface-container-highest: #30363b;
2034
+ --_mp-fallback-inverse-surface: #dbe4eb;
2035
+ --_mp-fallback-inverse-on-surface: #2c3237;
2036
+ --_mp-fallback-inverse-primary: #0a67a0;
2037
+ --_mp-fallback-on-surface: #dbe4eb;
2038
+ --_mp-fallback-on-surface-variant: #bec9d2;
2039
+ --_mp-fallback-outline: #8a939a;
2040
+ --_mp-fallback-outline-variant: #3f4850;
2041
+ --_mp-fallback-error: #f2b8b5;
2042
+ --_mp-fallback-on-error: #650714;
2043
+ --_mp-fallback-error-container: #8e031d;
2044
+ --_mp-fallback-on-error-container: #fedad8;
2045
+ }
2046
+
2047
+ *,
2048
+ ::before,
2049
+ ::after,
2050
+ ::backdrop {
2051
+ --_mp-color-primary: var(
2052
+ --mp-sys-color-primary,
2053
+ var(--md-sys-color-primary, var(--_mp-fallback-primary))
2054
+ );
2055
+ --_mp-color-on-primary: var(
2056
+ --mp-sys-color-on-primary,
2057
+ var(--md-sys-color-on-primary, var(--_mp-fallback-on-primary))
2058
+ );
2059
+ --_mp-color-primary-container: var(
2060
+ --mp-sys-color-primary-container,
2061
+ var(--md-sys-color-primary-container, var(--_mp-fallback-primary-container))
2062
+ );
2063
+ --_mp-color-on-primary-container: var(
2064
+ --mp-sys-color-on-primary-container,
2065
+ var(--md-sys-color-on-primary-container, var(--_mp-fallback-on-primary-container))
2066
+ );
2067
+ --_mp-color-secondary: var(
2068
+ --mp-sys-color-secondary,
2069
+ var(--md-sys-color-secondary, var(--_mp-fallback-secondary))
2070
+ );
2071
+ --_mp-color-on-secondary: var(
2072
+ --mp-sys-color-on-secondary,
2073
+ var(--md-sys-color-on-secondary, var(--_mp-fallback-on-secondary))
2074
+ );
2075
+ --_mp-color-secondary-container: var(
2076
+ --mp-sys-color-secondary-container,
2077
+ var(--md-sys-color-secondary-container, var(--_mp-fallback-secondary-container))
2078
+ );
2079
+ --_mp-color-on-secondary-container: var(
2080
+ --mp-sys-color-on-secondary-container,
2081
+ var(--md-sys-color-on-secondary-container, var(--_mp-fallback-on-secondary-container))
2082
+ );
2083
+ --_mp-color-tertiary: var(
2084
+ --mp-sys-color-tertiary,
2085
+ var(--md-sys-color-tertiary, var(--_mp-fallback-tertiary))
2086
+ );
2087
+ --_mp-color-on-tertiary: var(
2088
+ --mp-sys-color-on-tertiary,
2089
+ var(--md-sys-color-on-tertiary, var(--_mp-fallback-on-tertiary))
2090
+ );
2091
+ --_mp-color-tertiary-container: var(
2092
+ --mp-sys-color-tertiary-container,
2093
+ var(--md-sys-color-tertiary-container, var(--_mp-fallback-tertiary-container))
2094
+ );
2095
+ --_mp-color-on-tertiary-container: var(
2096
+ --mp-sys-color-on-tertiary-container,
2097
+ var(--md-sys-color-on-tertiary-container, var(--_mp-fallback-on-tertiary-container))
2098
+ );
2099
+ --_mp-color-surface: var(
2100
+ --mp-sys-color-surface,
2101
+ var(--md-sys-color-surface, var(--_mp-fallback-surface))
2102
+ );
2103
+ --_mp-color-surface-container-low: var(
2104
+ --mp-sys-color-surface-container-low,
2105
+ var(--md-sys-color-surface-container-low, var(--_mp-fallback-surface-container-low))
2106
+ );
2107
+ --_mp-color-surface-container: var(
2108
+ --mp-sys-color-surface-container,
2109
+ var(--md-sys-color-surface-container, var(--_mp-fallback-surface-container))
2110
+ );
2111
+ --_mp-color-surface-container-high: var(
2112
+ --mp-sys-color-surface-container-high,
2113
+ var(--md-sys-color-surface-container-high, var(--_mp-fallback-surface-container-high))
2114
+ );
2115
+ --_mp-color-surface-container-highest: var(
2116
+ --mp-sys-color-surface-container-highest,
2117
+ var(--md-sys-color-surface-container-highest, var(--_mp-fallback-surface-container-highest))
2118
+ );
2119
+ --_mp-color-inverse-surface: var(
2120
+ --mp-sys-color-inverse-surface,
2121
+ var(--md-sys-color-inverse-surface, var(--_mp-fallback-inverse-surface))
2122
+ );
2123
+ --_mp-color-inverse-on-surface: var(
2124
+ --mp-sys-color-inverse-on-surface,
2125
+ var(--md-sys-color-inverse-on-surface, var(--_mp-fallback-inverse-on-surface))
2126
+ );
2127
+ --_mp-color-inverse-primary: var(
2128
+ --mp-sys-color-inverse-primary,
2129
+ var(--md-sys-color-inverse-primary, var(--_mp-fallback-inverse-primary))
2130
+ );
2131
+ --_mp-color-on-surface: var(
2132
+ --mp-sys-color-on-surface,
2133
+ var(--md-sys-color-on-surface, var(--_mp-fallback-on-surface))
2134
+ );
2135
+ --_mp-color-on-surface-variant: var(
2136
+ --mp-sys-color-on-surface-variant,
2137
+ var(--md-sys-color-on-surface-variant, var(--_mp-fallback-on-surface-variant))
2138
+ );
2139
+ --_mp-color-outline: var(
2140
+ --mp-sys-color-outline,
2141
+ var(--md-sys-color-outline, var(--_mp-fallback-outline))
2142
+ );
2143
+ --_mp-color-outline-variant: var(
2144
+ --mp-sys-color-outline-variant,
2145
+ var(--md-sys-color-outline-variant, var(--_mp-fallback-outline-variant))
2146
+ );
2147
+ --_mp-color-error: var(
2148
+ --mp-sys-color-error,
2149
+ var(--md-sys-color-error, var(--_mp-fallback-error))
2150
+ );
2151
+ --_mp-color-on-error: var(
2152
+ --mp-sys-color-on-error,
2153
+ var(--md-sys-color-on-error, var(--_mp-fallback-on-error))
2154
+ );
2155
+ --_mp-color-error-container: var(
2156
+ --mp-sys-color-error-container,
2157
+ var(--md-sys-color-error-container, var(--_mp-fallback-error-container))
2158
+ );
2159
+ --_mp-color-on-error-container: var(
2160
+ --mp-sys-color-on-error-container,
2161
+ var(--md-sys-color-on-error-container, var(--_mp-fallback-on-error-container))
2162
+ );
2163
+ }
2164
+ }
2165
+
1001
2166
  :root {
1002
2167
  /*
1003
2168
  * No state opacities here. The spec's disabled treatment — content at 38%,
@@ -1460,10 +2625,14 @@
1460
2625
  * `min(span, columns)` is the clamp: `span={99}` fills its row instead of
1461
2626
  * running off the page, which is what the caller meant.
1462
2627
  *
1463
- * `span="grow"` is the one width that is not this arithmetic. It is the row's
1464
- * remainder, which nothing here can compute — only the flex algorithm knows what
1465
- * is left after the other items have been laid out — so a growing item is given
1466
- * a width of nought and a `flex-grow` of one, and takes the rest.
2628
+ * `span="grow"` and `span="auto"` are the two widths that are not this
2629
+ * arithmetic, and they are the two ends of it. `'grow'` is the row's remainder,
2630
+ * which nothing here can compute — only the flex algorithm knows what is left
2631
+ * after the other items have been laid out — so a growing item is given a width
2632
+ * of nought and a `flex-grow` of one, and takes the rest. `'auto'` is the width
2633
+ * of what is inside the item, which is `width: auto` and a keyword no `calc()`
2634
+ * produces — so it arrives as the whole declaration rather than as a number
2635
+ * inside one, on the `--_mp-width-*` rung.
1467
2636
  *
1468
2637
  * ## The rungs
1469
2638
  *
@@ -1643,8 +2812,8 @@
1643
2812
  * A grid is where a span stops meaning anything, so a grid is where the slots
1644
2813
  * are put back to nothing. `initial` on a custom property is the guaranteed-
1645
2814
  * invalid value, which is what makes the `var()` fallbacks above take over
1646
- * rather than a number from two levels up. Thirty declarations, once per grid,
1647
- * and the arithmetic under them is the same as it was.
2815
+ * rather than a number from two levels up. Thirty-five declarations, once per
2816
+ * grid, and the arithmetic under them is the same as it was.
1648
2817
  *
1649
2818
  * The grid's own three are here for the same reason the item's three are, and
1650
2819
  * were missing: a responsive prop writes only the classes the caller named, so
@@ -1687,6 +2856,11 @@
1687
2856
  --_mp-grow-expanded: initial;
1688
2857
  --_mp-grow-large: initial;
1689
2858
  --_mp-grow-extra-large: initial;
2859
+ --_mp-width-compact: initial;
2860
+ --_mp-width-medium: initial;
2861
+ --_mp-width-expanded: initial;
2862
+ --_mp-width-large: initial;
2863
+ --_mp-width-extra-large: initial;
1690
2864
 
1691
2865
  @variant mp-medium {
1692
2866
  --_mp-cols-1: var(--_mp-cols-medium, var(--_mp-cols-0));
@@ -1732,6 +2906,19 @@
1732
2906
  --_mp-grow-3: var(--_mp-grow-2);
1733
2907
  --_mp-grow: var(--_mp-grow-3);
1734
2908
 
2909
+ /* The one rung that carries a whole width rather than a number, because
2910
+ `span="auto"` is the width of what is inside the item and no arithmetic
2911
+ produces the keyword that says so. `MPGridItem` writes `auto` into the
2912
+ classes that asked for it and the columns below into the ones that did not,
2913
+ which is what stops an `auto` at `compact` reaching a number at `large` —
2914
+ the same job `--_mp-grow`'s explicit `0` does. A span that never mentions
2915
+ `auto` writes none of these and falls straight through to the columns. */
2916
+ --_mp-width-0: var(--_mp-width-compact, var(--_mp-span-width));
2917
+ --_mp-width-1: var(--_mp-width-0);
2918
+ --_mp-width-2: var(--_mp-width-1);
2919
+ --_mp-width-3: var(--_mp-width-2);
2920
+ --_mp-width: var(--_mp-width-3);
2921
+
1735
2922
  /* One column plus one gutter. `--_mp-cols` and `--_mp-gap-x` are inherited
1736
2923
  from the grid, so this re-resolves on its own at every window class. */
1737
2924
  --_mp-track: calc((100% + var(--_mp-gap-x, 0px)) / var(--_mp-cols, 12));
@@ -1739,6 +2926,8 @@
1739
2926
  /* Inseparable from the width under them: the three `flex` longhands stop the
1740
2927
  row resizing the item, `min-width` stops a long unbroken word doing the
1741
2928
  same, and `box-sizing` is what makes the percentage mean the whole item.
2929
+ `flex-basis: auto` is also the half of `span="auto"` that flex owns — the
2930
+ basis defers to `width`, and there `width` is the keyword itself.
1742
2931
 
1743
2932
  Longhands rather than `flex: 0 0 auto` because `--_mp-grow` is the one part
1744
2933
  of the shorthand that varies, and a shorthand cannot be half a variable. */
@@ -1748,38 +2937,47 @@
1748
2937
  flex-basis: auto;
1749
2938
  min-width: 0;
1750
2939
 
1751
- /* `1 - grow` is the switch, and it is arithmetic rather than a second
2940
+ /* What a span in columns comes to, and what the rung above falls back to when
2941
+ no class asked for `auto`.
2942
+
2943
+ `1 - grow` is the switch, and it is arithmetic rather than a second
1752
2944
  declaration because a custom property cannot choose between two rules.
1753
2945
  A growing item measures nought and is then handed the row's remainder by
1754
2946
  `flex-grow`, which is the only place that remainder is known; every other
1755
2947
  item multiplies its column count by one and is the width it always was. */
1756
- width: calc(
2948
+ --_mp-span-width: calc(
1757
2949
  (1 - var(--_mp-grow)) *
1758
2950
  (var(--_mp-track) * min(var(--_mp-span), var(--_mp-cols, 12)) - var(--_mp-gap-x, 0px))
1759
2951
  );
1760
2952
 
2953
+ width: var(--_mp-width);
2954
+
1761
2955
  @variant mp-medium {
1762
2956
  --_mp-span-1: var(--_mp-span-medium, var(--_mp-span-0));
1763
2957
  --_mp-offset-1: var(--_mp-offset-medium, var(--_mp-offset-0));
1764
2958
  --_mp-grow-1: var(--_mp-grow-medium, var(--_mp-grow-0));
2959
+ --_mp-width-1: var(--_mp-width-medium, var(--_mp-width-0));
1765
2960
  }
1766
2961
 
1767
2962
  @variant mp-expanded {
1768
2963
  --_mp-span-2: var(--_mp-span-expanded, var(--_mp-span-1));
1769
2964
  --_mp-offset-2: var(--_mp-offset-expanded, var(--_mp-offset-1));
1770
2965
  --_mp-grow-2: var(--_mp-grow-expanded, var(--_mp-grow-1));
2966
+ --_mp-width-2: var(--_mp-width-expanded, var(--_mp-width-1));
1771
2967
  }
1772
2968
 
1773
2969
  @variant mp-large {
1774
2970
  --_mp-span-3: var(--_mp-span-large, var(--_mp-span-2));
1775
2971
  --_mp-offset-3: var(--_mp-offset-large, var(--_mp-offset-2));
1776
2972
  --_mp-grow-3: var(--_mp-grow-large, var(--_mp-grow-2));
2973
+ --_mp-width-3: var(--_mp-width-large, var(--_mp-width-2));
1777
2974
  }
1778
2975
 
1779
2976
  @variant mp-extra-large {
1780
2977
  --_mp-span: var(--_mp-span-extra-large, var(--_mp-span-3));
1781
2978
  --_mp-offset: var(--_mp-offset-extra-large, var(--_mp-offset-3));
1782
2979
  --_mp-grow: var(--_mp-grow-extra-large, var(--_mp-grow-3));
2980
+ --_mp-width: var(--_mp-width-extra-large, var(--_mp-width-3));
1783
2981
  }
1784
2982
  }
1785
2983