@bug-on/md3-react 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import * as React38 from 'react';
2
+ import * as React39 from 'react';
3
3
  import { createContext, forwardRef, useMemo, useRef, useEffect, useState, useCallback, useContext, useId, cloneElement, useLayoutEffect, createElement } from 'react';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import { argbFromHex, themeFromSourceColor, hexFromArgb } from '@material/material-color-utilities';
@@ -153,6 +153,11 @@ function MaterialSymbolsPreconnect({
153
153
  )
154
154
  ] });
155
155
  }
156
+ function resolveMode(mode) {
157
+ if (mode !== "system") return mode;
158
+ if (typeof window === "undefined") return "light";
159
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
160
+ }
156
161
  function generateM3Theme(sourceColorHex, mode = "light") {
157
162
  const sourceColor = argbFromHex(sourceColorHex);
158
163
  const theme = themeFromSourceColor(sourceColor);
@@ -211,13 +216,14 @@ function generateM3Theme(sourceColorHex, mode = "light") {
211
216
  };
212
217
  }
213
218
  function applyTheme(sourceColorHex, mode = "light", root = document.documentElement) {
214
- const colors = generateM3Theme(sourceColorHex, mode);
219
+ const resolved = resolveMode(mode);
220
+ const colors = generateM3Theme(sourceColorHex, resolved);
215
221
  for (const [key, value] of Object.entries(colors)) {
216
- const kebabKey = key.replace(/[A-Z]/g, (m47) => `-${m47.toLowerCase()}`);
222
+ const kebabKey = key.replace(/[A-Z]/g, (m48) => `-${m48.toLowerCase()}`);
217
223
  root.style.setProperty(`--md-sys-color-${kebabKey}`, value);
218
224
  root.style.setProperty(`--color-m3-${kebabKey}`, value);
219
225
  }
220
- root.setAttribute("data-theme", mode);
226
+ root.setAttribute("data-theme", resolved);
221
227
  }
222
228
  function cn(...inputs) {
223
229
  return twMerge(clsx(inputs));
@@ -474,7 +480,7 @@ var SUBMENU_CONTAINER_VARIANTS = {
474
480
  transition: FAST_EFFECTS_TRANSITION
475
481
  }
476
482
  };
