@bug-on/m3-expressive 1.2.6 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/buttons.d.mts +3 -3
  3. package/dist/buttons.d.ts +3 -3
  4. package/dist/buttons.js +230 -82
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +231 -83
  7. package/dist/buttons.mjs.map +1 -1
  8. package/dist/{core-D4048_K5.d.mts → core-CAU8g2HY.d.mts} +1 -1
  9. package/dist/{core-Bc5Wj_pc.d.ts → core-DRrLnsnJ.d.ts} +1 -1
  10. package/dist/core.d.mts +2 -2
  11. package/dist/core.d.ts +2 -2
  12. package/dist/core.js +300 -152
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +283 -135
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/feedback.d.mts +40 -6
  17. package/dist/feedback.d.ts +40 -6
  18. package/dist/feedback.js +313 -165
  19. package/dist/feedback.js.map +1 -1
  20. package/dist/feedback.mjs +291 -143
  21. package/dist/feedback.mjs.map +1 -1
  22. package/dist/{icon-button-CSsDmuQC.d.mts → icon-button-CqdQBsRe.d.ts} +11 -5
  23. package/dist/{icon-button-CSsDmuQC.d.ts → icon-button-USJo7AqO.d.mts} +11 -5
  24. package/dist/index.d.mts +6 -6
  25. package/dist/index.d.ts +6 -6
  26. package/dist/index.js +511 -235
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +511 -236
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/layout.d.mts +1 -1
  31. package/dist/layout.d.ts +1 -1
  32. package/dist/layout.js +221 -105
  33. package/dist/layout.js.map +1 -1
  34. package/dist/layout.mjs +222 -106
  35. package/dist/layout.mjs.map +1 -1
  36. package/dist/{md3-Dty-Qcad.d.mts → md3-D0_Z7IXj.d.mts} +9 -1
  37. package/dist/{md3-Dty-Qcad.d.ts → md3-D0_Z7IXj.d.ts} +9 -1
  38. package/dist/navigation.d.mts +103 -33
  39. package/dist/navigation.d.ts +103 -33
  40. package/dist/navigation.js +507 -199
  41. package/dist/navigation.js.map +1 -1
  42. package/dist/navigation.mjs +508 -201
  43. package/dist/navigation.mjs.map +1 -1
  44. package/dist/overlays.js +354 -206
  45. package/dist/overlays.js.map +1 -1
  46. package/dist/overlays.mjs +317 -169
  47. package/dist/overlays.mjs.map +1 -1
  48. package/dist/pickers.js +362 -214
  49. package/dist/pickers.js.map +1 -1
  50. package/dist/pickers.mjs +330 -182
  51. package/dist/pickers.mjs.map +1 -1
  52. package/dist/{split-button-trailing-uncheckable-DPJL3bO6.d.mts → split-button-trailing-uncheckable-26qlZvKT.d.mts} +10 -7
  53. package/dist/{split-button-trailing-uncheckable--BhNTEJw.d.ts → split-button-trailing-uncheckable-CXUVrH64.d.ts} +10 -7
  54. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -5,8 +5,8 @@ import { hexFromArgb, Hct, SchemeExpressive, SchemeNeutral, SchemeMonochrome, Sc
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import { clsx } from 'clsx';
7
7
  import { twMerge } from 'tailwind-merge';
8
+ import { AnimatePresence, m, LazyMotion, domMax, useReducedMotion, useAnimationFrame, useMotionValue, animate, useSpring, useTransform, LayoutGroup, useScroll, useMotionValueEvent } from 'motion/react';
8
9
  import * as RxContextMenu from '@radix-ui/react-context-menu';
9
- import { AnimatePresence, m, LazyMotion, domMax, useReducedMotion, useMotionValue, animate, useAnimationFrame, useSpring, useTransform, LayoutGroup, useScroll, useMotionValueEvent } from 'motion/react';
10
10
  import { cornerRadius } from '@bug-on/m3-tokens';
11
11
  import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
12
12
  import { Slot } from '@radix-ui/react-slot';
@@ -2830,6 +2830,52 @@ function interpolatePath(morph, progress, width, height) {
2830
2830
  function fmt(v) {
2831
2831
  return Number(v.toFixed(4)).toString();
2832
2832
  }
2833
+ function getMaskGradient(direction) {
2834
+ switch (direction) {
2835
+ case "bottom":
2836
+ return "linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 45%, rgba(0, 0, 0, 0.7) 75%, rgba(0, 0, 0, 0) 100%)";
2837
+ case "both":
2838
+ return "linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 20%, rgba(0, 0, 0, 1) 40%, rgba(0, 0, 0, 1) 60%, rgba(0, 0, 0, 0.7) 80%, rgba(0, 0, 0, 0) 100%)";
2839
+ default:
2840
+ return "linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 45%, rgba(0, 0, 0, 0.7) 75%, rgba(0, 0, 0, 0) 100%)";
2841
+ }
2842
+ }
2843
+ function FadingBlurMask({
2844
+ direction = "top",
2845
+ blurIntensity = 12,
2846
+ blurHeight = "100%",
2847
+ color = "var(--md-sys-color-surface)",
2848
+ className,
2849
+ style,
2850
+ children
2851
+ }) {
2852
+ const shouldReduceMotion = useReducedMotion();
2853
+ const activeBlur = shouldReduceMotion ? 0 : blurIntensity;
2854
+ const maskGradient = getMaskGradient(direction);
2855
+ const maskStyle = __spreadValues({
2856
+ position: "absolute",
2857
+ inset: 0,
2858
+ pointerEvents: "none",
2859
+ height: typeof blurHeight === "number" ? `${blurHeight}px` : blurHeight,
2860
+ backdropFilter: activeBlur > 0 ? `blur(${activeBlur}px)` : void 0,
2861
+ WebkitBackdropFilter: activeBlur > 0 ? `blur(${activeBlur}px)` : void 0,
2862
+ maskImage: maskGradient,
2863
+ WebkitMaskImage: maskGradient,
2864
+ backgroundColor: color
2865
+ }, style);
2866
+ return /* @__PURE__ */ jsx(
2867
+ "div",
2868
+ {
2869
+ "aria-hidden": "true",
2870
+ className: cn(
2871
+ "absolute inset-0 pointer-events-none z-0 rounded-[inherit]",
2872
+ className
2873
+ ),
2874
+ style: maskStyle,
2875
+ children
2876
+ }
2877
+ );
2878
+ }
2833
2879
 
2834
2880
  // src/ui/shared/motion-tokens.ts
2835
2881
  var FAST_SPATIAL_SPRING = {
@@ -4590,7 +4636,10 @@ function BottomAppBar({
4590
4636
  floatingActionButton,
4591
4637
  scrollBehavior = "visible",
4592
4638
  scrollElement,
4593
- className
4639
+ className,
4640
+ enableFadingBlur,
4641
+ blurIntensity,
4642
+ blurHeight
4594
4643
  }) {
4595
4644
  const shouldReduceMotion = useReducedMotion();
4596
4645
  const { isHidden } = useAppBarScroll({
@@ -4605,9 +4654,9 @@ function BottomAppBar({
4605
4654
  role: "navigation",
4606
4655
  "aria-label": "Bottom app bar",
4607
4656
  className: cn(
4608
- "fixed bottom-0 inset-x-0 z-50",
4657
+ "fixed bottom-0 inset-x-0 z-50 overflow-hidden rounded-[inherit]",
4609
4658
  "flex items-center",
4610
- "bg-m3-surface-container",
4659
+ !enableFadingBlur && "bg-m3-surface-container",
4611
4660
  "px-2",
4612
4661
  // minimal horizontal padding, icon buttons provide spacing
4613
4662
  "elevation-2",
@@ -4620,8 +4669,19 @@ function BottomAppBar({
4620
4669
  animate: { y: translateY },
4621
4670
  transition: hideTransition,
4622
4671
  children: [
4623
- actions && /* @__PURE__ */ jsx("div", { className: "flex items-center flex-1", children: actions }),
4624
- floatingActionButton && /* @__PURE__ */ jsx("div", { className: "shrink-0 ml-auto mr-2", children: floatingActionButton })
4672
+ enableFadingBlur && /* @__PURE__ */ jsx(
4673
+ FadingBlurMask,
4674
+ {
4675
+ direction: "bottom",
4676
+ blurIntensity,
4677
+ blurHeight,
4678
+ color: "var(--md-sys-color-surface-container)"
4679
+ }
4680
+ ),
4681
+ /* @__PURE__ */ jsxs("div", { className: "relative z-10 flex items-center w-full h-full", children: [
4682
+ actions && /* @__PURE__ */ jsx("div", { className: "flex items-center flex-1", children: actions }),
4683
+ floatingActionButton && /* @__PURE__ */ jsx("div", { className: "shrink-0 ml-auto mr-2", children: floatingActionButton })
4684
+ ] })
4625
4685
  ]
4626
4686
  }
4627
4687
  );
@@ -4729,7 +4789,10 @@ function LargeFlexibleAppBar({
4729
4789
  headerContent,
4730
4790
  collapsedHeight = AppBarTokens.heights.flexibleCollapsed,
4731
4791
  expandedHeight,
4732
- className
4792
+ className,
4793
+ enableFadingBlur,
4794
+ blurIntensity,
4795
+ blurHeight
4733
4796
  }) {
4734
4797
  var _a, _b, _c;
4735
4798
  const resolvedExpandedHeight = expandedHeight != null ? expandedHeight : subtitle ? AppBarTokens.heights.largeFlexWithSubtitleExpanded : AppBarTokens.heights.largeFlexExpanded;
@@ -4759,15 +4822,28 @@ function LargeFlexibleAppBar({
4759
4822
  {
4760
4823
  role: "banner",
4761
4824
  className: cn(
4762
- "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden",
4825
+ "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden rounded-[inherit]",
4763
4826
  className
4764
4827
  ),
4765
- style: { height, backgroundColor: currentBg, transition: cssTransition },
4828
+ style: {
4829
+ height,
4830
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
4831
+ transition: cssTransition
4832
+ },
4766
4833
  children: [
4834
+ enableFadingBlur && /* @__PURE__ */ jsx(
4835
+ FadingBlurMask,
4836
+ {
4837
+ direction: "top",
4838
+ blurIntensity,
4839
+ blurHeight,
4840
+ color: currentBg
4841
+ }
4842
+ ),
4767
4843
  /* @__PURE__ */ jsxs(
4768
4844
  "div",
4769
4845
  {
4770
- className: "flex items-center px-1 shrink-0",
4846
+ className: "relative z-10 flex items-center px-1 shrink-0",
4771
4847
  style: { height: collapsedHeight },
4772
4848
  children: [
4773
4849
  navigationIcon && /* @__PURE__ */ jsx(
@@ -4809,7 +4885,7 @@ function LargeFlexibleAppBar({
4809
4885
  "div",
4810
4886
  {
4811
4887
  className: cn(
4812
- "flex flex-col flex-1 px-4 pb-4 justify-end",
4888
+ "relative z-10 flex flex-col flex-1 px-4 pb-3 justify-end",
4813
4889
  isCentered ? "items-center" : "items-start"
4814
4890
  ),
4815
4891
  children: [
@@ -4862,7 +4938,10 @@ function MediumFlexibleAppBar({
4862
4938
  headerContent,
4863
4939
  collapsedHeight = AppBarTokens.heights.flexibleCollapsed,
4864
4940
  expandedHeight,
4865
- className
4941
+ className,
4942
+ enableFadingBlur,
4943
+ blurIntensity,
4944
+ blurHeight
4866
4945
  }) {
4867
4946
  var _a, _b, _c;
4868
4947
  const resolvedExpandedHeight = expandedHeight != null ? expandedHeight : subtitle ? AppBarTokens.heights.mediumFlexWithSubtitleExpanded : AppBarTokens.heights.mediumFlexExpanded;
@@ -4892,15 +4971,28 @@ function MediumFlexibleAppBar({
4892
4971
  {
4893
4972
  role: "banner",
4894
4973
  className: cn(
4895
- "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden",
4974
+ "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden rounded-[inherit]",
4896
4975
  className
4897
4976
  ),
4898
- style: { height, backgroundColor: currentBg, transition: cssTransition },
4977
+ style: {
4978
+ height,
4979
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
4980
+ transition: cssTransition
4981
+ },
4899
4982
  children: [
4983
+ enableFadingBlur && /* @__PURE__ */ jsx(
4984
+ FadingBlurMask,
4985
+ {
4986
+ direction: "top",
4987
+ blurIntensity,
4988
+ blurHeight,
4989
+ color: currentBg
4990
+ }
4991
+ ),
4900
4992
  /* @__PURE__ */ jsxs(
4901
4993
  "div",
4902
4994
  {
4903
- className: "flex items-center px-1 shrink-0",
4995
+ className: "relative z-10 flex items-center px-1 shrink-0",
4904
4996
  style: { height: collapsedHeight },
4905
4997
  children: [
4906
4998
  navigationIcon && /* @__PURE__ */ jsx(
@@ -4942,7 +5034,7 @@ function MediumFlexibleAppBar({
4942
5034
  "div",
4943
5035
  {
4944
5036
  className: cn(
4945
- "flex flex-col flex-1 px-4 pb-3 justify-end",
5037
+ "relative z-10 flex flex-col flex-1 px-4 pb-3 justify-end",
4946
5038
  isCentered ? "items-center" : "items-start"
4947
5039
  ),
4948
5040
  children: [
@@ -4989,7 +5081,7 @@ function SearchIcon({ className }) {
4989
5081
  "span",
4990
5082
  {
4991
5083
  className: cn(
4992
- "material-symbols-rounded text-[20px] leading-none select-none",
5084
+ "material-symbols-rounded text-[20px] leading-none select-none flex items-center justify-center",
4993
5085
  className
4994
5086
  ),
4995
5087
  "aria-hidden": "true",
@@ -5009,7 +5101,12 @@ function SearchAppBar({
5009
5101
  scrollBehavior = "pinned",
5010
5102
  scrollElement,
5011
5103
  searchBarId = "search-bar",
5012
- className
5104
+ searchBarVariant = "filled",
5105
+ searchBarHeight = 56,
5106
+ className,
5107
+ enableFadingBlur,
5108
+ blurIntensity,
5109
+ blurHeight
5013
5110
  }) {
5014
5111
  var _a, _b;
5015
5112
  const shouldReduceMotion = useReducedMotion();
@@ -5032,65 +5129,92 @@ function SearchAppBar({
5032
5129
  handleSearchClick();
5033
5130
  }
5034
5131
  };
5132
+ const searchBarBg = isScrolled ? "var(--md-sys-color-surface-container-highest)" : APP_BAR_COLORS.searchBarBg;
5133
+ const isOutlined = searchBarVariant === "outlined";
5035
5134
  return /* @__PURE__ */ jsxs(
5036
5135
  m.header,
5037
5136
  {
5038
5137
  role: "banner",
5039
5138
  className: cn(
5040
- "fixed top-0 inset-x-0 z-50 flex items-center gap-2 px-4",
5139
+ "fixed top-0 inset-x-0 z-50 flex items-center gap-2 px-4 overflow-hidden rounded-[inherit]",
5041
5140
  className
5042
5141
  ),
5043
5142
  style: {
5044
5143
  height: AppBarTokens.heights.small,
5045
- backgroundColor: currentBg,
5144
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
5046
5145
  transition: cssTransition
5047
5146
  },
5048
5147
  children: [
5049
- navigationIcon && /* @__PURE__ */ jsx(
5050
- "div",
5148
+ enableFadingBlur && /* @__PURE__ */ jsx(
5149
+ FadingBlurMask,
5051
5150
  {
5052
- className: "shrink-0 flex items-center justify-center",
5053
- style: {
5054
- width: AppBarTokens.iconButtonTouchTarget,
5055
- height: AppBarTokens.iconButtonTouchTarget
5056
- },
5057
- children: navigationIcon
5151
+ direction: "top",
5152
+ blurIntensity,
5153
+ blurHeight,
5154
+ color: currentBg
5058
5155
  }
5059
5156
  ),
5060
- /* @__PURE__ */ jsxs(
5061
- m.div,
5062
- {
5063
- layoutId: shouldReduceMotion ? void 0 : searchBarId,
5064
- role: "search",
5065
- "aria-label": searchPlaceholder,
5066
- "aria-expanded": isSearchOpen,
5067
- tabIndex: 0,
5068
- className: "relative flex flex-1 items-center gap-2 rounded-full cursor-text h-10 px-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
5069
- onClick: handleSearchClick,
5070
- onKeyDown: handleKeyDown,
5071
- children: [
5072
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full bg-m3-surface-container-high -z-10" }),
5073
- /* @__PURE__ */ jsx(
5074
- "span",
5075
- {
5076
- className: "shrink-0",
5077
- style: { color: APP_BAR_COLORS.searchBarContent },
5078
- children: leadingSearchIcon != null ? leadingSearchIcon : /* @__PURE__ */ jsx(SearchIcon, {})
5079
- }
5080
- ),
5081
- /* @__PURE__ */ jsx(
5082
- "span",
5083
- {
5084
- className: "flex-1 text-[16px] leading-6 truncate select-none",
5085
- style: { color: APP_BAR_COLORS.searchBarContent },
5086
- children: searchValue != null ? searchValue : searchPlaceholder
5087
- }
5157
+ /* @__PURE__ */ jsxs("div", { className: "relative z-10 flex items-center gap-2 w-full h-full", children: [
5158
+ navigationIcon && /* @__PURE__ */ jsx(
5159
+ "div",
5160
+ {
5161
+ className: "shrink-0 flex items-center justify-center",
5162
+ style: {
5163
+ width: AppBarTokens.iconButtonTouchTarget,
5164
+ height: AppBarTokens.iconButtonTouchTarget
5165
+ },
5166
+ children: navigationIcon
5167
+ }
5168
+ ),
5169
+ /* @__PURE__ */ jsxs(
5170
+ m.div,
5171
+ {
5172
+ layoutId: shouldReduceMotion ? void 0 : searchBarId,
5173
+ role: "search",
5174
+ "aria-label": searchPlaceholder,
5175
+ "aria-expanded": isSearchOpen,
5176
+ tabIndex: 0,
5177
+ className: cn(
5178
+ "relative flex flex-1 items-center gap-2 rounded-full cursor-text px-4",
5179
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
5180
+ isOutlined && "border border-(--md-sys-color-outline)"
5088
5181
  ),
5089
- trailingSearchActions && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: trailingSearchActions })
5090
- ]
5091
- }
5092
- ),
5093
- externalActions && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: externalActions })
5182
+ style: { height: searchBarHeight },
5183
+ onClick: handleSearchClick,
5184
+ onKeyDown: handleKeyDown,
5185
+ children: [
5186
+ !isOutlined && /* @__PURE__ */ jsx(
5187
+ "div",
5188
+ {
5189
+ className: "absolute inset-0 rounded-full -z-10 transition-colors",
5190
+ style: {
5191
+ backgroundColor: searchBarBg,
5192
+ transition: cssTransition
5193
+ }
5194
+ }
5195
+ ),
5196
+ /* @__PURE__ */ jsx(
5197
+ "span",
5198
+ {
5199
+ className: "shrink-0 flex items-center justify-center h-full",
5200
+ style: { color: APP_BAR_COLORS.searchBarContent },
5201
+ children: leadingSearchIcon != null ? leadingSearchIcon : /* @__PURE__ */ jsx(SearchIcon, {})
5202
+ }
5203
+ ),
5204
+ /* @__PURE__ */ jsx(
5205
+ "span",
5206
+ {
5207
+ className: "flex-1 text-[16px] leading-6 truncate select-none",
5208
+ style: { color: APP_BAR_COLORS.searchBarContent },
5209
+ children: searchValue != null ? searchValue : searchPlaceholder
5210
+ }
5211
+ ),
5212
+ trailingSearchActions && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: trailingSearchActions })
5213
+ ]
5214
+ }
5215
+ ),
5216
+ externalActions && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: externalActions })
5217
+ ] })
5094
5218
  ]
5095
5219
  }
5096
5220
  );
@@ -5263,9 +5387,11 @@ function SmallAppBarInner({
5263
5387
  navigationIcon,
5264
5388
  actions,
5265
5389
  colors,
5266
- className,
5267
5390
  currentBg,
5268
- cssTransition
5391
+ cssTransition,
5392
+ enableFadingBlur,
5393
+ blurIntensity,
5394
+ blurHeight
5269
5395
  }) {
5270
5396
  var _a, _b;
5271
5397
  const isCentered = titleAlignment === "center";
@@ -5273,57 +5399,81 @@ function SmallAppBarInner({
5273
5399
  m.header,
5274
5400
  {
5275
5401
  role: "banner",
5276
- className: cn("flex items-center px-1 h-full w-full", className),
5277
- style: { backgroundColor: currentBg, transition: cssTransition },
5402
+ className: "relative flex items-center px-1 h-full w-full overflow-hidden rounded-[inherit]",
5403
+ style: {
5404
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
5405
+ transition: cssTransition
5406
+ },
5278
5407
  children: [
5279
- navigationIcon && /* @__PURE__ */ jsx(
5280
- "div",
5408
+ enableFadingBlur && /* @__PURE__ */ jsx(
5409
+ FadingBlurMask,
5281
5410
  {
5282
- className: "shrink-0 flex items-center justify-center",
5283
- style: {
5284
- width: AppBarTokens.iconButtonTouchTarget,
5285
- height: AppBarTokens.iconButtonTouchTarget
5286
- },
5287
- children: navigationIcon
5411
+ direction: "top",
5412
+ blurIntensity,
5413
+ blurHeight,
5414
+ color: currentBg
5288
5415
  }
5289
5416
  ),
5290
- /* @__PURE__ */ jsxs(
5291
- "div",
5292
- {
5293
- className: cn(
5294
- "flex-1 flex flex-col justify-center min-w-0",
5295
- isCentered ? "items-center" : "items-start",
5296
- !navigationIcon && "pl-4"
5297
- ),
5298
- children: [
5299
- /* @__PURE__ */ jsx(
5300
- "span",
5301
- {
5302
- className: cn(
5303
- appBarTypography.titleLarge,
5304
- "truncate w-full",
5305
- isCentered && "text-center"
5306
- ),
5307
- style: { color: (_a = colors == null ? void 0 : colors.titleColor) != null ? _a : APP_BAR_COLORS.title },
5308
- children: title
5309
- }
5417
+ /* @__PURE__ */ jsxs("div", { className: "relative z-10 flex items-center w-full h-full", children: [
5418
+ navigationIcon && /* @__PURE__ */ jsx(
5419
+ "div",
5420
+ {
5421
+ className: "shrink-0 flex items-center justify-center",
5422
+ style: {
5423
+ width: AppBarTokens.iconButtonTouchTarget,
5424
+ height: AppBarTokens.iconButtonTouchTarget
5425
+ },
5426
+ children: navigationIcon
5427
+ }
5428
+ ),
5429
+ /* @__PURE__ */ jsxs(
5430
+ "div",
5431
+ {
5432
+ className: cn(
5433
+ "flex-1 flex flex-col justify-center min-w-0",
5434
+ isCentered ? "items-center" : "items-start",
5435
+ !navigationIcon && !isCentered && "pl-4"
5310
5436
  ),
5311
- subtitle && /* @__PURE__ */ jsx(
5312
- "span",
5313
- {
5314
- className: cn(
5315
- appBarTypography.labelMedium,
5316
- "truncate w-full",
5317
- isCentered && "text-center"
5318
- ),
5319
- style: { color: (_b = colors == null ? void 0 : colors.subtitleColor) != null ? _b : APP_BAR_COLORS.subtitle },
5320
- children: subtitle
5321
- }
5322
- )
5323
- ]
5324
- }
5325
- ),
5326
- actions && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: actions })
5437
+ children: [
5438
+ /* @__PURE__ */ jsx(
5439
+ "span",
5440
+ {
5441
+ className: cn(
5442
+ appBarTypography.titleLarge,
5443
+ "truncate w-full",
5444
+ isCentered && "text-center"
5445
+ ),
5446
+ style: { color: (_a = colors == null ? void 0 : colors.titleColor) != null ? _a : APP_BAR_COLORS.title },
5447
+ children: title
5448
+ }
5449
+ ),
5450
+ subtitle && /* @__PURE__ */ jsx(
5451
+ "span",
5452
+ {
5453
+ className: cn(
5454
+ appBarTypography.labelMedium,
5455
+ "truncate w-full",
5456
+ isCentered && "text-center"
5457
+ ),
5458
+ style: {
5459
+ color: (_b = colors == null ? void 0 : colors.subtitleColor) != null ? _b : APP_BAR_COLORS.subtitle
5460
+ },
5461
+ children: subtitle
5462
+ }
5463
+ )
5464
+ ]
5465
+ }
5466
+ ),
5467
+ isCentered && !actions && navigationIcon && /* @__PURE__ */ jsx(
5468
+ "div",
5469
+ {
5470
+ "aria-hidden": "true",
5471
+ style: { width: AppBarTokens.iconButtonTouchTarget },
5472
+ className: "shrink-0"
5473
+ }
5474
+ ),
5475
+ actions && /* @__PURE__ */ jsx("div", { className: "flex items-center shrink-0", children: actions })
5476
+ ] })
5327
5477
  ]
5328
5478
  }
5329
5479
  );
@@ -5337,7 +5487,10 @@ function SmallAppBar({
5337
5487
  colors,
5338
5488
  scrollBehavior = "pinned",
5339
5489
  scrollElement,
5340
- className
5490
+ className,
5491
+ enableFadingBlur,
5492
+ blurIntensity,
5493
+ blurHeight
5341
5494
  }) {
5342
5495
  var _a, _b;
5343
5496
  const shouldReduceMotion = useReducedMotion();
@@ -5357,14 +5510,17 @@ function SmallAppBar({
5357
5510
  actions,
5358
5511
  colors,
5359
5512
  currentBg,
5360
- cssTransition
5513
+ cssTransition,
5514
+ enableFadingBlur,
5515
+ blurIntensity,
5516
+ blurHeight
5361
5517
  };
5362
5518
  const barHeight = AppBarTokens.heights.small;
5363
5519
  if (scrollBehavior !== "enterAlways") {
5364
5520
  return /* @__PURE__ */ jsx(
5365
5521
  "div",
5366
5522
  {
5367
- className: cn("fixed top-0 inset-x-0 z-50", className),
5523
+ className: cn("fixed top-0 inset-x-0 z-50 overflow-hidden", className),
5368
5524
  style: { height: barHeight },
5369
5525
  children: /* @__PURE__ */ jsx(SmallAppBarInner, __spreadValues({}, innerProps))
5370
5526
  }
@@ -5377,7 +5533,10 @@ function SmallAppBar({
5377
5533
  animate: { y: 0 },
5378
5534
  exit: { y: "-100%" },
5379
5535
  transition: shouldReduceMotion ? { duration: 0 } : APP_BAR_ENTER_ALWAYS_SPRING,
5380
- className: cn("fixed top-0 inset-x-0 z-50", className),
5536
+ className: cn(
5537
+ "fixed top-0 inset-x-0 z-50 overflow-hidden",
5538
+ className
5539
+ ),
5381
5540
  style: { height: barHeight },
5382
5541
  children: /* @__PURE__ */ jsx(SmallAppBarInner, __spreadValues({}, innerProps))
5383
5542
  },
@@ -5459,9 +5618,9 @@ function BadgedBox({
5459
5618
  badge,
5460
5619
  children,
5461
5620
  className,
5462
- badgeSize
5621
+ size
5463
5622
  }) {
5464
- const isLarge = badgeSize ? badgeSize === "large" : detectBadgeHasContent(badge);
5623
+ const isLarge = size ? size === "lg" : detectBadgeHasContent(badge);
5465
5624
  const badgePositionClass = isLarge ? "translate-x-[35%] -translate-y-[35%]" : "translate-x-[50%] -translate-y-[50%]";
5466
5625
  return /* @__PURE__ */ jsxs("span", { className: cn("relative inline-flex", className), children: [
5467
5626
  children,
@@ -5689,7 +5848,7 @@ function generateWavyCircularPath(center, radius, amplitude, wavelength) {
5689
5848
  if (i === 0) d += `M ${xAt(t0).toFixed(2)} ${yAt(t0).toFixed(2)}`;
5690
5849
  d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${xAt(t1).toFixed(2)} ${yAt(t1).toFixed(2)}`;
5691
5850
  }
5692
- return d;
5851
+ return `${d} Z`;
5693
5852
  }
5694
5853
  function getSinePath(startX, endX, phase, wl, amp) {
5695
5854
  if (startX >= endX) return "";
@@ -5721,6 +5880,14 @@ function getSinePath(startX, endX, phase, wl, amp) {
5721
5880
  }
5722
5881
  return d;
5723
5882
  }
5883
+ var GLOBAL_ROTATION_DURATION = 6e3;
5884
+ var GLOBAL_ROTATION_TARGET = 1080;
5885
+ var ADDITIONAL_ROTATION_CYCLE = 1500;
5886
+ var ADDITIONAL_ROTATION_STEP = 90;
5887
+ var ADDITIONAL_ROTATION_EASE_DURATION = 500;
5888
+ var DEFAULT_MIN_PROGRESS = 0.1;
5889
+ var DEFAULT_MAX_PROGRESS = 0.8;
5890
+ var PROGRESS_CYCLE_DURATION = 1500;
5724
5891
  var CircularProgress = React62.forwardRef(
5725
5892
  (_a, ref) => {
5726
5893
  var _b = _a, {
@@ -5734,6 +5901,10 @@ var CircularProgress = React62.forwardRef(
5734
5901
  crawlerSpeed = 1,
5735
5902
  color,
5736
5903
  trackColor,
5904
+ showTrack = "auto",
5905
+ minProgress = DEFAULT_MIN_PROGRESS,
5906
+ maxProgress = DEFAULT_MAX_PROGRESS,
5907
+ amplitudeRange,
5737
5908
  className,
5738
5909
  "aria-label": ariaLabel
5739
5910
  } = _b, restProps = __objRest(_b, [
@@ -5747,6 +5918,10 @@ var CircularProgress = React62.forwardRef(
5747
5918
  "crawlerSpeed",
5748
5919
  "color",
5749
5920
  "trackColor",
5921
+ "showTrack",
5922
+ "minProgress",
5923
+ "maxProgress",
5924
+ "amplitudeRange",
5750
5925
  "className",
5751
5926
  "aria-label"
5752
5927
  ]);
@@ -5757,6 +5932,7 @@ var CircularProgress = React62.forwardRef(
5757
5932
  const activeColor = color || "var(--md-sys-color-indicator-active)";
5758
5933
  const bgTrackColor = trackColor || "var(--md-sys-color-indicator-track)";
5759
5934
  const isWavy = shape === "wavy";
5935
+ const shouldShowIndeterminateTrack = showTrack === "auto" ? isWavy : showTrack;
5760
5936
  const BASELINE_SIZE = 48;
5761
5937
  const scaleFactor = size / BASELINE_SIZE;
5762
5938
  const effectiveAmplitude = React62.useMemo(
@@ -5767,6 +5943,10 @@ var CircularProgress = React62.forwardRef(
5767
5943
  () => wavelength != null ? wavelength : 15 * scaleFactor,
5768
5944
  [wavelength, scaleFactor]
5769
5945
  );
5946
+ const resolvedAmplitudeRange = React62.useMemo(
5947
+ () => amplitudeRange != null ? amplitudeRange : [0, effectiveAmplitude],
5948
+ [amplitudeRange, effectiveAmplitude]
5949
+ );
5770
5950
  const wavyActivePath = React62.useMemo(
5771
5951
  () => isWavy ? generateWavyCircularPath(
5772
5952
  center,
@@ -5786,6 +5966,145 @@ var CircularProgress = React62.forwardRef(
5786
5966
  const trackLength = isDeterminate ? Math.max(1e-3, 1 - activeAngularFraction - 2 * gapForTrack) : 1;
5787
5967
  const ActiveCircleElem = m.circle;
5788
5968
  const ActivePathElem = m.path;
5969
+ const indeterminateSvgRef = React62.useRef(null);
5970
+ const indeterminateTrackRef = React62.useRef(null);
5971
+ const indeterminateActiveRef = React62.useRef(null);
5972
+ const indeterminateWavyTrackPathRef = React62.useRef(null);
5973
+ const indeterminateWavyActivePathRef = React62.useRef(null);
5974
+ const cachedPathLengthRef = React62.useRef(0);
5975
+ React62.useLayoutEffect(() => {
5976
+ if (!isWavy || !wavyActivePath) {
5977
+ cachedPathLengthRef.current = circumference;
5978
+ return;
5979
+ }
5980
+ const el = indeterminateActiveRef.current;
5981
+ if (el && "getTotalLength" in el) {
5982
+ try {
5983
+ const len = el.getTotalLength();
5984
+ if (len > 0) {
5985
+ cachedPathLengthRef.current = len;
5986
+ return;
5987
+ }
5988
+ } catch (e) {
5989
+ }
5990
+ }
5991
+ cachedPathLengthRef.current = circumference;
5992
+ }, [isWavy, circumference, wavyActivePath]);
5993
+ useAnimationFrame((time) => {
5994
+ if (isDeterminate) return;
5995
+ const safeCrawlerSpeed = Math.max(0.1, crawlerSpeed);
5996
+ const scaledTime = time * safeCrawlerSpeed;
5997
+ const globalCycle = scaledTime % GLOBAL_ROTATION_DURATION;
5998
+ const globalAngle = globalCycle / GLOBAL_ROTATION_DURATION * GLOBAL_ROTATION_TARGET;
5999
+ const additionalFullCycles = Math.floor(
6000
+ scaledTime / ADDITIONAL_ROTATION_CYCLE
6001
+ );
6002
+ const additionalCycleTime = scaledTime % ADDITIONAL_ROTATION_CYCLE;
6003
+ const additionalEaseT = Math.min(
6004
+ 1,
6005
+ additionalCycleTime / ADDITIONAL_ROTATION_EASE_DURATION
6006
+ );
6007
+ const additionalAngle = (additionalFullCycles + easeInOutCubic(additionalEaseT)) * ADDITIONAL_ROTATION_STEP;
6008
+ const totalRotation = globalAngle + additionalAngle;
6009
+ if (indeterminateSvgRef.current) {
6010
+ indeterminateSvgRef.current.style.transform = `rotate(${totalRotation - 90}deg)`;
6011
+ }
6012
+ const progressFullCycle = PROGRESS_CYCLE_DURATION * 2;
6013
+ const progressCycleTime = scaledTime % progressFullCycle;
6014
+ let progress;
6015
+ if (progressCycleTime < PROGRESS_CYCLE_DURATION) {
6016
+ const t = progressCycleTime / PROGRESS_CYCLE_DURATION;
6017
+ progress = minProgress + (maxProgress - minProgress) * easeInOutCubic(t);
6018
+ } else {
6019
+ const t = (progressCycleTime - PROGRESS_CYCLE_DURATION) / PROGRESS_CYCLE_DURATION;
6020
+ progress = maxProgress - (maxProgress - minProgress) * easeInOutCubic(t);
6021
+ }
6022
+ if (isWavy) {
6023
+ const amplitudeT = (progress - minProgress) / (maxProgress - minProgress);
6024
+ const currentAmplitude = resolvedAmplitudeRange[0] + (resolvedAmplitudeRange[1] - resolvedAmplitudeRange[0]) * amplitudeT;
6025
+ const dynamicPath = generateWavyCircularPath(
6026
+ center,
6027
+ radius,
6028
+ currentAmplitude,
6029
+ effectiveWavelength
6030
+ );
6031
+ if (indeterminateWavyActivePathRef.current) {
6032
+ indeterminateWavyActivePathRef.current.setAttribute("d", dynamicPath);
6033
+ }
6034
+ if (indeterminateWavyTrackPathRef.current) {
6035
+ indeterminateWavyTrackPathRef.current.setAttribute("d", dynamicPath);
6036
+ }
6037
+ const pathEl = indeterminateWavyActivePathRef.current;
6038
+ let totalLen = cachedPathLengthRef.current || circumference;
6039
+ if (pathEl) {
6040
+ try {
6041
+ const len = pathEl.getTotalLength();
6042
+ if (len > 0) totalLen = len;
6043
+ } catch (e) {
6044
+ }
6045
+ }
6046
+ const gapFrac = (gapSize + trackHeight) / totalLen;
6047
+ const activeLen = totalLen * progress;
6048
+ const activeOff = 0;
6049
+ if (indeterminateWavyActivePathRef.current) {
6050
+ indeterminateWavyActivePathRef.current.setAttribute(
6051
+ "stroke-dasharray",
6052
+ `${activeLen} ${totalLen}`
6053
+ );
6054
+ indeterminateWavyActivePathRef.current.setAttribute(
6055
+ "stroke-dashoffset",
6056
+ `${activeOff}`
6057
+ );
6058
+ }
6059
+ if (shouldShowIndeterminateTrack && indeterminateWavyTrackPathRef.current) {
6060
+ const trackStartFrac = progress + gapFrac;
6061
+ const trackLen = Math.max(
6062
+ 1e-3,
6063
+ totalLen * (1 - progress - 2 * gapFrac)
6064
+ );
6065
+ const trackOff = -totalLen * trackStartFrac;
6066
+ indeterminateWavyTrackPathRef.current.setAttribute(
6067
+ "stroke-dasharray",
6068
+ `${trackLen} ${totalLen}`
6069
+ );
6070
+ indeterminateWavyTrackPathRef.current.setAttribute(
6071
+ "stroke-dashoffset",
6072
+ `${trackOff}`
6073
+ );
6074
+ }
6075
+ } else {
6076
+ const totalLen = circumference;
6077
+ const activeLen = totalLen * progress;
6078
+ const activeOff = 0;
6079
+ if (indeterminateActiveRef.current) {
6080
+ indeterminateActiveRef.current.setAttribute(
6081
+ "stroke-dasharray",
6082
+ `${activeLen} ${totalLen}`
6083
+ );
6084
+ indeterminateActiveRef.current.setAttribute(
6085
+ "stroke-dashoffset",
6086
+ `${activeOff}`
6087
+ );
6088
+ }
6089
+ if (shouldShowIndeterminateTrack && indeterminateTrackRef.current) {
6090
+ const gapFrac = (gapSize + trackHeight) / totalLen;
6091
+ const trackStartFrac = progress + gapFrac;
6092
+ const trackLen = Math.max(
6093
+ 1e-3,
6094
+ totalLen * (1 - progress - 2 * gapFrac)
6095
+ );
6096
+ const trackOff = -totalLen * trackStartFrac;
6097
+ indeterminateTrackRef.current.setAttribute(
6098
+ "stroke-dasharray",
6099
+ `${trackLen} ${totalLen}`
6100
+ );
6101
+ indeterminateTrackRef.current.setAttribute(
6102
+ "stroke-dashoffset",
6103
+ `${trackOff}`
6104
+ );
6105
+ }
6106
+ }
6107
+ });
5789
6108
  return /* @__PURE__ */ jsx(
5790
6109
  "div",
5791
6110
  __spreadProps(__spreadValues({
@@ -5862,9 +6181,10 @@ var CircularProgress = React62.forwardRef(
5862
6181
  ]
5863
6182
  }
5864
6183
  ),
5865
- !isDeterminate && /* @__PURE__ */ jsxs(
5866
- m.svg,
6184
+ !isDeterminate && /* @__PURE__ */ jsx(
6185
+ "svg",
5867
6186
  {
6187
+ ref: indeterminateSvgRef,
5868
6188
  width: size,
5869
6189
  height: size,
5870
6190
  viewBox: `0 0 ${size} ${size}`,
@@ -5873,84 +6193,60 @@ var CircularProgress = React62.forwardRef(
5873
6193
  position: "absolute",
5874
6194
  inset: 0,
5875
6195
  overflow: "visible",
5876
- transformOrigin: "center"
5877
- },
5878
- animate: { rotate: [0, 360] },
5879
- transition: {
5880
- duration: 2 / Math.max(0.1, crawlerSpeed),
5881
- repeat: Number.POSITIVE_INFINITY,
5882
- ease: "linear"
6196
+ transformOrigin: "center",
6197
+ transform: "rotate(-90deg)"
5883
6198
  },
5884
- children: [
5885
- /* @__PURE__ */ jsx(
5886
- m.circle,
6199
+ children: isWavy ? /* @__PURE__ */ jsxs(Fragment, { children: [
6200
+ shouldShowIndeterminateTrack && /* @__PURE__ */ jsx(
6201
+ "path",
5887
6202
  {
5888
- cx: center,
5889
- cy: center,
5890
- r: radius,
6203
+ ref: indeterminateWavyTrackPathRef,
6204
+ d: wavyActivePath != null ? wavyActivePath : "",
5891
6205
  fill: "none",
5892
6206
  stroke: bgTrackColor,
5893
6207
  strokeWidth: trackHeight,
5894
- strokeLinecap: "round",
5895
- animate: {
5896
- pathLength: [
5897
- Math.max(1e-3, 0.9 - 2 * gapForTrack),
5898
- Math.max(1e-3, 0.25 - 2 * gapForTrack),
5899
- Math.max(1e-3, 0.9 - 2 * gapForTrack)
5900
- ],
5901
- pathOffset: [
5902
- 0.1 + gapForTrack,
5903
- 0.75 + gapForTrack,
5904
- 0.1 + gapForTrack
5905
- ]
5906
- },
5907
- transition: {
5908
- duration: 2 / Math.max(0.1, crawlerSpeed),
5909
- repeat: Number.POSITIVE_INFINITY,
5910
- ease: [0.4, 0, 0.2, 1]
5911
- }
6208
+ strokeLinecap: "round"
5912
6209
  }
5913
6210
  ),
5914
- isWavy ? /* @__PURE__ */ jsx(
5915
- ActivePathElem,
6211
+ /* @__PURE__ */ jsx(
6212
+ "path",
5916
6213
  {
6214
+ ref: indeterminateWavyActivePathRef,
5917
6215
  d: wavyActivePath != null ? wavyActivePath : "",
5918
6216
  fill: "none",
5919
6217
  stroke: activeColor,
5920
6218
  strokeWidth: trackHeight,
5921
- strokeLinecap: "round",
5922
- animate: {
5923
- pathLength: [0.1, 0.75, 0.1],
5924
- pathOffset: [0, 0.65, 1]
5925
- },
5926
- transition: {
5927
- duration: 2 / Math.max(0.1, crawlerSpeed),
5928
- repeat: Number.POSITIVE_INFINITY,
5929
- ease: [0.4, 0, 0.2, 1]
5930
- }
6219
+ strokeLinecap: "round"
5931
6220
  }
5932
- ) : /* @__PURE__ */ jsx(
5933
- ActiveCircleElem,
6221
+ )
6222
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
6223
+ shouldShowIndeterminateTrack && /* @__PURE__ */ jsx(
6224
+ "circle",
5934
6225
  {
6226
+ ref: indeterminateTrackRef,
6227
+ cx: center,
6228
+ cy: center,
6229
+ r: radius,
6230
+ fill: "none",
6231
+ stroke: bgTrackColor,
6232
+ strokeWidth: trackHeight,
6233
+ strokeLinecap: "round"
6234
+ }
6235
+ ),
6236
+ /* @__PURE__ */ jsx(
6237
+ "circle",
6238
+ {
6239
+ ref: indeterminateActiveRef,
5935
6240
  cx: center,
5936
6241
  cy: center,
5937
6242
  r: radius,
5938
6243
  fill: "none",
5939
6244
  stroke: activeColor,
5940
6245
  strokeWidth: trackHeight,
5941
- strokeLinecap: "round",
5942
- animate: {
5943
- pathLength: [0.1, 0.75, 0.1],
5944
- pathOffset: [0, 0.65, 1]
5945
- },
5946
- transition: {
5947
- duration: 2 / Math.max(0.1, crawlerSpeed),
5948
- repeat: Number.POSITIVE_INFINITY,
5949
- ease: [0.4, 0, 0.2, 1]
5950
- }
6246
+ strokeLinecap: "round"
5951
6247
  }
5952
6248
  )
5953
- ]
6249
+ ] })
5954
6250
  }
5955
6251
  )
5956
6252
  ] })
@@ -6156,7 +6452,7 @@ var WavyLinearTrack = React62.memo(function WavyLinearTrack2({
6156
6452
  currentAmp
6157
6453
  );
6158
6454
  } else if (fraction === 0) {
6159
- activePathD = `M ${capWidth} 0 L ${capWidth + 0.01} 0`;
6455
+ activePathD = "";
6160
6456
  }
6161
6457
  const trackStart = adjHead + totalGap;
6162
6458
  if (trackStart < width - capWidth) {
@@ -6188,20 +6484,20 @@ var WavyLinearTrack = React62.memo(function WavyLinearTrack2({
6188
6484
  activeLines.push({ tail: l1T, head: l1H });
6189
6485
  activeLines.push({ tail: l2T, head: l2H });
6190
6486
  }
6191
- const segments = activeLines.map((line) => {
6192
- const barTail = line.tail * width;
6193
- const barHead = line.head * width;
6487
+ const activeSegments = activeLines.map((line) => {
6488
+ const rawTail = line.tail * width;
6489
+ const rawHead = line.head * width;
6194
6490
  const adjTail = Math.max(
6195
6491
  capWidth,
6196
- Math.min(width - capWidth, barTail)
6492
+ Math.min(width - capWidth, rawTail)
6197
6493
  );
6198
6494
  const adjHead = Math.max(
6199
6495
  capWidth,
6200
- Math.min(width - capWidth, barHead)
6496
+ Math.min(width - capWidth, rawHead)
6201
6497
  );
6202
6498
  return { adjTail, adjHead };
6203
6499
  }).filter((seg) => seg.adjHead - seg.adjTail > 0.1);
6204
- activePathD = segments.map(
6500
+ activePathD = activeSegments.map(
6205
6501
  (seg) => getSinePath(
6206
6502
  seg.adjTail,
6207
6503
  seg.adjHead,
@@ -6210,13 +6506,24 @@ var WavyLinearTrack = React62.memo(function WavyLinearTrack2({
6210
6506
  currentAmp
6211
6507
  )
6212
6508
  ).join(" ");
6509
+ const validActiveLines = activeLines.filter(
6510
+ (line) => line.head > line.tail && line.head * width > 0 && line.tail * width < width
6511
+ ).sort((a, b) => a.tail - b.tail);
6213
6512
  let currentTrackX = capWidth;
6214
- for (const seg of segments) {
6215
- const trackEnd = seg.adjTail - totalGap;
6513
+ for (const line of validActiveLines) {
6514
+ const blockStart = line.tail * width - totalGap;
6515
+ const blockEnd = line.head * width + totalGap;
6516
+ const trackEnd = Math.min(width - capWidth, blockStart);
6216
6517
  if (trackEnd > currentTrackX) {
6217
- trackD += `${getSinePath(currentTrackX, trackEnd, phase, activeWavelength, trackAmp)} `;
6518
+ trackD += `${getSinePath(
6519
+ currentTrackX,
6520
+ trackEnd,
6521
+ phase,
6522
+ activeWavelength,
6523
+ trackAmp
6524
+ )} `;
6218
6525
  }
6219
- currentTrackX = Math.max(currentTrackX, seg.adjHead + totalGap);
6526
+ currentTrackX = Math.max(currentTrackX, blockEnd);
6220
6527
  }
6221
6528
  if (currentTrackX < width - capWidth) {
6222
6529
  trackD += getSinePath(
@@ -6229,9 +6536,9 @@ var WavyLinearTrack = React62.memo(function WavyLinearTrack2({
6229
6536
  }
6230
6537
  }
6231
6538
  if (activePathRef.current)
6232
- activePathRef.current.setAttribute("d", activePathD);
6539
+ activePathRef.current.setAttribute("d", activePathD || "");
6233
6540
  if (trackPathRef.current)
6234
- trackPathRef.current.setAttribute("d", trackD.trim());
6541
+ trackPathRef.current.setAttribute("d", trackD.trim() || "");
6235
6542
  });
6236
6543
  return /* @__PURE__ */ jsx(
6237
6544
  "div",
@@ -8239,9 +8546,9 @@ var TOGGLE_FAB_COLORS = {
8239
8546
  }
8240
8547
  };
8241
8548
  var TOGGLE_FAB_SIZES = {
8242
- baseline: { sizeClass: "h-14 w-14", initialRadius: 16, finalRadius: 28 },
8243
- medium: { sizeClass: "h-20 w-20", initialRadius: 20, finalRadius: 40 },
8244
- large: { sizeClass: "h-24 w-24", initialRadius: 28, finalRadius: 48 }
8549
+ sm: { sizeClass: "h-14 w-14", initialRadius: 16, finalRadius: 28 },
8550
+ md: { sizeClass: "h-20 w-20", initialRadius: 20, finalRadius: 40 },
8551
+ lg: { sizeClass: "h-24 w-24", initialRadius: 28, finalRadius: 48 }
8245
8552
  };
8246
8553
  var MENU_ITEM_STYLES = {
8247
8554
  padding: "ps-4 pe-6",
@@ -8328,7 +8635,7 @@ var ToggleFABComponent = React62.forwardRef(
8328
8635
  onToggle,
8329
8636
  icon,
8330
8637
  colorVariant = "primary",
8331
- fabSize = "baseline",
8638
+ size = "sm",
8332
8639
  className,
8333
8640
  id,
8334
8641
  "aria-label": ariaLabel,
@@ -8337,7 +8644,7 @@ var ToggleFABComponent = React62.forwardRef(
8337
8644
  var _a, _b;
8338
8645
  const prefersReduced = useReducedMotion();
8339
8646
  const colors = (_a = TOGGLE_FAB_COLORS[colorVariant]) != null ? _a : TOGGLE_FAB_COLORS.primary;
8340
- const sizeTokens = (_b = TOGGLE_FAB_SIZES[fabSize]) != null ? _b : TOGGLE_FAB_SIZES.baseline;
8647
+ const sizeTokens = (_b = TOGGLE_FAB_SIZES[size]) != null ? _b : TOGGLE_FAB_SIZES.sm;
8341
8648
  const springConfig = prefersReduced ? SPRING_REDUCED : SPRING_NORMAL;
8342
8649
  const checkedProgress = useSpring(expanded ? 1 : 0, springConfig);
8343
8650
  React62.useEffect(() => {
@@ -8507,7 +8814,7 @@ function FABMenu({
8507
8814
  onToggle,
8508
8815
  items,
8509
8816
  colorVariant = "primary",
8510
- fabSize = "baseline",
8817
+ size = "sm",
8511
8818
  alignment = "end",
8512
8819
  className,
8513
8820
  closeOnBackdropClick = true,
@@ -8658,7 +8965,7 @@ function FABMenu({
8658
8965
  expanded,
8659
8966
  onToggle,
8660
8967
  colorVariant,
8661
- fabSize,
8968
+ size,
8662
8969
  "aria-label": ariaLabel != null ? ariaLabel : expanded ? "Close actions menu" : "Open actions menu",
8663
8970
  "aria-controls": menuId,
8664
8971
  icon: defaultFabIcon
@@ -8802,7 +9109,7 @@ var IconButtonComponent = React62.forwardRef(
8802
9109
  variant = "default",
8803
9110
  colorStyle = "standard",
8804
9111
  size = "sm",
8805
- widthVariant = "default",
9112
+ width = "default",
8806
9113
  shape = "round",
8807
9114
  selected,
8808
9115
  selectedIcon,
@@ -8820,7 +9127,7 @@ var IconButtonComponent = React62.forwardRef(
8820
9127
  "variant",
8821
9128
  "colorStyle",
8822
9129
  "size",
8823
- "widthVariant",
9130
+ "width",
8824
9131
  "shape",
8825
9132
  "selected",
8826
9133
  "selectedIcon",
@@ -8865,7 +9172,7 @@ var IconButtonComponent = React62.forwardRef(
8865
9172
  const iconPx = iconSize != null ? iconSize : defaultIconPx;
8866
9173
  const isCustomSize = iconSize != null && iconSize !== "inherit";
8867
9174
  const heightClass = (_c = SIZE_HEIGHT_STYLES[size]) != null ? _c : SIZE_HEIGHT_STYLES.sm;
8868
- const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[widthVariant]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
9175
+ const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[width]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
8869
9176
  const needsTouchTarget = size === "xs" || size === "sm";
8870
9177
  const { ripples, onPointerDown, removeRipple } = useRippleState({
8871
9178
  disabled: loading
@@ -22751,39 +23058,7 @@ var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
22751
23058
  "label-sm": "text-[11px] leading-[16px] font-medium tracking-[0.5px]",
22752
23059
  "body-lg": "text-[16px] leading-[24px] font-normal tracking-[0.5px]",
22753
23060
  "body-md": "text-[14px] leading-[20px] font-normal tracking-[0.25px]",
22754
- "body-sm": "text-[12px] leading-[16px] font-normal tracking-[0.4px]",
22755
- // Full hyphenated aliases
22756
- "display-large": "text-[57px] leading-[64px] font-normal tracking-[-0.25px]",
22757
- "display-medium": "text-[45px] leading-[52px] font-normal tracking-[0px]",
22758
- "display-small": "text-[36px] leading-[44px] font-normal tracking-[0px]",
22759
- "headline-large": "text-[32px] leading-[40px] font-normal tracking-[0px]",
22760
- "headline-medium": "text-[28px] leading-[36px] font-normal tracking-[0px]",
22761
- "headline-small": "text-[24px] leading-[32px] font-normal tracking-[0px]",
22762
- "title-large": "text-[22px] leading-[28px] font-normal tracking-[0px]",
22763
- "title-medium": "text-[16px] leading-[24px] font-medium tracking-[0.15px]",
22764
- "title-small": "text-[14px] leading-[20px] font-medium tracking-[0.1px]",
22765
- "label-large": "text-[14px] leading-[20px] font-medium tracking-[0.1px]",
22766
- "label-medium": "text-[12px] leading-[16px] font-medium tracking-[0.5px]",
22767
- "label-small": "text-[11px] leading-[16px] font-medium tracking-[0.5px]",
22768
- "body-large": "text-[16px] leading-[24px] font-normal tracking-[0.5px]",
22769
- "body-medium": "text-[14px] leading-[20px] font-normal tracking-[0.25px]",
22770
- "body-small": "text-[12px] leading-[16px] font-normal tracking-[0.4px]",
22771
- // CamelCase aliases
22772
- displayLarge: "text-[57px] leading-[64px] font-normal tracking-[-0.25px]",
22773
- displayMedium: "text-[45px] leading-[52px] font-normal tracking-[0px]",
22774
- displaySmall: "text-[36px] leading-[44px] font-normal tracking-[0px]",
22775
- headlineLarge: "text-[32px] leading-[40px] font-normal tracking-[0px]",
22776
- headlineMedium: "text-[28px] leading-[36px] font-normal tracking-[0px]",
22777
- headlineSmall: "text-[24px] leading-[32px] font-normal tracking-[0px]",
22778
- titleLarge: "text-[22px] leading-[28px] font-normal tracking-[0px]",
22779
- titleMedium: "text-[16px] leading-[24px] font-medium tracking-[0.15px]",
22780
- titleSmall: "text-[14px] leading-[20px] font-medium tracking-[0.1px]",
22781
- labelLarge: "text-[14px] leading-[20px] font-medium tracking-[0.1px]",
22782
- labelMedium: "text-[12px] leading-[16px] font-medium tracking-[0.5px]",
22783
- labelSmall: "text-[11px] leading-[16px] font-medium tracking-[0.5px]",
22784
- bodyLarge: "text-[16px] leading-[24px] font-normal tracking-[0.5px]",
22785
- bodyMedium: "text-[14px] leading-[20px] font-normal tracking-[0.25px]",
22786
- bodySmall: "text-[12px] leading-[16px] font-normal tracking-[0.4px]"
23061
+ "body-sm": "text-[12px] leading-[16px] font-normal tracking-[0.4px]"
22787
23062
  }
22788
23063
  },
22789
23064
  defaultVariants: {
@@ -24161,7 +24436,7 @@ var FloatingToolbarWithFabBase = React62.forwardRef(
24161
24436
  fabPosition = orientation === "horizontal" ? "end" : "bottom",
24162
24437
  animationDuration = 0.3,
24163
24438
  scrollBehavior,
24164
- fabSize = "default",
24439
+ fabSize = "sm",
24165
24440
  className,
24166
24441
  style
24167
24442
  } = _b, props = __objRest(_b, [
@@ -24181,7 +24456,7 @@ var FloatingToolbarWithFabBase = React62.forwardRef(
24181
24456
  const isHorizontal = orientation === "horizontal";
24182
24457
  const effectiveExpanded = expanded && (!scrollBehavior || scrollBehavior.isExpanded);
24183
24458
  const isFabBefore = fabPosition === "start" || fabPosition === "top";
24184
- const resolvedFabSize = fabSize === "medium" ? FabBaselineTokens.MediumContainerHeight : FabBaselineTokens.ContainerHeight;
24459
+ const resolvedFabSize = fabSize === "md" ? FabBaselineTokens.MediumContainerHeight : FabBaselineTokens.ContainerHeight;
24185
24460
  const transitionSpec = __spreadProps(__spreadValues({}, SPRING_TRANSITION), {
24186
24461
  duration: animationDuration
24187
24462
  });
@@ -24320,7 +24595,7 @@ var ToolbarIconButton = React62.forwardRef(
24320
24595
  (_a, ref) => {
24321
24596
  var _b = _a, {
24322
24597
  emphasis = "standard",
24323
- toolbarSize = "default",
24598
+ width = "default",
24324
24599
  selected,
24325
24600
  asChild,
24326
24601
  className,
@@ -24328,7 +24603,7 @@ var ToolbarIconButton = React62.forwardRef(
24328
24603
  whileTap
24329
24604
  } = _b, props = __objRest(_b, [
24330
24605
  "emphasis",
24331
- "toolbarSize",
24606
+ "width",
24332
24607
  "selected",
24333
24608
  "asChild",
24334
24609
  "className",
@@ -24336,7 +24611,7 @@ var ToolbarIconButton = React62.forwardRef(
24336
24611
  "whileTap"
24337
24612
  ]);
24338
24613
  const context = useToolbarContext();
24339
- const widthClass = TOOLBAR_ICON_BUTTON_WIDTH[toolbarSize];
24614
+ const widthClass = TOOLBAR_ICON_BUTTON_WIDTH[width];
24340
24615
  const colorStyle = VARIANT_TO_COLOR_STYLE[emphasis];
24341
24616
  const iconButtonProps = selected !== void 0 ? {
24342
24617
  variant: "toggle",
@@ -25244,6 +25519,6 @@ function TooltipBox({
25244
25519
  ] });
25245
25520
  }
25246
25521
 
25247
- export { ANGLE_EPSILON, APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, BUTTON_COLOR_TOKENS, BUTTON_SIZE_TOKENS, Badge, BadgedBox, BottomAppBar, BottomDockedToolbar, BottomSheet, BottomSheetModal, Button, ButtonDistribute, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, Cubic, DISTANCE_EPSILON, DIVIDER_COLOR, DIVIDER_PADDING, DP_CLASSES, DP_COLORS, DP_SHAPE, DP_SIZE, DatePicker, DatePickerDialog, DatePickerInput, DateRangePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, DragHandle, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, ElevatedSplitButtonLeading, ElevatedSplitButtonTrailing, ElevatedSplitButtonTrailingUncheckable, ExtendedFAB, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, FLOAT_PI, FilledSplitButtonLeading, FilledSplitButtonTrailing, FilledSplitButtonTrailingUncheckable, GROUP_SHAPES, HorizontalFloatingToolbar, HorizontalFloatingToolbarWithFab, ITEM_SHAPE_CLASSES, Icon, IconButton, LIST_TOKENS, LargeFlexibleAppBar, List, ListContext, ListDivider, ListItem, LoadingIndicator, MD3CornerRadius, MD3Shapes, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MeasuredPolygon, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, Morph, MutableCubic, NavigationBar, NavigationBarItem, NavigationRail, NavigationRailItem, OutlinedSplitButtonLeading, OutlinedSplitButtonTrailing, OutlinedSplitButtonTrailingUncheckable, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, RoundedPolygon, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, Scrim, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, Select, ShapeIcon, ShapeMedia, ShapeMediaServer, ShapeSvg, SideSheet, SideSheetModal, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SplitButtonLayout, SplitButtonLeading, SplitButtonTrailing, SplitButtonTrailingUncheckable, SubMenu, Switch, SwitchColors, SwitchTokens, TP_CLASSES, TP_COLORS, TP_SHAPE, TP_SIZE, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, TimeInput, TimePicker, TimePickerDialog, ToggleFAB, TonalSplitButtonLeading, TonalSplitButtonTrailing, TonalSplitButtonTrailingUncheckable, ToolbarDivider, ToolbarDividerTokens, ToolbarIconButton, ToolbarIconButtonTokens, ToolbarToggleButton, ToolbarToggleButtonTokens, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, UNROUNDED, VIBRANT_COLORS, VerticalFloatingToolbar, VerticalFloatingToolbarWithFab, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, addPoints, appBarTypography, applyTheme, buildWavePath, circle, clockwise, cn, convex, cornerFeature, cornerRounding, createDoubleMapper, createMd3ExpressiveTheme, directionVector, distance, distanceSquared, dividePoint, dotProduct, edgeFeature, featureMapper, generateM3Theme, getDirection, getDistance, getDistanceSquared, getExpressiveShape, getListItemHeight, getToolbarColors, interpolate, interpolatePath, lerpPoint, pill, pillStar, point, positiveModulo, radialToCartesian, rectangle, resolveMode, rotate90, scalePoint, shouldTopAlign, square, standardFloatingToolbarColors, star, subtractPoints, surfaceContainerHighFloatingToolbarColors, surfaceContainerHighestFloatingToolbarColors, tertiaryContainerFloatingToolbarColors, toClipPath, toSvgPath, transformFeature, transformPoint, useAppBarScroll, useBottomSheet, useRipple as useDOMRipple, useDatePickerState, useDateRangePickerState, useFloatingToolbarScrollBehavior, useListContext, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useShapeMorph, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTimePickerState, useTooltipPosition, useTooltipState, useTypography, vibrantFloatingToolbarColors, xrFloatingToolbarColors };
25522
+ export { ANGLE_EPSILON, APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, BUTTON_COLOR_TOKENS, BUTTON_SIZE_TOKENS, Badge, BadgedBox, BottomAppBar, BottomDockedToolbar, BottomSheet, BottomSheetModal, Button, ButtonDistribute, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, Cubic, DISTANCE_EPSILON, DIVIDER_COLOR, DIVIDER_PADDING, DP_CLASSES, DP_COLORS, DP_SHAPE, DP_SIZE, DatePicker, DatePickerDialog, DatePickerInput, DateRangePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, DragHandle, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, ElevatedSplitButtonLeading, ElevatedSplitButtonTrailing, ElevatedSplitButtonTrailingUncheckable, ExtendedFAB, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, FLOAT_PI, FadingBlurMask, FilledSplitButtonLeading, FilledSplitButtonTrailing, FilledSplitButtonTrailingUncheckable, GROUP_SHAPES, HorizontalFloatingToolbar, HorizontalFloatingToolbarWithFab, ITEM_SHAPE_CLASSES, Icon, IconButton, LIST_TOKENS, LargeFlexibleAppBar, List, ListContext, ListDivider, ListItem, LoadingIndicator, MD3CornerRadius, MD3Shapes, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MeasuredPolygon, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, Morph, MutableCubic, NavigationBar, NavigationBarItem, NavigationRail, NavigationRailItem, OutlinedSplitButtonLeading, OutlinedSplitButtonTrailing, OutlinedSplitButtonTrailingUncheckable, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, RoundedPolygon, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, Scrim, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, Select, ShapeIcon, ShapeMedia, ShapeMediaServer, ShapeSvg, SideSheet, SideSheetModal, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SplitButtonLayout, SplitButtonLeading, SplitButtonTrailing, SplitButtonTrailingUncheckable, SubMenu, Switch, SwitchColors, SwitchTokens, TP_CLASSES, TP_COLORS, TP_SHAPE, TP_SIZE, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, TimeInput, TimePicker, TimePickerDialog, ToggleFAB, TonalSplitButtonLeading, TonalSplitButtonTrailing, TonalSplitButtonTrailingUncheckable, ToolbarDivider, ToolbarDividerTokens, ToolbarIconButton, ToolbarIconButtonTokens, ToolbarToggleButton, ToolbarToggleButtonTokens, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, UNROUNDED, VIBRANT_COLORS, VerticalFloatingToolbar, VerticalFloatingToolbarWithFab, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, addPoints, appBarTypography, applyTheme, buildWavePath, circle, clockwise, cn, convex, cornerFeature, cornerRounding, createDoubleMapper, createMd3ExpressiveTheme, directionVector, distance, distanceSquared, dividePoint, dotProduct, edgeFeature, featureMapper, generateM3Theme, getDirection, getDistance, getDistanceSquared, getExpressiveShape, getListItemHeight, getToolbarColors, interpolate, interpolatePath, lerpPoint, pill, pillStar, point, positiveModulo, radialToCartesian, rectangle, resolveMode, rotate90, scalePoint, shouldTopAlign, square, standardFloatingToolbarColors, star, subtractPoints, surfaceContainerHighFloatingToolbarColors, surfaceContainerHighestFloatingToolbarColors, tertiaryContainerFloatingToolbarColors, toClipPath, toSvgPath, transformFeature, transformPoint, useAppBarScroll, useBottomSheet, useRipple as useDOMRipple, useDatePickerState, useDateRangePickerState, useFloatingToolbarScrollBehavior, useListContext, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useShapeMorph, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTimePickerState, useTooltipPosition, useTooltipState, useTypography, vibrantFloatingToolbarColors, xrFloatingToolbarColors };
25248
25523
  //# sourceMappingURL=index.mjs.map
25249
25524
  //# sourceMappingURL=index.mjs.map