material-plus-ui 1.9.0 → 1.11.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 (280) hide show
  1. package/README.md +2 -2
  2. package/dist/a2ui/extended/api.d.ts +4 -4
  3. package/dist/components/accordion/MPAccordion.d.ts +13 -0
  4. package/dist/components/accordion/MPAccordion.js +1 -1
  5. package/dist/components/accordion/index.d.ts +1 -1
  6. package/dist/components/animate-counter/MPAnimateCounter.js +1 -1
  7. package/dist/components/animate-headline/MPAnimateHeadline.d.ts +8 -0
  8. package/dist/components/animate-headline/MPAnimateHeadline.js +1 -1
  9. package/dist/components/animate-lighting/MPAnimateLighting.js +1 -1
  10. package/dist/components/animate-marquee/MPAnimateMarquee.js +1 -1
  11. package/dist/components/animate-scramble/MPAnimateScramble.d.ts +8 -0
  12. package/dist/components/animate-scramble/MPAnimateScramble.js +1 -1
  13. package/dist/components/animate-split/MPAnimateSplit.d.ts +8 -0
  14. package/dist/components/animate-split/MPAnimateSplit.js +1 -1
  15. package/dist/components/animate-typing/MPAnimateTyping.d.ts +10 -2
  16. package/dist/components/animate-typing/MPAnimateTyping.js +1 -1
  17. package/dist/components/app-logo/MPAppLogo.d.ts +6 -1
  18. package/dist/components/area-chart/MPAreaChart.js +1 -1
  19. package/dist/components/avatar/MPAvatar.d.ts +16 -0
  20. package/dist/components/avatar/MPAvatar.js +1 -1
  21. package/dist/components/badge/MPBadge.d.ts +7 -6
  22. package/dist/components/bar-chart/MPBarChart.js +1 -1
  23. package/dist/components/breadcrumb/MPBreadcrumb.d.ts +8 -0
  24. package/dist/components/breadcrumb/MPBreadcrumb.js +1 -1
  25. package/dist/components/button/MPButton.d.ts +5 -3
  26. package/dist/components/carousel/MPCarousel.js +1 -1
  27. package/dist/components/checkbox/MPCheckbox.js +1 -1
  28. package/dist/components/chip/MPChip.d.ts +1 -1
  29. package/dist/components/chip/MPChip.js +1 -1
  30. package/dist/components/code-block/MPCodeBlock.js +1 -1
  31. package/dist/components/collapsible/MPCollapsible.js +1 -1
  32. package/dist/components/color-picker/MPColorPicker.js +1 -1
  33. package/dist/components/combobox/MPCombobox.d.ts +3 -2
  34. package/dist/components/combobox/MPCombobox.js +1 -1
  35. package/dist/components/command-palette/MPCommandPalette.d.ts +3 -1
  36. package/dist/components/command-palette/MPCommandPalette.js +1 -1
  37. package/dist/components/config/MPConfigProvider.d.ts +17 -1
  38. package/dist/components/config/MPConfigProvider.js +1 -1
  39. package/dist/components/confirm/MPConfirmProvider.js +1 -1
  40. package/dist/components/data-table/MPDataTable.d.ts +3 -36
  41. package/dist/components/data-table/MPDataTable.js +1 -1
  42. package/dist/components/date-picker/MPDatePicker.js +1 -1
  43. package/dist/components/date-range-picker/MPDateRangePicker.js +1 -1
  44. package/dist/components/date-time-picker/MPDateTimePicker.js +1 -1
  45. package/dist/components/dialog/MPDialog.d.ts +3 -2
  46. package/dist/components/drawer/MPDrawer.d.ts +13 -1
  47. package/dist/components/drawer/MPDrawer.js +1 -1
  48. package/dist/components/file-picker/MPFilePicker.js +1 -1
  49. package/dist/components/floating-action-button/MPFloatingActionButton.d.ts +3 -1
  50. package/dist/components/floating-bottom-navigation/MPFloatingBottomNavigation.d.ts +10 -1
  51. package/dist/components/floating-bottom-navigation/MPFloatingBottomNavigation.js +1 -1
  52. package/dist/components/form/MPForm.d.ts +3 -0
  53. package/dist/components/form/MPForm.js +1 -1
  54. package/dist/components/gauge-chart/MPGaugeChart.js +1 -1
  55. package/dist/components/header/MPHeader.js +1 -1
  56. package/dist/components/heatmap-chart/MPHeatmapChart.js +1 -1
  57. package/dist/components/hover-card/MPHoverCard.d.ts +8 -7
  58. package/dist/components/icon-button/MPIconButton.js +1 -1
  59. package/dist/components/image/MPImage.d.ts +5 -0
  60. package/dist/components/image/MPImage.js +1 -1
  61. package/dist/components/line-chart/MPLineChart.js +1 -1
  62. package/dist/components/list/MPList.d.ts +3 -2
  63. package/dist/components/locale/MPLocaleProvider.d.ts +15 -30
  64. package/dist/components/locale/MPLocaleProvider.js +1 -1
  65. package/dist/components/menu/MPMenu.d.ts +9 -1
  66. package/dist/components/menu/MPMenu.js +1 -1
  67. package/dist/components/meter/MPMeter.d.ts +5 -0
  68. package/dist/components/meter/MPMeter.js +1 -1
  69. package/dist/components/mockup/MPMockup.js +1 -1
  70. package/dist/components/navigation-menu/MPNavigationMenu.d.ts +27 -1
  71. package/dist/components/navigation-menu/MPNavigationMenu.js +1 -1
  72. package/dist/components/number-field/MPNumberField.d.ts +2 -1
  73. package/dist/components/number-field/MPNumberField.js +1 -1
  74. package/dist/components/otp-field/MPOtpField.js +1 -1
  75. package/dist/components/page-layout/MPPageLayout.js +1 -1
  76. package/dist/components/pagination/MPPagination.d.ts +12 -4
  77. package/dist/components/pagination/MPPagination.js +1 -1
  78. package/dist/components/panes/MPPanes.js +1 -1
  79. package/dist/components/pie-chart/MPPieChart.js +1 -1
  80. package/dist/components/pill/MPPill.js +1 -1
  81. package/dist/components/progress-box/MPProgressBox.js +1 -1
  82. package/dist/components/progress-circular/MPProgressCircular.js +1 -1
  83. package/dist/components/progress-linear/MPProgressLinear.d.ts +4 -3
  84. package/dist/components/progress-linear/MPProgressLinear.js +1 -1
  85. package/dist/components/radio-group/MPRadioGroup.js +1 -1
  86. package/dist/components/scatter-chart/MPScatterChart.js +1 -1
  87. package/dist/components/segmented-button/MPSegmentedButton.js +1 -1
  88. package/dist/components/sidebar/MPSidebar.d.ts +15 -2
  89. package/dist/components/sidebar/MPSidebar.js +1 -1
  90. package/dist/components/slider/MPSlider.d.ts +5 -0
  91. package/dist/components/slider/MPSlider.js +1 -1
  92. package/dist/components/snackbar/MPSnackbar.d.ts +8 -6
  93. package/dist/components/snackbar/MPSnackbar.js +1 -1
  94. package/dist/components/stepper/MPStepper.d.ts +9 -7
  95. package/dist/components/stepper/MPStepper.js +1 -1
  96. package/dist/components/switch/MPSwitch.js +1 -1
  97. package/dist/components/table/MPTable.d.ts +7 -3
  98. package/dist/components/tabs/MPTabs.js +1 -1
  99. package/dist/components/text-field/MPTextField.d.ts +9 -0
  100. package/dist/components/text-field/MPTextField.js +1 -1
  101. package/dist/components/time-picker/MPTimePicker.js +1 -1
  102. package/dist/components/timeline-chart/MPTimelineChart.js +1 -1
  103. package/dist/components/toolbar/MPToolbar.d.ts +3 -3
  104. package/dist/components/tooltip/MPTooltip.d.ts +6 -0
  105. package/dist/components/tour/MPTour.js +1 -1
  106. package/dist/components/transfer/MPTransfer.js +1 -1
  107. package/dist/components/tree-select/MPTreeSelect.d.ts +12 -2
  108. package/dist/components/tree-select/MPTreeSelect.js +1 -1
  109. package/dist/components/tree-view/MPTreeView.d.ts +8 -0
  110. package/dist/components/tree-view/MPTreeView.js +1 -1
  111. package/dist/hooks/index.d.ts +4 -2
  112. package/dist/hooks/index.js +1 -1
  113. package/dist/hooks/mpColorSchemeScript.d.ts +46 -0
  114. package/dist/hooks/mpColorSchemeScript.js +1 -0
  115. package/dist/hooks/useMPColorScheme.d.ts +2 -47
  116. package/dist/hooks/useMPColorScheme.js +1 -1
  117. package/dist/hooks/useMPMediaQuery.js +1 -1
  118. package/dist/hooks/useMPOnScreen.js +1 -1
  119. package/dist/internal/Calendar.js +1 -1
  120. package/dist/internal/ChartChrome.d.ts +11 -2
  121. package/dist/internal/ChartChrome.js +1 -1
  122. package/dist/internal/ChartFrame.js +1 -1
  123. package/dist/internal/FieldOutline.d.ts +20 -2
  124. package/dist/internal/FieldOutline.js +1 -1
  125. package/dist/internal/FieldValue.d.ts +35 -0
  126. package/dist/internal/FieldValue.js +2 -0
  127. package/dist/internal/Picker.d.ts +24 -5
  128. package/dist/internal/Picker.js +1 -1
  129. package/dist/internal/RenderedLink.d.ts +20 -0
  130. package/dist/internal/RenderedLink.js +2 -0
  131. package/dist/internal/SupportingText.js +1 -1
  132. package/dist/internal/animate.d.ts +4 -0
  133. package/dist/internal/animate.js +1 -1
  134. package/dist/internal/box-size.d.ts +22 -0
  135. package/dist/internal/box-size.js +2 -0
  136. package/dist/internal/chart.d.ts +21 -11
  137. package/dist/internal/chart.js +1 -1
  138. package/dist/internal/color-scheme-keys.d.ts +13 -0
  139. package/dist/internal/color-scheme-keys.js +1 -0
  140. package/dist/internal/color-scheme.d.ts +11 -2
  141. package/dist/internal/color-scheme.js +1 -1
  142. package/dist/internal/config.d.ts +2 -0
  143. package/dist/internal/date.d.ts +2 -8
  144. package/dist/internal/date.js +1 -1
  145. package/dist/internal/fold.d.ts +45 -0
  146. package/dist/internal/fold.js +2 -0
  147. package/dist/internal/highlight.js +1 -1
  148. package/dist/internal/i18n.d.ts +6 -53
  149. package/dist/internal/i18n.js +1 -1
  150. package/dist/internal/intersection.d.ts +50 -0
  151. package/dist/internal/intersection.js +2 -0
  152. package/dist/internal/intl.d.ts +22 -21
  153. package/dist/internal/intl.js +1 -1
  154. package/dist/internal/keys.d.ts +0 -9
  155. package/dist/internal/keys.js +1 -1
  156. package/dist/internal/layout-effect.d.ts +7 -0
  157. package/dist/internal/layout-effect.js +2 -0
  158. package/dist/internal/locale.d.ts +10 -2
  159. package/dist/internal/media.d.ts +1 -0
  160. package/dist/internal/media.js +1 -0
  161. package/dist/internal/messages/common.js +1 -1
  162. package/dist/internal/occurrence.d.ts +18 -0
  163. package/dist/internal/occurrence.js +1 -0
  164. package/dist/internal/page-layout.js +1 -1
  165. package/dist/internal/progress.d.ts +5 -0
  166. package/dist/internal/ref.d.ts +9 -0
  167. package/dist/internal/ref.js +1 -0
  168. package/dist/internal/remember.d.ts +36 -0
  169. package/dist/internal/remember.js +1 -0
  170. package/dist/internal/surface.d.ts +7 -1
  171. package/dist/internal/surface.js +1 -1
  172. package/dist/internal/table.d.ts +4 -4
  173. package/dist/internal/text.d.ts +10 -4
  174. package/dist/internal/text.js +1 -1
  175. package/dist/internal/window-class.d.ts +8 -0
  176. package/dist/internal/window-class.js +1 -1
  177. package/dist/locales/ar.js +1 -1
  178. package/dist/locales/de.js +1 -1
  179. package/dist/locales/es.js +1 -1
  180. package/dist/locales/fr.js +1 -1
  181. package/dist/locales/hi.js +1 -1
  182. package/dist/locales/id.js +1 -1
  183. package/dist/locales/it.js +1 -1
  184. package/dist/locales/ja.js +1 -1
  185. package/dist/locales/ko.js +1 -1
  186. package/dist/locales/nl.js +1 -1
  187. package/dist/locales/pl.js +1 -1
  188. package/dist/locales/pt.js +1 -1
  189. package/dist/locales/ru.js +1 -1
  190. package/dist/locales/th.js +1 -1
  191. package/dist/locales/tr.js +1 -1
  192. package/dist/locales/vi.js +1 -1
  193. package/dist/locales/zh-hans.js +1 -1
  194. package/dist/locales/zh-hant.js +1 -1
  195. package/dist/styles/accordion.css +1 -1
  196. package/dist/styles/alert.css +1 -1
  197. package/dist/styles/animate-appear.css +1 -1
  198. package/dist/styles/animate-blink.css +1 -1
  199. package/dist/styles/animate-counter.css +1 -1
  200. package/dist/styles/animate-fade.css +1 -1
  201. package/dist/styles/animate-float.css +1 -1
  202. package/dist/styles/animate-grow.css +1 -1
  203. package/dist/styles/animate-headline.css +1 -1
  204. package/dist/styles/animate-lighting.css +1 -1
  205. package/dist/styles/animate-marquee.css +1 -1
  206. package/dist/styles/animate-reveal.css +1 -1
  207. package/dist/styles/animate-rotate.css +1 -1
  208. package/dist/styles/animate-scramble.css +1 -1
  209. package/dist/styles/animate-shake.css +1 -1
  210. package/dist/styles/animate-slide.css +1 -1
  211. package/dist/styles/animate-split.css +1 -1
  212. package/dist/styles/animate-typing.css +1 -1
  213. package/dist/styles/animate-zoom.css +1 -1
  214. package/dist/styles/avatar.css +1 -1
  215. package/dist/styles/blockquote.css +1 -1
  216. package/dist/styles/box.css +1 -1
  217. package/dist/styles/breadcrumb.css +1 -1
  218. package/dist/styles/calendar.css +1 -1
  219. package/dist/styles/card.css +1 -1
  220. package/dist/styles/carousel.css +1 -1
  221. package/dist/styles/checkbox.css +1 -1
  222. package/dist/styles/chip.css +1 -1
  223. package/dist/styles/collapsible.css +1 -1
  224. package/dist/styles/color-picker.css +1 -1
  225. package/dist/styles/combobox.css +1 -1
  226. package/dist/styles/command-palette.css +1 -1
  227. package/dist/styles/confirm.css +1 -1
  228. package/dist/styles/data-table.css +1 -1
  229. package/dist/styles/date-picker.css +1 -1
  230. package/dist/styles/date-range-picker.css +1 -1
  231. package/dist/styles/date-time-picker.css +1 -1
  232. package/dist/styles/dialog.css +1 -1
  233. package/dist/styles/drawer.css +1 -1
  234. package/dist/styles/empty.css +1 -1
  235. package/dist/styles/floating-bottom-navigation.css +1 -1
  236. package/dist/styles/footer.css +1 -1
  237. package/dist/styles/gauge-chart.css +1 -1
  238. package/dist/styles/header.css +1 -1
  239. package/dist/styles/highlight.css +1 -1
  240. package/dist/styles/hover-card.css +1 -1
  241. package/dist/styles/image.css +1 -1
  242. package/dist/styles/list.css +1 -1
  243. package/dist/styles/menu.css +1 -1
  244. package/dist/styles/menubar.css +1 -1
  245. package/dist/styles/meter.css +1 -1
  246. package/dist/styles/navigation-menu.css +1 -1
  247. package/dist/styles/number-field.css +1 -1
  248. package/dist/styles/otp-field.css +1 -1
  249. package/dist/styles/overlay.css +1 -1
  250. package/dist/styles/page-layout.css +1 -1
  251. package/dist/styles/pill.css +1 -1
  252. package/dist/styles/popconfirm.css +1 -1
  253. package/dist/styles/popover.css +1 -1
  254. package/dist/styles/progress-box.css +1 -1
  255. package/dist/styles/progress-circular.css +1 -1
  256. package/dist/styles/progress-linear.css +1 -1
  257. package/dist/styles/radio-group.css +1 -1
  258. package/dist/styles/segmented-button.css +1 -1
  259. package/dist/styles/select.css +1 -1
  260. package/dist/styles/sidebar.css +1 -1
  261. package/dist/styles/slider.css +1 -1
  262. package/dist/styles/snackbar.css +1 -1
  263. package/dist/styles/spoiler.css +1 -1
  264. package/dist/styles/stack.css +1 -1
  265. package/dist/styles/stepper.css +1 -1
  266. package/dist/styles/switch.css +1 -1
  267. package/dist/styles/table.css +1 -1
  268. package/dist/styles/tabs.css +1 -1
  269. package/dist/styles/text-field.css +1 -1
  270. package/dist/styles/time-picker.css +1 -1
  271. package/dist/styles/tokens.css +1 -1
  272. package/dist/styles/toolbar.css +1 -1
  273. package/dist/styles/tour.css +1 -1
  274. package/dist/styles/transfer.css +1 -1
  275. package/dist/styles/tree-select.css +1 -1
  276. package/dist/styles/tree-view.css +1 -1
  277. package/dist/styles/typography.css +1 -1
  278. package/dist/styles.css +1 -1
  279. package/dist/tailwind.css +178 -29
  280. package/package.json +1 -1