477
- var MenuContext = React38.createContext({
483
+ var MenuContext = React39.createContext({
478
484
  variant: "baseline",
479
485
  colorVariant: "standard",
480
486
  menuPrimitive: "dropdown",
@@ -490,15 +496,15 @@ function MenuProvider({
490
496
  onOpenChange,
491
497
  children
492
498
  }) {
493
- const value = React38.useMemo(
499
+ const value = React39.useMemo(
494
500
  () => ({ variant, colorVariant, menuPrimitive, open, onOpenChange }),
495
501
  [variant, colorVariant, menuPrimitive, open, onOpenChange]
496
502
  );
497
503
  return /* @__PURE__ */ jsx(MenuContext.Provider, { value, children });
498
504
  }
499
505
  function useMenuContext() {
500
- const ctx = React38.useContext(MenuContext);
501
- return React38.useMemo(
506
+ const ctx = React39.useContext(MenuContext);
507
+ return React39.useMemo(
502
508
  () => __spreadProps(__spreadValues({}, ctx), {
503
509
  isStatic: ctx.menuPrimitive === "static",
504
510
  menuVariant: ctx.variant
@@ -615,7 +621,7 @@ function ContextMenu({
615
621
  variant = "baseline",
616
622
  colorVariant = "standard"
617
623
  }) {
618
- const [open, setOpen] = React38.useState(false);
624
+ const [open, setOpen] = React39.useState(false);
619
625
  return /* @__PURE__ */ jsx(
620
626
  MenuProvider,
621
627
  {
@@ -629,12 +635,12 @@ function ContextMenu({
629
635
  );
630
636
  }
631
637
  ContextMenu.displayName = "ContextMenu";
632
- var ContextMenuTrigger = React38.forwardRef((_a, ref) => {
638
+ var ContextMenuTrigger = React39.forwardRef((_a, ref) => {
633
639
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
634
640
  return /* @__PURE__ */ jsx(RxContextMenu.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
635
641
  });
636
642
  ContextMenuTrigger.displayName = "ContextMenuTrigger";
637
- var ContextMenuContent = React38.forwardRef(
643
+ var ContextMenuContent = React39.forwardRef(
638
644
  (_a, ref) => {
639
645
  var _b = _a, {
640
646
  children,
@@ -682,10 +688,10 @@ var ContextMenuContent = React38.forwardRef(
682
688
  className
683
689
  );
684
690
  const flattenChildren = (nodes) => {
685
- return React38.Children.toArray(nodes).reduce(
691
+ return React39.Children.toArray(nodes).reduce(
686
692
  (acc, child) => {
687
- if (React38.isValidElement(child)) {
688
- if (child.type === React38.Fragment) {
693
+ if (React39.isValidElement(child)) {
694
+ if (child.type === React39.Fragment) {
689
695
  return acc.concat(
690
696
  flattenChildren(
691
697
  child.props.children
@@ -704,7 +710,7 @@ var ContextMenuContent = React38.forwardRef(
704
710
  const validChildren = flattenChildren(children);
705
711
  const groupCount = validChildren.length;
706
712
  const enhancedChildren = validChildren.map(
707
- (child, i) => React38.cloneElement(
713
+ (child, i) => React39.cloneElement(
708
714
  child,
709
715
  {
710
716
  index: i,
@@ -768,12 +774,12 @@ function Menu(_a) {
768
774
  ]);
769
775
  var _a2;
770
776
  const resolvedVariant = (_a2 = variant != null ? variant : menuVariant) != null ? _a2 : "baseline";
771
- const [internalOpen, setInternalOpen] = React38.useState(
777
+ const [internalOpen, setInternalOpen] = React39.useState(
772
778
  () => defaultOpen != null ? defaultOpen : false
773
779
  );
774
780
  const isControlled = controlledOpen !== void 0;
775
781
  const open = isControlled ? controlledOpen : internalOpen;
776
- const handleOpenChange = React38.useCallback(
782
+ const handleOpenChange = React39.useCallback(
777
783
  (next) => {
778
784
  if (!isControlled) setInternalOpen(next);
779
785
  controlledOnOpenChange == null ? void 0 : controlledOnOpenChange(next);
@@ -800,12 +806,12 @@ function Menu(_a) {
800
806
  );
801
807
  }
802
808
  Menu.displayName = "Menu";
803
- var MenuTrigger = React38.forwardRef((_a, ref) => {
809
+ var MenuTrigger = React39.forwardRef((_a, ref) => {
804
810
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
805
811
  return /* @__PURE__ */ jsx(DropdownMenu.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
806
812
  });
807
813
  MenuTrigger.displayName = "MenuTrigger";
808
- var MenuContent = React38.forwardRef(
814
+ var MenuContent = React39.forwardRef(
809
815
  (_a, ref) => {
810
816
  var _b = _a, {
811
817
  children,
@@ -859,10 +865,10 @@ var MenuContent = React38.forwardRef(
859
865
  className
860
866
  );
861
867
  const flattenChildren = (nodes) => {
862
- return React38.Children.toArray(nodes).reduce(
868
+ return React39.Children.toArray(nodes).reduce(
863
869
  (acc, child) => {
864
- if (React38.isValidElement(child)) {
865
- if (child.type === React38.Fragment) {
870
+ if (React39.isValidElement(child)) {
871
+ if (child.type === React39.Fragment) {
866
872
  return acc.concat(
867
873
  flattenChildren(
868
874
  child.props.children
@@ -881,7 +887,7 @@ var MenuContent = React38.forwardRef(
881
887
  const validChildren = flattenChildren(children);
882
888
  const groupCount = validChildren.length;
883
889
  const enhancedChildren = validChildren.map(
884
- (child, i) => React38.cloneElement(child, {
890
+ (child, i) => React39.cloneElement(child, {
885
891
  index: i,
886
892
  count: groupCount,
887
893
  isGapVariant: isExpressiveGap
@@ -936,7 +942,7 @@ var MenuContent = React38.forwardRef(
936
942
  }
937
943
  );
938
944
  MenuContent.displayName = "MenuContent";
939
- var MenuDivider = React38.forwardRef(
945
+ var MenuDivider = React39.forwardRef(
940
946
  (_a, ref) => {
941
947
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
942
948
  const { menuVariant } = useMenuContext();
@@ -967,7 +973,7 @@ function getGroupPosition(index, count) {
967
973
  function getGroupActiveShape(position) {
968
974
  return GROUP_SHAPES[`${position}Active`];
969
975
  }
970
- var MenuGroup = React38.forwardRef(
976
+ var MenuGroup = React39.forwardRef(
971
977
  (_a, ref) => {
972
978
  var _b = _a, {
973
979
  children,
@@ -997,15 +1003,15 @@ var MenuGroup = React38.forwardRef(
997
1003
  const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
998
1004
  const position = getGroupPosition(index, count);
999
1005
  const activeShape = getGroupActiveShape(position);
1000
- const [isHovered, setIsHovered] = React38.useState(false);
1006
+ const [isHovered, setIsHovered] = React39.useState(false);
1001
1007
  const currentShape = isStatic || isHovered ? activeShape : GROUP_SHAPES.inactive;
1002
- const handlePointerEnter = React38.useCallback(() => setIsHovered(true), []);
1003
- const handlePointerLeave = React38.useCallback(() => setIsHovered(false), []);
1008
+ const handlePointerEnter = React39.useCallback(() => setIsHovered(true), []);
1009
+ const handlePointerLeave = React39.useCallback(() => setIsHovered(false), []);
1004
1010
  const flattenChildren = (children2) => {
1005
- return React38.Children.toArray(children2).reduce(
1011
+ return React39.Children.toArray(children2).reduce(
1006
1012
  (acc, child) => {
1007
- if (React38.isValidElement(child)) {
1008
- if (child.type === React38.Fragment) {
1013
+ if (React39.isValidElement(child)) {
1014
+ if (child.type === React39.Fragment) {
1009
1015
  return acc.concat(
1010
1016
  flattenChildren(
1011
1017
  child.props.children
@@ -1023,7 +1029,7 @@ var MenuGroup = React38.forwardRef(
1023
1029
  const itemCount = validChildren.length;
1024
1030
  const enhancedChildren = validChildren.map((child, i) => {
1025
1031
  const itemPosition2 = itemCount === 1 ? "standalone" : i === 0 ? "leading" : i === itemCount - 1 ? "trailing" : "middle";
1026
- return React38.cloneElement(child, {
1032
+ return React39.cloneElement(child, {
1027
1033
  itemPosition: itemPosition2,
1028
1034
  colorVariant
1029
1035
  });
@@ -1086,6 +1092,11 @@ var SPRING_TRANSITION = {
1086
1092
  bounce: 0,
1087
1093
  duration: 0.3
1088
1094
  };
1095
+ var SPRING_TRANSITION_EXPRESSIVE = {
1096
+ type: "spring",
1097
+ bounce: 0.45,
1098
+ duration: 0.4
1099
+ };
1089
1100
  var ICON_SPAN_VARIANTS = {
1090
1101
  initial: { scale: 0.01 },
1091
1102
  animate: { scale: 1 },
@@ -1106,7 +1117,7 @@ var VARIANT_FONT = {
1106
1117
  rounded: "'Material Symbols Rounded'",
1107
1118
  sharp: "'Material Symbols Sharp'"
1108
1119
  };
1109
- var IconComponent = React38.forwardRef(
1120
+ var IconComponent = React39.forwardRef(
1110
1121
  (_a, ref) => {
1111
1122
  var _b = _a, {
1112
1123
  name,
@@ -1172,14 +1183,14 @@ var IconComponent = React38.forwardRef(
1172
1183
  }
1173
1184
  );
1174
1185
  IconComponent.displayName = "Icon";
1175
- var Icon = React38.memo(IconComponent);
1186
+ var Icon = React39.memo(IconComponent);
1176
1187
  function getItemShapeClass(position, selected, isStatic = false, menuVariant = "expressive") {
1177
1188
  if (menuVariant === "baseline") return BASELINE_ITEM_SHAPE;
1178
1189
  if (selected) return ITEM_SHAPE_CLASSES.selected;
1179
1190
  if (isStatic && position === "standalone") return "rounded-[12px]";
1180
1191
  return ITEM_SHAPE_CLASSES[position];
1181
1192
  }
1182
- var MenuItem = React38.forwardRef(
1193
+ var MenuItem = React39.forwardRef(
1183
1194
  (_a, ref) => {
1184
1195
  var _b = _a, {
1185
1196
  children,
@@ -1381,31 +1392,31 @@ function SubMenu({
1381
1392
  }) {
1382
1393
  const { colorVariant: contextColorVariant, menuPrimitive } = useMenuContext();
1383
1394
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
1384
- const [open, setOpen] = React38.useState(false);
1385
- const openTimerRef = React38.useRef(null);
1386
- const closeTimerRef = React38.useRef(
1395
+ const [open, setOpen] = React39.useState(false);
1396
+ const openTimerRef = React39.useRef(null);
1397
+ const closeTimerRef = React39.useRef(
1387
1398
  null
1388
1399
  );
1389
- const clearTimers = React38.useCallback(() => {
1400
+ const clearTimers = React39.useCallback(() => {
1390
1401
  if (openTimerRef.current) clearTimeout(openTimerRef.current);
1391
1402
  if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
1392
1403
  }, []);
1393
- const handleTriggerPointerEnter = React38.useCallback(() => {
1404
+ const handleTriggerPointerEnter = React39.useCallback(() => {
1394
1405
  clearTimers();
1395
1406
  openTimerRef.current = setTimeout(() => setOpen(true), hoverOpenDelay);
1396
1407
  }, [hoverOpenDelay, clearTimers]);
1397
- const handleTriggerPointerLeave = React38.useCallback(() => {
1408
+ const handleTriggerPointerLeave = React39.useCallback(() => {
1398
1409
  clearTimers();
1399
1410
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
1400
1411
  }, [hoverCloseDelay, clearTimers]);
1401
- const handleContentPointerEnter = React38.useCallback(() => {
1412
+ const handleContentPointerEnter = React39.useCallback(() => {
1402
1413
  clearTimers();
1403
1414
  }, [clearTimers]);
1404
- const handleContentPointerLeave = React38.useCallback(() => {
1415
+ const handleContentPointerLeave = React39.useCallback(() => {
1405
1416
  clearTimers();
1406
1417
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
1407
1418
  }, [hoverCloseDelay, clearTimers]);
1408
- React38.useEffect(() => () => clearTimers(), [clearTimers]);
1419
+ React39.useEffect(() => () => clearTimers(), [clearTimers]);
1409
1420
  const Sub3 = menuPrimitive === "context" ? RxContextMenu.Sub : DropdownMenu.Sub;
1410
1421
  const SubTrigger3 = menuPrimitive === "context" ? RxContextMenu.SubTrigger : DropdownMenu.SubTrigger;
1411
1422
  const SubContent3 = menuPrimitive === "context" ? RxContextMenu.SubContent : DropdownMenu.SubContent;
@@ -1417,7 +1428,7 @@ function SubMenu({
1417
1428
  className: "w-full outline-none",
1418
1429
  onPointerEnter: handleTriggerPointerEnter,
1419
1430
  onPointerLeave: handleTriggerPointerLeave,
1420
- children: React38.isValidElement(trigger) ? React38.cloneElement(trigger, {
1431
+ children: React39.isValidElement(trigger) ? React39.cloneElement(trigger, {
1421
1432
  isSubTrigger: true,
1422
1433
  // Auto-add chevron if missing
1423
1434
  trailingIcon: trigger.props.trailingIcon || /* @__PURE__ */ jsx(Icon, { name: "chevron_right", size: 20 })
@@ -1494,7 +1505,7 @@ function SubMenuContent({
1494
1505
  );
1495
1506
  }
1496
1507
  SubMenuContent.displayName = "SubMenuContent";
1497
- var VerticalMenuDivider = React38.forwardRef((_a, ref) => {
1508
+ var VerticalMenuDivider = React39.forwardRef((_a, ref) => {
1498
1509
  var _b = _a, { className, index, count, isGapVariant } = _b, props = __objRest(_b, ["className", "index", "count", "isGapVariant"]);
1499
1510
  return /* @__PURE__ */ jsx(
1500
1511
  "hr",
@@ -1514,7 +1525,7 @@ var VerticalMenuDivider = React38.forwardRef((_a, ref) => {
1514
1525
  });
1515
1526
  VerticalMenuDivider.displayName = "VerticalMenuDivider";
1516
1527
  var VerticalMenuGroup = MenuGroup;
1517
- var VerticalMenuContent = React38.forwardRef(
1528
+ var VerticalMenuContent = React39.forwardRef(
1518
1529
  (_a, ref) => {
1519
1530
  var _b = _a, {
1520
1531
  children,
@@ -1531,10 +1542,10 @@ var VerticalMenuContent = React38.forwardRef(
1531
1542
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
1532
1543
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1533
1544
  const flattenChildren = (children2) => {
1534
- return React38.Children.toArray(children2).reduce(
1545
+ return React39.Children.toArray(children2).reduce(
1535
1546
  (acc, child) => {
1536
- if (React38.isValidElement(child)) {
1537
- if (child.type === React38.Fragment) {
1547
+ if (React39.isValidElement(child)) {
1548
+ if (child.type === React39.Fragment) {
1538
1549
  return acc.concat(
1539
1550
  flattenChildren(
1540
1551
  child.props.children
@@ -1551,7 +1562,7 @@ var VerticalMenuContent = React38.forwardRef(
1551
1562
  const validChildren = flattenChildren(children);
1552
1563
  const groupCount = validChildren.length;
1553
1564
  const enhancedChildren = validChildren.map(
1554
- (child, i) => React38.cloneElement(child, {
1565
+ (child, i) => React39.cloneElement(child, {
1555
1566
  index: i,
1556
1567
  count: groupCount,
1557
1568
  isGapVariant: separatorStyle === "gap"
@@ -1588,13 +1599,13 @@ var VerticalMenuContent = React38.forwardRef(
1588
1599
  }
1589
1600
  );
1590
1601
  VerticalMenuContent.displayName = "VerticalMenuContent";
1591
- var VerticalMenu = React38.forwardRef((_a, ref) => {
1602
+ var VerticalMenu = React39.forwardRef((_a, ref) => {
1592
1603
  var _b = _a, { children, colorVariant = "standard", className } = _b, props = __objRest(_b, ["children", "colorVariant", "className"]);
1593
- const noop = React38.useCallback(() => {
1604
+ const noop = React39.useCallback(() => {
1594
1605
  }, []);
1595
1606
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
1596
- const containerRef = React38.useRef(null);
1597
- const mergedRef = React38.useCallback(
1607
+ const containerRef = React39.useRef(null);
1608
+ const mergedRef = React39.useCallback(
1598
1609
  (node) => {
1599
1610
  containerRef.current = node;
1600
1611
  if (typeof ref === "function") ref(node);
@@ -1603,7 +1614,7 @@ var VerticalMenu = React38.forwardRef((_a, ref) => {
1603
1614
  },
1604
1615
  [ref]
1605
1616
  );
1606
- const handleKeyDown = React38.useCallback(
1617
+ const handleKeyDown = React39.useCallback(
1607
1618
  (e) => {
1608
1619
  var _a2;
1609
1620
  if (!containerRef.current) return;
@@ -1686,7 +1697,7 @@ var VerticalMenu = React38.forwardRef((_a, ref) => {
1686
1697
  });
1687
1698
  VerticalMenu.displayName = "VerticalMenu";
1688
1699
  function detectSeparatorStyle(children) {
1689
- const child = React38.Children.toArray(children).find(React38.isValidElement);
1700
+ const child = React39.Children.toArray(children).find(React39.isValidElement);
1690
1701
  if (child) {
1691
1702
  const style = child.props.separatorStyle;
1692
1703
  if (style) return style;
@@ -1767,11 +1778,11 @@ function AppBarColumn({
1767
1778
  maxItemCount,
1768
1779
  className
1769
1780
  }) {
1770
- const containerRef = React38.useRef(null);
1771
- const [visibleCount, setVisibleCount] = React38.useState(
1781
+ const containerRef = React39.useRef(null);
1782
+ const [visibleCount, setVisibleCount] = React39.useState(
1772
1783
  maxItemCount != null ? maxItemCount : items.length
1773
1784
  );
1774
- React38.useEffect(() => {
1785
+ React39.useEffect(() => {
1775
1786
  if (maxItemCount !== void 0) {
1776
1787
  setVisibleCount(Math.min(maxItemCount, items.length));
1777
1788
  return;
@@ -1819,11 +1830,11 @@ function AppBarColumn({
1819
1830
  );
1820
1831
  }
1821
1832
  function AppBarRow({ items, maxItemCount, className }) {
1822
- const containerRef = React38.useRef(null);
1823
- const [visibleCount, setVisibleCount] = React38.useState(
1833
+ const containerRef = React39.useRef(null);
1834
+ const [visibleCount, setVisibleCount] = React39.useState(
1824
1835
  maxItemCount != null ? maxItemCount : items.length
1825
1836
  );
1826
- React38.useEffect(() => {
1837
+ React39.useEffect(() => {
1827
1838
  if (maxItemCount !== void 0) {
1828
1839
  setVisibleCount(Math.min(maxItemCount, items.length));
1829
1840
  return;
@@ -1877,12 +1888,12 @@ function useAppBarScroll({
1877
1888
  collapsedHeight = 64,
1878
1889
  expandedHeight = 112
1879
1890
  } = {}) {
1880
- const [isScrolled, setIsScrolled] = React38.useState(false);
1881
- const [collapsedFraction, setCollapsedFraction] = React38.useState(0);
1882
- const [isHidden, setIsHidden] = React38.useState(false);
1883
- const prevScrollYRef = React38.useRef(0);
1891
+ const [isScrolled, setIsScrolled] = React39.useState(false);
1892
+ const [collapsedFraction, setCollapsedFraction] = React39.useState(0);
1893
+ const [isHidden, setIsHidden] = React39.useState(false);
1894
+ const prevScrollYRef = React39.useRef(0);
1884
1895
  const hideThreshold = 64;
1885
- React38.useEffect(() => {
1896
+ React39.useEffect(() => {
1886
1897
  var _a;
1887
1898
  const scrollDistance = expandedHeight - collapsedHeight;
1888
1899
  const getScrollY = () => {
@@ -2003,7 +2014,7 @@ function useFlexibleAppBar({
2003
2014
  expandedHeight
2004
2015
  });
2005
2016
  const scrollProgress = useMotionValue(0);
2006
- React38.useEffect(() => {
2017
+ React39.useEffect(() => {
2007
2018
  scrollProgress.set(
2008
2019
  shouldReduceMotion ? collapsedFraction > 0.5 ? 1 : 0 : collapsedFraction
2009
2020
  );
@@ -2344,7 +2355,7 @@ function SearchAppBar({
2344
2355
  }) {
2345
2356
  var _a, _b;
2346
2357
  const shouldReduceMotion = useReducedMotion();
2347
- const [isSearchOpen, setIsSearchOpen] = React38.useState(false);
2358
+ const [isSearchOpen, setIsSearchOpen] = React39.useState(false);
2348
2359
  const { isScrolled } = useAppBarScroll({
2349
2360
  scrollElement,
2350
2361
  behavior: scrollBehavior === "exitUntilCollapsed" ? "pinned" : scrollBehavior
@@ -2458,8 +2469,8 @@ function SearchView({
2458
2469
  className
2459
2470
  }) {
2460
2471
  const shouldReduceMotion = useReducedMotion();
2461
- const inputRef = React38.useRef(null);
2462
- React38.useEffect(() => {
2472
+ const inputRef = React39.useRef(null);
2473
+ React39.useEffect(() => {
2463
2474
  const timer = window.setTimeout(() => {
2464
2475
  var _a;
2465
2476
  (_a = inputRef.current) == null ? void 0 : _a.focus();
@@ -2729,9 +2740,9 @@ function formatBadgeLabel(children, max) {
2729
2740
  return "";
2730
2741
  }
2731
2742
  function detectBadgeHasContent(badge) {
2732
- return React38.isValidElement(badge) && badge.props.children != null;
2743
+ return React39.isValidElement(badge) && badge.props.children != null;
2733
2744
  }
2734
- var BadgeImpl = React38.forwardRef(
2745
+ var BadgeImpl = React39.forwardRef(
2735
2746
  (_a, ref) => {
2736
2747
  var _b = _a, {
2737
2748
  children,
@@ -2785,7 +2796,7 @@ var BadgeImpl = React38.forwardRef(
2785
2796
  }
2786
2797
  );
2787
2798
  BadgeImpl.displayName = "Badge";
2788
- var Badge = React38.memo(BadgeImpl);
2799
+ var Badge = React39.memo(BadgeImpl);
2789
2800
  function BadgedBox({
2790
2801
  badge,
2791
2802
  children,
@@ -2851,11 +2862,11 @@ var ROTATE_KEY_SPLINES = [
2851
2862
  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";
2852
2863
  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";
2853
2864
  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";
2854
- var IndeterminateSvg = React38.memo(function IndeterminateSvg2({
2865
+ var IndeterminateSvg = React39.memo(function IndeterminateSvg2({
2855
2866
  size
2856
2867
  }) {
2857
- const [ready, setReady] = React38.useState(false);
2858
- React38.useEffect(() => {
2868
+ const [ready, setReady] = React39.useState(false);
2869
+ React39.useEffect(() => {
2859
2870
  const raf = requestAnimationFrame(() => setReady(true));
2860
2871
  return () => cancelAnimationFrame(raf);
2861
2872
  }, []);
@@ -2900,7 +2911,7 @@ var IndeterminateSvg = React38.memo(function IndeterminateSvg2({
2900
2911
  }
2901
2912
  );
2902
2913
  });
2903
- var DeterminateSvg = React38.memo(function DeterminateSvg2({
2914
+ var DeterminateSvg = React39.memo(function DeterminateSvg2({
2904
2915
  size,
2905
2916
  progress
2906
2917
  }) {
@@ -2925,7 +2936,7 @@ var DeterminateSvg = React38.memo(function DeterminateSvg2({
2925
2936
  }
2926
2937
  );
2927
2938
  });
2928
- var LoadingIndicator = React38.forwardRef(
2939
+ var LoadingIndicator = React39.forwardRef(
2929
2940
  (_a, ref) => {
2930
2941
  var _b = _a, {
2931
2942
  variant = "uncontained",
@@ -3040,7 +3051,7 @@ function getSinePath(startX, endX, phase, wl, amp) {
3040
3051
  d += ` L ${endX.toFixed(2)} ${yEnd.toFixed(2)}`;
3041
3052
  return d;
3042
3053
  }
3043
- var CircularProgress = React38.forwardRef(
3054
+ var CircularProgress = React39.forwardRef(
3044
3055
  (_a, ref) => {
3045
3056
  var _b = _a, {
3046
3057
  value,
@@ -3078,15 +3089,15 @@ var CircularProgress = React38.forwardRef(
3078
3089
  const isWavy = shape === "wavy";
3079
3090
  const BASELINE_SIZE = 48;
3080
3091
  const scaleFactor = size / BASELINE_SIZE;
3081
- const effectiveAmplitude = React38.useMemo(
3092
+ const effectiveAmplitude = React39.useMemo(
3082
3093
  () => amplitude != null ? amplitude : 1.6 * scaleFactor,
3083
3094
  [amplitude, scaleFactor]
3084
3095
  );
3085
- const effectiveWavelength = React38.useMemo(
3096
+ const effectiveWavelength = React39.useMemo(
3086
3097
  () => wavelength != null ? wavelength : 15 * scaleFactor,
3087
3098
  [wavelength, scaleFactor]
3088
3099
  );
3089
- const wavyActivePath = React38.useMemo(
3100
+ const wavyActivePath = React39.useMemo(
3090
3101
  () => isWavy ? generateWavyCircularPath(
3091
3102
  center,
3092
3103
  radius,
@@ -3095,8 +3106,8 @@ var CircularProgress = React38.forwardRef(
3095
3106
  ) : null,
3096
3107
  [isWavy, center, radius, effectiveAmplitude, effectiveWavelength]
3097
3108
  );
3098
- const circumference = React38.useMemo(() => 2 * Math.PI * radius, [radius]);
3099
- const gapForTrack = React38.useMemo(
3109
+ const circumference = React39.useMemo(() => 2 * Math.PI * radius, [radius]);
3110
+ const gapForTrack = React39.useMemo(
3100
3111
  () => (gapSize + trackHeight) / circumference,
3101
3112
  [gapSize, trackHeight, circumference]
3102
3113
  );
@@ -3285,9 +3296,9 @@ var CircularProgress = React38.forwardRef(
3285
3296
  );
3286
3297
  CircularProgress.displayName = "CircularProgress";
3287
3298
  function useContainerWidth() {
3288
- const [width, setWidth] = React38.useState(0);
3289
- const observerRef = React38.useRef(null);
3290
- const ref = React38.useCallback((node) => {
3299
+ const [width, setWidth] = React39.useState(0);
3300
+ const observerRef = React39.useRef(null);
3301
+ const ref = React39.useCallback((node) => {
3291
3302
  if (observerRef.current) {
3292
3303
  observerRef.current.disconnect();
3293
3304
  observerRef.current = null;
@@ -3301,7 +3312,7 @@ function useContainerWidth() {
3301
3312
  observerRef.current = obs;
3302
3313
  }
3303
3314
  }, []);
3304
- React38.useEffect(() => {
3315
+ React39.useEffect(() => {
3305
3316
  return () => {
3306
3317
  if (observerRef.current) {
3307
3318
  observerRef.current.disconnect();
@@ -3311,7 +3322,7 @@ function useContainerWidth() {
3311
3322
  return [ref, width];
3312
3323
  }
3313
3324
  function useMergedRef(...refs) {
3314
- return React38.useCallback(
3325
+ return React39.useCallback(
3315
3326
  (node) => {
3316
3327
  for (const ref of refs) {
3317
3328
  if (typeof ref === "function") {
@@ -3325,7 +3336,7 @@ function useMergedRef(...refs) {
3325
3336
  [refs]
3326
3337
  );
3327
3338
  }
3328
- var FlatLinearTrack = React38.memo(function FlatLinearTrack2({
3339
+ var FlatLinearTrack = React39.memo(function FlatLinearTrack2({
3329
3340
  trackHeight,
3330
3341
  activeColor,
3331
3342
  trackColor,
@@ -3401,7 +3412,7 @@ var FlatLinearTrack = React38.memo(function FlatLinearTrack2({
3401
3412
  }
3402
3413
  );
3403
3414
  });
3404
- var WavyLinearTrack = React38.memo(function WavyLinearTrack2({
3415
+ var WavyLinearTrack = React39.memo(function WavyLinearTrack2({
3405
3416
  trackHeight,
3406
3417
  svgHeight,
3407
3418
  amplitude,
@@ -3420,13 +3431,13 @@ var WavyLinearTrack = React38.memo(function WavyLinearTrack2({
3420
3431
  }) {
3421
3432
  const isDeterminate = typeof value === "number";
3422
3433
  const clampedValue = isDeterminate ? Math.max(0, Math.min(100, value)) : 100;
3423
- const titleId = React38.useId();
3434
+ const titleId = React39.useId();
3424
3435
  const [containerRef, width] = useContainerWidth();
3425
- const activePathRef = React38.useRef(null);
3426
- const trackPathRef = React38.useRef(null);
3436
+ const activePathRef = React39.useRef(null);
3437
+ const trackPathRef = React39.useRef(null);
3427
3438
  const amplitudeMV = useMotionValue(amplitude);
3428
3439
  const fractionMV = useMotionValue(isDeterminate ? clampedValue / 100 : 1);
3429
- React38.useEffect(() => {
3440
+ React39.useEffect(() => {
3430
3441
  if (isDeterminate) {
3431
3442
  const fraction = clampedValue / 100;
3432
3443
  let targetAmp = amplitude;
@@ -3597,7 +3608,7 @@ var WavyLinearTrack = React38.memo(function WavyLinearTrack2({
3597
3608
  }
3598
3609
  );
3599
3610
  });
3600
- var LinearProgress = React38.forwardRef(
3611
+ var LinearProgress = React39.forwardRef(
3601
3612
  (_a, ref) => {
3602
3613
  var _b = _a, {
3603
3614
  value,
@@ -3638,10 +3649,10 @@ var LinearProgress = React38.forwardRef(
3638
3649
  ]);
3639
3650
  const isDeterminate = value !== void 0;
3640
3651
  const clampedValue = isDeterminate ? Math.min(100, Math.max(0, value)) : 0;
3641
- const containerRef = React38.useRef(null);
3652
+ const containerRef = React39.useRef(null);
3642
3653
  const mergedRef = useMergedRef(ref, containerRef);
3643
- const [isRtl, setIsRtl] = React38.useState(false);
3644
- React38.useEffect(() => {
3654
+ const [isRtl, setIsRtl] = React39.useState(false);
3655
+ React39.useEffect(() => {
3645
3656
  if (containerRef.current) {
3646
3657
  const dir = getComputedStyle(containerRef.current).direction;
3647
3658
  setIsRtl(dir === "rtl");
@@ -3649,16 +3660,16 @@ var LinearProgress = React38.forwardRef(
3649
3660
  }, []);
3650
3661
  const isWavy = shape === "wavy";
3651
3662
  const resolvedTrackShape = trackShape != null ? trackShape : shape;
3652
- const effectiveAmplitude = React38.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
3653
- const svgHeight = React38.useMemo(
3663
+ const effectiveAmplitude = React39.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
3664
+ const svgHeight = React39.useMemo(
3654
3665
  () => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
3655
3666
  [isWavy, trackHeight, effectiveAmplitude]
3656
3667
  );
3657
- const shouldShowStop = React38.useMemo(
3668
+ const shouldShowStop = React39.useMemo(
3658
3669
  () => isDeterminate && resolvedTrackShape === "flat" && (showStopIndicator === true || showStopIndicator === "auto" && isDeterminate),
3659
3670
  [isDeterminate, resolvedTrackShape, showStopIndicator]
3660
3671
  );
3661
- const stopSize = React38.useMemo(
3672
+ const stopSize = React39.useMemo(
3662
3673
  () => Math.max(2, trackHeight > 4 ? 4 : trackHeight / 2),
3663
3674
  [trackHeight]
3664
3675
  );
@@ -3731,14 +3742,14 @@ var LinearProgress = React38.forwardRef(
3731
3742
  }
3732
3743
  );
3733
3744
  LinearProgress.displayName = "LinearProgress";
3734
- var ProgressIndicator = React38.forwardRef((props, ref) => {
3745
+ var ProgressIndicator = React39.forwardRef((props, ref) => {
3735
3746
  if (props.variant === "circular") {
3736
3747
  return /* @__PURE__ */ jsx(CircularProgress, __spreadValues({ ref }, props));
3737
3748
  }
3738
3749
  return /* @__PURE__ */ jsx(LinearProgress, __spreadValues({ ref }, props));
3739
3750
  });
3740
3751
  ProgressIndicator.displayName = "ProgressIndicator";
3741
- var RippleItem = React38.memo(function RippleItem2({
3752
+ var RippleItem = React39.memo(function RippleItem2({
3742
3753
  ripple,
3743
3754
  onDone
3744
3755
  }) {
@@ -3782,8 +3793,8 @@ function Ripple({
3782
3793
  }
3783
3794
  function useRippleState(options = {}) {
3784
3795
  const { disabled = false } = options;
3785
- const [ripples, setRipples] = React38.useState([]);
3786
- const onPointerDown = React38.useCallback(
3796
+ const [ripples, setRipples] = React39.useState([]);
3797
+ const onPointerDown = React39.useCallback(
3787
3798
  (e) => {
3788
3799
  if (disabled) return;
3789
3800
  const rect = e.currentTarget.getBoundingClientRect();
@@ -3797,7 +3808,7 @@ function useRippleState(options = {}) {
3797
3808
  },
3798
3809
  [disabled]
3799
3810
  );
3800
- const removeRipple = React38.useCallback((id) => {
3811
+ const removeRipple = React39.useCallback((id) => {
3801
3812
  setRipples((prev) => prev.filter((r) => r.id !== id));
3802
3813
  }, []);
3803
3814
  return { ripples, onPointerDown, removeRipple };
@@ -3926,15 +3937,12 @@ var buttonColorVariants = cva(
3926
3937
  defaultVariants: { colorStyle: "filled" }
3927
3938
  }
3928
3939
  );
3929
- function toSentenceCase(text) {
3930
- return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
3931
- }
3932
3940
  function resolveLabel(children, asChild) {
3933
3941
  if (asChild) {
3934
- const child = React38.Children.only(children);
3942
+ const child = React39.Children.only(children);
3935
3943
  return child.props.children;
3936
3944
  }
3937
- return typeof children === "string" ? toSentenceCase(children) : children;
3945
+ return children;
3938
3946
  }
3939
3947
  var MOTION_PROP_KEYS = [
3940
3948
  "animate",
@@ -4003,7 +4011,7 @@ function AnimatedIconSlot({
4003
4011
  }
4004
4012
  );
4005
4013
  }
4006
- var ButtonComponent = React38.forwardRef(
4014
+ var ButtonComponent = React39.forwardRef(
4007
4015
  (_a, ref) => {
4008
4016
  var _b = _a, {
4009
4017
  className,
@@ -4052,15 +4060,15 @@ var ButtonComponent = React38.forwardRef(
4052
4060
  const { pressed: pressedRadius } = (_b2 = radiusMap[size]) != null ? _b2 : radiusMap.sm;
4053
4061
  const iconClass = (_c = SIZE_ICON_CLASS[size]) != null ? _c : "size-5";
4054
4062
  const mergedStyle = __spreadValues(__spreadValues({}, SIZE_STYLES[size]), style);
4055
- const labelText = React38.useMemo(
4063
+ const labelText = React39.useMemo(
4056
4064
  () => resolveLabel(children, asChild),
4057
4065
  [children, asChild]
4058
4066
  );
4059
4067
  const computedAriaLabel = ariaLabelProp || (typeof children === "string" ? children : void 0);
4060
4068
  const needsTouchTarget = size === "xs" || size === "sm";
4061
4069
  const motionRadius = useMotionValue(animateRadius);
4062
- const asChildRef = React38.useRef(null);
4063
- const mergedRef = React38.useCallback(
4070
+ const asChildRef = React39.useRef(null);
4071
+ const mergedRef = React39.useCallback(
4064
4072
  (node) => {
4065
4073
  asChildRef.current = node;
4066
4074
  if (typeof ref === "function") ref(node);
@@ -4069,27 +4077,27 @@ var ButtonComponent = React38.forwardRef(
4069
4077
  },
4070
4078
  [ref]
4071
4079
  );
4072
- React38.useEffect(
4080
+ React39.useEffect(
4073
4081
  () => motionRadius.on("change", (v) => {
4074
4082
  if (asChildRef.current)
4075
4083
  asChildRef.current.style.borderRadius = `${v}px`;
4076
4084
  }),
4077
4085
  [motionRadius]
4078
4086
  );
4079
- React38.useEffect(() => {
4087
+ React39.useEffect(() => {
4080
4088
  springAnimate(motionRadius, animateRadius);
4081
4089
  }, [animateRadius, motionRadius]);
4082
4090
  const { ripples, onPointerDown, removeRipple } = useRippleState({
4083
4091
  disabled: loading
4084
4092
  });
4085
- const handleClick = React38.useCallback(
4093
+ const handleClick = React39.useCallback(
4086
4094
  (e) => {
4087
4095
  if (loading) return e.preventDefault();
4088
4096
  onClick == null ? void 0 : onClick(e);
4089
4097
  },
4090
4098
  [loading, onClick]
4091
4099
  );
4092
- const handleKeyDown = React38.useCallback(
4100
+ const handleKeyDown = React39.useCallback(
4093
4101
  (e) => {
4094
4102
  if (loading) return;
4095
4103
  if (onClick && (e.key === "Enter" || e.key === " ")) {
@@ -4123,7 +4131,7 @@ var ButtonComponent = React38.forwardRef(
4123
4131
  m.span,
4124
4132
  {
4125
4133
  layout: "size",
4126
- className: "inline-flex items-center gap-[inherit]",
4134
+ className: "inline-flex items-center h-full gap-[inherit]",
4127
4135
  transition: SPRING_TRANSITION,
4128
4136
  children: labelText
4129
4137
  }
@@ -4132,7 +4140,7 @@ var ButtonComponent = React38.forwardRef(
4132
4140
  ] });
4133
4141
  if (asChild) {
4134
4142
  const htmlProps = stripMotionProps(restProps);
4135
- const child = React38.Children.only(children);
4143
+ const child = React39.Children.only(children);
4136
4144
  const handleAsChildPointerDown = (e) => {
4137
4145
  springAnimate(motionRadius, pressedRadius);
4138
4146
  onPointerDown == null ? void 0 : onPointerDown(e);
@@ -4156,7 +4164,7 @@ var ButtonComponent = React38.forwardRef(
4156
4164
  }),
4157
4165
  className: buttonClassName
4158
4166
  }, htmlProps), {
4159
- children: React38.cloneElement(child, { children: innerContent })
4167
+ children: React39.cloneElement(child, { children: innerContent })
4160
4168
  })
4161
4169
  ) });
4162
4170
  }
@@ -4184,7 +4192,7 @@ var ButtonComponent = React38.forwardRef(
4184
4192
  }
4185
4193
  );
4186
4194
  ButtonComponent.displayName = "Button";
4187
- var Button = React38.memo(ButtonComponent);
4195
+ var Button = React39.memo(ButtonComponent);
4188
4196
  var SIZE_PADDING_MAP = {
4189
4197
  xs: "0.75rem",
4190
4198
  sm: "1rem",
@@ -4213,7 +4221,7 @@ var PRESSED_RADIUS_MAP = {
4213
4221
  lg: 28,
4214
4222
  xl: 40
4215
4223
  };
4216
- var ButtonGroupComponent = React38.forwardRef(
4224
+ var ButtonGroupComponent = React39.forwardRef(
4217
4225
  (_a, ref) => {
4218
4226
  var _b = _a, {
4219
4227
  className,
@@ -4234,13 +4242,13 @@ var ButtonGroupComponent = React38.forwardRef(
4234
4242
  "showCheck",
4235
4243
  "children"
4236
4244
  ]);
4237
- const [pressedIndex, setPressedIndex] = React38.useState(null);
4238
- const childrenArray = React38.useMemo(
4239
- () => React38.Children.toArray(children).filter(React38.isValidElement),
4245
+ const [pressedIndex, setPressedIndex] = React39.useState(null);
4246
+ const childrenArray = React39.useMemo(
4247
+ () => React39.Children.toArray(children).filter(React39.isValidElement),
4240
4248
  [children]
4241
4249
  );
4242
4250
  const count = childrenArray.length;
4243
- const handlePointerLeaveAndUp = React38.useCallback(() => {
4251
+ const handlePointerLeaveAndUp = React39.useCallback(() => {
4244
4252
  setPressedIndex(null);
4245
4253
  }, []);
4246
4254
  return /* @__PURE__ */ jsx(
@@ -4379,7 +4387,7 @@ var ButtonGroupComponent = React38.forwardRef(
4379
4387
  duration: 0.2
4380
4388
  };
4381
4389
  }
4382
- return React38.cloneElement(element, __spreadValues(__spreadProps(__spreadValues({
4390
+ return React39.cloneElement(element, __spreadValues(__spreadProps(__spreadValues({
4383
4391
  key: (_a2 = element.key) != null ? _a2 : index,
4384
4392
  tabIndex: isFirst ? 0 : -1,
4385
4393
  size: size || element.props.size,
@@ -4408,7 +4416,7 @@ var ButtonGroupComponent = React38.forwardRef(
4408
4416
  }
4409
4417
  );
4410
4418
  ButtonGroupComponent.displayName = "ButtonGroup";
4411
- var ButtonGroup = React38.memo(ButtonGroupComponent);
4419
+ var ButtonGroup = React39.memo(ButtonGroupComponent);
4412
4420
  var SHADOW = {
4413
4421
  level0: "none",
4414
4422
  level1: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)",
@@ -4467,7 +4475,7 @@ function useCardElevation(variant, disabled) {
4467
4475
  }
4468
4476
  };
4469
4477
  }
4470
- var CardImpl = React38.forwardRef(
4478
+ var CardImpl = React39.forwardRef(
4471
4479
  (_a, ref) => {
4472
4480
  var _b = _a, {
4473
4481
  className,
@@ -4565,7 +4573,7 @@ var CardImpl = React38.forwardRef(
4565
4573
  }
4566
4574
  );
4567
4575
  CardImpl.displayName = "Card";
4568
- var Card = React38.memo(CardImpl);
4576
+ var Card = React39.memo(CardImpl);
4569
4577
  var MD3_STANDARD = [0.2, 0, 0, 1];
4570
4578
  var MD3_FAST_EFFECTS = [0.3, 0, 1, 1];
4571
4579
  var CHECKMARK_PATH = "M 4.5 9.5 L 7.5 12.5 L 13.5 5.5";
@@ -4579,7 +4587,7 @@ var NEXT_STATE = {
4579
4587
  checked: "indeterminate",
4580
4588
  indeterminate: "unchecked"
4581
4589
  };
4582
- var CheckboxVisual = React38.memo(function CheckboxVisual2({
4590
+ var CheckboxVisual = React39.memo(function CheckboxVisual2({
4583
4591
  isSelected,
4584
4592
  isIndeterminate,
4585
4593
  containerBg,
@@ -4650,7 +4658,7 @@ var CheckboxVisual = React38.memo(function CheckboxVisual2({
4650
4658
  );
4651
4659
  });
4652
4660
  function useMergedRef2(externalRef, internalRef) {
4653
- return React38.useCallback(
4661
+ return React39.useCallback(
4654
4662
  (node) => {
4655
4663
  internalRef.current = node;
4656
4664
  if (!externalRef) return;
@@ -4663,7 +4671,7 @@ function useMergedRef2(externalRef, internalRef) {
4663
4671
  [externalRef, internalRef]
4664
4672
  );
4665
4673
  }
4666
- var CheckboxComponent = React38.forwardRef(
4674
+ var CheckboxComponent = React39.forwardRef(
4667
4675
  ({
4668
4676
  checked,
4669
4677
  defaultChecked = false,
@@ -4685,20 +4693,20 @@ var CheckboxComponent = React38.forwardRef(
4685
4693
  }, ref) => {
4686
4694
  var _a;
4687
4695
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
4688
- const generatedId = React38.useId();
4696
+ const generatedId = React39.useId();
4689
4697
  const inputId = idProp != null ? idProp : label ? `checkbox-${generatedId}` : void 0;
4690
- const [internalState, setInternalState] = React38.useState(
4698
+ const [internalState, setInternalState] = React39.useState(
4691
4699
  () => defaultChecked ? "checked" : "unchecked"
4692
4700
  );
4693
4701
  const isControlled = stateProp !== void 0 || checked !== void 0;
4694
4702
  const baseState = isControlled ? resolveState(checked, false, stateProp) : internalState;
4695
4703
  const effectiveState = indeterminate ? "indeterminate" : baseState;
4696
- const [ripples, setRipples] = React38.useState([]);
4697
- const removeRipple = React38.useCallback(
4704
+ const [ripples, setRipples] = React39.useState([]);
4705
+ const removeRipple = React39.useCallback(
4698
4706
  (id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
4699
4707
  []
4700
4708
  );
4701
- const onPointerDown = React38.useCallback(
4709
+ const onPointerDown = React39.useCallback(
4702
4710
  (e) => {
4703
4711
  if (disabled) return;
4704
4712
  const rect = e.currentTarget.getBoundingClientRect();
@@ -4712,7 +4720,7 @@ var CheckboxComponent = React38.forwardRef(
4712
4720
  },
4713
4721
  [disabled]
4714
4722
  );
4715
- const handleChange = React38.useCallback(
4723
+ const handleChange = React39.useCallback(
4716
4724
  (e) => {
4717
4725
  if (disabled) return;
4718
4726
  if (stateProp !== void 0) {
@@ -4738,9 +4746,9 @@ var CheckboxComponent = React38.forwardRef(
4738
4746
  onCheckedChange
4739
4747
  ]
4740
4748
  );
4741
- const inputRef = React38.useRef(null);
4749
+ const inputRef = React39.useRef(null);
4742
4750
  const mergedRef = useMergedRef2(ref, inputRef);
4743
- React38.useEffect(() => {
4751
+ React39.useEffect(() => {
4744
4752
  if (inputRef.current) {
4745
4753
  inputRef.current.indeterminate = effectiveState === "indeterminate";
4746
4754
  }
@@ -4865,13 +4873,13 @@ var CheckboxComponent = React38.forwardRef(
4865
4873
  }
4866
4874
  );
4867
4875
  CheckboxComponent.displayName = "Checkbox";
4868
- var Checkbox = React38.memo(CheckboxComponent);
4869
- var TriStateCheckboxComponent = React38.forwardRef((_a, ref) => {
4876
+ var Checkbox = React39.memo(CheckboxComponent);
4877
+ var TriStateCheckboxComponent = React39.forwardRef((_a, ref) => {
4870
4878
  var _b = _a, { state, onStateChange } = _b, rest = __objRest(_b, ["state", "onStateChange"]);
4871
4879
  return /* @__PURE__ */ jsx(Checkbox, __spreadValues({ ref, state, onStateChange }, rest));
4872
4880
  });
4873
4881
  TriStateCheckboxComponent.displayName = "TriStateCheckbox";
4874
- var TriStateCheckbox = React38.memo(TriStateCheckboxComponent);
4882
+ var TriStateCheckbox = React39.memo(TriStateCheckboxComponent);
4875
4883
  function CheckIcon({ className }) {
4876
4884
  return /* @__PURE__ */ jsx(
4877
4885
  "svg",
@@ -4965,7 +4973,7 @@ var chipVariants = cva(
4965
4973
  defaultVariants: { variant: "assist" }
4966
4974
  }
4967
4975
  );
4968
- var ChipImpl = React38.forwardRef(
4976
+ var ChipImpl = React39.forwardRef(
4969
4977
  (_a, ref) => {
4970
4978
  var _b = _a, {
4971
4979
  variant = "assist",
@@ -5001,7 +5009,7 @@ var ChipImpl = React38.forwardRef(
5001
5009
  const showCheckmark = isFilter && selected;
5002
5010
  const hasTrailingContent = !!trailingIcon || !!onRemove;
5003
5011
  const hasLeadingContent = isFilter || !!resolvedLeadingIcon;
5004
- const paddingClass = React38.useMemo(
5012
+ const paddingClass = React39.useMemo(
5005
5013
  () => cn(
5006
5014
  !isInput && !hasLeadingContent && !hasTrailingContent && "px-4",
5007
5015
  !isInput && hasLeadingContent && !hasTrailingContent && "pl-2 pr-4",
@@ -5014,7 +5022,7 @@ var ChipImpl = React38.forwardRef(
5014
5022
  ),
5015
5023
  [isInput, hasLeadingContent, hasTrailingContent]
5016
5024
  );
5017
- const stateClass = React38.useMemo(
5025
+ const stateClass = React39.useMemo(
5018
5026
  () => cn(
5019
5027
  (isFilter || isInput) && selected && "bg-m3-secondary-container text-m3-on-secondary-container border-none before:bg-m3-on-secondary-container",
5020
5028
  elevated && !selected && "bg-m3-surface-container-low border-none elevation-1",
@@ -5025,7 +5033,7 @@ var ChipImpl = React38.forwardRef(
5025
5033
  ),
5026
5034
  [isFilter, isInput, selected, elevated, disabled]
5027
5035
  );
5028
- const leadingIconColorClass = React38.useMemo(
5036
+ const leadingIconColorClass = React39.useMemo(
5029
5037
  () => cn(
5030
5038
  (variant === "assist" || variant === "suggestion") && "text-m3-primary",
5031
5039
  isFilter && !selected && "text-m3-primary",
@@ -5197,8 +5205,8 @@ var ChipImpl = React38.forwardRef(
5197
5205
  }
5198
5206
  );
5199
5207
  ChipImpl.displayName = "Chip";
5200
- var Chip = React38.memo(ChipImpl);
5201
- var ScrollArea = React38.forwardRef(
5208
+ var Chip = React39.memo(ChipImpl);
5209
+ var ScrollArea = React39.forwardRef(
5202
5210
  (_a, ref) => {
5203
5211
  var _b = _a, {
5204
5212
  className,
@@ -5206,14 +5214,16 @@ var ScrollArea = React38.forwardRef(
5206
5214
  children,
5207
5215
  type = "hover",
5208
5216
  orientation = "vertical",
5209
- scrollHideDelay = 600
5217
+ scrollHideDelay = 600,
5218
+ viewportRef
5210
5219
  } = _b, props = __objRest(_b, [
5211
5220
  "className",
5212
5221
  "viewportClassName",
5213
5222
  "children",
5214
5223
  "type",
5215
5224
  "orientation",
5216
- "scrollHideDelay"
5225
+ "scrollHideDelay",
5226
+ "viewportRef"
5217
5227
  ]);
5218
5228
  const radixType = type === "none" ? "always" : type;
5219
5229
  return /* @__PURE__ */ jsxs(
@@ -5228,6 +5238,7 @@ var ScrollArea = React38.forwardRef(
5228
5238
  /* @__PURE__ */ jsx(
5229
5239
  RadixScrollArea.Viewport,
5230
5240
  {
5241
+ ref: viewportRef,
5231
5242
  className: cn(
5232
5243
  "h-full w-full flex-1 min-h-0 min-w-0 rounded-[inherit]",
5233
5244
  "outline-none focus-visible:ring-2 focus-visible:ring-m3-primary focus-visible:ring-offset-1",
@@ -5257,7 +5268,7 @@ var ScrollArea = React38.forwardRef(
5257
5268
  }
5258
5269
  );
5259
5270
  ScrollArea.displayName = "ScrollArea";
5260
- var ScrollAreaScrollbar = React38.forwardRef((_a, ref) => {
5271
+ var ScrollAreaScrollbar = React39.forwardRef((_a, ref) => {
5261
5272
  var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
5262
5273
  return /* @__PURE__ */ jsx(
5263
5274
  RadixScrollArea.Scrollbar,
@@ -5287,7 +5298,7 @@ var ScrollAreaScrollbar = React38.forwardRef((_a, ref) => {
5287
5298
  );
5288
5299
  });
5289
5300
  ScrollAreaScrollbar.displayName = RadixScrollArea.Scrollbar.displayName;
5290
- var ScrollAreaCorner = React38.forwardRef((_a, ref) => {
5301
+ var ScrollAreaCorner = React39.forwardRef((_a, ref) => {
5291
5302
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5292
5303
  return /* @__PURE__ */ jsx(
5293
5304
  RadixScrollArea.Corner,
@@ -5564,7 +5575,7 @@ function resolveDisabledBgClass(colorStyle) {
5564
5575
  }
5565
5576
  return "disabled:text-m3-on-surface/[0.38]";
5566
5577
  }
5567
- var IconButtonComponent = React38.forwardRef(
5578
+ var IconButtonComponent = React39.forwardRef(
5568
5579
  (_a, ref) => {
5569
5580
  var _b = _a, {
5570
5581
  className,
@@ -5598,18 +5609,18 @@ var IconButtonComponent = React38.forwardRef(
5598
5609
  var _a2, _b2;
5599
5610
  const isToggle = variant === "toggle";
5600
5611
  const isSelected = isToggle && !!selected;
5601
- const resolvedColorClass = React38.useMemo(
5612
+ const resolvedColorClass = React39.useMemo(
5602
5613
  () => isSelected ? colorStyles[colorStyle].selected : colorStyles[colorStyle].default,
5603
5614
  [isSelected, colorStyle]
5604
5615
  );
5605
- const outlineWidthClass = React38.useMemo(
5616
+ const outlineWidthClass = React39.useMemo(
5606
5617
  () => {
5607
5618
  var _a3;
5608
5619
  return colorStyle === "outlined" && !isSelected ? (_a3 = SIZE_OUTLINE_WIDTH[size]) != null ? _a3 : "border" : "";
5609
5620
  },
5610
5621
  [colorStyle, isSelected, size]
5611
5622
  );
5612
- const disabledBgClass = React38.useMemo(
5623
+ const disabledBgClass = React39.useMemo(
5613
5624
  () => resolveDisabledBgClass(colorStyle),
5614
5625
  [colorStyle]
5615
5626
  );
@@ -5628,7 +5639,7 @@ var IconButtonComponent = React38.forwardRef(
5628
5639
  const { ripples, onPointerDown, removeRipple } = useRippleState({
5629
5640
  disabled: loading
5630
5641
  });
5631
- const handleClick = React38.useCallback(
5642
+ const handleClick = React39.useCallback(
5632
5643
  (e) => {
5633
5644
  if (loading) {
5634
5645
  e.preventDefault();
@@ -5638,7 +5649,7 @@ var IconButtonComponent = React38.forwardRef(
5638
5649
  },
5639
5650
  [loading, onClick]
5640
5651
  );
5641
- const handleKeyDown = React38.useCallback(
5652
+ const handleKeyDown = React39.useCallback(
5642
5653
  (e) => {
5643
5654
  if (loading) return;
5644
5655
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -5726,7 +5737,7 @@ var IconButtonComponent = React38.forwardRef(
5726
5737
  }
5727
5738
  );
5728
5739
  IconButtonComponent.displayName = "IconButton";
5729
- var IconButton = React38.memo(IconButtonComponent);
5740
+ var IconButton = React39.memo(IconButtonComponent);
5730
5741
  var MD3_SPRING = {
5731
5742
  type: "spring",
5732
5743
  stiffness: 400,
@@ -5763,9 +5774,9 @@ DialogTrigger.displayName = "DialogTrigger";
5763
5774
  var DialogPortal = ({
5764
5775
  open,
5765
5776
  children
5766
- }) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open ? React38.Children.toArray(children) : null }) });
5777
+ }) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open ? React39.Children.toArray(children) : null }) });
5767
5778
  DialogPortal.displayName = "DialogPortal";
5768
- var DialogOverlay = React38.forwardRef((_a, ref) => {
5779
+ var DialogOverlay = React39.forwardRef((_a, ref) => {
5769
5780
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5770
5781
  return /* @__PURE__ */ jsx(RadixDialog.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsx(
5771
5782
  m.div,
@@ -5776,7 +5787,7 @@ var DialogOverlay = React38.forwardRef((_a, ref) => {
5776
5787
  ) }));
5777
5788
  });
5778
5789
  DialogOverlay.displayName = "DialogOverlay";
5779
- var DialogContent = React38.forwardRef((_a, ref) => {
5790
+ var DialogContent = React39.forwardRef((_a, ref) => {
5780
5791
  var _b = _a, { className, children, hideCloseButton = false } = _b, props = __objRest(_b, ["className", "children", "hideCloseButton"]);
5781
5792
  return /* @__PURE__ */ jsx(
5782
5793
  RadixDialog.Content,
@@ -5816,7 +5827,7 @@ var DialogContent = React38.forwardRef((_a, ref) => {
5816
5827
  );
5817
5828
  });
5818
5829
  DialogContent.displayName = "DialogContent";
5819
- var DialogIcon = React38.forwardRef((_a, ref) => {
5830
+ var DialogIcon = React39.forwardRef((_a, ref) => {
5820
5831
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
5821
5832
  return /* @__PURE__ */ jsx(
5822
5833
  "div",
@@ -5839,7 +5850,7 @@ var DialogHeader = (_a) => {
5839
5850
  return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mb-4", className) }, props));
5840
5851
  };
5841
5852
  DialogHeader.displayName = "DialogHeader";
5842
- var DialogTitle = React38.forwardRef((_a, ref) => {
5853
+ var DialogTitle = React39.forwardRef((_a, ref) => {
5843
5854
  var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
5844
5855
  return /* @__PURE__ */ jsx(
5845
5856
  RadixDialog.Title,
@@ -5854,7 +5865,7 @@ var DialogTitle = React38.forwardRef((_a, ref) => {
5854
5865
  );
5855
5866
  });
5856
5867
  DialogTitle.displayName = "DialogTitle";
5857
- var DialogDescription = React38.forwardRef((_a, ref) => {
5868
+ var DialogDescription = React39.forwardRef((_a, ref) => {
5858
5869
  var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
5859
5870
  return /* @__PURE__ */ jsx(
5860
5871
  RadixDialog.Description,
@@ -5866,7 +5877,7 @@ var DialogDescription = React38.forwardRef((_a, ref) => {
5866
5877
  );
5867
5878
  });
5868
5879
  DialogDescription.displayName = "DialogDescription";
5869
- var DialogBody = React38.forwardRef((_a, ref) => {
5880
+ var DialogBody = React39.forwardRef((_a, ref) => {
5870
5881
  var _b = _a, { className, children, dir } = _b, props = __objRest(_b, ["className", "children", "dir"]);
5871
5882
  return /* @__PURE__ */ jsx(
5872
5883
  ScrollArea,
@@ -5897,7 +5908,7 @@ var DialogFooter = (_a) => {
5897
5908
  };
5898
5909
  DialogFooter.displayName = "DialogFooter";
5899
5910
  var DialogClose = RadixDialog.Close;
5900
- var DialogFullScreenContent = React38.forwardRef(
5911
+ var DialogFullScreenContent = React39.forwardRef(
5901
5912
  (_a, ref) => {
5902
5913
  var _b = _a, {
5903
5914
  className,
@@ -5980,7 +5991,7 @@ function buildWavePath(startX, endX, amplitude = 2, wavelength = 32, yCenter = 4
5980
5991
  }
5981
5992
  return d;
5982
5993
  }
5983
- var DividerImpl = React38.forwardRef(
5994
+ var DividerImpl = React39.forwardRef(
5984
5995
  (_a, ref) => {
5985
5996
  var _b = _a, {
5986
5997
  variant = "full-bleed",
@@ -6100,7 +6111,7 @@ var DividerImpl = React38.forwardRef(
6100
6111
  }
6101
6112
  );
6102
6113
  DividerImpl.displayName = "Divider";
6103
- var Divider = React38.memo(DividerImpl);
6114
+ var Divider = React39.memo(DividerImpl);
6104
6115
  var MD3_DRAWER_SPRING = {
6105
6116
  type: "spring",
6106
6117
  stiffness: 350,
@@ -6137,7 +6148,7 @@ var DrawerPortal = ({
6137
6148
  open,
6138
6149
  children
6139
6150
  }) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: open && children }) });
6140
- var DrawerOverlay = React38.forwardRef((_a, ref) => {
6151
+ var DrawerOverlay = React39.forwardRef((_a, ref) => {
6141
6152
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6142
6153
  return /* @__PURE__ */ jsx(RadixDialog.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsx(
6143
6154
  m.div,
@@ -6148,7 +6159,7 @@ var DrawerOverlay = React38.forwardRef((_a, ref) => {
6148
6159
  ) }));
6149
6160
  });
6150
6161
  DrawerOverlay.displayName = "DrawerOverlay";
6151
- var DrawerContent = React38.forwardRef(
6162
+ var DrawerContent = React39.forwardRef(
6152
6163
  (_a, ref) => {
6153
6164
  var _b = _a, {
6154
6165
  className,
@@ -6227,7 +6238,7 @@ var DrawerFooter = (_a) => {
6227
6238
  return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mt-4", className) }, props));
6228
6239
  };
6229
6240
  DrawerFooter.displayName = "DrawerFooter";
6230
- var DrawerTitle = React38.forwardRef((_a, ref) => {
6241
+ var DrawerTitle = React39.forwardRef((_a, ref) => {
6231
6242
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6232
6243
  return /* @__PURE__ */ jsx(
6233
6244
  RadixDialog.Title,
@@ -6241,7 +6252,7 @@ var DrawerTitle = React38.forwardRef((_a, ref) => {
6241
6252
  );
6242
6253
  });
6243
6254
  DrawerTitle.displayName = "DrawerTitle";
6244
- var DrawerDescription = React38.forwardRef((_a, ref) => {
6255
+ var DrawerDescription = React39.forwardRef((_a, ref) => {
6245
6256
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6246
6257
  return /* @__PURE__ */ jsx(
6247
6258
  RadixDialog.Description,
@@ -6322,7 +6333,7 @@ function FABPosition({
6322
6333
  }
6323
6334
  );
6324
6335
  }
6325
- var FABComponent = React38.forwardRef(
6336
+ var FABComponent = React39.forwardRef(
6326
6337
  (_a, ref) => {
6327
6338
  var _b = _a, {
6328
6339
  className,
@@ -6367,7 +6378,7 @@ var FABComponent = React38.forwardRef(
6367
6378
  const { ripples, onPointerDown, removeRipple } = useRippleState({
6368
6379
  disabled: loading
6369
6380
  });
6370
- const handleClick = React38.useCallback(
6381
+ const handleClick = React39.useCallback(
6371
6382
  (e) => {
6372
6383
  if (loading) {
6373
6384
  e.preventDefault();
@@ -6377,7 +6388,7 @@ var FABComponent = React38.forwardRef(
6377
6388
  },
6378
6389
  [loading, onClick]
6379
6390
  );
6380
- const handleKeyDown = React38.useCallback(
6391
+ const handleKeyDown = React39.useCallback(
6381
6392
  (e) => {
6382
6393
  if (loading) return;
6383
6394
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -6486,7 +6497,7 @@ var FABComponent = React38.forwardRef(
6486
6497
  }
6487
6498
  );
6488
6499
  FABComponent.displayName = "FAB";
6489
- var FAB = React38.memo(FABComponent);
6500
+ var FAB = React39.memo(FABComponent);
6490
6501
  var SPRING_NORMAL = { stiffness: 700, damping: 40 };
6491
6502
  var SPRING_REDUCED = { stiffness: 1e4, damping: 100 };
6492
6503
  var FOCUS_DELAY_MS = 50;
@@ -6594,7 +6605,7 @@ function CloseIcon3() {
6594
6605
  function defaultFabIcon(progress) {
6595
6606
  return progress > 0.5 ? /* @__PURE__ */ jsx(CloseIcon3, {}) : /* @__PURE__ */ jsx(AddIcon, {});
6596
6607
  }
6597
- var ToggleFABComponent = React38.forwardRef(
6608
+ var ToggleFABComponent = React39.forwardRef(
6598
6609
  ({
6599
6610
  expanded,
6600
6611
  onToggle,
@@ -6612,7 +6623,7 @@ var ToggleFABComponent = React38.forwardRef(
6612
6623
  const sizeTokens = (_b = TOGGLE_FAB_SIZES[fabSize]) != null ? _b : TOGGLE_FAB_SIZES.baseline;
6613
6624
  const springConfig = prefersReduced ? SPRING_REDUCED : SPRING_NORMAL;
6614
6625
  const checkedProgress = useSpring(expanded ? 1 : 0, springConfig);
6615
- React38.useEffect(() => {
6626
+ React39.useEffect(() => {
6616
6627
  checkedProgress.set(expanded ? 1 : 0);
6617
6628
  }, [expanded, checkedProgress]);
6618
6629
  const borderRadius = useTransform(
@@ -6620,12 +6631,12 @@ var ToggleFABComponent = React38.forwardRef(
6620
6631
  [0, 1],
6621
6632
  [`${sizeTokens.initialRadius}px`, `${sizeTokens.finalRadius}px`]
6622
6633
  );
6623
- const [iconProgress, setIconProgress] = React38.useState(expanded ? 1 : 0);
6624
- React38.useEffect(() => {
6634
+ const [iconProgress, setIconProgress] = React39.useState(expanded ? 1 : 0);
6635
+ React39.useEffect(() => {
6625
6636
  return checkedProgress.on("change", setIconProgress);
6626
6637
  }, [checkedProgress]);
6627
6638
  const { ripples, onPointerDown, removeRipple } = useRippleState();
6628
- const handleClick = React38.useCallback(() => {
6639
+ const handleClick = React39.useCallback(() => {
6629
6640
  onToggle(!expanded);
6630
6641
  }, [expanded, onToggle]);
6631
6642
  return /* @__PURE__ */ jsxs(
@@ -6674,7 +6685,7 @@ var ToggleFABComponent = React38.forwardRef(
6674
6685
  }
6675
6686
  );
6676
6687
  ToggleFABComponent.displayName = "ToggleFAB";
6677
- var ToggleFAB = React38.memo(ToggleFABComponent);
6688
+ var ToggleFAB = React39.memo(ToggleFABComponent);
6678
6689
  function FABMenuItem({
6679
6690
  icon,
6680
6691
  label,
@@ -6687,7 +6698,7 @@ function FABMenuItem({
6687
6698
  var _a;
6688
6699
  const colors = (_a = MENU_ITEM_COLORS[colorVariant]) != null ? _a : MENU_ITEM_COLORS.primary;
6689
6700
  const { ripples, onPointerDown, removeRipple } = useRippleState({ disabled });
6690
- const handleClick = React38.useCallback(
6701
+ const handleClick = React39.useCallback(
6691
6702
  (e) => {
6692
6703
  if (disabled) {
6693
6704
  e.preventDefault();
@@ -6697,7 +6708,7 @@ function FABMenuItem({
6697
6708
  },
6698
6709
  [disabled, onClick]
6699
6710
  );
6700
- const handleKeyDown = React38.useCallback(
6711
+ const handleKeyDown = React39.useCallback(
6701
6712
  (e) => {
6702
6713
  if (disabled) return;
6703
6714
  if (e.key === "Enter" || e.key === " ") {
@@ -6764,13 +6775,13 @@ function FABMenu({
6764
6775
  focusLast = true,
6765
6776
  "aria-label": ariaLabel
6766
6777
  }) {
6767
- const fabId = React38.useId();
6768
- const menuId = React38.useId();
6769
- const toggleRef = React38.useRef(null);
6770
- const itemRefs = React38.useRef([]);
6771
- const [focusedIndex, setFocusedIndex] = React38.useState(-1);
6772
- const reversedItems = React38.useMemo(() => [...items].reverse(), [items]);
6773
- const focusItem = React38.useCallback((index) => {
6778
+ const fabId = React39.useId();
6779
+ const menuId = React39.useId();
6780
+ const toggleRef = React39.useRef(null);
6781
+ const itemRefs = React39.useRef([]);
6782
+ const [focusedIndex, setFocusedIndex] = React39.useState(-1);
6783
+ const reversedItems = React39.useMemo(() => [...items].reverse(), [items]);
6784
+ const focusItem = React39.useCallback((index) => {
6774
6785
  var _a;
6775
6786
  const clampedIndex = Math.max(
6776
6787
  0,
@@ -6779,8 +6790,8 @@ function FABMenu({
6779
6790
  setFocusedIndex(clampedIndex);
6780
6791
  (_a = itemRefs.current[clampedIndex]) == null ? void 0 : _a.focus();
6781
6792
  }, []);
6782
- const wasExpandedRef = React38.useRef(false);
6783
- React38.useEffect(() => {
6793
+ const wasExpandedRef = React39.useRef(false);
6794
+ React39.useEffect(() => {
6784
6795
  var _a;
6785
6796
  if (expanded) {
6786
6797
  wasExpandedRef.current = true;
@@ -6795,7 +6806,7 @@ function FABMenu({
6795
6806
  wasExpandedRef.current = false;
6796
6807
  setFocusedIndex(-1);
6797
6808
  }, [expanded, focusLast, items.length, focusItem]);
6798
- const handleMenuKeyDown = React38.useCallback(
6809
+ const handleMenuKeyDown = React39.useCallback(
6799
6810
  (e) => {
6800
6811
  if (!expanded) return;
6801
6812
  const lastIndex = items.length - 1;
@@ -6919,7 +6930,296 @@ function FABMenu({
6919
6930
  )
6920
6931
  ] });
6921
6932
  }
6922
- var NavigationRailContext = React38.createContext({ variant: "collapsed", labelVisibility: "labeled", xr: false });
6933
+ var NavigationBarContext = React39.createContext({ variant: "flexible" });
6934
+ function cloneIconWithFill(icon, selected) {
6935
+ if (!React39.isValidElement(icon)) return icon;
6936
+ if (icon.type === Icon) {
6937
+ return React39.cloneElement(
6938
+ icon,
6939
+ { fill: selected ? 1 : 0, animateFill: true }
6940
+ );
6941
+ }
6942
+ return icon;
6943
+ }
6944
+ function ActivePill() {
6945
+ const { activeIndicatorTransition } = React39.useContext(NavigationBarContext);
6946
+ return /* @__PURE__ */ jsx(
6947
+ m.div,
6948
+ {
6949
+ className: "absolute inset-0 bg-m3-secondary-container pointer-events-none",
6950
+ style: {
6951
+ borderRadius: 9999,
6952
+ zIndex: 0
6953
+ },
6954
+ initial: { opacity: 0, scale: 0.5 },
6955
+ animate: { opacity: 1, scale: 1 },
6956
+ exit: { opacity: 0, scale: 0.5 },
6957
+ transition: activeIndicatorTransition || SPRING_TRANSITION_EXPRESSIVE
6958
+ }
6959
+ );
6960
+ }
6961
+ function HoverStateLayer() {
6962
+ return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full bg-m3-on-surface opacity-0 group-hover:opacity-[0.08] group-focus-visible:opacity-[0.10] active:opacity-[0.10] transition-opacity duration-200 pointer-events-none z-0" });
6963
+ }
6964
+ function RippleLayer({ ripples, onRippleDone }) {
6965
+ return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full overflow-hidden pointer-events-none z-0", children: /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone }) });
6966
+ }
6967
+ function IconContainer({ selected, badge, children }) {
6968
+ return /* @__PURE__ */ jsxs(
6969
+ "div",
6970
+ {
6971
+ "aria-hidden": "true",
6972
+ className: cn(
6973
+ "relative flex items-center justify-center size-6 transition-colors duration-200 shrink-0",
6974
+ selected ? "text-m3-on-secondary-container" : "text-m3-on-surface-variant"
6975
+ ),
6976
+ children: [
6977
+ children,
6978
+ badge && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 flex min-w-3 h-3 items-center justify-center rounded-full bg-m3-error px-1 text-[10px] font-medium leading-none tracking-normal text-m3-on-error ring-[1.5px] ring-m3-surface", children: badge })
6979
+ ]
6980
+ }
6981
+ );
6982
+ }
6983
+ var NavigationBarItemComponent = React39.forwardRef(
6984
+ ({
6985
+ selected,
6986
+ icon,
6987
+ label,
6988
+ onClick,
6989
+ disabled = false,
6990
+ badge,
6991
+ className,
6992
+ "aria-label": ariaLabelProp
6993
+ }, ref) => {
6994
+ const { variant, itemLayout } = React39.useContext(NavigationBarContext);
6995
+ const isForcedHorizontal = itemLayout === "horizontal";
6996
+ const isResponsiveHorizontal = (variant === "flexible" || variant === "xr") && itemLayout === void 0;
6997
+ const { ripples, onPointerDown, removeRipple } = useRippleState({
6998
+ disabled
6999
+ });
7000
+ const handleClick = React39.useCallback(
7001
+ (e) => {
7002
+ if (disabled) {
7003
+ e.preventDefault();
7004
+ return;
7005
+ }
7006
+ if (selected) {
7007
+ if (typeof window !== "undefined" && window.scrollY > 0) {
7008
+ window.scrollTo({ top: 0, behavior: "smooth" });
7009
+ }
7010
+ return;
7011
+ }
7012
+ onClick == null ? void 0 : onClick();
7013
+ },
7014
+ [disabled, selected, onClick]
7015
+ );
7016
+ const filledIcon = cloneIconWithFill(icon, selected);
7017
+ return /* @__PURE__ */ jsxs(
7018
+ m.button,
7019
+ {
7020
+ ref,
7021
+ type: "button",
7022
+ role: "menuitem",
7023
+ "aria-current": selected ? "page" : void 0,
7024
+ "aria-disabled": disabled ? true : void 0,
7025
+ "aria-label": ariaLabelProp || (typeof label === "string" ? label : void 0),
7026
+ onClick: handleClick,
7027
+ onPointerDown,
7028
+ className: cn(
7029
+ "group relative flex flex-1 cursor-pointer transition-colors duration-200 outline-none select-none h-full",
7030
+ variant === "xr" ? "items-center justify-center max-[599px]:min-w-28 max-[599px]:max-w-28 max-[599px]:items-start max-[599px]:pt-3 max-[599px]:pb-4" : "items-center justify-center",
7031
+ disabled && "pointer-events-none opacity-[0.38]",
7032
+ className
7033
+ ),
7034
+ children: [
7035
+ /* @__PURE__ */ jsxs(
7036
+ "div",
7037
+ {
7038
+ className: cn(
7039
+ "relative flex items-center justify-center flex-col gap-y-1 w-full",
7040
+ isResponsiveHorizontal && "min-[600px]:flex-row min-[600px]:gap-y-0 min-[600px]:gap-x-1 min-[600px]:h-10 min-[600px]:px-4 min-[600px]:rounded-full min-[600px]:w-auto min-[600px]:max-w-42",
7041
+ isForcedHorizontal && "flex-row gap-y-0 gap-x-1 h-10 px-4 rounded-full w-auto max-w-42"
7042
+ ),
7043
+ children: [
7044
+ /* @__PURE__ */ jsxs(
7045
+ "div",
7046
+ {
7047
+ className: cn(
7048
+ "absolute inset-0 z-0 hidden",
7049
+ isResponsiveHorizontal && "min-[600px]:block",
7050
+ isForcedHorizontal && "block!"
7051
+ ),
7052
+ children: [
7053
+ /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill, {}) }),
7054
+ /* @__PURE__ */ jsx(HoverStateLayer, {}),
7055
+ /* @__PURE__ */ jsx(RippleLayer, { ripples, onRippleDone: removeRipple })
7056
+ ]
7057
+ }
7058
+ ),
7059
+ /* @__PURE__ */ jsxs(
7060
+ "div",
7061
+ {
7062
+ className: cn(
7063
+ "relative flex items-center justify-center shrink-0 z-10",
7064
+ "h-8 w-16 mx-auto rounded-full",
7065
+ isResponsiveHorizontal && "min-[600px]:size-6 min-[600px]:w-auto min-[600px]:h-auto",
7066
+ isForcedHorizontal && "size-6 w-auto h-auto"
7067
+ ),
7068
+ children: [
7069
+ /* @__PURE__ */ jsxs(
7070
+ "div",
7071
+ {
7072
+ className: cn(
7073
+ "absolute inset-0 z-0",
7074
+ isResponsiveHorizontal && "min-[600px]:hidden",
7075
+ isForcedHorizontal && "hidden"
7076
+ ),
7077
+ children: [
7078
+ /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill, {}) }),
7079
+ /* @__PURE__ */ jsx(HoverStateLayer, {}),
7080
+ /* @__PURE__ */ jsx(RippleLayer, { ripples, onRippleDone: removeRipple })
7081
+ ]
7082
+ }
7083
+ ),
7084
+ /* @__PURE__ */ jsx("div", { className: "relative z-10 flex size-6 items-center justify-center text-current", children: /* @__PURE__ */ jsx(IconContainer, { selected, badge, children: filledIcon }) })
7085
+ ]
7086
+ }
7087
+ ),
7088
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsx(
7089
+ "span",
7090
+ {
7091
+ className: cn(
7092
+ "z-10 transition-all duration-200 truncate px-1",
7093
+ selected ? "text-m3-on-surface" : "text-m3-on-surface-variant",
7094
+ "font-medium text-[12px] leading-4 tracking-[0.5px]"
7095
+ ),
7096
+ children: label
7097
+ },
7098
+ "nav-label"
7099
+ ) })
7100
+ ]
7101
+ }
7102
+ ),
7103
+ /* @__PURE__ */ jsx(TouchTarget, {})
7104
+ ]
7105
+ }
7106
+ );
7107
+ }
7108
+ );
7109
+ NavigationBarItemComponent.displayName = "NavigationBarItem";
7110
+ var NavigationBarItem = React39.memo(NavigationBarItemComponent);
7111
+ var navContainerVariants = cva(
7112
+ "flex items-center justify-center select-none transition-transform duration-300 z-50",
7113
+ {
7114
+ variants: {
7115
+ variant: {
7116
+ flexible: "bottom-0 left-0 right-0 w-full h-16 pb-safe",
7117
+ baseline: "bottom-0 left-0 right-0 w-full h-20 pb-safe",
7118
+ xr: "bottom-6 left-1/2 -translate-x-1/2 w-auto max-w-fit h-20 min-[600px]:h-16 rounded-[48px] px-2"
7119
+ },
7120
+ position: {
7121
+ fixed: "fixed",
7122
+ absolute: "absolute"
7123
+ },
7124
+ elevated: {
7125
+ true: "shadow-[0_-1px_3px_rgba(0,0,0,0.1)]",
7126
+ false: "shadow-none"
7127
+ }
7128
+ },
7129
+ defaultVariants: {
7130
+ variant: "flexible",
7131
+ position: "fixed",
7132
+ elevated: false
7133
+ }
7134
+ }
7135
+ );
7136
+ var NavigationBarComponent = React39.forwardRef(
7137
+ ({
7138
+ variant = "flexible",
7139
+ itemLayout,
7140
+ hideOnScroll = false,
7141
+ elevated = false,
7142
+ fixed = true,
7143
+ scrollContainerRef,
7144
+ activeIndicatorTransition,
7145
+ children,
7146
+ className,
7147
+ style
7148
+ }, ref) => {
7149
+ const [isVisible, setIsVisible] = React39.useState(true);
7150
+ const lastScrollY = React39.useRef(
7151
+ typeof window !== "undefined" ? window.scrollY : 0
7152
+ );
7153
+ React39.useEffect(() => {
7154
+ if (typeof window === "undefined" || !hideOnScroll) {
7155
+ setIsVisible(true);
7156
+ return;
7157
+ }
7158
+ const prefersReducedMotion = window.matchMedia(
7159
+ "(prefers-reduced-motion: reduce)"
7160
+ ).matches;
7161
+ if (prefersReducedMotion) {
7162
+ setIsVisible(true);
7163
+ return;
7164
+ }
7165
+ let ticking = false;
7166
+ const handleScroll = () => {
7167
+ if (ticking) return;
7168
+ ticking = true;
7169
+ window.requestAnimationFrame(() => {
7170
+ const currentScrollY = (scrollContainerRef == null ? void 0 : scrollContainerRef.current) ? scrollContainerRef.current.scrollTop : window.scrollY;
7171
+ if (currentScrollY <= 0 || currentScrollY < lastScrollY.current) {
7172
+ setIsVisible(true);
7173
+ } else if (currentScrollY > lastScrollY.current) {
7174
+ setIsVisible(false);
7175
+ }
7176
+ lastScrollY.current = currentScrollY;
7177
+ ticking = false;
7178
+ });
7179
+ };
7180
+ const target = (scrollContainerRef == null ? void 0 : scrollContainerRef.current) || window;
7181
+ target.addEventListener("scroll", handleScroll, { passive: true });
7182
+ return () => target.removeEventListener("scroll", handleScroll);
7183
+ }, [hideOnScroll, scrollContainerRef]);
7184
+ const navBaseClasses = cn(
7185
+ navContainerVariants({
7186
+ variant,
7187
+ elevated,
7188
+ position: fixed ? "fixed" : "absolute"
7189
+ }),
7190
+ variant === "xr" ? "bg-m3-surface border border-white/5 shadow-xl" : "bg-m3-surface-container",
7191
+ className
7192
+ );
7193
+ return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(NavigationBarContext.Provider, { value: { variant, itemLayout, activeIndicatorTransition }, children: /* @__PURE__ */ jsx(
7194
+ m.nav,
7195
+ {
7196
+ ref,
7197
+ role: "navigation",
7198
+ "aria-label": "Main navigation",
7199
+ className: navBaseClasses,
7200
+ style,
7201
+ initial: false,
7202
+ animate: { y: isVisible ? "0%" : "100%" },
7203
+ transition: { type: "tween", duration: 0.3, ease: "easeInOut" },
7204
+ children: /* @__PURE__ */ jsx(
7205
+ "div",
7206
+ {
7207
+ role: "menubar",
7208
+ "aria-orientation": "horizontal",
7209
+ className: cn(
7210
+ "flex w-full h-full mx-auto",
7211
+ variant === "xr" ? "gap-0 min-[600px]:gap-1.5" : "max-w-7xl gap-1.5"
7212
+ ),
7213
+ children
7214
+ }
7215
+ )
7216
+ }
7217
+ ) }) });
7218
+ }
7219
+ );
7220
+ NavigationBarComponent.displayName = "NavigationBar";
7221
+ var NavigationBar = React39.memo(NavigationBarComponent);
7222
+ var NavigationRailContext = React39.createContext({ variant: "collapsed", labelVisibility: "labeled" });
6923
7223
  var MD3_MODAL_TRANSITION = {
6924
7224
  type: "tween",
6925
7225
  ease: [0.05, 0.7, 0.1, 1],
@@ -6930,17 +7230,14 @@ var railContainerVariants = cva(
6930
7230
  {
6931
7231
  variants: {
6932
7232
  variant: {
6933
- collapsed: "items-center",
6934
- expanded: "items-start",
6935
- modal: "bg-m3-surface shadow-lg rounded-r-[var(--m3-shape-corner-large)]"
7233
+ collapsed: "items-center h-full pt-11 pb-4 shadow-none bg-m3-surface rounded-none",
7234
+ expanded: "items-start h-full pt-11 pb-4 shadow-none bg-m3-surface rounded-none",
7235
+ modal: "bg-m3-surface shadow-lg rounded-r-[var(--m3-shape-corner-large)] h-full pt-11 pb-4",
7236
+ xr: "h-fit py-5 rounded-[48px] shadow-xl bg-m3-surface border border-white/5"
6936
7237
  },
6937
7238
  narrow: {
6938
7239
  true: "w-20",
6939
7240
  false: "w-24"
6940
- },
6941
- xr: {
6942
- true: "h-fit py-5 rounded-[48px] shadow-xl bg-m3-surface border border-white/5",
6943
- false: "h-full pt-11 pb-4 shadow-none bg-m3-surface rounded-none"
6944
7241
  }
6945
7242
  },
6946
7243
  compoundVariants: [
@@ -6949,15 +7246,14 @@ var railContainerVariants = cva(
6949
7246
  ],
6950
7247
  defaultVariants: {
6951
7248
  variant: "collapsed",
6952
- narrow: false,
6953
- xr: false
7249
+ narrow: false
6954
7250
  }
6955
7251
  }
6956
7252
  );
6957
- function cloneIconWithFill(icon, selected) {
6958
- if (!React38.isValidElement(icon)) return icon;
7253
+ function cloneIconWithFill2(icon, selected) {
7254
+ if (!React39.isValidElement(icon)) return icon;
6959
7255
  if (icon.type === Icon) {
6960
- return React38.cloneElement(
7256
+ return React39.cloneElement(
6961
7257
  icon,
6962
7258
  { fill: selected ? 1 : 0, animateFill: true }
6963
7259
  );
@@ -6979,27 +7275,28 @@ function setFocusedItem(items, index) {
6979
7275
  target.focus();
6980
7276
  }
6981
7277
  }
6982
- function ActivePill({ layoutId, disableInitial = false }) {
7278
+ function ActivePill2({ layoutId, disableInitial = false }) {
7279
+ const { activeIndicatorTransition } = React39.useContext(NavigationRailContext);
6983
7280
  return /* @__PURE__ */ jsx(
6984
7281
  m.div,
6985
7282
  {
6986
7283
  layoutId,
6987
7284
  className: "absolute inset-0 bg-m3-secondary-container pointer-events-none",
6988
- style: { borderRadius: 9999, zIndex: 0 },
6989
- initial: disableInitial ? false : { opacity: 0 },
6990
- animate: { opacity: 1 },
6991
- exit: { opacity: 0 },
6992
- transition: SPRING_TRANSITION
7285
+ style: { borderRadius: 9999, zIndex: 0, originX: 0.5, originY: 0.5 },
7286
+ initial: disableInitial ? false : { opacity: 0, scale: 0.5 },
7287
+ animate: { opacity: 1, scale: 1 },
7288
+ exit: { opacity: 0, scale: 0.5, transition: { duration: 0.15 } },
7289
+ transition: activeIndicatorTransition || SPRING_TRANSITION_EXPRESSIVE
6993
7290
  }
6994
7291
  );
6995
7292
  }
6996
- function HoverStateLayer() {
7293
+ function HoverStateLayer2() {
6997
7294
  return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full bg-m3-on-surface opacity-0 group-hover:opacity-[0.08] transition-opacity duration-200 pointer-events-none z-0" });
6998
7295
  }
6999
- function RippleLayer({ ripples, onRippleDone }) {
7296
+ function RippleLayer2({ ripples, onRippleDone }) {
7000
7297
  return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full overflow-hidden pointer-events-none z-0", children: /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone }) });
7001
7298
  }
7002
- function IconContainer({ selected, badge, children }) {
7299
+ function IconContainer2({ selected, badge, children }) {
7003
7300
  return /* @__PURE__ */ jsxs(
7004
7301
  "div",
7005
7302
  {
@@ -7015,7 +7312,7 @@ function IconContainer({ selected, badge, children }) {
7015
7312
  }
7016
7313
  );
7017
7314
  }
7018
- var NavigationRailItemComponent = React38.forwardRef(
7315
+ var NavigationRailItemComponent = React39.forwardRef(
7019
7316
  ({
7020
7317
  selected,
7021
7318
  icon,
@@ -7026,18 +7323,18 @@ var NavigationRailItemComponent = React38.forwardRef(
7026
7323
  className,
7027
7324
  "aria-label": ariaLabelProp
7028
7325
  }, ref) => {
7029
- const { variant, labelVisibility } = React38.useContext(
7326
+ const { variant, labelVisibility } = React39.useContext(
7030
7327
  NavigationRailContext
7031
7328
  );
7032
7329
  const isExpanded = variant === "expanded" || variant === "modal";
7033
7330
  const isModal = variant === "modal";
7034
7331
  const enableLayout = !isModal;
7035
- const activePillId = `rail-pill-${React38.useId()}`;
7332
+ const activePillId = `rail-pill-${React39.useId()}`;
7036
7333
  const { ripples, onPointerDown, removeRipple } = useRippleState({
7037
7334
  disabled
7038
7335
  });
7039
7336
  const showLabel = isExpanded || labelVisibility === "labeled" || labelVisibility === "auto" && selected;
7040
- const handleClick = React38.useCallback(
7337
+ const handleClick = React39.useCallback(
7041
7338
  (e) => {
7042
7339
  if (disabled) {
7043
7340
  e.preventDefault();
@@ -7047,7 +7344,7 @@ var NavigationRailItemComponent = React38.forwardRef(
7047
7344
  },
7048
7345
  [disabled, onClick]
7049
7346
  );
7050
- const filledIcon = cloneIconWithFill(icon, selected);
7347
+ const filledIcon = cloneIconWithFill2(icon, selected);
7051
7348
  const labelInitial = isModal ? false : { opacity: 0, x: isExpanded ? -12 : 0, y: isExpanded ? 0 : -8 };
7052
7349
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
7053
7350
  m.button,
@@ -7080,14 +7377,14 @@ var NavigationRailItemComponent = React38.forwardRef(
7080
7377
  ),
7081
7378
  children: [
7082
7379
  isExpanded && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(
7083
- ActivePill,
7380
+ ActivePill2,
7084
7381
  {
7085
7382
  layoutId: activePillId,
7086
7383
  disableInitial: isModal
7087
7384
  }
7088
7385
  ) }),
7089
- isExpanded && /* @__PURE__ */ jsx(HoverStateLayer, {}),
7090
- isExpanded && /* @__PURE__ */ jsx(RippleLayer, { ripples, onRippleDone: removeRipple }),
7386
+ isExpanded && /* @__PURE__ */ jsx(HoverStateLayer2, {}),
7387
+ isExpanded && /* @__PURE__ */ jsx(RippleLayer2, { ripples, onRippleDone: removeRipple }),
7091
7388
  /* @__PURE__ */ jsxs(
7092
7389
  m.div,
7093
7390
  {
@@ -7098,15 +7395,15 @@ var NavigationRailItemComponent = React38.forwardRef(
7098
7395
  ),
7099
7396
  style: { borderRadius: 9999 },
7100
7397
  children: [
7101
- !isExpanded && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill, { layoutId: activePillId }) }),
7102
- !isExpanded && /* @__PURE__ */ jsx(HoverStateLayer, {}),
7103
- !isExpanded && /* @__PURE__ */ jsx(RippleLayer, { ripples, onRippleDone: removeRipple }),
7398
+ !isExpanded && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill2, { layoutId: activePillId }) }),
7399
+ !isExpanded && /* @__PURE__ */ jsx(HoverStateLayer2, {}),
7400
+ !isExpanded && /* @__PURE__ */ jsx(RippleLayer2, { ripples, onRippleDone: removeRipple }),
7104
7401
  /* @__PURE__ */ jsx(
7105
7402
  m.div,
7106
7403
  {
7107
7404
  layout: enableLayout ? "position" : false,
7108
7405
  className: "relative z-10 flex size-6 items-center justify-center text-current",
7109
- children: /* @__PURE__ */ jsx(IconContainer, { selected, badge, children: filledIcon })
7406
+ children: /* @__PURE__ */ jsx(IconContainer2, { selected, badge, children: filledIcon })
7110
7407
  }
7111
7408
  )
7112
7409
  ]
@@ -7139,9 +7436,9 @@ var NavigationRailItemComponent = React38.forwardRef(
7139
7436
  }
7140
7437
  );
7141
7438
  NavigationRailItemComponent.displayName = "NavigationRailItem";
7142
- var NavigationRailItem = React38.memo(NavigationRailItemComponent);
7439
+ var NavigationRailItem = React39.memo(NavigationRailItemComponent);
7143
7440
  function useRoving(navRef) {
7144
- React38.useEffect(() => {
7441
+ React39.useEffect(() => {
7145
7442
  if (!navRef.current) return;
7146
7443
  const items = getMenuItems(navRef.current);
7147
7444
  const selected = items.find(
@@ -7151,7 +7448,7 @@ function useRoving(navRef) {
7151
7448
  const firstFocusable = selected != null ? selected : items[0];
7152
7449
  if (firstFocusable) firstFocusable.tabIndex = 0;
7153
7450
  }, [navRef]);
7154
- return React38.useCallback(
7451
+ return React39.useCallback(
7155
7452
  (e) => {
7156
7453
  if (!navRef.current) return;
7157
7454
  const items = getMenuItems(navRef.current);
@@ -7179,29 +7476,29 @@ function useRoving(navRef) {
7179
7476
  [navRef]
7180
7477
  );
7181
7478
  }
7182
- var NavigationRailComponent = React38.forwardRef(
7479
+ var NavigationRailComponent = React39.forwardRef(
7183
7480
  ({
7184
7481
  variant = "collapsed",
7185
7482
  labelVisibility = "labeled",
7186
7483
  header,
7187
7484
  fab,
7485
+ fabPlacement = "contained",
7188
7486
  footer,
7189
7487
  narrow = false,
7190
7488
  open = false,
7191
- xr = false,
7192
7489
  onClose,
7490
+ activeIndicatorTransition,
7193
7491
  children,
7194
7492
  className,
7195
7493
  style
7196
7494
  }, ref) => {
7197
7495
  const isModal = variant === "modal";
7198
- const isXr = xr === true || xr === "contained" || xr === "spatialized";
7199
- const xrMode = xr === "spatialized" ? "spatialized" : "contained";
7200
- const isSpatial = isXr && xrMode === "spatialized";
7496
+ const isXr = variant === "xr";
7497
+ const isSpatial = isXr && fabPlacement === "spatialized";
7201
7498
  const applyAnimation = !isXr || !isSpatial;
7202
- const navRef = React38.useRef(null);
7499
+ const navRef = React39.useRef(null);
7203
7500
  const handleKeyDown = useRoving(navRef);
7204
- const setRefs = React38.useCallback(
7501
+ const setRefs = React39.useCallback(
7205
7502
  (node) => {
7206
7503
  navRef.current = node;
7207
7504
  if (typeof ref === "function") ref(node);
@@ -7210,12 +7507,12 @@ var NavigationRailComponent = React38.forwardRef(
7210
7507
  [ref]
7211
7508
  );
7212
7509
  const navBaseClasses = cn(
7213
- railContainerVariants({ variant, narrow, xr: isXr })
7510
+ railContainerVariants({ variant, narrow })
7214
7511
  );
7215
7512
  const modalPositioning = isModal ? "fixed left-0 top-0 z-[100]" : "";
7216
7513
  const navHeaderSpacing = (() => {
7217
7514
  if (!isXr) return "mb-6 min-h-10";
7218
- if (xrMode === "contained") return fab ? "mb-10" : "mb-5";
7515
+ if (fabPlacement === "contained") return fab ? "mb-10" : "mb-5";
7219
7516
  return "mb-5";
7220
7517
  })();
7221
7518
  const navElement = /* @__PURE__ */ jsxs(
@@ -7294,7 +7591,7 @@ var NavigationRailComponent = React38.forwardRef(
7294
7591
  children: fab
7295
7592
  }
7296
7593
  ),
7297
- React38.cloneElement(
7594
+ React39.cloneElement(
7298
7595
  navElement,
7299
7596
  {
7300
7597
  className: cn(navBaseClasses, "pointer-events-auto")
@@ -7305,7 +7602,7 @@ var NavigationRailComponent = React38.forwardRef(
7305
7602
  "md3-nav-wrapper"
7306
7603
  );
7307
7604
  const finalNavElement = isSpatial ? spatialWrapper : navElement;
7308
- const contextValue = { variant, labelVisibility, xr: isXr };
7605
+ const contextValue = { variant, labelVisibility, activeIndicatorTransition };
7309
7606
  if (isModal) {
7310
7607
  if (typeof document === "undefined") return null;
7311
7608
  return createPortal(
@@ -7332,13 +7629,13 @@ var NavigationRailComponent = React38.forwardRef(
7332
7629
  }
7333
7630
  );
7334
7631
  NavigationRailComponent.displayName = "NavigationRail";
7335
- var NavigationRail = React38.memo(NavigationRailComponent);
7632
+ var NavigationRail = React39.memo(NavigationRailComponent);
7336
7633
  var MD3_FAST_EFFECTS2 = [0.3, 0, 1, 1];
7337
- var RadioGroupContext = React38.createContext(
7634
+ var RadioGroupContext = React39.createContext(
7338
7635
  null
7339
7636
  );
7340
7637
  function useMergedRef3(externalRef, internalRef) {
7341
- return React38.useCallback(
7638
+ return React39.useCallback(
7342
7639
  (node) => {
7343
7640
  internalRef.current = node;
7344
7641
  if (!externalRef) return;
@@ -7351,7 +7648,7 @@ function useMergedRef3(externalRef, internalRef) {
7351
7648
  [externalRef, internalRef]
7352
7649
  );
7353
7650
  }
7354
- var RadioVisual = React38.memo(function RadioVisual2({
7651
+ var RadioVisual = React39.memo(function RadioVisual2({
7355
7652
  isSelected,
7356
7653
  disabled,
7357
7654
  error,
@@ -7404,7 +7701,7 @@ var RadioVisual = React38.memo(function RadioVisual2({
7404
7701
  }
7405
7702
  );
7406
7703
  });
7407
- var RadioButtonComponent = React38.forwardRef(
7704
+ var RadioButtonComponent = React39.forwardRef(
7408
7705
  ({
7409
7706
  selected,
7410
7707
  defaultSelected = false,
@@ -7423,23 +7720,23 @@ var RadioButtonComponent = React38.forwardRef(
7423
7720
  required: requiredProp
7424
7721
  }, ref) => {
7425
7722
  var _a, _b;
7426
- const group = React38.useContext(RadioGroupContext);
7723
+ const group = React39.useContext(RadioGroupContext);
7427
7724
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
7428
- const generatedId = React38.useId();
7725
+ const generatedId = React39.useId();
7429
7726
  const inputId = idProp != null ? idProp : label ? `radio-${generatedId}` : void 0;
7430
7727
  const name = (_b = group == null ? void 0 : group.name) != null ? _b : nameProp;
7431
7728
  const disabled = (group == null ? void 0 : group.disabled) || disabledProp;
7432
7729
  const error = (group == null ? void 0 : group.error) || errorProp || color === "error";
7433
7730
  const required = (group == null ? void 0 : group.required) || requiredProp;
7434
- const [internalSelected, setInternalSelected] = React38.useState(defaultSelected);
7731
+ const [internalSelected, setInternalSelected] = React39.useState(defaultSelected);
7435
7732
  const isControlled = selected !== void 0;
7436
7733
  const isSelected = group ? group.selectedValue === value : isControlled ? selected != null ? selected : false : internalSelected;
7437
- const [ripples, setRipples] = React38.useState([]);
7438
- const removeRipple = React38.useCallback(
7734
+ const [ripples, setRipples] = React39.useState([]);
7735
+ const removeRipple = React39.useCallback(
7439
7736
  (id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
7440
7737
  []
7441
7738
  );
7442
- const onPointerDown = React38.useCallback(
7739
+ const onPointerDown = React39.useCallback(
7443
7740
  (e) => {
7444
7741
  if (disabled) return;
7445
7742
  const rect = e.currentTarget.getBoundingClientRect();
@@ -7453,12 +7750,12 @@ var RadioButtonComponent = React38.forwardRef(
7453
7750
  },
7454
7751
  [disabled]
7455
7752
  );
7456
- const [isHovered, setIsHovered] = React38.useState(false);
7457
- const onPointerEnter = React38.useCallback(() => {
7753
+ const [isHovered, setIsHovered] = React39.useState(false);
7754
+ const onPointerEnter = React39.useCallback(() => {
7458
7755
  if (!disabled) setIsHovered(true);
7459
7756
  }, [disabled]);
7460
- const onPointerLeave = React38.useCallback(() => setIsHovered(false), []);
7461
- const handleChange = React38.useCallback(
7757
+ const onPointerLeave = React39.useCallback(() => setIsHovered(false), []);
7758
+ const handleChange = React39.useCallback(
7462
7759
  (_e) => {
7463
7760
  if (disabled || onClick === null) return;
7464
7761
  if (group) {
@@ -7472,7 +7769,7 @@ var RadioButtonComponent = React38.forwardRef(
7472
7769
  },
7473
7770
  [disabled, onClick, group, value, isControlled]
7474
7771
  );
7475
- const inputRef = React38.useRef(null);
7772
+ const inputRef = React39.useRef(null);
7476
7773
  const mergedRef = useMergedRef3(ref, inputRef);
7477
7774
  const stateLayerBg = error ? "before:bg-m3-error" : "before:bg-m3-primary";
7478
7775
  const stateLayerClass = cn(
@@ -7583,8 +7880,8 @@ var RadioButtonComponent = React38.forwardRef(
7583
7880
  }
7584
7881
  );
7585
7882
  RadioButtonComponent.displayName = "RadioButton";
7586
- var RadioButton = React38.memo(RadioButtonComponent);
7587
- var RadioGroupComponent = React38.forwardRef(
7883
+ var RadioButton = React39.memo(RadioButtonComponent);
7884
+ var RadioGroupComponent = React39.forwardRef(
7588
7885
  ({
7589
7886
  name,
7590
7887
  value: valueProp,
@@ -7599,19 +7896,19 @@ var RadioGroupComponent = React38.forwardRef(
7599
7896
  children,
7600
7897
  className
7601
7898
  }, ref) => {
7602
- const [internalValue, setInternalValue] = React38.useState(defaultValue);
7899
+ const [internalValue, setInternalValue] = React39.useState(defaultValue);
7603
7900
  const isControlled = valueProp !== void 0;
7604
7901
  const selectedValue = isControlled ? valueProp : internalValue;
7605
- const handleValueChange = React38.useCallback(
7902
+ const handleValueChange = React39.useCallback(
7606
7903
  (val) => {
7607
7904
  if (!isControlled) setInternalValue(val);
7608
7905
  onValueChange == null ? void 0 : onValueChange(val);
7609
7906
  },
7610
7907
  [isControlled, onValueChange]
7611
7908
  );
7612
- const groupRef = React38.useRef(null);
7909
+ const groupRef = React39.useRef(null);
7613
7910
  const mergedRef = useMergedRef3(ref, groupRef);
7614
- const onKeyDown = React38.useCallback(
7911
+ const onKeyDown = React39.useCallback(
7615
7912
  (e) => {
7616
7913
  var _a, _b;
7617
7914
  if (disabled) return;
@@ -7635,7 +7932,7 @@ var RadioGroupComponent = React38.forwardRef(
7635
7932
  },
7636
7933
  [disabled, handleValueChange]
7637
7934
  );
7638
- const contextValue = React38.useMemo(
7935
+ const contextValue = React39.useMemo(
7639
7936
  () => ({
7640
7937
  name,
7641
7938
  selectedValue,
@@ -7670,7 +7967,7 @@ var RadioGroupComponent = React38.forwardRef(
7670
7967
  }
7671
7968
  );
7672
7969
  RadioGroupComponent.displayName = "RadioGroup";
7673
- var RadioGroup = React38.memo(RadioGroupComponent);
7970
+ var RadioGroup = React39.memo(RadioGroupComponent);
7674
7971
  function useSearchKeyboard({
7675
7972
  active,
7676
7973
  onActiveChange,
@@ -7679,14 +7976,14 @@ function useSearchKeyboard({
7679
7976
  itemCount,
7680
7977
  onSelectSuggestion
7681
7978
  }) {
7682
- const [activeIndex, setActiveIndex] = React38.useState(-1);
7683
- const resetKeyRef = React38.useRef(`${active}:${query}`);
7979
+ const [activeIndex, setActiveIndex] = React39.useState(-1);
7980
+ const resetKeyRef = React39.useRef(`${active}:${query}`);
7684
7981
  const currentKey = `${active}:${query}`;
7685
7982
  if (resetKeyRef.current !== currentKey) {
7686
7983
  resetKeyRef.current = currentKey;
7687
7984
  setActiveIndex(-1);
7688
7985
  }
7689
- const handleKeyDown = React38.useCallback(
7986
+ const handleKeyDown = React39.useCallback(
7690
7987
  (e) => {
7691
7988
  if (!active) return;
7692
7989
  switch (e.key) {
@@ -7726,7 +8023,7 @@ function useSearchKeyboard({
7726
8023
  query
7727
8024
  ]
7728
8025
  );
7729
- const resetActiveIndex = React38.useCallback(() => {
8026
+ const resetActiveIndex = React39.useCallback(() => {
7730
8027
  setActiveIndex(-1);
7731
8028
  }, []);
7732
8029
  return { activeIndex, handleKeyDown, resetActiveIndex };
@@ -7814,10 +8111,10 @@ function AnimatedPlaceholder({
7814
8111
  className
7815
8112
  }) {
7816
8113
  const shouldReduceMotion = useReducedMotion();
7817
- const containerRef = React38.useRef(null);
7818
- const spanRef = React38.useRef(null);
7819
- const [xOffset, setXOffset] = React38.useState(0);
7820
- const recalculate = React38.useCallback(() => {
8114
+ const containerRef = React39.useRef(null);
8115
+ const spanRef = React39.useRef(null);
8116
+ const [xOffset, setXOffset] = React39.useState(0);
8117
+ const recalculate = React39.useCallback(() => {
7821
8118
  const container = containerRef.current;
7822
8119
  const span = spanRef.current;
7823
8120
  if (!container || !span || textAlign === "left") {
@@ -7832,10 +8129,10 @@ function AnimatedPlaceholder({
7832
8129
  setXOffset(Math.max(0, containerWidth - textWidth));
7833
8130
  }
7834
8131
  }, [textAlign]);
7835
- React38.useLayoutEffect(() => {
8132
+ React39.useLayoutEffect(() => {
7836
8133
  recalculate();
7837
8134
  }, [recalculate]);
7838
- React38.useEffect(() => {
8135
+ React39.useEffect(() => {
7839
8136
  const container = containerRef.current;
7840
8137
  if (!container) return;
7841
8138
  const observer = new ResizeObserver(recalculate);
@@ -7904,10 +8201,10 @@ function SearchBar({
7904
8201
  activeIndex
7905
8202
  }) {
7906
8203
  const shouldReduceMotion = useReducedMotion();
7907
- const inputRef = React38.useRef(null);
7908
- const prevActiveRef = React38.useRef(active);
7909
- const isRestoringFocusRef = React38.useRef(false);
7910
- React38.useEffect(() => {
8204
+ const inputRef = React39.useRef(null);
8205
+ const prevActiveRef = React39.useRef(active);
8206
+ const isRestoringFocusRef = React39.useRef(false);
8207
+ React39.useEffect(() => {
7911
8208
  var _a;
7912
8209
  let rafId;
7913
8210
  if (prevActiveRef.current === true && active === false) {
@@ -8026,7 +8323,7 @@ function SearchBar({
8026
8323
  ) })
8027
8324
  );
8028
8325
  }
8029
- var SearchContext = React38.createContext(null);
8326
+ var SearchContext = React39.createContext(null);
8030
8327
  function SearchProvider({
8031
8328
  children,
8032
8329
  value
@@ -8034,7 +8331,7 @@ function SearchProvider({
8034
8331
  return /* @__PURE__ */ jsx(SearchContext.Provider, { value, children });
8035
8332
  }
8036
8333
  function useSearch() {
8037
- const context = React38.useContext(SearchContext);
8334
+ const context = React39.useContext(SearchContext);
8038
8335
  if (!context) {
8039
8336
  return { listboxId: "", activeIndex: -1 };
8040
8337
  }
@@ -8061,7 +8358,7 @@ function useClickOutside(handler, enabled = true) {
8061
8358
  return ref;
8062
8359
  }
8063
8360
  function useSearchViewFocus(inputRef, active) {
8064
- React38.useEffect(() => {
8361
+ React39.useEffect(() => {
8065
8362
  if (!active) return;
8066
8363
  let raf2;
8067
8364
  const raf1 = requestAnimationFrame(() => {
@@ -8135,7 +8432,7 @@ function SearchViewDocked({
8135
8432
  activeIndex
8136
8433
  }) {
8137
8434
  const shouldReduceMotion = useReducedMotion();
8138
- const inputRef = React38.useRef(null);
8435
+ const inputRef = React39.useRef(null);
8139
8436
  useSearchViewFocus(inputRef, active);
8140
8437
  const dropdownRef = useClickOutside(() => {
8141
8438
  onActiveChange(false);
@@ -8281,10 +8578,10 @@ function SearchViewFullScreen({
8281
8578
  activeIndex
8282
8579
  }) {
8283
8580
  const shouldReduceMotion = useReducedMotion();
8284
- const inputRef = React38.useRef(null);
8581
+ const inputRef = React39.useRef(null);
8285
8582
  useSearchViewFocus(inputRef, active);
8286
- const [mounted, setMounted] = React38.useState(false);
8287
- React38.useEffect(() => {
8583
+ const [mounted, setMounted] = React39.useState(false);
8584
+ React39.useEffect(() => {
8288
8585
  setMounted(true);
8289
8586
  }, []);
8290
8587
  const handleFormSubmit = (e) => {
@@ -8442,10 +8739,10 @@ function SearchComponent({
8442
8739
  className,
8443
8740
  viewClassName
8444
8741
  }) {
8445
- const generatedId = React38.useId();
8742
+ const generatedId = React39.useId();
8446
8743
  const searchId = id != null ? id : generatedId;
8447
8744
  const listboxId = `${searchId}-listbox`;
8448
- const itemCount = React38.Children.count(children);
8745
+ const itemCount = React39.Children.count(children);
8449
8746
  const { activeIndex, handleKeyDown } = useSearchKeyboard({
8450
8747
  active,
8451
8748
  onActiveChange,
@@ -8681,7 +8978,7 @@ var SLIDER_INDICATOR_TRANSITION = {
8681
8978
  stiffness: 450,
8682
8979
  damping: 32
8683
8980
  };
8684
- var ValueIndicator = React38.memo(function ValueIndicator2({
8981
+ var ValueIndicator = React39.memo(function ValueIndicator2({
8685
8982
  value,
8686
8983
  visible,
8687
8984
  orientation,
@@ -8728,7 +9025,7 @@ var ValueIndicator = React38.memo(function ValueIndicator2({
8728
9025
  "value-indicator"
8729
9026
  ) });
8730
9027
  });
8731
- var SliderThumb = React38.memo(function SliderThumb2({
9028
+ var SliderThumb = React39.memo(function SliderThumb2({
8732
9029
  value,
8733
9030
  percent,
8734
9031
  min,
@@ -8760,11 +9057,11 @@ var SliderThumb = React38.memo(function SliderThumb2({
8760
9057
  [posTarget]: `calc(${trackInset}px + ${percent} * (100% - ${trackInset * 2}px))`
8761
9058
  };
8762
9059
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
8763
- const [isDragging, setIsDragging] = React38.useState(false);
8764
- const [isHovered, setIsHovered] = React38.useState(false);
8765
- const [isFocused, setIsFocused] = React38.useState(false);
8766
- const pointerIdRef = React38.useRef(null);
8767
- const thumbRef = React38.useRef(null);
9060
+ const [isDragging, setIsDragging] = React39.useState(false);
9061
+ const [isHovered, setIsHovered] = React39.useState(false);
9062
+ const [isFocused, setIsFocused] = React39.useState(false);
9063
+ const pointerIdRef = React39.useRef(null);
9064
+ const thumbRef = React39.useRef(null);
8768
9065
  const showIndicator = showValueIndicator && (isDragging || isHovered || isFocused);
8769
9066
  const positionStyle = isHorizontal ? __spreadProps(__spreadValues({
8770
9067
  position: "absolute"
@@ -8779,7 +9076,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
8779
9076
  transform: "translate(-50%, 50%)",
8780
9077
  zIndex
8781
9078
  });
8782
- const getDeltaFromPointer = React38.useCallback(
9079
+ const getDeltaFromPointer = React39.useCallback(
8783
9080
  (e) => {
8784
9081
  const trackEl = trackRef.current;
8785
9082
  if (!trackEl) return percent;
@@ -8806,7 +9103,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
8806
9103
  },
8807
9104
  [isHorizontal, max, min, percent, step, trackRef, trackSize]
8808
9105
  );
8809
- const handlePointerDown = React38.useCallback(
9106
+ const handlePointerDown = React39.useCallback(
8810
9107
  (e) => {
8811
9108
  if (disabled) return;
8812
9109
  e.preventDefault();
@@ -8817,7 +9114,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
8817
9114
  },
8818
9115
  [disabled]
8819
9116
  );
8820
- const handlePointerMove = React38.useCallback(
9117
+ const handlePointerMove = React39.useCallback(
8821
9118
  (e) => {
8822
9119
  if (!isDragging || e.pointerId !== pointerIdRef.current) return;
8823
9120
  const newValue = getDeltaFromPointer(e.nativeEvent);
@@ -8825,7 +9122,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
8825
9122
  },
8826
9123
  [isDragging, getDeltaFromPointer, onValueChange]
8827
9124
  );
8828
- const handlePointerUp = React38.useCallback(
9125
+ const handlePointerUp = React39.useCallback(
8829
9126
  (e) => {
8830
9127
  if (e.pointerId !== pointerIdRef.current) return;
8831
9128
  e.currentTarget.releasePointerCapture(e.pointerId);
@@ -8835,7 +9132,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
8835
9132
  },
8836
9133
  [onValueChangeEnd, value]
8837
9134
  );
8838
- const handleKeyDown = React38.useCallback(
9135
+ const handleKeyDown = React39.useCallback(
8839
9136
  (e) => {
8840
9137
  if (disabled) return;
8841
9138
  if (e.key === "Home") {
@@ -8939,7 +9236,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
8939
9236
  }
8940
9237
  );
8941
9238
  });
8942
- var RangeTrack = React38.memo(function RangeTrack2({
9239
+ var RangeTrack = React39.memo(function RangeTrack2({
8943
9240
  startPercent,
8944
9241
  endPercent,
8945
9242
  trackSize,
@@ -9184,7 +9481,7 @@ var RangeTrack = React38.memo(function RangeTrack2({
9184
9481
  }
9185
9482
  );
9186
9483
  });
9187
- var RangeSliderComponent = React38.forwardRef(
9484
+ var RangeSliderComponent = React39.forwardRef(
9188
9485
  ({
9189
9486
  value: controlledValue,
9190
9487
  defaultValue,
@@ -9208,7 +9505,7 @@ var RangeSliderComponent = React38.forwardRef(
9208
9505
  const isHorizontal = orientation === "horizontal";
9209
9506
  const defaultStart = (_a = defaultValue == null ? void 0 : defaultValue[0]) != null ? _a : min;
9210
9507
  const defaultEnd = (_b = defaultValue == null ? void 0 : defaultValue[1]) != null ? _b : max;
9211
- const [internalValue, setInternalValue] = React38.useState([
9508
+ const [internalValue, setInternalValue] = React39.useState([
9212
9509
  defaultStart,
9213
9510
  defaultEnd
9214
9511
  ]);
@@ -9222,10 +9519,10 @@ var RangeSliderComponent = React38.forwardRef(
9222
9519
  const endValue = snap(coerce(resolvedValue[1]));
9223
9520
  const startPercent = toPercent(startValue);
9224
9521
  const endPercent = toPercent(endValue);
9225
- const [topThumb, setTopThumb] = React38.useState("end");
9226
- const trackRef = React38.useRef(null);
9522
+ const [topThumb, setTopThumb] = React39.useState("end");
9523
+ const trackRef = React39.useRef(null);
9227
9524
  const minGap = step > 0 ? step : (max - min) / 1e3;
9228
- const handleStartChange = React38.useCallback(
9525
+ const handleStartChange = React39.useCallback(
9229
9526
  (newStart) => {
9230
9527
  setTopThumb("start");
9231
9528
  const clamped = Math.min(newStart, endValue - minGap);
@@ -9237,7 +9534,7 @@ var RangeSliderComponent = React38.forwardRef(
9237
9534
  },
9238
9535
  [controlledValue, coerce, endValue, minGap, onValueChange, snap]
9239
9536
  );
9240
- const handleEndChange = React38.useCallback(
9537
+ const handleEndChange = React39.useCallback(
9241
9538
  (newEnd) => {
9242
9539
  setTopThumb("end");
9243
9540
  const clamped = Math.max(newEnd, startValue + minGap);
@@ -9249,15 +9546,15 @@ var RangeSliderComponent = React38.forwardRef(
9249
9546
  },
9250
9547
  [controlledValue, coerce, minGap, onValueChange, snap, startValue]
9251
9548
  );
9252
- const handleStartChangeEnd = React38.useCallback(
9549
+ const handleStartChangeEnd = React39.useCallback(
9253
9550
  (v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([v, endValue]),
9254
9551
  [endValue, onValueChangeEnd]
9255
9552
  );
9256
- const handleEndChangeEnd = React38.useCallback(
9553
+ const handleEndChangeEnd = React39.useCallback(
9257
9554
  (v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([startValue, v]),
9258
9555
  [onValueChangeEnd, startValue]
9259
9556
  );
9260
- const handleTrackPointerDown = React38.useCallback(
9557
+ const handleTrackPointerDown = React39.useCallback(
9261
9558
  (e) => {
9262
9559
  if (disabled) return;
9263
9560
  const trackEl = trackRef.current;
@@ -9301,7 +9598,7 @@ var RangeSliderComponent = React38.forwardRef(
9301
9598
  trackSize
9302
9599
  ]
9303
9600
  );
9304
- const id = React38.useId();
9601
+ const id = React39.useId();
9305
9602
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
9306
9603
  "div",
9307
9604
  {
@@ -9381,7 +9678,7 @@ var RangeSliderComponent = React38.forwardRef(
9381
9678
  }
9382
9679
  );
9383
9680
  RangeSliderComponent.displayName = "RangeSlider";
9384
- var RangeSlider = React38.memo(RangeSliderComponent);
9681
+ var RangeSlider = React39.memo(RangeSliderComponent);
9385
9682
  function getHorizontalRadius(isLeading, innerR, outerR) {
9386
9683
  if (isLeading) {
9387
9684
  return {
@@ -9420,7 +9717,7 @@ var allInnerRadius = (innerR) => ({
9420
9717
  borderTopRightRadius: innerR,
9421
9718
  borderBottomRightRadius: innerR
9422
9719
  });
9423
- var InsetIcon = React38.memo(function InsetIcon2({
9720
+ var InsetIcon = React39.memo(function InsetIcon2({
9424
9721
  icon,
9425
9722
  isOnActiveSegment,
9426
9723
  position,
@@ -9514,7 +9811,7 @@ function Ticks({
9514
9811
  return /* @__PURE__ */ jsx("div", { style, "aria-hidden": "true" }, tick);
9515
9812
  }) });
9516
9813
  }
9517
- var SliderTrack = React38.memo(function SliderTrack2({
9814
+ var SliderTrack = React39.memo(function SliderTrack2({
9518
9815
  percent,
9519
9816
  trackSize,
9520
9817
  orientation,
@@ -9549,8 +9846,8 @@ var SliderTrack = React38.memo(function SliderTrack2({
9549
9846
  const gapWithThumbStr = `${thumbGap + thumbHalfWidth}px`;
9550
9847
  const hasAnyInsetIcon = Boolean(insetIcon || insetIconTrailing);
9551
9848
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
9552
- const [trackWidth, setTrackWidth] = React38.useState(0);
9553
- React38.useLayoutEffect(() => {
9849
+ const [trackWidth, setTrackWidth] = React39.useState(0);
9850
+ React39.useLayoutEffect(() => {
9554
9851
  const el = trackRef.current;
9555
9852
  if (!el || !hasAnyInsetIcon) return;
9556
9853
  setTrackWidth(isHorizontal ? el.clientWidth : el.clientHeight);
@@ -9567,8 +9864,8 @@ var SliderTrack = React38.memo(function SliderTrack2({
9567
9864
  const iconTotalWidth = activeIconSize + SliderTokens.insetIconPadding * 2 + thumbGap + thumbHalfWidth;
9568
9865
  const iconThreshold = trackWidth > 0 ? iconTotalWidth / trackWidth : 0.15;
9569
9866
  const HYSTERESIS_GAP = 0.04;
9570
- const trailingActiveRef = React38.useRef(1 - percent <= iconThreshold);
9571
- const leadingActiveRef = React38.useRef(percent > iconThreshold);
9867
+ const trailingActiveRef = React39.useRef(1 - percent <= iconThreshold);
9868
+ const leadingActiveRef = React39.useRef(percent > iconThreshold);
9572
9869
  const trailingPercent = 1 - percent;
9573
9870
  if (trailingActiveRef.current) {
9574
9871
  if (trailingPercent > iconThreshold + HYSTERESIS_GAP) {
@@ -10075,7 +10372,7 @@ var SliderTrack = React38.memo(function SliderTrack2({
10075
10372
  }
10076
10373
  );
10077
10374
  });
10078
- var SliderComponent = React38.forwardRef(
10375
+ var SliderComponent = React39.forwardRef(
10079
10376
  ({
10080
10377
  value: controlledValue,
10081
10378
  defaultValue,
@@ -10104,7 +10401,7 @@ var SliderComponent = React38.forwardRef(
10104
10401
  const isHorizontal = orientation === "horizontal";
10105
10402
  const midpoint = min + (max - min) / 2;
10106
10403
  const initialValue = defaultValue != null ? defaultValue : midpoint;
10107
- const [internalValue, setInternalValue] = React38.useState(initialValue);
10404
+ const [internalValue, setInternalValue] = React39.useState(initialValue);
10108
10405
  const resolvedValue = controlledValue !== void 0 ? controlledValue : internalValue;
10109
10406
  const { coerce, snap, toPercent, ticks } = useSliderMath({
10110
10407
  min,
@@ -10113,8 +10410,8 @@ var SliderComponent = React38.forwardRef(
10113
10410
  });
10114
10411
  const safeValue = snap(coerce(resolvedValue));
10115
10412
  const percent = toPercent(safeValue);
10116
- const trackRef = React38.useRef(null);
10117
- const handleValueChange = React38.useCallback(
10413
+ const trackRef = React39.useRef(null);
10414
+ const handleValueChange = React39.useCallback(
10118
10415
  (newValue) => {
10119
10416
  const clamped = snap(coerce(newValue));
10120
10417
  if (controlledValue === void 0) {
@@ -10124,13 +10421,13 @@ var SliderComponent = React38.forwardRef(
10124
10421
  },
10125
10422
  [coerce, controlledValue, onValueChange, snap]
10126
10423
  );
10127
- const handleValueChangeEnd = React38.useCallback(
10424
+ const handleValueChangeEnd = React39.useCallback(
10128
10425
  (newValue) => {
10129
10426
  onValueChangeEnd == null ? void 0 : onValueChangeEnd(snap(coerce(newValue)));
10130
10427
  },
10131
10428
  [coerce, onValueChangeEnd, snap]
10132
10429
  );
10133
- const handleTrackPointerDown = React38.useCallback(
10430
+ const handleTrackPointerDown = React39.useCallback(
10134
10431
  (e) => {
10135
10432
  if (disabled) return;
10136
10433
  const trackEl = trackRef.current;
@@ -10165,7 +10462,7 @@ var SliderComponent = React38.forwardRef(
10165
10462
  trackSize
10166
10463
  ]
10167
10464
  );
10168
- const id = React38.useId();
10465
+ const id = React39.useId();
10169
10466
  const thumbId = `slider-thumb-${id}`;
10170
10467
  const supportsInsetIcon = !isCentered && SliderTokens.trackSizes[trackSize] >= 40;
10171
10468
  const hasAnyInsetIcon = !!(insetIcon || insetIconTrailing);
@@ -10237,7 +10534,7 @@ var SliderComponent = React38.forwardRef(
10237
10534
  }
10238
10535
  );
10239
10536
  SliderComponent.displayName = "Slider";
10240
- var Slider = React38.memo(SliderComponent);
10537
+ var Slider = React39.memo(SliderComponent);
10241
10538
  var DURATION_MAP = {
10242
10539
  short: 4e3,
10243
10540
  long: 7e3
@@ -10283,9 +10580,9 @@ function toSnackbarData(item) {
10283
10580
  return { id: generateId(), visuals: item.visuals, resolve: item.resolve };
10284
10581
  }
10285
10582
  function useSnackbarState() {
10286
- const [current, setCurrent] = React38.useState(null);
10287
- const queueRef = React38.useRef([]);
10288
- const showSnackbar = React38.useCallback(
10583
+ const [current, setCurrent] = React39.useState(null);
10584
+ const queueRef = React39.useRef([]);
10585
+ const showSnackbar = React39.useCallback(
10289
10586
  (visuals) => {
10290
10587
  return new Promise((resolve) => {
10291
10588
  const item = { visuals, resolve };
@@ -10298,14 +10595,14 @@ function useSnackbarState() {
10298
10595
  },
10299
10596
  []
10300
10597
  );
10301
- const _dismiss = React38.useCallback((result) => {
10598
+ const _dismiss = React39.useCallback((result) => {
10302
10599
  setCurrent((prev) => {
10303
10600
  if (prev) prev.resolve(result);
10304
10601
  const next = queueRef.current.shift();
10305
10602
  return next ? toSnackbarData(next) : null;
10306
10603
  });
10307
10604
  }, []);
10308
- React38.useEffect(() => {
10605
+ React39.useEffect(() => {
10309
10606
  return () => {
10310
10607
  for (const item of queueRef.current) {
10311
10608
  item.resolve(RESULT.DISMISSED);
@@ -10315,7 +10612,7 @@ function useSnackbarState() {
10315
10612
  }, []);
10316
10613
  return { current, showSnackbar, _dismiss };
10317
10614
  }
10318
- var Snackbar = React38.memo(function Snackbar2({
10615
+ var Snackbar = React39.memo(function Snackbar2({
10319
10616
  data,
10320
10617
  className
10321
10618
  }) {
@@ -10329,15 +10626,15 @@ var Snackbar = React38.memo(function Snackbar2({
10329
10626
  } = visuals;
10330
10627
  const reducedMotion = useReducedMotion();
10331
10628
  const durationMs = resolveDuration(duration);
10332
- React38.useEffect(() => {
10629
+ React39.useEffect(() => {
10333
10630
  const timer = setTimeout(() => resolve(RESULT.DISMISSED), durationMs);
10334
10631
  return () => clearTimeout(timer);
10335
10632
  }, [resolve, durationMs]);
10336
- const handleAction = React38.useCallback(
10633
+ const handleAction = React39.useCallback(
10337
10634
  () => resolve(RESULT.ACTION),
10338
10635
  [resolve]
10339
10636
  );
10340
- const handleDismiss = React38.useCallback(
10637
+ const handleDismiss = React39.useCallback(
10341
10638
  () => resolve(RESULT.DISMISSED),
10342
10639
  [resolve]
10343
10640
  );
@@ -10405,7 +10702,7 @@ var Snackbar = React38.memo(function Snackbar2({
10405
10702
  Snackbar.displayName = "Snackbar";
10406
10703
  function SnackbarHost({ state, className }) {
10407
10704
  const { current, _dismiss } = state;
10408
- const wrappedData = React38.useMemo(() => {
10705
+ const wrappedData = React39.useMemo(() => {
10409
10706
  if (!current) return null;
10410
10707
  return __spreadProps(__spreadValues({}, current), { resolve: _dismiss });
10411
10708
  }, [current, _dismiss]);
@@ -10423,12 +10720,12 @@ function SnackbarHost({ state, className }) {
10423
10720
  ) });
10424
10721
  }
10425
10722
  SnackbarHost.displayName = "SnackbarHost";
10426
- var SnackbarContext = React38.createContext(
10723
+ var SnackbarContext = React39.createContext(
10427
10724
  null
10428
10725
  );
10429
10726
  function SnackbarProvider({ children }) {
10430
10727
  const state = useSnackbarState();
10431
- const contextValue = React38.useMemo(
10728
+ const contextValue = React39.useMemo(
10432
10729
  () => ({ showSnackbar: state.showSnackbar }),
10433
10730
  [state.showSnackbar]
10434
10731
  );
@@ -10439,7 +10736,7 @@ function SnackbarProvider({ children }) {
10439
10736
  }
10440
10737
  SnackbarProvider.displayName = "SnackbarProvider";
10441
10738
  function useSnackbar() {
10442
- const ctx = React38.useContext(SnackbarContext);
10739
+ const ctx = React39.useContext(SnackbarContext);
10443
10740
  if (!ctx) {
10444
10741
  throw new Error("useSnackbar must be used within a <SnackbarProvider>.");
10445
10742
  }
@@ -10543,7 +10840,7 @@ function isIconVisible(thumbContent, icons, showOnlySelectedIcon, checked) {
10543
10840
  if (icons) return true;
10544
10841
  return showOnlySelectedIcon && checked;
10545
10842
  }
10546
- var SwitchVisual = React38.memo(function SwitchVisual2({
10843
+ var SwitchVisual = React39.memo(function SwitchVisual2({
10547
10844
  checked,
10548
10845
  disabled,
10549
10846
  isPressed,
@@ -10663,7 +10960,7 @@ var SwitchVisual = React38.memo(function SwitchVisual2({
10663
10960
  }
10664
10961
  );
10665
10962
  });
10666
- var SwitchComponent = React38.forwardRef(
10963
+ var SwitchComponent = React39.forwardRef(
10667
10964
  ({
10668
10965
  checked,
10669
10966
  onCheckedChange,
@@ -10681,16 +10978,16 @@ var SwitchComponent = React38.forwardRef(
10681
10978
  }, ref) => {
10682
10979
  var _a;
10683
10980
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
10684
- const [isPressed, setIsPressed] = React38.useState(false);
10685
- const [isHovered, setIsHovered] = React38.useState(false);
10686
- const [isFocused, setIsFocused] = React38.useState(false);
10687
- const [ripples, setRipples] = React38.useState([]);
10688
- const generatedId = React38.useId();
10981
+ const [isPressed, setIsPressed] = React39.useState(false);
10982
+ const [isHovered, setIsHovered] = React39.useState(false);
10983
+ const [isFocused, setIsFocused] = React39.useState(false);
10984
+ const [ripples, setRipples] = React39.useState([]);
10985
+ const generatedId = React39.useId();
10689
10986
  const switchId = label ? `switch-${generatedId}` : void 0;
10690
- const handleClick = React38.useCallback(() => {
10987
+ const handleClick = React39.useCallback(() => {
10691
10988
  if (!disabled) onCheckedChange(!checked);
10692
10989
  }, [disabled, checked, onCheckedChange]);
10693
- const handleKeyDown = React38.useCallback(
10990
+ const handleKeyDown = React39.useCallback(
10694
10991
  (e) => {
10695
10992
  if (disabled) return;
10696
10993
  if (e.key === " " || e.key === "Enter") {
@@ -10700,7 +10997,7 @@ var SwitchComponent = React38.forwardRef(
10700
10997
  },
10701
10998
  [disabled, checked, onCheckedChange]
10702
10999
  );
10703
- const handlePointerDown = React38.useCallback(
11000
+ const handlePointerDown = React39.useCallback(
10704
11001
  (e) => {
10705
11002
  if (disabled) return;
10706
11003
  setIsPressed(true);
@@ -10715,19 +11012,19 @@ var SwitchComponent = React38.forwardRef(
10715
11012
  },
10716
11013
  [disabled]
10717
11014
  );
10718
- const handlePointerUp = React38.useCallback(() => {
11015
+ const handlePointerUp = React39.useCallback(() => {
10719
11016
  setIsPressed(false);
10720
11017
  }, []);
10721
- const handlePointerEnter = React38.useCallback(() => {
11018
+ const handlePointerEnter = React39.useCallback(() => {
10722
11019
  if (!disabled) setIsHovered(true);
10723
11020
  }, [disabled]);
10724
- const handlePointerLeave = React38.useCallback(() => {
11021
+ const handlePointerLeave = React39.useCallback(() => {
10725
11022
  setIsHovered(false);
10726
11023
  setIsPressed(false);
10727
11024
  }, []);
10728
- const handleFocus = React38.useCallback(() => setIsFocused(true), []);
10729
- const handleBlur = React38.useCallback(() => setIsFocused(false), []);
10730
- const removeRipple = React38.useCallback(
11025
+ const handleFocus = React39.useCallback(() => setIsFocused(true), []);
11026
+ const handleBlur = React39.useCallback(() => setIsFocused(false), []);
11027
+ const removeRipple = React39.useCallback(
10731
11028
  (id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
10732
11029
  []
10733
11030
  );
@@ -10812,7 +11109,7 @@ var SwitchComponent = React38.forwardRef(
10812
11109
  }
10813
11110
  );
10814
11111
  SwitchComponent.displayName = "Switch";
10815
- var Switch = React38.memo(SwitchComponent);
11112
+ var Switch = React39.memo(SwitchComponent);
10816
11113
  var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
10817
11114
  variants: {
10818
11115
  variant: {
@@ -10837,10 +11134,10 @@ var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
10837
11134
  variant: "body-md"
10838
11135
  }
10839
11136
  });
10840
- var Text = React38.forwardRef(
11137
+ var Text = React39.forwardRef(
10841
11138
  (_a, ref) => {
10842
11139
  var _b = _a, { className, variant, as: Component } = _b, props = __objRest(_b, ["className", "variant", "as"]);
10843
- const defaultComponent = React38.useMemo(() => {
11140
+ const defaultComponent = React39.useMemo(() => {
10844
11141
  if ((variant == null ? void 0 : variant.startsWith("display")) || (variant == null ? void 0 : variant.startsWith("headline")))
10845
11142
  return "h1";
10846
11143
  if (variant == null ? void 0 : variant.startsWith("title")) return "h2";
@@ -10857,9 +11154,9 @@ var Text = React38.forwardRef(
10857
11154
  }
10858
11155
  );
10859
11156
  Text.displayName = "Text";
10860
- var TabsContext = React38.createContext(null);
11157
+ var TabsContext = React39.createContext(null);
10861
11158
  function useTabsContext() {
10862
- const ctx = React38.useContext(TabsContext);
11159
+ const ctx = React39.useContext(TabsContext);
10863
11160
  if (!ctx) {
10864
11161
  throw new Error(
10865
11162
  "[MD3 Tabs] Component must be used within a <Tabs> root. Ensure <TabsList>, <Tab>, and <TabsContent> are descendants of <Tabs>."
@@ -10867,7 +11164,7 @@ function useTabsContext() {
10867
11164
  }
10868
11165
  return ctx;
10869
11166
  }
10870
- var TabsComponent = React38.forwardRef(
11167
+ var TabsComponent = React39.forwardRef(
10871
11168
  ({
10872
11169
  value: controlledValue,
10873
11170
  defaultValue = "",
@@ -10876,35 +11173,35 @@ var TabsComponent = React38.forwardRef(
10876
11173
  children,
10877
11174
  className
10878
11175
  }, ref) => {
10879
- const [internalValue, setInternalValue] = React38.useState(defaultValue);
11176
+ const [internalValue, setInternalValue] = React39.useState(defaultValue);
10880
11177
  const isControlled = controlledValue !== void 0;
10881
11178
  const value = isControlled ? controlledValue : internalValue;
10882
- const handleValueChange = React38.useCallback(
11179
+ const handleValueChange = React39.useCallback(
10883
11180
  (newValue) => {
10884
11181
  if (!isControlled) setInternalValue(newValue);
10885
11182
  onValueChange == null ? void 0 : onValueChange(newValue);
10886
11183
  },
10887
11184
  [isControlled, onValueChange]
10888
11185
  );
10889
- const [focusedValue, setFocusedValue] = React38.useState(value);
10890
- React38.useEffect(() => {
11186
+ const [focusedValue, setFocusedValue] = React39.useState(value);
11187
+ React39.useEffect(() => {
10891
11188
  setFocusedValue(value);
10892
11189
  }, [value]);
10893
- const [tabValues, setTabValues] = React38.useState([]);
10894
- const registerTab = React38.useCallback((tabValue) => {
11190
+ const [tabValues, setTabValues] = React39.useState([]);
11191
+ const registerTab = React39.useCallback((tabValue) => {
10895
11192
  setTabValues((prev) => {
10896
11193
  if (prev.includes(tabValue)) return prev;
10897
11194
  return [...prev, tabValue];
10898
11195
  });
10899
11196
  }, []);
10900
- const unregisterTab = React38.useCallback((tabValue) => {
11197
+ const unregisterTab = React39.useCallback((tabValue) => {
10901
11198
  setTabValues((prev) => prev.filter((v) => v !== tabValue));
10902
11199
  }, []);
10903
- const hasAutoSelected = React38.useRef(false);
10904
- const [disabledValues, setDisabledValues] = React38.useState(
11200
+ const hasAutoSelected = React39.useRef(false);
11201
+ const [disabledValues, setDisabledValues] = React39.useState(
10905
11202
  /* @__PURE__ */ new Set()
10906
11203
  );
10907
- const markTabDisabled = React38.useCallback(
11204
+ const markTabDisabled = React39.useCallback(
10908
11205
  (tabValue, disabled) => {
10909
11206
  setDisabledValues((prev) => {
10910
11207
  const next = new Set(prev);
@@ -10918,7 +11215,7 @@ var TabsComponent = React38.forwardRef(
10918
11215
  },
10919
11216
  []
10920
11217
  );
10921
- React38.useEffect(() => {
11218
+ React39.useEffect(() => {
10922
11219
  if (isControlled || hasAutoSelected.current || tabValues.length === 0) {
10923
11220
  return;
10924
11221
  }
@@ -10933,9 +11230,9 @@ var TabsComponent = React38.forwardRef(
10933
11230
  setFocusedValue(firstEnabled);
10934
11231
  }
10935
11232
  }, [tabValues, disabledValues, isControlled, value]);
10936
- const id = React38.useId();
11233
+ const id = React39.useId();
10937
11234
  const layoutGroupId = `tabs-${id}`;
10938
- const contextValue = React38.useMemo(
11235
+ const contextValue = React39.useMemo(
10939
11236
  () => ({
10940
11237
  value,
10941
11238
  onValueChange: handleValueChange,
@@ -10966,12 +11263,12 @@ var TabsComponent = React38.forwardRef(
10966
11263
  }
10967
11264
  );
10968
11265
  TabsComponent.displayName = "Tabs";
10969
- var Tabs = React38.memo(TabsComponent);
10970
- var TabsListContext = React38.createContext(
11266
+ var Tabs = React39.memo(TabsComponent);
11267
+ var TabsListContext = React39.createContext(
10971
11268
  null
10972
11269
  );
10973
11270
  function useTabsListContext() {
10974
- const ctx = React38.useContext(TabsListContext);
11271
+ const ctx = React39.useContext(TabsListContext);
10975
11272
  return ctx != null ? ctx : { variant: "primary", scrollable: false };
10976
11273
  }
10977
11274
 
@@ -11055,7 +11352,7 @@ var TABS_CONTENT_TRANSITION = {
11055
11352
  ease: "easeInOut"
11056
11353
  };
11057
11354
  var INDICATOR_MIN_WIDTH = 24;
11058
- var TabComponent = React38.forwardRef(
11355
+ var TabComponent = React39.forwardRef(
11059
11356
  ({
11060
11357
  value,
11061
11358
  icon,
@@ -11085,9 +11382,9 @@ var TabComponent = React38.forwardRef(
11085
11382
  const isFocused = focusedValue === value;
11086
11383
  const hasIcon = icon != null;
11087
11384
  const isStackedIcon = hasIcon && !inlineIcon;
11088
- const buttonRef = React38.useRef(null);
11089
- const isFirstMount = React38.useRef(true);
11090
- const mergedRef = React38.useCallback(
11385
+ const buttonRef = React39.useRef(null);
11386
+ const isFirstMount = React39.useRef(true);
11387
+ const mergedRef = React39.useCallback(
11091
11388
  (node) => {
11092
11389
  buttonRef.current = node;
11093
11390
  if (typeof ref === "function") ref(node);
@@ -11095,15 +11392,15 @@ var TabComponent = React38.forwardRef(
11095
11392
  },
11096
11393
  [ref]
11097
11394
  );
11098
- React38.useEffect(() => {
11395
+ React39.useEffect(() => {
11099
11396
  registerTab(value);
11100
11397
  return () => unregisterTab(value);
11101
11398
  }, [value, registerTab, unregisterTab]);
11102
- React38.useEffect(() => {
11399
+ React39.useEffect(() => {
11103
11400
  markTabDisabled(value, disabled);
11104
11401
  return () => markTabDisabled(value, false);
11105
11402
  }, [value, disabled, markTabDisabled]);
11106
- const handleKeyDown = React38.useCallback(
11403
+ const handleKeyDown = React39.useCallback(
11107
11404
  (e) => {
11108
11405
  const isRtl = buttonRef.current ? getComputedStyle(buttonRef.current).direction === "rtl" : false;
11109
11406
  const enabledValues = tabValues.filter((v) => !disabledValues.has(v));
@@ -11157,7 +11454,7 @@ var TabComponent = React38.forwardRef(
11157
11454
  autoActivate
11158
11455
  ]
11159
11456
  );
11160
- React38.useEffect(() => {
11457
+ React39.useEffect(() => {
11161
11458
  if (isFirstMount.current) {
11162
11459
  isFirstMount.current = false;
11163
11460
  return;
@@ -11166,7 +11463,7 @@ var TabComponent = React38.forwardRef(
11166
11463
  buttonRef.current.focus({ preventScroll: true });
11167
11464
  }
11168
11465
  }, [isFocused]);
11169
- React38.useEffect(() => {
11466
+ React39.useEffect(() => {
11170
11467
  if (!isActive || !scrollable || !buttonRef.current) return;
11171
11468
  const btn = buttonRef.current;
11172
11469
  let container = btn.parentElement;
@@ -11303,8 +11600,8 @@ var TabComponent = React38.forwardRef(
11303
11600
  }
11304
11601
  );
11305
11602
  TabComponent.displayName = "Tab";
11306
- var Tab = React38.memo(TabComponent);
11307
- var TabsContentComponent = React38.forwardRef(
11603
+ var Tab = React39.memo(TabComponent);
11604
+ var TabsContentComponent = React39.forwardRef(
11308
11605
  ({ value, className, children }, ref) => {
11309
11606
  var _a;
11310
11607
  const { value: selectedValue, layoutGroupId } = useTabsContext();
@@ -11338,8 +11635,8 @@ var TabsContentComponent = React38.forwardRef(
11338
11635
  }
11339
11636
  );
11340
11637
  TabsContentComponent.displayName = "TabsContent";
11341
- var TabsContent = React38.memo(TabsContentComponent);
11342
- var TabsListComponent = React38.forwardRef(
11638
+ var TabsContent = React39.memo(TabsContentComponent);
11639
+ var TabsListComponent = React39.forwardRef(
11343
11640
  ({
11344
11641
  variant,
11345
11642
  scrollable = false,
@@ -11350,12 +11647,12 @@ var TabsListComponent = React38.forwardRef(
11350
11647
  }, ref) => {
11351
11648
  const { layoutGroupId, value, setFocusedValue } = useTabsContext();
11352
11649
  const listLayoutId = `${layoutGroupId}-list`;
11353
- const listContextValue = React38.useMemo(
11650
+ const listContextValue = React39.useMemo(
11354
11651
  () => ({ variant, scrollable }),
11355
11652
  [variant, scrollable]
11356
11653
  );
11357
11654
  const bgColor = backgroundColor != null ? backgroundColor : "var(--md-sys-color-surface)";
11358
- const handleBlur = React38.useCallback(
11655
+ const handleBlur = React39.useCallback(
11359
11656
  (e) => {
11360
11657
  const listEl = e.currentTarget;
11361
11658
  if (listEl.contains(e.relatedTarget)) return;
@@ -11404,7 +11701,7 @@ var TabsListComponent = React38.forwardRef(
11404
11701
  }
11405
11702
  );
11406
11703
  TabsListComponent.displayName = "TabsList";
11407
- var TabsList = React38.memo(TabsListComponent);
11704
+ var TabsList = React39.memo(TabsListComponent);
11408
11705
 
11409
11706
  // src/ui/text-field/text-field.tokens.ts
11410
11707
  var TF_COLORS = {
@@ -11443,7 +11740,7 @@ var TF_TYPOGRAPHY = {
11443
11740
  var TF_CLASSES = {
11444
11741
  // Prefix / Suffix
11445
11742
  prefixSuffix: "text-base text-[var(--color-m3-on-surface-variant)] select-none shrink-0"};
11446
- var ActiveIndicator = React38.memo(function ActiveIndicator2({
11743
+ var ActiveIndicator = React39.memo(function ActiveIndicator2({
11447
11744
  isFocused,
11448
11745
  isError,
11449
11746
  isDisabled,
@@ -11490,7 +11787,7 @@ function getLabelColor(isFloated, isFocused, isError, isDisabled) {
11490
11787
  if (isFloated && isFocused) return TF_COLORS.primary;
11491
11788
  return TF_COLORS.onSurfaceVariant;
11492
11789
  }
11493
- var FloatingLabel = React38.memo(function FloatingLabel2({
11790
+ var FloatingLabel = React39.memo(function FloatingLabel2({
11494
11791
  text,
11495
11792
  isFloated,
11496
11793
  isFocused,
@@ -11550,7 +11847,7 @@ var FloatingLabel = React38.memo(function FloatingLabel2({
11550
11847
  );
11551
11848
  });
11552
11849
  FloatingLabel.displayName = "FloatingLabel";
11553
- var LeadingIcon = React38.memo(function LeadingIcon2({
11850
+ var LeadingIcon = React39.memo(function LeadingIcon2({
11554
11851
  children,
11555
11852
  isError,
11556
11853
  isDisabled
@@ -11574,7 +11871,7 @@ function getOutlineColor(isFocused, isError, isHovered, isDisabled) {
11574
11871
  if (isHovered) return TF_COLORS.inputText;
11575
11872
  return TF_COLORS.outline;
11576
11873
  }
11577
- var OutlineContainer = React38.memo(function OutlineContainer2({
11874
+ var OutlineContainer = React39.memo(function OutlineContainer2({
11578
11875
  isFloated,
11579
11876
  isFocused,
11580
11877
  isError,
@@ -11672,7 +11969,7 @@ var OutlineContainer = React38.memo(function OutlineContainer2({
11672
11969
  );
11673
11970
  });
11674
11971
  OutlineContainer.displayName = "OutlineContainer";
11675
- var PrefixSuffix = React38.memo(function PrefixSuffix2({
11972
+ var PrefixSuffix = React39.memo(function PrefixSuffix2({
11676
11973
  text,
11677
11974
  type,
11678
11975
  visible,
@@ -11714,7 +12011,7 @@ function AnimatedText({
11714
12011
  motionKey
11715
12012
  );
11716
12013
  }
11717
- var SupportingText = React38.memo(function SupportingText2({
12014
+ var SupportingText = React39.memo(function SupportingText2({
11718
12015
  supportingText,
11719
12016
  errorText,
11720
12017
  isError,
@@ -11825,7 +12122,7 @@ function ClearIcon() {
11825
12122
  }
11826
12123
  );
11827
12124
  }
11828
- var TrailingIcon = React38.memo(function TrailingIcon2({
12125
+ var TrailingIcon = React39.memo(function TrailingIcon2({
11829
12126
  mode,
11830
12127
  children,
11831
12128
  value,
@@ -11891,7 +12188,7 @@ var TrailingIcon = React38.memo(function TrailingIcon2({
11891
12188
  });
11892
12189
  TrailingIcon.displayName = "TrailingIcon";
11893
12190
  var LINE_HEIGHT_PX = 24;
11894
- var TextFieldComponent = React38.forwardRef(
12191
+ var TextFieldComponent = React39.forwardRef(
11895
12192
  ({
11896
12193
  // Core
11897
12194
  variant = "filled",
@@ -11955,30 +12252,30 @@ var TextFieldComponent = React38.forwardRef(
11955
12252
  }, ref) => {
11956
12253
  var _a;
11957
12254
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
11958
- const generatedId = React38.useId();
12255
+ const generatedId = React39.useId();
11959
12256
  const inputId = idProp != null ? idProp : `tf-${generatedId}`;
11960
12257
  const supportingId = `${inputId}-supporting`;
11961
12258
  const isControlled = valueProp !== void 0;
11962
- const [internalValue, setInternalValue] = React38.useState(defaultValue);
12259
+ const [internalValue, setInternalValue] = React39.useState(defaultValue);
11963
12260
  const currentValue = isControlled ? valueProp : internalValue;
11964
- const [isFocused, setIsFocused] = React38.useState(false);
11965
- const [showPassword, setShowPassword] = React38.useState(false);
12261
+ const [isFocused, setIsFocused] = React39.useState(false);
12262
+ const [showPassword, setShowPassword] = React39.useState(false);
11966
12263
  const resolvedInputType = type === "password" && showPassword ? "text" : type;
11967
- const [nativeError, setNativeError] = React38.useState("");
11968
- const [labelWidth, setLabelWidth] = React38.useState(0);
12264
+ const [nativeError, setNativeError] = React39.useState("");
12265
+ const [labelWidth, setLabelWidth] = React39.useState(0);
11969
12266
  const hasValue = currentValue.length > 0;
11970
12267
  const isFloated = isFocused || hasValue;
11971
12268
  const isError = errorProp || !!nativeError || maxLength !== void 0 && currentValue.length > maxLength;
11972
12269
  const containerHeight = dense ? TF_SIZE.denseHeight : TF_SIZE.height;
11973
12270
  const showAsterisk = required && !noAsterisk;
11974
- const inputRef = React38.useRef(null);
11975
- const labelSpanRef = React38.useRef(null);
11976
- React38.useLayoutEffect(() => {
12271
+ const inputRef = React39.useRef(null);
12272
+ const labelSpanRef = React39.useRef(null);
12273
+ React39.useLayoutEffect(() => {
11977
12274
  if (labelSpanRef.current) {
11978
12275
  setLabelWidth(labelSpanRef.current.offsetWidth);
11979
12276
  }
11980
12277
  }, []);
11981
- React38.useLayoutEffect(() => {
12278
+ React39.useLayoutEffect(() => {
11982
12279
  if (type !== "textarea" || !inputRef.current) return;
11983
12280
  const textarea = inputRef.current;
11984
12281
  if (autoResize) {
@@ -11990,7 +12287,7 @@ var TextFieldComponent = React38.forwardRef(
11990
12287
  }
11991
12288
  textarea.style.overflowY = "hidden";
11992
12289
  }, [type, autoResize, maxRows, currentValue]);
11993
- const handleValueChange = React38.useCallback(
12290
+ const handleValueChange = React39.useCallback(
11994
12291
  (newValue) => {
11995
12292
  var _a2, _b;
11996
12293
  if (!isControlled) setInternalValue(newValue);
@@ -11999,7 +12296,7 @@ var TextFieldComponent = React38.forwardRef(
11999
12296
  },
12000
12297
  [isControlled]
12001
12298
  );
12002
- const handleChange = React38.useCallback(
12299
+ const handleChange = React39.useCallback(
12003
12300
  (e) => {
12004
12301
  const newVal = e.target.value;
12005
12302
  handleValueChange(newVal);
@@ -12007,14 +12304,14 @@ var TextFieldComponent = React38.forwardRef(
12007
12304
  },
12008
12305
  [handleValueChange, onChange]
12009
12306
  );
12010
- const handleFocus = React38.useCallback(
12307
+ const handleFocus = React39.useCallback(
12011
12308
  (e) => {
12012
12309
  setIsFocused(true);
12013
12310
  onFocus == null ? void 0 : onFocus(e);
12014
12311
  },
12015
12312
  [onFocus]
12016
12313
  );
12017
- const handleBlur = React38.useCallback(
12314
+ const handleBlur = React39.useCallback(
12018
12315
  (e) => {
12019
12316
  setIsFocused(false);
12020
12317
  const el = inputRef.current;
@@ -12027,7 +12324,7 @@ var TextFieldComponent = React38.forwardRef(
12027
12324
  },
12028
12325
  [onBlur]
12029
12326
  );
12030
- const handleClear = React38.useCallback(() => {
12327
+ const handleClear = React39.useCallback(() => {
12031
12328
  var _a2;
12032
12329
  handleValueChange("");
12033
12330
  onChange == null ? void 0 : onChange("", {
@@ -12035,12 +12332,12 @@ var TextFieldComponent = React38.forwardRef(
12035
12332
  });
12036
12333
  (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
12037
12334
  }, [handleValueChange, onChange]);
12038
- const handlePasswordToggle = React38.useCallback(() => {
12335
+ const handlePasswordToggle = React39.useCallback(() => {
12039
12336
  var _a2;
12040
12337
  setShowPassword((prev) => !prev);
12041
12338
  (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
12042
12339
  }, []);
12043
- React38.useImperativeHandle(
12340
+ React39.useImperativeHandle(
12044
12341
  ref,
12045
12342
  () => ({
12046
12343
  focus: () => {
@@ -12285,7 +12582,7 @@ var TextFieldComponent = React38.forwardRef(
12285
12582
  }
12286
12583
  );
12287
12584
  TextFieldComponent.displayName = "TextField";
12288
- var TextField = React38.memo(TextFieldComponent);
12585
+ var TextField = React39.memo(TextFieldComponent);
12289
12586
 
12290
12587
  // src/ui/typography/typography-key-tokens.ts
12291
12588
  var TypographyKeyTokens = /* @__PURE__ */ ((TypographyKeyTokens2) => {
@@ -13046,7 +13343,8 @@ function MD3ThemeProvider({
13046
13343
  STORAGE_KEY_MODE
13047
13344
  );
13048
13345
  if (savedColor) setSourceColor(savedColor);
13049
- if (savedMode === "light" || savedMode === "dark") setMode(savedMode);
13346
+ if (savedMode === "light" || savedMode === "dark" || savedMode === "system")
13347
+ setMode(savedMode);
13050
13348
  setIsHydrated(true);
13051
13349
  }, [persistToLocalStorage]);
13052
13350
  useEffect(() => {
@@ -13057,9 +13355,17 @@ function MD3ThemeProvider({
13057
13355
  localStorage.setItem(STORAGE_KEY_MODE, mode);
13058
13356
  }
13059
13357
  }, [sourceColor, mode, persistToLocalStorage, isHydrated]);
13358
+ useEffect(() => {
13359
+ if (mode !== "system" || typeof window === "undefined") return;
13360
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
13361
+ const handleChange = () => applyTheme(sourceColor, "system");
13362
+ mediaQuery.addEventListener("change", handleChange);
13363
+ return () => mediaQuery.removeEventListener("change", handleChange);
13364
+ }, [mode, sourceColor]);
13365
+ const effectiveMode = resolveMode(mode);
13060
13366
  const themeValue = useMemo(
13061
- () => ({ sourceColor, setSourceColor, mode, setMode }),
13062
- [sourceColor, mode]
13367
+ () => ({ sourceColor, setSourceColor, mode, setMode, effectiveMode }),
13368
+ [sourceColor, mode, effectiveMode]
13063
13369
  );
13064
13370
  const typographyValue = useMemo(() => {
13065
13371
  if (typographyProp) return typographyProp;
@@ -13091,8 +13397,8 @@ function useTheme() {
13091
13397
  return context;
13092
13398
  }
13093
13399
  function useThemeMode() {
13094
- const { mode, setMode } = useTheme();
13095
- return { mode, setMode };
13400
+ const { mode, setMode, effectiveMode } = useTheme();
13401
+ return { mode, setMode, effectiveMode };
13096
13402
  }
13097
13403
  function TableOfContents({
13098
13404
  items,
@@ -13730,7 +14036,7 @@ function TooltipBox({
13730
14036
  onKeyDown: handleKeyDown,
13731
14037
  "aria-label": ariaLabel,
13732
14038
  "aria-describedby": state.isVisible ? tooltipId : void 0,
13733
- children: React38.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
14039
+ children: React39.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
13734
14040
  }
13735
14041
  ),
13736
14042
  mounted && createPortal(
@@ -13760,6 +14066,6 @@ function TooltipBox({
13760
14066
  ] });
13761
14067
  }
13762
14068
 
13763
- export { APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, Badge, BadgedBox, BottomAppBar, Button, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, DIVIDER_COLOR, DIVIDER_PADDING, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, GROUP_SHAPES, ITEM_SHAPE_CLASSES, Icon, IconButton, LargeFlexibleAppBar, LoadingIndicator, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, NavigationRail, NavigationRailItem, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SubMenu, Switch, SwitchColors, SwitchTokens, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, ToggleFAB, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, VIBRANT_COLORS, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, appBarTypography, applyTheme, buildWavePath, cn, generateM3Theme, useAppBarScroll, useRipple as useDOMRipple, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTooltipPosition, useTooltipState, useTypography };
14069
+ export { APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, Badge, BadgedBox, BottomAppBar, Button, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, DIVIDER_COLOR, DIVIDER_PADDING, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, GROUP_SHAPES, ITEM_SHAPE_CLASSES, Icon, IconButton, LargeFlexibleAppBar, LoadingIndicator, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, NavigationBar, NavigationBarItem, NavigationRail, NavigationRailItem, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SubMenu, Switch, SwitchColors, SwitchTokens, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, ToggleFAB, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, VIBRANT_COLORS, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, appBarTypography, applyTheme, buildWavePath, cn, generateM3Theme, resolveMode, useAppBarScroll, useRipple as useDOMRipple, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTooltipPosition, useTooltipState, useTypography };
13764
14070
  //# sourceMappingURL=index.mjs.map
13765
14071
  //# sourceMappingURL=index.mjs.map