material 3.5.0 → 3.5.2

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 (132) hide show
  1. package/README.md +1 -1
  2. package/dist/components/menu/inner.d.ts +3 -3
  3. package/dist/components/menu/on-demand.d.ts +21 -0
  4. package/dist/components/{split-button/features/menu-on-demand.js → menu/on-demand.js} +26 -27
  5. package/dist/components/select/features.js +38 -16
  6. package/dist/components/split-button/features/menu.js +1 -1
  7. package/dist/elements/preupgrade/badge.css +1 -1
  8. package/dist/elements/preupgrade/bottom-app-bar.css +1 -1
  9. package/dist/elements/preupgrade/bottom-sheet.css +1 -1
  10. package/dist/elements/preupgrade/button-group.css +1 -1
  11. package/dist/elements/preupgrade/button.css +1 -1
  12. package/dist/elements/preupgrade/card.css +1 -1
  13. package/dist/elements/preupgrade/carousel.css +1 -1
  14. package/dist/elements/preupgrade/checkbox.css +1 -1
  15. package/dist/elements/preupgrade/chips.css +1 -1
  16. package/dist/elements/preupgrade/datepicker.css +1 -1
  17. package/dist/elements/preupgrade/dialog.css +1 -1
  18. package/dist/elements/preupgrade/divider.css +1 -1
  19. package/dist/elements/preupgrade/drawer.css +1 -1
  20. package/dist/elements/preupgrade/extended-fab.css +1 -1
  21. package/dist/elements/preupgrade/fab-menu.css +1 -1
  22. package/dist/elements/preupgrade/fab.css +1 -1
  23. package/dist/elements/preupgrade/icon-button.css +1 -1
  24. package/dist/elements/preupgrade/list.css +1 -1
  25. package/dist/elements/preupgrade/loading-indicator.css +1 -1
  26. package/dist/elements/preupgrade/menu.css +1 -1
  27. package/dist/elements/preupgrade/navigation-bar.css +1 -1
  28. package/dist/elements/preupgrade/navigation-rail.css +1 -1
  29. package/dist/elements/preupgrade/progress.css +1 -1
  30. package/dist/elements/preupgrade/radios.css +1 -1
  31. package/dist/elements/preupgrade/search.css +1 -1
  32. package/dist/elements/preupgrade/select.css +1 -1
  33. package/dist/elements/preupgrade/side-sheet.css +1 -1
  34. package/dist/elements/preupgrade/slider.css +1 -1
  35. package/dist/elements/preupgrade/snackbar.css +1 -1
  36. package/dist/elements/preupgrade/split-button.css +1 -1
  37. package/dist/elements/preupgrade/switch.css +1 -1
  38. package/dist/elements/preupgrade/tabs.css +1 -1
  39. package/dist/elements/preupgrade/text-field.css +1 -1
  40. package/dist/elements/preupgrade/timepicker.css +1 -1
  41. package/dist/elements/preupgrade/toolbar.css +1 -1
  42. package/dist/elements/preupgrade/tooltip.css +1 -1
  43. package/dist/elements/preupgrade/top-app-bar.css +1 -1
  44. package/dist/elements/preupgrade.css +1 -1
  45. package/dist/package.json +1 -1
  46. package/dist/ssr/react.js +145 -60
  47. package/dist/ssr/solid.js +0 -10
  48. package/dist/ssr/svelte.js +0 -15
  49. package/dist/ssr/vue.js +0 -21
  50. package/dist/styles/badge.css +1 -1
  51. package/dist/styles/base.css +1 -1
  52. package/dist/styles/bottom-app-bar.css +1 -1
  53. package/dist/styles/bottom-sheet.css +1 -1
  54. package/dist/styles/button-group.css +1 -1
  55. package/dist/styles/button.css +1 -1
  56. package/dist/styles/card.css +1 -1
  57. package/dist/styles/carousel.css +1 -1
  58. package/dist/styles/checkbox.css +1 -1
  59. package/dist/styles/chips.css +1 -1
  60. package/dist/styles/contrast.css +1 -1
  61. package/dist/styles/datepicker.css +1 -1
  62. package/dist/styles/dialog.css +1 -1
  63. package/dist/styles/divider.css +1 -1
  64. package/dist/styles/drawer.css +1 -1
  65. package/dist/styles/extended-fab.css +1 -1
  66. package/dist/styles/fab-menu.css +1 -1
  67. package/dist/styles/fab.css +1 -1
  68. package/dist/styles/icon-button.css +1 -1
  69. package/dist/styles/list.css +1 -1
  70. package/dist/styles/loading-indicator.css +1 -1
  71. package/dist/styles/menu.css +1 -1
  72. package/dist/styles/navigation-bar.css +1 -1
  73. package/dist/styles/navigation-rail.css +1 -1
  74. package/dist/styles/progress.css +1 -1
  75. package/dist/styles/radios.css +1 -1
  76. package/dist/styles/search.css +1 -1
  77. package/dist/styles/select.css +1 -1
  78. package/dist/styles/side-sheet.css +1 -1
  79. package/dist/styles/slider.css +1 -1
  80. package/dist/styles/snackbar.css +1 -1
  81. package/dist/styles/split-button.css +1 -1
  82. package/dist/styles/switch.css +1 -1
  83. package/dist/styles/tabs.css +1 -1
  84. package/dist/styles/text-field.css +1 -1
  85. package/dist/styles/timepicker.css +1 -1
  86. package/dist/styles/toolbar.css +1 -1
  87. package/dist/styles/tooltip.css +1 -1
  88. package/dist/styles/top-app-bar.css +1 -1
  89. package/dist/styles/typography.css +1 -1
  90. package/dist/styles/utilities.css +1 -1
  91. package/dist/styles.css +1 -1
  92. package/dist/themes/autumn-contrast.css +1 -1
  93. package/dist/themes/autumn.css +1 -1
  94. package/dist/themes/baseline-contrast.css +1 -1
  95. package/dist/themes/baseline.css +1 -1
  96. package/dist/themes/brownbeige-contrast.css +1 -1
  97. package/dist/themes/brownbeige.css +1 -1
  98. package/dist/themes/content-contrast.css +1 -1
  99. package/dist/themes/content.css +1 -1
  100. package/dist/themes/desert-contrast.css +1 -1
  101. package/dist/themes/desert.css +1 -1
  102. package/dist/themes/expressive-contrast.css +1 -1
  103. package/dist/themes/expressive.css +1 -1
  104. package/dist/themes/fidelity-contrast.css +1 -1
  105. package/dist/themes/fidelity.css +1 -1
  106. package/dist/themes/forest-contrast.css +1 -1
  107. package/dist/themes/forest.css +1 -1
  108. package/dist/themes/fruit-salad-contrast.css +1 -1
  109. package/dist/themes/fruit-salad.css +1 -1
  110. package/dist/themes/highcontrast-contrast.css +1 -1
  111. package/dist/themes/highcontrast.css +1 -1
  112. package/dist/themes/monochrome-contrast.css +1 -1
  113. package/dist/themes/monochrome.css +1 -1
  114. package/dist/themes/neutral-contrast.css +1 -1
  115. package/dist/themes/neutral.css +1 -1
  116. package/dist/themes/ocean-contrast.css +1 -1
  117. package/dist/themes/ocean.css +1 -1
  118. package/dist/themes/rainbow-contrast.css +1 -1
  119. package/dist/themes/rainbow.css +1 -1
  120. package/dist/themes/sageivory-contrast.css +1 -1
  121. package/dist/themes/sageivory.css +1 -1
  122. package/dist/themes/spring-contrast.css +1 -1
  123. package/dist/themes/spring.css +1 -1
  124. package/dist/themes/summer-contrast.css +1 -1
  125. package/dist/themes/summer.css +1 -1
  126. package/dist/themes/sunset-contrast.css +1 -1
  127. package/dist/themes/sunset.css +1 -1
  128. package/dist/themes/tealcaramel-contrast.css +1 -1
  129. package/dist/themes/tealcaramel.css +1 -1
  130. package/dist/themes/vibrant-contrast.css +1 -1
  131. package/dist/themes/vibrant.css +1 -1
  132. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- /*! material v3.5.0 | MIT */