package/dist/tailwind.css CHANGED
@@ -95,6 +95,27 @@
95
95
  * Only the *derived* colours need it. Everything else here is a literal value
96
96
  * with no `var()` to freeze, so plain inheritance from `:root` is enough.
97
97
  *
98
+ * ## Why `*` and `::backdrop`, but not `::before` and `::after`
99
+ *
100
+ * The rule reaches every element of the page it is loaded into, not only the
101
+ * ones this library rendered, so what it costs per element is a cost to the
102
+ * whole page. A `::before` or `::after` in the selector multiplies it: a
103
+ * browser has to resolve both pseudo-elements of every element on the page to
104
+ * find out whether either one draws anything, and resolving each one means
105
+ * substituting all of the roles below again.
106
+ *
107
+ * Neither needs its own copy. A `::before` and an `::after` inherit from the
108
+ * element they belong to, which already holds the roles as resolved where it
109
+ * sits, and nothing sets a source colour, a tone stop or a role on a
110
+ * pseudo-element — so the copy they would compute is the copy they inherit.
111
+ * `::placeholder` and `::marker` have always been read this way. `::backdrop`
112
+ * stays, because before 2024 it inherited from nothing at all.
113
+ *
114
+ * Measured on a plain page of 1,430 elements with nothing of this library on
115
+ * it, the first style pass took 164ms in WebKit with the pseudo-elements in the
116
+ * selector and 21ms without them, against 9ms with no stylesheet at all;
117
+ * Firefox went from 68ms to 26ms. iOS runs every browser on WebKit.
118
+ *
98
119
  * The computed results are `--_mp-*`: private, read by the components, and not
