@bug-on/m3-expressive 1.3.0 → 1.3.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 (69) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +88 -60
  3. package/dist/buttons.d.mts +3 -3
  4. package/dist/buttons.d.ts +3 -3
  5. package/dist/buttons.js +185 -40
  6. package/dist/buttons.js.map +1 -1
  7. package/dist/buttons.mjs +186 -41
  8. package/dist/buttons.mjs.map +1 -1
  9. package/dist/{core-CAU8g2HY.d.mts → core-D8FdHY6I.d.mts} +1 -1
  10. package/dist/{core-DRrLnsnJ.d.ts → core-DyEy8H9Z.d.ts} +1 -1
  11. package/dist/core.d.mts +2 -2
  12. package/dist/core.d.ts +2 -2
  13. package/dist/core.js +156 -25
  14. package/dist/core.js.map +1 -1
  15. package/dist/core.mjs +157 -26
  16. package/dist/core.mjs.map +1 -1
  17. package/dist/feedback.d.mts +20 -0
  18. package/dist/feedback.d.ts +20 -0
  19. package/dist/feedback.js +157 -26
  20. package/dist/feedback.js.map +1 -1
  21. package/dist/feedback.mjs +158 -27
  22. package/dist/feedback.mjs.map +1 -1
  23. package/dist/forms.d.mts +4 -2
  24. package/dist/forms.d.ts +4 -2
  25. package/dist/forms.js +5065 -2980
  26. package/dist/forms.js.map +1 -1
  27. package/dist/forms.mjs +5064 -2982
  28. package/dist/forms.mjs.map +1 -1
  29. package/dist/{icon-button-USJo7AqO.d.mts → icon-button-CxyJv7UV.d.mts} +1 -1
  30. package/dist/{icon-button-CqdQBsRe.d.ts → icon-button-Di8VX6ou.d.ts} +1 -1
  31. package/dist/index.d.mts +12 -82
  32. package/dist/index.d.ts +12 -82
  33. package/dist/index.js +2875 -1226
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +2723 -1086
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/layout.d.mts +481 -33
  38. package/dist/layout.d.ts +481 -33
  39. package/dist/layout.js +1653 -243
  40. package/dist/layout.js.map +1 -1
  41. package/dist/layout.mjs +1626 -232
  42. package/dist/layout.mjs.map +1 -1
  43. package/dist/{md3-D0_Z7IXj.d.mts → md3-BQhRygSi.d.mts} +1 -1
  44. package/dist/{md3-D0_Z7IXj.d.ts → md3-BQhRygSi.d.ts} +1 -1
  45. package/dist/menu-types-rZNQFO7Y.d.mts +315 -0
  46. package/dist/menu-types-rZNQFO7Y.d.ts +315 -0
  47. package/dist/navigation.d.mts +5 -289
  48. package/dist/navigation.d.ts +5 -289
  49. package/dist/navigation.js +575 -271
  50. package/dist/navigation.js.map +1 -1
  51. package/dist/navigation.mjs +568 -265
  52. package/dist/navigation.mjs.map +1 -1
  53. package/dist/overlays.d.mts +2 -2
  54. package/dist/overlays.d.ts +2 -2
  55. package/dist/overlays.js +156 -25
  56. package/dist/overlays.js.map +1 -1
  57. package/dist/overlays.mjs +157 -26
  58. package/dist/overlays.mjs.map +1 -1
  59. package/dist/pickers.js +156 -25
  60. package/dist/pickers.js.map +1 -1
  61. package/dist/pickers.mjs +157 -26
  62. package/dist/pickers.mjs.map +1 -1
  63. package/dist/{side-sheet-modal-Dgjt739k.d.mts → side-sheet-modal-64FGhDxL.d.mts} +1 -1
  64. package/dist/{side-sheet-modal-DdEZR6Vl.d.ts → side-sheet-modal-Bd5Qqvp9.d.ts} +1 -1
  65. package/dist/{split-button-trailing-uncheckable-26qlZvKT.d.mts → split-button-trailing-uncheckable-CGzk7KcG.d.ts} +3 -1
  66. package/dist/{split-button-trailing-uncheckable-CXUVrH64.d.ts → split-button-trailing-uncheckable-gAz6OAIi.d.mts} +3 -1
  67. package/dist/{text-field-DWC7qOvp.d.ts → text-field-4OlT9o8s.d.mts} +206 -55
  68. package/dist/{text-field-DWC7qOvp.d.mts → text-field-DARNdj14.d.ts} +206 -55
  69. package/package.json +3 -3
@@ -5,8 +5,9 @@ var react = require('motion/react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
- var React37 = require('react');
8
+ var React38 = require('react');
9
9
  var RxContextMenu = require('@radix-ui/react-context-menu');
10
+ var RadixScrollArea = require('@radix-ui/react-scroll-area');
10
11
  var m3Tokens = require('@bug-on/m3-tokens');
11
12
  var DropdownMenu = require('@radix-ui/react-dropdown-menu');
12
13
  var reactSlot = require('@radix-ui/react-slot');
@@ -31,8 +32,9 @@ function _interopNamespace(e) {
31
32
  return Object.freeze(n);
32
33
  }
33
34
 
34
- var React37__namespace = /*#__PURE__*/_interopNamespace(React37);
35
+ var React38__namespace = /*#__PURE__*/_interopNamespace(React38);
35
36
  var RxContextMenu__namespace = /*#__PURE__*/_interopNamespace(RxContextMenu);
37
+ var RadixScrollArea__namespace = /*#__PURE__*/_interopNamespace(RadixScrollArea);
36
38
  var DropdownMenu__namespace = /*#__PURE__*/_interopNamespace(DropdownMenu);
37
39
 
38
40
  var __defProp = Object.defineProperty;
@@ -316,6 +318,127 @@ function AppBarItemButton({ item }) {
316
318
  }
317
319
  );
318
320
  }