1
+ /*! material v3.5.2 | MIT */
2
2
  @layer mtrl.preupgrade{m-button:not(:defined){display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;box-sizing:border-box;min-width:58px;white-space:nowrap;background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary);height:40px;padding:0 16px;gap:8px;border-radius:20px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button:not(:defined)[icon]::before,m-button:not(:defined)[icon][icon-position=end]::after{width:20px;height:20px}m-button:not(:defined)[size=xs]{height:32px;padding:0 12px;gap:4px;border-radius:16px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button:not(:defined)[size=xs][icon]::before,m-button:not(:defined)[size=xs][icon][icon-position=end]::after{width:20px;height:20px}m-button:not(:defined)[size=s]{height:40px;padding:0 16px;gap:8px;border-radius:20px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button:not(:defined)[size=s][icon]::before,m-button:not(:defined)[size=s][icon][icon-position=end]::after{width:20px;height:20px}m-button:not(:defined)[size=m]{height:56px;padding:0 24px;gap:8px;border-radius:28px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500}m-button:not(:defined)[size=m][icon]::before,m-button:not(:defined)[size=m][icon][icon-position=end]::after{width:24px;height:24px}m-button:not(:defined)[size=l]{height:96px;padding:0 48px;gap:12px;border-radius:48px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}m-button:not(:defined)[size=l][icon]::before,m-button:not(:defined)[size=l][icon][icon-position=end]::after{width:32px;height:32px}m-button:not(:defined)[size=xl]{height:136px;padding:0 64px;gap:16px;border-radius:68px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:32px;line-height:40px;letter-spacing:0;font-weight:400}m-button:not(:defined)[size=xl][icon]::before,m-button:not(:defined)[size=xl][icon][icon-position=end]::after{width:40px;height:40px}m-button:not(:defined)[variant=filled]{background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary)}m-button:not(:defined)[variant=elevated]{background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-primary)}m-button:not(:defined)[variant=tonal]{background-color:var(--mtrl-sys-color-secondary-container);color:var(--mtrl-sys-color-on-secondary-container)}m-button:not(:defined)[variant=outlined]{background-color:rgba(0,0,0,0);color:var(--mtrl-sys-color-on-surface-variant)}m-button:not(:defined)[variant=text]{background-color:rgba(0,0,0,0);color:var(--mtrl-sys-color-primary)}m-button:not(:defined)[variant=outlined]{border:1px solid var(--mtrl-sys-color-outline-variant)}m-button:not(:defined)[variant=text]{padding:0 12px}m-button:not(:defined)[icon]::before,m-button:not(:defined)[icon][icon-position=end]::after{content:"";flex:none}m-button:not(:defined)[icon][icon-position=end]::before{content:none}m-button:not(:defined)[icon]:not([size]),m-button:not(:defined)[icon][size=s]{padding-inline-start:12px}m-button:not(:defined)[icon]:not([size])[icon-position=end],m-button:not(:defined)[icon][size=s][icon-position=end]{padding-inline-start:16px;padding-inline-end:12px}m-button:not(:defined)[variant=text][icon]:not([size]),m-button:not(:defined)[variant=text][icon][size=xs],m-button:not(:defined)[variant=text][icon][size=s]{padding-inline:12px 16px}m-button:not(:defined)[variant=text][icon]:not([size])[icon-position=end],m-button:not(:defined)[variant=text][icon][size=xs][icon-position=end],m-button:not(:defined)[variant=text][icon][size=s][icon-position=end]{padding-inline:16px 12px}m-button:not(:defined)[variant=text][icon][size=m]{padding:0 24px}m-button:not(:defined)[variant=text][icon][size=l]{padding:0 48px}m-button:not(:defined)[variant=text][icon][size=xl]{padding:0 64px}m-switch:not(:defined){display:inline-grid;grid-template-columns:auto auto;align-content:center;align-items:center;column-gap:12px;box-sizing:border-box;min-height:56px;padding:4px 0;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-switch:not(:defined)::after{content:"";grid-column:2;grid-row:1;box-sizing:border-box;width:52px;height:32px;border:2px solid var(--mtrl-sys-color-outline);border-radius:var(--mtrl-sys-shape-corner-full, 9999px);background:radial-gradient(circle at 14px 50%, var(--mtrl-sys-color-outline) 8px, transparent 8.5px) var(--mtrl-sys-color-surface-container-highest)}m-switch:not(:defined)[checked]::after{border-color:var(--mtrl-sys-color-primary);background:radial-gradient(circle at calc(100% - 14px) 50%, var(--mtrl-sys-color-on-primary) 12px, transparent 12.5px) var(--mtrl-sys-color-primary)}m-switch:not(:defined)[supporting-text]::after{grid-row:1/span 2}m-switch:not(:defined)[supporting-text]::before{content:attr(supporting-text);grid-column:1;grid-row:2;color:var(--mtrl-sys-color-on-surface-variant);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-switch:not(:defined):empty:is(:not([label]),[label=""])[supporting-text]:not([supporting-text=""])::after{grid-row:2}m-switch:not(:defined):empty:is(:not([label]),[label=""]):is(:not([supporting-text]),[supporting-text=""]){column-gap:0;min-height:48px}m-switch:not(:defined):empty:is(:not([label]),[label=""]):is(:not([supporting-text]),[supporting-text=""])::before{content:"";grid-column:1;grid-row:1/span 2}m-tabs:not(:defined){display:block;box-sizing:border-box;height:48px;overflow:hidden;border-bottom:1px solid var(--mtrl-sys-color-outline-variant)}m-tabs:not(:defined):has(>[icon]){height:64px}m-tabs:not(:defined)>*{visibility:hidden;display:none}m-progress:not(:defined){display:block;box-sizing:border-box;height:4px;padding:0 4px;overflow:hidden;color:rgba(0,0,0,0);background:var(--mtrl-sys-color-secondary-container) content-box}m-progress:not(:defined)[variant=circular]{display:inline-flex;vertical-align:middle;width:40px;height:40px;padding:0;background:none}m-loading-indicator:not(:defined){display:inline-flex;vertical-align:middle;width:48px;height:48px;overflow:hidden;color:rgba(0,0,0,0)}m-badge:not(:defined){display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;vertical-align:middle;overflow:hidden;height:16px;min-width:16px;max-width:34px;padding:0 4px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);font-weight:500;font-size:11px;line-height:16px;background-color:var(--mtrl-sys-color-error);color:var(--mtrl-sys-color-on-error)}m-badge:not(:defined)[color=primary]{background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary)}m-badge:not(:defined)[color=secondary]{background-color:var(--mtrl-sys-color-secondary);color:var(--mtrl-sys-color-on-secondary)}m-badge:not(:defined)[color=tertiary]{background-color:var(--mtrl-sys-color-tertiary);color:var(--mtrl-sys-color-on-tertiary)}m-badge:not(:defined)[color=success]{background-color:var(--mtrl-sys-color-success);color:var(--mtrl-sys-color-on-success)}m-badge:not(:defined)[color=warning]{background-color:var(--mtrl-sys-color-warning);color:var(--mtrl-sys-color-on-warning)}m-badge:not(:defined)[color=info]{background-color:var(--mtrl-sys-color-info);color:var(--mtrl-sys-color-on-info)}m-badge:not(:defined):empty[label]:not([label=""])::before{content:attr(label)}m-badge:not(:defined):not([variant=small]):is(:empty:not([label]),[label=""],[label="0"]){width:0;height:0;min-width:0;max-width:none;padding:0;font-size:0;background-color:rgba(0,0,0,0)}m-badge:not(:defined)[variant=small]{width:6px;height:6px;min-width:6px;max-width:none;padding:0;font-size:0}m-divider:not(:defined){display:block;height:1px;overflow:hidden;color:rgba(0,0,0,0);background-color:var(--mtrl-sys-color-outline-variant)}m-divider:not(:defined)[orientation=vertical]{display:inline-block;align-self:stretch;width:1px;height:auto}m-icon-button:not(:defined){display:inline-block;vertical-align:middle;box-sizing:border-box;overflow:hidden;color:rgba(0,0,0,0);height:40px;width:40px;border-radius:20px}m-icon-button:not(:defined)[size=xs]{height:32px;width:32px;border-radius:16px}m-icon-button:not(:defined)[size=xs][width=narrow]{height:32px;width:28px;border-radius:16px}m-icon-button:not(:defined)[size=xs][width=wide]{height:32px;width:40px;border-radius:16px}m-icon-button:not(:defined)[width=narrow]{height:40px;width:32px;border-radius:20px}m-icon-button:not(:defined)[width=wide]{height:40px;width:52px;border-radius:20px}m-icon-button:not(:defined)[size=m]{height:56px;width:56px;border-radius:28px}m-icon-button:not(:defined)[size=m][width=narrow]{height:56px;width:48px;border-radius:28px}m-icon-button:not(:defined)[size=m][width=wide]{height:56px;width:72px;border-radius:28px}m-icon-button:not(:defined)[size=l]{height:96px;width:96px;border-radius:48px}m-icon-button:not(:defined)[size=l][width=narrow]{height:96px;width:64px;border-radius:48px}m-icon-button:not(:defined)[size=l][width=wide]{height:96px;width:128px;border-radius:48px}m-icon-button:not(:defined)[size=xl]{height:136px;width:136px;border-radius:68px}m-icon-button:not(:defined)[size=xl][width=narrow]{height:136px;width:104px;border-radius:68px}m-icon-button:not(:defined)[size=xl][width=wide]{height:136px;width:184px;border-radius:68px}m-icon-button:not(:defined)[variant=filled]{background-color:var(--mtrl-sys-color-primary)}m-icon-button:not(:defined)[variant=tonal]{background-color:var(--mtrl-sys-color-secondary-container)}m-icon-button:not(:defined)[variant=outlined]{border:1px solid var(--mtrl-sys-color-outline-variant)}m-fab:not(:defined){display:inline-block;vertical-align:middle;box-sizing:border-box;overflow:hidden;color:rgba(0,0,0,0);background-color:var(--mtrl-sys-color-primary-container);width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab:not(:defined)[placement=top-start]{position:fixed;top:16px;inset-inline-start:16px}m-fab:not(:defined)[placement=top-end]{position:fixed;top:16px;inset-inline-end:16px}m-fab:not(:defined)[placement=bottom-start]{position:fixed;bottom:16px;inset-inline-start:16px}m-fab:not(:defined)[placement=bottom-end]{position:fixed;bottom:16px;inset-inline-end:16px}m-fab:not(:defined)[size=default]{width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab:not(:defined)[size=medium]{width:80px;height:80px;border-radius:var(--mtrl-sys-shape-corner-large-increased, 20px)}m-fab:not(:defined)[size=large]{width:96px;height:96px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px)}m-extended-fab:not(:defined){display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;box-sizing:border-box;white-space:nowrap;background-color:var(--mtrl-sys-color-primary-container);color:var(--mtrl-sys-color-on-primary-container);height:56px;min-width:56px;padding:0 16px;gap:8px;border-radius:var(--mtrl-sys-shape-corner-large, 16px);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500}m-extended-fab:not(:defined)[placement=top-start]{position:fixed;top:16px;inset-inline-start:16px}m-extended-fab:not(:defined)[placement=top-end]{position:fixed;top:16px;inset-inline-end:16px}m-extended-fab:not(:defined)[placement=bottom-start]{position:fixed;bottom:16px;inset-inline-start:16px}m-extended-fab:not(:defined)[placement=bottom-end]{position:fixed;bottom:16px;inset-inline-end:16px}m-extended-fab:not(:defined)[icon]::before{width:24px;height:24px}m-extended-fab:not(:defined)[icon]::before{content:"";flex:none}m-extended-fab:not(:defined)[icon-position=end]::before{order:1}m-extended-fab:not(:defined)[size=medium]{height:80px;min-width:80px;padding:0 26px;gap:16px;border-radius:var(--mtrl-sys-shape-corner-large-increased, 20px);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-extended-fab:not(:defined)[size=medium][icon]::before{width:28px;height:28px}m-extended-fab:not(:defined)[size=large]{height:96px;min-width:96px;padding:0 28px;gap:20px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}m-extended-fab:not(:defined)[size=large][icon]::before{width:32px;height:32px}m-checkbox:not(:defined){display:inline-flex;align-items:center;box-sizing:border-box;min-height:48px;padding:4px 0;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-checkbox:not(:defined)::before{content:"";flex:none;box-sizing:border-box;width:18px;height:18px;margin-inline-end:12px;border:2px solid var(--mtrl-sys-color-on-surface-variant);border-radius:2px}m-checkbox:not(:defined)[checked]::before{border-color:var(--mtrl-sys-color-primary);background-color:var(--mtrl-sys-color-primary)}m-checkbox:not(:defined)[label-position=start]::before{order:1;margin-inline:12px 0}m-checkbox:not(:defined):empty:is(:not([label]),[label=""]){min-width:48px;justify-content:center}m-checkbox:not(:defined):empty:is(:not([label]),[label=""])::before{margin-inline:0}m-slider:not(:defined){display:block;height:48px;overflow:hidden;color:rgba(0,0,0,0)}m-slider:not(:defined)[label]:not([label=""]){height:76px}m-slider:not(:defined):is(:not([label]),[label=""])[size=xs i]{height:48px}m-slider:not(:defined)[label]:not([label=""])[size=xs i]{height:76px}m-slider:not(:defined):is(:not([label]),[label=""])[size=s i]{height:48px}m-slider:not(:defined)[label]:not([label=""])[size=s i]{height:76px}m-slider:not(:defined):is(:not([label]),[label=""])[size=m i]{height:52px}m-slider:not(:defined)[label]:not([label=""])[size=m i]{height:80px}m-slider:not(:defined):is(:not([label]),[label=""])[size=l i]{height:68px}m-slider:not(:defined)[label]:not([label=""])[size=l i]{height:96px}m-slider:not(:defined):is(:not([label]),[label=""])[size=xl i]{height:108px}m-slider:not(:defined)[label]:not([label=""])[size=xl i]{height:136px}m-text-field:not(:defined){display:inline-block;position:relative;width:280px}m-text-field:not(:defined)::before{content:attr(value) " ";display:inline-block;box-sizing:border-box;width:100%;height:56px;padding:24.5px 16px 0;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) 0 0;border-bottom:1px solid var(--mtrl-sys-color-on-surface-variant);background-color:var(--mtrl-sys-color-surface-container-highest);color:var(--mtrl-sys-color-on-surface);white-space:pre;overflow:clip;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-text-field:not(:defined):not([label])::before{padding-top:16.5px}m-text-field:not(:defined)[variant=outlined]::before{padding-top:15.5px;border:1px solid var(--mtrl-sys-color-outline);border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px);background:none}m-text-field:not(:defined)[density=compact]::before{height:40px;padding-top:13.5px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-text-field:not(:defined)[density=compact]:not([label])::before{padding-top:10px}m-text-field:not(:defined)[density=compact][variant=outlined]::before{padding-top:9px}m-text-field:not(:defined)[supporting-text]:not([supporting-text=""])::before,m-text-field:not(:defined)[maxlength]::before{height:calc(56px + 20px);border-bottom:20px solid rgba(0,0,0,0);background-clip:padding-box;background-image:linear-gradient(to top, var(--mtrl-sys-color-on-surface-variant) 1px, transparent 1px)}m-text-field:not(:defined)[supporting-text]:not([supporting-text=""])[variant=outlined]::before,m-text-field:not(:defined)[maxlength][variant=outlined]::before{padding-top:calc(15.5px + 1px);padding-left:calc(16px + 1px);border-width:0 0 20px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px)/var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px);background-image:none;box-shadow:inset 0 0 0 1px var(--mtrl-sys-color-outline)}m-text-field:not(:defined)[supporting-text]:not([supporting-text=""])[density=compact]::before,m-text-field:not(:defined)[maxlength][density=compact]::before{height:calc(40px + 20px)}m-text-field:not(:defined)[label]::after{content:attr(label);white-space:nowrap;position:absolute;top:16px;left:16px;color:var(--mtrl-sys-color-on-surface-variant);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-text-field:not(:defined)[label][value]:not([value=""])::after{top:8px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}m-text-field:not(:defined)[variant=outlined][label][value]:not([value=""])::after{top:-8px;padding:0 4px;left:12px}m-text-field:not(:defined)[density=compact]::after{top:10px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-text-field:not(:defined)[type=multiline]::before{display:inline-flex;height:100px;padding-top:16px}m-text-field:not(:defined)[type=multiline][label]::before{padding-top:24px}m-text-field:not(:defined)[type=multiline][variant=outlined]::before{padding-top:calc(16px - 1px)}m-text-field:not(:defined)[type=multiline][density=compact]::before{height:40px;padding-top:10px}m-text-field:not(:defined)[type=multiline][density=compact][label]::before{padding-top:14px}m-text-field:not(:defined)[type=multiline][density=compact][variant=outlined]::before{padding-top:calc(10px - 1px)}m-text-field:not(:defined)[type=multiline][supporting-text]:not([supporting-text=""])::before,m-text-field:not(:defined)[type=multiline][maxlength]::before{height:calc(100px + 20px)}m-text-field:not(:defined)[type=multiline][supporting-text]:not([supporting-text=""])[variant=outlined]::before,m-text-field:not(:defined)[type=multiline][maxlength][variant=outlined]::before{padding-top:16px}m-text-field:not(:defined)[type=multiline][supporting-text]:not([supporting-text=""])[density=compact]::before,m-text-field:not(:defined)[type=multiline][maxlength][density=compact]::before{height:calc(40px + 20px)}m-text-field:not(:defined)[type=multiline][supporting-text]:not([supporting-text=""])[density=compact][variant=outlined]::before,m-text-field:not(:defined)[type=multiline][maxlength][density=compact][variant=outlined]::before{padding-top:10px}m-text-field:not(:defined)[type=password i]::before,m-text-field:not(:defined)[type=hidden i]::before{content:" "}m-text-field:not(:defined)[type=hidden i]{display:none}m-text-field:not(:defined)>*{display:none}m-radios:not(:defined){display:flex;flex-direction:column;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-radios:not(:defined)[direction=horizontal]{flex-direction:row;flex-wrap:wrap}m-radios:not(:defined)[direction=horizontal]>m-radio{margin-inline-end:16px}m-radios:not(:defined)[direction=horizontal]>m-radio:last-of-type{margin-inline-end:0}m-radios:not(:defined):has(>m-radio)::before{content:"";flex:none;height:34px;margin-block-end:-34px}m-radios:not(:defined)>*{visibility:hidden;display:flex;align-items:center;box-sizing:border-box;min-height:48px;padding-inline-start:48px}m-navigation-bar:not(:defined){display:block;box-sizing:border-box;block-size:calc(64px + env(safe-area-inset-bottom, 0px));background:var(--mtrl-sys-color-surface-container)}m-navigation-bar:not(:defined)>*{visibility:hidden;display:none}m-navigation-rail:not(:defined){display:block;box-sizing:border-box;padding:132px 0 16px;background:linear-gradient(var(--mtrl-sys-color-surface), var(--mtrl-sys-color-surface)) no-repeat 0 0/96px 100%}m-navigation-rail:not(:defined)>*{visibility:hidden;display:block;height:64px;overflow:hidden}m-navigation-rail:not(:defined)>*+*{margin-top:4px}m-drawer:not(:defined){display:block;flex-shrink:0;padding:12px 0}m-drawer:not(:defined)[open]{background-color:var(--mtrl-sys-color-surface)}m-drawer:not(:defined)>*{visibility:hidden;display:block;height:56px;overflow:hidden}m-top-app-bar:not(:defined){position:absolute;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;box-sizing:border-box;height:64px;padding:0 12px 0 28px;background-color:var(--mtrl-sys-color-surface);color:var(--mtrl-sys-color-on-surface);white-space:nowrap;overflow:hidden;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-top-app-bar:not(:defined)[type=center]{justify-content:center}m-top-app-bar:not(:defined)[type=medium],m-top-app-bar:not(:defined)[type=large]{align-items:flex-end;padding-left:44px;padding-bottom:24px;height:112px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}m-top-app-bar:not(:defined)[type=large]{padding-bottom:28px;height:152px;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:28px;line-height:36px;letter-spacing:0;font-weight:400}m-top-app-bar:not(:defined)>[slot=leading]{order:-1}m-top-app-bar:not(:defined)>[slot=trailing]{order:1;margin-left:auto}m-bottom-app-bar:not(:defined){position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;gap:4px;box-sizing:border-box;height:80px;padding:12px 16px 12px 4px;background-color:var(--mtrl-sys-color-surface-container)}m-bottom-app-bar:not(:defined)>[slot=fab]{margin-left:auto}m-button-group:not(:defined){display:inline-flex;vertical-align:baseline;gap:12px;white-space:nowrap}m-button-group:not(:defined)::before{width:0;height:32px;margin-inline-end:-12px;align-self:flex-start}m-button-group:not(:defined):has(>[icon]:empty:first-child){align-items:center}m-button-group:not(:defined):has(>[icon]:empty:first-child)::before{content:""}m-button-group:not(:defined)[size=xs]{gap:18px}m-button-group:not(:defined):is([size=m],[size=l],[size=xl]){gap:8px}m-button-group:not(:defined)[density=comfortable]>*{height:36px}m-button-group:not(:defined)[density=compact]>*{height:32px}m-button-group:not(:defined)[size=xs]>*{height:32px;padding:0 13px}m-button-group:not(:defined)[size=xs][density=comfortable]>*{height:28px}m-button-group:not(:defined)[size=xs][density=compact]>*{height:24px}m-button-group:not(:defined)[size=xs]::before{height:26px;margin-inline-end:-18px}m-button-group:not(:defined)[size=m]>*{height:56px;padding:0 25px;font-size:16px;line-height:24px;letter-spacing:.15px}m-button-group:not(:defined)[size=m][density=comfortable]>*{height:52px}m-button-group:not(:defined)[size=m][density=compact]>*{height:48px}m-button-group:not(:defined)[size=m]::before{height:40px}m-button-group:not(:defined)[size=l]>*{height:96px;padding:0 50px;font-size:24px;line-height:32px}m-button-group:not(:defined)[size=l][density=comfortable]>*{height:92px}m-button-group:not(:defined)[size=l][density=compact]>*{height:88px}m-button-group:not(:defined)[size=l]::before{height:64px}m-button-group:not(:defined)[size=xl]>*{height:136px;padding:0 67px;font-size:32px;line-height:40px}m-button-group:not(:defined)[size=xl][density=comfortable]>*{height:132px}m-button-group:not(:defined)[size=xl][density=compact]>*{height:128px}m-button-group:not(:defined)[size=xl]::before{height:88px}m-button-group:not(:defined):is([size=m],[size=l],[size=xl])::before{margin-inline-end:-8px}m-button-group:not(:defined):is([size=l],[size=xl])>*{letter-spacing:0;font-weight:400}m-button-group:not(:defined)[density=comfortable]::before{margin-block-start:-2px}m-button-group:not(:defined)[density=compact]::before{margin-block-start:-4px}m-button-group:not(:defined)>*{visibility:hidden;display:inline-flex;align-items:center;flex:none;min-width:58px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);height:40px;padding:0 17px;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-button-group:not(:defined)>*[icon]:empty{min-width:0;padding:0;aspect-ratio:1}m-button-group:not(:defined)[kind=connected]{gap:2px}m-button-group:not(:defined)[kind=connected]::before{margin-inline-end:-2px}m-button-group:not(:defined):is(:not([size]),[size=xs],[size=s])[kind=connected]>*{min-width:48px}m-chips:not(:defined){display:flex;flex-wrap:wrap;gap:8px}m-chips:not(:defined)[vertical]{flex-direction:column;align-items:flex-start}m-chips:not(:defined)[scrollable]{flex-wrap:nowrap;overflow:hidden}m-chips:not(:defined)>*{visibility:hidden;display:inline-flex;align-items:center;box-sizing:border-box;height:32px;padding:0 16px;white-space:nowrap;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-list:not(:defined){display:block;padding:8px 0;background-color:var(--mtrl-sys-color-surface);border-radius:var(--mtrl-list-item-shape-outer, var(--mtrl-sys-shape-corner-large, 16px))}m-list:not(:defined)>*{visibility:hidden;display:block;height:56px;overflow:hidden}m-list:not(:defined)>*[supporting-text],m-list:not(:defined)>*[overline]{height:72px}m-list:not(:defined)>*[kind=divider]{height:1px}m-list:not(:defined)>*[kind=subheader]{height:auto;padding:16px 16px 8px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-card:not(:defined){display:flex;flex-direction:column;box-sizing:border-box;padding:16px;border-radius:var(--mtrl-sys-shape-corner-medium, 12px);background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-card:not(:defined)[variant=filled]{background-color:var(--mtrl-sys-color-surface-container-highest)}m-card:not(:defined)[variant=outlined]{border:1px solid var(--mtrl-sys-color-outline-variant);background-color:var(--mtrl-sys-color-surface)}m-card:not(:defined)[headline]::before{content:attr(headline);order:-2;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-card:not(:defined)[subhead]::after{content:attr(subhead);order:-1;color:var(--mtrl-sys-color-on-surface-variant)}m-card:not(:defined)[headline]:not([subhead])::before,m-card:not(:defined)[subhead]::after{margin-bottom:16px}m-card:not(:defined)>[slot=headline]{order:-2;font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}m-card:not(:defined)>[slot=subhead]{order:-1;color:var(--mtrl-sys-color-on-surface-variant)}m-card:not(:defined):not(:has(>[slot=actions]~[slot=actions]))>[slot=actions]{align-self:flex-end;margin-block:24px -8px;margin-inline:-8px}m-card:not(:defined):not(:has(>[slot=actions]~[slot=actions]))[actions-align=start]>[slot=actions],m-card:not(:defined):not(:has(>[slot=actions]~[slot=actions]))[actions-align=space-between]>[slot=actions]{align-self:flex-start}m-card:not(:defined):not(:has(>[slot=actions]~[slot=actions]))[actions-align=center]>[slot=actions]{align-self:center}m-carousel:not(:defined){display:block}m-carousel:not(:defined)>*{visibility:hidden;display:none}m-menu:not(:defined){display:none}m-fab-menu:not(:defined){display:inline-block;vertical-align:middle;box-sizing:border-box;overflow:hidden;background-color:var(--mtrl-sys-color-primary-container);width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab-menu:not(:defined)[size=default]{width:56px;height:56px;border-radius:var(--mtrl-sys-shape-corner-large, 16px)}m-fab-menu:not(:defined)[size=medium]{width:80px;height:80px;border-radius:var(--mtrl-sys-shape-corner-large-increased, 20px)}m-fab-menu:not(:defined)[size=large]{width:96px;height:96px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px)}m-fab-menu:not(:defined)[color=secondary]{background-color:var(--mtrl-sys-color-secondary-container)}m-fab-menu:not(:defined)[color=tertiary]{background-color:var(--mtrl-sys-color-tertiary-container)}m-fab-menu:not(:defined)>*{visibility:hidden;display:none}m-select:not(:defined){display:inline-block;position:relative;box-sizing:border-box;width:280px;height:56px;padding:24.5px 52px 0 16px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) 0 0;border-bottom:1px solid var(--mtrl-sys-color-on-surface-variant);background-color:var(--mtrl-sys-color-surface-container-highest);color:var(--mtrl-sys-color-on-surface);white-space:nowrap;overflow:clip;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-select:not(:defined)::before{content:attr(value) " ";white-space:pre}m-select:not(:defined)[label]::after{content:attr(label);position:absolute;top:16px;left:16px;color:var(--mtrl-sys-color-on-surface-variant)}m-select:not(:defined)[label][value]:not([value=""])::after{top:8px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}m-select:not(:defined):not([label]){padding-top:16.5px}m-select:not(:defined)[variant=outlined]{padding-top:15.5px;border:1px solid var(--mtrl-sys-color-outline);border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px);background:none}m-select:not(:defined)[variant=outlined][label][value]:not([value=""])::after{top:-8px;padding:0 4px;left:12px}m-select:not(:defined)[density=compact]{height:40px;padding-top:13.5px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-select:not(:defined)[density=compact]::after{top:10px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}m-select:not(:defined)[density=compact]:not([label]){padding-top:10px}m-select:not(:defined)[density=compact][variant=outlined]{padding-top:9px}m-select:not(:defined)[supporting-text]:not([supporting-text=""]),m-select:not(:defined)[maxlength]{height:calc(56px + 20px);border-bottom:20px solid rgba(0,0,0,0);background-clip:padding-box;background-image:linear-gradient(to top, var(--mtrl-sys-color-on-surface-variant) 1px, transparent 1px)}m-select:not(:defined)[supporting-text]:not([supporting-text=""])[variant=outlined],m-select:not(:defined)[maxlength][variant=outlined]{padding-top:calc(15.5px + 1px);padding-left:calc(16px + 1px);border-width:0 0 20px;border-radius:var(--mtrl-sys-shape-corner-extra-small, 4px)/var(--mtrl-sys-shape-corner-extra-small, 4px) var(--mtrl-sys-shape-corner-extra-small, 4px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px) calc(var(--mtrl-sys-shape-corner-extra-small, 4px) + 20px);background-image:none;box-shadow:inset 0 0 0 1px var(--mtrl-sys-color-outline)}m-select:not(:defined)[supporting-text]:not([supporting-text=""])[density=compact],m-select:not(:defined)[maxlength][density=compact]{height:calc(40px + 20px)}m-select:not(:defined)>*{display:none}m-select:not(:defined)::before{content:" "}m-split-button:not(:defined){display:inline-flex;vertical-align:middle;align-items:center;position:relative;z-index:0;box-sizing:border-box;height:40px;padding:0 calc(12px + 50px) 0 16px;color:var(--mtrl-sys-color-on-primary);white-space:nowrap;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}m-split-button:not(:defined)::before,m-split-button:not(:defined)::after{content:"";position:absolute;z-index:-1;top:0;bottom:0;background-color:var(--mtrl-sys-color-primary)}m-split-button:not(:defined)::before{left:0;right:50px;border-radius:20px 4px 4px 20px}m-split-button:not(:defined)::after{right:0;width:48px;border-radius:4px 20px 20px 4px}m-split-button:not(:defined)>*{display:none}m-tooltip:not(:defined){display:none}m-toolbar:not(:defined){display:flex;align-items:center;justify-content:space-between;gap:8px;box-sizing:border-box;min-height:64px;padding-inline:16px;background-color:var(--mtrl-sys-color-surface-container)}m-toolbar:not(:defined)[arrangement=center]{justify-content:center;gap:32px}m-toolbar:not(:defined)[variant=floating]{width:fit-content;justify-content:center;gap:4px;padding:8px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px)}m-toolbar:not(:defined)[variant=floating]:not([flat]){box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 1px 3px 1px rgba(0,0,0,.15)}m-toolbar:not(:defined)[variant=floating][orientation=vertical]{flex-direction:column;min-height:0;min-width:64px}m-toolbar:not(:defined)[color=vibrant]{background-color:var(--mtrl-sys-color-primary-container)}m-snackbar:not(:defined){display:none}m-dialog:not(:defined){display:none}m-bottom-sheet:not(:defined){display:none}m-side-sheet:not(:defined){display:none}m-datepicker:not(:defined){display:inline-flex;box-sizing:border-box;width:280px;vertical-align:baseline;white-space:nowrap}m-datepicker:not(:defined)::before{content:attr(label) " ";white-space:pre;display:inline-block;width:100%;padding-bottom:80px;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}m-datepicker:not(:defined)>*{display:none}m-timepicker:not(:defined){display:none}m-search:not(:defined){display:flex;align-items:center;box-sizing:border-box;height:56px;padding:0 56px 0 60px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);background-color:var(--mtrl-sys-color-surface-container-high);color:var(--mtrl-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}m-search:not(:defined)::before{content:attr(placeholder)}m-search:not(:defined)[value]:not([value=""])::before{content:attr(value);color:var(--mtrl-sys-color-on-surface)}m-search:not(:defined)>*{visibility:hidden;display:none}[data-mtrl-ssr]:not(:defined):not(#\0),[data-mtrl-ssr]:not(:defined):not(#\0)::before,[data-mtrl-ssr]:not(:defined):not(#\0)::after,[data-mtrl-ssr]:not(:defined):not(#\0) > :defined{all:revert-layer}}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "material",
3
- "version": "3.5.0",
3
+ "version": "3.5.2",
4
4
  "description": "Material Design 3 components for the web: plain JavaScript, web components, and React, Vue, Svelte and Solid components. TypeScript, zero dependencies.",
5
5
  "author": "floor",
6
6
  "license": "MIT",
package/dist/ssr/react.js CHANGED
@@ -1,44 +1,11 @@
1
- // src/ssr/react.ts
2
- /**
3
- * Enable declarative shadow DOM for material/react in this server process.
4
- * The identity HTML policy is not a sanitizer; configure a synchronous sanitizer for untrusted markup.
5
- * The server-rendered shadow root is built in a separate render, without the context of providers above the component.
6
- * The page's own render (the light DOM) sees the provided value. Until upgrade, a child reading context with a default shows that default in the painted shadow root; a child requiring its context leaves this component without a declarative shadow root while the page still renders. In development, a warning names the element.
7
- * The Vue and Solid bridges see the provided value in both the shadow root and light DOM. Svelte has this same context limit and logs a development-only warning naming the element when required context leaves it without a shadow root.
8
- * Pass the resolved string as a prop or attribute, or accept client-rendered text until the upgrade. A fix is planned for a later 3.x release.
9
- * @module ssr/react
10
- */
11
1
  import * as React from "react";
12
- import { renderToStaticMarkup } from "react-dom/server";
2
+ import * as ReactDOMServer from "react-dom/server";
13
3
  import "./index.js";
14
4
  const bridge = globalThis[Symbol.for("mtrl.ssr")];
15
- /**
16
- * Waits before each retry of a suspending child. The first retry is the next
17
- * task, so a child that resolves in a few milliseconds is snapshotted at once.
18
- * The wait then doubles, and further retries keep the last step. A slow child
19
- * is rendered a few times a second instead of hundreds.
20
- */
21
5
  const RETRY_DELAYS_MS = [0, 2, 4, 8, 16, 32, 64, 128, 250];
22
- /**
23
- * Suspensions past this are left to the page. Forty attempts is about eight
24
- * seconds at the delays above. The host is then rendered with no shadow root,
25
- * and the page keeps streaming for as long as it would without the bridge.
26
- */
27
6
  const MAX_SUSPENDS = 40;
28
7
  let serializingChildren = false;
29
- /** One counter per host. The child element is stable across the host's retries; a ref is not. */
30
8
  const attempts = new WeakMap();
31
- /**
32
- * renderToStaticMarkup reports a synchronous suspend as a plain Error thrown
33
- * from one place in React. The thenable the child threw does not escape, and
34
- * the Error has no code or digest. The message depends on the build, so it is
35
- * not the signal: the header is skipped and the first call frame is compared
36
- * with a frame sampled from this process's own React. A child's error is
37
- * thrown from the child, including one whose text copies React's message.
38
- * A frame is a V8 line starting with `at `, or a JavaScriptCore or SpiderMonkey
39
- * `name@file:line:col` line. Anything else is not a frame, so the error is not
40
- * a suspension.
41
- */
42
9
  const firstFrame = (error) => {
43
10
  if (!(error instanceof Error) || typeof error.stack !== "string")
44
11
  return undefined;
@@ -46,7 +13,6 @@ const firstFrame = (error) => {
46
13
  const rest = error.stack.startsWith(header) ? error.stack.slice(header.length) : error.stack;
47
14
  return rest.split("\n").map((line) => line.trim()).find((line) => line.startsWith("at ") || /@[^@]*:\d+:\d+/.test(line));
48
15
  };
49
- /** `null` until the first suspend samples this process's React. An empty sample stays unset. */
50
16
  let sampledFrame = null;
51
17
  const suspendFrame = () => {
52
18
  if (sampledFrame !== null)
@@ -58,7 +24,7 @@ const suspendFrame = () => {
58
24
  console.error = () => { };
59
25
  console.warn = () => { };
60
26
  try {
61
- renderToStaticMarkup(React.createElement(Probe));
27
+ ReactDOMServer.renderToStaticMarkup(React.createElement(Probe));
62
28
  sampledFrame = undefined;
63
29
  }
64
30
  catch (error) {
@@ -68,7 +34,6 @@ const suspendFrame = () => {
68
34
  console.error = errorLog;
69
35
  console.warn = warnLog;
70
36
  }
71
- // Once per process: the sample is cached, and a second host does not sample again.
72
37
  if (sampledFrame === undefined && isDevelopment()) {
73
38
  console.warn("[mtrl] Suspending children of mtrl components will render without a server shadow root because no stack frame is available. Error.stackTraceLimit is 0, or Error.prepareStackTrace is custom.");
74
39
  }
@@ -78,7 +43,6 @@ const isSynchronousSuspend = (error) => {
78
43
  const frame = firstFrame(error);
79
44
  return frame !== undefined && frame === sampledFrame;
80
45
  };
81
- /** Same guard as core/utils/warn.ts: tsc leaves NODE_ENV in place, and a browser without process must not throw. */
82
46
  const isDevelopment = () => {
83
47
  try {
84
48
  return typeof process !== "undefined" && process.env != null && process.env.NODE_ENV !== "production";
@@ -91,7 +55,6 @@ const elementLabel = (tag, props) => {
91
55
  const id = typeof props.id === "string" && props.id ? ` id=${JSON.stringify(props.id)}` : "";
92
56
  return `<${tag}${id}>`;
93
57
  };
94
- /** Elements the attempt counter can hang from. Slot wrappers are recreated on every host render, so the counter hangs from the child inside them. */
95
58
  const childNodes = (children) => {
96
59
  const nodes = [];
97
60
  const visit = (node) => {
@@ -142,7 +105,6 @@ const suspendedGaveUp = (children) => {
142
105
  }
143
106
  return false;
144
107
  };
145
- /** Keeps the counter so a later render of the same child does not warn again. */
146
108
  const markGaveUp = (children) => {
147
109
  let state;
148
110
  for (const node of childNodes(children)) {
@@ -155,13 +117,99 @@ const markGaveUp = (children) => {
155
117
  state.gaveUp = true;
156
118
  return true;
157
119
  };
120
+ const PROBE_TIMEOUT_MS = 50;
121
+ const probeBoundaryError = (element) => {
122
+ const probe = { reported: false, complete: false, settled: false, done: Promise.resolve() };
123
+ let resolveDone;
124
+ probe.done = new Promise((resolve) => { resolveDone = resolve; });
125
+ let listening = true;
126
+ let release;
127
+ const settle = () => {
128
+ if (probe.settled)
129
+ return;
130
+ probe.settled = true;
131
+ release?.();
132
+ resolveDone();
133
+ };
134
+ const onError = () => {
135
+ if (!listening)
136
+ return;
137
+ probe.reported = true;
138
+ if (probe.complete)
139
+ settle();
140
+ };
141
+ const onComplete = () => {
142
+ if (!listening)
143
+ return;
144
+ probe.complete = true;
145
+ settle();
146
+ };
147
+ const timer = setTimeout(() => {
148
+ listening = false;
149
+ settle();
150
+ }, PROBE_TIMEOUT_MS);
151
+ const readable = ReactDOMServer.renderToReadableStream;
152
+ if (typeof readable === "function") {
153
+ const controller = new AbortController();
154
+ release = () => {
155
+ clearTimeout(timer);
156
+ listening = false;
157
+ controller.abort();
158
+ };
159
+ void readable(element, { onError, signal: controller.signal }).then((response) => {
160
+ const all = response?.allReady;
161
+ if (all)
162
+ void all.then(onComplete, onComplete);
163
+ }, onComplete).catch(() => { });
164
+ }
165
+ else {
166
+ const pipeable = ReactDOMServer.renderToPipeableStream;
167
+ if (typeof pipeable !== "function") {
168
+ clearTimeout(timer);
169
+ listening = false;
170
+ settle();
171
+ return probe;
172
+ }
173
+ const onShellDeath = () => {
174
+ onError();
175
+ onComplete();
176
+ };
177
+ const stream = pipeable(element, { onError, onShellError: onShellDeath, onShellReady() { }, onAllReady: onComplete });
178
+ release = () => {
179
+ clearTimeout(timer);
180
+ listening = false;
181
+ stream.abort();
182
+ };
183
+ }
184
+ return probe;
185
+ };
186
+ const boundaryProbes = new WeakMap();
187
+ const storedBoundaryProbe = (children) => {
188
+ for (const node of childNodes(children)) {
189
+ const probe = boundaryProbes.get(node);
190
+ if (probe)
191
+ return probe;
192
+ }
193
+ return undefined;
194
+ };
195
+ const boundaryProbe = (children, element) => {
196
+ const nodes = childNodes(children);
197
+ let existing;
198
+ for (const node of nodes)
199
+ existing ?? (existing = boundaryProbes.get(node));
200
+ if (existing && !existing.settled)
201
+ return existing;
202
+ const probe = probeBoundaryError(element);
203
+ for (const node of nodes)
204
+ boundaryProbes.set(node, probe);
205
+ return probe;
206
+ };
158
207
  const clearAttempt = (children) => {
159
208
  const nodes = childNodes(children);
160
209
  let state;
161
210
  for (const node of nodes) {
162
- state = attempts.get(node);
163
- if (state)
164
- break;
211
+ boundaryProbes.delete(node);
212
+ state ?? (state = attempts.get(node));
165
213
  }
166
214
  if (!state)
167
215
  return;
@@ -171,31 +219,44 @@ const clearAttempt = (children) => {
171
219
  attempts.delete(node);
172
220
  };
173
221
  const retryDelay = (attempt) => RETRY_DELAYS_MS[Math.min(attempt - 1, RETRY_DELAYS_MS.length - 1)] ?? RETRY_DELAYS_MS[RETRY_DELAYS_MS.length - 1] ?? 250;
222
+ const countPendingSubscriptions = () => {
223
+ const prototype = Promise.prototype;
224
+ const original = prototype.then;
225
+ let calls = 0;
226
+ prototype.then = function (...arguments_) {
227
+ calls += 1;
228
+ return original.apply(this, arguments_);
229
+ };
230
+ return { read: () => calls, restore: () => { prototype.then = original; } };
231
+ };
232
+ const PENDING_BOUNDARY = "<!--$!-->";
233
+ const boundaryStillPending = (element) => {
234
+ serializingChildren = true;
235
+ try {
236
+ return ReactDOMServer.renderToString(element).includes(PENDING_BOUNDARY);
237
+ }
238
+ catch {
239
+ return false;
240
+ }
241
+ finally {
242
+ serializingChildren = false;
243
+ }
244
+ };
174
245
  bridge.react = (tag, props, children, prefix) => {
175
- // Nested hosts emit their own roots when React renders the outer tree.
176
- // A template from this pass would declare a shadow root twice.
177
246
  if (serializingChildren)
178
247
  return undefined;
179
- // The cap already let this child go. A later pass must not open another wait or warn again.
180
248
  if (suspendedGaveUp(children))
181
249
  return undefined;
182
- // Sample outside a render. Doing it from the catch would nest renderToStaticMarkup.
183
250
  suspendFrame();
251
+ const element = React.createElement(tag, props, children);
184
252
  let markup;
185
253
  serializingChildren = true;
254
+ const subscriptions = countPendingSubscriptions();
186
255
  try {
187
- // No Suspense wrapper here. renderToStaticMarkup renders an error and a
188
- // suspension as the same fallback, so a wrapper cannot tell them apart.
189
- // A suspension is thrown from React's static renderer; any other throw is
190
- // the child's error. A boundary already inside the children still renders
191
- // its own fallback, and this pass does not throw.
192
- markup = renderToStaticMarkup(React.createElement(tag, props, children));
256
+ markup = ReactDOMServer.renderToStaticMarkup(element);
193
257
  }
194
258
  catch (error) {
195
259
  if (!isSynchronousSuspend(error)) {
196
- // Returning lets the host finish. The page then renders this child and
197
- // reports its error, as it does without the bridge. Development names the
198
- // host and the error; nothing is remembered past this call.
199
260
  if (isDevelopment()) {
200
261
  const message = error instanceof Error ? error.message : String(error);
201
262
  console.warn(`[mtrl] ${elementLabel(tag, props)} child snapshot failed, often because it needs ancestor context; this response has no shadow root for it: ${message}`);
@@ -205,7 +266,6 @@ bridge.react = (tag, props, children, prefix) => {
205
266
  }
206
267
  const attempt = nextAttempt(children);
207
268
  if (attempt > MAX_SUSPENDS) {
208
- // No template, and the page render reaches the child. A slow response is not a failed request.
209
269
  if (markGaveUp(children) && isDevelopment()) {
210
270
  console.warn(`[mtrl] ${elementLabel(tag, props)} still had a suspending child after ${MAX_SUSPENDS} attempts, so this response has no shadow root for it.`);
211
271
  }
@@ -215,11 +275,36 @@ bridge.react = (tag, props, children, prefix) => {
215
275
  throw new Promise((resolve) => { setTimeout(resolve, delay); });
216
276
  }
217
277
  finally {
278
+ subscriptions.restore();
218
279
  serializingChildren = false;
219
280
  }
281
+ if (subscriptions.read() > 0 || boundaryStillPending(element)) {
282
+ const attempt = nextAttempt(children);
283
+ const withinCap = attempt <= MAX_SUSPENDS;
284
+ if (subscriptions.read() > 0) {
285
+ if (withinCap)
286
+ throw new Promise((resolve) => { setTimeout(resolve, retryDelay(attempt)); });
287
+ }
288
+ else {
289
+ const stored = storedBoundaryProbe(children);
290
+ if (stored?.reported && stored.complete) {
291
+ clearAttempt(children);
292
+ return bridge.shadow(tag, markup, prefix) || undefined;
293
+ }
294
+ const probe = withinCap ? boundaryProbe(children, element) : undefined;
295
+ if (probe && !probe.settled) {
296
+ throw new Promise((resolve) => {
297
+ void probe.done.then(() => {
298
+ if (probe.reported && probe.complete) {
299
+ resolve();
300
+ return;
301
+ }
302
+ setTimeout(resolve, retryDelay(attempt));
303
+ });
304
+ });
305
+ }
306
+ }
307
+ }
220
308
  clearAttempt(children);
221
- // Let React serialize host props (style objects, tabIndex, boolean/data/aria
222
- // attributes). The server bridge parses them in its own DOM realm.
223
- // An opted-out host has no shadow content and must not get an empty template.
224
309
  return bridge.shadow(tag, markup, prefix) || undefined;
225
310
  };
package/dist/ssr/solid.js CHANGED
@@ -1,25 +1,15 @@
1
1
  import { ssr, ssrElement } from "solid-js/web";
2
- /**
3
- * The identity HTML policy is not a sanitizer; configure a synchronous sanitizer for untrusted markup.
4
- * @module ssr/solid
5
- */
6
2
  import "./index.js";
7
3
  const bridge = globalThis[Symbol.for("mtrl.ssr")];
8
4
  const TAG = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
9
5
  bridge.solid = (tag, props, children, prefix) => {
10
6
  if (!TAG.test(tag))
11
7
  throw new TypeError(`Invalid tag: ${tag}`);
12
- // Let Solid escape and resolve the children exactly once, in the real page
13
- // context. A second render could create resources under the page's Suspense
14
- // owner that never resolve, or consume a different set of hydration keys.
15
8
  const hostProps = { ...props, children };
16
9
  const markup = ssrElement(tag, hostProps, undefined, false).t;
17
10
  const closing = `</${tag}>`;
18
11
  const openingLength = ssrElement(tag, hostProps, "", false).t.length - closing.length;
19
12
  const light = markup.slice(openingLength, -closing.length);
20
- // Nested adapters have already supplied their templates. Strip them only
21
- // from the shadow renderer's detached copy; feeding them back would declare
22
- // a shadow root twice. The page's original light DOM is kept byte for byte.
23
13
  const html = bridge.shadow(tag, markup, prefix, true);
24
14
  const template = html ? `<template shadowrootmode="open" shadowrootdelegatesfocus="">${html}</template>` : "";
25
15
  return ssr(template + light);
@@ -1,8 +1,4 @@
1
1
  import { render } from "svelte/server";
2
- /**
3
- * The identity HTML policy is not a sanitizer; configure a synchronous sanitizer for untrusted markup.
4
- * @module ssr/svelte
5
- */
6
2
  import "./index.js";
7
3
  const bridge = globalThis[Symbol.for("mtrl.ssr")];
8
4
  let serializingChildren = false;
@@ -18,7 +14,6 @@ const isDevelopment = () => {
18
14
  }
19
15
  };
20
16
  const escapeAttr = (value) => value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
21
- /** Host attributes as HTML. Functions and unsafe names stay out of the string the bridge parses. */
22
17
  const attributeText = (attributes) => {
23
18
  let text = "";
24
19
  for (const [name, value] of Object.entries(attributes)) {
@@ -33,10 +28,6 @@ const attributeText = (attributes) => {
33
28
  }
34
29
  return text;
35
30
  };
36
- /**
37
- * Light DOM the element factory reads, without nested declarative roots.
38
- * Snippets run against a real renderer so dev-mode element checks have a component context.
39
- */
40
31
  const childrenMarkup = (children, slots) => {
41
32
  const Capture = (renderer, props) => {
42
33
  renderer.component((target) => {
@@ -53,8 +44,6 @@ const childrenMarkup = (children, slots) => {
53
44
  }).body;
54
45
  };
55
46
  bridge.svelte = (tag, attributes, children, slots, prefix) => {
56
- // Nested components emit their own roots in the outer tree. Serializing them
57
- // again would declare a shadow root twice, which the renderer rejects.
58
47
  if (serializingChildren)
59
48
  return "";
60
49
  if (!TAG.test(tag))
@@ -65,9 +54,6 @@ bridge.svelte = (tag, attributes, children, slots, prefix) => {
65
54
  let light;
66
55
  serializingChildren = true;
67
56
  try {
68
- // The detached renderer has no access to providers above this host. The
69
- // page renders these snippets again in its own tree, where a real child
70
- // error still escapes through Svelte's normal server render.
71
57
  light = childrenMarkup(children, slots);
72
58
  }
73
59
  catch (error) {
@@ -82,7 +68,6 @@ bridge.svelte = (tag, attributes, children, slots, prefix) => {
82
68
  serializingChildren = false;
83
69
  }
84
70
  const markup = `<${tag}${attributeText(attributes)}>${light}</${tag}>`;
85
- // An opted-out host has no shadow content and must not get an empty template.
86
71
  const html = bridge.shadow(tag, markup, prefix);
87
72
  return html ? `<template shadowrootmode="open" shadowrootdelegatesfocus="">${html}</template>` : "";
88
73
  };
package/dist/ssr/vue.js CHANGED
@@ -1,23 +1,9 @@
1
- // src/ssr/vue.ts
2
- /**
3
- * Enable declarative shadow DOM for material/vue in this server process.
4
- * The identity HTML policy is not a sanitizer; configure a synchronous sanitizer for untrusted markup.
5
- * @module ssr/vue
6
- */
7
1
  import { getCurrentInstance, h } from "vue";
8
2
  import { ssrRenderVNode } from "vue/server-renderer";
9
- /**
10
- * The identity HTML policy is not a sanitizer; configure a synchronous sanitizer for untrusted markup.
11
- * @module ssr/vue
12
- */
13
3
  import "./index.js";
14
4
  const bridge = globalThis[Symbol.for("mtrl.ssr")];
15
5
  const TAG = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
16
6
  const isThenable = (value) => typeof value === "object" && value !== null && typeof value.then === "function";
17
- /**
18
- * Vue pushes promises into the buffer when a child `setup` is async. They
19
- * resolve to strings or nested buffers, in order. Anything else is not markup.
20
- */
21
7
  const flatten = (item) => {
22
8
  if (typeof item === "string")
23
9
  return item;
@@ -44,20 +30,17 @@ const flatten = (item) => {
44
30
  }
45
31
  throw new TypeError("Vue SSR shadow markup must be HTML");
46
32
  };
47
- /** Slot nodes, once. A second pass would run `async setup` again under the page's Suspense. */
48
33
  const renderNodes = (nodes, parent) => {
49
34
  const parts = [];
50
35
  const push = (item) => {
51
36
  parts.push(item);
52
37
  };
53
- // The public vnode type omits the scope ids Vue's renderer copies onto slot content.
54
38
  const scope = parent?.vnode?.slotScopeIds?.join(" ") || undefined;
55
39
  const instance = parent ?? null;
56
40
  for (const node of nodes)
57
41
  ssrRenderVNode(push, node, instance, scope);
58
42
  return flatten(parts);
59
43
  };
60
- /** Opening tag, so the shadow renderer can read the host attributes. Children stay separate. */
61
44
  const openTag = (tag, props, parent) => {
62
45
  const parts = [];
63
46
  const push = (item) => {
@@ -78,12 +61,8 @@ bridge.vue = (tag, props, children, prefix) => {
78
61
  throw new TypeError(`Invalid tag: ${tag}`);
79
62
  const parent = getCurrentInstance();
80
63
  const open = openTag(tag, props, parent);
81
- // One render of the real slot nodes. Sync markup stays a string; an async
82
- // child becomes a promise the page buffer already knows how to await.
83
64
  const light = renderNodes(children(), parent);
84
65
  const finish = (lightHtml) => {
85
- // Nested hosts already emitted declarative roots. Strip them only from
86
- // the renderer's detached copy; the page keeps this light HTML.
87
66
  const html = bridge.shadow(tag, `${open}${lightHtml}</${tag}>`, prefix, true);
88
67
  const template = html ? `<template shadowrootmode="open" shadowrootdelegatesfocus="">${html}</template>` : "";
89
68
  return `${template}${lightHtml}`;
@@ -1,2 +1,2 @@
1
- /*! material v3.5.0 | MIT */
1
+ /*! material v3.5.2 | MIT */
2
2
  @layer mtrl.preupgrade,mtrl.base,mtrl.utilities,mtrl.text-field,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.fab-menu,mtrl.extended-fab,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.datepicker,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-bar,mtrl.navigation-rail,mtrl.list,mtrl.tooltip,mtrl.toolbar;@layer mtrl.badge{.mtrl-badge__wrapper{position:relative;display:inline-flex;flex-shrink:0}.mtrl-badge{display:inline-flex;align-items:center;justify-content:center;font-weight:500;box-sizing:border-box;overflow:hidden;transition:all 200ms ease;text-overflow:ellipsis}.mtrl-badge--invisible{display:none}.mtrl-badge--small{width:6px;height:6px;min-width:6px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);font-size:0;padding:0}.mtrl-badge--large{height:16px;min-width:16px;border-radius:var(--mtrl-sys-shape-corner-full, 9999px);padding:0 4px;font-size:11px;line-height:16px;padding-top:.5px}.mtrl-badge--large.mtrl-badge--overflow{min-width:auto;max-width:34px;padding:0 4px}.mtrl-badge--positioned{position:absolute}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--top-right{top:0;right:0}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--top-left{top:0;left:0}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--bottom-right{bottom:0;right:0}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--bottom-left{bottom:0;left:0}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--top-right{top:-2px;right:-4px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--top-left{top:-2px;left:-4px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--bottom-right{bottom:-2px;right:-4px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--bottom-left{bottom:-2px;left:-4px}.mtrl-badge--error{background-color:var(--mtrl-sys-color-error);color:var(--mtrl-sys-color-on-error)}.mtrl-badge--primary{background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary)}.mtrl-badge--secondary{background-color:var(--mtrl-sys-color-secondary);color:var(--mtrl-sys-color-on-secondary)}.mtrl-badge--tertiary{background-color:var(--mtrl-sys-color-tertiary);color:var(--mtrl-sys-color-on-tertiary)}.mtrl-badge--success{background-color:var(--mtrl-sys-color-success);color:var(--mtrl-sys-color-on-success)}.mtrl-badge--warning{background-color:var(--mtrl-sys-color-warning);color:var(--mtrl-sys-color-on-warning)}.mtrl-badge--info{background-color:var(--mtrl-sys-color-info);color:var(--mtrl-sys-color-on-info)}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--top-right,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--top-right,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--top-right{right:auto;left:0}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--top-left,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--top-left,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--top-left{left:auto;right:0}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--bottom-right,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--bottom-right,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--bottom-right{right:auto;left:0}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--bottom-left,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--bottom-left,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--small.mtrl-badge--bottom-left{left:auto;right:0}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--top-right,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--top-right,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--top-right{right:auto;left:-4px}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--top-left,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--top-left,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--top-left{left:auto;right:-4px}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--bottom-right,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--bottom-right,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--bottom-right{right:auto;left:-4px}:where(.mtrl-rtl) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--bottom-left,:where(:host(.mtrl-rtl)) .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--bottom-left,[dir=rtl] .mtrl-badge--positioned:not(:where(.mtrl-ltr,.mtrl-ltr *)).mtrl-badge--large.mtrl-badge--bottom-left{left:auto;right:-4px}}
@@ -1,2 +1,2 @@
1
- /*! material v3.5.0 | MIT */
1
+ /*! material v3.5.2 | MIT */
2
2
  @layer mtrl.preupgrade,mtrl.base,mtrl.utilities,mtrl.text-field,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.fab-menu,mtrl.extended-fab,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.datepicker,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-bar,mtrl.navigation-rail,mtrl.list,mtrl.tooltip,mtrl.toolbar;@layer mtrl.base{:where(:root){--mtrl-sys-color-error: #B3261E;--mtrl-sys-color-on-error: #FFFFFF;--mtrl-sys-color-error-container: #F9DEDC;--mtrl-sys-color-on-error-container: #410E0B;--mtrl-sys-color-success: #006C4E;--mtrl-sys-color-on-success: #FFFFFF;--mtrl-sys-color-warning: #974800;--mtrl-sys-color-on-warning: #FFFFFF;--mtrl-sys-color-info: #0061A4;--mtrl-sys-color-on-info: #FFFFFF;--mtrl-sys-color-primary: #6750a4;--mtrl-sys-color-on-primary: #ffffff;--mtrl-sys-color-primary-container: #eaddff;--mtrl-sys-color-on-primary-container: #21005d;--mtrl-sys-color-secondary: #625b71;--mtrl-sys-color-on-secondary: #ffffff;--mtrl-sys-color-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container: #1d192b;--mtrl-sys-color-tertiary: #7d5260;--mtrl-sys-color-on-tertiary: #ffffff;--mtrl-sys-color-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container: #31111d;--mtrl-sys-color-primary-fixed: #eaddff;--mtrl-sys-color-primary-fixed-dim: #d0bcff;--mtrl-sys-color-on-primary-fixed: #21005d;--mtrl-sys-color-on-primary-fixed-variant: #4f378b;--mtrl-sys-color-secondary-fixed: #e8def8;--mtrl-sys-color-secondary-fixed-dim: #ccc2dc;--mtrl-sys-color-on-secondary-fixed: #1d192b;--mtrl-sys-color-on-secondary-fixed-variant: #4a4458;--mtrl-sys-color-tertiary-fixed: #ffd8e4;--mtrl-sys-color-tertiary-fixed-dim: #efb8c8;--mtrl-sys-color-on-tertiary-fixed: #31111d;--mtrl-sys-color-on-tertiary-fixed-variant: #633b48;--mtrl-sys-color-surface: #fef7ff;--mtrl-sys-color-surface-dim: #ded8e1;--mtrl-sys-color-surface-bright: #fef7ff;--mtrl-sys-color-surface-variant: #e7e0ec;--mtrl-sys-color-surface-container-lowest: #ffffff;--mtrl-sys-color-surface-container-low: #f7f2fa;--mtrl-sys-color-surface-container: #f3edf7;--mtrl-sys-color-surface-container-high: #ece6f0;--mtrl-sys-color-surface-container-highest: #e6e0e9;--mtrl-sys-color-on-surface: #1d1b20;--mtrl-sys-color-on-surface-variant: #49454f;--mtrl-sys-color-outline: #79747e;--mtrl-sys-color-outline-variant: #cac4d0;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-inverse-surface: #322f35;--mtrl-sys-color-inverse-on-surface: #f5eff7;--mtrl-sys-color-inverse-primary: #d0bcff;--mtrl-sys-state-hover-state-layer-opacity: 0.08;--mtrl-sys-state-focus-state-layer-opacity: 0.1;--mtrl-sys-state-pressed-state-layer-opacity: 0.1;--mtrl-sys-state-dragged-state-layer-opacity: 0.16}@media(prefers-color-scheme: dark){:where(:root){--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-error-container: #8C1D18;--mtrl-sys-color-on-error-container: #F9DEDC;--mtrl-sys-color-success: #8CD6AF;--mtrl-sys-color-on-success: #003824;--mtrl-sys-color-warning: #FFB95C;--mtrl-sys-color-on-warning: #462A00;--mtrl-sys-color-info: #99CBFF;--mtrl-sys-color-on-info: #003355;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-primary-fixed: #eaddff;--mtrl-sys-color-primary-fixed-dim: #d0bcff;--mtrl-sys-color-on-primary-fixed: #21005d;--mtrl-sys-color-on-primary-fixed-variant: #4f378b;--mtrl-sys-color-secondary-fixed: #e8def8;--mtrl-sys-color-secondary-fixed-dim: #ccc2dc;--mtrl-sys-color-on-secondary-fixed: #1d192b;--mtrl-sys-color-on-secondary-fixed-variant: #4a4458;--mtrl-sys-color-tertiary-fixed: #ffd8e4;--mtrl-sys-color-tertiary-fixed-dim: #efb8c8;--mtrl-sys-color-on-tertiary-fixed: #31111d;--mtrl-sys-color-on-tertiary-fixed-variant: #633b48;--mtrl-sys-color-surface: #141218;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-bright: #3b383e;--mtrl-sys-color-surface-variant: #49454f;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-on-surface: #e6e0e9;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-variant: #49454f;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-inverse-surface: #e6e0e9;--mtrl-sys-color-inverse-on-surface: #322f35;--mtrl-sys-color-inverse-primary: #6750a4}}:where(.dark-theme){--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-error-container: #8C1D18;--mtrl-sys-color-on-error-container: #F9DEDC;--mtrl-sys-color-success: #8CD6AF;--mtrl-sys-color-on-success: #003824;--mtrl-sys-color-warning: #FFB95C;--mtrl-sys-color-on-warning: #462A00;--mtrl-sys-color-info: #99CBFF;--mtrl-sys-color-on-info: #003355;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-primary-fixed: #eaddff;--mtrl-sys-color-primary-fixed-dim: #d0bcff;--mtrl-sys-color-on-primary-fixed: #21005d;--mtrl-sys-color-on-primary-fixed-variant: #4f378b;--mtrl-sys-color-secondary-fixed: #e8def8;--mtrl-sys-color-secondary-fixed-dim: #ccc2dc;--mtrl-sys-color-on-secondary-fixed: #1d192b;--mtrl-sys-color-on-secondary-fixed-variant: #4a4458;--mtrl-sys-color-tertiary-fixed: #ffd8e4;--mtrl-sys-color-tertiary-fixed-dim: #efb8c8;--mtrl-sys-color-on-tertiary-fixed: #31111d;--mtrl-sys-color-on-tertiary-fixed-variant: #633b48;--mtrl-sys-color-surface: #141218;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-bright: #3b383e;--mtrl-sys-color-surface-variant: #49454f;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-on-surface: #e6e0e9;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-variant: #49454f;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-inverse-surface: #e6e0e9;--mtrl-sys-color-inverse-on-surface: #322f35;--mtrl-sys-color-inverse-primary: #6750a4}[data-theme=baseline]{--mtrl-sys-color-error: #B3261E;--mtrl-sys-color-on-error: #FFFFFF;--mtrl-sys-color-error-container: #F9DEDC;--mtrl-sys-color-on-error-container: #410E0B;--mtrl-sys-color-success: #006C4E;--mtrl-sys-color-on-success: #FFFFFF;--mtrl-sys-color-warning: #974800;--mtrl-sys-color-on-warning: #FFFFFF;--mtrl-sys-color-info: #0061A4;--mtrl-sys-color-on-info: #FFFFFF;--mtrl-sys-color-primary: #6750a4;--mtrl-sys-color-on-primary: #ffffff;--mtrl-sys-color-primary-container: #eaddff;--mtrl-sys-color-on-primary-container: #21005d;--mtrl-sys-color-secondary: #625b71;--mtrl-sys-color-on-secondary: #ffffff;--mtrl-sys-color-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container: #1d192b;--mtrl-sys-color-tertiary: #7d5260;--mtrl-sys-color-on-tertiary: #ffffff;--mtrl-sys-color-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container: #31111d;--mtrl-sys-color-primary-fixed: #eaddff;--mtrl-sys-color-primary-fixed-dim: #d0bcff;--mtrl-sys-color-on-primary-fixed: #21005d;--mtrl-sys-color-on-primary-fixed-variant: #4f378b;--mtrl-sys-color-secondary-fixed: #e8def8;--mtrl-sys-color-secondary-fixed-dim: #ccc2dc;--mtrl-sys-color-on-secondary-fixed: #1d192b;--mtrl-sys-color-on-secondary-fixed-variant: #4a4458;--mtrl-sys-color-tertiary-fixed: #ffd8e4;--mtrl-sys-color-tertiary-fixed-dim: #efb8c8;--mtrl-sys-color-on-tertiary-fixed: #31111d;--mtrl-sys-color-on-tertiary-fixed-variant: #633b48;--mtrl-sys-color-surface: #fef7ff;--mtrl-sys-color-surface-dim: #ded8e1;--mtrl-sys-color-surface-bright: #fef7ff;--mtrl-sys-color-surface-variant: #e7e0ec;--mtrl-sys-color-surface-container-lowest: #ffffff;--mtrl-sys-color-surface-container-low: #f7f2fa;--mtrl-sys-color-surface-container: #f3edf7;--mtrl-sys-color-surface-container-high: #ece6f0;--mtrl-sys-color-surface-container-highest: #e6e0e9;--mtrl-sys-color-on-surface: #1d1b20;--mtrl-sys-color-on-surface-variant: #49454f;--mtrl-sys-color-outline: #79747e;--mtrl-sys-color-outline-variant: #cac4d0;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-inverse-surface: #322f35;--mtrl-sys-color-inverse-on-surface: #f5eff7;--mtrl-sys-color-inverse-primary: #d0bcff;--mtrl-sys-state-hover-state-layer-opacity: 0.08;--mtrl-sys-state-focus-state-layer-opacity: 0.1;--mtrl-sys-state-pressed-state-layer-opacity: 0.1;--mtrl-sys-state-dragged-state-layer-opacity: 0.16}[data-theme=baseline][data-theme-mode=dark]{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-error-container: #8C1D18;--mtrl-sys-color-on-error-container: #F9DEDC;--mtrl-sys-color-success: #8CD6AF;--mtrl-sys-color-on-success: #003824;--mtrl-sys-color-warning: #FFB95C;--mtrl-sys-color-on-warning: #462A00;--mtrl-sys-color-info: #99CBFF;--mtrl-sys-color-on-info: #003355;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-primary-fixed: #eaddff;--mtrl-sys-color-primary-fixed-dim: #d0bcff;--mtrl-sys-color-on-primary-fixed: #21005d;--mtrl-sys-color-on-primary-fixed-variant: #4f378b;--mtrl-sys-color-secondary-fixed: #e8def8;--mtrl-sys-color-secondary-fixed-dim: #ccc2dc;--mtrl-sys-color-on-secondary-fixed: #1d192b;--mtrl-sys-color-on-secondary-fixed-variant: #4a4458;--mtrl-sys-color-tertiary-fixed: #ffd8e4;--mtrl-sys-color-tertiary-fixed-dim: #efb8c8;--mtrl-sys-color-on-tertiary-fixed: #31111d;--mtrl-sys-color-on-tertiary-fixed-variant: #633b48;--mtrl-sys-color-surface: #141218;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-bright: #3b383e;--mtrl-sys-color-surface-variant: #49454f;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-on-surface: #e6e0e9;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-variant: #49454f;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-inverse-surface: #e6e0e9;--mtrl-sys-color-inverse-on-surface: #322f35;--mtrl-sys-color-inverse-primary: #6750a4}@media(prefers-contrast: more){:is([data-theme=baseline],:root:not([data-theme])):not([data-theme-contrast]):not([data-theme-mode=dark])[data-theme]{--mtrl-sys-color-error: #600004;--mtrl-sys-color-error-container: #98000a;--mtrl-sys-color-on-error-container: #ffffff;--mtrl-sys-color-primary: #312259;--mtrl-sys-color-primary-container: #4f4078;--mtrl-sys-color-on-primary-container: #ffffff;--mtrl-sys-color-secondary: #2f293d;--mtrl-sys-color-secondary-container: #4c465b;--mtrl-sys-color-on-secondary-container: #ffffff;--mtrl-sys-color-tertiary: #44212e;--mtrl-sys-color-tertiary-container: #653d4b;--mtrl-sys-color-on-tertiary-container: #ffffff;--mtrl-sys-color-primary-fixed: #4f4078;--mtrl-sys-color-primary-fixed-dim: #382960;--mtrl-sys-color-on-primary-fixed: #ffffff;--mtrl-sys-color-on-primary-fixed-variant: #ffffff;--mtrl-sys-color-secondary-fixed: #4c465b;--mtrl-sys-color-secondary-fixed-dim: #353043;--mtrl-sys-color-on-secondary-fixed: #ffffff;--mtrl-sys-color-on-secondary-fixed-variant: #ffffff;--mtrl-sys-color-tertiary-fixed: #653d4b;--mtrl-sys-color-tertiary-fixed-dim: #4c2734;--mtrl-sys-color-on-tertiary-fixed: #ffffff;--mtrl-sys-color-on-tertiary-fixed-variant: #ffffff;--mtrl-sys-color-surface: #fdf7ff;--mtrl-sys-color-surface-dim: #bcb7bf;--mtrl-sys-color-surface-bright: #fdf7ff;--mtrl-sys-color-surface-variant: #e7e0eb;--mtrl-sys-color-surface-container-low: #f5eff7;--mtrl-sys-color-surface-container: #e6e0e9;--mtrl-sys-color-surface-container-high: #d8d2da;--mtrl-sys-color-surface-container-highest: #cac5cc;--mtrl-sys-color-on-surface: #000000;--mtrl-sys-color-on-surface-variant: #000000;--mtrl-sys-color-outline: #2e2b33;--mtrl-sys-color-outline-variant: #4b4851;--mtrl-sys-color-inverse-on-surface: #ffffff;--mtrl-sys-color-inverse-primary: #cfbdfe}}@media(prefers-contrast: more)and (not (prefers-color-scheme: dark)){:is([data-theme=baseline],:root:not([data-theme])):not([data-theme-contrast]):root:not([data-theme]):not(.dark-theme){--mtrl-sys-color-error: #600004;--mtrl-sys-color-error-container: #98000a;--mtrl-sys-color-on-error-container: #ffffff;--mtrl-sys-color-primary: #312259;--mtrl-sys-color-primary-container: #4f4078;--mtrl-sys-color-on-primary-container: #ffffff;--mtrl-sys-color-secondary: #2f293d;--mtrl-sys-color-secondary-container: #4c465b;--mtrl-sys-color-on-secondary-container: #ffffff;--mtrl-sys-color-tertiary: #44212e;--mtrl-sys-color-tertiary-container: #653d4b;--mtrl-sys-color-on-tertiary-container: #ffffff;--mtrl-sys-color-primary-fixed: #4f4078;--mtrl-sys-color-primary-fixed-dim: #382960;--mtrl-sys-color-on-primary-fixed: #ffffff;--mtrl-sys-color-on-primary-fixed-variant: #ffffff;--mtrl-sys-color-secondary-fixed: #4c465b;--mtrl-sys-color-secondary-fixed-dim: #353043;--mtrl-sys-color-on-secondary-fixed: #ffffff;--mtrl-sys-color-on-secondary-fixed-variant: #ffffff;--mtrl-sys-color-tertiary-fixed: #653d4b;--mtrl-sys-color-tertiary-fixed-dim: #4c2734;--mtrl-sys-color-on-tertiary-fixed: #ffffff;--mtrl-sys-color-on-tertiary-fixed-variant: #ffffff;--mtrl-sys-color-surface: #fdf7ff;--mtrl-sys-color-surface-dim: #bcb7bf;--mtrl-sys-color-surface-bright: #fdf7ff;--mtrl-sys-color-surface-variant: #e7e0eb;--mtrl-sys-color-surface-container-low: #f5eff7;--mtrl-sys-color-surface-container: #e6e0e9;--mtrl-sys-color-surface-container-high: #d8d2da;--mtrl-sys-color-surface-container-highest: #cac5cc;--mtrl-sys-color-on-surface: #000000;--mtrl-sys-color-on-surface-variant: #000000;--mtrl-sys-color-outline: #2e2b33;--mtrl-sys-color-outline-variant: #4b4851;--mtrl-sys-color-inverse-on-surface: #ffffff;--mtrl-sys-color-inverse-primary: #cfbdfe}}@media(prefers-contrast: more){:is([data-theme=baseline],:root:not([data-theme])):not([data-theme-contrast])[data-theme][data-theme-mode=dark],:is([data-theme=baseline],:root:not([data-theme])):not([data-theme-contrast]):root:not([data-theme]).dark-theme{--mtrl-sys-color-error: #ffece9;--mtrl-sys-color-on-error: #000000;--mtrl-sys-color-error-container: #ffaea4;--mtrl-sys-color-on-error-container: #220001;--mtrl-sys-color-primary: #f5edff;--mtrl-sys-color-on-primary: #000000;--mtrl-sys-color-primary-container: #cbb9fa;--mtrl-sys-color-on-primary-container: #0f0033;--mtrl-sys-color-secondary: #f5edff;--mtrl-sys-color-on-secondary: #000000;--mtrl-sys-color-secondary-container: #c8bed8;--mtrl-sys-color-on-secondary-container: #0d081a;--mtrl-sys-color-tertiary: #ffebef;--mtrl-sys-color-on-tertiary: #000000;--mtrl-sys-color-tertiary-container: #eab4c4;--mtrl-sys-color-on-tertiary-container: #1d030d;--mtrl-sys-color-primary-fixed: #e9ddff;--mtrl-sys-color-primary-fixed-dim: #cfbdfe;--mtrl-sys-color-on-primary-fixed: #000000;--mtrl-sys-color-on-primary-fixed-variant: #16033d;--mtrl-sys-color-secondary-fixed: #e8def9;--mtrl-sys-color-on-secondary-fixed: #000000;--mtrl-sys-color-on-secondary-fixed-variant: #130e20;--mtrl-sys-color-tertiary-fixed: #ffd9e3;--mtrl-sys-color-tertiary-fixed-dim: #eeb8c8;--mtrl-sys-color-on-tertiary-fixed: #000000;--mtrl-sys-color-on-tertiary-fixed-variant: #240713;--mtrl-sys-color-surface-bright: #524f55;--mtrl-sys-color-surface-variant: #49454e;--mtrl-sys-color-surface-container-lowest: #000000;--mtrl-sys-color-surface-container-low: #211f24;--mtrl-sys-color-surface-container: #322f35;--mtrl-sys-color-surface-container-high: #3d3a41;--mtrl-sys-color-surface-container-highest: #48464c;--mtrl-sys-color-on-surface: #ffffff;--mtrl-sys-color-on-surface-variant: #ffffff;--mtrl-sys-color-outline: #f4eef9;--mtrl-sys-color-outline-variant: #c6c0cb;--mtrl-sys-color-inverse-on-surface: #000000;--mtrl-sys-color-inverse-primary: #4e3f77}}@media(prefers-contrast: more)and (prefers-color-scheme: dark){:is([data-theme=baseline],:root:not([data-theme])):not([data-theme-contrast]):root:not([data-theme]):not(.dark-theme){--mtrl-sys-color-error: #ffece9;--mtrl-sys-color-on-error: #000000;--mtrl-sys-color-error-container: #ffaea4;--mtrl-sys-color-on-error-container: #220001;--mtrl-sys-color-primary: #f5edff;--mtrl-sys-color-on-primary: #000000;--mtrl-sys-color-primary-container: #cbb9fa;--mtrl-sys-color-on-primary-container: #0f0033;--mtrl-sys-color-secondary: #f5edff;--mtrl-sys-color-on-secondary: #000000;--mtrl-sys-color-secondary-container: #c8bed8;--mtrl-sys-color-on-secondary-container: #0d081a;--mtrl-sys-color-tertiary: #ffebef;--mtrl-sys-color-on-tertiary: #000000;--mtrl-sys-color-tertiary-container: #eab4c4;--mtrl-sys-color-on-tertiary-container: #1d030d;--mtrl-sys-color-primary-fixed: #e9ddff;--mtrl-sys-color-primary-fixed-dim: #cfbdfe;--mtrl-sys-color-on-primary-fixed: #000000;--mtrl-sys-color-on-primary-fixed-variant: #16033d;--mtrl-sys-color-secondary-fixed: #e8def9;--mtrl-sys-color-on-secondary-fixed: #000000;--mtrl-sys-color-on-secondary-fixed-variant: #130e20;--mtrl-sys-color-tertiary-fixed: #ffd9e3;--mtrl-sys-color-tertiary-fixed-dim: #eeb8c8;--mtrl-sys-color-on-tertiary-fixed: #000000;--mtrl-sys-color-on-tertiary-fixed-variant: #240713;--mtrl-sys-color-surface-bright: #524f55;--mtrl-sys-color-surface-variant: #49454e;--mtrl-sys-color-surface-container-lowest: #000000;--mtrl-sys-color-surface-container-low: #211f24;--mtrl-sys-color-surface-container: #322f35;--mtrl-sys-color-surface-container-high: #3d3a41;--mtrl-sys-color-surface-container-highest: #48464c;--mtrl-sys-color-on-surface: #ffffff;--mtrl-sys-color-on-surface-variant: #ffffff;--mtrl-sys-color-outline: #f4eef9;--mtrl-sys-color-outline-variant: #c6c0cb;--mtrl-sys-color-inverse-on-surface: #000000;--mtrl-sys-color-inverse-primary: #4e3f77}}:root{--mtrl-ref-typeface-brand: Roboto, sans-serif;--mtrl-ref-typeface-plain: Roboto, sans-serif;--mtrl-sys-shape-corner-none: 0;--mtrl-sys-shape-corner-extra-small: 4px;--mtrl-sys-shape-corner-small: 8px;--mtrl-sys-shape-corner-medium: 12px;--mtrl-sys-shape-corner-large: 16px;--mtrl-sys-shape-corner-large-increased: 20px;--mtrl-sys-shape-corner-extra-large: 28px;--mtrl-sys-shape-corner-extra-large-increased: 32px;--mtrl-sys-shape-corner-extra-extra-large: 48px;--mtrl-sys-shape-corner-full: 9999px;--mtrl-sys-typescale-body-medium-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-medium-font-size: 14px;--mtrl-sys-typescale-body-medium-line-height: 20px}*,*::before,*::after{box-sizing:border-box}html,body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0;padding:0}body{min-height:100vh;text-rendering:optimizeSpeed;line-height:1.5}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media(prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-property:opacity,color,background-color,border-color,outline-color,box-shadow,visibility !important;scroll-behavior:auto !important}}button{background:rgba(0,0,0,0);border:none;cursor:pointer;padding:0}ul,ol{list-style:none;margin:0;padding:0}a{text-decoration:none;color:inherit}table{border-collapse:collapse;border-spacing:0}.mtrl-ripple{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;border-radius:inherit;pointer-events:none;z-index:0}.mtrl-ripple-wave{position:absolute;border-radius:50%;background-color:currentColor;opacity:0;transform:scale(0);pointer-events:none;will-change:transform,opacity;transition:opacity .4s cubic-bezier(0.4, 0, 0.2, 1)}.mtrl-ripple-wave.active{animation:mtrl-ripple-expand .4s cubic-bezier(0.4, 0, 0.2, 1) both;opacity:.1}.mtrl-ripple-wave.fade-out{opacity:0}@keyframes mtrl-ripple-expand{from{transform:scale(0)}to{transform:scale(1)}}@media(prefers-reduced-motion: reduce){.mtrl-ripple-wave.active{animation:none;transform:scale(1)}.mtrl-ripple-wave{transition:none}}[data-ripple]{position:relative;overflow:hidden}[data-ripple]::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:0;pointer-events:none}[data-ripple][data-ripple=light]::after{background-color:hsla(0,0%,100%,.3)}[data-ripple][data-ripple=dark]::after{background-color:rgba(0,0,0,.1)}[data-ripple]>*{position:relative;z-index:1}body{margin:0;padding:0;background-color:var(--mtrl-sys-color-surface);color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-sys-typescale-body-medium-font);font-size:var(--mtrl-sys-typescale-body-medium-font-size);line-height:var(--mtrl-sys-typescale-body-medium-line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color 100ms cubic-bezier(0.2, 0, 0, 1),color 100ms cubic-bezier(0.2, 0, 0, 1)}html{scroll-behavior:smooth}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}}*,*::before,*::after{box-sizing:border-box}}
@@ -1,2 +1,2 @@
1
- /*! material v3.5.0 | MIT */
1
+ /*! material v3.5.2 | MIT */
2
2
  @layer mtrl.preupgrade,mtrl.base,mtrl.utilities,mtrl.text-field,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.fab-menu,mtrl.extended-fab,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.datepicker,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-bar,mtrl.navigation-rail,mtrl.list,mtrl.tooltip,mtrl.toolbar;@layer mtrl.bottom-app-bar{.mtrl-bottom-app-bar{position:absolute;bottom:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;height:80px;padding:12px 16px 12px 4px;background-color:var(--mtrl-sys-color-surface-container);box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 2px 6px 2px rgba(0,0,0,.15);transition:transform .3s ease-in-out}.mtrl-bottom-app-bar__actions{display:flex;align-items:center;gap:4px;height:100%}.mtrl-bottom-app-bar__actions>*{flex-shrink:0}.mtrl-bottom-app-bar__fab-container{display:flex;align-items:center;justify-content:center;margin-left:auto}.mtrl-bottom-app-bar--with-fab{height:72px}.mtrl-bottom-app-bar--fab-center .mtrl-bottom-app-bar__fab-container{position:absolute;left:50%;transform:translateX(-50%)}.mtrl-bottom-app-bar--hidden{transform:translateY(100%)}:where(.mtrl-rtl) .mtrl-bottom-app-bar:not(:where(.mtrl-ltr,.mtrl-ltr *)),:where(:host(.mtrl-rtl)) .mtrl-bottom-app-bar:not(:where(.mtrl-ltr,.mtrl-ltr *)),[dir=rtl] .mtrl-bottom-app-bar:not(:where(.mtrl-ltr,.mtrl-ltr *)){padding:12px 4px 12px 16px}:where(.mtrl-rtl) .mtrl-bottom-app-bar__actions:not(:where(.mtrl-ltr,.mtrl-ltr *)),:where(:host(.mtrl-rtl)) .mtrl-bottom-app-bar__actions:not(:where(.mtrl-ltr,.mtrl-ltr *)),[dir=rtl] .mtrl-bottom-app-bar__actions:not(:where(.mtrl-ltr,.mtrl-ltr *)){flex-direction:row-reverse}:where(.mtrl-rtl) .mtrl-bottom-app-bar__fab-container:not(:where(.mtrl-ltr,.mtrl-ltr *)),:where(:host(.mtrl-rtl)) .mtrl-bottom-app-bar__fab-container:not(:where(.mtrl-ltr,.mtrl-ltr *)),[dir=rtl] .mtrl-bottom-app-bar__fab-container:not(:where(.mtrl-ltr,.mtrl-ltr *)){margin-right:auto;margin-left:initial}@media(prefers-reduced-motion: reduce){.mtrl-bottom-app-bar{transition-duration:.01ms}}@media(forced-colors: active){.mtrl-bottom-app-bar{border-top:1px solid currentColor}}}
@@ -1,2 +1,2 @@
1
- /*! material v3.5.0 | MIT */
1
+ /*! material v3.5.2 | MIT */
2
2
  @layer mtrl.preupgrade,mtrl.base,mtrl.utilities,mtrl.text-field,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.fab-menu,mtrl.extended-fab,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.datepicker,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-bar,mtrl.navigation-rail,mtrl.list,mtrl.tooltip,mtrl.toolbar;@layer mtrl.bottom-sheet{.mtrl-bottom-sheet{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.mtrl-bottom-sheet--scrim-visible,.mtrl-bottom-sheet--partial,.mtrl-bottom-sheet--expanded{pointer-events:auto}.mtrl-bottom-sheet__scrim{position:absolute;inset:0;background-color:color-mix(in srgb, var(--mtrl-sys-color-scrim) 32%, transparent);opacity:0;visibility:hidden;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),visibility 0s linear 250ms}.mtrl-bottom-sheet__container{position:relative;width:100%;max-width:640px;max-height:100%;display:flex;flex-direction:column;box-sizing:border-box;pointer-events:auto;background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-on-surface);border-top-left-radius:var(--mtrl-sys-shape-corner-extra-large, 28px);border-top-right-radius:var(--mtrl-sys-shape-corner-extra-large, 28px);box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 1px 3px 1px rgba(0,0,0,.15),0 32px 0 0 var(--mtrl-sys-color-surface-container-low);transform:translateY(100%);transition:transform 175ms linear(0, 0.075, 0.227, 0.39, 0.537, 0.657, 0.751, 0.822, 0.874, 0.912, 0.939, 0.958, 0.971, 0.98, 0.987, 0.991, 0.994, 0.996, 0.997, 0.998, 0.999, 0.999, 0.999, 1, 1)}.mtrl-bottom-sheet__container:focus{outline:none}.mtrl-bottom-sheet__container:focus-visible{outline:3px solid var(--mtrl-sys-color-secondary);outline-offset:-3px}.mtrl-bottom-sheet__handle{font:inherit;flex:0 0 auto;position:relative;align-self:center;width:48px;height:48px;margin:0 auto;padding:0;border:0;border-radius:50%;background:none;cursor:grab;touch-action:none}.mtrl-bottom-sheet__handle::before{content:"";position:absolute;inset:22px 8px;border-radius:var(--mtrl-sys-shape-corner-extra-large, 28px);background-color:var(--mtrl-sys-color-on-surface-variant)}.mtrl-bottom-sheet__handle:active{cursor:grabbing}.mtrl-bottom-sheet__handle:focus-visible{outline:3px solid var(--mtrl-sys-color-secondary);outline-offset:-3px}.mtrl-bottom-sheet__header{flex:0 0 auto;padding:0 24px 16px}.mtrl-bottom-sheet__title{margin:0;color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-ref-typeface-brand, Roboto, sans-serif);font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}.mtrl-bottom-sheet__content{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 24px 24px;font-family:var(--mtrl-ref-typeface-plain, Roboto, sans-serif);font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400;color:var(--mtrl-sys-color-on-surface-variant)}.mtrl-bottom-sheet--partial .mtrl-bottom-sheet__container{transform:translateY(0);max-height:var(--mtrl-bottom-sheet-peek-height, 50%);transition:transform 450ms linear(0, 0.055, 0.18, 0.332, 0.483, 0.619, 0.733, 0.823, 0.891, 0.94, 0.973, 0.994, 1.007, 1.013, 1.015, 1.015, 1.013, 1.011, 1.009, 1.006, 1.005, 1.003, 1.002, 1.001, 1)}.mtrl-bottom-sheet--partial .mtrl-bottom-sheet__scrim{opacity:1;visibility:visible;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),visibility 0s}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet__container{transform:translateY(0);max-height:100%;transition:transform 450ms linear(0, 0.055, 0.18, 0.332, 0.483, 0.619, 0.733, 0.823, 0.891, 0.94, 0.973, 0.994, 1.007, 1.013, 1.015, 1.015, 1.013, 1.011, 1.009, 1.006, 1.005, 1.003, 1.002, 1.001, 1)}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet__container:where(.mtrl-bottom-sheet--full-height *){border-top-left-radius:0;border-top-right-radius:0}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet__scrim{opacity:1;visibility:visible;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),visibility 0s}.mtrl-bottom-sheet--standard{pointer-events:none}.mtrl-bottom-sheet--standard .mtrl-bottom-sheet__container{pointer-events:auto}@media(prefers-reduced-motion: reduce){.mtrl-bottom-sheet .mtrl-bottom-sheet__container,.mtrl-bottom-sheet .mtrl-bottom-sheet__scrim,.mtrl-bottom-sheet--partial .mtrl-bottom-sheet__container,.mtrl-bottom-sheet--partial .mtrl-bottom-sheet__scrim,.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet__container,.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet__scrim{transition:none}}dialog.mtrl-bottom-sheet{width:auto;height:auto;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:visible;background:rgba(0,0,0,0);color:inherit;transition:overlay 250ms allow-discrete}dialog.mtrl-bottom-sheet::backdrop{background-color:color-mix(in srgb, var(--mtrl-sys-color-scrim) 32%, transparent);opacity:0;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1)}dialog.mtrl-bottom-sheet.mtrl-bottom-sheet--partial::backdrop,dialog.mtrl-bottom-sheet.mtrl-bottom-sheet--expanded::backdrop{opacity:1}@media(prefers-reduced-motion: reduce){dialog.mtrl-bottom-sheet,dialog.mtrl-bottom-sheet::backdrop{transition:none}}}