@bug-on/m3-expressive 1.3.2 → 1.3.3

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.
@@ -5,7 +5,7 @@ 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 React38 = require('react');
8
+ var React39 = require('react');
9
9
  var RxContextMenu = require('@radix-ui/react-context-menu');
10
10
  var RadixScrollArea = require('@radix-ui/react-scroll-area');
11
11
  var m3Tokens = require('@bug-on/m3-tokens');
@@ -32,7 +32,7 @@ function _interopNamespace(e) {
32
32
  return Object.freeze(n);
33
33
  }
34
34
 
35
- var React38__namespace = /*#__PURE__*/_interopNamespace(React38);
35
+ var React39__namespace = /*#__PURE__*/_interopNamespace(React39);
36
36
  var RxContextMenu__namespace = /*#__PURE__*/_interopNamespace(RxContextMenu);
37
37
  var RadixScrollArea__namespace = /*#__PURE__*/_interopNamespace(RadixScrollArea);
38
38
  var DropdownMenu__namespace = /*#__PURE__*/_interopNamespace(DropdownMenu);
@@ -318,7 +318,7 @@ function AppBarItemButton({ item }) {
318
318
  }
319
319
  );
320
320
  }
321
- var ScrollArea = React38__namespace.forwardRef(
321
+ var ScrollArea = React39__namespace.forwardRef(
322
322
  (_a, ref) => {
323
323
  var _b = _a, {
324
324
  className,
@@ -339,15 +339,15 @@ var ScrollArea = React38__namespace.forwardRef(
339
339
  "viewportRef",
340
340
  "viewportProps"
341
341
  ]);
342
- const [isTouchDevice, setIsTouchDevice] = React38__namespace.useState(false);
343
- React38__namespace.useEffect(() => {
342
+ const [isTouchDevice, setIsTouchDevice] = React39__namespace.useState(false);
343
+ React39__namespace.useEffect(() => {
344
344
  if (typeof window !== "undefined") {
345
345
  setIsTouchDevice(
346
346
  "ontouchstart" in window || navigator.maxTouchPoints > 0
347
347
  );
348
348
  }
349
349
  }, []);
350
- const resolvedType = React38__namespace.useMemo(() => {
350
+ const resolvedType = React39__namespace.useMemo(() => {
351
351
  if (type === "hover" && isTouchDevice) {
352
352
  return "scroll";
353
353
  }
@@ -398,7 +398,7 @@ var ScrollArea = React38__namespace.forwardRef(
398
398
  }
399
399
  );
400
400
  ScrollArea.displayName = "ScrollArea";
401
- var ScrollAreaScrollbar = React38__namespace.forwardRef((_a, ref) => {
401
+ var ScrollAreaScrollbar = React39__namespace.forwardRef((_a, ref) => {
402
402
  var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
403
403
  return /* @__PURE__ */ jsxRuntime.jsx(
404
404
  RadixScrollArea__namespace.Scrollbar,
@@ -428,7 +428,7 @@ var ScrollAreaScrollbar = React38__namespace.forwardRef((_a, ref) => {
428
428
  );
429
429
  });
430
430
  ScrollAreaScrollbar.displayName = RadixScrollArea__namespace.Scrollbar.displayName;
431
- var ScrollAreaCorner = React38__namespace.forwardRef((_a, ref) => {
431
+ var ScrollAreaCorner = React39__namespace.forwardRef((_a, ref) => {
432
432
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
433
433
  return /* @__PURE__ */ jsxRuntime.jsx(
434
434
  RadixScrollArea__namespace.Corner,
@@ -497,7 +497,7 @@ var SUBMENU_CONTAINER_VARIANTS = {
497
497
  transition: FAST_EFFECTS_TRANSITION
498
498
  }
499
499
  };
500
- var MenuContext = React38__namespace.createContext({
500
+ var MenuContext = React39__namespace.createContext({
501
501
  variant: "baseline",
502
502
  colorVariant: "standard",
503
503
  density: 0,
@@ -515,7 +515,7 @@ function MenuProvider({
515
515
  onOpenChange,
516
516
  children
517
517
  }) {
518
- const value = React38__namespace.useMemo(
518
+ const value = React39__namespace.useMemo(
519
519
  () => ({
520
520
  variant,
521
521
  colorVariant,
@@ -529,8 +529,8 @@ function MenuProvider({
529
529
  return /* @__PURE__ */ jsxRuntime.jsx(MenuContext.Provider, { value, children });
530
530
  }
531
531
  function useMenuContext() {
532
- const ctx = React38__namespace.useContext(MenuContext);
533
- return React38__namespace.useMemo(
532
+ const ctx = React39__namespace.useContext(MenuContext);
533
+ return React39__namespace.useMemo(
534
534
  () => Object.assign(ctx, {
535
535
  get isStatic() {
536
536
  return ctx.menuPrimitive === "static";
@@ -650,10 +650,10 @@ var VIBRANT_COLORS = {
650
650
  var DIVIDER_PADDING = "mx-3 my-0.5";
651
651
  var DIVIDER_COLOR = "bg-m3-outline-variant";
652
652
  function flattenChildren(nodes) {
653
- return React38__namespace.Children.toArray(nodes).reduce(
653
+ return React39__namespace.Children.toArray(nodes).reduce(
654
654
  (acc, child) => {
655
- if (!React38__namespace.isValidElement(child)) return acc;
656
- if (child.type === React38__namespace.Fragment) {
655
+ if (!React39__namespace.isValidElement(child)) return acc;
656
+ if (child.type === React39__namespace.Fragment) {
657
657
  return acc.concat(
658
658
  flattenChildren(
659
659
  child.props.children
@@ -671,7 +671,7 @@ function ContextMenu({
671
671
  variant = "baseline",
672
672
  colorVariant = "standard"
673
673
  }) {
674
- const [open, setOpen] = React38__namespace.useState(false);
674
+ const [open, setOpen] = React39__namespace.useState(false);
675
675
  return /* @__PURE__ */ jsxRuntime.jsx(
676
676
  MenuProvider,
677
677
  {
@@ -685,12 +685,12 @@ function ContextMenu({
685
685
  );
686
686
  }
687
687
  ContextMenu.displayName = "ContextMenu";
688
- var ContextMenuTrigger = React38__namespace.forwardRef((_a, ref) => {
688
+ var ContextMenuTrigger = React39__namespace.forwardRef((_a, ref) => {
689
689
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
690
690
  return /* @__PURE__ */ jsxRuntime.jsx(RxContextMenu__namespace.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
691
691
  });
692
692
  ContextMenuTrigger.displayName = "ContextMenuTrigger";
693
- var ContextMenuContent = React38__namespace.forwardRef(
693
+ var ContextMenuContent = React39__namespace.forwardRef(
694
694
  (_a, ref) => {
695
695
  var _b = _a, {
696
696
  children,
@@ -719,7 +719,7 @@ var ContextMenuContent = React38__namespace.forwardRef(
719
719
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
720
720
  const colors = variant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
721
721
  const isExpressiveGap = variant === "expressive" && separatorStyle === "gap";
722
- const setViewportNode = React38__namespace.useCallback(
722
+ const setViewportNode = React39__namespace.useCallback(
723
723
  (node) => {
724
724
  if (typeof viewportRef === "function") {
725
725
  viewportRef(node);
@@ -730,7 +730,7 @@ var ContextMenuContent = React38__namespace.forwardRef(
730
730
  },
731
731
  [viewportRef, onViewportRef]
732
732
  );
733
- const containerClassName = React38__namespace.useMemo(
733
+ const containerClassName = React39__namespace.useMemo(
734
734
  () => variant === "expressive" ? cn(
735
735
  "z-50 flex flex-col w-full",
736
736
  MENU_MIN_WIDTH,
@@ -757,12 +757,12 @@ var ContextMenuContent = React38__namespace.forwardRef(
757
757
  ),
758
758
  [variant, isExpressiveGap, hasOverflow, className, colors.containerBg]
759
759
  );
760
- const renderedChildren = React38__namespace.useMemo(() => {
760
+ const renderedChildren = React39__namespace.useMemo(() => {
761
761
  if (variant !== "expressive") return children;
762
762
  const validChildren = flattenChildren(children);
763
763
  const groupCount = validChildren.length;
764
764
  const enhanced = validChildren.map(
765
- (child, i) => React38__namespace.cloneElement(
765
+ (child, i) => React39__namespace.cloneElement(
766
766
  child,
767
767
  { index: i, count: groupCount, isGapVariant: isExpressiveGap }
768
768
  )
@@ -831,12 +831,12 @@ function Menu(_a) {
831
831
  ]);
832
832
  var _a2;
833
833
  const resolvedVariant = (_a2 = variant != null ? variant : menuVariant) != null ? _a2 : "baseline";
834
- const [internalOpen, setInternalOpen] = React38__namespace.useState(
834
+ const [internalOpen, setInternalOpen] = React39__namespace.useState(
835
835
  () => defaultOpen != null ? defaultOpen : false
836
836
  );
837
837
  const isControlled = controlledOpen !== void 0;
838
838
  const open = isControlled ? controlledOpen : internalOpen;
839
- const handleOpenChange = React38__namespace.useCallback(
839
+ const handleOpenChange = React39__namespace.useCallback(
840
840
  (next) => {
841
841
  if (!isControlled) setInternalOpen(next);
842
842
  controlledOnOpenChange == null ? void 0 : controlledOnOpenChange(next);
@@ -864,12 +864,12 @@ function Menu(_a) {
864
864
  );
865
865
  }
866
866
  Menu.displayName = "Menu";
867
- var MenuTrigger = React38__namespace.forwardRef((_a, ref) => {
867
+ var MenuTrigger = React39__namespace.forwardRef((_a, ref) => {
868
868
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
869
869
  return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
870
870
  });
871
871
  MenuTrigger.displayName = "MenuTrigger";
872
- var MenuContent = React38__namespace.forwardRef(
872
+ var MenuContent = React39__namespace.forwardRef(
873
873
  (_a, ref) => {
874
874
  var _b = _a, {
875
875
  children,
@@ -906,7 +906,7 @@ var MenuContent = React38__namespace.forwardRef(
906
906
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
907
907
  const colors = variant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
908
908
  const isExpressiveGap = variant === "expressive" && separatorStyle === "gap";
909
- const setViewportNode = React38__namespace.useCallback(
909
+ const setViewportNode = React39__namespace.useCallback(
910
910
  (node) => {
911
911
  if (typeof viewportRef === "function") {
912
912
  viewportRef(node);
@@ -917,7 +917,7 @@ var MenuContent = React38__namespace.forwardRef(
917
917
  },
918
918
  [viewportRef, onViewportRef]
919
919
  );
920
- const containerClassName = React38__namespace.useMemo(() => {
920
+ const containerClassName = React39__namespace.useMemo(() => {
921
921
  const widthClass = matchTriggerWidth ? "w-[var(--radix-dropdown-menu-trigger-width)]" : cn(MENU_MIN_WIDTH, MENU_MAX_WIDTH);
922
922
  return variant === "expressive" ? cn(
923
923
  "z-50 flex flex-col",
@@ -950,7 +950,7 @@ var MenuContent = React38__namespace.forwardRef(
950
950
  className,
951
951
  colors.containerBg
952
952
  ]);
953
- const renderedChildren = React38__namespace.useMemo(() => {
953
+ const renderedChildren = React39__namespace.useMemo(() => {
954
954
  if (variant !== "expressive") return children;
955
955
  const validChildren = flattenChildren(children);
956
956
  const groupCount = validChildren.length;
@@ -959,7 +959,7 @@ var MenuContent = React38__namespace.forwardRef(
959
959
  if (typeof child.type === "string") return child;
960
960
  const defaultItemPosition = groupCount === 1 ? "standalone" : i === 0 ? "leading" : i === groupCount - 1 ? "trailing" : "middle";
961
961
  const itemPosition = (_a2 = child.props.itemPosition) != null ? _a2 : defaultItemPosition;
962
- return React38__namespace.cloneElement(
962
+ return React39__namespace.cloneElement(
963
963
  child,
964
964
  {
965
965
  index: i,
@@ -1025,7 +1025,7 @@ var MenuContent = React38__namespace.forwardRef(
1025
1025
  }
1026
1026
  );
1027
1027
  MenuContent.displayName = "MenuContent";
1028
- var MenuDivider = React38__namespace.forwardRef(
1028
+ var MenuDivider = React39__namespace.forwardRef(
1029
1029
  (_a, ref) => {
1030
1030
  var _b = _a, { className, isGapVariant: _isGapVariant } = _b, props = __objRest(_b, ["className", "isGapVariant"]);
1031
1031
  const { menuVariant } = useMenuContext();
@@ -1056,7 +1056,7 @@ function getGroupPosition(index, count) {
1056
1056
  function getGroupActiveShape(position) {
1057
1057
  return GROUP_SHAPES[`${position}Active`];
1058
1058
  }
1059
- var MenuGroup = React38__namespace.forwardRef(
1059
+ var MenuGroup = React39__namespace.forwardRef(
1060
1060
  (_a, ref) => {
1061
1061
  var _b = _a, {
1062
1062
  children,
@@ -1082,7 +1082,7 @@ var MenuGroup = React38__namespace.forwardRef(
1082
1082
  const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1083
1083
  const position = getGroupPosition(index, count);
1084
1084
  const currentShape = getGroupActiveShape(position);
1085
- const enhancedChildren = React38__namespace.useMemo(() => {
1085
+ const enhancedChildren = React39__namespace.useMemo(() => {
1086
1086
  const valid = flattenChildren(children);
1087
1087
  const itemCount = valid.length;
1088
1088
  return valid.map((child, i) => {
@@ -1090,7 +1090,7 @@ var MenuGroup = React38__namespace.forwardRef(
1090
1090
  if (typeof child.type === "string") return child;
1091
1091
  const defaultItemPosition = itemCount === 1 ? "standalone" : i === 0 ? "leading" : i === itemCount - 1 ? "trailing" : "middle";
1092
1092
  const itemPosition2 = (_a2 = child.props.itemPosition) != null ? _a2 : defaultItemPosition;
1093
- return React38__namespace.cloneElement(child, {
1093
+ return React39__namespace.cloneElement(child, {
1094
1094
  itemPosition: itemPosition2,
1095
1095
  colorVariant
1096
1096
  });
@@ -1153,7 +1153,7 @@ var VARIANT_FONT = {
1153
1153
  rounded: "'Material Symbols Rounded'",
1154
1154
  sharp: "'Material Symbols Sharp'"
1155
1155
  };
1156
- var IconComponent = React38__namespace.forwardRef(
1156
+ var IconComponent = React39__namespace.forwardRef(
1157
1157
  (_a, ref) => {
1158
1158
  var _b = _a, {
1159
1159
  name,
@@ -1219,14 +1219,14 @@ var IconComponent = React38__namespace.forwardRef(
1219
1219
  }
1220
1220
  );
1221
1221
  IconComponent.displayName = "Icon";
1222
- var Icon = React38__namespace.memo(IconComponent);
1222
+ var Icon = React39__namespace.memo(IconComponent);
1223
1223
  function getItemShapeClass(position, selected, isStatic = false, menuVariant = "expressive") {
1224
1224
  if (menuVariant === "baseline") return BASELINE_ITEM_SHAPE;
1225
1225
  if (selected) return ITEM_SHAPE_CLASSES.selected;
1226
1226
  if (isStatic && position === "standalone") return "rounded-[12px]";
1227
1227
  return ITEM_SHAPE_CLASSES[position];
1228
1228
  }
1229
- var MenuItem = React38__namespace.forwardRef(
1229
+ var MenuItem = React39__namespace.forwardRef(
1230
1230
  (_a, ref) => {
1231
1231
  var _b = _a, {
1232
1232
  children,
@@ -1435,31 +1435,31 @@ function SubMenu({
1435
1435
  }) {
1436
1436
  const { colorVariant: contextColorVariant, menuPrimitive } = useMenuContext();
1437
1437
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
1438
- const [open, setOpen] = React38__namespace.useState(false);
1439
- const openTimerRef = React38__namespace.useRef(null);
1440
- const closeTimerRef = React38__namespace.useRef(
1438
+ const [open, setOpen] = React39__namespace.useState(false);
1439
+ const openTimerRef = React39__namespace.useRef(null);
1440
+ const closeTimerRef = React39__namespace.useRef(
1441
1441
  null
1442
1442
  );
1443
- const clearTimers = React38__namespace.useCallback(() => {
1443
+ const clearTimers = React39__namespace.useCallback(() => {
1444
1444
  if (openTimerRef.current) clearTimeout(openTimerRef.current);
1445
1445
  if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
1446
1446
  }, []);
1447
- const handleTriggerPointerEnter = React38__namespace.useCallback(() => {
1447
+ const handleTriggerPointerEnter = React39__namespace.useCallback(() => {
1448
1448
  clearTimers();
1449
1449
  openTimerRef.current = setTimeout(() => setOpen(true), hoverOpenDelay);
1450
1450
  }, [hoverOpenDelay, clearTimers]);
1451
- const handleTriggerPointerLeave = React38__namespace.useCallback(() => {
1451
+ const handleTriggerPointerLeave = React39__namespace.useCallback(() => {
1452
1452
  clearTimers();
1453
1453
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
1454
1454
  }, [hoverCloseDelay, clearTimers]);
1455
- const handleContentPointerEnter = React38__namespace.useCallback(() => {
1455
+ const handleContentPointerEnter = React39__namespace.useCallback(() => {
1456
1456
  clearTimers();
1457
1457
  }, [clearTimers]);
1458
- const handleContentPointerLeave = React38__namespace.useCallback(() => {
1458
+ const handleContentPointerLeave = React39__namespace.useCallback(() => {
1459
1459
  clearTimers();
1460
1460
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
1461
1461
  }, [hoverCloseDelay, clearTimers]);
1462
- React38__namespace.useEffect(() => () => clearTimers(), [clearTimers]);
1462
+ React39__namespace.useEffect(() => () => clearTimers(), [clearTimers]);
1463
1463
  const Sub3 = menuPrimitive === "context" ? RxContextMenu__namespace.Sub : DropdownMenu__namespace.Sub;
1464
1464
  const SubTrigger3 = menuPrimitive === "context" ? RxContextMenu__namespace.SubTrigger : DropdownMenu__namespace.SubTrigger;
1465
1465
  const SubContent3 = menuPrimitive === "context" ? RxContextMenu__namespace.SubContent : DropdownMenu__namespace.SubContent;
@@ -1471,7 +1471,7 @@ function SubMenu({
1471
1471
  className: "w-full outline-none",
1472
1472
  onPointerEnter: handleTriggerPointerEnter,
1473
1473
  onPointerLeave: handleTriggerPointerLeave,
1474
- children: React38__namespace.isValidElement(trigger) ? React38__namespace.cloneElement(trigger, {
1474
+ children: React39__namespace.isValidElement(trigger) ? React39__namespace.cloneElement(trigger, {
1475
1475
  isSubTrigger: true,
1476
1476
  // Auto-add chevron if missing
1477
1477
  trailingIcon: trigger.props.trailingIcon || /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron_right", size: 20 })
@@ -1548,7 +1548,7 @@ function SubMenuContent({
1548
1548
  );
1549
1549
  }
1550
1550
  SubMenuContent.displayName = "SubMenuContent";
1551
- var VerticalMenuDivider = React38__namespace.forwardRef((_a, ref) => {
1551
+ var VerticalMenuDivider = React39__namespace.forwardRef((_a, ref) => {
1552
1552
  var _b = _a, { className, index, count, isGapVariant } = _b, props = __objRest(_b, ["className", "index", "count", "isGapVariant"]);
1553
1553
  return /* @__PURE__ */ jsxRuntime.jsx(
1554
1554
  "hr",
@@ -1568,7 +1568,7 @@ var VerticalMenuDivider = React38__namespace.forwardRef((_a, ref) => {
1568
1568
  });
1569
1569
  VerticalMenuDivider.displayName = "VerticalMenuDivider";
1570
1570
  var VerticalMenuGroup = MenuGroup;
1571
- var VerticalMenuContent = React38__namespace.forwardRef(
1571
+ var VerticalMenuContent = React39__namespace.forwardRef(
1572
1572
  (_a, ref) => {
1573
1573
  var _b = _a, {
1574
1574
  children,
@@ -1584,7 +1584,7 @@ var VerticalMenuContent = React38__namespace.forwardRef(
1584
1584
  const { colorVariant: contextColorVariant } = useMenuContext();
1585
1585
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
1586
1586
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1587
- const renderedChildren = React38__namespace.useMemo(() => {
1587
+ const renderedChildren = React39__namespace.useMemo(() => {
1588
1588
  const valid = flattenChildren(children);
1589
1589
  const groupCount = valid.length;
1590
1590
  const enhanced = valid.map((child, i) => {
@@ -1592,7 +1592,7 @@ var VerticalMenuContent = React38__namespace.forwardRef(
1592
1592
  if (typeof child.type === "string") return child;
1593
1593
  const defaultItemPosition = groupCount === 1 ? "standalone" : i === 0 ? "leading" : i === groupCount - 1 ? "trailing" : "middle";
1594
1594
  const itemPosition = (_a2 = child.props.itemPosition) != null ? _a2 : defaultItemPosition;
1595
- return React38__namespace.cloneElement(
1595
+ return React39__namespace.cloneElement(
1596
1596
  child,
1597
1597
  {
1598
1598
  index: i,
@@ -1635,13 +1635,13 @@ var VerticalMenuContent = React38__namespace.forwardRef(
1635
1635
  }
1636
1636
  );
1637
1637
  VerticalMenuContent.displayName = "VerticalMenuContent";
1638
- var VerticalMenu = React38__namespace.forwardRef((_a, ref) => {
1638
+ var VerticalMenu = React39__namespace.forwardRef((_a, ref) => {
1639
1639
  var _b = _a, { children, colorVariant = "standard", className } = _b, props = __objRest(_b, ["children", "colorVariant", "className"]);
1640
- const noop = React38__namespace.useCallback(() => {
1640
+ const noop = React39__namespace.useCallback(() => {
1641
1641
  }, []);
1642
1642
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1643
- const containerRef = React38__namespace.useRef(null);
1644
- const mergedRef = React38__namespace.useCallback(
1643
+ const containerRef = React39__namespace.useRef(null);
1644
+ const mergedRef = React39__namespace.useCallback(
1645
1645
  (node) => {
1646
1646
  containerRef.current = node;
1647
1647
  if (typeof ref === "function") ref(node);
@@ -1650,7 +1650,7 @@ var VerticalMenu = React38__namespace.forwardRef((_a, ref) => {
1650
1650
  },
1651
1651
  [ref]
1652
1652
  );
1653
- const handleKeyDown = React38__namespace.useCallback(
1653
+ const handleKeyDown = React39__namespace.useCallback(
1654
1654
  (e) => {
1655
1655
  var _a2;
1656
1656
  if (!containerRef.current) return;
@@ -1733,7 +1733,7 @@ var VerticalMenu = React38__namespace.forwardRef((_a, ref) => {
1733
1733
  });
1734
1734
  VerticalMenu.displayName = "VerticalMenu";
1735
1735
  function detectSeparatorStyle(children) {
1736
- const child = React38__namespace.Children.toArray(children).find(React38__namespace.isValidElement);
1736
+ const child = React39__namespace.Children.toArray(children).find(React39__namespace.isValidElement);
1737
1737
  if (child) {
1738
1738
  const style = child.props.separatorStyle;
1739
1739
  if (style) return style;
@@ -1814,11 +1814,11 @@ function AppBarColumn({
1814
1814
  maxItemCount,
1815
1815
  className
1816
1816
  }) {
1817
- const containerRef = React38__namespace.useRef(null);
1818
- const [visibleCount, setVisibleCount] = React38__namespace.useState(
1817
+ const containerRef = React39__namespace.useRef(null);
1818
+ const [visibleCount, setVisibleCount] = React39__namespace.useState(
1819
1819
  maxItemCount != null ? maxItemCount : items.length
1820
1820
  );
1821
- React38__namespace.useEffect(() => {
1821
+ React39__namespace.useEffect(() => {
1822
1822
  if (maxItemCount !== void 0) {
1823
1823
  setVisibleCount(Math.min(maxItemCount, items.length));
1824
1824
  return;
@@ -1866,11 +1866,11 @@ function AppBarColumn({
1866
1866
  );
1867
1867
  }
1868
1868
  function AppBarRow({ items, maxItemCount, className }) {
1869
- const containerRef = React38__namespace.useRef(null);
1870
- const [visibleCount, setVisibleCount] = React38__namespace.useState(
1869
+ const containerRef = React39__namespace.useRef(null);
1870
+ const [visibleCount, setVisibleCount] = React39__namespace.useState(
1871
1871
  maxItemCount != null ? maxItemCount : items.length
1872
1872
  );
1873
- React38__namespace.useEffect(() => {
1873
+ React39__namespace.useEffect(() => {
1874
1874
  if (maxItemCount !== void 0) {
1875
1875
  setVisibleCount(Math.min(maxItemCount, items.length));
1876
1876
  return;
@@ -1924,12 +1924,12 @@ function useAppBarScroll({
1924
1924
  collapsedHeight = 64,
1925
1925
  expandedHeight = 112
1926
1926
  } = {}) {
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);
1927
+ const [isScrolled, setIsScrolled] = React39__namespace.useState(false);
1928
+ const [collapsedFraction, setCollapsedFraction] = React39__namespace.useState(0);
1929
+ const [isHidden, setIsHidden] = React39__namespace.useState(false);
1930
+ const prevScrollYRef = React39__namespace.useRef(0);
1931
1931
  const hideThreshold = 64;
1932
- React38__namespace.useEffect(() => {
1932
+ React39__namespace.useEffect(() => {
1933
1933
  var _a;
1934
1934
  const scrollDistance = expandedHeight - collapsedHeight;
1935
1935
  const getScrollY = () => {
@@ -2064,7 +2064,7 @@ function useFlexibleAppBar({
2064
2064
  expandedHeight
2065
2065
  });
2066
2066
  const scrollProgress = react.useMotionValue(0);
2067
- React38__namespace.useEffect(() => {
2067
+ React39__namespace.useEffect(() => {
2068
2068
  scrollProgress.set(
2069
2069
  shouldReduceMotion ? collapsedFraction > 0.5 ? 1 : 0 : collapsedFraction
2070
2070
  );
@@ -2442,7 +2442,7 @@ function SearchAppBar({
2442
2442
  }) {
2443
2443
  var _a, _b;
2444
2444
  const shouldReduceMotion = react.useReducedMotion();
2445
- const [isSearchOpen, setIsSearchOpen] = React38__namespace.useState(false);
2445
+ const [isSearchOpen, setIsSearchOpen] = React39__namespace.useState(false);
2446
2446
  const { isScrolled } = useAppBarScroll({
2447
2447
  scrollElement,
2448
2448
  behavior: scrollBehavior === "exitUntilCollapsed" ? "pinned" : scrollBehavior
@@ -2583,8 +2583,8 @@ function SearchView({
2583
2583
  className
2584
2584
  }) {
2585
2585
  const shouldReduceMotion = react.useReducedMotion();
2586
- const inputRef = React38__namespace.useRef(null);
2587
- React38__namespace.useEffect(() => {
2586
+ const inputRef = React39__namespace.useRef(null);
2587
+ React39__namespace.useEffect(() => {
2588
2588
  const timer = window.setTimeout(() => {
2589
2589
  var _a;
2590
2590
  (_a = inputRef.current) == null ? void 0 : _a.focus();
@@ -2875,7 +2875,7 @@ function SmallAppBar({
2875
2875
  "small-app-bar"
2876
2876
  ) });
2877
2877
  }
2878
- var RippleItem = React38__namespace.memo(function RippleItem2({
2878
+ var RippleItem = React39__namespace.memo(function RippleItem2({
2879
2879
  ripple,
2880
2880
  onDone
2881
2881
  }) {
@@ -2919,8 +2919,8 @@ function Ripple({
2919
2919
  }
2920
2920
  function useRippleState(options = {}) {
2921
2921
  const { disabled = false } = options;
2922
- const [ripples, setRipples] = React38__namespace.useState([]);
2923
- const onPointerDown = React38__namespace.useCallback(
2922
+ const [ripples, setRipples] = React39__namespace.useState([]);
2923
+ const onPointerDown = React39__namespace.useCallback(
2924
2924
  (e) => {
2925
2925
  if (disabled) return;
2926
2926
  const rect = e.currentTarget.getBoundingClientRect();
@@ -2937,7 +2937,7 @@ function useRippleState(options = {}) {
2937
2937
  },
2938
2938
  [disabled]
2939
2939
  );
2940
- const removeRipple = React38__namespace.useCallback((id) => {
2940
+ const removeRipple = React39__namespace.useCallback((id) => {
2941
2941
  setRipples((prev) => prev.filter((r) => r.id !== id));
2942
2942
  }, []);
2943
2943
  return { ripples, onPointerDown, removeRipple };
@@ -3650,8 +3650,8 @@ var RoundedPolygon = class _RoundedPolygon {
3650
3650
  );
3651
3651
  const mid = c.pointOnCurve(0.5);
3652
3652
  const md = distanceSquared(mid.x - this.centerX, mid.y - this.centerY);
3653
- const m31 = Math.max(ad, md);
3654
- if (m31 > maxDistSq) maxDistSq = m31;
3653
+ const m33 = Math.max(ad, md);
3654
+ if (m33 > maxDistSq) maxDistSq = m33;
3655
3655
  }
3656
3656
  const d = Math.sqrt(maxDistSq);
3657
3657
  return [
@@ -4867,11 +4867,11 @@ function getNavigationShapeStyle(shape, width = 56, height = 56) {
4867
4867
  function isSquareShape(shape) {
4868
4868
  return Boolean(shape && shape !== "pill");
4869
4869
  }
4870
- var NavigationBarContext = React38__namespace.createContext({ variant: "flexible" });
4870
+ var NavigationBarContext = React39__namespace.createContext({ variant: "flexible" });
4871
4871
  function cloneIconWithFill(icon, selected) {
4872
- if (!React38__namespace.isValidElement(icon)) return icon;
4872
+ if (!React39__namespace.isValidElement(icon)) return icon;
4873
4873
  if (icon.type === Icon) {
4874
- return React38__namespace.cloneElement(
4874
+ return React39__namespace.cloneElement(
4875
4875
  icon,
4876
4876
  { fill: selected ? 1 : 0, animateFill: true }
4877
4877
  );
@@ -4883,7 +4883,7 @@ function ActivePill({
4883
4883
  width = 56,
4884
4884
  height = 32
4885
4885
  }) {
4886
- const { activeIndicatorTransition } = React38__namespace.useContext(NavigationBarContext);
4886
+ const { activeIndicatorTransition } = React39__namespace.useContext(NavigationBarContext);
4887
4887
  const shapeStyle = getNavigationShapeStyle(shape, width, height);
4888
4888
  return /* @__PURE__ */ jsxRuntime.jsx(
4889
4889
  react.m.div,
@@ -4955,7 +4955,7 @@ function IconContainer({ selected, badge, children }) {
4955
4955
  }
4956
4956
  );
4957
4957
  }
4958
- var NavigationBarItemComponent = React38__namespace.forwardRef(
4958
+ var NavigationBarItemComponent = React39__namespace.forwardRef(
4959
4959
  ({
4960
4960
  selected,
4961
4961
  icon,
@@ -4979,7 +4979,7 @@ var NavigationBarItemComponent = React38__namespace.forwardRef(
4979
4979
  labelVisibility: contextLabelVisibility,
4980
4980
  shapeSize: contextShapeSize,
4981
4981
  itemClassName: contextItemClassName
4982
- } = React38__namespace.useContext(NavigationBarContext);
4982
+ } = React39__namespace.useContext(NavigationBarContext);
4983
4983
  const activeShape = (_a = shapeProp != null ? shapeProp : contextShape) != null ? _a : "pill";
4984
4984
  const isSquare = isSquareShape(activeShape);
4985
4985
  const resolvedShapeSize = (_b = shapeSizeProp != null ? shapeSizeProp : contextShapeSize) != null ? _b : 56;
@@ -4993,7 +4993,7 @@ var NavigationBarItemComponent = React38__namespace.forwardRef(
4993
4993
  const { ripples, onPointerDown, removeRipple } = useRippleState({
4994
4994
  disabled
4995
4995
  });
4996
- const handleClick = React38__namespace.useCallback(
4996
+ const handleClick = React39__namespace.useCallback(
4997
4997
  (e) => {
4998
4998
  if (disabled) {
4999
4999
  e.preventDefault();
@@ -5020,7 +5020,7 @@ var NavigationBarItemComponent = React38__namespace.forwardRef(
5020
5020
  const iconPillWidth = isSquare ? resolvedShapeSize : 56;
5021
5021
  const iconPillHeight = isSquare ? resolvedShapeSize : 32;
5022
5022
  if (asChild && children) {
5023
- const child = React38__namespace.Children.only(children);
5023
+ const child = React39__namespace.Children.only(children);
5024
5024
  const innerContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5025
5025
  /* @__PURE__ */ jsxRuntime.jsxs(
5026
5026
  "div",
@@ -5145,7 +5145,7 @@ var NavigationBarItemComponent = React38__namespace.forwardRef(
5145
5145
  onClick: handleClick,
5146
5146
  onPointerDown,
5147
5147
  className: itemClassName,
5148
- children: React38__namespace.cloneElement(child, { children: innerContent })
5148
+ children: React39__namespace.cloneElement(child, { children: innerContent })
5149
5149
  }
5150
5150
  );
5151
5151
  }
@@ -5279,7 +5279,7 @@ var NavigationBarItemComponent = React38__namespace.forwardRef(
5279
5279
  }
5280
5280
  );
5281
5281
  NavigationBarItemComponent.displayName = "NavigationBarItem";
5282
- var NavigationBarItem = React38__namespace.memo(NavigationBarItemComponent);
5282
+ var NavigationBarItem = React39__namespace.memo(NavigationBarItemComponent);
5283
5283
  var navContainerVariants = classVarianceAuthority.cva(
5284
5284
  "flex items-center justify-center select-none transition-transform duration-300 z-50",
5285
5285
  {
@@ -5305,7 +5305,7 @@ var navContainerVariants = classVarianceAuthority.cva(
5305
5305
  }
5306
5306
  }
5307
5307
  );
5308
- var NavigationBarComponent = React38__namespace.forwardRef(
5308
+ var NavigationBarComponent = React39__namespace.forwardRef(
5309
5309
  ({
5310
5310
  variant = "flexible",
5311
5311
  itemLayout,
@@ -5322,18 +5322,18 @@ var NavigationBarComponent = React38__namespace.forwardRef(
5322
5322
  className,
5323
5323
  style
5324
5324
  }, ref) => {
5325
- const [isVisible, setIsVisible] = React38__namespace.useState(true);
5326
- const lastScrollY = React38__namespace.useRef(
5325
+ const [isVisible, setIsVisible] = React39__namespace.useState(true);
5326
+ const lastScrollY = React39__namespace.useRef(
5327
5327
  typeof window !== "undefined" ? window.scrollY : 0
5328
5328
  );
5329
5329
  const isSquare = isSquareShape(shape);
5330
5330
  const effectiveShapeSize = shapeSize != null ? shapeSize : isSquare ? 56 : 32;
5331
- const computedMinHeight = React38__namespace.useMemo(() => {
5331
+ const computedMinHeight = React39__namespace.useMemo(() => {
5332
5332
  const baseHeight = variant === "baseline" ? 80 : 64;
5333
5333
  const requiredHeight = itemLayout === "horizontal" || labelVisibility === "unlabeled" ? effectiveShapeSize + 16 : effectiveShapeSize + 32;
5334
5334
  return Math.max(baseHeight, requiredHeight);
5335
5335
  }, [variant, itemLayout, labelVisibility, effectiveShapeSize]);
5336
- React38__namespace.useEffect(() => {
5336
+ React39__namespace.useEffect(() => {
5337
5337
  if (typeof window === "undefined" || !hideOnScroll) {
5338
5338
  setIsVisible(true);
5339
5339
  return;
@@ -5417,8 +5417,8 @@ var NavigationBarComponent = React38__namespace.forwardRef(
5417
5417
  }
5418
5418
  );
5419
5419
  NavigationBarComponent.displayName = "NavigationBar";
5420
- var NavigationBar = React38__namespace.memo(NavigationBarComponent);
5421
- var NavigationRailContext = React38__namespace.createContext({
5420
+ var NavigationBar = React39__namespace.memo(NavigationBarComponent);
5421
+ var NavigationRailContext = React39__namespace.createContext({
5422
5422
  variant: "collapsed",
5423
5423
  labelVisibility: "labeled",
5424
5424
  activeIndicatorWidth: "hug"
@@ -5454,9 +5454,9 @@ var railContainerVariants = classVarianceAuthority.cva(
5454
5454
  }
5455
5455
  );
5456
5456
  function cloneIconWithFill2(icon, selected) {
5457
- if (!React38__namespace.isValidElement(icon)) return icon;
5457
+ if (!React39__namespace.isValidElement(icon)) return icon;
5458
5458
  if (icon.type === Icon) {
5459
- return React38__namespace.cloneElement(
5459
+ return React39__namespace.cloneElement(
5460
5460
  icon,
5461
5461
  { fill: selected ? 1 : 0, animateFill: true }
5462
5462
  );
@@ -5485,7 +5485,7 @@ function ActivePill2({
5485
5485
  width = 56,
5486
5486
  height = 32
5487
5487
  }) {
5488
- const { activeIndicatorTransition } = React38__namespace.useContext(NavigationRailContext);
5488
+ const { activeIndicatorTransition } = React39__namespace.useContext(NavigationRailContext);
5489
5489
  const shapeStyle = getNavigationShapeStyle(shape, width, height);
5490
5490
  return /* @__PURE__ */ jsxRuntime.jsx(
5491
5491
  react.m.div,
@@ -5560,7 +5560,7 @@ function IconContainer2({ selected, badge, children }) {
5560
5560
  }
5561
5561
  );
5562
5562
  }
5563
- var NavigationRailItemComponent = React38__namespace.forwardRef(
5563
+ var NavigationRailItemComponent = React39__namespace.forwardRef(
5564
5564
  ({
5565
5565
  selected,
5566
5566
  icon,
@@ -5583,7 +5583,7 @@ var NavigationRailItemComponent = React38__namespace.forwardRef(
5583
5583
  shape: contextShape,
5584
5584
  shapeSize: contextShapeSize,
5585
5585
  activeIndicatorWidth: contextActiveIndicatorWidth
5586
- } = React38__namespace.useContext(NavigationRailContext);
5586
+ } = React39__namespace.useContext(NavigationRailContext);
5587
5587
  const activeShape = (_a = shapeProp != null ? shapeProp : contextShape) != null ? _a : "pill";
5588
5588
  const isSquare = isSquareShape(activeShape);
5589
5589
  const resolvedShapeSize = (_b = shapeSizeProp != null ? shapeSizeProp : contextShapeSize) != null ? _b : 56;
@@ -5593,12 +5593,12 @@ var NavigationRailItemComponent = React38__namespace.forwardRef(
5593
5593
  const enableLayout = !isModal;
5594
5594
  const isExpandedPill = isExpanded && !isSquare;
5595
5595
  const expandedPillWidthClass = activeIndicatorWidth === "fill" ? "w-full" : "w-fit";
5596
- const activePillId = `rail-pill-${React38__namespace.useId()}`;
5596
+ const activePillId = `rail-pill-${React39__namespace.useId()}`;
5597
5597
  const { ripples, onPointerDown, removeRipple } = useRippleState({
5598
5598
  disabled
5599
5599
  });
5600
5600
  const showLabel = isExpanded || labelVisibility === "labeled" || labelVisibility === "auto" && selected;
5601
- const handleClick = React38__namespace.useCallback(
5601
+ const handleClick = React39__namespace.useCallback(
5602
5602
  (e) => {
5603
5603
  if (disabled) {
5604
5604
  e.preventDefault();
@@ -5620,7 +5620,7 @@ var NavigationRailItemComponent = React38__namespace.forwardRef(
5620
5620
  const iconPillWidth = isSquare ? resolvedShapeSize : 56;
5621
5621
  const iconPillHeight = isSquare ? resolvedShapeSize : 32;
5622
5622
  if (asChild && children) {
5623
- const child = React38__namespace.Children.only(children);
5623
+ const child = React39__namespace.Children.only(children);
5624
5624
  const innerContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5625
5625
  /* @__PURE__ */ jsxRuntime.jsxs(
5626
5626
  react.m.div,
@@ -5738,7 +5738,7 @@ var NavigationRailItemComponent = React38__namespace.forwardRef(
5738
5738
  onPointerDown,
5739
5739
  className: itemClassName,
5740
5740
  tabIndex: -1,
5741
- children: React38__namespace.cloneElement(child, { children: innerContent })
5741
+ children: React39__namespace.cloneElement(child, { children: innerContent })
5742
5742
  }
5743
5743
  ) });
5744
5744
  }
@@ -5866,9 +5866,9 @@ var NavigationRailItemComponent = React38__namespace.forwardRef(
5866
5866
  }
5867
5867
  );
5868
5868
  NavigationRailItemComponent.displayName = "NavigationRailItem";
5869
- var NavigationRailItem = React38__namespace.memo(NavigationRailItemComponent);
5869
+ var NavigationRailItem = React39__namespace.memo(NavigationRailItemComponent);
5870
5870
  function useRoving(navRef) {
5871
- React38__namespace.useEffect(() => {
5871
+ React39__namespace.useEffect(() => {
5872
5872
  if (!navRef.current) return;
5873
5873
  const items = getMenuItems(navRef.current);
5874
5874
  const selected = items.find(
@@ -5878,7 +5878,7 @@ function useRoving(navRef) {
5878
5878
  const firstFocusable = selected != null ? selected : items[0];
5879
5879
  if (firstFocusable) firstFocusable.tabIndex = 0;
5880
5880
  }, [navRef]);
5881
- return React38__namespace.useCallback(
5881
+ return React39__namespace.useCallback(
5882
5882
  (e) => {
5883
5883
  if (!navRef.current) return;
5884
5884
  const items = getMenuItems(navRef.current);
@@ -5906,7 +5906,7 @@ function useRoving(navRef) {
5906
5906
  [navRef]
5907
5907
  );
5908
5908
  }
5909
- var NavigationRailComponent = React38__namespace.forwardRef(
5909
+ var NavigationRailComponent = React39__namespace.forwardRef(
5910
5910
  ({
5911
5911
  variant = "collapsed",
5912
5912
  labelVisibility = "labeled",
@@ -5930,9 +5930,9 @@ var NavigationRailComponent = React38__namespace.forwardRef(
5930
5930
  const isXr = variant === "xr";
5931
5931
  const isSpatial = isXr && fabPlacement === "spatialized";
5932
5932
  const applyAnimation = !isXr || !isSpatial;
5933
- const navRef = React38__namespace.useRef(null);
5933
+ const navRef = React39__namespace.useRef(null);
5934
5934
  const handleKeyDown = useRoving(navRef);
5935
- const setRefs = React38__namespace.useCallback(
5935
+ const setRefs = React39__namespace.useCallback(
5936
5936
  (node) => {
5937
5937
  navRef.current = node;
5938
5938
  if (typeof ref === "function") ref(node);
@@ -6025,7 +6025,7 @@ var NavigationRailComponent = React38__namespace.forwardRef(
6025
6025
  children: fab
6026
6026
  }
6027
6027
  ),
6028
- React38__namespace.cloneElement(
6028
+ React39__namespace.cloneElement(
6029
6029
  navElement,
6030
6030
  {
6031
6031
  className: cn(navBaseClasses, "pointer-events-auto")
@@ -6070,7 +6070,7 @@ var NavigationRailComponent = React38__namespace.forwardRef(
6070
6070
  }
6071
6071
  );
6072
6072
  NavigationRailComponent.displayName = "NavigationRail";
6073
- var NavigationRail = React38__namespace.memo(NavigationRailComponent);
6073
+ var NavigationRail = React39__namespace.memo(NavigationRailComponent);
6074
6074
  function useSearchKeyboard({
6075
6075
  active,
6076
6076
  onActiveChange,
@@ -6079,14 +6079,14 @@ function useSearchKeyboard({
6079
6079
  itemCount,
6080
6080
  onSelectSuggestion
6081
6081
  }) {
6082
- const [activeIndex, setActiveIndex] = React38__namespace.useState(-1);
6083
- const resetKeyRef = React38__namespace.useRef(`${active}:${query}`);
6082
+ const [activeIndex, setActiveIndex] = React39__namespace.useState(-1);
6083
+ const resetKeyRef = React39__namespace.useRef(`${active}:${query}`);
6084
6084
  const currentKey = `${active}:${query}`;
6085
6085
  if (resetKeyRef.current !== currentKey) {
6086
6086
  resetKeyRef.current = currentKey;
6087
6087
  setActiveIndex(-1);
6088
6088
  }
6089
- const handleKeyDown = React38__namespace.useCallback(
6089
+ const handleKeyDown = React39__namespace.useCallback(
6090
6090
  (e) => {
6091
6091
  if (!active) return;
6092
6092
  switch (e.key) {
@@ -6126,11 +6126,39 @@ function useSearchKeyboard({
6126
6126
  query
6127
6127
  ]
6128
6128
  );
6129
- const resetActiveIndex = React38__namespace.useCallback(() => {
6129
+ const resetActiveIndex = React39__namespace.useCallback(() => {
6130
6130
  setActiveIndex(-1);
6131
6131
  }, []);
6132
6132
  return { activeIndex, handleKeyDown, resetActiveIndex };
6133
6133
  }
6134
+ var StateLayer = React39__namespace.forwardRef(
6135
+ (_a, ref) => {
6136
+ var _b = _a, { className, hovered, focused, pressed } = _b, props = __objRest(_b, ["className", "hovered", "focused", "pressed"]);
6137
+ let opacity = 0;
6138
+ if (pressed) {
6139
+ opacity = 0.12;
6140
+ } else if (focused) {
6141
+ opacity = 0.1;
6142
+ } else if (hovered) {
6143
+ opacity = 0.08;
6144
+ }
6145
+ return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
6146
+ react.m.div,
6147
+ __spreadValues({
6148
+ ref,
6149
+ className: cn(
6150
+ "absolute inset-0 bg-current pointer-events-none rounded-[inherit]",
6151
+ className
6152
+ ),
6153
+ initial: false,
6154
+ animate: { opacity },
6155
+ transition: { duration: 0.2 },
6156
+ "aria-hidden": "true"
6157
+ }, props)
6158
+ ) });
6159
+ }
6160
+ );
6161
+ StateLayer.displayName = "StateLayer";
6134
6162
 
6135
6163
  // src/ui/search/search.tokens.ts
6136
6164
  var SearchTokens = {
@@ -6169,7 +6197,12 @@ var SEARCH_COLORS = {
6169
6197
  /** SearchViewTokens.DividerColor → outline */
6170
6198
  divider: "var(--md-sys-color-outline)",
6171
6199
  /** Focus indicator → secondary */
6172
- focusIndicator: "var(--md-sys-color-secondary)"
6200
+ focusIndicator: "var(--md-sys-color-secondary)",
6201
+ /** State layer overlay for interactive hover/press */
6202
+ stateLayer: "var(--md-sys-color-on-surface)"
6203
+ };
6204
+ var SEARCH_ELEVATION = {
6205
+ level3: "elevation-3"
6173
6206
  };
6174
6207
  var SEARCH_TYPOGRAPHY = {
6175
6208
  /** BodyLarge — used for input text and placeholder. */
@@ -6194,10 +6227,10 @@ function AnimatedPlaceholder({
6194
6227
  className
6195
6228
  }) {
6196
6229
  const shouldReduceMotion = react.useReducedMotion();
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(() => {
6230
+ const containerRef = React39__namespace.useRef(null);
6231
+ const spanRef = React39__namespace.useRef(null);
6232
+ const [xOffset, setXOffset] = React39__namespace.useState(0);
6233
+ const recalculate = React39__namespace.useCallback(() => {
6201
6234
  const container = containerRef.current;
6202
6235
  const span = spanRef.current;
6203
6236
  if (!container || !span || textAlign === "left") {
@@ -6212,10 +6245,10 @@ function AnimatedPlaceholder({
6212
6245
  setXOffset(Math.max(0, containerWidth - textWidth));
6213
6246
  }
6214
6247
  }, [textAlign]);
6215
- React38__namespace.useLayoutEffect(() => {
6248
+ React39__namespace.useLayoutEffect(() => {
6216
6249
  recalculate();
6217
6250
  }, [recalculate]);
6218
- React38__namespace.useEffect(() => {
6251
+ React39__namespace.useEffect(() => {
6219
6252
  const container = containerRef.current;
6220
6253
  if (!container) return;
6221
6254
  const observer = new ResizeObserver(recalculate);
@@ -6274,6 +6307,7 @@ function SearchBar({
6274
6307
  onActiveChange,
6275
6308
  leadingIcon,
6276
6309
  trailingIcon,
6310
+ avatar,
6277
6311
  placeholder = "Search",
6278
6312
  textAlign = "left",
6279
6313
  className,
@@ -6284,10 +6318,13 @@ function SearchBar({
6284
6318
  activeIndex
6285
6319
  }) {
6286
6320
  const shouldReduceMotion = react.useReducedMotion();
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(() => {
6321
+ const inputRef = React39__namespace.useRef(null);
6322
+ const prevActiveRef = React39__namespace.useRef(active);
6323
+ const isRestoringFocusRef = React39__namespace.useRef(false);
6324
+ const [isHovered, setIsHovered] = React39__namespace.useState(false);
6325
+ const [isPressed, setIsPressed] = React39__namespace.useState(false);
6326
+ const [isFocused, setIsFocused] = React39__namespace.useState(false);
6327
+ React39__namespace.useEffect(() => {
6291
6328
  var _a;
6292
6329
  let rafId;
6293
6330
  if (prevActiveRef.current === true && active === false) {
@@ -6303,10 +6340,14 @@ function SearchBar({
6303
6340
  };
6304
6341
  }, [active]);
6305
6342
  const handleFocus = () => {
6343
+ setIsFocused(true);
6306
6344
  if (!active && !isRestoringFocusRef.current) {
6307
6345
  onActiveChange(true);
6308
6346
  }
6309
6347
  };
6348
+ const handleBlur = () => {
6349
+ setIsFocused(false);
6350
+ };
6310
6351
  const handleFormSubmit = (e) => {
6311
6352
  e.preventDefault();
6312
6353
  onSearch(query);
@@ -6325,18 +6366,39 @@ function SearchBar({
6325
6366
  layout: !shouldReduceMotion,
6326
6367
  layoutId: shouldReduceMotion ? void 0 : searchId,
6327
6368
  transition: shouldReduceMotion ? void 0 : SEARCH_BAR_EXPAND_SPRING,
6328
- className: cn("relative", className),
6369
+ className: cn(
6370
+ "relative group select-none",
6371
+ SEARCH_ELEVATION.level3,
6372
+ className
6373
+ ),
6329
6374
  style: { height: SearchTokens.heights.bar },
6330
6375
  initial: shouldReduceMotion ? false : { opacity: 0, scale: 0.95 },
6331
6376
  animate: { opacity: 1, scale: 1 },
6332
6377
  exit: shouldReduceMotion ? {} : { opacity: 0, scale: 0.95, transition: SEARCH_BAR_EXIT_SPRING },
6378
+ onPointerEnter: () => setIsHovered(true),
6379
+ onPointerLeave: () => {
6380
+ setIsHovered(false);
6381
+ setIsPressed(false);
6382
+ },
6383
+ onPointerDown: () => setIsPressed(true),
6384
+ onPointerUp: () => setIsPressed(false),
6385
+ onPointerCancel: () => setIsPressed(false),
6333
6386
  children: [
6334
6387
  /* @__PURE__ */ jsxRuntime.jsx(
6335
6388
  "div",
6336
6389
  {
6337
- className: "absolute inset-0 rounded-full",
6390
+ className: "absolute inset-0 rounded-full overflow-hidden",
6338
6391
  style: { backgroundColor: SEARCH_COLORS.container },
6339
- "aria-hidden": "true"
6392
+ "aria-hidden": "true",
6393
+ children: /* @__PURE__ */ jsxRuntime.jsx(
6394
+ StateLayer,
6395
+ {
6396
+ hovered: isHovered,
6397
+ focused: isFocused,
6398
+ pressed: isPressed,
6399
+ style: { color: SEARCH_COLORS.stateLayer }
6400
+ }
6401
+ )
6340
6402
  }
6341
6403
  ),
6342
6404
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -6382,21 +6444,36 @@ function SearchBar({
6382
6444
  ),
6383
6445
  style: { color: SEARCH_COLORS.inputText },
6384
6446
  onFocus: handleFocus,
6447
+ onBlur: handleBlur,
6385
6448
  onChange: (e) => onQueryChange(e.target.value),
6386
6449
  onKeyDown
6387
6450
  }
6388
6451
  )
6389
6452
  }
6390
6453
  ),
6391
- trailingIcon && /* @__PURE__ */ jsxRuntime.jsx(
6392
- "span",
6393
- {
6394
- className: "flex shrink-0 items-center justify-center",
6395
- style: { color: SEARCH_COLORS.trailingIcon },
6396
- "aria-hidden": "true",
6397
- children: trailingIcon
6398
- }
6399
- )
6454
+ (trailingIcon || avatar) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
6455
+ trailingIcon && /* @__PURE__ */ jsxRuntime.jsx(
6456
+ "span",
6457
+ {
6458
+ className: "flex shrink-0 items-center justify-center",
6459
+ style: { color: SEARCH_COLORS.trailingIcon },
6460
+ "aria-hidden": "true",
6461
+ children: trailingIcon
6462
+ }
6463
+ ),
6464
+ avatar && /* @__PURE__ */ jsxRuntime.jsx(
6465
+ "span",
6466
+ {
6467
+ className: "flex shrink-0 items-center justify-center rounded-full overflow-hidden",
6468
+ style: {
6469
+ width: SearchTokens.avatarSize,
6470
+ height: SearchTokens.avatarSize
6471
+ },
6472
+ "aria-hidden": "true",
6473
+ children: avatar
6474
+ }
6475
+ )
6476
+ ] })
6400
6477
  ] })
6401
6478
  }
6402
6479
  )
@@ -6406,7 +6483,7 @@ function SearchBar({
6406
6483
  ) })
6407
6484
  );
6408
6485
  }
6409
- var SearchContext = React38__namespace.createContext(null);
6486
+ var SearchContext = React39__namespace.createContext(null);
6410
6487
  function SearchProvider({
6411
6488
  children,
6412
6489
  value
@@ -6414,15 +6491,15 @@ function SearchProvider({
6414
6491
  return /* @__PURE__ */ jsxRuntime.jsx(SearchContext.Provider, { value, children });
6415
6492
  }
6416
6493
  function useSearch() {
6417
- const context = React38__namespace.useContext(SearchContext);
6494
+ const context = React39__namespace.useContext(SearchContext);
6418
6495
  if (!context) {
6419
6496
  return { listboxId: "", activeIndex: -1 };
6420
6497
  }
6421
6498
  return context;
6422
6499
  }
6423
6500
  function useClickOutside(handler, enabled = true) {
6424
- const ref = React38.useRef(null);
6425
- React38.useEffect(() => {
6501
+ const ref = React39.useRef(null);
6502
+ React39.useEffect(() => {
6426
6503
  if (!enabled) return;
6427
6504
  const listener = (event) => {
6428
6505
  const el = ref.current;
@@ -6441,7 +6518,7 @@ function useClickOutside(handler, enabled = true) {
6441
6518
  return ref;
6442
6519
  }
6443
6520
  function useSearchViewFocus(inputRef, active) {
6444
- React38__namespace.useEffect(() => {
6521
+ React39__namespace.useEffect(() => {
6445
6522
  if (!active) return;
6446
6523
  let raf2;
6447
6524
  const raf1 = requestAnimationFrame(() => {
@@ -6501,11 +6578,11 @@ var ROTATE_KEY_SPLINES = [
6501
6578
  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";
6502
6579
  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";
6503
6580
  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";
6504
- var IndeterminateSvg = React38__namespace.memo(function IndeterminateSvg2({
6581
+ var IndeterminateSvg = React39__namespace.memo(function IndeterminateSvg2({
6505
6582
  size
6506
6583
  }) {
6507
- const [ready, setReady] = React38__namespace.useState(false);
6508
- React38__namespace.useEffect(() => {
6584
+ const [ready, setReady] = React39__namespace.useState(false);
6585
+ React39__namespace.useEffect(() => {
6509
6586
  const raf = requestAnimationFrame(() => setReady(true));
6510
6587
  return () => cancelAnimationFrame(raf);
6511
6588
  }, []);
@@ -6550,7 +6627,7 @@ var IndeterminateSvg = React38__namespace.memo(function IndeterminateSvg2({
6550
6627
  }
6551
6628
  );
6552
6629
  });
6553
- var DeterminateSvg = React38__namespace.memo(function DeterminateSvg2({
6630
+ var DeterminateSvg = React39__namespace.memo(function DeterminateSvg2({
6554
6631
  size,
6555
6632
  progress
6556
6633
  }) {
@@ -6575,7 +6652,7 @@ var DeterminateSvg = React38__namespace.memo(function DeterminateSvg2({
6575
6652
  }
6576
6653
  );
6577
6654
  });
6578
- var LoadingIndicator = React38__namespace.forwardRef(
6655
+ var LoadingIndicator = React39__namespace.forwardRef(
6579
6656
  (_a, ref) => {
6580
6657
  var _b = _a, {
6581
6658
  variant = "uncontained",
@@ -6710,7 +6787,7 @@ var ADDITIONAL_ROTATION_EASE_DURATION = 500;
6710
6787
  var DEFAULT_MIN_PROGRESS = 0.1;
6711
6788
  var DEFAULT_MAX_PROGRESS = 0.8;
6712
6789
  var PROGRESS_CYCLE_DURATION = 1500;
6713
- var CircularProgress = React38__namespace.forwardRef(
6790
+ var CircularProgress = React39__namespace.forwardRef(
6714
6791
  (_a, ref) => {
6715
6792
  var _b = _a, {
6716
6793
  value,
@@ -6764,19 +6841,19 @@ var CircularProgress = React38__namespace.forwardRef(
6764
6841
  const shouldShowDeterminateTrack = showTrack === "auto" ? true : showTrack;
6765
6842
  const BASELINE_SIZE = 48;
6766
6843
  const scaleFactor = size / BASELINE_SIZE;
6767
- const effectiveAmplitude = React38__namespace.useMemo(
6844
+ const effectiveAmplitude = React39__namespace.useMemo(
6768
6845
  () => amplitude != null ? amplitude : 1.6 * scaleFactor,
6769
6846
  [amplitude, scaleFactor]
6770
6847
  );
6771
- const effectiveWavelength = React38__namespace.useMemo(
6848
+ const effectiveWavelength = React39__namespace.useMemo(
6772
6849
  () => wavelength != null ? wavelength : 15 * scaleFactor,
6773
6850
  [wavelength, scaleFactor]
6774
6851
  );
6775
- const resolvedAmplitudeRange = React38__namespace.useMemo(
6852
+ const resolvedAmplitudeRange = React39__namespace.useMemo(
6776
6853
  () => amplitudeRange != null ? amplitudeRange : [0, effectiveAmplitude],
6777
6854
  [amplitudeRange, effectiveAmplitude]
6778
6855
  );
6779
- const wavyActivePath = React38__namespace.useMemo(
6856
+ const wavyActivePath = React39__namespace.useMemo(
6780
6857
  () => isWavy ? generateWavyCircularPath(
6781
6858
  center,
6782
6859
  radius,
@@ -6785,8 +6862,8 @@ var CircularProgress = React38__namespace.forwardRef(
6785
6862
  ) : null,
6786
6863
  [isWavy, center, radius, effectiveAmplitude, effectiveWavelength]
6787
6864
  );
6788
- const circumference = React38__namespace.useMemo(() => 2 * Math.PI * radius, [radius]);
6789
- const gapForTrack = React38__namespace.useMemo(
6865
+ const circumference = React39__namespace.useMemo(() => 2 * Math.PI * radius, [radius]);
6866
+ const gapForTrack = React39__namespace.useMemo(
6790
6867
  () => (gapSize + trackHeight) / circumference,
6791
6868
  [gapSize, trackHeight, circumference]
6792
6869
  );
@@ -6794,17 +6871,17 @@ var CircularProgress = React38__namespace.forwardRef(
6794
6871
  const trackOffset = isDeterminate ? activeAngularFraction + gapForTrack : 0;
6795
6872
  const trackLength = isDeterminate ? Math.max(1e-3, 1 - activeAngularFraction - 2 * gapForTrack) : 1;
6796
6873
  const ActiveCircleElem = react.m.circle;
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);
6874
+ const indeterminateSvgRef = React39__namespace.useRef(null);
6875
+ const indeterminateTrackRef = React39__namespace.useRef(null);
6876
+ const indeterminateActiveRef = React39__namespace.useRef(null);
6877
+ const indeterminateWavyTrackPathRef = React39__namespace.useRef(null);
6878
+ const indeterminateWavyActivePathRef = React39__namespace.useRef(null);
6879
+ const determinateWavyActivePathRef = React39__namespace.useRef(null);
6880
+ const determinateWavyTrackPathRef = React39__namespace.useRef(null);
6881
+ const cachedPathLengthRef = React39__namespace.useRef(0);
6805
6882
  const fractionMV = react.useMotionValue(isDeterminate ? clampedValue / 100 : 0);
6806
6883
  const amplitudeMV = react.useMotionValue(isWavy ? effectiveAmplitude : 0);
6807
- React38__namespace.useEffect(() => {
6884
+ React39__namespace.useEffect(() => {
6808
6885
  if (isDeterminate) {
6809
6886
  react.animate(fractionMV, clampedValue / 100, {
6810
6887
  duration: 0.4,
@@ -6812,7 +6889,7 @@ var CircularProgress = React38__namespace.forwardRef(
6812
6889
  });
6813
6890
  }
6814
6891
  }, [clampedValue, isDeterminate, fractionMV]);
6815
- React38__namespace.useEffect(() => {
6892
+ React39__namespace.useEffect(() => {
6816
6893
  if (!isDeterminate || !isWavy) return;
6817
6894
  const fraction = clampedValue / 100;
6818
6895
  let targetAmp = effectiveAmplitude;
@@ -6832,7 +6909,7 @@ var CircularProgress = React38__namespace.forwardRef(
6832
6909
  amplitudeMV,
6833
6910
  determinateAnimation
6834
6911
  ]);
6835
- React38__namespace.useLayoutEffect(() => {
6912
+ React39__namespace.useLayoutEffect(() => {
6836
6913
  if (!isWavy || !wavyActivePath) {
6837
6914
  cachedPathLengthRef.current = circumference;
6838
6915
  return;
@@ -7209,9 +7286,9 @@ var CircularProgress = React38__namespace.forwardRef(
7209
7286
  );
7210
7287
  CircularProgress.displayName = "CircularProgress";
7211
7288
  function useContainerWidth() {
7212
- const [width, setWidth] = React38__namespace.useState(0);
7213
- const observerRef = React38__namespace.useRef(null);
7214
- const ref = React38__namespace.useCallback((node) => {
7289
+ const [width, setWidth] = React39__namespace.useState(0);
7290
+ const observerRef = React39__namespace.useRef(null);
7291
+ const ref = React39__namespace.useCallback((node) => {
7215
7292
  if (observerRef.current) {
7216
7293
  observerRef.current.disconnect();
7217
7294
  observerRef.current = null;
@@ -7225,7 +7302,7 @@ function useContainerWidth() {
7225
7302
  observerRef.current = obs;
7226
7303
  }
7227
7304
  }, []);
7228
- React38__namespace.useEffect(() => {
7305
+ React39__namespace.useEffect(() => {
7229
7306
  return () => {
7230
7307
  if (observerRef.current) {
7231
7308
  observerRef.current.disconnect();
@@ -7235,7 +7312,7 @@ function useContainerWidth() {
7235
7312
  return [ref, width];
7236
7313
  }
7237
7314
  function useMergedRef(...refs) {
7238
- return React38__namespace.useCallback(
7315
+ return React39__namespace.useCallback(
7239
7316
  (node) => {
7240
7317
  for (const ref of refs) {
7241
7318
  if (typeof ref === "function") {
@@ -7249,7 +7326,7 @@ function useMergedRef(...refs) {
7249
7326
  [refs]
7250
7327
  );
7251
7328
  }
7252
- var FlatLinearTrack = React38__namespace.memo(function FlatLinearTrack2({
7329
+ var FlatLinearTrack = React39__namespace.memo(function FlatLinearTrack2({
7253
7330
  trackHeight,
7254
7331
  activeColor,
7255
7332
  trackColor,
@@ -7325,7 +7402,7 @@ var FlatLinearTrack = React38__namespace.memo(function FlatLinearTrack2({
7325
7402
  }
7326
7403
  );
7327
7404
  });
7328
- var WavyLinearTrack = React38__namespace.memo(function WavyLinearTrack2({
7405
+ var WavyLinearTrack = React39__namespace.memo(function WavyLinearTrack2({
7329
7406
  trackHeight,
7330
7407
  svgHeight,
7331
7408
  amplitude,
@@ -7344,13 +7421,13 @@ var WavyLinearTrack = React38__namespace.memo(function WavyLinearTrack2({
7344
7421
  }) {
7345
7422
  const isDeterminate = typeof value === "number";
7346
7423
  const clampedValue = isDeterminate ? Math.max(0, Math.min(100, value)) : 100;
7347
- const titleId = React38__namespace.useId();
7424
+ const titleId = React39__namespace.useId();
7348
7425
  const [containerRef, width] = useContainerWidth();
7349
- const activePathRef = React38__namespace.useRef(null);
7350
- const trackPathRef = React38__namespace.useRef(null);
7426
+ const activePathRef = React39__namespace.useRef(null);
7427
+ const trackPathRef = React39__namespace.useRef(null);
7351
7428
  const amplitudeMV = react.useMotionValue(amplitude);
7352
7429
  const fractionMV = react.useMotionValue(isDeterminate ? clampedValue / 100 : 1);
7353
- React38__namespace.useEffect(() => {
7430
+ React39__namespace.useEffect(() => {
7354
7431
  if (isDeterminate) {
7355
7432
  const fraction = clampedValue / 100;
7356
7433
  let targetAmp = amplitude;
@@ -7538,7 +7615,7 @@ var WavyLinearTrack = React38__namespace.memo(function WavyLinearTrack2({
7538
7615
  }
7539
7616
  );
7540
7617
  });
7541
- var LinearProgress = React38__namespace.forwardRef(
7618
+ var LinearProgress = React39__namespace.forwardRef(
7542
7619
  (_a, ref) => {
7543
7620
  var _b = _a, {
7544
7621
  value,
@@ -7579,10 +7656,10 @@ var LinearProgress = React38__namespace.forwardRef(
7579
7656
  ]);
7580
7657
  const isDeterminate = value !== void 0;
7581
7658
  const clampedValue = isDeterminate ? Math.min(100, Math.max(0, value)) : 0;
7582
- const containerRef = React38__namespace.useRef(null);
7659
+ const containerRef = React39__namespace.useRef(null);
7583
7660
  const mergedRef = useMergedRef(ref, containerRef);
7584
- const [isRtl, setIsRtl] = React38__namespace.useState(false);
7585
- React38__namespace.useEffect(() => {
7661
+ const [isRtl, setIsRtl] = React39__namespace.useState(false);
7662
+ React39__namespace.useEffect(() => {
7586
7663
  if (containerRef.current) {
7587
7664
  const dir = getComputedStyle(containerRef.current).direction;
7588
7665
  setIsRtl(dir === "rtl");
@@ -7590,16 +7667,16 @@ var LinearProgress = React38__namespace.forwardRef(
7590
7667
  }, []);
7591
7668
  const resolvedTrackShape = trackShape != null ? trackShape : shape;
7592
7669
  const isWavy = shape === "wavy" || resolvedTrackShape === "wavy";
7593
- const effectiveAmplitude = React38__namespace.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
7594
- const svgHeight = React38__namespace.useMemo(
7670
+ const effectiveAmplitude = React39__namespace.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
7671
+ const svgHeight = React39__namespace.useMemo(
7595
7672
  () => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
7596
7673
  [isWavy, trackHeight, effectiveAmplitude]
7597
7674
  );
7598
- const shouldShowStop = React38__namespace.useMemo(
7675
+ const shouldShowStop = React39__namespace.useMemo(
7599
7676
  () => isDeterminate && resolvedTrackShape === "flat" && showStopIndicator !== false,
7600
7677
  [isDeterminate, resolvedTrackShape, showStopIndicator]
7601
7678
  );
7602
- const stopSize = React38__namespace.useMemo(
7679
+ const stopSize = React39__namespace.useMemo(
7603
7680
  () => Math.max(2, trackHeight > 4 ? 4 : trackHeight / 2),
7604
7681
  [trackHeight]
7605
7682
  );
@@ -7674,7 +7751,7 @@ var LinearProgress = React38__namespace.forwardRef(
7674
7751
  }
7675
7752
  );
7676
7753
  LinearProgress.displayName = "LinearProgress";
7677
- var ProgressIndicator = React38__namespace.forwardRef((props, ref) => {
7754
+ var ProgressIndicator = React39__namespace.forwardRef((props, ref) => {
7678
7755
  if (props.variant === "circular") {
7679
7756
  return /* @__PURE__ */ jsxRuntime.jsx(CircularProgress, __spreadValues({ ref }, props));
7680
7757
  }
@@ -7806,7 +7883,7 @@ function resolveDisabledBgClass(colorStyle) {
7806
7883
  }
7807
7884
  return "disabled:text-m3-on-surface/[0.38]";
7808
7885
  }
7809
- var IconButtonComponent = React38__namespace.forwardRef(
7886
+ var IconButtonComponent = React39__namespace.forwardRef(
7810
7887
  (_a, ref) => {
7811
7888
  var _b = _a, {
7812
7889
  className,
@@ -7848,18 +7925,18 @@ var IconButtonComponent = React38__namespace.forwardRef(
7848
7925
  var _a2, _b2, _c, _d, _e;
7849
7926
  const isToggle = variant === "toggle";
7850
7927
  const isSelected = isToggle && !!selected;
7851
- const resolvedColorClass = React38__namespace.useMemo(
7928
+ const resolvedColorClass = React39__namespace.useMemo(
7852
7929
  () => isSelected ? colorStyles[colorStyle].selected : colorStyles[colorStyle].default,
7853
7930
  [isSelected, colorStyle]
7854
7931
  );
7855
- const outlineWidthClass = React38__namespace.useMemo(
7932
+ const outlineWidthClass = React39__namespace.useMemo(
7856
7933
  () => {
7857
7934
  var _a3;
7858
7935
  return colorStyle === "outlined" && !isSelected ? (_a3 = SIZE_OUTLINE_WIDTH[size]) != null ? _a3 : "border" : "";
7859
7936
  },
7860
7937
  [colorStyle, isSelected, size]
7861
7938
  );
7862
- const disabledBgClass = React38__namespace.useMemo(
7939
+ const disabledBgClass = React39__namespace.useMemo(
7863
7940
  () => resolveDisabledBgClass(colorStyle),
7864
7941
  [colorStyle]
7865
7942
  );
@@ -7882,7 +7959,7 @@ var IconButtonComponent = React38__namespace.forwardRef(
7882
7959
  const { ripples, onPointerDown, removeRipple } = useRippleState({
7883
7960
  disabled: loading
7884
7961
  });
7885
- const handleClick = React38__namespace.useCallback(
7962
+ const handleClick = React39__namespace.useCallback(
7886
7963
  (e) => {
7887
7964
  if (loading) {
7888
7965
  e.preventDefault();
@@ -7892,7 +7969,7 @@ var IconButtonComponent = React38__namespace.forwardRef(
7892
7969
  },
7893
7970
  [loading, onClick]
7894
7971
  );
7895
- const handleKeyDown = React38__namespace.useCallback(
7972
+ const handleKeyDown = React39__namespace.useCallback(
7896
7973
  (e) => {
7897
7974
  if (loading) return;
7898
7975
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -7948,7 +8025,7 @@ var IconButtonComponent = React38__namespace.forwardRef(
7948
8025
  width: isCustomSize ? `${iconSize}px` : void 0,
7949
8026
  height: isCustomSize ? `${iconSize}px` : void 0
7950
8027
  },
7951
- children: isSelected && selectedIcon ? selectedIcon : asChild ? React38__namespace.Children.only(children).props.children : children
8028
+ children: isSelected && selectedIcon ? selectedIcon : asChild ? React39__namespace.Children.only(children).props.children : children
7952
8029
  }),
7953
8030
  isSelected && selectedIcon ? "selected-content" : "content"
7954
8031
  ) })
@@ -7965,7 +8042,7 @@ var IconButtonComponent = React38__namespace.forwardRef(
7965
8042
  className
7966
8043
  );
7967
8044
  if (asChild) {
7968
- const child = React38__namespace.Children.only(children);
8045
+ const child = React39__namespace.Children.only(children);
7969
8046
  return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
7970
8047
  reactSlot.Slot,
7971
8048
  __spreadProps(__spreadValues({
@@ -7982,7 +8059,7 @@ var IconButtonComponent = React38__namespace.forwardRef(
7982
8059
  }),
7983
8060
  className: containerClassName
7984
8061
  }, restProps), {
7985
- children: React38__namespace.cloneElement(child, { children: innerContent })
8062
+ children: React39__namespace.cloneElement(child, { children: innerContent })
7986
8063
  })
7987
8064
  ) });
7988
8065
  }
@@ -8010,44 +8087,81 @@ var IconButtonComponent = React38__namespace.forwardRef(
8010
8087
  }
8011
8088
  );
8012
8089
  IconButtonComponent.displayName = "IconButton";
8013
- var IconButton = React38__namespace.memo(IconButtonComponent);
8090
+ var IconButton = React39__namespace.memo(IconButtonComponent);
8014
8091
  function TrailingAction({
8015
8092
  query,
8016
8093
  trailingIcon,
8094
+ avatar,
8017
8095
  onClear
8018
8096
  }) {
8019
- if (query) {
8020
- return /* @__PURE__ */ jsxRuntime.jsx(
8021
- IconButton,
8097
+ const shouldReduceMotion = react.useReducedMotion();
8098
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
8099
+ /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { mode: "wait", initial: false, children: query ? /* @__PURE__ */ jsxRuntime.jsx(
8100
+ react.m.div,
8022
8101
  {
8023
- size: "sm",
8024
- style: { color: SEARCH_COLORS.trailingIcon },
8025
- "aria-label": "Clear search",
8026
- onClick: onClear,
8102
+ initial: shouldReduceMotion ? false : { opacity: 0, scale: 0.8 },
8103
+ animate: { opacity: 1, scale: 1 },
8104
+ exit: shouldReduceMotion ? {} : { opacity: 0, scale: 0.8 },
8105
+ transition: { duration: 0.15 },
8106
+ className: "flex items-center justify-center",
8027
8107
  children: /* @__PURE__ */ jsxRuntime.jsx(
8028
- "span",
8108
+ IconButton,
8029
8109
  {
8030
- className: "material-symbols-rounded select-none leading-none",
8031
- style: { fontSize: 20 },
8032
- "aria-hidden": "true",
8033
- children: "close"
8110
+ size: "sm",
8111
+ style: { color: SEARCH_COLORS.trailingIcon },
8112
+ "aria-label": "Clear search",
8113
+ onClick: onClear,
8114
+ children: /* @__PURE__ */ jsxRuntime.jsx(
8115
+ "span",
8116
+ {
8117
+ className: "material-symbols-rounded select-none leading-none",
8118
+ style: { fontSize: 20 },
8119
+ "aria-hidden": "true",
8120
+ children: "close"
8121
+ }
8122
+ )
8034
8123
  }
8035
8124
  )
8036
- }
8037
- );
8038
- }
8039
- if (trailingIcon) {
8040
- return /* @__PURE__ */ jsxRuntime.jsx(
8041
- "span",
8125
+ },
8126
+ "clear-action"
8127
+ ) : trailingIcon && /* @__PURE__ */ jsxRuntime.jsx(
8128
+ react.m.span,
8042
8129
  {
8130
+ initial: shouldReduceMotion ? false : { opacity: 0, scale: 0.8 },
8131
+ animate: { opacity: 1, scale: 1 },
8132
+ exit: shouldReduceMotion ? {} : { opacity: 0, scale: 0.8 },
8133
+ transition: { duration: 0.15 },
8043
8134
  className: "flex shrink-0 items-center justify-center",
8044
8135
  style: { color: SEARCH_COLORS.trailingIcon },
8045
8136
  "aria-hidden": "true",
8046
8137
  children: trailingIcon
8138
+ },
8139
+ "trailing-icon"
8140
+ ) }),
8141
+ avatar && /* @__PURE__ */ jsxRuntime.jsx(
8142
+ "span",
8143
+ {
8144
+ className: "flex shrink-0 items-center justify-center rounded-full overflow-hidden",
8145
+ style: {
8146
+ width: SearchTokens.avatarSize,
8147
+ height: SearchTokens.avatarSize
8148
+ },
8149
+ "aria-hidden": "true",
8150
+ children: avatar
8047
8151
  }
8048
- );
8049
- }
8050
- return null;
8152
+ )
8153
+ ] });
8154
+ }
8155
+ function DefaultSearchIcon2() {
8156
+ return /* @__PURE__ */ jsxRuntime.jsx(
8157
+ "span",
8158
+ {
8159
+ className: "material-symbols-rounded select-none leading-none",
8160
+ style: { fontSize: SearchTokens.iconSize },
8161
+ "aria-hidden": "true",
8162
+ children: "search"
8163
+ }
8164
+ );
8051
8165
  }
8052
8166
  function SearchViewDocked({
8053
8167
  query,
@@ -8057,6 +8171,7 @@ function SearchViewDocked({
8057
8171
  onActiveChange,
8058
8172
  leadingIcon,
8059
8173
  trailingIcon,
8174
+ avatar,
8060
8175
  placeholder = "Search",
8061
8176
  textAlign = "left",
8062
8177
  styleType = "contained",
@@ -8070,7 +8185,7 @@ function SearchViewDocked({
8070
8185
  activeIndex
8071
8186
  }) {
8072
8187
  const shouldReduceMotion = react.useReducedMotion();
8073
- const inputRef = React38__namespace.useRef(null);
8188
+ const inputRef = React39__namespace.useRef(null);
8074
8189
  useSearchViewFocus(inputRef, active);
8075
8190
  const dropdownRef = useClickOutside(() => {
8076
8191
  onActiveChange(false);
@@ -8089,10 +8204,12 @@ function SearchViewDocked({
8089
8204
  react.m.div,
8090
8205
  {
8091
8206
  ref: dropdownRef,
8207
+ layout: !shouldReduceMotion,
8092
8208
  layoutId: shouldReduceMotion ? void 0 : searchId,
8093
8209
  className: cn(
8094
8210
  // DockedContainerShape = CornerExtraLarge = 28dp radius
8095
8211
  "rounded-[28px] overflow-hidden",
8212
+ SEARCH_ELEVATION.level3,
8096
8213
  viewClassName
8097
8214
  ),
8098
8215
  style: { backgroundColor: SEARCH_COLORS.container },
@@ -8114,7 +8231,7 @@ function SearchViewDocked({
8114
8231
  className: "flex shrink-0 items-center justify-center",
8115
8232
  style: { color: SEARCH_COLORS.leadingIcon },
8116
8233
  "aria-hidden": "true",
8117
- children: leadingIcon
8234
+ children: leadingIcon != null ? leadingIcon : /* @__PURE__ */ jsxRuntime.jsx(DefaultSearchIcon2, {})
8118
8235
  }
8119
8236
  ),
8120
8237
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8155,6 +8272,7 @@ function SearchViewDocked({
8155
8272
  {
8156
8273
  query,
8157
8274
  trailingIcon,
8275
+ avatar,
8158
8276
  onClear: () => onQueryChange("")
8159
8277
  }
8160
8278
  )
@@ -8175,7 +8293,7 @@ function SearchViewDocked({
8175
8293
  id: listboxId,
8176
8294
  role: "listbox",
8177
8295
  "aria-label": `${ariaLabel} results`,
8178
- className: "min-h-30",
8296
+ className: "min-h-[120px]",
8179
8297
  children
8180
8298
  }
8181
8299
  )
@@ -8204,6 +8322,7 @@ function SearchViewFullScreen({
8204
8322
  onActiveChange,
8205
8323
  leadingIcon,
8206
8324
  trailingIcon,
8325
+ avatar,
8207
8326
  placeholder = "Search",
8208
8327
  textAlign = "left",
8209
8328
  styleType = "contained",
@@ -8216,10 +8335,10 @@ function SearchViewFullScreen({
8216
8335
  activeIndex
8217
8336
  }) {
8218
8337
  const shouldReduceMotion = react.useReducedMotion();
8219
- const inputRef = React38__namespace.useRef(null);
8338
+ const inputRef = React39__namespace.useRef(null);
8220
8339
  useSearchViewFocus(inputRef, active);
8221
- const [mounted, setMounted] = React38__namespace.useState(false);
8222
- React38__namespace.useEffect(() => {
8340
+ const [mounted, setMounted] = React39__namespace.useState(false);
8341
+ React39__namespace.useEffect(() => {
8223
8342
  setMounted(true);
8224
8343
  }, []);
8225
8344
  const handleFormSubmit = (e) => {
@@ -8318,6 +8437,7 @@ function SearchViewFullScreen({
8318
8437
  {
8319
8438
  query,
8320
8439
  trailingIcon,
8440
+ avatar,
8321
8441
  onClear: () => onQueryChange("")
8322
8442
  }
8323
8443
  )
@@ -8369,6 +8489,7 @@ function SearchComponent({
8369
8489
  hasGap = false,
8370
8490
  leadingIcon,
8371
8491
  trailingIcon,
8492
+ avatar,
8372
8493
  placeholder = "Search",
8373
8494
  textAlign = "left",
8374
8495
  children,
@@ -8377,10 +8498,10 @@ function SearchComponent({
8377
8498
  className,
8378
8499
  viewClassName
8379
8500
  }) {
8380
- const generatedId = React38__namespace.useId();
8501
+ const generatedId = React39__namespace.useId();
8381
8502
  const searchId = id != null ? id : generatedId;
8382
8503
  const listboxId = `${searchId}-listbox`;
8383
- const itemCount = React38__namespace.Children.count(children);
8504
+ const itemCount = React39__namespace.Children.count(children);
8384
8505
  const { activeIndex, handleKeyDown } = useSearchKeyboard({
8385
8506
  active,
8386
8507
  onActiveChange,
@@ -8396,6 +8517,7 @@ function SearchComponent({
8396
8517
  onActiveChange,
8397
8518
  leadingIcon,
8398
8519
  trailingIcon,
8520
+ avatar,
8399
8521
  placeholder,
8400
8522
  textAlign,
8401
8523
  "aria-label": ariaLabel,
@@ -8439,9 +8561,9 @@ function formatBadgeLabel(children, max) {
8439
8561
  return "";
8440
8562
  }
8441
8563
  function detectBadgeHasContent(badge) {
8442
- return React38__namespace.isValidElement(badge) && badge.props.children != null;
8564
+ return React39__namespace.isValidElement(badge) && badge.props.children != null;
8443
8565
  }
8444
- var BadgeImpl = React38__namespace.forwardRef(
8566
+ var BadgeImpl = React39__namespace.forwardRef(
8445
8567
  (_a, ref) => {
8446
8568
  var _b = _a, {
8447
8569
  children,
@@ -8495,7 +8617,7 @@ var BadgeImpl = React38__namespace.forwardRef(
8495
8617
  }
8496
8618
  );
8497
8619
  BadgeImpl.displayName = "Badge";
8498
- React38__namespace.memo(BadgeImpl);
8620
+ React39__namespace.memo(BadgeImpl);
8499
8621
  function BadgedBox({
8500
8622
  badge,
8501
8623
  children,
@@ -8516,9 +8638,9 @@ function BadgedBox({
8516
8638
  )
8517
8639
  ] });
8518
8640
  }
8519
- var TabsContext = React38__namespace.createContext(null);
8641
+ var TabsContext = React39__namespace.createContext(null);
8520
8642
  function useTabsContext() {
8521
- const ctx = React38__namespace.useContext(TabsContext);
8643
+ const ctx = React39__namespace.useContext(TabsContext);
8522
8644
  if (!ctx) {
8523
8645
  throw new Error(
8524
8646
  "[MD3 Tabs] Component must be used within a <Tabs> root. Ensure <TabsList>, <Tab>, and <TabsContent> are descendants of <Tabs>."
@@ -8526,7 +8648,7 @@ function useTabsContext() {
8526
8648
  }
8527
8649
  return ctx;
8528
8650
  }
8529
- var TabsComponent = React38__namespace.forwardRef(
8651
+ var TabsComponent = React39__namespace.forwardRef(
8530
8652
  ({
8531
8653
  value: controlledValue,
8532
8654
  defaultValue = "",
@@ -8535,35 +8657,35 @@ var TabsComponent = React38__namespace.forwardRef(
8535
8657
  children,
8536
8658
  className
8537
8659
  }, ref) => {
8538
- const [internalValue, setInternalValue] = React38__namespace.useState(defaultValue);
8660
+ const [internalValue, setInternalValue] = React39__namespace.useState(defaultValue);
8539
8661
  const isControlled = controlledValue !== void 0;
8540
8662
  const value = isControlled ? controlledValue : internalValue;
8541
- const handleValueChange = React38__namespace.useCallback(
8663
+ const handleValueChange = React39__namespace.useCallback(
8542
8664
  (newValue) => {
8543
8665
  if (!isControlled) setInternalValue(newValue);
8544
8666
  onValueChange == null ? void 0 : onValueChange(newValue);
8545
8667
  },
8546
8668
  [isControlled, onValueChange]
8547
8669
  );
8548
- const [focusedValue, setFocusedValue] = React38__namespace.useState(value);
8549
- React38__namespace.useEffect(() => {
8670
+ const [focusedValue, setFocusedValue] = React39__namespace.useState(value);
8671
+ React39__namespace.useEffect(() => {
8550
8672
  setFocusedValue(value);
8551
8673
  }, [value]);
8552
- const [tabValues, setTabValues] = React38__namespace.useState([]);
8553
- const registerTab = React38__namespace.useCallback((tabValue) => {
8674
+ const [tabValues, setTabValues] = React39__namespace.useState([]);
8675
+ const registerTab = React39__namespace.useCallback((tabValue) => {
8554
8676
  setTabValues((prev) => {
8555
8677
  if (prev.includes(tabValue)) return prev;
8556
8678
  return [...prev, tabValue];
8557
8679
  });
8558
8680
  }, []);
8559
- const unregisterTab = React38__namespace.useCallback((tabValue) => {
8681
+ const unregisterTab = React39__namespace.useCallback((tabValue) => {
8560
8682
  setTabValues((prev) => prev.filter((v) => v !== tabValue));
8561
8683
  }, []);
8562
- const hasAutoSelected = React38__namespace.useRef(false);
8563
- const [disabledValues, setDisabledValues] = React38__namespace.useState(
8684
+ const hasAutoSelected = React39__namespace.useRef(false);
8685
+ const [disabledValues, setDisabledValues] = React39__namespace.useState(
8564
8686
  /* @__PURE__ */ new Set()
8565
8687
  );
8566
- const markTabDisabled = React38__namespace.useCallback(
8688
+ const markTabDisabled = React39__namespace.useCallback(
8567
8689
  (tabValue, disabled) => {
8568
8690
  setDisabledValues((prev) => {
8569
8691
  const next = new Set(prev);
@@ -8577,7 +8699,7 @@ var TabsComponent = React38__namespace.forwardRef(
8577
8699
  },
8578
8700
  []
8579
8701
  );
8580
- React38__namespace.useEffect(() => {
8702
+ React39__namespace.useEffect(() => {
8581
8703
  if (isControlled || hasAutoSelected.current || tabValues.length === 0) {
8582
8704
  return;
8583
8705
  }
@@ -8592,9 +8714,9 @@ var TabsComponent = React38__namespace.forwardRef(
8592
8714
  setFocusedValue(firstEnabled);
8593
8715
  }
8594
8716
  }, [tabValues, disabledValues, isControlled, value]);
8595
- const id = React38__namespace.useId();
8717
+ const id = React39__namespace.useId();
8596
8718
  const layoutGroupId = `tabs-${id}`;
8597
- const contextValue = React38__namespace.useMemo(
8719
+ const contextValue = React39__namespace.useMemo(
8598
8720
  () => ({
8599
8721
  value,
8600
8722
  onValueChange: handleValueChange,
@@ -8625,12 +8747,12 @@ var TabsComponent = React38__namespace.forwardRef(
8625
8747
  }
8626
8748
  );
8627
8749
  TabsComponent.displayName = "Tabs";
8628
- var Tabs = React38__namespace.memo(TabsComponent);
8629
- var TabsListContext = React38__namespace.createContext(
8750
+ var Tabs = React39__namespace.memo(TabsComponent);
8751
+ var TabsListContext = React39__namespace.createContext(
8630
8752
  null
8631
8753
  );
8632
8754
  function useTabsListContext() {
8633
- const ctx = React38__namespace.useContext(TabsListContext);
8755
+ const ctx = React39__namespace.useContext(TabsListContext);
8634
8756
  return ctx != null ? ctx : { variant: "primary", scrollable: false };
8635
8757
  }
8636
8758
 
@@ -8714,7 +8836,7 @@ var TABS_CONTENT_TRANSITION = {
8714
8836
  ease: "easeInOut"
8715
8837
  };
8716
8838
  var INDICATOR_MIN_WIDTH = 24;
8717
- var TabComponent = React38__namespace.forwardRef(
8839
+ var TabComponent = React39__namespace.forwardRef(
8718
8840
  ({
8719
8841
  value,
8720
8842
  icon,
@@ -8744,9 +8866,9 @@ var TabComponent = React38__namespace.forwardRef(
8744
8866
  const isFocused = focusedValue === value;
8745
8867
  const hasIcon = icon != null;
8746
8868
  const isStackedIcon = hasIcon && !inlineIcon;
8747
- const buttonRef = React38__namespace.useRef(null);
8748
- const isFirstMount = React38__namespace.useRef(true);
8749
- const mergedRef = React38__namespace.useCallback(
8869
+ const buttonRef = React39__namespace.useRef(null);
8870
+ const isFirstMount = React39__namespace.useRef(true);
8871
+ const mergedRef = React39__namespace.useCallback(
8750
8872
  (node) => {
8751
8873
  buttonRef.current = node;
8752
8874
  if (typeof ref === "function") ref(node);
@@ -8754,15 +8876,15 @@ var TabComponent = React38__namespace.forwardRef(
8754
8876
  },
8755
8877
  [ref]
8756
8878
  );
8757
- React38__namespace.useEffect(() => {
8879
+ React39__namespace.useEffect(() => {
8758
8880
  registerTab(value);
8759
8881
  return () => unregisterTab(value);
8760
8882
  }, [value, registerTab, unregisterTab]);
8761
- React38__namespace.useEffect(() => {
8883
+ React39__namespace.useEffect(() => {
8762
8884
  markTabDisabled(value, disabled);
8763
8885
  return () => markTabDisabled(value, false);
8764
8886
  }, [value, disabled, markTabDisabled]);
8765
- const handleKeyDown = React38__namespace.useCallback(
8887
+ const handleKeyDown = React39__namespace.useCallback(
8766
8888
  (e) => {
8767
8889
  const isRtl = buttonRef.current ? getComputedStyle(buttonRef.current).direction === "rtl" : false;
8768
8890
  const enabledValues = tabValues.filter((v) => !disabledValues.has(v));
@@ -8816,7 +8938,7 @@ var TabComponent = React38__namespace.forwardRef(
8816
8938
  autoActivate
8817
8939
  ]
8818
8940
  );
8819
- React38__namespace.useEffect(() => {
8941
+ React39__namespace.useEffect(() => {
8820
8942
  if (isFirstMount.current) {
8821
8943
  isFirstMount.current = false;
8822
8944
  return;
@@ -8825,7 +8947,7 @@ var TabComponent = React38__namespace.forwardRef(
8825
8947
  buttonRef.current.focus({ preventScroll: true });
8826
8948
  }
8827
8949
  }, [isFocused]);
8828
- React38__namespace.useEffect(() => {
8950
+ React39__namespace.useEffect(() => {
8829
8951
  if (!isActive || !scrollable || !buttonRef.current) return;
8830
8952
  const btn = buttonRef.current;
8831
8953
  let container = btn.parentElement;
@@ -8962,8 +9084,8 @@ var TabComponent = React38__namespace.forwardRef(
8962
9084
  }
8963
9085
  );
8964
9086
  TabComponent.displayName = "Tab";
8965
- var Tab = React38__namespace.memo(TabComponent);
8966
- var TabsContentComponent = React38__namespace.forwardRef(
9087
+ var Tab = React39__namespace.memo(TabComponent);
9088
+ var TabsContentComponent = React39__namespace.forwardRef(
8967
9089
  ({ value, className, children }, ref) => {
8968
9090
  var _a;
8969
9091
  const { value: selectedValue, layoutGroupId } = useTabsContext();
@@ -8997,8 +9119,8 @@ var TabsContentComponent = React38__namespace.forwardRef(
8997
9119
  }
8998
9120
  );
8999
9121
  TabsContentComponent.displayName = "TabsContent";
9000
- var TabsContent = React38__namespace.memo(TabsContentComponent);
9001
- var TabsListComponent = React38__namespace.forwardRef(
9122
+ var TabsContent = React39__namespace.memo(TabsContentComponent);
9123
+ var TabsListComponent = React39__namespace.forwardRef(
9002
9124
  ({
9003
9125
  variant,
9004
9126
  scrollable = false,
@@ -9009,12 +9131,12 @@ var TabsListComponent = React38__namespace.forwardRef(
9009
9131
  }, ref) => {
9010
9132
  const { layoutGroupId, value, setFocusedValue } = useTabsContext();
9011
9133
  const listLayoutId = `${layoutGroupId}-list`;
9012
- const listContextValue = React38__namespace.useMemo(
9134
+ const listContextValue = React39__namespace.useMemo(
9013
9135
  () => ({ variant, scrollable }),
9014
9136
  [variant, scrollable]
9015
9137
  );
9016
9138
  const bgColor = backgroundColor != null ? backgroundColor : "var(--md-sys-color-surface)";
9017
- const handleBlur = React38__namespace.useCallback(
9139
+ const handleBlur = React39__namespace.useCallback(
9018
9140
  (e) => {
9019
9141
  const listEl = e.currentTarget;
9020
9142
  if (listEl.contains(e.relatedTarget)) return;
@@ -9063,7 +9185,7 @@ var TabsListComponent = React38__namespace.forwardRef(
9063
9185
  }
9064
9186
  );
9065
9187
  TabsListComponent.displayName = "TabsList";
9066
- var TabsList = React38__namespace.memo(TabsListComponent);
9188
+ var TabsList = React39__namespace.memo(TabsListComponent);
9067
9189
 
9068
9190
  // src/ui/toolbar/toolbar-colors.ts
9069
9191
  var standardFloatingToolbarColors = {
@@ -9119,13 +9241,13 @@ function getToolbarColors(variant = "standard", customColors) {
9119
9241
  return standardFloatingToolbarColors;
9120
9242
  }
9121
9243
  }
9122
- var ToolbarContext = React38__namespace.createContext(
9244
+ var ToolbarContext = React39__namespace.createContext(
9123
9245
  null
9124
9246
  );
9125
9247
  function useToolbarContext() {
9126
- return React38__namespace.useContext(ToolbarContext);
9248
+ return React39__namespace.useContext(ToolbarContext);
9127
9249
  }
9128
- var BottomDockedToolbar = React38__namespace.forwardRef(
9250
+ var BottomDockedToolbar = React39__namespace.forwardRef(
9129
9251
  (_a, ref) => {
9130
9252
  var _b = _a, {
9131
9253
  variant = "standard",
@@ -9158,8 +9280,8 @@ var BottomDockedToolbar = React38__namespace.forwardRef(
9158
9280
  const { scrollY } = react.useScroll(
9159
9281
  scrollContainerRef ? { container: scrollContainerRef } : void 0
9160
9282
  );
9161
- const [isHidden, setIsHidden] = React38__namespace.useState(false);
9162
- const lastScrollY = React38__namespace.useRef(0);
9283
+ const [isHidden, setIsHidden] = React39__namespace.useState(false);
9284
+ const lastScrollY = React39__namespace.useRef(0);
9163
9285
  react.useMotionValueEvent(scrollY, "change", (latest) => {
9164
9286
  if (!hideOnScroll) return;
9165
9287
  const diff = latest - lastScrollY.current;
@@ -9318,15 +9440,15 @@ function buildSlotVariants(xHidden, yHidden, isHorizontal) {
9318
9440
  };
9319
9441
  }
9320
9442
  function applyItemClassName(nodes, itemClassName) {
9321
- return React38__namespace.Children.map(nodes, (child) => {
9322
- if (!React38__namespace.isValidElement(child)) return child;
9443
+ return React39__namespace.Children.map(nodes, (child) => {
9444
+ if (!React39__namespace.isValidElement(child)) return child;
9323
9445
  const element = child;
9324
- return React38__namespace.cloneElement(element, {
9446
+ return React39__namespace.cloneElement(element, {
9325
9447
  className: cn(element.props.className, itemClassName)
9326
9448
  });
9327
9449
  });
9328
9450
  }
9329
- var FloatingToolbarBase = React38__namespace.forwardRef(
9451
+ var FloatingToolbarBase = React39__namespace.forwardRef(
9330
9452
  (_a, ref) => {
9331
9453
  var _b = _a, {
9332
9454
  expanded,
@@ -9498,11 +9620,11 @@ var FloatingToolbarBase = React38__namespace.forwardRef(
9498
9620
  }
9499
9621
  );
9500
9622
  FloatingToolbarBase.displayName = "FloatingToolbarBase";
9501
- var HorizontalFloatingToolbar = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9623
+ var HorizontalFloatingToolbar = React39__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9502
9624
  HorizontalFloatingToolbar.displayName = "HorizontalFloatingToolbar";
9503
- var VerticalFloatingToolbar = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9625
+ var VerticalFloatingToolbar = React39__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9504
9626
  VerticalFloatingToolbar.displayName = "VerticalFloatingToolbar";
9505
- var FloatingToolbarWithFabBase = React38__namespace.forwardRef(
9627
+ var FloatingToolbarWithFabBase = React39__namespace.forwardRef(
9506
9628
  (_a, ref) => {
9507
9629
  var _b = _a, {
9508
9630
  expanded,
@@ -9630,9 +9752,9 @@ var FloatingToolbarWithFabBase = React38__namespace.forwardRef(
9630
9752
  }
9631
9753
  );
9632
9754
  FloatingToolbarWithFabBase.displayName = "FloatingToolbarWithFabBase";
9633
- var HorizontalFloatingToolbarWithFab = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9755
+ var HorizontalFloatingToolbarWithFab = React39__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
9634
9756
  HorizontalFloatingToolbarWithFab.displayName = "HorizontalFloatingToolbarWithFab";
9635
- var VerticalFloatingToolbarWithFab = React38__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9757
+ var VerticalFloatingToolbarWithFab = React39__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "vertical" }, props)));
9636
9758
  VerticalFloatingToolbarWithFab.displayName = "VerticalFloatingToolbarWithFab";
9637
9759
  var ToolbarDivider = ({
9638
9760
  orientation: propsOrientation,
@@ -9668,7 +9790,7 @@ var VARIANT_TO_COLOR_STYLE = {
9668
9790
  tonal: "tonal",
9669
9791
  filled: "filled"
9670
9792
  };
9671
- var ToolbarIconButton = React38__namespace.forwardRef(
9793
+ var ToolbarIconButton = React39__namespace.forwardRef(
9672
9794
  (_a, ref) => {
9673
9795
  var _b = _a, {
9674
9796
  emphasis = "standard",
@@ -9730,13 +9852,13 @@ function useFloatingToolbarScrollBehavior(options = {}) {
9730
9852
  expandThreshold = 10,
9731
9853
  scrollContainerRef
9732
9854
  } = options;
9733
- const [isExpanded, setIsExpanded] = React38.useState(true);
9734
- const [offset, setOffset] = React38.useState(0);
9855
+ const [isExpanded, setIsExpanded] = React39.useState(true);
9856
+ const [offset, setOffset] = React39.useState(0);
9735
9857
  const { scrollY } = react.useScroll({
9736
9858
  container: scrollContainerRef
9737
9859
  });
9738
- const lastScrollY = React38.useRef(0);
9739
- const accumulatedScroll = React38.useRef(0);
9860
+ const lastScrollY = React39.useRef(0);
9861
+ const accumulatedScroll = React39.useRef(0);
9740
9862
  react.useMotionValueEvent(scrollY, "change", (currentScrollY) => {
9741
9863
  const deltaY = currentScrollY - lastScrollY.current;
9742
9864
  if (currentScrollY < 0) return;
@@ -9758,7 +9880,7 @@ function useFloatingToolbarScrollBehavior(options = {}) {
9758
9880
  }
9759
9881
  }
9760
9882
  });
9761
- React38.useEffect(() => {
9883
+ React39.useEffect(() => {
9762
9884
  if (typeof window !== "undefined") {
9763
9885
  const matchMedia = window.matchMedia("(forced-colors: active)");
9764
9886
  if (matchMedia.matches) {
@@ -9840,7 +9962,7 @@ var MOTION_PROP_KEYS = [
9840
9962
  "layoutId",
9841
9963
  "onLayoutAnimationComplete"
9842
9964
  ];
9843
- var ToolbarToggleButton = React38__namespace.forwardRef(
9965
+ var ToolbarToggleButton = React39__namespace.forwardRef(
9844
9966
  (_a, ref) => {
9845
9967
  var _b = _a, {
9846
9968
  emphasis = "standard",
@@ -9874,7 +9996,7 @@ var ToolbarToggleButton = React38__namespace.forwardRef(
9874
9996
  "onPointerLeave"
9875
9997
  ]);
9876
9998
  const context = useToolbarContext();
9877
- const [isPressed, setIsPressed] = React38__namespace.useState(false);
9999
+ const [isPressed, setIsPressed] = React39__namespace.useState(false);
9878
10000
  const {
9879
10001
  ripples,
9880
10002
  onPointerDown: handleRipplePointerDown,
@@ -9882,7 +10004,7 @@ var ToolbarToggleButton = React38__namespace.forwardRef(
9882
10004
  } = useRippleState({
9883
10005
  disabled: Boolean(disabled) || !ripple
9884
10006
  });
9885
- const handlePointerDown = React38__namespace.useCallback(
10007
+ const handlePointerDown = React39__namespace.useCallback(
9886
10008
  (e) => {
9887
10009
  setIsPressed(true);
9888
10010
  if (!disabled && ripple) {
@@ -9892,14 +10014,14 @@ var ToolbarToggleButton = React38__namespace.forwardRef(
9892
10014
  },
9893
10015
  [disabled, ripple, handleRipplePointerDown, onPointerDownProp]
9894
10016
  );
9895
- const handlePointerUp = React38__namespace.useCallback(
10017
+ const handlePointerUp = React39__namespace.useCallback(
9896
10018
  (e) => {
9897
10019
  setIsPressed(false);
9898
10020
  onPointerUpProp == null ? void 0 : onPointerUpProp(e);
9899
10021
  },
9900
10022
  [onPointerUpProp]
9901
10023
  );
9902
- const handlePointerLeave = React38__namespace.useCallback(
10024
+ const handlePointerLeave = React39__namespace.useCallback(
9903
10025
  (e) => {
9904
10026
  setIsPressed(false);
9905
10027
  onPointerLeaveProp == null ? void 0 : onPointerLeaveProp(e);
@@ -9918,14 +10040,14 @@ var ToolbarToggleButton = React38__namespace.forwardRef(
9918
10040
  context == null ? void 0 : context.itemClassName,
9919
10041
  className
9920
10042
  );
9921
- const animateConfig = React38__namespace.useMemo(
10043
+ const animateConfig = React39__namespace.useMemo(
9922
10044
  () => ({
9923
10045
  scaleX: pressExpand && isPressed ? 1 + pressExpandRatio : 1,
9924
10046
  borderRadius: isPressed ? ToolbarToggleButtonRadiusTokens.pressedRadius : ToolbarToggleButtonRadiusTokens.pillRadius
9925
10047
  }),
9926
10048
  [pressExpand, pressExpandRatio, isPressed]
9927
10049
  );
9928
- const transitionConfig = React38__namespace.useMemo(
10050
+ const transitionConfig = React39__namespace.useMemo(
9929
10051
  () => ({
9930
10052
  scaleX: FAST_SPATIAL_SPRING,
9931
10053
  borderRadius: BUTTON_RADIUS_SPRING
@@ -9947,7 +10069,7 @@ var ToolbarToggleButton = React38__namespace.forwardRef(
9947
10069
  children && (typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children }) : children)
9948
10070
  ] });
9949
10071
  if (asChild) {
9950
- const child = React38__namespace.Children.only(children);
10072
+ const child = React39__namespace.Children.only(children);
9951
10073
  const childContent = child.props.children;
9952
10074
  const innerChildContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9953
10075
  ripple && /* @__PURE__ */ jsxRuntime.jsx(
@@ -9986,7 +10108,7 @@ var ToolbarToggleButton = React38__namespace.forwardRef(
9986
10108
  onPointerUp: handlePointerUp,
9987
10109
  onPointerLeave: handlePointerLeave
9988
10110
  }, strippedProps), {
9989
- children: React38__namespace.cloneElement(child, { children: innerChildContent })
10111
+ children: React39__namespace.cloneElement(child, { children: innerChildContent })
9990
10112
  })
9991
10113
  ) });
9992
10114
  }
@@ -10073,6 +10195,7 @@ exports.SEARCH_BAR_EXIT_SPRING = SEARCH_BAR_EXIT_SPRING;
10073
10195
  exports.SEARCH_BAR_EXPAND_SPRING = SEARCH_BAR_EXPAND_SPRING;
10074
10196
  exports.SEARCH_COLORS = SEARCH_COLORS;
10075
10197
  exports.SEARCH_DOCKED_REVEAL_SPRING = SEARCH_DOCKED_REVEAL_SPRING;
10198
+ exports.SEARCH_ELEVATION = SEARCH_ELEVATION;
10076
10199
  exports.SEARCH_FULLSCREEN_SPRING = SEARCH_FULLSCREEN_SPRING;
10077
10200
  exports.SEARCH_TYPOGRAPHY = SEARCH_TYPOGRAPHY;
10078
10201
  exports.SEARCH_VIEW_SPRING = SEARCH_VIEW_SPRING;