321
+ var ScrollArea = React38__namespace.forwardRef(
322
+ (_a, ref) => {
323
+ var _b = _a, {
324
+ className,
325
+ viewportClassName,
326
+ children,
327
+ type = "hover",
328
+ orientation = "vertical",
329
+ scrollHideDelay = 600,
330
+ viewportRef,
331
+ viewportProps
332
+ } = _b, props = __objRest(_b, [
333
+ "className",
334
+ "viewportClassName",
335
+ "children",
336
+ "type",
337
+ "orientation",
338
+ "scrollHideDelay",
339
+ "viewportRef",
340
+ "viewportProps"
341
+ ]);
342
+ const [isTouchDevice, setIsTouchDevice] = React38__namespace.useState(false);
343
+ React38__namespace.useEffect(() => {
344
+ if (typeof window !== "undefined") {
345
+ setIsTouchDevice(
346
+ "ontouchstart" in window || navigator.maxTouchPoints > 0
347
+ );
348
+ }
349
+ }, []);
350
+ const resolvedType = React38__namespace.useMemo(() => {
351
+ if (type === "hover" && isTouchDevice) {
352
+ return "scroll";
353
+ }
354
+ return type;
355
+ }, [type, isTouchDevice]);
356
+ const radixType = resolvedType === "none" ? "always" : resolvedType;
357
+ return /* @__PURE__ */ jsxRuntime.jsxs(
358
+ RadixScrollArea__namespace.Root,
359
+ __spreadProps(__spreadValues({
360
+ ref,
361
+ type: radixType,
362
+ scrollHideDelay,
363
+ className: cn("relative overflow-hidden flex flex-col", className)
364
+ }, props), {
365
+ children: [
366
+ /* @__PURE__ */ jsxRuntime.jsx(
367
+ RadixScrollArea__namespace.Viewport,
368
+ __spreadProps(__spreadValues({
369
+ ref: viewportRef
370
+ }, viewportProps), {
371
+ className: cn(
372
+ "h-full w-full flex-1 min-h-0 min-w-0 rounded-[inherit]",
373
+ "outline-none focus-visible:ring-2 focus-visible:ring-m3-primary focus-visible:ring-offset-1",
374
+ viewportClassName,
375
+ viewportProps == null ? void 0 : viewportProps.className
376
+ ),
377
+ children
378
+ })
379
+ ),
380
+ (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ jsxRuntime.jsx(
381
+ ScrollAreaScrollbar,
382
+ {
383
+ orientation: "vertical",
384
+ className: resolvedType === "none" ? "hidden" : void 0
385
+ }
386
+ ),
387
+ (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ jsxRuntime.jsx(
388
+ ScrollAreaScrollbar,
389
+ {
390
+ orientation: "horizontal",
391
+ className: resolvedType === "none" ? "hidden" : void 0
392
+ }
393
+ ),
394
+ /* @__PURE__ */ jsxRuntime.jsx(RadixScrollArea__namespace.Corner, { className: "bg-m3-surface-container" })
395
+ ]
396
+ })
397
+ );
398
+ }
399
+ );
400
+ ScrollArea.displayName = "ScrollArea";
401
+ var ScrollAreaScrollbar = React38__namespace.forwardRef((_a, ref) => {
402
+ var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
403
+ return /* @__PURE__ */ jsxRuntime.jsx(
404
+ RadixScrollArea__namespace.Scrollbar,
405
+ __spreadProps(__spreadValues({
406
+ ref,
407
+ orientation,
408
+ className: cn(
409
+ "flex touch-none select-none transition-all duration-300 ease-in-out",
410
+ "absolute z-50",
411
+ orientation === "vertical" && "right-0 top-0 bottom-0 w-2.5 border-l border-l-transparent p-px",
412
+ orientation === "horizontal" && "bottom-0 left-0 right-0 h-2.5 flex-col border-t border-t-transparent p-px",
413
+ "data-[state=hidden]:opacity-0 data-[state=visible]:opacity-100",
414
+ className
415
+ )
416
+ }, props), {
417
+ children: /* @__PURE__ */ jsxRuntime.jsx(
418
+ RadixScrollArea__namespace.Thumb,
419
+ {
420
+ className: cn(
421
+ "relative flex-1 rounded-full bg-m3-on-surface/25 transition-colors duration-200",
422
+ "hover:bg-m3-on-surface/40 active:bg-m3-on-surface/55",
423
+ "before:absolute before:left-1/2 before:top-1/2 before:min-h-11 before:min-w-11 before:-translate-x-1/2 before:-translate-y-1/2"
424
+ )
425
+ }
426
+ )
427
+ })
428
+ );
429
+ });
430
+ ScrollAreaScrollbar.displayName = RadixScrollArea__namespace.Scrollbar.displayName;
431
+ var ScrollAreaCorner = React38__namespace.forwardRef((_a, ref) => {
432
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
433
+ return /* @__PURE__ */ jsxRuntime.jsx(
434
+ RadixScrollArea__namespace.Corner,
435
+ __spreadValues({
436
+ ref,
437
+ className: cn("bg-m3-surface-container", className)
438
+ }, props)
439
+ );
440
+ });
441
+ ScrollAreaCorner.displayName = "ScrollAreaCorner";
319
442
 
320
443
  // src/ui/menu/menu-animations.ts
321
444
  var FAST_EFFECTS_TRANSITION = {
@@ -374,7 +497,7 @@ var SUBMENU_CONTAINER_VARIANTS = {
374
497
  transition: FAST_EFFECTS_TRANSITION
375
498
  }
376
499
  };
377
- var MenuContext = React37__namespace.createContext({
500
+ var MenuContext = React38__namespace.createContext({
378
501
  variant: "baseline",
379
502
  colorVariant: "standard",
380
503
  density: 0,
@@ -392,7 +515,7 @@ function MenuProvider({
392
515
  onOpenChange,
393
516
  children
394
517
  }) {
395
- const value = React37__namespace.useMemo(
518
+ const value = React38__namespace.useMemo(
396
519
  () => ({
397
520
  variant,
398
521
  colorVariant,
@@ -406,8 +529,8 @@ function MenuProvider({
406
529
  return /* @__PURE__ */ jsxRuntime.jsx(MenuContext.Provider, { value, children });
407
530
  }
408
531
  function useMenuContext() {
409
- const ctx = React37__namespace.useContext(MenuContext);
410
- return React37__namespace.useMemo(
532
+ const ctx = React38__namespace.useContext(MenuContext);
533
+ return React38__namespace.useMemo(
411
534
  () => Object.assign(ctx, {
412
535
  get isStatic() {
413
536
  return ctx.menuPrimitive === "static";
@@ -527,10 +650,10 @@ var VIBRANT_COLORS = {
527
650
  var DIVIDER_PADDING = "mx-3 my-0.5";
528
651
  var DIVIDER_COLOR = "bg-m3-outline-variant";
529
652
  function flattenChildren(nodes) {
530
- return React37__namespace.Children.toArray(nodes).reduce(
653
+ return React38__namespace.Children.toArray(nodes).reduce(
531
654
  (acc, child) => {
532
- if (!React37__namespace.isValidElement(child)) return acc;
533
- if (child.type === React37__namespace.Fragment) {
655
+ if (!React38__namespace.isValidElement(child)) return acc;
656
+ if (child.type === React38__namespace.Fragment) {
534
657
  return acc.concat(
535
658
  flattenChildren(
536
659
  child.props.children
@@ -548,7 +671,7 @@ function ContextMenu({
548
671
  variant = "baseline",
549
672
  colorVariant = "standard"
550
673
  }) {
551
- const [open, setOpen] = React37__namespace.useState(false);
674
+ const [open, setOpen] = React38__namespace.useState(false);
552
675
  return /* @__PURE__ */ jsxRuntime.jsx(
553
676
  MenuProvider,
554
677
  {
@@ -562,24 +685,30 @@ function ContextMenu({
562
685
  );
563
686
  }
564
687
  ContextMenu.displayName = "ContextMenu";
565
- var ContextMenuTrigger = React37__namespace.forwardRef((_a, ref) => {
688
+ var ContextMenuTrigger = React38__namespace.forwardRef((_a, ref) => {
566
689
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
567
690
  return /* @__PURE__ */ jsxRuntime.jsx(RxContextMenu__namespace.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
568
691
  });
569
692
  ContextMenuTrigger.displayName = "ContextMenuTrigger";
570
- var ContextMenuContent = React37__namespace.forwardRef(
693
+ var ContextMenuContent = React38__namespace.forwardRef(
571
694
  (_a, ref) => {
572
695
  var _b = _a, {
573
696
  children,
574
697
  hasOverflow = false,
575
698
  colorVariant: propColorVariant,
576
699
  separatorStyle = "gap",
700
+ maxHeight = "360px",
701
+ viewportRef,
702
+ onViewportRef,
577
703
  className
578
704
  } = _b, props = __objRest(_b, [
579
705
  "children",
580
706
  "hasOverflow",
581
707
  "colorVariant",
582
708
  "separatorStyle",
709
+ "maxHeight",
710
+ "viewportRef",
711
+ "onViewportRef",
583
712
  "className"
584
713
  ]);
585
714
  const {
@@ -590,7 +719,18 @@ var ContextMenuContent = React37__namespace.forwardRef(
590
719
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
591
720
  const colors = variant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
592
721
  const isExpressiveGap = variant === "expressive" && separatorStyle === "gap";
593
- const containerClassName = React37__namespace.useMemo(
722
+ const setViewportNode = React38__namespace.useCallback(
723
+ (node) => {
724
+ if (typeof viewportRef === "function") {
725
+ viewportRef(node);
726
+ } else if (viewportRef && typeof viewportRef === "object") {
727
+ viewportRef.current = node;
728
+ }
729
+ onViewportRef == null ? void 0 : onViewportRef(node);
730
+ },
731
+ [viewportRef, onViewportRef]
732
+ );
733
+ const containerClassName = React38__namespace.useMemo(
594
734
  () => variant === "expressive" ? cn(
595
735
  "z-50 flex flex-col w-full",
596
736
  MENU_MIN_WIDTH,
@@ -617,12 +757,12 @@ var ContextMenuContent = React37__namespace.forwardRef(
617
757
  ),
618
758
  [variant, isExpressiveGap, hasOverflow, className, colors.containerBg]
619
759
  );
620
- const renderedChildren = React37__namespace.useMemo(() => {
760
+ const renderedChildren = React38__namespace.useMemo(() => {
621
761
  if (variant !== "expressive") return children;
622
762
  const validChildren = flattenChildren(children);
623
763
  const groupCount = validChildren.length;
624
764
  const enhanced = validChildren.map(
625
- (child, i) => React37__namespace.cloneElement(
765
+ (child, i) => React38__namespace.cloneElement(
626
766
  child,
627
767
  { index: i, count: groupCount, isGapVariant: isExpressiveGap }
628
768
  )
@@ -655,7 +795,15 @@ var ContextMenuContent = React37__namespace.forwardRef(
655
795
  style: __spreadProps(__spreadValues({}, props.style), {
656
796
  transformOrigin: "var(--radix-context-menu-content-transform-origin)"
657
797
  }),
658
- children: renderedChildren
798
+ children: hasOverflow || !maxHeight ? renderedChildren : /* @__PURE__ */ jsxRuntime.jsx(
799
+ ScrollArea,
800
+ {
801
+ style: { maxHeight },
802
+ className: "w-full flex-1 min-h-0",
803
+ viewportRef: setViewportNode,
804
+ children: renderedChildren
805
+ }
806
+ )
659
807
  }
660
808
  ) })) }) });
661
809
  }
@@ -683,12 +831,12 @@ function Menu(_a) {
683
831
  ]);
684
832
  var _a2;
685
833
  const resolvedVariant = (_a2 = variant != null ? variant : menuVariant) != null ? _a2 : "baseline";
686
- const [internalOpen, setInternalOpen] = React37__namespace.useState(
834
+ const [internalOpen, setInternalOpen] = React38__namespace.useState(
687
835
  () => defaultOpen != null ? defaultOpen : false
688
836
  );
689
837
  const isControlled = controlledOpen !== void 0;
690
838
  const open = isControlled ? controlledOpen : internalOpen;
691
- const handleOpenChange = React37__namespace.useCallback(
839
+ const handleOpenChange = React38__namespace.useCallback(
692
840
  (next) => {
693
841
  if (!isControlled) setInternalOpen(next);
694
842
  controlledOnOpenChange == null ? void 0 : controlledOnOpenChange(next);
@@ -716,12 +864,12 @@ function Menu(_a) {
716
864
  );
717
865
  }
718
866
  Menu.displayName = "Menu";
719
- var MenuTrigger = React37__namespace.forwardRef((_a, ref) => {
867
+ var MenuTrigger = React38__namespace.forwardRef((_a, ref) => {
720
868
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
721
869
  return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
722
870
  });
723
871
  MenuTrigger.displayName = "MenuTrigger";
724
- var MenuContent = React37__namespace.forwardRef(
872
+ var MenuContent = React38__namespace.forwardRef(
725
873
  (_a, ref) => {
726
874
  var _b = _a, {
727
875
  children,
@@ -732,6 +880,9 @@ var MenuContent = React37__namespace.forwardRef(
732
880
  colorVariant: propColorVariant,
733
881
  separatorStyle = "gap",
734
882
  matchTriggerWidth = false,
883
+ maxHeight = "360px",
884
+ viewportRef,
885
+ onViewportRef,
735
886
  className
736
887
  } = _b, props = __objRest(_b, [
737
888
  "children",
@@ -742,6 +893,9 @@ var MenuContent = React37__namespace.forwardRef(
742
893
  "colorVariant",
743
894
  "separatorStyle",
744
895
  "matchTriggerWidth",
896
+ "maxHeight",
897
+ "viewportRef",
898
+ "onViewportRef",
745
899
  "className"
746
900
  ]);
747
901
  const {
@@ -752,7 +906,18 @@ var MenuContent = React37__namespace.forwardRef(
752
906
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
753
907
  const colors = variant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
754
908
  const isExpressiveGap = variant === "expressive" && separatorStyle === "gap";
755
- const containerClassName = React37__namespace.useMemo(() => {
909
+ const setViewportNode = React38__namespace.useCallback(
910
+ (node) => {
911
+ if (typeof viewportRef === "function") {
912
+ viewportRef(node);
913
+ } else if (viewportRef && typeof viewportRef === "object") {
914
+ viewportRef.current = node;
915
+ }
916
+ onViewportRef == null ? void 0 : onViewportRef(node);
917
+ },
918
+ [viewportRef, onViewportRef]
919
+ );
920
+ const containerClassName = React38__namespace.useMemo(() => {
756
921
  const widthClass = matchTriggerWidth ? "w-[var(--radix-dropdown-menu-trigger-width)]" : cn(MENU_MIN_WIDTH, MENU_MAX_WIDTH);
757
922
  return variant === "expressive" ? cn(
758
923
  "z-50 flex flex-col",
@@ -785,7 +950,7 @@ var MenuContent = React37__namespace.forwardRef(
785
950
  className,
786
951
  colors.containerBg
787
952
  ]);
788
- const renderedChildren = React37__namespace.useMemo(() => {
953
+ const renderedChildren = React38__namespace.useMemo(() => {
789
954
  if (variant !== "expressive") return children;
790
955
  const validChildren = flattenChildren(children);
791
956
  const groupCount = validChildren.length;
@@ -794,7 +959,7 @@ var MenuContent = React37__namespace.forwardRef(
794
959
  if (typeof child.type === "string") return child;
795
960
  const defaultItemPosition = groupCount === 1 ? "standalone" : i === 0 ? "leading" : i === groupCount - 1 ? "trailing" : "middle";
796
961
  const itemPosition = (_a2 = child.props.itemPosition) != null ? _a2 : defaultItemPosition;
797
- return React37__namespace.cloneElement(
962
+ return React38__namespace.cloneElement(
798
963
  child,
799
964
  {
800
965
  index: i,
@@ -844,7 +1009,15 @@ var MenuContent = React37__namespace.forwardRef(
844
1009
  style: __spreadProps(__spreadValues({}, props.style), {
845
1010
  transformOrigin: "var(--radix-dropdown-menu-content-transform-origin)"
846
1011
  }),
847
- children: renderedChildren
1012
+ children: hasOverflow || !maxHeight ? renderedChildren : /* @__PURE__ */ jsxRuntime.jsx(
1013
+ ScrollArea,
1014
+ {
1015
+ style: { maxHeight },
1016
+ className: "w-full flex-1 min-h-0",
1017
+ viewportRef: setViewportNode,
1018
+ children: renderedChildren
1019
+ }
1020
+ )
848
1021
  }
849
1022
  )
850
1023
  })
@@ -852,7 +1025,7 @@ var MenuContent = React37__namespace.forwardRef(
852
1025
  }
853
1026
  );
854
1027
  MenuContent.displayName = "MenuContent";
855
- var MenuDivider = React37__namespace.forwardRef(
1028
+ var MenuDivider = React38__namespace.forwardRef(
856
1029
  (_a, ref) => {
857
1030
  var _b = _a, { className, isGapVariant: _isGapVariant } = _b, props = __objRest(_b, ["className", "isGapVariant"]);
858
1031
  const { menuVariant } = useMenuContext();
@@ -883,7 +1056,7 @@ function getGroupPosition(index, count) {
883
1056
  function getGroupActiveShape(position) {
884
1057
  return GROUP_SHAPES[`${position}Active`];
885
1058
  }
886
- var MenuGroup = React37__namespace.forwardRef(
1059
+ var MenuGroup = React38__namespace.forwardRef(
887
1060
  (_a, ref) => {
888
1061
  var _b = _a, {
889
1062
  children,
@@ -909,7 +1082,7 @@ var MenuGroup = React37__namespace.forwardRef(
909
1082
  const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
910
1083
  const position = getGroupPosition(index, count);
911
1084
  const currentShape = getGroupActiveShape(position);
912
- const enhancedChildren = React37__namespace.useMemo(() => {
1085
+ const enhancedChildren = React38__namespace.useMemo(() => {
913
1086
  const valid = flattenChildren(children);
914
1087
  const itemCount = valid.length;
915
1088
  return valid.map((child, i) => {
@@ -917,7 +1090,7 @@ var MenuGroup = React37__namespace.forwardRef(
917
1090
  if (typeof child.type === "string") return child;
918
1091
  const defaultItemPosition = itemCount === 1 ? "standalone" : i === 0 ? "leading" : i === itemCount - 1 ? "trailing" : "middle";
919
1092
  const itemPosition2 = (_a2 = child.props.itemPosition) != null ? _a2 : defaultItemPosition;
920
- return React37__namespace.cloneElement(child, {
1093
+ return React38__namespace.cloneElement(child, {
921
1094
  itemPosition: itemPosition2,
922
1095
  colorVariant
923
1096
  });
@@ -980,7 +1153,7 @@ var VARIANT_FONT = {
980
1153
  rounded: "'Material Symbols Rounded'",
981
1154
  sharp: "'Material Symbols Sharp'"
982
1155
  };
983
- var IconComponent = React37__namespace.forwardRef(
1156
+ var IconComponent = React38__namespace.forwardRef(
984
1157
  (_a, ref) => {
985
1158
  var _b = _a, {
986
1159
  name,
@@ -1046,14 +1219,14 @@ var IconComponent = React37__namespace.forwardRef(
1046
1219
  }
1047
1220
  );
1048
1221
  IconComponent.displayName = "Icon";
1049
- var Icon = React37__namespace.memo(IconComponent);
1222
+ var Icon = React38__namespace.memo(IconComponent);
1050
1223
  function getItemShapeClass(position, selected, isStatic = false, menuVariant = "expressive") {
1051
1224
  if (menuVariant === "baseline") return BASELINE_ITEM_SHAPE;
1052
1225
  if (selected) return ITEM_SHAPE_CLASSES.selected;
1053
1226
  if (isStatic && position === "standalone") return "rounded-[12px]";
1054
1227
  return ITEM_SHAPE_CLASSES[position];
1055
1228
  }
1056
- var MenuItem = React37__namespace.forwardRef(
1229
+ var MenuItem = React38__namespace.forwardRef(
1057
1230
  (_a, ref) => {
1058
1231
  var _b = _a, {
1059
1232
  children,
@@ -1262,31 +1435,31 @@ function SubMenu({
1262
1435
  }) {
1263
1436
  const { colorVariant: contextColorVariant, menuPrimitive } = useMenuContext();
1264
1437
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
1265
- const [open, setOpen] = React37__namespace.useState(false);
1266
- const openTimerRef = React37__namespace.useRef(null);
1267
- const closeTimerRef = React37__namespace.useRef(
1438
+ const [open, setOpen] = React38__namespace.useState(false);
1439
+ const openTimerRef = React38__namespace.useRef(null);
1440
+ const closeTimerRef = React38__namespace.useRef(
1268
1441
  null
1269
1442
  );
1270
- const clearTimers = React37__namespace.useCallback(() => {
1443
+ const clearTimers = React38__namespace.useCallback(() => {
1271
1444
  if (openTimerRef.current) clearTimeout(openTimerRef.current);
1272
1445
  if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
1273
1446
  }, []);
1274
- const handleTriggerPointerEnter = React37__namespace.useCallback(() => {
1447
+ const handleTriggerPointerEnter = React38__namespace.useCallback(() => {
1275
1448
  clearTimers();
1276
1449
  openTimerRef.current = setTimeout(() => setOpen(true), hoverOpenDelay);
1277
1450
  }, [hoverOpenDelay, clearTimers]);
1278
- const handleTriggerPointerLeave = React37__namespace.useCallback(() => {
1451
+ const handleTriggerPointerLeave = React38__namespace.useCallback(() => {
1279
1452
  clearTimers();
1280
1453
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
1281
1454
  }, [hoverCloseDelay, clearTimers]);
1282
- const handleContentPointerEnter = React37__namespace.useCallback(() => {
1455
+ const handleContentPointerEnter = React38__namespace.useCallback(() => {
1283
1456
  clearTimers();
1284
1457
  }, [clearTimers]);
1285
- const handleContentPointerLeave = React37__namespace.useCallback(() => {
1458
+ const handleContentPointerLeave = React38__namespace.useCallback(() => {
1286
1459
  clearTimers();
1287
1460
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
1288
1461
  }, [hoverCloseDelay, clearTimers]);
1289
- React37__namespace.useEffect(() => () => clearTimers(), [clearTimers]);
1462
+ React38__namespace.useEffect(() => () => clearTimers(), [clearTimers]);
1290
1463
  const Sub3 = menuPrimitive === "context" ? RxContextMenu__namespace.Sub : DropdownMenu__namespace.Sub;
1291
1464
  const SubTrigger3 = menuPrimitive === "context" ? RxContextMenu__namespace.SubTrigger : DropdownMenu__namespace.SubTrigger;
1292
1465
  const SubContent3 = menuPrimitive === "context" ? RxContextMenu__namespace.SubContent : DropdownMenu__namespace.SubContent;
@@ -1298,7 +1471,7 @@ function SubMenu({
1298
1471
  className: "w-full outline-none",
1299
1472
  onPointerEnter: handleTriggerPointerEnter,
1300
1473
  onPointerLeave: handleTriggerPointerLeave,
1301
- children: React37__namespace.isValidElement(trigger) ? React37__namespace.cloneElement(trigger, {
1474
+ children: React38__namespace.isValidElement(trigger) ? React38__namespace.cloneElement(trigger, {
1302
1475
  isSubTrigger: true,
1303
1476
  // Auto-add chevron if missing
1304
1477
  trailingIcon: trigger.props.trailingIcon || /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron_right", size: 20 })
@@ -1375,7 +1548,7 @@ function SubMenuContent({
1375
1548
  );
1376
1549
  }
1377
1550
  SubMenuContent.displayName = "SubMenuContent";
1378
- var VerticalMenuDivider = React37__namespace.forwardRef((_a, ref) => {
1551
+ var VerticalMenuDivider = React38__namespace.forwardRef((_a, ref) => {
1379
1552
  var _b = _a, { className, index, count, isGapVariant } = _b, props = __objRest(_b, ["className", "index", "count", "isGapVariant"]);
1380
1553
  return /* @__PURE__ */ jsxRuntime.jsx(
1381
1554
  "hr",
@@ -1395,7 +1568,7 @@ var VerticalMenuDivider = React37__namespace.forwardRef((_a, ref) => {
1395
1568
  });
1396
1569
  VerticalMenuDivider.displayName = "VerticalMenuDivider";
1397
1570
  var VerticalMenuGroup = MenuGroup;
1398
- var VerticalMenuContent = React37__namespace.forwardRef(
1571
+ var VerticalMenuContent = React38__namespace.forwardRef(
1399
1572
  (_a, ref) => {
1400
1573
  var _b = _a, {
1401
1574
  children,
@@ -1411,7 +1584,7 @@ var VerticalMenuContent = React37__namespace.forwardRef(
1411
1584
  const { colorVariant: contextColorVariant } = useMenuContext();
1412
1585
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
1413
1586
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1414
- const renderedChildren = React37__namespace.useMemo(() => {
1587
+ const renderedChildren = React38__namespace.useMemo(() => {
1415
1588
  const valid = flattenChildren(children);
1416
1589
  const groupCount = valid.length;
1417
1590
  const enhanced = valid.map((child, i) => {
@@ -1419,7 +1592,7 @@ var VerticalMenuContent = React37__namespace.forwardRef(
1419
1592
  if (typeof child.type === "string") return child;
1420
1593
  const defaultItemPosition = groupCount === 1 ? "standalone" : i === 0 ? "leading" : i === groupCount - 1 ? "trailing" : "middle";
1421
1594
  const itemPosition = (_a2 = child.props.itemPosition) != null ? _a2 : defaultItemPosition;
1422
- return React37__namespace.cloneElement(
1595
+ return React38__namespace.cloneElement(
1423
1596
  child,
1424
1597
  {
1425
1598
  index: i,
@@ -1462,13 +1635,13 @@ var VerticalMenuContent = React37__namespace.forwardRef(
1462
1635
  }
1463
1636
  );
1464
1637
  VerticalMenuContent.displayName = "VerticalMenuContent";
1465
- var VerticalMenu = React37__namespace.forwardRef((_a, ref) => {
1638
+ var VerticalMenu = React38__namespace.forwardRef((_a, ref) => {
1466
1639
  var _b = _a, { children, colorVariant = "standard", className } = _b, props = __objRest(_b, ["children", "colorVariant", "className"]);
1467
- const noop = React37__namespace.useCallback(() => {
1640
+ const noop = React38__namespace.useCallback(() => {
1468
1641
  }, []);
1469
1642
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1470
- const containerRef = React37__namespace.useRef(null);
1471
- const mergedRef = React37__namespace.useCallback(
1643
+ const containerRef = React38__namespace.useRef(null);
1644
+ const mergedRef = React38__namespace.useCallback(
1472
1645
  (node) => {
1473
1646
  containerRef.current = node;
1474
1647
  if (typeof ref === "function") ref(node);
@@ -1477,7 +1650,7 @@ var VerticalMenu = React37__namespace.forwardRef((_a, ref) => {
1477
1650
  },
1478
1651
  [ref]
1479
1652
  );
1480
- const handleKeyDown = React37__namespace.useCallback(
1653
+ const handleKeyDown = React38__namespace.useCallback(
1481
1654
  (e) => {
1482
1655
  var _a2;
1483
1656
  if (!containerRef.current) return;
@@ -1560,7 +1733,7 @@ var VerticalMenu = React37__namespace.forwardRef((_a, ref) => {
1560
1733
  });
1561
1734
  VerticalMenu.displayName = "VerticalMenu";
1562
1735
  function detectSeparatorStyle(children) {
1563
- const child = React37__namespace.Children.toArray(children).find(React37__namespace.isValidElement);
1736
+ const child = React38__namespace.Children.toArray(children).find(React38__namespace.isValidElement);
1564
1737
  if (child) {
1565
1738
  const style = child.props.separatorStyle;
1566
1739
  if (style) return style;
@@ -1641,11 +1814,11 @@ function AppBarColumn({
1641
1814
  maxItemCount,
1642
1815
  className
1643
1816
  }) {
1644
- const containerRef = React37__namespace.useRef(null);
1645
- const [visibleCount, setVisibleCount] = React37__namespace.useState(
1817
+ const containerRef = React38__namespace.useRef(null);
1818
+ const [visibleCount, setVisibleCount] = React38__namespace.useState(
1646
1819
  maxItemCount != null ? maxItemCount : items.length
1647
1820
  );
1648
- React37__namespace.useEffect(() => {
1821
+ React38__namespace.useEffect(() => {
1649
1822
  if (maxItemCount !== void 0) {
1650
1823
  setVisibleCount(Math.min(maxItemCount, items.length));
1651
1824
  return;
@@ -1693,11 +1866,11 @@ function AppBarColumn({
1693
1866
  );
1694
1867
  }
1695
1868
  function AppBarRow({ items, maxItemCount, className }) {
1696
- const containerRef = React37__namespace.useRef(null);
1697
- const [visibleCount, setVisibleCount] = React37__namespace.useState(
1869
+ const containerRef = React38__namespace.useRef(null);
1870
+ const [visibleCount, setVisibleCount] = React38__namespace.useState(
1698
1871
  maxItemCount != null ? maxItemCount : items.length
1699
1872
  );
1700
- React37__namespace.useEffect(() => {
1873
+ React38__namespace.useEffect(() => {
1701
1874
  if (maxItemCount !== void 0) {
1702
1875
  setVisibleCount(Math.min(maxItemCount, items.length));
1703
1876
  return;
@@ -1751,12 +1924,12 @@ function useAppBarScroll({
1751
1924
  collapsedHeight = 64,
1752
1925
  expandedHeight = 112
1753
1926
  } = {}) {
1754
- const [isScrolled, setIsScrolled] = React37__namespace.useState(false);
1755
- const [collapsedFraction, setCollapsedFraction] = React37__namespace.useState(0);
1756
- const [isHidden, setIsHidden] = React37__namespace.useState(false);
1757
- const prevScrollYRef = React37__namespace.useRef(0);
1927
+ const [isScrolled, setIsScrolled] = React38__namespace.useState(false);
1928
+ const [collapsedFraction, setCollapsedFraction] = React38__namespace.useState(0);
1929
+ const [isHidden, setIsHidden] = React38__namespace.useState(false);
1930
+ const prevScrollYRef = React38__namespace.useRef(0);
1758
1931
  const hideThreshold = 64;
1759
- React37__namespace.useEffect(() => {
1932
+ React38__namespace.useEffect(() => {
1760
1933
  var _a;
1761
1934
  const scrollDistance = expandedHeight - collapsedHeight;
1762
1935
  const getScrollY = () => {
@@ -1891,7 +2064,7 @@ function useFlexibleAppBar({
1891
2064
  expandedHeight
1892
2065
  });
1893
2066
  const scrollProgress = react.useMotionValue(0);
1894
- React37__namespace.useEffect(() => {
2067
+ React38__namespace.useEffect(() => {
1895
2068
  scrollProgress.set(
1896
2069
  shouldReduceMotion ? collapsedFraction > 0.5 ? 1 : 0 : collapsedFraction
1897
2070
  );
@@ -2269,7 +2442,7 @@ function SearchAppBar({
2269
2442
  }) {
2270
2443
  var _a, _b;
2271
2444
  const shouldReduceMotion = react.useReducedMotion();
2272
- const [isSearchOpen, setIsSearchOpen] = React37__namespace.useState(false);
2445
+ const [isSearchOpen, setIsSearchOpen] = React38__namespace.useState(false);
2273
2446
  const { isScrolled } = useAppBarScroll({
2274
2447
  scrollElement,
2275
2448
  behavior: scrollBehavior === "exitUntilCollapsed" ? "pinned" : scrollBehavior
@@ -2410,8 +2583,8 @@ function SearchView({
2410
2583
  className
2411
2584
  }) {
2412
2585
  const shouldReduceMotion = react.useReducedMotion();
2413
- const inputRef = React37__namespace.useRef(null);
2414
- React37__namespace.useEffect(() => {
2586
+ const inputRef = React38__namespace.useRef(null);
2587
+ React38__namespace.useEffect(() => {
2415
2588
  const timer = window.setTimeout(() => {
2416
2589
  var _a;
2417
2590
  (_a = inputRef.current) == null ? void 0 : _a.focus();
@@ -2702,7 +2875,7 @@ function SmallAppBar({
2702
2875
  "small-app-bar"
2703
2876
  ) });
2704
2877
  }
2705
- var RippleItem = React37__namespace.memo(function RippleItem2({
2878
+ var RippleItem = React38__namespace.memo(function RippleItem2({
2706
2879
  ripple,
2707
2880
  onDone
2708
2881
  }) {
@@ -2746,8 +2919,8 @@ function Ripple({
2746
2919
  }
2747
2920
  function useRippleState(options = {}) {
2748
2921
  const { disabled = false } = options;
2749
- const [ripples, setRipples] = React37__namespace.useState([]);
2750
- const onPointerDown = React37__namespace.useCallback(
2922
+ const [ripples, setRipples] = React38__namespace.useState([]);
2923
+ const onPointerDown = React38__namespace.useCallback(
2751
2924
  (e) => {
2752
2925
  if (disabled) return;
2753
2926
  const rect = e.currentTarget.getBoundingClientRect();
@@ -2764,7 +2937,7 @@ function useRippleState(options = {}) {
2764
2937
  },
2765
2938
  [disabled]
2766
2939
  );
2767
- const removeRipple = React37__namespace.useCallback((id) => {
2940
+ const removeRipple = React38__namespace.useCallback((id) => {
2768
2941
  setRipples((prev) => prev.filter((r) => r.id !== id));
2769
2942
  }, []);
2770
2943
  return { ripples, onPointerDown, removeRipple };
@@ -4694,11 +4867,11 @@ function getNavigationShapeStyle(shape, width = 56, height = 56) {
4694
4867
  function isSquareShape(shape) {
4695
4868
  return Boolean(shape && shape !== "pill");
4696
4869
  }
4697
- var NavigationBarContext = React37__namespace.createContext({ variant: "flexible" });
4870
+ var NavigationBarContext = React38__namespace.createContext({ variant: "flexible" });
4698
4871
  function cloneIconWithFill(icon, selected) {
4699
- if (!React37__namespace.isValidElement(icon)) return icon;
4872
+ if (!React38__namespace.isValidElement(icon)) return icon;
4700
4873
  if (icon.type === Icon) {
4701
- return React37__namespace.cloneElement(
4874
+ return React38__namespace.cloneElement(
4702
4875
  icon,
4703
4876
  { fill: selected ? 1 : 0, animateFill: true }
4704
4877
  );
@@ -4710,7 +4883,7 @@ function ActivePill({
4710
4883
  width = 56,
4711
4884
  height = 32
4712
4885
  }) {
4713
- const { activeIndicatorTransition } = React37__namespace.useContext(NavigationBarContext);
4886
+ const { activeIndicatorTransition } = React38__namespace.useContext(NavigationBarContext);
4714
4887
  const shapeStyle = getNavigationShapeStyle(shape, width, height);
4715
4888
  return /* @__PURE__ */ jsxRuntime.jsx(
4716
4889
  react.m.div,
@@ -4782,7 +4955,7 @@ function IconContainer({ selected, badge, children }) {
4782
4955
  }
4783
4956
  );
4784
4957
  }
4785
- var NavigationBarItemComponent = React37__namespace.forwardRef(
4958
+ var NavigationBarItemComponent = React38__namespace.forwardRef(
4786
4959
  ({
4787
4960
  selected,
4788
4961
  icon,
@@ -4806,7 +4979,7 @@ var NavigationBarItemComponent = React37__namespace.forwardRef(
4806
4979
  labelVisibility: contextLabelVisibility,
4807
4980
  shapeSize: contextShapeSize,
4808
4981
  itemClassName: contextItemClassName
4809
- } = React37__namespace.useContext(NavigationBarContext);
4982
+ } = React38__namespace.useContext(NavigationBarContext);
4810
4983
  const activeShape = (_a = shapeProp != null ? shapeProp : contextShape) != null ? _a : "pill";
4811
4984
  const isSquare = isSquareShape(activeShape);
4812
4985
  const resolvedShapeSize = (_b = shapeSizeProp != null ? shapeSizeProp : contextShapeSize) != null ? _b : 56;
@@ -4820,7 +4993,7 @@ var NavigationBarItemComponent = React37__namespace.forwardRef(
4820
4993
  const { ripples, onPointerDown, removeRipple } = useRippleState({
4821
4994
  disabled
4822
4995
  });
4823
- const handleClick = React37__namespace.useCallback(
4996
+ const handleClick = React38__namespace.useCallback(
4824
4997
  (e) => {
4825
4998
  if (disabled) {
4826
4999
  e.preventDefault();
@@ -4847,7 +5020,7 @@ var NavigationBarItemComponent = React37__namespace.forwardRef(
4847
5020
  const iconPillWidth = isSquare ? resolvedShapeSize : 56;
4848
5021
  const iconPillHeight = isSquare ? resolvedShapeSize : 32;
4849
5022
  if (asChild && children) {
4850
- const child = React37__namespace.Children.only(children);
5023
+ const child = React38__namespace.Children.only(children);
4851
5024
  const innerContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4852
5025
  /* @__PURE__ */ jsxRuntime.jsxs(
4853
5026
  "div",
@@ -4972,7 +5145,7 @@ var NavigationBarItemComponent = React37__namespace.forwardRef(
4972
5145
  onClick: handleClick,
4973
5146
  onPointerDown,
4974
5147
  className: itemClassName,
4975
- children: React37__namespace.cloneElement(child, { children: innerContent })
5148
+ children: React38__namespace.cloneElement(child, { children: innerContent })
4976
5149
  }
4977
5150
  );
4978
5151
  }
@@ -5106,7 +5279,7 @@ var NavigationBarItemComponent = React37__namespace.forwardRef(
5106
5279
  }
5107
5280
  );
5108
5281
  NavigationBarItemComponent.displayName = "NavigationBarItem";
5109
- var NavigationBarItem = React37__namespace.memo(NavigationBarItemComponent);
5282
+ var NavigationBarItem = React38__namespace.memo(NavigationBarItemComponent);
5110
5283
  var navContainerVariants = classVarianceAuthority.cva(
5111
5284
  "flex items-center justify-center select-none transition-transform duration-300 z-50",
5112
5285
  {
@@ -5132,7 +5305,7 @@ var navContainerVariants = classVarianceAuthority.cva(
5132
5305
  }
5133
5306
  }
5134
5307
  );
5135
- var NavigationBarComponent = React37__namespace.forwardRef(
5308
+ var NavigationBarComponent = React38__namespace.forwardRef(
5136
5309
  ({
5137
5310
  variant = "flexible",
5138
5311
  itemLayout,
@@ -5149,18 +5322,18 @@ var NavigationBarComponent = React37__namespace.forwardRef(
5149
5322
  className,
5150
5323
  style
5151
5324
  }, ref) => {
5152
- const [isVisible, setIsVisible] = React37__namespace.useState(true);
5153
- const lastScrollY = React37__namespace.useRef(
5325
+ const [isVisible, setIsVisible] = React38__namespace.useState(true);
5326
+ const lastScrollY = React38__namespace.useRef(
5154
5327
  typeof window !== "undefined" ? window.scrollY : 0
5155
5328
  );
5156
5329
  const isSquare = isSquareShape(shape);
5157
5330
  const effectiveShapeSize = shapeSize != null ? shapeSize : isSquare ? 56 : 32;
5158
- const computedMinHeight = React37__namespace.useMemo(() => {
5331
+ const computedMinHeight = React38__namespace.useMemo(() => {
5159
5332
  const baseHeight = variant === "baseline" ? 80 : 64;
5160
5333
  const requiredHeight = itemLayout === "horizontal" || labelVisibility === "unlabeled" ? effectiveShapeSize + 16 : effectiveShapeSize + 32;
5161
5334
  return Math.max(baseHeight, requiredHeight);
5162
5335
  }, [variant, itemLayout, labelVisibility, effectiveShapeSize]);
5163
- React37__namespace.useEffect(() => {
5336
+ React38__namespace.useEffect(() => {
5164
5337
  if (typeof window === "undefined" || !hideOnScroll) {
5165
5338
  setIsVisible(true);
5166
5339
  return;
@@ -5244,8 +5417,8 @@ var NavigationBarComponent = React37__namespace.forwardRef(
5244
5417
  }
5245
5418
  );
5246
5419
  NavigationBarComponent.displayName = "NavigationBar";
5247
- var NavigationBar = React37__namespace.memo(NavigationBarComponent);
5248
- var NavigationRailContext = React37__namespace.createContext({
5420
+ var NavigationBar = React38__namespace.memo(NavigationBarComponent);
5421
+ var NavigationRailContext = React38__namespace.createContext({
5249
5422
  variant: "collapsed",
5250
5423
  labelVisibility: "labeled",
5251
5424
  activeIndicatorWidth: "hug"
@@ -5281,9 +5454,9 @@ var railContainerVariants = classVarianceAuthority.cva(
5281
5454
  }
5282
5455
  );
5283
5456
  function cloneIconWithFill2(icon, selected) {
5284
- if (!React37__namespace.isValidElement(icon)) return icon;
5457
+ if (!React38__namespace.isValidElement(icon)) return icon;
5285
5458
  if (icon.type === Icon) {
5286
- return React37__namespace.cloneElement(
5459
+ return React38__namespace.cloneElement(
5287
5460
  icon,
5288
5461
  { fill: selected ? 1 : 0, animateFill: true }
5289
5462
  );
@@ -5312,7 +5485,7 @@ function ActivePill2({
5312
5485
  width = 56,
5313
5486
  height = 32
5314
5487
  }) {
5315
- const { activeIndicatorTransition } = React37__namespace.useContext(NavigationRailContext);
5488
+ const { activeIndicatorTransition } = React38__namespace.useContext(NavigationRailContext);
5316
5489
  const shapeStyle = getNavigationShapeStyle(shape, width, height);
5317
5490
  return /* @__PURE__ */ jsxRuntime.jsx(
5318
5491
  react.m.div,
@@ -5387,7 +5560,7 @@ function IconContainer2({ selected, badge, children }) {
5387
5560
  }
5388
5561
  );
5389
5562
  }
5390
- var NavigationRailItemComponent = React37__namespace.forwardRef(
5563
+ var NavigationRailItemComponent = React38__namespace.forwardRef(
5391
5564
  ({
5392
5565
  selected,
5393
5566
  icon,
@@ -5410,7 +5583,7 @@ var NavigationRailItemComponent = React37__namespace.forwardRef(
5410
5583
  shape: contextShape,
5411
5584
  shapeSize: contextShapeSize,
5412
5585
  activeIndicatorWidth: contextActiveIndicatorWidth
5413
- } = React37__namespace.useContext(NavigationRailContext);
5586
+ } = React38__namespace.useContext(NavigationRailContext);
5414
5587
  const activeShape = (_a = shapeProp != null ? shapeProp : contextShape) != null ? _a : "pill";
5415
5588
  const isSquare = isSquareShape(activeShape);
5416
5589
  const resolvedShapeSize = (_b = shapeSizeProp != null ? shapeSizeProp : contextShapeSize) != null ? _b : 56;
@@ -5420,12 +5593,12 @@ var NavigationRailItemComponent = React37__namespace.forwardRef(
5420
5593
  const enableLayout = !isModal;
5421
5594
  const isExpandedPill = isExpanded && !isSquare;
5422
5595
  const expandedPillWidthClass = activeIndicatorWidth === "fill" ? "w-full" : "w-fit";
5423
- const activePillId = `rail-pill-${React37__namespace.useId()}`;
5596
+ const activePillId = `rail-pill-${React38__namespace.useId()}`;
5424
5597
  const { ripples, onPointerDown, removeRipple } = useRippleState({
5425
5598
  disabled
5426
5599
  });
5427
5600
  const showLabel = isExpanded || labelVisibility === "labeled" || labelVisibility === "auto" && selected;
5428
- const handleClick = React37__namespace.useCallback(
5601
+ const handleClick = React38__namespace.useCallback(
5429
5602
  (e) => {
5430
5603
  if (disabled) {
5431
5604
  e.preventDefault();
@@ -5447,7 +5620,7 @@ var NavigationRailItemComponent = React37__namespace.forwardRef(
5447
5620
  const iconPillWidth = isSquare ? resolvedShapeSize : 56;
5448
5621
  const iconPillHeight = isSquare ? resolvedShapeSize : 32;
5449
5622
  if (asChild && children) {
5450
- const child = React37__namespace.Children.only(children);
5623
+ const child = React38__namespace.Children.only(children);
5451
5624
  const innerContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5452
5625
  /* @__PURE__ */ jsxRuntime.jsxs(
5453
5626
  react.m.div,
@@ -5565,7 +5738,7 @@ var NavigationRailItemComponent = React37__namespace.forwardRef(
5565
5738
  onPointerDown,
5566
5739
  className: itemClassName,
5567
5740
  tabIndex: -1,
5568
- children: React37__namespace.cloneElement(child, { children: innerContent })
5741
+ children: React38__namespace.cloneElement(child, { children: innerContent })
5569
5742
  }
5570
5743
  ) });
5571
5744
  }
@@ -5693,9 +5866,9 @@ var NavigationRailItemComponent = React37__namespace.forwardRef(
5693
5866
  }
5694
5867
  );
5695
5868
  NavigationRailItemComponent.displayName = "NavigationRailItem";
5696
- var NavigationRailItem = React37__namespace.memo(NavigationRailItemComponent);
5869
+ var NavigationRailItem = React38__namespace.memo(NavigationRailItemComponent);
5697
5870
  function useRoving(navRef) {
5698
- React37__namespace.useEffect(() => {
5871
+ React38__namespace.useEffect(() => {
5699
5872
  if (!navRef.current) return;
5700
5873
  const items = getMenuItems(navRef.current);
5701
5874
  const selected = items.find(
@@ -5705,7 +5878,7 @@ function useRoving(navRef) {
5705
5878
  const firstFocusable = selected != null ? selected : items[0];
5706
5879
  if (firstFocusable) firstFocusable.tabIndex = 0;
5707
5880
  }, [navRef]);
5708
- return React37__namespace.useCallback(
5881
+ return React38__namespace.useCallback(
5709
5882
  (e) => {
5710
5883
  if (!navRef.current) return;
5711
5884
  const items = getMenuItems(navRef.current);
@@ -5733,7 +5906,7 @@ function useRoving(navRef) {
5733
5906
  [navRef]
5734
5907
  );
5735
5908
  }
5736
- var NavigationRailComponent = React37__namespace.forwardRef(
5909
+ var NavigationRailComponent = React38__namespace.forwardRef(
5737
5910
  ({
5738
5911
  variant = "collapsed",
5739
5912
  labelVisibility = "labeled",
@@ -5757,9 +5930,9 @@ var NavigationRailComponent = React37__namespace.forwardRef(
5757
5930
  const isXr = variant === "xr";
5758
5931
  const isSpatial = isXr && fabPlacement === "spatialized";
5759
5932
  const applyAnimation = !isXr || !isSpatial;
5760
- const navRef = React37__namespace.useRef(null);
5933
+ const navRef = React38__namespace.useRef(null);
5761
5934
  const handleKeyDown = useRoving(navRef);
5762
- const setRefs = React37__namespace.useCallback(
5935
+ const setRefs = React38__namespace.useCallback(
5763
5936
  (node) => {
5764
5937
  navRef.current = node;
5765
5938
  if (typeof ref === "function") ref(node);
@@ -5852,7 +6025,7 @@ var NavigationRailComponent = React37__namespace.forwardRef(
5852
6025
  children: fab
5853
6026
  }
5854
6027
  ),
5855
- React37__namespace.cloneElement(
6028
+ React38__namespace.cloneElement(
5856
6029
  navElement,
5857
6030
  {
5858
6031
  className: cn(navBaseClasses, "pointer-events-auto")
@@ -5897,7 +6070,7 @@ var NavigationRailComponent = React37__namespace.forwardRef(
5897
6070
  }
5898
6071
  );
5899
6072
  NavigationRailComponent.displayName = "NavigationRail";
5900
- var NavigationRail = React37__namespace.memo(NavigationRailComponent);
6073
+ var NavigationRail = React38__namespace.memo(NavigationRailComponent);
5901
6074
  function useSearchKeyboard({
5902
6075
  active,
5903
6076
  onActiveChange,
@@ -5906,14 +6079,14 @@ function useSearchKeyboard({
5906
6079
  itemCount,
5907
6080
  onSelectSuggestion
5908
6081
  }) {
5909
- const [activeIndex, setActiveIndex] = React37__namespace.useState(-1);
5910
- const resetKeyRef = React37__namespace.useRef(`${active}:${query}`);
6082
+ const [activeIndex, setActiveIndex] = React38__namespace.useState(-1);
6083
+ const resetKeyRef = React38__namespace.useRef(`${active}:${query}`);
5911
6084
  const currentKey = `${active}:${query}`;
5912
6085
  if (resetKeyRef.current !== currentKey) {
5913
6086
  resetKeyRef.current = currentKey;
5914
6087
  setActiveIndex(-1);
5915
6088
  }
5916
- const handleKeyDown = React37__namespace.useCallback(
6089
+ const handleKeyDown = React38__namespace.useCallback(
5917
6090
  (e) => {
5918
6091
  if (!active) return;
5919
6092
  switch (e.key) {
@@ -5953,7 +6126,7 @@ function useSearchKeyboard({
5953
6126
  query
5954
6127
  ]
5955
6128
  );
5956
- const resetActiveIndex = React37__namespace.useCallback(() => {
6129
+ const resetActiveIndex = React38__namespace.useCallback(() => {
5957
6130
  setActiveIndex(-1);
5958
6131
  }, []);
5959
6132
  return { activeIndex, handleKeyDown, resetActiveIndex };
@@ -6021,10 +6194,10 @@ function AnimatedPlaceholder({
6021
6194
  className
6022
6195
  }) {
6023
6196
  const shouldReduceMotion = react.useReducedMotion();
6024
- const containerRef = React37__namespace.useRef(null);
6025
- const spanRef = React37__namespace.useRef(null);
6026
- const [xOffset, setXOffset] = React37__namespace.useState(0);
6027
- const recalculate = React37__namespace.useCallback(() => {
6197
+ const containerRef = React38__namespace.useRef(null);
6198
+ const spanRef = React38__namespace.useRef(null);
6199
+ const [xOffset, setXOffset] = React38__namespace.useState(0);
6200
+ const recalculate = React38__namespace.useCallback(() => {
6028
6201
  const container = containerRef.current;
6029
6202
  const span = spanRef.current;
6030
6203
  if (!container || !span || textAlign === "left") {
@@ -6039,10 +6212,10 @@ function AnimatedPlaceholder({
6039
6212
  setXOffset(Math.max(0, containerWidth - textWidth));
6040
6213
  }
6041
6214
  }, [textAlign]);
6042
- React37__namespace.useLayoutEffect(() => {
6215
+ React38__namespace.useLayoutEffect(() => {
6043
6216
  recalculate();
6044
6217
  }, [recalculate]);
6045
- React37__namespace.useEffect(() => {
6218
+ React38__namespace.useEffect(() => {
6046
6219
  const container = containerRef.current;
6047
6220
  if (!container) return;
6048
6221
  const observer = new ResizeObserver(recalculate);
@@ -6111,10 +6284,10 @@ function SearchBar({
6111
6284
  activeIndex
6112
6285
  }) {
6113
6286
  const shouldReduceMotion = react.useReducedMotion();
6114
- const inputRef = React37__namespace.useRef(null);
6115
- const prevActiveRef = React37__namespace.useRef(active);
6116
- const isRestoringFocusRef = React37__namespace.useRef(false);
6117
- React37__namespace.useEffect(() => {
6287
+ const inputRef = React38__namespace.useRef(null);
6288
+ const prevActiveRef = React38__namespace.useRef(active);
6289
+ const isRestoringFocusRef = React38__namespace.useRef(false);
6290
+ React38__namespace.useEffect(() => {
6118
6291
  var _a;
6119
6292
  let rafId;
6120
6293
  if (prevActiveRef.current === true && active === false) {
@@ -6233,7 +6406,7 @@ function SearchBar({
6233
6406
  ) })
6234
6407
  );
6235
6408
  }
6236
- var SearchContext = React37__namespace.createContext(null);
6409
+ var SearchContext = React38__namespace.createContext(null);
6237
6410
  function SearchProvider({
6238
6411
  children,
6239
6412
  value
@@ -6241,15 +6414,15 @@ function SearchProvider({
6241
6414
  return /* @__PURE__ */ jsxRuntime.jsx(SearchContext.Provider, { value, children });
6242
6415
  }
6243
6416
  function useSearch() {
6244
- const context = React37__namespace.useContext(SearchContext);
6417
+ const context = React38__namespace.useContext(SearchContext);
6245
6418
  if (!context) {
6246
6419
  return { listboxId: "", activeIndex: -1 };
6247
6420
  }
6248
6421
  return context;
6249
6422
  }
6250
6423
  function useClickOutside(handler, enabled = true) {
6251
- const ref = React37.useRef(null);
6252
- React37.useEffect(() => {
6424
+ const ref = React38.useRef(null);
6425
+ React38.useEffect(() => {
6253
6426
  if (!enabled) return;
6254
6427
  const listener = (event) => {
6255
6428
  const el = ref.current;
@@ -6268,7 +6441,7 @@ function useClickOutside(handler, enabled = true) {
6268
6441
  return ref;
6269
6442
  }
6270
6443
  function useSearchViewFocus(inputRef, active) {
6271
- React37__namespace.useEffect(() => {
6444
+ React38__namespace.useEffect(() => {
6272
6445
  if (!active) return;
6273
6446
  let raf2;
6274
6447
  const raf1 = requestAnimationFrame(() => {
@@ -6328,11 +6501,11 @@ var ROTATE_KEY_SPLINES = [
6328
6501
  var ROTATE_VALUES = "0 24 24; 154 24 24; 309 24 24; 463 24 24; 617 24 24; 771 24 24; 926 24 24; 1080 24 24";
6329
6502
  var DETERMINATE_CIRCLE = "M24 7 C34.49 7 41 13.51 41 24 C41 34.49 34.49 41 24 41 C13.51 41 7 34.49 7 24 C7 13.51 13.51 7 24 7 Z";
6330
6503
  var DETERMINATE_SOFT_BURST = "M20.9 10.4 21.4 9.5 21.9 8.7 22.5 7.8 23.2 7.2 24.2 7 25.1 7.4 25.7 8.1 26.2 9 26.8 9.8 27.3 10.6 28.1 11.2 29 11.3 30 11 30.9 10.6 31.8 10.3 32.8 9.9 33.7 10 34.5 10.6 34.9 11.5 34.8 12.5 34.8 13.5 34.7 14.5 34.7 15.5 35.2 16.3 36 16.8 37 17.1 37.9 17.3 38.9 17.5 39.8 17.9 40.4 18.7 40.5 19.7 40 20.5 39.4 21.3 38.7 22 38.1 22.8 37.6 23.7 37.7 24.6 38.3 25.5 38.9 26.2 39.6 27 40.2 27.7 40.5 28.7 40.3 29.6 39.5 30.3 38.6 30.6 37.6 30.8 36.7 31 35.7 31.3 35 31.9 34.6 32.8 34.7 33.8 34.8 34.8 34.9 35.8 34.8 36.8 34.3 37.6 33.4 38.1 32.4 38 31.5 37.6 30.6 37.2 29.7 36.9 28.7 36.6 27.8 36.9 27.1 37.6 26.6 38.5 26.1 39.3 25.5 40.2 24.8 40.8 23.8 41 22.9 40.6 22.3 39.9 21.8 39 21.2 38.2 20.7 37.4 19.9 36.8 19 36.7 18 37 17.1 37.4 16.2 37.7 15.2 38.1 14.3 38 13.5 37.4 13.1 36.5 13.2 35.5 13.2 34.5 13.3 33.5 13.3 32.5 12.8 31.7 12 31.2 11 31 10.1 30.7 9.1 30.5 8.2 30.1 7.6 29.3 7.5 28.3 8 27.5 8.7 26.7 9.3 26 9.9 25.2 10.4 24.3 10.3 23.4 9.7 22.5 9.1 21.8 8.4 21 7.8 20.3 7.5 19.3 7.7 18.4 8.5 17.7 9.4 17.4 10.4 17.2 11.3 17 12.3 16.7 13 16.1 13.4 15.2 13.3 14.2 13.2 13.2 13.1 12.2 13.2 11.2 13.7 10.4 14.6 9.9 15.6 10 16.5 10.4 17.4 10.8 18.3 11.1 19.3 11.4 20.2 11.1Z";
6331
- var IndeterminateSvg = React37__namespace.memo(function IndeterminateSvg2({
6504
+ var IndeterminateSvg = React38__namespace.memo(function IndeterminateSvg2({
6332
6505
  size
6333
6506
  }) {
6334
- const [ready, setReady] = React37__namespace.useState(false);
6335
- React37__namespace.useEffect(() => {
6507
+ const [ready, setReady] = React38__namespace.useState(false);
6508
+ React38__namespace.useEffect(() => {
6336
6509
  const raf = requestAnimationFrame(() => setReady(true));
6337
6510
  return () => cancelAnimationFrame(raf);
6338
6511
  }, []);
@@ -6377,7 +6550,7 @@ var IndeterminateSvg = React37__namespace.memo(function IndeterminateSvg2({
6377
6550
  }
6378
6551
  );
6379
6552
  });
6380
- var DeterminateSvg = React37__namespace.memo(function DeterminateSvg2({
6553
+ var DeterminateSvg = React38__namespace.memo(function DeterminateSvg2({
6381
6554
  size,
6382
6555
  progress
6383
6556
  }) {
@@ -6402,7 +6575,7 @@ var DeterminateSvg = React37__namespace.memo(function DeterminateSvg2({
6402
6575
  }
6403
6576
  );
6404
6577
  });
6405
- var LoadingIndicator = React37__namespace.forwardRef(
6578
+ var LoadingIndicator = React38__namespace.forwardRef(
6406
6579
  (_a, ref) => {
6407
6580
  var _b = _a, {
6408
6581
  variant = "uncontained",
@@ -6470,7 +6643,7 @@ LoadingIndicator.displayName = "LoadingIndicator";
6470
6643
  function easeInOutCubic(x) {
6471
6644
  return x < 0.5 ? 4 * x * x * x : 1 - (-2 * x + 2) ** 3 / 2;
6472
6645
  }
6473
- function generateWavyCircularPath(center, radius, amplitude, wavelength) {
6646
+ function generateWavyCircularPath(center, radius, amplitude, wavelength, phase = 0) {
6474
6647
  const circumference = 2 * Math.PI * radius;
6475
6648
  const numWaves = Math.max(
6476
6649
  3,
@@ -6478,8 +6651,8 @@ function generateWavyCircularPath(center, radius, amplitude, wavelength) {
6478
6651
  );
6479
6652
  const steps = numWaves * 4;
6480
6653
  const dt = 2 * Math.PI / steps;
6481
- const rAt = (t) => radius + amplitude * Math.sin(numWaves * t);
6482
- const drAt = (t) => amplitude * numWaves * Math.cos(numWaves * t);
6654
+ const rAt = (t) => radius + amplitude * Math.sin(numWaves * t + phase);
6655
+ const drAt = (t) => amplitude * numWaves * Math.cos(numWaves * t + phase);
6483
6656
  const xAt = (t) => center + rAt(t) * Math.cos(t);
6484
6657
  const yAt = (t) => center + rAt(t) * Math.sin(t);
6485
6658
  const dxAt = (t) => drAt(t) * Math.cos(t) - rAt(t) * Math.sin(t);
@@ -6537,22 +6710,25 @@ var ADDITIONAL_ROTATION_EASE_DURATION = 500;
6537
6710
  var DEFAULT_MIN_PROGRESS = 0.1;
6538
6711
  var DEFAULT_MAX_PROGRESS = 0.8;
6539
6712
  var PROGRESS_CYCLE_DURATION = 1500;
6540
- var CircularProgress = React37__namespace.forwardRef(
6713
+ var CircularProgress = React38__namespace.forwardRef(
6541
6714
  (_a, ref) => {
6542
6715
  var _b = _a, {
6543
6716
  value,
6544
6717
  size = 48,
6545
6718
  trackHeight = 4,
6546
6719
  shape = "flat",
6720
+ trackShape = "flat",
6547
6721
  amplitude,
6548
6722
  wavelength,
6549
6723
  gapSize = 4,
6724
+ waveSpeed = 1,
6550
6725
  crawlerSpeed = 1,
6551
6726
  color,
6552
6727
  trackColor,
6553
6728
  showTrack = "auto",
6554
6729
  minProgress = DEFAULT_MIN_PROGRESS,
6555
6730
  maxProgress = DEFAULT_MAX_PROGRESS,
6731
+ determinateAnimation = "md3",
6556
6732
  amplitudeRange,
6557
6733
  className,
6558
6734
  "aria-label": ariaLabel
@@ -6561,15 +6737,18 @@ var CircularProgress = React37__namespace.forwardRef(
6561
6737
  "size",
6562
6738
  "trackHeight",
6563
6739
  "shape",
6740
+ "trackShape",
6564
6741
  "amplitude",
6565
6742
  "wavelength",
6566
6743
  "gapSize",
6744
+ "waveSpeed",
6567
6745
  "crawlerSpeed",
6568
6746
  "color",
6569
6747
  "trackColor",
6570
6748
  "showTrack",
6571
6749
  "minProgress",
6572
6750
  "maxProgress",
6751
+ "determinateAnimation",
6573
6752
  "amplitudeRange",
6574
6753
  "className",
6575
6754
  "aria-label"
@@ -6582,21 +6761,22 @@ var CircularProgress = React37__namespace.forwardRef(
6582
6761
  const bgTrackColor = trackColor || "var(--md-sys-color-indicator-track)";
6583
6762
  const isWavy = shape === "wavy";
6584
6763
  const shouldShowIndeterminateTrack = showTrack === "auto" ? isWavy : showTrack;
6764
+ const shouldShowDeterminateTrack = showTrack === "auto" ? true : showTrack;
6585
6765
  const BASELINE_SIZE = 48;
6586
6766
  const scaleFactor = size / BASELINE_SIZE;
6587
- const effectiveAmplitude = React37__namespace.useMemo(
6767
+ const effectiveAmplitude = React38__namespace.useMemo(
6588
6768
  () => amplitude != null ? amplitude : 1.6 * scaleFactor,
6589
6769
  [amplitude, scaleFactor]
6590
6770
  );
6591
- const effectiveWavelength = React37__namespace.useMemo(
6771
+ const effectiveWavelength = React38__namespace.useMemo(
6592
6772
  () => wavelength != null ? wavelength : 15 * scaleFactor,
6593
6773
  [wavelength, scaleFactor]
6594
6774
  );
6595
- const resolvedAmplitudeRange = React37__namespace.useMemo(
6775
+ const resolvedAmplitudeRange = React38__namespace.useMemo(
6596
6776
  () => amplitudeRange != null ? amplitudeRange : [0, effectiveAmplitude],
6597
6777
  [amplitudeRange, effectiveAmplitude]
6598
6778
  );
6599
- const wavyActivePath = React37__namespace.useMemo(
6779
+ const wavyActivePath = React38__namespace.useMemo(
6600
6780
  () => isWavy ? generateWavyCircularPath(
6601
6781
  center,
6602
6782
  radius,
@@ -6605,8 +6785,8 @@ var CircularProgress = React37__namespace.forwardRef(
6605
6785
  ) : null,
6606
6786
  [isWavy, center, radius, effectiveAmplitude, effectiveWavelength]
6607
6787
  );
6608
- const circumference = React37__namespace.useMemo(() => 2 * Math.PI * radius, [radius]);
6609
- const gapForTrack = React37__namespace.useMemo(
6788
+ const circumference = React38__namespace.useMemo(() => 2 * Math.PI * radius, [radius]);
6789
+ const gapForTrack = React38__namespace.useMemo(
6610
6790
  () => (gapSize + trackHeight) / circumference,
6611
6791
  [gapSize, trackHeight, circumference]
6612
6792
  );
@@ -6614,19 +6794,50 @@ var CircularProgress = React37__namespace.forwardRef(
6614
6794
  const trackOffset = isDeterminate ? activeAngularFraction + gapForTrack : 0;
6615
6795
  const trackLength = isDeterminate ? Math.max(1e-3, 1 - activeAngularFraction - 2 * gapForTrack) : 1;
6616
6796
  const ActiveCircleElem = react.m.circle;
6617
- const ActivePathElem = react.m.path;
6618
- const indeterminateSvgRef = React37__namespace.useRef(null);
6619
- const indeterminateTrackRef = React37__namespace.useRef(null);
6620
- const indeterminateActiveRef = React37__namespace.useRef(null);
6621
- const indeterminateWavyTrackPathRef = React37__namespace.useRef(null);
6622
- const indeterminateWavyActivePathRef = React37__namespace.useRef(null);
6623
- const cachedPathLengthRef = React37__namespace.useRef(0);
6624
- React37__namespace.useLayoutEffect(() => {
6797
+ const indeterminateSvgRef = React38__namespace.useRef(null);
6798
+ const indeterminateTrackRef = React38__namespace.useRef(null);
6799
+ const indeterminateActiveRef = React38__namespace.useRef(null);
6800
+ const indeterminateWavyTrackPathRef = React38__namespace.useRef(null);
6801
+ const indeterminateWavyActivePathRef = React38__namespace.useRef(null);
6802
+ const determinateWavyActivePathRef = React38__namespace.useRef(null);
6803
+ const determinateWavyTrackPathRef = React38__namespace.useRef(null);
6804
+ const cachedPathLengthRef = React38__namespace.useRef(0);
6805
+ const fractionMV = react.useMotionValue(isDeterminate ? clampedValue / 100 : 0);
6806
+ const amplitudeMV = react.useMotionValue(isWavy ? effectiveAmplitude : 0);
6807
+ React38__namespace.useEffect(() => {
6808
+ if (isDeterminate) {
6809
+ react.animate(fractionMV, clampedValue / 100, {
6810
+ duration: 0.4,
6811
+ ease: [0.2, 0, 0, 1]
6812
+ });
6813
+ }
6814
+ }, [clampedValue, isDeterminate, fractionMV]);
6815
+ React38__namespace.useEffect(() => {
6816
+ if (!isDeterminate || !isWavy) return;
6817
+ const fraction = clampedValue / 100;
6818
+ let targetAmp = effectiveAmplitude;
6819
+ if (determinateAnimation === "md3") {
6820
+ targetAmp = fraction <= 0.1 || fraction >= 0.95 ? 0 : effectiveAmplitude;
6821
+ }
6822
+ react.animate(amplitudeMV, targetAmp, {
6823
+ type: "spring",
6824
+ bounce: 0,
6825
+ duration: 0.5
6826
+ });
6827
+ }, [
6828
+ clampedValue,
6829
+ isDeterminate,
6830
+ isWavy,
6831
+ effectiveAmplitude,
6832
+ amplitudeMV,
6833
+ determinateAnimation
6834
+ ]);
6835
+ React38__namespace.useLayoutEffect(() => {
6625
6836
  if (!isWavy || !wavyActivePath) {
6626
6837
  cachedPathLengthRef.current = circumference;
6627
6838
  return;
6628
6839
  }
6629
- const el = indeterminateActiveRef.current;
6840
+ const el = indeterminateActiveRef.current || determinateWavyActivePathRef.current;
6630
6841
  if (el && "getTotalLength" in el) {
6631
6842
  try {
6632
6843
  const len = el.getTotalLength();
@@ -6640,7 +6851,65 @@ var CircularProgress = React37__namespace.forwardRef(
6640
6851
  cachedPathLengthRef.current = circumference;
6641
6852
  }, [isWavy, circumference, wavyActivePath]);
6642
6853
  react.useAnimationFrame((time) => {
6643
- if (isDeterminate) return;
6854
+ const safeWaveSpeed = Math.max(0.1, waveSpeed);
6855
+ const wavePhase = time / 1e3 * safeWaveSpeed * 2 * Math.PI;
6856
+ if (isDeterminate) {
6857
+ if (isWavy) {
6858
+ const currentAmp = amplitudeMV.get();
6859
+ const dynamicPath = generateWavyCircularPath(
6860
+ center,
6861
+ radius,
6862
+ currentAmp,
6863
+ effectiveWavelength,
6864
+ wavePhase
6865
+ );
6866
+ if (determinateWavyActivePathRef.current) {
6867
+ determinateWavyActivePathRef.current.setAttribute("d", dynamicPath);
6868
+ }
6869
+ if (trackShape === "wavy" && determinateWavyTrackPathRef.current) {
6870
+ determinateWavyTrackPathRef.current.setAttribute("d", dynamicPath);
6871
+ }
6872
+ const pathEl = determinateWavyActivePathRef.current;
6873
+ let totalLen = cachedPathLengthRef.current || circumference;
6874
+ if (pathEl) {
6875
+ try {
6876
+ const len = pathEl.getTotalLength();
6877
+ if (len > 0) totalLen = len;
6878
+ } catch (e) {
6879
+ }
6880
+ }
6881
+ const activeFrac = Math.max(0, Math.min(1, fractionMV.get()));
6882
+ const activeLen = totalLen * activeFrac;
6883
+ if (determinateWavyActivePathRef.current) {
6884
+ determinateWavyActivePathRef.current.setAttribute(
6885
+ "stroke-dasharray",
6886
+ `${activeLen} ${totalLen}`
6887
+ );
6888
+ determinateWavyActivePathRef.current.setAttribute(
6889
+ "stroke-dashoffset",
6890
+ "0"
6891
+ );
6892
+ }
6893
+ if (shouldShowDeterminateTrack && trackShape === "wavy" && determinateWavyTrackPathRef.current) {
6894
+ const gapFrac = (gapSize + trackHeight) / totalLen;
6895
+ const trackStartFrac = activeFrac + gapFrac;
6896
+ const trackLen = Math.max(
6897
+ 1e-3,
6898
+ totalLen * (1 - activeFrac - 2 * gapFrac)
6899
+ );
6900
+ const trackOff = -totalLen * trackStartFrac;
6901
+ determinateWavyTrackPathRef.current.setAttribute(
6902
+ "stroke-dasharray",
6903
+ `${trackLen} ${totalLen}`
6904
+ );
6905
+ determinateWavyTrackPathRef.current.setAttribute(
6906
+ "stroke-dashoffset",
6907
+ `${trackOff}`
6908
+ );
6909
+ }
6910
+ }
6911
+ return;
6912
+ }
6644
6913
  const safeCrawlerSpeed = Math.max(0.1, crawlerSpeed);
6645
6914
  const scaledTime = time * safeCrawlerSpeed;
6646
6915
  const globalCycle = scaledTime % GLOBAL_ROTATION_DURATION;
@@ -6675,7 +6944,8 @@ var CircularProgress = React37__namespace.forwardRef(
6675
6944
  center,
6676
6945
  radius,
6677
6946
  currentAmplitude,
6678
- effectiveWavelength
6947
+ effectiveWavelength,
6948
+ wavePhase
6679
6949
  );
6680
6950
  if (indeterminateWavyActivePathRef.current) {
6681
6951
  indeterminateWavyActivePathRef.current.setAttribute("d", dynamicPath);
@@ -6770,7 +7040,7 @@ var CircularProgress = React37__namespace.forwardRef(
6770
7040
  style: { width: size, height: size }
6771
7041
  }, restProps), {
6772
7042
  children: /* @__PURE__ */ jsxRuntime.jsxs(react.LazyMotion, { features: react.domMax, strict: true, children: [
6773
- /* @__PURE__ */ jsxRuntime.jsxs(
7043
+ /* @__PURE__ */ jsxRuntime.jsx(
6774
7044
  "svg",
6775
7045
  {
6776
7046
  width: size,
@@ -6778,8 +7048,18 @@ var CircularProgress = React37__namespace.forwardRef(
6778
7048
  viewBox: `0 0 ${size} ${size}`,
6779
7049
  "aria-hidden": "true",
6780
7050
  style: { transform: "rotate(-90deg)", overflow: "visible" },
6781
- children: [
6782
- isDeterminate ? /* @__PURE__ */ jsxRuntime.jsx(
7051
+ children: isDeterminate ? isWavy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7052
+ shouldShowDeterminateTrack && (trackShape === "wavy" ? /* @__PURE__ */ jsxRuntime.jsx(
7053
+ "path",
7054
+ {
7055
+ ref: determinateWavyTrackPathRef,
7056
+ d: wavyActivePath != null ? wavyActivePath : "",
7057
+ fill: "none",
7058
+ stroke: bgTrackColor,
7059
+ strokeWidth: trackHeight,
7060
+ strokeLinecap: "round"
7061
+ }
7062
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
6783
7063
  react.m.circle,
6784
7064
  {
6785
7065
  cx: center,
@@ -6788,28 +7068,52 @@ var CircularProgress = React37__namespace.forwardRef(
6788
7068
  fill: "none",
6789
7069
  stroke: bgTrackColor,
6790
7070
  strokeWidth: trackHeight,
6791
- initial: { pathLength: trackLength, pathOffset: trackOffset },
6792
- animate: { pathLength: trackLength, pathOffset: trackOffset },
7071
+ initial: {
7072
+ pathLength: trackLength,
7073
+ pathOffset: trackOffset
7074
+ },
7075
+ animate: {
7076
+ pathLength: trackLength,
7077
+ pathOffset: trackOffset
7078
+ },
6793
7079
  transition: { duration: 0.4, ease: [0.2, 0, 0, 1] },
6794
7080
  strokeLinecap: "round"
6795
7081
  }
6796
- ) : null,
6797
- isDeterminate && (isWavy ? /* @__PURE__ */ jsxRuntime.jsx(
6798
- ActivePathElem,
7082
+ )),
7083
+ /* @__PURE__ */ jsxRuntime.jsx(
7084
+ "path",
6799
7085
  {
7086
+ ref: determinateWavyActivePathRef,
6800
7087
  d: wavyActivePath != null ? wavyActivePath : "",
6801
7088
  fill: "none",
6802
7089
  stroke: activeColor,
6803
7090
  strokeWidth: trackHeight,
6804
- strokeLinecap: "round",
6805
- initial: { pathLength: 0 },
6806
- animate: { pathLength: clampedValue / 100 },
6807
- transition: {
6808
- duration: 0.4,
6809
- ease: [0.2, 0, 0, 1]
6810
- }
7091
+ strokeLinecap: "round"
6811
7092
  }
6812
- ) : /* @__PURE__ */ jsxRuntime.jsx(
7093
+ )
7094
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7095
+ /* @__PURE__ */ jsxRuntime.jsx(
7096
+ react.m.circle,
7097
+ {
7098
+ cx: center,
7099
+ cy: center,
7100
+ r: radius,
7101
+ fill: "none",
7102
+ stroke: bgTrackColor,
7103
+ strokeWidth: trackHeight,
7104
+ initial: {
7105
+ pathLength: trackLength,
7106
+ pathOffset: trackOffset
7107
+ },
7108
+ animate: {
7109
+ pathLength: trackLength,
7110
+ pathOffset: trackOffset
7111
+ },
7112
+ transition: { duration: 0.4, ease: [0.2, 0, 0, 1] },
7113
+ strokeLinecap: "round"
7114
+ }
7115
+ ),
7116
+ /* @__PURE__ */ jsxRuntime.jsx(
6813
7117
  ActiveCircleElem,
6814
7118
  {
6815
7119
  cx: center,
@@ -6826,8 +7130,8 @@ var CircularProgress = React37__namespace.forwardRef(
6826
7130
  ease: [0.2, 0, 0, 1]
6827
7131
  }
6828
7132
  }
6829
- ))
6830
- ]
7133
+ )
7134
+ ] }) : null
6831
7135
  }
6832
7136
  ),
6833
7137
  !isDeterminate && /* @__PURE__ */ jsxRuntime.jsx(
@@ -6905,9 +7209,9 @@ var CircularProgress = React37__namespace.forwardRef(
6905
7209
  );
6906
7210
  CircularProgress.displayName = "CircularProgress";
6907
7211
  function useContainerWidth() {
6908
- const [width, setWidth] = React37__namespace.useState(0);
6909
- const observerRef = React37__namespace.useRef(null);
6910
- const ref = React37__namespace.useCallback((node) => {
7212
+ const [width, setWidth] = React38__namespace.useState(0);
7213
+ const observerRef = React38__namespace.useRef(null);
7214
+ const ref = React38__namespace.useCallback((node) => {
6911
7215
  if (observerRef.current) {
6912
7216
  observerRef.current.disconnect();
6913
7217
  observerRef.current = null;
@@ -6921,7 +7225,7 @@ function useContainerWidth() {
6921
7225
  observerRef.current = obs;
6922
7226
  }
6923
7227
  }, []);
6924
- React37__namespace.useEffect(() => {
7228
+ React38__namespace.useEffect(() => {
6925
7229
  return () => {
6926
7230
  if (observerRef.current) {
6927
7231
  observerRef.current.disconnect();
@@ -6931,7 +7235,7 @@ function useContainerWidth() {
6931
7235
  return [ref, width];
6932
7236
  }
6933
7237
  function useMergedRef(...refs) {
6934
- return React37__namespace.useCallback(
7238
+ return React38__namespace.useCallback(
6935
7239
  (node) => {
6936
7240
  for (const ref of refs) {
6937
7241
  if (typeof ref === "function") {
@@ -6945,7 +7249,7 @@ function useMergedRef(...refs) {
6945
7249
  [refs]
6946
7250
  );
6947
7251
  }
6948
- var FlatLinearTrack = React37__namespace.memo(function FlatLinearTrack2({
7252
+ var FlatLinearTrack = React38__namespace.memo(function FlatLinearTrack2({
6949
7253
  trackHeight,
6950
7254
  activeColor,
6951
7255
  trackColor,
@@ -7021,7 +7325,7 @@ var FlatLinearTrack = React37__namespace.memo(function FlatLinearTrack2({
7021
7325
  }
7022
7326
  );
7023
7327
  });
7024
- var WavyLinearTrack = React37__namespace.memo(function WavyLinearTrack2({
7328
+ var WavyLinearTrack = React38__namespace.memo(function WavyLinearTrack2({
7025
7329
  trackHeight,
7026
7330
  svgHeight,
7027
7331
  amplitude,
@@ -7040,13 +7344,13 @@ var WavyLinearTrack = React37__namespace.memo(function WavyLinearTrack2({
7040
7344
  }) {
7041
7345
  const isDeterminate = typeof value === "number";
7042
7346
  const clampedValue = isDeterminate ? Math.max(0, Math.min(100, value)) : 100;
7043
- const titleId = React37__namespace.useId();
7347
+ const titleId = React38__namespace.useId();
7044
7348
  const [containerRef, width] = useContainerWidth();
7045
- const activePathRef = React37__namespace.useRef(null);
7046
- const trackPathRef = React37__namespace.useRef(null);
7349
+ const activePathRef = React38__namespace.useRef(null);
7350
+ const trackPathRef = React38__namespace.useRef(null);
7047
7351
  const amplitudeMV = react.useMotionValue(amplitude);
7048
7352
  const fractionMV = react.useMotionValue(isDeterminate ? clampedValue / 100 : 1);
7049
- React37__namespace.useEffect(() => {
7353
+ React38__namespace.useEffect(() => {
7050
7354
  if (isDeterminate) {
7051
7355
  const fraction = clampedValue / 100;
7052
7356
  let targetAmp = amplitude;
@@ -7234,7 +7538,7 @@ var WavyLinearTrack = React37__namespace.memo(function WavyLinearTrack2({
7234
7538
  }
7235
7539
  );
7236
7540
  });
7237
- var LinearProgress = React37__namespace.forwardRef(
7541
+ var LinearProgress = React38__namespace.forwardRef(
7238
7542
  (_a, ref) => {
7239
7543
  var _b = _a, {
7240
7544
  value,
@@ -7275,10 +7579,10 @@ var LinearProgress = React37__namespace.forwardRef(
7275
7579
  ]);
7276
7580
  const isDeterminate = value !== void 0;
7277
7581
  const clampedValue = isDeterminate ? Math.min(100, Math.max(0, value)) : 0;
7278
- const containerRef = React37__namespace.useRef(null);
7582
+ const containerRef = React38__namespace.useRef(null);
7279
7583
  const mergedRef = useMergedRef(ref, containerRef);
7280
- const [isRtl, setIsRtl] = React37__namespace.useState(false);
7281
- React37__namespace.useEffect(() => {
7584
+ const [isRtl, setIsRtl] = React38__namespace.useState(false);
7585
+ React38__namespace.useEffect(() => {
7282
7586
  if (containerRef.current) {
7283
7587
  const dir = getComputedStyle(containerRef.current).direction;
7284
7588
  setIsRtl(dir === "rtl");
@@ -7286,16 +7590,16 @@ var LinearProgress = React37__namespace.forwardRef(
7286
7590
  }, []);
7287
7591
  const resolvedTrackShape = trackShape != null ? trackShape : shape;
7288
7592
  const isWavy = shape === "wavy" || resolvedTrackShape === "wavy";
7289
- const effectiveAmplitude = React37__namespace.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
7290
- const svgHeight = React37__namespace.useMemo(
7593
+ const effectiveAmplitude = React38__namespace.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
7594
+ const svgHeight = React38__namespace.useMemo(
7291
7595
  () => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
7292
7596
  [isWavy, trackHeight, effectiveAmplitude]
7293
7597
  );
7294
- const shouldShowStop = React37__namespace.useMemo(
7598
+ const shouldShowStop = React38__namespace.useMemo(
7295
7599
  () => isDeterminate && resolvedTrackShape === "flat" && showStopIndicator !== false,
7296
7600
  [isDeterminate, resolvedTrackShape, showStopIndicator]
7297
7601
  );
7298
- const stopSize = React37__namespace.useMemo(
7602
+ const stopSize = React38__namespace.useMemo(
7299
7603
  () => Math.max(2, trackHeight > 4 ? 4 : trackHeight / 2),
7300
7604
  [trackHeight]
7301
7605
  );
@@ -7370,7 +7674,7 @@ var LinearProgress = React37__namespace.forwardRef(
7370
7674
  }
7371
7675
  );
7372
7676
  LinearProgress.displayName = "LinearProgress";
7373
- var ProgressIndicator = React37__namespace.forwardRef((props, ref) => {
7677
+ var ProgressIndicator = React38__namespace.forwardRef((props, ref) => {
7374
7678
  if (props.variant === "circular") {
7375
7679
  return /* @__PURE__ */ jsxRuntime.jsx(CircularProgress, __spreadValues({ ref }, props));
7376
7680
  }
@@ -7502,7 +7806,7 @@ function resolveDisabledBgClass(colorStyle) {
7502
7806
  }
7503
7807
  return "disabled:text-m3-on-surface/[0.38]";
7504
7808
  }
7505
- var IconButtonComponent = React37__namespace.forwardRef(
7809
+ var IconButtonComponent = React38__namespace.forwardRef(
7506
7810
  (_a, ref) => {
7507
7811
  var _b = _a, {
7508
7812
  className,
@@ -7544,18 +7848,18 @@ var IconButtonComponent = React37__namespace.forwardRef(
7544
7848
  var _a2, _b2, _c, _d, _e;
7545
7849
  const isToggle = variant === "toggle";
7546
7850
  const isSelected = isToggle && !!selected;
7547
- const resolvedColorClass = React37__namespace.useMemo(
7851
+ const resolvedColorClass = React38__namespace.useMemo(
7548
7852
  () => isSelected ? colorStyles[colorStyle].selected : colorStyles[colorStyle].default,
7549
7853
  [isSelected, colorStyle]
7550
7854
  );
7551
- const outlineWidthClass = React37__namespace.useMemo(
7855
+ const outlineWidthClass = React38__namespace.useMemo(
7552
7856
  () => {
7553
7857
  var _a3;
7554
7858
  return colorStyle === "outlined" && !isSelected ? (_a3 = SIZE_OUTLINE_WIDTH[size]) != null ? _a3 : "border" : "";
7555
7859
  },
7556
7860
  [colorStyle, isSelected, size]
7557
7861
  );
7558
- const disabledBgClass = React37__namespace.useMemo(
7862
+ const disabledBgClass = React38__namespace.useMemo(
7559
7863
  () => resolveDisabledBgClass(colorStyle),
7560
7864
  [colorStyle]
7561
7865
  );
@@ -7578,7 +7882,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7578
7882
  const { ripples, onPointerDown, removeRipple } = useRippleState({
7579
7883
  disabled: loading
7580
7884
  });
7581
- const handleClick = React37__namespace.useCallback(
7885
+ const handleClick = React38__namespace.useCallback(
7582
7886
  (e) => {
7583
7887
  if (loading) {
7584
7888
  e.preventDefault();
@@ -7588,7 +7892,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7588
7892
  },
7589
7893
  [loading, onClick]
7590
7894
  );
7591
- const handleKeyDown = React37__namespace.useCallback(
7895
+ const handleKeyDown = React38__namespace.useCallback(
7592
7896
  (e) => {
7593
7897
  if (loading) return;
7594
7898
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -7644,7 +7948,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7644
7948
  width: isCustomSize ? `${iconSize}px` : void 0,
7645
7949
  height: isCustomSize ? `${iconSize}px` : void 0
7646
7950
  },
7647
- children: isSelected && selectedIcon ? selectedIcon : asChild ? React37__namespace.Children.only(children).props.children : children
7951
+ children: isSelected && selectedIcon ? selectedIcon : asChild ? React38__namespace.Children.only(children).props.children : children
7648
7952
  }),
7649
7953
  isSelected && selectedIcon ? "selected-content" : "content"
7650
7954
  ) })
@@ -7661,7 +7965,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7661
7965
  className
7662
7966
  );
7663
7967
  if (asChild) {
7664
- const child = React37__namespace.Children.only(children);
7968
+ const child = React38__namespace.Children.only(children);
7665
7969
  return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
7666
7970
  reactSlot.Slot,
7667
7971
  __spreadProps(__spreadValues({
@@ -7678,7 +7982,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7678
7982
  }),
7679
7983
  className: containerClassName
7680
7984
  }, restProps), {
7681
- children: React37__namespace.cloneElement(child, { children: innerContent })
7985
+ children: React38__namespace.cloneElement(child, { children: innerContent })
7682
7986
  })
7683
7987
  ) });
7684
7988
  }
@@ -7706,7 +8010,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7706
8010
  }
7707
8011
  );
7708
8012
  IconButtonComponent.displayName = "IconButton";
7709
- var IconButton = React37__namespace.memo(IconButtonComponent);
8013
+ var IconButton = React38__namespace.memo(IconButtonComponent);
7710
8014
  function TrailingAction({
7711
8015
  query,
7712
8016
  trailingIcon,
@@ -7766,7 +8070,7 @@ function SearchViewDocked({
7766
8070
  activeIndex
7767
8071
  }) {
7768
8072
  const shouldReduceMotion = react.useReducedMotion();
7769
- const inputRef = React37__namespace.useRef(null);
8073
+ const inputRef = React38__namespace.useRef(null);
7770
8074
  useSearchViewFocus(inputRef, active);
7771
8075
  const dropdownRef = useClickOutside(() => {
7772
8076
  onActiveChange(false);
@@ -7912,10 +8216,10 @@ function SearchViewFullScreen({
7912
8216
  activeIndex
7913
8217
  }) {
7914
8218
  const shouldReduceMotion = react.useReducedMotion();
7915
- const inputRef = React37__namespace.useRef(null);
8219
+ const inputRef = React38__namespace.useRef(null);
7916
8220
  useSearchViewFocus(inputRef, active);
7917
- const [mounted, setMounted] = React37__namespace.useState(false);
7918
- React37__namespace.useEffect(() => {
8221
+ const [mounted, setMounted] = React38__namespace.useState(false);
8222
+ React38__namespace.useEffect(() => {
7919
8223
  setMounted(true);
7920
8224
  }, []);
7921
8225
  const handleFormSubmit = (e) => {
@@ -8073,10 +8377,10 @@ function SearchComponent({
8073
8377
  className,
8074
8378
  viewClassName
8075
8379
  }) {
8076
- const generatedId = React37__namespace.useId();
8380
+ const generatedId = React38__namespace.useId();
8077
8381
  const searchId = id != null ? id : generatedId;
8078
8382
  const listboxId = `${searchId}-listbox`;
8079
- const itemCount = React37__namespace.Children.count(children);
8383
+ const itemCount = React38__namespace.Children.count(children);
8080
8384
  const { activeIndex, handleKeyDown } = useSearchKeyboard({
8081
8385
  active,
8082
8386
  onActiveChange,
@@ -8135,9 +8439,9 @@ function formatBadgeLabel(children, max) {
8135
8439
  return "";
8136
8440
  }
8137
8441
  function detectBadgeHasContent(badge) {
8138
- return React37__namespace.isValidElement(badge) && badge.props.children != null;
8442
+ return React38__namespace.isValidElement(badge) && badge.props.children != null;
8139
8443
  }
8140
- var BadgeImpl = React37__namespace.forwardRef(
8444
+ var BadgeImpl = React38__namespace.forwardRef(
8141
8445
  (_a, ref) => {
8142
8446
  var _b = _a, {
8143
8447
  children,
@@ -8174,7 +8478,7 @@ var BadgeImpl = React37__namespace.forwardRef(
8174
8478
  exit: { scale: 0, opacity: 0 },
8175
8479
  transition: springTransition,
8176
8480
  className: cn(
8177
- "rounded-full ring-[1.5px] ring-m3-surface",
8481
+ "rounded-full ring-[1.5px] ring-m3-surface shrink-0",
8178
8482
  !containerColor && "bg-m3-error",
8179
8483
  hasContent ? cn(
8180
8484
  "inline-flex items-center justify-center",
@@ -8191,7 +8495,7 @@ var BadgeImpl = React37__namespace.forwardRef(
8191
8495
  }
8192
8496
  );
8193
8497
  BadgeImpl.displayName = "Badge";
8194
- React37__namespace.memo(BadgeImpl);
8498
+ React38__namespace.memo(BadgeImpl);
8195
8499
  function BadgedBox({
8196
8500
  badge,
8197
8501
  children,
@@ -8212,9 +8516,9 @@ function BadgedBox({
8212
8516
  )
8213
8517
  ] });
8214
8518
  }
8215
- var TabsContext = React37__namespace.createContext(null);
8519
+ var TabsContext = React38__namespace.createContext(null);
8216
8520
  function useTabsContext() {
8217
- const ctx = React37__namespace.useContext(TabsContext);
8521
+ const ctx = React38__namespace.useContext(TabsContext);
8218
8522
  if (!ctx) {
8219
8523
  throw new Error(
8220
8524
  "[MD3 Tabs] Component must be used within a <Tabs> root. Ensure <TabsList>, <Tab>, and <TabsContent> are descendants of <Tabs>."
@@ -8222,7 +8526,7 @@ function useTabsContext() {
8222
8526
  }
8223
8527
  return ctx;
8224
8528
  }
8225
- var TabsComponent = React37__namespace.forwardRef(
8529
+ var TabsComponent = React38__namespace.forwardRef(
8226
8530
  ({
8227
8531
  value: controlledValue,
8228
8532
  defaultValue = "",
@@ -8231,35 +8535,35 @@ var TabsComponent = React37__namespace.forwardRef(
8231
8535
  children,
8232
8536
  className
8233
8537
  }, ref) => {
8234
- const [internalValue, setInternalValue] = React37__namespace.useState(defaultValue);
8538
+ const [internalValue, setInternalValue] = React38__namespace.useState(defaultValue);
8235
8539
  const isControlled = controlledValue !== void 0;
8236
8540
  const value = isControlled ? controlledValue : internalValue;
8237
- const handleValueChange = React37__namespace.useCallback(
8541
+ const handleValueChange = React38__namespace.useCallback(
8238
8542
  (newValue) => {
8239
8543
  if (!isControlled) setInternalValue(newValue);
8240
8544
  onValueChange == null ? void 0 : onValueChange(newValue);
8241
8545
  },
8242
8546
  [isControlled, onValueChange]
8243
8547
  );
8244
- const [focusedValue, setFocusedValue] = React37__namespace.useState(value);
8245
- React37__namespace.useEffect(() => {
8548
+ const [focusedValue, setFocusedValue] = React38__namespace.useState(value);
8549
+ React38__namespace.useEffect(() => {
8246
8550
  setFocusedValue(value);
8247
8551
  }, [value]);
8248
- const [tabValues, setTabValues] = React37__namespace.useState([]);
8249
- const registerTab = React37__namespace.useCallback((tabValue) => {
8552
+ const [tabValues, setTabValues] = React38__namespace.useState([]);
8553
+ const registerTab = React38__namespace.useCallback((tabValue) => {
8250
8554
  setTabValues((prev) => {
8251
8555
  if (prev.includes(tabValue)) return prev;
8252
8556
  return [...prev, tabValue];
8253
8557
  });
8254
8558
  }, []);
8255
- const unregisterTab = React37__namespace.useCallback((tabValue) => {
8559
+ const unregisterTab = React38__namespace.useCallback((tabValue) => {
8256
8560
  setTabValues((prev) => prev.filter((v) => v !== tabValue));
8257
8561
  }, []);
8258
- const hasAutoSelected = React37__namespace.useRef(false);
8259
- const [disabledValues, setDisabledValues] = React37__namespace.useState(
8562
+ const hasAutoSelected = React38__namespace.useRef(false);
8563
+ const [disabledValues, setDisabledValues] = React38__namespace.useState(
8260
8564
  /* @__PURE__ */ new Set()
8261
8565
  );
8262
- const markTabDisabled = React37__namespace.useCallback(
8566
+ const markTabDisabled = React38__namespace.useCallback(
8263
8567
  (tabValue, disabled) => {
8264
8568
  setDisabledValues((prev) => {
8265
8569
  const next = new Set(prev);
@@ -8273,7 +8577,7 @@ var TabsComponent = React37__namespace.forwardRef(
8273
8577
  },
8274
8578
  []
8275
8579
  );
8276
- React37__namespace.useEffect(() => {
8580
+ React38__namespace.useEffect(() => {
8277
8581
  if (isControlled || hasAutoSelected.current || tabValues.length === 0) {
8278
8582
  return;
8279
8583
  }
@@ -8288,9 +8592,9 @@ var TabsComponent = React37__namespace.forwardRef(
8288
8592
  setFocusedValue(firstEnabled);
8289
8593
  }
8290
8594
  }, [tabValues, disabledValues, isControlled, value]);
8291
- const id = React37__namespace.useId();
8595
+ const id = React38__namespace.useId();
8292
8596
  const layoutGroupId = `tabs-${id}`;
8293
- const contextValue = React37__namespace.useMemo(
8597
+ const contextValue = React38__namespace.useMemo(
8294
8598
  () => ({
8295
8599
  value,
8296
8600
  onValueChange: handleValueChange,
@@ -8321,12 +8625,12 @@ var TabsComponent = React37__namespace.forwardRef(
8321
8625
  }
8322
8626
  );
8323
8627
  TabsComponent.displayName = "Tabs";
8324
- var Tabs = React37__namespace.memo(TabsComponent);
8325
- var TabsListContext = React37__namespace.createContext(
8628
+ var Tabs = React38__namespace.memo(TabsComponent);
8629
+ var TabsListContext = React38__namespace.createContext(
8326
8630
  null
8327
8631
  );
8328
8632
  function useTabsListContext() {
8329
- const ctx = React37__namespace.useContext(TabsListContext);
8633
+ const ctx = React38__namespace.useContext(TabsListContext);
8330
8634
  return ctx != null ? ctx : { variant: "primary", scrollable: false };
8331
8635
  }
8332
8636
 
@@ -8410,7 +8714,7 @@ var TABS_CONTENT_TRANSITION = {
8410
8714
  ease: "easeInOut"
8411
8715
  };
8412
8716
  var INDICATOR_MIN_WIDTH = 24;
8413
- var TabComponent = React37__namespace.forwardRef(
8717
+ var TabComponent = React38__namespace.forwardRef(
8414
8718
  ({
8415
8719
  value,
8416
8720
  icon,
@@ -8440,9 +8744,9 @@ var TabComponent = React37__namespace.forwardRef(
8440
8744
  const isFocused = focusedValue === value;
8441
8745
  const hasIcon = icon != null;
8442
8746
  const isStackedIcon = hasIcon && !inlineIcon;
8443
- const buttonRef = React37__namespace.useRef(null);
8444
- const isFirstMount = React37__namespace.useRef(true);
8445
- const mergedRef = React37__namespace.useCallback(
8747
+ const buttonRef = React38__namespace.useRef(null);
8748
+ const isFirstMount = React38__namespace.useRef(true);
8749
+ const mergedRef = React38__namespace.useCallback(
8446
8750
  (node) => {
8447
8751
  buttonRef.current = node;
8448
8752
  if (typeof ref === "function") ref(node);
@@ -8450,15 +8754,15 @@ var TabComponent = React37__namespace.forwardRef(
8450
8754
  },
8451
8755
  [ref]
8452
8756
  );
8453
- React37__namespace.useEffect(() => {
8757
+ React38__namespace.useEffect(() => {
8454
8758
  registerTab(value);
8455
8759
  return () => unregisterTab(value);
8456
8760
  }, [value, registerTab, unregisterTab]);
8457
- React37__namespace.useEffect(() => {
8761
+ React38__namespace.useEffect(() => {
8458
8762
  markTabDisabled(value, disabled);
8459
8763
  return () => markTabDisabled(value, false);
8460
8764
  }, [value, disabled, markTabDisabled]);
8461
- const handleKeyDown = React37__namespace.useCallback(
8765
+ const handleKeyDown = React38__namespace.useCallback(
8462
8766
  (e) => {
8463
8767
  const isRtl = buttonRef.current ? getComputedStyle(buttonRef.current).direction === "rtl" : false;
8464
8768
  const enabledValues = tabValues.filter((v) => !disabledValues.has(v));
@@ -8512,7 +8816,7 @@ var TabComponent = React37__namespace.forwardRef(
8512
8816
  autoActivate
8513
8817
  ]
8514
8818
  );
8515
- React37__namespace.useEffect(() => {
8819
+ React38__namespace.useEffect(() => {
8516
8820
  if (isFirstMount.current) {
8517
8821
  isFirstMount.current = false;
8518
8822
  return;
@@ -8521,7 +8825,7 @@ var TabComponent = React37__namespace.forwardRef(
8521
8825
  buttonRef.current.focus({ preventScroll: true });
8522
8826
  }
8523
8827
  }, [isFocused]);
8524
- React37__namespace.useEffect(() => {
8828
+ React38__namespace.useEffect(() => {
8525
8829
  if (!isActive || !scrollable || !buttonRef.current) return;
8526
8830
  const btn = buttonRef.current;
8527
8831
  let container = btn.parentElement;
@@ -8658,8 +8962,8 @@ var TabComponent = React37__namespace.forwardRef(
8658
8962
  }
8659
8963
  );
8660
8964
  TabComponent.displayName = "Tab";
8661
- var Tab = React37__namespace.memo(TabComponent);
8662
- var TabsContentComponent = React37__namespace.forwardRef(
8965
+ var Tab = React38__namespace.memo(TabComponent);
8966
+ var TabsContentComponent = React38__namespace.forwardRef(
8663
8967
  ({ value, className, children }, ref) => {
8664
8968
  var _a;
8665
8969
  const { value: selectedValue, layoutGroupId } = useTabsContext();
@@ -8693,8 +8997,8 @@ var TabsContentComponent = React37__namespace.forwardRef(
8693
8997
  }
8694
8998
  );
8695
8999
  TabsContentComponent.displayName = "TabsContent";
8696
- var TabsContent = React37__namespace.memo(TabsContentComponent);
8697
- var TabsListComponent = React37__namespace.forwardRef(
9000
+ var TabsContent = React38__namespace.memo(TabsContentComponent);
9001
+ var TabsListComponent = React38__namespace.forwardRef(
8698
9002
  ({
8699
9003
  variant,
8700
9004
  scrollable = false,
@@ -8705,12 +9009,12 @@ var TabsListComponent = React37__namespace.forwardRef(
8705
9009
  }, ref) => {
8706
9010
  const { layoutGroupId, value, setFocusedValue } = useTabsContext();
8707
9011
  const listLayoutId = `${layoutGroupId}-list`;
8708
- const listContextValue = React37__namespace.useMemo(
9012
+ const listContextValue = React38__namespace.useMemo(
8709
9013
  () => ({ variant, scrollable }),
8710
9014
  [variant, scrollable]
8711
9015
  );
8712
9016
  const bgColor = backgroundColor != null ? backgroundColor : "var(--md-sys-color-surface)";
8713
- const handleBlur = React37__namespace.useCallback(
9017
+ const handleBlur = React38__namespace.useCallback(
8714
9018
  (e) => {
8715
9019
  const listEl = e.currentTarget;
8716
9020
  if (listEl.contains(e.relatedTarget)) return;
@@ -8759,7 +9063,7 @@ var TabsListComponent = React37__namespace.forwardRef(
8759
9063
  }
8760
9064
  );
8761
9065
  TabsListComponent.displayName = "TabsList";
8762
- var TabsList = React37__namespace.memo(TabsListComponent);
9066
+ var TabsList = React38__namespace.memo(TabsListComponent);
8763
9067
 
8764
9068
  // src/ui/toolbar/toolbar-colors.ts
8765
9069
  var standardFloatingToolbarColors = {
@@ -8815,13 +9119,13 @@ function getToolbarColors(variant = "standard", customColors) {
8815
9119
  return standardFloatingToolbarColors;
8816
9120
  }
8817
9121
  }
8818
- var ToolbarContext = React37__namespace.createContext(
9122
+ var ToolbarContext = React38__namespace.createContext(
8819
9123
  null
8820
9124
  );
8821
9125
  function useToolbarContext() {
8822
- return React37__namespace.useContext(ToolbarContext);
9126
+ return React38__namespace.useContext(ToolbarContext);
8823
9127
  }
8824
- var BottomDockedToolbar = React37__namespace.forwardRef(
9128
+ var BottomDockedToolbar = React38__namespace.forwardRef(
8825
9129
  (_a, ref) => {
8826
9130
  var _b = _a, {
8827
9131
  variant = "standard",
@@ -8854,8 +9158,8 @@ var BottomDockedToolbar = React37__namespace.forwardRef(
8854
9158
  const { scrollY } = react.useScroll(
8855
9159
  scrollContainerRef ? { container: scrollContainerRef } : void 0
8856
9160
  );
8857
- const [isHidden, setIsHidden] = React37__namespace.useState(false);
8858
- const lastScrollY = React37__namespace.useRef(0);
9161
+ const [isHidden, setIsHidden] = React38__namespace.useState(false);
9162
+ const lastScrollY = React38__namespace.useRef(0);
8859
9163
  react.useMotionValueEvent(scrollY, "change", (latest) => {
8860
9164
  if (!hideOnScroll) return;
8861
9165
  const diff = latest - lastScrollY.current;
@@ -9014,15 +9318,15 @@ function buildSlotVariants(xHidden, yHidden, isHorizontal) {
9014
9318
  };
9015
9319
  }
9016
9320
  function applyItemClassName(nodes, itemClassName) {
9017
- return React37__namespace.Children.map(nodes, (child) => {
9018
- if (!React37__namespace.isValidElement(child)) return child;
9321
+ return React38__namespace.Children.map(nodes, (child) => {
9322
+ if (!React38__namespace.isValidElement(child)) return child;
9019
9323
  const element = child;
9020
- return React37__namespace.cloneElement(element, {
9324
+ return React38__namespace.cloneElement(element, {
9021
9325
  className: cn(element.props.className, itemClassName)
9022
9326
  });
9023
9327
  });
9024
9328
  }
9025
- var FloatingToolbarBase = React37__namespace.forwardRef(
9329
+ var FloatingToolbarBase = React38__namespace.forwardRef(
9026
9330
  (_a, ref) => {
9027
9331
  var _b = _a, {
9028
9332
  expanded,
@@ -9194,11 +9498,11 @@ var FloatingToolbarBase = React37__namespace.forwardRef(
9194
9498
  }
9195
9499
  );
9196
9500
  FloatingToolbarBase.displayName = "FloatingToolbarBase";
9197
- var HorizontalFloatingToolbar = React37__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9501
+ var HorizontalFloatingToolbar = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9198
9502
  HorizontalFloatingToolbar.displayName = "HorizontalFloatingToolbar";
9199
- var VerticalFloatingToolbar = React37__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9503
+ var VerticalFloatingToolbar = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9200
9504
  VerticalFloatingToolbar.displayName = "VerticalFloatingToolbar";
9201
- var FloatingToolbarWithFabBase = React37__namespace.forwardRef(
9505
+ var FloatingToolbarWithFabBase = React38__namespace.forwardRef(
9202
9506
  (_a, ref) => {
9203
9507
  var _b = _a, {
9204
9508
  expanded,
@@ -9326,9 +9630,9 @@ var FloatingToolbarWithFabBase = React37__namespace.forwardRef(
9326
9630
  }
9327
9631
  );
9328
9632
  FloatingToolbarWithFabBase.displayName = "FloatingToolbarWithFabBase";
9329
- var HorizontalFloatingToolbarWithFab = React37__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9633
+ var HorizontalFloatingToolbarWithFab = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9330
9634
  HorizontalFloatingToolbarWithFab.displayName = "HorizontalFloatingToolbarWithFab";
9331
- var VerticalFloatingToolbarWithFab = React37__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9635
+ var VerticalFloatingToolbarWithFab = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9332
9636
  VerticalFloatingToolbarWithFab.displayName = "VerticalFloatingToolbarWithFab";
9333
9637
  var ToolbarDivider = ({
9334
9638
  orientation: propsOrientation,
@@ -9364,7 +9668,7 @@ var VARIANT_TO_COLOR_STYLE = {
9364
9668
  tonal: "tonal",
9365
9669
  filled: "filled"
9366
9670
  };
9367
- var ToolbarIconButton = React37__namespace.forwardRef(
9671
+ var ToolbarIconButton = React38__namespace.forwardRef(
9368
9672
  (_a, ref) => {
9369
9673
  var _b = _a, {
9370
9674
  emphasis = "standard",
@@ -9426,13 +9730,13 @@ function useFloatingToolbarScrollBehavior(options = {}) {
9426
9730
  expandThreshold = 10,
9427
9731
  scrollContainerRef
9428
9732
  } = options;
9429
- const [isExpanded, setIsExpanded] = React37.useState(true);
9430
- const [offset, setOffset] = React37.useState(0);
9733
+ const [isExpanded, setIsExpanded] = React38.useState(true);
9734
+ const [offset, setOffset] = React38.useState(0);
9431
9735
  const { scrollY } = react.useScroll({
9432
9736
  container: scrollContainerRef
9433
9737
  });
9434
- const lastScrollY = React37.useRef(0);
9435
- const accumulatedScroll = React37.useRef(0);
9738
+ const lastScrollY = React38.useRef(0);
9739
+ const accumulatedScroll = React38.useRef(0);
9436
9740
  react.useMotionValueEvent(scrollY, "change", (currentScrollY) => {
9437
9741
  const deltaY = currentScrollY - lastScrollY.current;
9438
9742
  if (currentScrollY < 0) return;
@@ -9454,7 +9758,7 @@ function useFloatingToolbarScrollBehavior(options = {}) {
9454
9758
  }
9455
9759
  }
9456
9760
  });
9457
- React37.useEffect(() => {
9761
+ React38.useEffect(() => {
9458
9762
  if (typeof window !== "undefined") {
9459
9763
  const matchMedia = window.matchMedia("(forced-colors: active)");
9460
9764
  if (matchMedia.matches) {
@@ -9536,7 +9840,7 @@ var MOTION_PROP_KEYS = [
9536
9840
  "layoutId",
9537
9841
  "onLayoutAnimationComplete"
9538
9842
  ];
9539
- var ToolbarToggleButton = React37__namespace.forwardRef(
9843
+ var ToolbarToggleButton = React38__namespace.forwardRef(
9540
9844
  (_a, ref) => {
9541
9845
  var _b = _a, {
9542
9846
  emphasis = "standard",
@@ -9570,7 +9874,7 @@ var ToolbarToggleButton = React37__namespace.forwardRef(
9570
9874
  "onPointerLeave"
9571
9875
  ]);
9572
9876
  const context = useToolbarContext();
9573
- const [isPressed, setIsPressed] = React37__namespace.useState(false);
9877
+ const [isPressed, setIsPressed] = React38__namespace.useState(false);
9574
9878
  const {
9575
9879
  ripples,
9576
9880
  onPointerDown: handleRipplePointerDown,
@@ -9578,7 +9882,7 @@ var ToolbarToggleButton = React37__namespace.forwardRef(
9578
9882
  } = useRippleState({
9579
9883
  disabled: Boolean(disabled) || !ripple
9580
9884
  });
9581
- const handlePointerDown = React37__namespace.useCallback(
9885
+ const handlePointerDown = React38__namespace.useCallback(
9582
9886
  (e) => {
9583
9887
  setIsPressed(true);
9584
9888
  if (!disabled && ripple) {
@@ -9588,14 +9892,14 @@ var ToolbarToggleButton = React37__namespace.forwardRef(
9588
9892
  },
9589
9893
  [disabled, ripple, handleRipplePointerDown, onPointerDownProp]
9590
9894
  );
9591
- const handlePointerUp = React37__namespace.useCallback(
9895
+ const handlePointerUp = React38__namespace.useCallback(
9592
9896
  (e) => {
9593
9897
  setIsPressed(false);
9594
9898
  onPointerUpProp == null ? void 0 : onPointerUpProp(e);
9595
9899
  },
9596
9900
  [onPointerUpProp]
9597
9901
  );
9598
- const handlePointerLeave = React37__namespace.useCallback(
9902
+ const handlePointerLeave = React38__namespace.useCallback(
9599
9903
  (e) => {
9600
9904
  setIsPressed(false);
9601
9905
  onPointerLeaveProp == null ? void 0 : onPointerLeaveProp(e);
@@ -9614,14 +9918,14 @@ var ToolbarToggleButton = React37__namespace.forwardRef(
9614
9918
  context == null ? void 0 : context.itemClassName,
9615
9919
  className
9616
9920
  );
9617
- const animateConfig = React37__namespace.useMemo(
9921
+ const animateConfig = React38__namespace.useMemo(
9618
9922
  () => ({
9619
9923
  scaleX: pressExpand && isPressed ? 1 + pressExpandRatio : 1,
9620
9924
  borderRadius: isPressed ? ToolbarToggleButtonRadiusTokens.pressedRadius : ToolbarToggleButtonRadiusTokens.pillRadius
9621
9925
  }),
9622
9926
  [pressExpand, pressExpandRatio, isPressed]
9623
9927
  );
9624
- const transitionConfig = React37__namespace.useMemo(
9928
+ const transitionConfig = React38__namespace.useMemo(
9625
9929
  () => ({
9626
9930
  scaleX: FAST_SPATIAL_SPRING,
9627
9931
  borderRadius: BUTTON_RADIUS_SPRING
@@ -9643,7 +9947,7 @@ var ToolbarToggleButton = React37__namespace.forwardRef(
9643
9947
  children && (typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children }) : children)
9644
9948
  ] });
9645
9949
  if (asChild) {
9646
- const child = React37__namespace.Children.only(children);
9950
+ const child = React38__namespace.Children.only(children);
9647
9951
  const childContent = child.props.children;
9648
9952
  const innerChildContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9649
9953
  ripple && /* @__PURE__ */ jsxRuntime.jsx(
@@ -9682,7 +9986,7 @@ var ToolbarToggleButton = React37__namespace.forwardRef(
9682
9986
  onPointerUp: handlePointerUp,
9683
9987
  onPointerLeave: handlePointerLeave
9684
9988
  }, strippedProps), {
9685
- children: React37__namespace.cloneElement(child, { children: innerChildContent })
9989
+ children: React38__namespace.cloneElement(child, { children: innerChildContent })
9686
9990
  })
9687
9991
  ) });
9688
9992
  }