99
120
  * a name to set. Material Web marks its own internal tokens the same way. The
100
121
  * indirection is load-bearing — it is what keeps a consumer's
@@ -530,8 +551,6 @@
530
551
  * passes the edge by less than 4% of one channel.
531
552
  */
532
553
  *,
533
- ::before,
534
- ::after,
535
554
  ::backdrop {
536
555
  /*
537
556
  * The grey each accent tone sits on, in linear light: an OKLCh lightness
@@ -2045,8 +2064,6 @@
2045
2064
  }
2046
2065
 
2047
2066
  *,
2048
- ::before,
2049
- ::after,
2050
2067
  ::backdrop {
2051
2068
  --_mp-color-primary: var(
2052
2069
  --mp-sys-color-primary,
@@ -2333,12 +2350,12 @@
2333
2350
  /*
2334
2351
  * Motion.
2335
2352
  *
2336
- * Seven of MD3's sixteen duration tokens and six of its seven easing curves
2337
- * — the ones something in the library actually reads, on the rule every
2338
- * other token here follows. `short4` is what a text field's label and
2339
- * outline transition on; most of the rest arrived with the `MPAnimate*`
2340
- * components, which take these as their defaults rather than numbers of
2341
- * their own.
2353
+ * Six of MD3's sixteen duration tokens, and its six standard and emphasized
2354
+ * easing curves with `linear` beside them — the ones something in the
2355
+ * library actually reads, on the rule every other token here follows.
2356
+ * `short4` is what a text field's label and outline transition on; most of
2357
+ * the rest arrived with the `MPAnimate*` components, which take these as
2358
+ * their defaults rather than numbers of their own.
2342
2359
  *
2343
2360
  * `short2` is the shortest of them and has one reader: an `MPSlider`'s
2344
2361
  * handle catching up with a value the keyboard moved. A control the reader
@@ -3100,40 +3117,70 @@
3100
3117
  *
3101
3118
  * MD3's indeterminate bar is a long sweep followed by a short one that catches
3102
3119
  * up — the second is what keeps the track from being empty for most of the
3103
- * cycle. Both are written as `inset-inline-*` rather than as a translate so
3104
- * that the whole thing runs the other way under RTL without a second rule.
3120
+ * cycle. What makes a sweep read as one is that its two edges do not move
3121
+ * together: the head leaves first and settles, the tail lingers and then
3122
+ * hurries after it, so the bar stretches across the track and gathers itself
3123
+ * up at the far end. So each edge is an animation of its own, on a curve of its
3124
+ * own, and a bar wears two of them.
3125
+ *
3126
+ * The curves are the library's tokens rather than numbers of this rule's own —
3127
+ * `standard` for a head, which leaves quickly and arrives slowly, and
3128
+ * `standard-accelerate` for a tail — and the cycle is two `extra-long4`s. A
3129
+ * page that retunes its motion retunes this with it.
3130
+ *
3131
+ * Every edge runs the full cycle, with its pauses written as keyframes that
3132
+ * hold, so the four stay in step however long a cycle is. A bar is zero wide
3133
+ * at both ends of the cycle, which is what lets each loop start over without a
3134
+ * visible jump.
3135
+ *
3136
+ * Both edges are `inset-inline-*` rather than a translate, so that the whole
3137
+ * thing runs the other way under RTL without a second rule.
3105
3138
  */
3106
- @keyframes mp-progress-linear-lead {
3139
+ @keyframes mp-progress-linear-lead-head {
3107
3140
  0% {
3108
- inset-inline-start: -35%;
3109
3141
  inset-inline-end: 100%;
3110
3142
  }
3111
3143
 
3112
- 60% {
3113
- inset-inline-start: 100%;
3114
- inset-inline-end: -90%;
3144
+ 50%,
3145
+ 100% {
3146
+ inset-inline-end: 0%;
3147
+ }
3148
+ }
3149
+
3150
+ @keyframes mp-progress-linear-lead-tail {
3151
+ 0%,
3152
+ 20% {
3153
+ inset-inline-start: 0%;
3115
3154
  }
3116
3155
 
3156
+ 70%,
3117
3157
  100% {
3118
3158
  inset-inline-start: 100%;
3119
- inset-inline-end: -90%;
3120
3159
  }
3121
3160
  }
3122
3161
 
3123
- @keyframes mp-progress-linear-trail {
3124
- 0% {
3125
- inset-inline-start: -200%;
3162
+ /* The catch-up: it sets off as the first bar slows at the far end, and covers
3163
+ the same track in a little over half the time. */
3164
+ @keyframes mp-progress-linear-trail-head {
3165
+ 0%,
3166
+ 50% {
3126
3167
  inset-inline-end: 100%;
3127
3168
  }
3128
3169
 
3129
- 60% {
3130
- inset-inline-start: 107%;
3131
- inset-inline-end: -8%;
3170
+ 80%,
3171
+ 100% {
3172
+ inset-inline-end: 0%;
3173
+ }
3174
+ }
3175
+
3176
+ @keyframes mp-progress-linear-trail-tail {
3177
+ 0%,
3178
+ 62% {
3179
+ inset-inline-start: 0%;
3132
3180
  }
3133
3181
 
3134
3182
  100% {
3135
- inset-inline-start: 107%;
3136
- inset-inline-end: -8%;
3183
+ inset-inline-start: 100%;
3137
3184
  }
3138
3185
  }
3139
3186
 
@@ -3196,13 +3243,20 @@
3196
3243
  }
3197
3244
  }
3198
3245
 
3246
+ .mp-progress-linear-lead,
3247
+ .mp-progress-linear-trail {
3248
+ animation-duration: calc(var(--mp-sys-motion-duration-extra-long4) * 2);
3249
+ animation-timing-function:
3250
+ var(--mp-sys-motion-easing-standard), var(--mp-sys-motion-easing-standard-accelerate);
3251
+ animation-iteration-count: infinite;
3252
+ }
3253
+
3199
3254
  .mp-progress-linear-lead {
3200
- animation: mp-progress-linear-lead 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
3255
+ animation-name: mp-progress-linear-lead-head, mp-progress-linear-lead-tail;
3201
3256
  }
3202
3257
 
3203
3258
  .mp-progress-linear-trail {
3204
- animation: mp-progress-linear-trail 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
3205
- animation-delay: 1.15s;
3259
+ animation-name: mp-progress-linear-trail-head, mp-progress-linear-trail-tail;
3206
3260
  }
3207
3261
 
3208
3262
  .mp-progress-circular-turn {
@@ -3849,6 +3903,21 @@
3849
3903
  }
3850
3904
  }
3851
3905
 
3906
+ /*
3907
+ * And the same for a page read without JavaScript.
3908
+ *
3909
+ * An entrance waiting for `trigger="visible"`, `manual` or `hover` sits paused
3910
+ * on its first frame until script starts it, and with no script that is
3911
+ * forever: the content was in the markup and drawn at `opacity: 0`, invisible
3912
+ * to the reader and present for nobody but a crawler. With scripting off the
3913
+ * entrance is dropped and the content shown, which is what it was carrying.
3914
+ */
3915
+ @media (scripting: none) {
3916
+ .mp-anim {
3917
+ animation: none;
3918
+ }
3919
+ }
3920
+
3852
3921
  /*
3853
3922
  * Lighting: a light travelling around the outside of something.
3854
3923
  *
@@ -3917,6 +3986,23 @@
3917
3986
  }
3918
3987
  }
3919
3988
 
3989
+ /*
3990
+ * The endless loops, held while they are off screen.
3991
+ *
3992
+ * `data-mp-offscreen` is written by the component while its element is out of
3993
+ * the viewport. A loop nobody can see is still one the browser runs — a style
3994
+ * pass a frame for the glow's angle, and a layout pass a frame for the linear
3995
+ * indicator, whose bars move by `inset`. Paused, each carries on from where it
3996
+ * stopped when it comes back, which for a loop is no difference at all.
3997
+ */
3998
+ .mp-anim-lighting[data-mp-offscreen]::before,
3999
+ .mp-progress-linear[data-mp-offscreen] .mp-progress-linear-lead,
4000
+ .mp-progress-linear[data-mp-offscreen] .mp-progress-linear-trail,
4001
+ .mp-progress-circular[data-mp-offscreen] .mp-progress-circular-turn,
4002
+ .mp-progress-circular[data-mp-offscreen] .mp-progress-circular-arc {
4003
+ animation-play-state: paused;
4004
+ }
4005
+
3920
4006
  /*
3921
4007
  * Marquee: two identical copies, both moving by exactly one copy plus the gap.
3922
4008
  *
@@ -4469,3 +4555,66 @@
4469
4555
  inline-size: calc(var(--_mp-tree-indent) / 2 - 2px);
4470
4556
  border-block-start: 1px solid var(--_mp-color-outline-variant);
4471
4557
  }
4558
+
4559
+ /* ---------------------------------------------------------------------------
4560
+ * A fixed header's room, before the layout has measured it
4561
+ *
4562
+ * `MPPageLayout` keeps a fixed `MPHeader` from covering the top of the page by
4563
+ * measuring the bar and padding the page by its height. The measurement is an
4564
+ * effect, so on a server-rendered page the content was drawn under the bar and
4565
+ * then pushed down by its height once the page had hydrated — a layout shift
4566
+ * of a whole header's worth, on every page with one.
4567
+ *
4568
+ * These give the padding a first answer that needs no script: a fixed bar's
4569
+ * height is its size's rung on the ladder, plus a pixel for the rule an
4570
+ * `outlined` one draws under itself. The measurement still wins the moment it
4571
+ * arrives, and it then moves nothing unless the bar's content made it taller
4572
+ * than its rung. Only a bar that is the layout's own header is counted — the
4573
+ * slot it sits in when the header spans the page, or the content column's when
4574
+ * it does not — so a layout nested inside another does not answer for it.
4575
+ *
4576
+ * In a browser without `:has()` there is no first answer, which is how every
4577
+ * browser behaved before.
4578
+ * ------------------------------------------------------------------------- */
4579
+
4580
+ .mp-page-layout:is(
4581
+ :has(> .mp-header[data-mp-position='fixed'][data-mp-variant='outlined']),
4582
+ :has(> div > div > .mp-header[data-mp-position='fixed'][data-mp-variant='outlined'])
4583
+ ) {
4584
+ --_mp-layout-header-rule: 1px;
4585
+ }
4586
+
4587
+ .mp-page-layout:is(
4588
+ :has(> .mp-header[data-mp-position='fixed'][data-mp-size='xs']),
4589
+ :has(> div > div > .mp-header[data-mp-position='fixed'][data-mp-size='xs'])
4590
+ ) {
4591
+ --_mp-layout-header-seed: calc(3rem + var(--_mp-layout-header-rule, 0px));
4592
+ }
4593
+
4594
+ .mp-page-layout:is(
4595
+ :has(> .mp-header[data-mp-position='fixed'][data-mp-size='sm']),
4596
+ :has(> div > div > .mp-header[data-mp-position='fixed'][data-mp-size='sm'])
4597
+ ) {
4598
+ --_mp-layout-header-seed: calc(3.5rem + var(--_mp-layout-header-rule, 0px));
4599
+ }
4600
+
4601
+ .mp-page-layout:is(
4602
+ :has(> .mp-header[data-mp-position='fixed'][data-mp-size='md']),
4603
+ :has(> div > div > .mp-header[data-mp-position='fixed'][data-mp-size='md'])
4604
+ ) {
4605
+ --_mp-layout-header-seed: calc(4rem + var(--_mp-layout-header-rule, 0px));
4606
+ }
4607
+
4608
+ .mp-page-layout:is(
4609
+ :has(> .mp-header[data-mp-position='fixed'][data-mp-size='lg']),
4610
+ :has(> div > div > .mp-header[data-mp-position='fixed'][data-mp-size='lg'])
4611
+ ) {
4612
+ --_mp-layout-header-seed: calc(5rem + var(--_mp-layout-header-rule, 0px));
4613
+ }
4614
+
4615
+ .mp-page-layout:is(
4616
+ :has(> .mp-header[data-mp-position='fixed'][data-mp-size='xl']),
4617
+ :has(> div > div > .mp-header[data-mp-position='fixed'][data-mp-size='xl'])
4618
+ ) {
4619
+ --_mp-layout-header-seed: calc(6rem + var(--_mp-layout-header-rule, 0px));
4620
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "material-plus-ui",
3
- "version": "1.9.0",
3
+ "version": "1.11.0",
4
4
  "description": "A React component library written from the Material Design 3 specification and extended past it — wider versions of the components it names, and the charts, data table and command palette it does not. Built on Base UI and Tailwind CSS v4, themed with CSS custom properties so it coexists with an existing Material setup. ESM only, types included.",
5
5
  "type": "module",
6
6
  "sideEffects": [