@bug-on/m3-expressive 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/buttons.d.mts +26 -5
  3. package/dist/buttons.d.ts +26 -5
  4. package/dist/buttons.js +581 -345
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +573 -345
  7. package/dist/buttons.mjs.map +1 -1
  8. package/dist/core.js +52 -13
  9. package/dist/core.js.map +1 -1
  10. package/dist/core.mjs +52 -13
  11. package/dist/core.mjs.map +1 -1
  12. package/dist/feedback.js +52 -13
  13. package/dist/feedback.js.map +1 -1
  14. package/dist/feedback.mjs +52 -13
  15. package/dist/feedback.mjs.map +1 -1
  16. package/dist/forms.js +4 -1
  17. package/dist/forms.js.map +1 -1
  18. package/dist/forms.mjs +4 -1
  19. package/dist/forms.mjs.map +1 -1
  20. package/dist/{icon-button-sSt6PPLg.d.mts → icon-button-CSsDmuQC.d.mts} +13 -0
  21. package/dist/{icon-button-sSt6PPLg.d.ts → icon-button-CSsDmuQC.d.ts} +13 -0
  22. package/dist/index.d.mts +2 -2
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +1268 -1005
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +1127 -865
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/layout.js +15 -7
  29. package/dist/layout.js.map +1 -1
  30. package/dist/layout.mjs +15 -7
  31. package/dist/layout.mjs.map +1 -1
  32. package/dist/navigation.d.mts +1 -1
  33. package/dist/navigation.d.ts +1 -1
  34. package/dist/navigation.js +66 -16
  35. package/dist/navigation.js.map +1 -1
  36. package/dist/navigation.mjs +66 -16
  37. package/dist/navigation.mjs.map +1 -1
  38. package/dist/overlays.js +52 -13
  39. package/dist/overlays.js.map +1 -1
  40. package/dist/overlays.mjs +52 -13
  41. package/dist/overlays.mjs.map +1 -1
  42. package/dist/pickers.js +177 -111
  43. package/dist/pickers.js.map +1 -1
  44. package/dist/pickers.mjs +177 -111
  45. package/dist/pickers.mjs.map +1 -1
  46. package/dist/{split-button-trailing-uncheckable-BcPD_7uK.d.ts → split-button-trailing-uncheckable-C-qQlyZx.d.ts} +74 -19
  47. package/dist/{split-button-trailing-uncheckable-DtFJkTFr.d.mts → split-button-trailing-uncheckable-DHJqNeq_.d.mts} +74 -19
  48. package/package.json +3 -3
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import * as React59 from 'react';
2
+ import * as React61 from 'react';
3
3
  import { createContext, forwardRef, useState, useRef, useCallback, useMemo, useEffect, useLayoutEffect, useReducer, useContext, useId, cloneElement, createElement } from 'react';
4
4
  import { hexFromArgb, Hct, SchemeExpressive, SchemeNeutral, SchemeMonochrome, SchemeContent, SchemeFidelity, SchemeVibrant, SchemeTonalSpot } from '@material/material-color-utilities';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -228,7 +228,7 @@ function applyTheme(sourceColorHex, mode = "light", root = document.documentElem
228
228
  const resolved = resolveMode(mode);
229
229
  const colors = generateM3Theme(sourceColorHex, resolved, options);
230
230
  for (const [key, value] of Object.entries(colors)) {
231
- const kebabKey = key.replace(/[A-Z]/g, (m68) => `-${m68.toLowerCase()}`);
231
+ const kebabKey = key.replace(/[A-Z]/g, (m71) => `-${m71.toLowerCase()}`);
232
232
  root.style.setProperty(`--md-sys-color-${kebabKey}`, value);
233
233
  root.style.setProperty(`--color-m3-${kebabKey}`, value);
234
234
  }
@@ -250,7 +250,7 @@ function createMd3ExpressiveTheme(options) {
250
250
  function schemeToCssVariables(scheme) {
251
251
  const result = {};
252
252
  for (const [key, value] of Object.entries(scheme)) {
253
- const kebabKey = key.replace(/[A-Z]/g, (m68) => `-${m68.toLowerCase()}`);
253
+ const kebabKey = key.replace(/[A-Z]/g, (m71) => `-${m71.toLowerCase()}`);
254
254
  result[`--md-sys-color-${kebabKey}`] = value;
255
255
  }
256
256
  return result;
@@ -1087,8 +1087,8 @@ var RoundedPolygon = class _RoundedPolygon {
1087
1087
  );
1088
1088
  const mid = c.pointOnCurve(0.5);
1089
1089
  const md = distanceSquared(mid.x - this.centerX, mid.y - this.centerY);
1090
- const m68 = Math.max(ad, md);
1091
- if (m68 > maxDistSq) maxDistSq = m68;
1090
+ const m71 = Math.max(ad, md);
1091
+ if (m71 > maxDistSq) maxDistSq = m71;
1092
1092
  }
1093
1093
  const d = Math.sqrt(maxDistSq);
1094
1094
  return [
@@ -3159,7 +3159,7 @@ var SUBMENU_CONTAINER_VARIANTS = {
3159
3159
  transition: FAST_EFFECTS_TRANSITION
3160
3160
  }
3161
3161
  };
3162
- var MenuContext = React59.createContext({
3162
+ var MenuContext = React61.createContext({
3163
3163
  variant: "baseline",
3164
3164
  colorVariant: "standard",
3165
3165
  menuPrimitive: "dropdown",
@@ -3175,15 +3175,15 @@ function MenuProvider({
3175
3175
  onOpenChange,
3176
3176
  children
3177
3177
  }) {
3178
- const value = React59.useMemo(
3178
+ const value = React61.useMemo(
3179
3179
  () => ({ variant, colorVariant, menuPrimitive, open, onOpenChange }),
3180
3180
  [variant, colorVariant, menuPrimitive, open, onOpenChange]
3181
3181
  );
3182
3182
  return /* @__PURE__ */ jsx(MenuContext.Provider, { value, children });
3183
3183
  }
3184
3184
  function useMenuContext() {
3185
- const ctx = React59.useContext(MenuContext);
3186
- return React59.useMemo(
3185
+ const ctx = React61.useContext(MenuContext);
3186
+ return React61.useMemo(
3187
3187
  () => __spreadProps(__spreadValues({}, ctx), {
3188
3188
  isStatic: ctx.menuPrimitive === "static",
3189
3189
  menuVariant: ctx.variant
@@ -3298,7 +3298,7 @@ function ContextMenu({
3298
3298
  variant = "baseline",
3299
3299
  colorVariant = "standard"
3300
3300
  }) {
3301
- const [open, setOpen] = React59.useState(false);
3301
+ const [open, setOpen] = React61.useState(false);
3302
3302
  return /* @__PURE__ */ jsx(
3303
3303
  MenuProvider,
3304
3304
  {
@@ -3312,12 +3312,12 @@ function ContextMenu({
3312
3312
  );
3313
3313
  }
3314
3314
  ContextMenu.displayName = "ContextMenu";
3315
- var ContextMenuTrigger = React59.forwardRef((_a, ref) => {
3315
+ var ContextMenuTrigger = React61.forwardRef((_a, ref) => {
3316
3316
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
3317
3317
  return /* @__PURE__ */ jsx(RxContextMenu.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
3318
3318
  });
3319
3319
  ContextMenuTrigger.displayName = "ContextMenuTrigger";
3320
- var ContextMenuContent = React59.forwardRef(
3320
+ var ContextMenuContent = React61.forwardRef(
3321
3321
  (_a, ref) => {
3322
3322
  var _b = _a, {
3323
3323
  children,
@@ -3365,10 +3365,10 @@ var ContextMenuContent = React59.forwardRef(
3365
3365
  className
3366
3366
  );
3367
3367
  const flattenChildren = (nodes) => {
3368
- return React59.Children.toArray(nodes).reduce(
3368
+ return React61.Children.toArray(nodes).reduce(
3369
3369
  (acc, child) => {
3370
- if (React59.isValidElement(child)) {
3371
- if (child.type === React59.Fragment) {
3370
+ if (React61.isValidElement(child)) {
3371
+ if (child.type === React61.Fragment) {
3372
3372
  return acc.concat(
3373
3373
  flattenChildren(
3374
3374
  child.props.children
@@ -3387,7 +3387,7 @@ var ContextMenuContent = React59.forwardRef(
3387
3387
  const validChildren = flattenChildren(children);
3388
3388
  const groupCount = validChildren.length;
3389
3389
  const enhancedChildren = validChildren.map(
3390
- (child, i) => React59.cloneElement(
3390
+ (child, i) => React61.cloneElement(
3391
3391
  child,
3392
3392
  {
3393
3393
  index: i,
@@ -3451,12 +3451,12 @@ function Menu(_a) {
3451
3451
  ]);
3452
3452
  var _a2;
3453
3453
  const resolvedVariant = (_a2 = variant != null ? variant : menuVariant) != null ? _a2 : "baseline";
3454
- const [internalOpen, setInternalOpen] = React59.useState(
3454
+ const [internalOpen, setInternalOpen] = React61.useState(
3455
3455
  () => defaultOpen != null ? defaultOpen : false
3456
3456
  );
3457
3457
  const isControlled = controlledOpen !== void 0;
3458
3458
  const open = isControlled ? controlledOpen : internalOpen;
3459
- const handleOpenChange = React59.useCallback(
3459
+ const handleOpenChange = React61.useCallback(
3460
3460
  (next) => {
3461
3461
  if (!isControlled) setInternalOpen(next);
3462
3462
  controlledOnOpenChange == null ? void 0 : controlledOnOpenChange(next);
@@ -3483,12 +3483,12 @@ function Menu(_a) {
3483
3483
  );
3484
3484
  }
3485
3485
  Menu.displayName = "Menu";
3486
- var MenuTrigger = React59.forwardRef((_a, ref) => {
3486
+ var MenuTrigger = React61.forwardRef((_a, ref) => {
3487
3487
  var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
3488
3488
  return /* @__PURE__ */ jsx(DropdownMenu.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
3489
3489
  });
3490
3490
  MenuTrigger.displayName = "MenuTrigger";
3491
- var MenuContent = React59.forwardRef(
3491
+ var MenuContent = React61.forwardRef(
3492
3492
  (_a, ref) => {
3493
3493
  var _b = _a, {
3494
3494
  children,
@@ -3542,10 +3542,10 @@ var MenuContent = React59.forwardRef(
3542
3542
  className
3543
3543
  );
3544
3544
  const flattenChildren = (nodes) => {
3545
- return React59.Children.toArray(nodes).reduce(
3545
+ return React61.Children.toArray(nodes).reduce(
3546
3546
  (acc, child) => {
3547
- if (React59.isValidElement(child)) {
3548
- if (child.type === React59.Fragment) {
3547
+ if (React61.isValidElement(child)) {
3548
+ if (child.type === React61.Fragment) {
3549
3549
  return acc.concat(
3550
3550
  flattenChildren(
3551
3551
  child.props.children
@@ -3564,7 +3564,7 @@ var MenuContent = React59.forwardRef(
3564
3564
  const validChildren = flattenChildren(children);
3565
3565
  const groupCount = validChildren.length;
3566
3566
  const enhancedChildren = validChildren.map(
3567
- (child, i) => React59.cloneElement(child, {
3567
+ (child, i) => React61.cloneElement(child, {
3568
3568
  index: i,
3569
3569
  count: groupCount,
3570
3570
  isGapVariant: isExpressiveGap
@@ -3619,7 +3619,7 @@ var MenuContent = React59.forwardRef(
3619
3619
  }
3620
3620
  );
3621
3621
  MenuContent.displayName = "MenuContent";
3622
- var MenuDivider = React59.forwardRef(
3622
+ var MenuDivider = React61.forwardRef(
3623
3623
  (_a, ref) => {
3624
3624
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3625
3625
  const { menuVariant } = useMenuContext();
@@ -3650,7 +3650,7 @@ function getGroupPosition(index, count) {
3650
3650
  function getGroupActiveShape(position) {
3651
3651
  return GROUP_SHAPES[`${position}Active`];
3652
3652
  }
3653
- var MenuGroup = React59.forwardRef(
3653
+ var MenuGroup = React61.forwardRef(
3654
3654
  (_a, ref) => {
3655
3655
  var _b = _a, {
3656
3656
  children,
@@ -3680,15 +3680,15 @@ var MenuGroup = React59.forwardRef(
3680
3680
  const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
3681
3681
  const position = getGroupPosition(index, count);
3682
3682
  const activeShape = getGroupActiveShape(position);
3683
- const [isHovered, setIsHovered] = React59.useState(false);
3683
+ const [isHovered, setIsHovered] = React61.useState(false);
3684
3684
  const currentShape = isStatic || isHovered ? activeShape : GROUP_SHAPES.inactive;
3685
- const handlePointerEnter = React59.useCallback(() => setIsHovered(true), []);
3686
- const handlePointerLeave = React59.useCallback(() => setIsHovered(false), []);
3685
+ const handlePointerEnter = React61.useCallback(() => setIsHovered(true), []);
3686
+ const handlePointerLeave = React61.useCallback(() => setIsHovered(false), []);
3687
3687
  const flattenChildren = (children2) => {
3688
- return React59.Children.toArray(children2).reduce(
3688
+ return React61.Children.toArray(children2).reduce(
3689
3689
  (acc, child) => {
3690
- if (React59.isValidElement(child)) {
3691
- if (child.type === React59.Fragment) {
3690
+ if (React61.isValidElement(child)) {
3691
+ if (child.type === React61.Fragment) {
3692
3692
  return acc.concat(
3693
3693
  flattenChildren(
3694
3694
  child.props.children
@@ -3706,7 +3706,7 @@ var MenuGroup = React59.forwardRef(
3706
3706
  const itemCount = validChildren.length;
3707
3707
  const enhancedChildren = validChildren.map((child, i) => {
3708
3708
  const itemPosition2 = itemCount === 1 ? "standalone" : i === 0 ? "leading" : i === itemCount - 1 ? "trailing" : "middle";
3709
- return React59.cloneElement(child, {
3709
+ return React61.cloneElement(child, {
3710
3710
  itemPosition: itemPosition2,
3711
3711
  colorVariant
3712
3712
  });
@@ -3782,7 +3782,7 @@ var VARIANT_FONT = {
3782
3782
  rounded: "'Material Symbols Rounded'",
3783
3783
  sharp: "'Material Symbols Sharp'"
3784
3784
  };
3785
- var IconComponent = React59.forwardRef(
3785
+ var IconComponent = React61.forwardRef(
3786
3786
  (_a, ref) => {
3787
3787
  var _b = _a, {
3788
3788
  name,
@@ -3848,14 +3848,14 @@ var IconComponent = React59.forwardRef(
3848
3848
  }
3849
3849
  );
3850
3850
  IconComponent.displayName = "Icon";
3851
- var Icon = React59.memo(IconComponent);
3851
+ var Icon = React61.memo(IconComponent);
3852
3852
  function getItemShapeClass(position, selected, isStatic = false, menuVariant = "expressive") {
3853
3853
  if (menuVariant === "baseline") return BASELINE_ITEM_SHAPE;
3854
3854
  if (selected) return ITEM_SHAPE_CLASSES.selected;
3855
3855
  if (isStatic && position === "standalone") return "rounded-[12px]";
3856
3856
  return ITEM_SHAPE_CLASSES[position];
3857
3857
  }
3858
- var MenuItem = React59.forwardRef(
3858
+ var MenuItem = React61.forwardRef(
3859
3859
  (_a, ref) => {
3860
3860
  var _b = _a, {
3861
3861
  children,
@@ -4057,31 +4057,31 @@ function SubMenu({
4057
4057
  }) {
4058
4058
  const { colorVariant: contextColorVariant, menuPrimitive } = useMenuContext();
4059
4059
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
4060
- const [open, setOpen] = React59.useState(false);
4061
- const openTimerRef = React59.useRef(null);
4062
- const closeTimerRef = React59.useRef(
4060
+ const [open, setOpen] = React61.useState(false);
4061
+ const openTimerRef = React61.useRef(null);
4062
+ const closeTimerRef = React61.useRef(
4063
4063
  null
4064
4064
  );
4065
- const clearTimers = React59.useCallback(() => {
4065
+ const clearTimers = React61.useCallback(() => {
4066
4066
  if (openTimerRef.current) clearTimeout(openTimerRef.current);
4067
4067
  if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
4068
4068
  }, []);
4069
- const handleTriggerPointerEnter = React59.useCallback(() => {
4069
+ const handleTriggerPointerEnter = React61.useCallback(() => {
4070
4070
  clearTimers();
4071
4071
  openTimerRef.current = setTimeout(() => setOpen(true), hoverOpenDelay);
4072
4072
  }, [hoverOpenDelay, clearTimers]);
4073
- const handleTriggerPointerLeave = React59.useCallback(() => {
4073
+ const handleTriggerPointerLeave = React61.useCallback(() => {
4074
4074
  clearTimers();
4075
4075
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
4076
4076
  }, [hoverCloseDelay, clearTimers]);
4077
- const handleContentPointerEnter = React59.useCallback(() => {
4077
+ const handleContentPointerEnter = React61.useCallback(() => {
4078
4078
  clearTimers();
4079
4079
  }, [clearTimers]);
4080
- const handleContentPointerLeave = React59.useCallback(() => {
4080
+ const handleContentPointerLeave = React61.useCallback(() => {
4081
4081
  clearTimers();
4082
4082
  closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
4083
4083
  }, [hoverCloseDelay, clearTimers]);
4084
- React59.useEffect(() => () => clearTimers(), [clearTimers]);
4084
+ React61.useEffect(() => () => clearTimers(), [clearTimers]);
4085
4085
  const Sub3 = menuPrimitive === "context" ? RxContextMenu.Sub : DropdownMenu.Sub;
4086
4086
  const SubTrigger3 = menuPrimitive === "context" ? RxContextMenu.SubTrigger : DropdownMenu.SubTrigger;
4087
4087
  const SubContent3 = menuPrimitive === "context" ? RxContextMenu.SubContent : DropdownMenu.SubContent;
@@ -4093,7 +4093,7 @@ function SubMenu({
4093
4093
  className: "w-full outline-none",
4094
4094
  onPointerEnter: handleTriggerPointerEnter,
4095
4095
  onPointerLeave: handleTriggerPointerLeave,
4096
- children: React59.isValidElement(trigger) ? React59.cloneElement(trigger, {
4096
+ children: React61.isValidElement(trigger) ? React61.cloneElement(trigger, {
4097
4097
  isSubTrigger: true,
4098
4098
  // Auto-add chevron if missing
4099
4099
  trailingIcon: trigger.props.trailingIcon || /* @__PURE__ */ jsx(Icon, { name: "chevron_right", size: 20 })
@@ -4170,7 +4170,7 @@ function SubMenuContent({
4170
4170
  );
4171
4171
  }
4172
4172
  SubMenuContent.displayName = "SubMenuContent";
4173
- var VerticalMenuDivider = React59.forwardRef((_a, ref) => {
4173
+ var VerticalMenuDivider = React61.forwardRef((_a, ref) => {
4174
4174
  var _b = _a, { className, index, count, isGapVariant } = _b, props = __objRest(_b, ["className", "index", "count", "isGapVariant"]);
4175
4175
  return /* @__PURE__ */ jsx(
4176
4176
  "hr",
@@ -4190,7 +4190,7 @@ var VerticalMenuDivider = React59.forwardRef((_a, ref) => {
4190
4190
  });
4191
4191
  VerticalMenuDivider.displayName = "VerticalMenuDivider";
4192
4192
  var VerticalMenuGroup = MenuGroup;
4193
- var VerticalMenuContent = React59.forwardRef(
4193
+ var VerticalMenuContent = React61.forwardRef(
4194
4194
  (_a, ref) => {
4195
4195
  var _b = _a, {
4196
4196
  children,
@@ -4207,10 +4207,10 @@ var VerticalMenuContent = React59.forwardRef(
4207
4207
  const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
4208
4208
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
4209
4209
  const flattenChildren = (children2) => {
4210
- return React59.Children.toArray(children2).reduce(
4210
+ return React61.Children.toArray(children2).reduce(
4211
4211
  (acc, child) => {
4212
- if (React59.isValidElement(child)) {
4213
- if (child.type === React59.Fragment) {
4212
+ if (React61.isValidElement(child)) {
4213
+ if (child.type === React61.Fragment) {
4214
4214
  return acc.concat(
4215
4215
  flattenChildren(
4216
4216
  child.props.children
@@ -4227,7 +4227,7 @@ var VerticalMenuContent = React59.forwardRef(
4227
4227
  const validChildren = flattenChildren(children);
4228
4228
  const groupCount = validChildren.length;
4229
4229
  const enhancedChildren = validChildren.map(
4230
- (child, i) => React59.cloneElement(child, {
4230
+ (child, i) => React61.cloneElement(child, {
4231
4231
  index: i,
4232
4232
  count: groupCount,
4233
4233
  isGapVariant: separatorStyle === "gap"
@@ -4264,13 +4264,13 @@ var VerticalMenuContent = React59.forwardRef(
4264
4264
  }
4265
4265
  );
4266
4266
  VerticalMenuContent.displayName = "VerticalMenuContent";
4267
- var VerticalMenu = React59.forwardRef((_a, ref) => {
4267
+ var VerticalMenu = React61.forwardRef((_a, ref) => {
4268
4268
  var _b = _a, { children, colorVariant = "standard", className } = _b, props = __objRest(_b, ["children", "colorVariant", "className"]);
4269
- const noop = React59.useCallback(() => {
4269
+ const noop = React61.useCallback(() => {
4270
4270
  }, []);
4271
4271
  const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
4272
- const containerRef = React59.useRef(null);
4273
- const mergedRef = React59.useCallback(
4272
+ const containerRef = React61.useRef(null);
4273
+ const mergedRef = React61.useCallback(
4274
4274
  (node) => {
4275
4275
  containerRef.current = node;
4276
4276
  if (typeof ref === "function") ref(node);
@@ -4279,7 +4279,7 @@ var VerticalMenu = React59.forwardRef((_a, ref) => {
4279
4279
  },
4280
4280
  [ref]
4281
4281
  );
4282
- const handleKeyDown = React59.useCallback(
4282
+ const handleKeyDown = React61.useCallback(
4283
4283
  (e) => {
4284
4284
  var _a2;
4285
4285
  if (!containerRef.current) return;
@@ -4362,7 +4362,7 @@ var VerticalMenu = React59.forwardRef((_a, ref) => {
4362
4362
  });
4363
4363
  VerticalMenu.displayName = "VerticalMenu";
4364
4364
  function detectSeparatorStyle(children) {
4365
- const child = React59.Children.toArray(children).find(React59.isValidElement);
4365
+ const child = React61.Children.toArray(children).find(React61.isValidElement);
4366
4366
  if (child) {
4367
4367
  const style = child.props.separatorStyle;
4368
4368
  if (style) return style;
@@ -4443,11 +4443,11 @@ function AppBarColumn({
4443
4443
  maxItemCount,
4444
4444
  className
4445
4445
  }) {
4446
- const containerRef = React59.useRef(null);
4447
- const [visibleCount, setVisibleCount] = React59.useState(
4446
+ const containerRef = React61.useRef(null);
4447
+ const [visibleCount, setVisibleCount] = React61.useState(
4448
4448
  maxItemCount != null ? maxItemCount : items.length
4449
4449
  );
4450
- React59.useEffect(() => {
4450
+ React61.useEffect(() => {
4451
4451
  if (maxItemCount !== void 0) {
4452
4452
  setVisibleCount(Math.min(maxItemCount, items.length));
4453
4453
  return;
@@ -4495,11 +4495,11 @@ function AppBarColumn({
4495
4495
  );
4496
4496
  }
4497
4497
  function AppBarRow({ items, maxItemCount, className }) {
4498
- const containerRef = React59.useRef(null);
4499
- const [visibleCount, setVisibleCount] = React59.useState(
4498
+ const containerRef = React61.useRef(null);
4499
+ const [visibleCount, setVisibleCount] = React61.useState(
4500
4500
  maxItemCount != null ? maxItemCount : items.length
4501
4501
  );
4502
- React59.useEffect(() => {
4502
+ React61.useEffect(() => {
4503
4503
  if (maxItemCount !== void 0) {
4504
4504
  setVisibleCount(Math.min(maxItemCount, items.length));
4505
4505
  return;
@@ -4553,12 +4553,12 @@ function useAppBarScroll({
4553
4553
  collapsedHeight = 64,
4554
4554
  expandedHeight = 112
4555
4555
  } = {}) {
4556
- const [isScrolled, setIsScrolled] = React59.useState(false);
4557
- const [collapsedFraction, setCollapsedFraction] = React59.useState(0);
4558
- const [isHidden, setIsHidden] = React59.useState(false);
4559
- const prevScrollYRef = React59.useRef(0);
4556
+ const [isScrolled, setIsScrolled] = React61.useState(false);
4557
+ const [collapsedFraction, setCollapsedFraction] = React61.useState(0);
4558
+ const [isHidden, setIsHidden] = React61.useState(false);
4559
+ const prevScrollYRef = React61.useRef(0);
4560
4560
  const hideThreshold = 64;
4561
- React59.useEffect(() => {
4561
+ React61.useEffect(() => {
4562
4562
  var _a;
4563
4563
  const scrollDistance = expandedHeight - collapsedHeight;
4564
4564
  const getScrollY = () => {
@@ -4679,7 +4679,7 @@ function useFlexibleAppBar({
4679
4679
  expandedHeight
4680
4680
  });
4681
4681
  const scrollProgress = useMotionValue(0);
4682
- React59.useEffect(() => {
4682
+ React61.useEffect(() => {
4683
4683
  scrollProgress.set(
4684
4684
  shouldReduceMotion ? collapsedFraction > 0.5 ? 1 : 0 : collapsedFraction
4685
4685
  );
@@ -5020,7 +5020,7 @@ function SearchAppBar({
5020
5020
  }) {
5021
5021
  var _a, _b;
5022
5022
  const shouldReduceMotion = useReducedMotion();
5023
- const [isSearchOpen, setIsSearchOpen] = React59.useState(false);
5023
+ const [isSearchOpen, setIsSearchOpen] = React61.useState(false);
5024
5024
  const { isScrolled } = useAppBarScroll({
5025
5025
  scrollElement,
5026
5026
  behavior: scrollBehavior === "exitUntilCollapsed" ? "pinned" : scrollBehavior
@@ -5134,8 +5134,8 @@ function SearchView({
5134
5134
  className
5135
5135
  }) {
5136
5136
  const shouldReduceMotion = useReducedMotion();
5137
- const inputRef = React59.useRef(null);
5138
- React59.useEffect(() => {
5137
+ const inputRef = React61.useRef(null);
5138
+ React61.useEffect(() => {
5139
5139
  const timer = window.setTimeout(() => {
5140
5140
  var _a;
5141
5141
  (_a = inputRef.current) == null ? void 0 : _a.focus();
@@ -5405,9 +5405,9 @@ function formatBadgeLabel(children, max) {
5405
5405
  return "";
5406
5406
  }
5407
5407
  function detectBadgeHasContent(badge) {
5408
- return React59.isValidElement(badge) && badge.props.children != null;
5408
+ return React61.isValidElement(badge) && badge.props.children != null;
5409
5409
  }
5410
- var BadgeImpl = React59.forwardRef(
5410
+ var BadgeImpl = React61.forwardRef(
5411
5411
  (_a, ref) => {
5412
5412
  var _b = _a, {
5413
5413
  children,
@@ -5461,7 +5461,7 @@ var BadgeImpl = React59.forwardRef(
5461
5461
  }
5462
5462
  );
5463
5463
  BadgeImpl.displayName = "Badge";
5464
- var Badge = React59.memo(BadgeImpl);
5464
+ var Badge = React61.memo(BadgeImpl);
5465
5465
  function BadgedBox({
5466
5466
  badge,
5467
5467
  children,
@@ -5527,11 +5527,11 @@ var ROTATE_KEY_SPLINES = [
5527
5527
  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";
5528
5528
  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";
5529
5529
  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";
5530
- var IndeterminateSvg = React59.memo(function IndeterminateSvg2({
5530
+ var IndeterminateSvg = React61.memo(function IndeterminateSvg2({
5531
5531
  size
5532
5532
  }) {
5533
- const [ready, setReady] = React59.useState(false);
5534
- React59.useEffect(() => {
5533
+ const [ready, setReady] = React61.useState(false);
5534
+ React61.useEffect(() => {
5535
5535
  const raf = requestAnimationFrame(() => setReady(true));
5536
5536
  return () => cancelAnimationFrame(raf);
5537
5537
  }, []);
@@ -5576,7 +5576,7 @@ var IndeterminateSvg = React59.memo(function IndeterminateSvg2({
5576
5576
  }
5577
5577
  );
5578
5578
  });
5579
- var DeterminateSvg = React59.memo(function DeterminateSvg2({
5579
+ var DeterminateSvg = React61.memo(function DeterminateSvg2({
5580
5580
  size,
5581
5581
  progress
5582
5582
  }) {
@@ -5601,7 +5601,7 @@ var DeterminateSvg = React59.memo(function DeterminateSvg2({
5601
5601
  }
5602
5602
  );
5603
5603
  });
5604
- var LoadingIndicator = React59.forwardRef(
5604
+ var LoadingIndicator = React61.forwardRef(
5605
5605
  (_a, ref) => {
5606
5606
  var _b = _a, {
5607
5607
  variant = "uncontained",
@@ -5716,7 +5716,7 @@ function getSinePath(startX, endX, phase, wl, amp) {
5716
5716
  d += ` L ${endX.toFixed(2)} ${yEnd.toFixed(2)}`;
5717
5717
  return d;
5718
5718
  }
5719
- var CircularProgress = React59.forwardRef(
5719
+ var CircularProgress = React61.forwardRef(
5720
5720
  (_a, ref) => {
5721
5721
  var _b = _a, {
5722
5722
  value,
@@ -5754,15 +5754,15 @@ var CircularProgress = React59.forwardRef(
5754
5754
  const isWavy = shape === "wavy";
5755
5755
  const BASELINE_SIZE = 48;
5756
5756
  const scaleFactor = size / BASELINE_SIZE;
5757
- const effectiveAmplitude = React59.useMemo(
5757
+ const effectiveAmplitude = React61.useMemo(
5758
5758
  () => amplitude != null ? amplitude : 1.6 * scaleFactor,
5759
5759
  [amplitude, scaleFactor]
5760
5760
  );
5761
- const effectiveWavelength = React59.useMemo(
5761
+ const effectiveWavelength = React61.useMemo(
5762
5762
  () => wavelength != null ? wavelength : 15 * scaleFactor,
5763
5763
  [wavelength, scaleFactor]
5764
5764
  );
5765
- const wavyActivePath = React59.useMemo(
5765
+ const wavyActivePath = React61.useMemo(
5766
5766
  () => isWavy ? generateWavyCircularPath(
5767
5767
  center,
5768
5768
  radius,
@@ -5771,8 +5771,8 @@ var CircularProgress = React59.forwardRef(
5771
5771
  ) : null,
5772
5772
  [isWavy, center, radius, effectiveAmplitude, effectiveWavelength]
5773
5773
  );
5774
- const circumference = React59.useMemo(() => 2 * Math.PI * radius, [radius]);
5775
- const gapForTrack = React59.useMemo(
5774
+ const circumference = React61.useMemo(() => 2 * Math.PI * radius, [radius]);
5775
+ const gapForTrack = React61.useMemo(
5776
5776
  () => (gapSize + trackHeight) / circumference,
5777
5777
  [gapSize, trackHeight, circumference]
5778
5778
  );
@@ -5961,9 +5961,9 @@ var CircularProgress = React59.forwardRef(
5961
5961
  );
5962
5962
  CircularProgress.displayName = "CircularProgress";
5963
5963
  function useContainerWidth() {
5964
- const [width, setWidth] = React59.useState(0);
5965
- const observerRef = React59.useRef(null);
5966
- const ref = React59.useCallback((node) => {
5964
+ const [width, setWidth] = React61.useState(0);
5965
+ const observerRef = React61.useRef(null);
5966
+ const ref = React61.useCallback((node) => {
5967
5967
  if (observerRef.current) {
5968
5968
  observerRef.current.disconnect();
5969
5969
  observerRef.current = null;
@@ -5977,7 +5977,7 @@ function useContainerWidth() {
5977
5977
  observerRef.current = obs;
5978
5978
  }
5979
5979
  }, []);
5980
- React59.useEffect(() => {
5980
+ React61.useEffect(() => {
5981
5981
  return () => {
5982
5982
  if (observerRef.current) {
5983
5983
  observerRef.current.disconnect();
@@ -5987,7 +5987,7 @@ function useContainerWidth() {
5987
5987
  return [ref, width];
5988
5988
  }
5989
5989
  function useMergedRef(...refs) {
5990
- return React59.useCallback(
5990
+ return React61.useCallback(
5991
5991
  (node) => {
5992
5992
  for (const ref of refs) {
5993
5993
  if (typeof ref === "function") {
@@ -6001,7 +6001,7 @@ function useMergedRef(...refs) {
6001
6001
  [refs]
6002
6002
  );
6003
6003
  }
6004
- var FlatLinearTrack = React59.memo(function FlatLinearTrack2({
6004
+ var FlatLinearTrack = React61.memo(function FlatLinearTrack2({
6005
6005
  trackHeight,
6006
6006
  activeColor,
6007
6007
  trackColor,
@@ -6077,7 +6077,7 @@ var FlatLinearTrack = React59.memo(function FlatLinearTrack2({
6077
6077
  }
6078
6078
  );
6079
6079
  });
6080
- var WavyLinearTrack = React59.memo(function WavyLinearTrack2({
6080
+ var WavyLinearTrack = React61.memo(function WavyLinearTrack2({
6081
6081
  trackHeight,
6082
6082
  svgHeight,
6083
6083
  amplitude,
@@ -6096,13 +6096,13 @@ var WavyLinearTrack = React59.memo(function WavyLinearTrack2({
6096
6096
  }) {
6097
6097
  const isDeterminate = typeof value === "number";
6098
6098
  const clampedValue = isDeterminate ? Math.max(0, Math.min(100, value)) : 100;
6099
- const titleId = React59.useId();
6099
+ const titleId = React61.useId();
6100
6100
  const [containerRef, width] = useContainerWidth();
6101
- const activePathRef = React59.useRef(null);
6102
- const trackPathRef = React59.useRef(null);
6101
+ const activePathRef = React61.useRef(null);
6102
+ const trackPathRef = React61.useRef(null);
6103
6103
  const amplitudeMV = useMotionValue(amplitude);
6104
6104
  const fractionMV = useMotionValue(isDeterminate ? clampedValue / 100 : 1);
6105
- React59.useEffect(() => {
6105
+ React61.useEffect(() => {
6106
6106
  if (isDeterminate) {
6107
6107
  const fraction = clampedValue / 100;
6108
6108
  let targetAmp = amplitude;
@@ -6273,7 +6273,7 @@ var WavyLinearTrack = React59.memo(function WavyLinearTrack2({
6273
6273
  }
6274
6274
  );
6275
6275
  });
6276
- var LinearProgress = React59.forwardRef(
6276
+ var LinearProgress = React61.forwardRef(
6277
6277
  (_a, ref) => {
6278
6278
  var _b = _a, {
6279
6279
  value,
@@ -6314,10 +6314,10 @@ var LinearProgress = React59.forwardRef(
6314
6314
  ]);
6315
6315
  const isDeterminate = value !== void 0;
6316
6316
  const clampedValue = isDeterminate ? Math.min(100, Math.max(0, value)) : 0;
6317
- const containerRef = React59.useRef(null);
6317
+ const containerRef = React61.useRef(null);
6318
6318
  const mergedRef = useMergedRef(ref, containerRef);
6319
- const [isRtl, setIsRtl] = React59.useState(false);
6320
- React59.useEffect(() => {
6319
+ const [isRtl, setIsRtl] = React61.useState(false);
6320
+ React61.useEffect(() => {
6321
6321
  if (containerRef.current) {
6322
6322
  const dir = getComputedStyle(containerRef.current).direction;
6323
6323
  setIsRtl(dir === "rtl");
@@ -6325,16 +6325,16 @@ var LinearProgress = React59.forwardRef(
6325
6325
  }, []);
6326
6326
  const isWavy = shape === "wavy";
6327
6327
  const resolvedTrackShape = trackShape != null ? trackShape : shape;
6328
- const effectiveAmplitude = React59.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
6329
- const svgHeight = React59.useMemo(
6328
+ const effectiveAmplitude = React61.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
6329
+ const svgHeight = React61.useMemo(
6330
6330
  () => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
6331
6331
  [isWavy, trackHeight, effectiveAmplitude]
6332
6332
  );
6333
- const shouldShowStop = React59.useMemo(
6333
+ const shouldShowStop = React61.useMemo(
6334
6334
  () => isDeterminate && resolvedTrackShape === "flat" && (showStopIndicator === true || showStopIndicator === "auto" && isDeterminate),
6335
6335
  [isDeterminate, resolvedTrackShape, showStopIndicator]
6336
6336
  );
6337
- const stopSize = React59.useMemo(
6337
+ const stopSize = React61.useMemo(
6338
6338
  () => Math.max(2, trackHeight > 4 ? 4 : trackHeight / 2),
6339
6339
  [trackHeight]
6340
6340
  );
@@ -6407,14 +6407,14 @@ var LinearProgress = React59.forwardRef(
6407
6407
  }
6408
6408
  );
6409
6409
  LinearProgress.displayName = "LinearProgress";
6410
- var ProgressIndicator = React59.forwardRef((props, ref) => {
6410
+ var ProgressIndicator = React61.forwardRef((props, ref) => {
6411
6411
  if (props.variant === "circular") {
6412
6412
  return /* @__PURE__ */ jsx(CircularProgress, __spreadValues({ ref }, props));
6413
6413
  }
6414
6414
  return /* @__PURE__ */ jsx(LinearProgress, __spreadValues({ ref }, props));
6415
6415
  });
6416
6416
  ProgressIndicator.displayName = "ProgressIndicator";
6417
- var RippleItem = React59.memo(function RippleItem2({
6417
+ var RippleItem = React61.memo(function RippleItem2({
6418
6418
  ripple,
6419
6419
  onDone
6420
6420
  }) {
@@ -6458,14 +6458,17 @@ function Ripple({
6458
6458
  }
6459
6459
  function useRippleState(options = {}) {
6460
6460
  const { disabled = false } = options;
6461
- const [ripples, setRipples] = React59.useState([]);
6462
- const onPointerDown = React59.useCallback(
6461
+ const [ripples, setRipples] = React61.useState([]);
6462
+ const onPointerDown = React61.useCallback(
6463
6463
  (e) => {
6464
6464
  if (disabled) return;
6465
6465
  const rect = e.currentTarget.getBoundingClientRect();
6466
6466
  const x = e.clientX - rect.left;
6467
6467
  const y = e.clientY - rect.top;
6468
- const rippleSize = Math.hypot(rect.width, rect.height) * 2;
6468
+ const rippleSize = Math.max(
6469
+ Math.hypot(rect.width, rect.height) * 2.5,
6470
+ 320
6471
+ );
6469
6472
  setRipples((prev) => [
6470
6473
  ...prev,
6471
6474
  { id: Date.now(), x, y, size: rippleSize }
@@ -6473,7 +6476,7 @@ function useRippleState(options = {}) {
6473
6476
  },
6474
6477
  [disabled]
6475
6478
  );
6476
- const removeRipple = React59.useCallback((id) => {
6479
+ const removeRipple = React61.useCallback((id) => {
6477
6480
  setRipples((prev) => prev.filter((r) => r.id !== id));
6478
6481
  }, []);
6479
6482
  return { ripples, onPointerDown, removeRipple };
@@ -6704,7 +6707,7 @@ function AnimatedIconSlot({
6704
6707
  }
6705
6708
  );
6706
6709
  }
6707
- var ButtonComponent = React59.forwardRef(
6710
+ var ButtonComponent = React61.forwardRef(
6708
6711
  (_a, ref) => {
6709
6712
  var _b = _a, {
6710
6713
  className,
@@ -6716,6 +6719,7 @@ var ButtonComponent = React59.forwardRef(
6716
6719
  shape = "round",
6717
6720
  selected,
6718
6721
  icon,
6722
+ selectedIcon,
6719
6723
  iconPosition = "leading",
6720
6724
  loading = false,
6721
6725
  loadingVariant = "loading-indicator",
@@ -6737,6 +6741,7 @@ var ButtonComponent = React59.forwardRef(
6737
6741
  "shape",
6738
6742
  "selected",
6739
6743
  "icon",
6744
+ "selectedIcon",
6740
6745
  "iconPosition",
6741
6746
  "loading",
6742
6747
  "loadingVariant",
@@ -6766,9 +6771,9 @@ var ButtonComponent = React59.forwardRef(
6766
6771
  borderWidth: outlineWidth != null ? outlineWidth : colorStyle === "outlined" ? sizeTokens.outlineWidth : 0,
6767
6772
  borderStyle: colorStyle === "outlined" ? "solid" : void 0
6768
6773
  }, style);
6769
- const labelText = React59.useMemo(() => {
6774
+ const labelText = React61.useMemo(() => {
6770
6775
  if (asChild) {
6771
- const child = React59.Children.only(children);
6776
+ const child = React61.Children.only(children);
6772
6777
  return child.props.children;
6773
6778
  }
6774
6779
  return children;
@@ -6776,8 +6781,8 @@ var ButtonComponent = React59.forwardRef(
6776
6781
  const computedAriaLabel = ariaLabelProp || (typeof children === "string" ? children : void 0);
6777
6782
  const needsTouchTarget = size === "xs" || size === "sm";
6778
6783
  const motionRadius = useMotionValue(animateRadius);
6779
- const asChildRef = React59.useRef(null);
6780
- const mergedRef = React59.useCallback(
6784
+ const asChildRef = React61.useRef(null);
6785
+ const mergedRef = React61.useCallback(
6781
6786
  (node) => {
6782
6787
  asChildRef.current = node;
6783
6788
  if (typeof ref === "function") ref(node);
@@ -6786,14 +6791,14 @@ var ButtonComponent = React59.forwardRef(
6786
6791
  },
6787
6792
  [ref]
6788
6793
  );
6789
- React59.useEffect(() => {
6794
+ React61.useEffect(() => {
6790
6795
  if (!asChild) return;
6791
6796
  return motionRadius.on("change", (v) => {
6792
6797
  if (asChildRef.current)
6793
6798
  asChildRef.current.style.borderRadius = `${v}px`;
6794
6799
  });
6795
6800
  }, [motionRadius, asChild]);
6796
- React59.useEffect(() => {
6801
+ React61.useEffect(() => {
6797
6802
  if (!asChild) return;
6798
6803
  const controls = springAnimate(motionRadius, animateRadius);
6799
6804
  return () => controls.stop();
@@ -6801,14 +6806,14 @@ var ButtonComponent = React59.forwardRef(
6801
6806
  const { ripples, onPointerDown, removeRipple } = useRippleState({
6802
6807
  disabled: loading
6803
6808
  });
6804
- const handleClick = React59.useCallback(
6809
+ const handleClick = React61.useCallback(
6805
6810
  (e) => {
6806
6811
  if (loading) return e.preventDefault();
6807
6812
  onClick == null ? void 0 : onClick(e);
6808
6813
  },
6809
6814
  [loading, onClick]
6810
6815
  );
6811
- const handleKeyDown = React59.useCallback(
6816
+ const handleKeyDown = React61.useCallback(
6812
6817
  (e) => {
6813
6818
  if (loading) return;
6814
6819
  if (onClick && (e.key === "Enter" || e.key === " ")) {
@@ -6836,10 +6841,11 @@ var ButtonComponent = React59.forwardRef(
6836
6841
  layout: BUTTON_SHAPE_MORPH_SPRING,
6837
6842
  default: SPRING_TRANSITION
6838
6843
  };
6844
+ const activeIcon = isSelected && selectedIcon ? selectedIcon : icon;
6839
6845
  const innerContent = /* @__PURE__ */ jsxs(Fragment, { children: [
6840
6846
  needsTouchTarget && /* @__PURE__ */ jsx(TouchTarget, {}),
6841
6847
  /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone: removeRipple }),
6842
- /* @__PURE__ */ jsx(AnimatePresence, { initial: false, mode: "popLayout", children: (loading || icon && iconPosition === "leading") && /* @__PURE__ */ jsx(
6848
+ /* @__PURE__ */ jsx(AnimatePresence, { initial: false, mode: "wait", children: (loading || activeIcon && iconPosition === "leading") && /* @__PURE__ */ jsx(
6843
6849
  AnimatedIconSlot,
6844
6850
  {
6845
6851
  iconSize: sizeTokens.iconSize,
@@ -6861,8 +6867,9 @@ var ButtonComponent = React59.forwardRef(
6861
6867
  trackColor: "transparent",
6862
6868
  "aria-label": "Loading"
6863
6869
  }
6864
- ) : icon
6865
- }
6870
+ ) : activeIcon
6871
+ },
6872
+ isSelected && selectedIcon ? "selected-icon" : "icon"
6866
6873
  ) }),
6867
6874
  labelText && /* @__PURE__ */ jsx(
6868
6875
  m.span,
@@ -6873,27 +6880,28 @@ var ButtonComponent = React59.forwardRef(
6873
6880
  children: labelText
6874
6881
  }
6875
6882
  ),
6876
- /* @__PURE__ */ jsx(AnimatePresence, { initial: false, mode: "popLayout", children: icon && iconPosition === "trailing" && /* @__PURE__ */ jsx(
6883
+ /* @__PURE__ */ jsx(AnimatePresence, { initial: false, mode: "wait", children: !loading && activeIcon && iconPosition === "trailing" && /* @__PURE__ */ jsx(
6877
6884
  AnimatedIconSlot,
6878
6885
  {
6879
6886
  iconSize: sizeTokens.iconSize,
6880
6887
  ariaHidden: true,
6881
6888
  transition: sharedTransition,
6882
- children: icon
6883
- }
6889
+ children: activeIcon
6890
+ },
6891
+ isSelected && selectedIcon ? "selected-icon" : "icon"
6884
6892
  ) })
6885
6893
  ] });
6886
- const handleAsChildPointerDown = React59.useCallback(
6894
+ const handleAsChildPointerDown = React61.useCallback(
6887
6895
  (e) => {
6888
6896
  springAnimate(motionRadius, pressedRadius);
6889
6897
  onPointerDown == null ? void 0 : onPointerDown(e);
6890
6898
  },
6891
6899
  [motionRadius, pressedRadius, onPointerDown]
6892
6900
  );
6893
- const handleAsChildPointerUp = React59.useCallback(() => {
6901
+ const handleAsChildPointerUp = React61.useCallback(() => {
6894
6902
  springAnimate(motionRadius, animateRadius);
6895
6903
  }, [motionRadius, animateRadius]);
6896
- const handlePointerDown = React59.useCallback(
6904
+ const handlePointerDown = React61.useCallback(
6897
6905
  (e) => {
6898
6906
  onPointerDown(e);
6899
6907
  },
@@ -6903,7 +6911,7 @@ var ButtonComponent = React59.forwardRef(
6903
6911
  const strippedProps = __spreadValues({}, restProps);
6904
6912
  for (const key of MOTION_PROP_KEYS) delete strippedProps[key];
6905
6913
  const htmlProps = strippedProps;
6906
- const child = React59.Children.only(children);
6914
+ const child = React61.Children.only(children);
6907
6915
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(
6908
6916
  Slot,
6909
6917
  __spreadProps(__spreadValues({
@@ -6920,7 +6928,7 @@ var ButtonComponent = React59.forwardRef(
6920
6928
  }),
6921
6929
  className: buttonClassName
6922
6930
  }, htmlProps), {
6923
- children: React59.cloneElement(child, { children: innerContent })
6931
+ children: React61.cloneElement(child, { children: innerContent })
6924
6932
  })
6925
6933
  ) });
6926
6934
  }
@@ -6949,7 +6957,333 @@ var ButtonComponent = React59.forwardRef(
6949
6957
  }
6950
6958
  );
6951
6959
  ButtonComponent.displayName = "Button";
6952
- var Button = React59.memo(ButtonComponent);
6960
+ var Button = React61.memo(ButtonComponent);
6961
+
6962
+ // src/ui/buttons/button-distribute/button-distribute-tokens.ts
6963
+ var DISTRIBUTE_SPRING_TRANSITION = {
6964
+ type: "spring",
6965
+ stiffness: 300,
6966
+ damping: 30,
6967
+ mass: 0.8
6968
+ };
6969
+ var DEFAULT_EXPAND_RATIO = 0.3;
6970
+ var DISTRIBUTE_RADIUS_TOKENS = {
6971
+ xs: { circleRadius: 16, pillRadius: 16, pressedRadius: 8 },
6972
+ sm: { circleRadius: 20, pillRadius: 20, pressedRadius: 10 },
6973
+ md: { circleRadius: 28, pillRadius: 28, pressedRadius: 16 },
6974
+ lg: { circleRadius: 48, pillRadius: 48, pressedRadius: 28 },
6975
+ xl: { circleRadius: 68, pillRadius: 68, pressedRadius: 40 }
6976
+ };
6977
+ var DISTRIBUTE_HEIGHT_TOKENS = {
6978
+ xs: "h-8",
6979
+ sm: "h-10",
6980
+ md: "h-14",
6981
+ lg: "h-24",
6982
+ xl: "h-[8.5rem]"
6983
+ };
6984
+ function useDistributeWeights({
6985
+ count,
6986
+ weights,
6987
+ activeIndex,
6988
+ expandRatio = DEFAULT_EXPAND_RATIO,
6989
+ mode = "dynamic",
6990
+ isTextItem
6991
+ }) {
6992
+ return React61.useMemo(() => {
6993
+ if (count <= 0) return [];
6994
+ if (mode === "mixed") {
6995
+ const baseWeights2 = new Array(count).fill(0).map((_, idx) => {
6996
+ if (idx === 0 || idx === count - 1) return 0;
6997
+ return weights && weights[idx] !== void 0 ? weights[idx] : 1;
6998
+ });
6999
+ if (activeIndex === null || activeIndex < 0 || activeIndex >= count || count === 1) {
7000
+ return baseWeights2;
7001
+ }
7002
+ const result2 = [...baseWeights2];
7003
+ const expandAmount2 = expandRatio * 1.5;
7004
+ if (activeIndex === 0) {
7005
+ result2[0] = expandAmount2;
7006
+ for (let i = 1; i < count - 1; i++) {
7007
+ result2[i] = Math.max(0.5, baseWeights2[i] - expandRatio * 0.4);
7008
+ }
7009
+ } else if (activeIndex === count - 1) {
7010
+ result2[count - 1] = expandAmount2;
7011
+ for (let i = 1; i < count - 1; i++) {
7012
+ result2[i] = Math.max(0.5, baseWeights2[i] - expandRatio * 0.4);
7013
+ }
7014
+ } else {
7015
+ result2[activeIndex] = baseWeights2[activeIndex] + expandRatio;
7016
+ for (let i = 1; i < count - 1; i++) {
7017
+ if (i !== activeIndex) {
7018
+ result2[i] = Math.max(0.5, baseWeights2[i] - expandRatio * 0.5);
7019
+ }
7020
+ }
7021
+ }
7022
+ return result2;
7023
+ }
7024
+ let baseWeights;
7025
+ if (weights && weights.length === count) {
7026
+ baseWeights = [...weights];
7027
+ } else if (mode === "dynamic" && count === 3) {
7028
+ baseWeights = [1, 2, 1];
7029
+ } else {
7030
+ baseWeights = new Array(count).fill(1);
7031
+ }
7032
+ if (activeIndex === null || activeIndex < 0 || activeIndex >= count || count === 1) {
7033
+ return baseWeights;
7034
+ }
7035
+ const totalWeight = baseWeights.reduce((acc, w) => acc + w, 0);
7036
+ const activeBaseWeight = baseWeights[activeIndex];
7037
+ const expandAmount = expandRatio * totalWeight;
7038
+ const minWeights = baseWeights.map((w, idx) => {
7039
+ if (isTextItem == null ? void 0 : isTextItem[idx]) {
7040
+ return Math.max(0.75, w * 0.65);
7041
+ }
7042
+ return 0.4;
7043
+ });
7044
+ const shrinkCapacity = baseWeights.map(
7045
+ (w, idx) => idx === activeIndex ? 0 : Math.max(0, w - minWeights[idx])
7046
+ );
7047
+ const totalCapacity = shrinkCapacity.reduce((acc, cap) => acc + cap, 0);
7048
+ const result = [...baseWeights];
7049
+ if (totalCapacity > 0) {
7050
+ const actualExpand = Math.min(expandAmount, totalCapacity);
7051
+ result[activeIndex] = activeBaseWeight + actualExpand;
7052
+ for (let i = 0; i < count; i++) {
7053
+ if (i !== activeIndex) {
7054
+ const shrinkAmount = actualExpand * (shrinkCapacity[i] / totalCapacity);
7055
+ result[i] = Math.max(minWeights[i], baseWeights[i] - shrinkAmount);
7056
+ }
7057
+ }
7058
+ }
7059
+ return result;
7060
+ }, [count, weights, activeIndex, expandRatio, mode, isTextItem]);
7061
+ }
7062
+ var ButtonDistribute = React61.forwardRef(
7063
+ (_a, ref) => {
7064
+ var _b = _a, {
7065
+ className,
7066
+ style,
7067
+ mode = "dynamic",
7068
+ weights,
7069
+ expandRatio = 0.3,
7070
+ expandOnHover = false,
7071
+ fixedSize = 48,
7072
+ leadingSize,
7073
+ trailingSize,
7074
+ gap = "0.5rem",
7075
+ size = "sm",
7076
+ itemClassName,
7077
+ children,
7078
+ onMouseLeave
7079
+ } = _b, restProps = __objRest(_b, [
7080
+ "className",
7081
+ "style",
7082
+ "mode",
7083
+ "weights",
7084
+ "expandRatio",
7085
+ "expandOnHover",
7086
+ "fixedSize",
7087
+ "leadingSize",
7088
+ "trailingSize",
7089
+ "gap",
7090
+ "size",
7091
+ "itemClassName",
7092
+ "children",
7093
+ "onMouseLeave"
7094
+ ]);
7095
+ var _a2, _b2;
7096
+ const [activeIndex, setActiveIndex] = React61.useState(null);
7097
+ const [pressedIndex, setPressedIndex] = React61.useState(null);
7098
+ const childrenArray = React61.useMemo(
7099
+ () => React61.Children.toArray(children).filter(React61.isValidElement),
7100
+ [children]
7101
+ );
7102
+ const count = childrenArray.length;
7103
+ const isTextItem = React61.useMemo(() => {
7104
+ return childrenArray.map((child) => {
7105
+ const childEl = child;
7106
+ if (typeof childEl.props.children === "string") return true;
7107
+ if (Array.isArray(childEl.props.children)) {
7108
+ return childEl.props.children.some(
7109
+ (c) => typeof c === "string" && c.trim().length > 0
7110
+ );
7111
+ }
7112
+ return false;
7113
+ });
7114
+ }, [childrenArray]);
7115
+ const calculatedWeights = useDistributeWeights({
7116
+ count,
7117
+ weights,
7118
+ activeIndex,
7119
+ expandRatio,
7120
+ mode,
7121
+ isTextItem
7122
+ });
7123
+ const handleGroupMouseLeave = React61.useCallback(
7124
+ (e) => {
7125
+ setActiveIndex(null);
7126
+ setPressedIndex(null);
7127
+ onMouseLeave == null ? void 0 : onMouseLeave(e);
7128
+ },
7129
+ [onMouseLeave]
7130
+ );
7131
+ const resolvedGap = typeof gap === "number" ? `${gap}px` : gap;
7132
+ const effectiveLeadingSize = typeof (leadingSize != null ? leadingSize : fixedSize) === "number" ? `${leadingSize != null ? leadingSize : fixedSize}px` : leadingSize != null ? leadingSize : fixedSize;
7133
+ const effectiveTrailingSize = typeof (trailingSize != null ? trailingSize : fixedSize) === "number" ? `${trailingSize != null ? trailingSize : fixedSize}px` : trailingSize != null ? trailingSize : fixedSize;
7134
+ const radiusTokens = (_a2 = DISTRIBUTE_RADIUS_TOKENS[size]) != null ? _a2 : DISTRIBUTE_RADIUS_TOKENS.sm;
7135
+ const heightClass = (_b2 = DISTRIBUTE_HEIGHT_TOKENS[size]) != null ? _b2 : DISTRIBUTE_HEIGHT_TOKENS.sm;
7136
+ return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(
7137
+ "fieldset",
7138
+ __spreadProps(__spreadValues({
7139
+ ref,
7140
+ onMouseLeave: handleGroupMouseLeave,
7141
+ onPointerCancel: () => setPressedIndex(null),
7142
+ className: cn(
7143
+ "inline-flex flex-row items-center border-none p-0 m-0 box-border overflow-hidden select-none w-full",
7144
+ heightClass,
7145
+ className
7146
+ ),
7147
+ style: __spreadValues({
7148
+ gap: resolvedGap
7149
+ }, style)
7150
+ }, restProps), {
7151
+ children: childrenArray.map((child, index) => {
7152
+ var _a3, _b3, _c, _d, _e, _f;
7153
+ const isFirst = index === 0;
7154
+ const isLast = index === count - 1;
7155
+ const childElement = child;
7156
+ const isActive = activeIndex === index;
7157
+ const isPressed = pressedIndex === index;
7158
+ const isSquish = isActive || isPressed;
7159
+ let flexStyle = {};
7160
+ let targetFlexBasis = 0;
7161
+ const parsePx = (val) => {
7162
+ if (typeof val === "number") return val;
7163
+ const parsed = Number.parseFloat(val);
7164
+ return Number.isNaN(parsed) ? 48 : parsed;
7165
+ };
7166
+ const leadingPx = parsePx(effectiveLeadingSize);
7167
+ const trailingPx = parsePx(effectiveTrailingSize);
7168
+ const leadingCompressedPx = Math.max(
7169
+ 40,
7170
+ Math.round(leadingPx * (1 - expandRatio))
7171
+ );
7172
+ const trailingCompressedPx = Math.max(
7173
+ 40,
7174
+ Math.round(trailingPx * (1 - expandRatio))
7175
+ );
7176
+ if (mode === "dynamic" || mode === "fixed") {
7177
+ const currentWeight = (_a3 = calculatedWeights[index]) != null ? _a3 : 1;
7178
+ flexStyle = {
7179
+ flexGrow: currentWeight,
7180
+ flexShrink: 1,
7181
+ flexBasis: 0,
7182
+ minWidth: 0
7183
+ };
7184
+ targetFlexBasis = 0;
7185
+ } else if (mode === "mixed") {
7186
+ const currentWeight = (_b3 = calculatedWeights[index]) != null ? _b3 : 0;
7187
+ if (isFirst) {
7188
+ targetFlexBasis = activeIndex !== null && activeIndex > 0 ? `${leadingCompressedPx}px` : effectiveLeadingSize;
7189
+ flexStyle = {
7190
+ flexBasis: targetFlexBasis,
7191
+ flexGrow: currentWeight,
7192
+ flexShrink: 0,
7193
+ minWidth: 0
7194
+ };
7195
+ } else if (isLast) {
7196
+ targetFlexBasis = activeIndex !== null && activeIndex < count - 1 ? `${trailingCompressedPx}px` : effectiveTrailingSize;
7197
+ flexStyle = {
7198
+ flexBasis: targetFlexBasis,
7199
+ flexGrow: currentWeight,
7200
+ flexShrink: 0,
7201
+ minWidth: 0
7202
+ };
7203
+ } else {
7204
+ targetFlexBasis = 0;
7205
+ flexStyle = {
7206
+ flexBasis: 0,
7207
+ flexGrow: (_c = calculatedWeights[index]) != null ? _c : 1,
7208
+ flexShrink: 1,
7209
+ minWidth: 0
7210
+ };
7211
+ }
7212
+ }
7213
+ const handleMouseEnter = (e) => {
7214
+ var _a4, _b4;
7215
+ if (expandOnHover) {
7216
+ setActiveIndex(index);
7217
+ }
7218
+ (_b4 = (_a4 = childElement.props).onMouseEnter) == null ? void 0 : _b4.call(_a4, e);
7219
+ };
7220
+ const handleFocus = (e) => {
7221
+ var _a4, _b4;
7222
+ setActiveIndex(index);
7223
+ (_b4 = (_a4 = childElement.props).onFocus) == null ? void 0 : _b4.call(_a4, e);
7224
+ };
7225
+ const handlePointerDown = (e) => {
7226
+ var _a4, _b4;
7227
+ setPressedIndex(index);
7228
+ setActiveIndex(index);
7229
+ (_b4 = (_a4 = childElement.props).onPointerDown) == null ? void 0 : _b4.call(_a4, e);
7230
+ };
7231
+ const handlePointerUp = (e) => {
7232
+ var _a4, _b4;
7233
+ setPressedIndex(null);
7234
+ if (!expandOnHover) {
7235
+ setActiveIndex(null);
7236
+ }
7237
+ (_b4 = (_a4 = childElement.props).onPointerUp) == null ? void 0 : _b4.call(_a4, e);
7238
+ };
7239
+ const handleClick = (e) => {
7240
+ var _a4, _b4;
7241
+ setPressedIndex(null);
7242
+ if (!expandOnHover) {
7243
+ setActiveIndex(null);
7244
+ }
7245
+ (_b4 = (_a4 = childElement.props).onClick) == null ? void 0 : _b4.call(_a4, e);
7246
+ };
7247
+ const clonedChild = React61.cloneElement(childElement, {
7248
+ size: (_d = childElement.props.size) != null ? _d : size,
7249
+ className: cn(
7250
+ "w-full! h-full! justify-center items-center flex-1 rounded-[inherit]! px-3! sm:px-4!",
7251
+ childElement.props.className
7252
+ )
7253
+ });
7254
+ return /* @__PURE__ */ jsx(
7255
+ m.div,
7256
+ {
7257
+ layout: true,
7258
+ initial: false,
7259
+ animate: {
7260
+ flexGrow: (_f = flexStyle.flexGrow) != null ? _f : 1,
7261
+ flexBasis: targetFlexBasis,
7262
+ borderRadius: isSquish ? radiusTokens.pressedRadius : radiusTokens.pillRadius
7263
+ },
7264
+ transition: __spreadProps(__spreadValues({}, DISTRIBUTE_SPRING_TRANSITION), {
7265
+ borderRadius: BUTTON_RADIUS_SPRING
7266
+ }),
7267
+ onMouseEnter: handleMouseEnter,
7268
+ onFocus: handleFocus,
7269
+ onPointerDown: handlePointerDown,
7270
+ onPointerUp: handlePointerUp,
7271
+ onClick: handleClick,
7272
+ className: cn(
7273
+ "relative inline-flex items-center justify-center shrink-0 min-w-0 overflow-hidden h-full",
7274
+ itemClassName
7275
+ ),
7276
+ style: flexStyle,
7277
+ children: clonedChild
7278
+ },
7279
+ (_e = childElement.key) != null ? _e : index
7280
+ );
7281
+ })
7282
+ })
7283
+ ) });
7284
+ }
7285
+ );
7286
+ ButtonDistribute.displayName = "ButtonDistribute";
6953
7287
  var BUTTON_GROUP_TOKENS = {
6954
7288
  connected: {
6955
7289
  // 40dp / 2.5rem
@@ -6992,7 +7326,6 @@ function buildConnectedShapes(size, defaultCorners, pressedCorners) {
6992
7326
  };
6993
7327
  }
6994
7328
  var ButtonGroupDefaults = {
6995
- expandedRatio: 0.15,
6996
7329
  connectedLeadingButtonShapes: (size) => buildConnectedShapes(
6997
7330
  size,
6998
7331
  (o, i) => ({ tl: o, tr: i, br: i, bl: o }),
@@ -7021,8 +7354,6 @@ var ButtonGroupDefaults = {
7021
7354
  )
7022
7355
  };
7023
7356
  var PILL_BORDER_RADIUS = 9999;
7024
- var MIN_FLEX_GROW = 0.01;
7025
- var PADDING_EXPAND_MULTIPLIER = 4;
7026
7357
  var CHECK_ICON_SIZE = 24;
7027
7358
  var CHECK_ICON = /* @__PURE__ */ jsx(Icon, { name: "check", variant: "rounded", size: CHECK_ICON_SIZE, weight: 700 });
7028
7359
  var CHECK_ICON_GAP_MAP = {
@@ -7038,13 +7369,7 @@ var CHECK_ICON_MOTION = {
7038
7369
  damping: 34,
7039
7370
  mass: 0.75
7040
7371
  };
7041
- var WIDTH_MORPH_SPRING = {
7042
- type: "spring",
7043
- stiffness: 360,
7044
- damping: 38,
7045
- mass: 0.85
7046
- };
7047
- var AnimatedCheckLabel = React59.memo(function AnimatedCheckLabel2({
7372
+ var AnimatedCheckLabel = React61.memo(function AnimatedCheckLabel2({
7048
7373
  selected,
7049
7374
  size,
7050
7375
  children
@@ -7120,43 +7445,9 @@ function resolveIconAndLabel(element, isSelected, itemSize, showCheck, iconBehav
7120
7445
  }
7121
7446
  return { icon, label };
7122
7447
  }
7123
- function resolveFlexTargets(variant, orientation, isSelected, isPressed, hasSelected, count, fullWidth, activeMorphing, morphingWidth, expandedRatio, basePx) {
7124
- const increment = expandedRatio * PADDING_EXPAND_MULTIPLIER;
7125
- if (activeMorphing) {
7126
- const isFlexLayout = fullWidth || variant === "connected" && orientation === "horizontal";
7127
- if (isFlexLayout) {
7128
- if (isSelected) return { flexGrow: 1 + expandedRatio };
7129
- if (hasSelected && count > 1)
7130
- return {
7131
- flexGrow: Math.max(MIN_FLEX_GROW, 1 - expandedRatio / (count - 1))
7132
- };
7133
- return { flexGrow: 1 };
7134
- }
7135
- if (isSelected)
7136
- return { paddingInline: `calc(${basePx} + ${increment}rem)` };
7137
- if (hasSelected && count > 1) {
7138
- const decrement = increment / (count - 1);
7139
- return { paddingInline: `calc(${basePx} - ${decrement}rem)` };
7140
- }
7141
- return { paddingInline: basePx };
7142
- }
7143
- if (morphingWidth && variant === "standard") {
7144
- if (fullWidth) return { flexGrow: isPressed ? 1 + expandedRatio : 1 };
7145
- return {
7146
- paddingInline: isPressed ? `calc(${basePx} + ${increment}rem)` : basePx
7147
- };
7148
- }
7149
- return {};
7150
- }
7151
- function buildMotionProps(variant, isSelected, isPressed, itemSize, shapes, flex, existingAnimate, existingWhileTap) {
7448
+ function buildMotionProps(variant, isSelected, isPressed, itemSize, shapes, existingAnimate, existingWhileTap) {
7152
7449
  var _a, _b;
7153
7450
  const props = { animate: __spreadValues({}, existingAnimate) };
7154
- if (flex.flexGrow !== void 0) {
7155
- props.animate.flexGrow = flex.flexGrow;
7156
- }
7157
- if (flex.paddingInline !== void 0) {
7158
- props.animate.paddingInline = flex.paddingInline;
7159
- }
7160
7451
  if (variant === "standard") {
7161
7452
  const pressedRadius = (_a = PRESSED_RADIUS_MAP[itemSize]) != null ? _a : PRESSED_RADIUS_MAP.sm;
7162
7453
  const itemSizeTokens = (_b = BUTTON_SIZE_TOKENS[itemSize]) != null ? _b : BUTTON_SIZE_TOKENS.sm;
@@ -7167,9 +7458,6 @@ function buildMotionProps(variant, isSelected, isPressed, itemSize, shapes, flex
7167
7458
  }, existingWhileTap);
7168
7459
  props.transition = {
7169
7460
  borderRadius: BUTTON_RADIUS_SPRING,
7170
- flexGrow: WIDTH_MORPH_SPRING,
7171
- paddingInline: WIDTH_MORPH_SPRING,
7172
- layout: WIDTH_MORPH_SPRING,
7173
7461
  default: BUTTON_SHAPE_MORPH_SPRING
7174
7462
  };
7175
7463
  props.layout = true;
@@ -7196,19 +7484,16 @@ function buildMotionProps(variant, isSelected, isPressed, itemSize, shapes, flex
7196
7484
  borderBottomLeftRadius: shapes.pressed.bl
7197
7485
  }, existingWhileTap);
7198
7486
  props.transition = __spreadProps(__spreadValues({}, BUTTON_SHAPE_MORPH_SPRING), {
7199
- flexGrow: WIDTH_MORPH_SPRING,
7200
- paddingInline: WIDTH_MORPH_SPRING,
7201
7487
  borderTopLeftRadius: BUTTON_RADIUS_SPRING,
7202
7488
  borderTopRightRadius: BUTTON_RADIUS_SPRING,
7203
7489
  borderBottomRightRadius: BUTTON_RADIUS_SPRING,
7204
- borderBottomLeftRadius: BUTTON_RADIUS_SPRING,
7205
- layout: WIDTH_MORPH_SPRING
7490
+ borderBottomLeftRadius: BUTTON_RADIUS_SPRING
7206
7491
  });
7207
7492
  props.layout = true;
7208
7493
  }
7209
7494
  return props;
7210
7495
  }
7211
- var ButtonGroupComponent = React59.forwardRef(
7496
+ var ButtonGroupComponent = React61.forwardRef(
7212
7497
  (_a, ref) => {
7213
7498
  var _b = _a, {
7214
7499
  className,
@@ -7216,10 +7501,7 @@ var ButtonGroupComponent = React59.forwardRef(
7216
7501
  orientation = "horizontal",
7217
7502
  fullWidth = false,
7218
7503
  size,
7219
- morphingWidth = true,
7220
- activeMorphing = false,
7221
7504
  itemClassName,
7222
- expandedRatio = ButtonGroupDefaults.expandedRatio,
7223
7505
  showCheck = false,
7224
7506
  children,
7225
7507
  iconBehavior,
@@ -7231,99 +7513,26 @@ var ButtonGroupComponent = React59.forwardRef(
7231
7513
  "orientation",
7232
7514
  "fullWidth",
7233
7515
  "size",
7234
- "morphingWidth",
7235
- "activeMorphing",
7236
7516
  "itemClassName",
7237
- "expandedRatio",
7238
7517
  "showCheck",
7239
7518
  "children",
7240
7519
  "iconBehavior",
7241
7520
  "labelBehavior",
7242
7521
  "style"
7243
7522
  ]);
7244
- const [pressedIndex, setPressedIndex] = React59.useState(null);
7245
- const [lockedGroupSize, setLockedGroupSize] = React59.useState(
7246
- null
7247
- );
7248
- const rootRef = React59.useRef(null);
7249
- const setRootRef = React59.useCallback(
7250
- (node) => {
7251
- rootRef.current = node;
7252
- if (typeof ref === "function") {
7253
- ref(node);
7254
- } else if (ref) {
7255
- ref.current = node;
7256
- }
7257
- },
7258
- [ref]
7259
- );
7260
- const childrenArray = React59.useMemo(
7261
- () => React59.Children.toArray(children).filter(React59.isValidElement),
7523
+ const [pressedIndex, setPressedIndex] = React61.useState(null);
7524
+ const childrenArray = React61.useMemo(
7525
+ () => React61.Children.toArray(children).filter(React61.isValidElement),
7262
7526
  [children]
7263
7527
  );
7264
7528
  const count = childrenArray.length;
7265
- const groupSizeSignature = React59.useMemo(
7266
- () => `${childrenArray.map((child, index) => {
7267
- var _a2, _b2, _c, _d, _e;
7268
- const element = child;
7269
- const label = typeof element.props.children === "string" || typeof element.props.children === "number" ? element.props.children : (_a2 = element.key) != null ? _a2 : index;
7270
- return [
7271
- (_b2 = element.key) != null ? _b2 : index,
7272
- (_d = (_c = element.props.size) != null ? _c : size) != null ? _d : "",
7273
- label,
7274
- Boolean(element.props.icon),
7275
- (_e = element.props.className) != null ? _e : ""
7276
- ].join(":");
7277
- }).join("|")}|${variant}|${orientation}|${showCheck}`,
7278
- [childrenArray, orientation, showCheck, size, variant]
7279
- );
7280
- const groupSizeSignatureRef = React59.useRef(groupSizeSignature);
7281
- React59.useLayoutEffect(() => {
7282
- if (groupSizeSignatureRef.current !== groupSizeSignature) {
7283
- groupSizeSignatureRef.current = groupSizeSignature;
7284
- setLockedGroupSize(null);
7285
- }
7286
- }, [groupSizeSignature]);
7287
- const hasExplicitGroupSize = orientation === "horizontal" ? (style == null ? void 0 : style.width) !== void 0 || (style == null ? void 0 : style.inlineSize) !== void 0 : (style == null ? void 0 : style.height) !== void 0 || (style == null ? void 0 : style.blockSize) !== void 0;
7288
- const shouldLockGroupSize = activeMorphing && !fullWidth && !hasExplicitGroupSize && count > 1;
7289
- React59.useLayoutEffect(() => {
7290
- if (!shouldLockGroupSize) {
7291
- if (lockedGroupSize !== null) setLockedGroupSize(null);
7292
- return;
7293
- }
7294
- if (lockedGroupSize !== null) return;
7295
- const node = rootRef.current;
7296
- if (!node) return;
7297
- const rect = node.getBoundingClientRect();
7298
- const nextSize = orientation === "horizontal" ? rect.width : rect.height;
7299
- if (nextSize > 0) {
7300
- setLockedGroupSize(Math.ceil(nextSize * 100) / 100);
7301
- }
7302
- }, [lockedGroupSize, orientation, shouldLockGroupSize]);
7303
- const groupStyle = React59.useMemo(() => {
7304
- const nextStyle = __spreadValues({}, style);
7305
- if (shouldLockGroupSize && lockedGroupSize !== null) {
7306
- if (orientation === "horizontal") {
7307
- nextStyle.inlineSize = `${lockedGroupSize}px`;
7308
- } else {
7309
- nextStyle.blockSize = `${lockedGroupSize}px`;
7310
- }
7311
- }
7312
- return nextStyle;
7313
- }, [lockedGroupSize, orientation, shouldLockGroupSize, style]);
7314
- const hasSelected = React59.useMemo(
7315
- () => childrenArray.some(
7316
- (child) => child.props.selected
7317
- ),
7318
- [childrenArray]
7319
- );
7320
- const handlePointerLeaveAndUp = React59.useCallback(() => {
7529
+ const handlePointerLeaveAndUp = React61.useCallback(() => {
7321
7530
  setPressedIndex(null);
7322
7531
  }, []);
7323
7532
  return /* @__PURE__ */ jsx(
7324
7533
  "fieldset",
7325
7534
  __spreadProps(__spreadValues({
7326
- ref: setRootRef,
7535
+ ref,
7327
7536
  className: cn(
7328
7537
  "inline-flex p-0 m-0 border-none max-w-full [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
7329
7538
  orientation === "vertical" ? "flex-col items-stretch overflow-y-auto overflow-x-hidden" : "flex-row overflow-x-auto overflow-y-hidden",
@@ -7332,18 +7541,17 @@ var ButtonGroupComponent = React59.forwardRef(
7332
7541
  fullWidth && orientation === "vertical" && "h-full",
7333
7542
  className
7334
7543
  ),
7335
- style: groupStyle,
7544
+ style,
7336
7545
  onPointerLeave: handlePointerLeaveAndUp,
7337
7546
  onPointerUp: handlePointerLeaveAndUp
7338
7547
  }, props), {
7339
7548
  children: childrenArray.map((child, index) => {
7340
- var _a2, _b2;
7549
+ var _a2;
7341
7550
  const element = child;
7342
7551
  const isSelected = element.props.selected === true;
7343
7552
  const isFirst = index === 0;
7344
7553
  const isLast = index === count - 1;
7345
7554
  const itemSize = size || element.props.size || "sm";
7346
- const basePx = ((_a2 = BUTTON_SIZE_TOKENS[itemSize]) == null ? void 0 : _a2.leadingSpace) || "1rem";
7347
7555
  const isPressed = pressedIndex === index;
7348
7556
  const { icon: explicitIcon, label: explicitLabel } = resolveIconAndLabel(
7349
7557
  element,
@@ -7360,25 +7568,6 @@ var ButtonGroupComponent = React59.forwardRef(
7360
7568
  isLast,
7361
7569
  itemSize
7362
7570
  );
7363
- const flex = resolveFlexTargets(
7364
- variant,
7365
- orientation,
7366
- isSelected,
7367
- isPressed,
7368
- hasSelected,
7369
- count,
7370
- fullWidth,
7371
- activeMorphing,
7372
- morphingWidth,
7373
- expandedRatio,
7374
- basePx
7375
- );
7376
- const dynamicStyle = __spreadValues({}, element.props.style);
7377
- if (flex.flexGrow !== void 0 && fullWidth) {
7378
- dynamicStyle.flexBasis = 0;
7379
- dynamicStyle.flexShrink = 1;
7380
- dynamicStyle.minWidth = 0;
7381
- }
7382
7571
  const existingAnimate = typeof element.props.animate === "object" && !Array.isArray(element.props.animate) ? element.props.animate : {};
7383
7572
  const existingWhileTap = typeof element.props.whileTap === "object" && !Array.isArray(element.props.whileTap) ? element.props.whileTap : {};
7384
7573
  const motionProps = buildMotionProps(
@@ -7387,13 +7576,12 @@ var ButtonGroupComponent = React59.forwardRef(
7387
7576
  isPressed,
7388
7577
  itemSize,
7389
7578
  shapes,
7390
- flex,
7391
7579
  existingAnimate,
7392
7580
  existingWhileTap
7393
7581
  );
7394
7582
  const connectedClasses = variant === "connected" && isSelected ? "z-20" : "";
7395
- const clonedElement = React59.cloneElement(element, __spreadValues(__spreadProps(__spreadValues({
7396
- key: (_b2 = element.key) != null ? _b2 : index,
7583
+ const clonedElement = React61.cloneElement(element, __spreadValues(__spreadProps(__spreadValues({
7584
+ key: (_a2 = element.key) != null ? _a2 : index,
7397
7585
  tabIndex: isFirst ? 0 : -1,
7398
7586
  size: size || element.props.size,
7399
7587
  icon: explicitIcon,
@@ -7407,9 +7595,9 @@ var ButtonGroupComponent = React59.forwardRef(
7407
7595
  connectedClasses,
7408
7596
  "focus-visible:z-10 hover:z-10 relative min-w-0",
7409
7597
  orientation === "vertical" && "w-full",
7598
+ fullWidth && "flex-1",
7410
7599
  itemClassName
7411
7600
  ),
7412
- style: dynamicStyle,
7413
7601
  onPointerDown: (e) => {
7414
7602
  setPressedIndex(index);
7415
7603
  if (element.props.onPointerDown) element.props.onPointerDown(e);
@@ -7422,7 +7610,7 @@ var ButtonGroupComponent = React59.forwardRef(
7422
7610
  }
7423
7611
  );
7424
7612
  ButtonGroupComponent.displayName = "ButtonGroup";
7425
- var ButtonGroup = React59.memo(ButtonGroupComponent);
7613
+ var ButtonGroup = React61.memo(ButtonGroupComponent);
7426
7614
  var SIZE_HEIGHT = {
7427
7615
  sm: "h-14",
7428
7616
  md: "h-20",
@@ -7477,9 +7665,9 @@ var COLOR_CLASSES = {
7477
7665
  }
7478
7666
  };
7479
7667
  function useScrollCollapse(enabled, scrollThreshold, onCollapsedChange) {
7480
- const [collapsed, setCollapsed] = React59.useState(false);
7481
- const lastScrollY = React59.useRef(0);
7482
- React59.useEffect(() => {
7668
+ const [collapsed, setCollapsed] = React61.useState(false);
7669
+ const lastScrollY = React61.useRef(0);
7670
+ React61.useEffect(() => {
7483
7671
  if (!enabled || typeof window === "undefined") return;
7484
7672
  lastScrollY.current = window.scrollY;
7485
7673
  const handleScroll = () => {
@@ -7502,7 +7690,7 @@ function useScrollCollapse(enabled, scrollThreshold, onCollapsedChange) {
7502
7690
  }, [enabled, scrollThreshold, collapsed, onCollapsedChange]);
7503
7691
  return collapsed;
7504
7692
  }
7505
- var ExtendedFABComponent = React59.forwardRef(
7693
+ var ExtendedFABComponent = React61.forwardRef(
7506
7694
  (_a, ref) => {
7507
7695
  var _b = _a, {
7508
7696
  className,
@@ -7548,10 +7736,10 @@ var ExtendedFABComponent = React59.forwardRef(
7548
7736
  "aria-label"
7549
7737
  ]);
7550
7738
  var _a2, _b2, _c, _d;
7551
- const localRef = React59.useRef(null);
7552
- React59.useImperativeHandle(ref, () => localRef.current);
7553
- const [dir, setDir] = React59.useState("ltr");
7554
- React59.useEffect(() => {
7739
+ const localRef = React61.useRef(null);
7740
+ React61.useImperativeHandle(ref, () => localRef.current);
7741
+ const [dir, setDir] = React61.useState("ltr");
7742
+ React61.useEffect(() => {
7555
7743
  var _a3;
7556
7744
  if (!localRef.current) return;
7557
7745
  const closestDir = (_a3 = localRef.current.closest("[dir]")) == null ? void 0 : _a3.getAttribute("dir");
@@ -7572,7 +7760,7 @@ var ExtendedFABComponent = React59.forwardRef(
7572
7760
  const { ripples, onPointerDown, removeRipple } = useRippleState({
7573
7761
  disabled: loading
7574
7762
  });
7575
- const handleClick = React59.useCallback(
7763
+ const handleClick = React61.useCallback(
7576
7764
  (e) => {
7577
7765
  if (loading) {
7578
7766
  e.preventDefault();
@@ -7582,7 +7770,7 @@ var ExtendedFABComponent = React59.forwardRef(
7582
7770
  },
7583
7771
  [loading, onClick]
7584
7772
  );
7585
- const handleKeyDown = React59.useCallback(
7773
+ const handleKeyDown = React61.useCallback(
7586
7774
  (e) => {
7587
7775
  if (loading) return;
7588
7776
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -7690,8 +7878,8 @@ var ExtendedFABComponent = React59.forwardRef(
7690
7878
  }),
7691
7879
  className: containerClassName
7692
7880
  }, restProps), {
7693
- children: React59.cloneElement(
7694
- React59.Children.only(children),
7881
+ children: React61.cloneElement(
7882
+ React61.Children.only(children),
7695
7883
  { children: innerContent }
7696
7884
  )
7697
7885
  })
@@ -7735,7 +7923,7 @@ var ExtendedFABComponent = React59.forwardRef(
7735
7923
  }
7736
7924
  );
7737
7925
  ExtendedFABComponent.displayName = "ExtendedFAB";
7738
- var ExtendedFAB = React59.memo(ExtendedFABComponent);
7926
+ var ExtendedFAB = React61.memo(ExtendedFABComponent);
7739
7927
  var SIZE_STYLES = {
7740
7928
  sm: "h-10 w-10",
7741
7929
  md: "h-14 w-14",
@@ -7806,7 +7994,7 @@ function FABPosition({
7806
7994
  }
7807
7995
  );
7808
7996
  }
7809
- var FABComponent = React59.forwardRef(
7997
+ var FABComponent = React61.forwardRef(
7810
7998
  (_a, ref) => {
7811
7999
  var _b = _a, {
7812
8000
  className,
@@ -7853,7 +8041,7 @@ var FABComponent = React59.forwardRef(
7853
8041
  const { ripples, onPointerDown, removeRipple } = useRippleState({
7854
8042
  disabled: loading
7855
8043
  });
7856
- const handleClick = React59.useCallback(
8044
+ const handleClick = React61.useCallback(
7857
8045
  (e) => {
7858
8046
  if (loading) {
7859
8047
  e.preventDefault();
@@ -7863,7 +8051,7 @@ var FABComponent = React59.forwardRef(
7863
8051
  },
7864
8052
  [loading, onClick]
7865
8053
  );
7866
- const handleKeyDown = React59.useCallback(
8054
+ const handleKeyDown = React61.useCallback(
7867
8055
  (e) => {
7868
8056
  if (loading) return;
7869
8057
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -7874,7 +8062,7 @@ var FABComponent = React59.forwardRef(
7874
8062
  },
7875
8063
  [loading, onClick, onKeyDown]
7876
8064
  );
7877
- const labelContent = asChild ? React59.Children.only(children).props.children : children;
8065
+ const labelContent = asChild ? React61.Children.only(children).props.children : children;
7878
8066
  const innerContent = /* @__PURE__ */ jsxs(Fragment, { children: [
7879
8067
  needsTouchTarget && /* @__PURE__ */ jsx(TouchTarget, {}),
7880
8068
  /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone: removeRipple }),
@@ -7962,8 +8150,8 @@ var FABComponent = React59.forwardRef(
7962
8150
  }),
7963
8151
  className: containerClassName
7964
8152
  }, restProps), {
7965
- children: React59.cloneElement(
7966
- React59.Children.only(children),
8153
+ children: React61.cloneElement(
8154
+ React61.Children.only(children),
7967
8155
  { children: innerContent }
7968
8156
  )
7969
8157
  })
@@ -8000,7 +8188,7 @@ var FABComponent = React59.forwardRef(
8000
8188
  }
8001
8189
  );
8002
8190
  FABComponent.displayName = "FAB";
8003
- var FAB = React59.memo(FABComponent);
8191
+ var FAB = React61.memo(FABComponent);
8004
8192
  var SPRING_NORMAL = { stiffness: 700, damping: 40 };
8005
8193
  var SPRING_REDUCED = { stiffness: 1e4, damping: 100 };
8006
8194
  var FOCUS_DELAY_MS = 50;
@@ -8108,7 +8296,7 @@ function CloseIcon2() {
8108
8296
  function defaultFabIcon(progress) {
8109
8297
  return progress > 0.5 ? /* @__PURE__ */ jsx(CloseIcon2, {}) : /* @__PURE__ */ jsx(AddIcon, {});
8110
8298
  }
8111
- var ToggleFABComponent = React59.forwardRef(
8299
+ var ToggleFABComponent = React61.forwardRef(
8112
8300
  ({
8113
8301
  expanded,
8114
8302
  onToggle,
@@ -8126,7 +8314,7 @@ var ToggleFABComponent = React59.forwardRef(
8126
8314
  const sizeTokens = (_b = TOGGLE_FAB_SIZES[fabSize]) != null ? _b : TOGGLE_FAB_SIZES.baseline;
8127
8315
  const springConfig = prefersReduced ? SPRING_REDUCED : SPRING_NORMAL;
8128
8316
  const checkedProgress = useSpring(expanded ? 1 : 0, springConfig);
8129
- React59.useEffect(() => {
8317
+ React61.useEffect(() => {
8130
8318
  checkedProgress.set(expanded ? 1 : 0);
8131
8319
  }, [expanded, checkedProgress]);
8132
8320
  const borderRadius = useTransform(
@@ -8134,12 +8322,12 @@ var ToggleFABComponent = React59.forwardRef(
8134
8322
  [0, 1],
8135
8323
  [`${sizeTokens.initialRadius}px`, `${sizeTokens.finalRadius}px`]
8136
8324
  );
8137
- const [iconProgress, setIconProgress] = React59.useState(expanded ? 1 : 0);
8138
- React59.useEffect(() => {
8325
+ const [iconProgress, setIconProgress] = React61.useState(expanded ? 1 : 0);
8326
+ React61.useEffect(() => {
8139
8327
  return checkedProgress.on("change", setIconProgress);
8140
8328
  }, [checkedProgress]);
8141
8329
  const { ripples, onPointerDown, removeRipple } = useRippleState();
8142
- const handleClick = React59.useCallback(() => {
8330
+ const handleClick = React61.useCallback(() => {
8143
8331
  onToggle(!expanded);
8144
8332
  }, [expanded, onToggle]);
8145
8333
  return /* @__PURE__ */ jsxs(
@@ -8188,7 +8376,7 @@ var ToggleFABComponent = React59.forwardRef(
8188
8376
  }
8189
8377
  );
8190
8378
  ToggleFABComponent.displayName = "ToggleFAB";
8191
- var ToggleFAB = React59.memo(ToggleFABComponent);
8379
+ var ToggleFAB = React61.memo(ToggleFABComponent);
8192
8380
  function FABMenuItem({
8193
8381
  icon,
8194
8382
  label,
@@ -8203,7 +8391,7 @@ function FABMenuItem({
8203
8391
  var _a;
8204
8392
  const colors = (_a = MENU_ITEM_COLORS[colorVariant]) != null ? _a : MENU_ITEM_COLORS.primary;
8205
8393
  const { ripples, onPointerDown, removeRipple } = useRippleState({ disabled });
8206
- const handleClick = React59.useCallback(
8394
+ const handleClick = React61.useCallback(
8207
8395
  (e) => {
8208
8396
  if (disabled) {
8209
8397
  e.preventDefault();
@@ -8213,7 +8401,7 @@ function FABMenuItem({
8213
8401
  },
8214
8402
  [disabled, onClick]
8215
8403
  );
8216
- const handleKeyDown = React59.useCallback(
8404
+ const handleKeyDown = React61.useCallback(
8217
8405
  (e) => {
8218
8406
  if (disabled) return;
8219
8407
  if (e.key === "Enter" || e.key === " ") {
@@ -8255,7 +8443,7 @@ function FABMenuItem({
8255
8443
  borderRadius: `${MENU_ITEM_STYLES.cornerRadius}px`
8256
8444
  };
8257
8445
  if (asChild) {
8258
- const child = React59.Children.only(children);
8446
+ const child = React61.Children.only(children);
8259
8447
  return /* @__PURE__ */ jsx(m.div, { variants: MENU_ITEM_VARIANTS, style: containerStyle, children: /* @__PURE__ */ jsx(
8260
8448
  Slot,
8261
8449
  {
@@ -8267,7 +8455,7 @@ function FABMenuItem({
8267
8455
  onPointerDown,
8268
8456
  onKeyDown: handleKeyDown,
8269
8457
  className: containerClassName,
8270
- children: React59.cloneElement(child, { children: innerContent })
8458
+ children: React61.cloneElement(child, { children: innerContent })
8271
8459
  }
8272
8460
  ) });
8273
8461
  }
@@ -8300,13 +8488,13 @@ function FABMenu({
8300
8488
  focusLast = true,
8301
8489
  "aria-label": ariaLabel
8302
8490
  }) {
8303
- const fabId = React59.useId();
8304
- const menuId = React59.useId();
8305
- const toggleRef = React59.useRef(null);
8306
- const itemRefs = React59.useRef([]);
8307
- const [focusedIndex, setFocusedIndex] = React59.useState(-1);
8308
- const reversedItems = React59.useMemo(() => [...items].reverse(), [items]);
8309
- const focusItem = React59.useCallback((index) => {
8491
+ const fabId = React61.useId();
8492
+ const menuId = React61.useId();
8493
+ const toggleRef = React61.useRef(null);
8494
+ const itemRefs = React61.useRef([]);
8495
+ const [focusedIndex, setFocusedIndex] = React61.useState(-1);
8496
+ const reversedItems = React61.useMemo(() => [...items].reverse(), [items]);
8497
+ const focusItem = React61.useCallback((index) => {
8310
8498
  var _a;
8311
8499
  const clampedIndex = Math.max(
8312
8500
  0,
@@ -8315,8 +8503,8 @@ function FABMenu({
8315
8503
  setFocusedIndex(clampedIndex);
8316
8504
  (_a = itemRefs.current[clampedIndex]) == null ? void 0 : _a.focus();
8317
8505
  }, []);
8318
- const wasExpandedRef = React59.useRef(false);
8319
- React59.useEffect(() => {
8506
+ const wasExpandedRef = React61.useRef(false);
8507
+ React61.useEffect(() => {
8320
8508
  var _a;
8321
8509
  if (expanded) {
8322
8510
  wasExpandedRef.current = true;
@@ -8331,7 +8519,7 @@ function FABMenu({
8331
8519
  wasExpandedRef.current = false;
8332
8520
  setFocusedIndex(-1);
8333
8521
  }, [expanded, focusLast, items.length, focusItem]);
8334
- const handleMenuKeyDown = React59.useCallback(
8522
+ const handleMenuKeyDown = React61.useCallback(
8335
8523
  (e) => {
8336
8524
  if (!expanded) return;
8337
8525
  const lastIndex = items.length - 1;
@@ -8455,12 +8643,39 @@ function FABMenu({
8455
8643
  )
8456
8644
  ] });
8457
8645
  }
8458
- var SIZE_STYLES2 = {
8459
- xs: "h-8 w-8",
8460
- sm: "h-10 w-10",
8461
- md: "h-14 w-14",
8462
- lg: "h-24 w-24",
8463
- xl: "h-[8.5rem] w-[8.5rem]"
8646
+ var SIZE_HEIGHT_STYLES = {
8647
+ xs: "h-8",
8648
+ sm: "h-10",
8649
+ md: "h-14",
8650
+ lg: "h-24",
8651
+ xl: "h-[8.5rem]"
8652
+ };
8653
+ var WIDTH_SIZE_STYLES = {
8654
+ xs: {
8655
+ default: "w-8",
8656
+ narrow: "w-8",
8657
+ wide: "w-12"
8658
+ },
8659
+ sm: {
8660
+ default: "w-10",
8661
+ narrow: "w-12",
8662
+ wide: "w-[3.25rem]"
8663
+ },
8664
+ md: {
8665
+ default: "w-14",
8666
+ narrow: "w-12",
8667
+ wide: "w-[4.5rem]"
8668
+ },
8669
+ lg: {
8670
+ default: "w-24",
8671
+ narrow: "w-16",
8672
+ wide: "w-32"
8673
+ },
8674
+ xl: {
8675
+ default: "w-[8.5rem]",
8676
+ narrow: "w-[6.5rem]",
8677
+ wide: "w-[11.5rem]"
8678
+ }
8464
8679
  };
8465
8680
  var SIZE_ICON3 = {
8466
8681
  xs: { cls: "size-5", px: 20 },
@@ -8553,7 +8768,7 @@ function resolveDisabledBgClass(colorStyle) {
8553
8768
  }
8554
8769
  return "disabled:text-m3-on-surface/[0.38]";
8555
8770
  }
8556
- var IconButtonComponent = React59.forwardRef(
8771
+ var IconButtonComponent = React61.forwardRef(
8557
8772
  (_a, ref) => {
8558
8773
  var _b = _a, {
8559
8774
  className,
@@ -8561,8 +8776,10 @@ var IconButtonComponent = React59.forwardRef(
8561
8776
  variant = "default",
8562
8777
  colorStyle = "standard",
8563
8778
  size = "sm",
8779
+ widthVariant = "default",
8564
8780
  shape = "round",
8565
8781
  selected,
8782
+ selectedIcon,
8566
8783
  loading = false,
8567
8784
  loadingVariant = "loading-indicator",
8568
8785
  iconSize,
@@ -8577,8 +8794,10 @@ var IconButtonComponent = React59.forwardRef(
8577
8794
  "variant",
8578
8795
  "colorStyle",
8579
8796
  "size",
8797
+ "widthVariant",
8580
8798
  "shape",
8581
8799
  "selected",
8800
+ "selectedIcon",
8582
8801
  "loading",
8583
8802
  "loadingVariant",
8584
8803
  "iconSize",
@@ -8588,21 +8807,21 @@ var IconButtonComponent = React59.forwardRef(
8588
8807
  "onKeyDown",
8589
8808
  "aria-label"
8590
8809
  ]);
8591
- var _a2, _b2;
8810
+ var _a2, _b2, _c, _d, _e;
8592
8811
  const isToggle = variant === "toggle";
8593
8812
  const isSelected = isToggle && !!selected;
8594
- const resolvedColorClass = React59.useMemo(
8813
+ const resolvedColorClass = React61.useMemo(
8595
8814
  () => isSelected ? colorStyles[colorStyle].selected : colorStyles[colorStyle].default,
8596
8815
  [isSelected, colorStyle]
8597
8816
  );
8598
- const outlineWidthClass = React59.useMemo(
8817
+ const outlineWidthClass = React61.useMemo(
8599
8818
  () => {
8600
8819
  var _a3;
8601
8820
  return colorStyle === "outlined" && !isSelected ? (_a3 = SIZE_OUTLINE_WIDTH[size]) != null ? _a3 : "border" : "";
8602
8821
  },
8603
8822
  [colorStyle, isSelected, size]
8604
8823
  );
8605
- const disabledBgClass = React59.useMemo(
8824
+ const disabledBgClass = React61.useMemo(
8606
8825
  () => resolveDisabledBgClass(colorStyle),
8607
8826
  [colorStyle]
8608
8827
  );
@@ -8619,11 +8838,13 @@ var IconButtonComponent = React59.forwardRef(
8619
8838
  const defaultIconPx = sizeIcon.px;
8620
8839
  const iconPx = iconSize != null ? iconSize : defaultIconPx;
8621
8840
  const isCustomSize = iconSize != null && iconSize !== "inherit";
8841
+ const heightClass = (_c = SIZE_HEIGHT_STYLES[size]) != null ? _c : SIZE_HEIGHT_STYLES.sm;
8842
+ const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[widthVariant]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
8622
8843
  const needsTouchTarget = size === "xs" || size === "sm";
8623
8844
  const { ripples, onPointerDown, removeRipple } = useRippleState({
8624
8845
  disabled: loading
8625
8846
  });
8626
- const handleClick = React59.useCallback(
8847
+ const handleClick = React61.useCallback(
8627
8848
  (e) => {
8628
8849
  if (loading) {
8629
8850
  e.preventDefault();
@@ -8633,7 +8854,7 @@ var IconButtonComponent = React59.forwardRef(
8633
8854
  },
8634
8855
  [loading, onClick]
8635
8856
  );
8636
- const handleKeyDown = React59.useCallback(
8857
+ const handleKeyDown = React61.useCallback(
8637
8858
  (e) => {
8638
8859
  if (loading) return;
8639
8860
  if ((e.key === "Enter" || e.key === " ") && onClick) {
@@ -8681,7 +8902,7 @@ var IconButtonComponent = React59.forwardRef(
8681
8902
  transition: SPRING_TRANSITION,
8682
8903
  "aria-hidden": "true",
8683
8904
  className: cn(
8684
- "flex items-center justify-center shrink-0 [&_svg]:w-full [&_svg]:h-full [&_.md-icon]:text-[length:inherit]!",
8905
+ "flex items-center justify-center shrink-0 [&_svg]:w-full [&_svg]:h-full [&_.md-icon]:text-[length:inherit]",
8685
8906
  iconSize != null ? void 0 : iconClass
8686
8907
  ),
8687
8908
  style: {
@@ -8689,9 +8910,9 @@ var IconButtonComponent = React59.forwardRef(
8689
8910
  width: isCustomSize ? `${iconSize}px` : void 0,
8690
8911
  height: isCustomSize ? `${iconSize}px` : void 0
8691
8912
  },
8692
- children: asChild ? React59.Children.only(children).props.children : children
8913
+ children: isSelected && selectedIcon ? selectedIcon : asChild ? React61.Children.only(children).props.children : children
8693
8914
  }),
8694
- "content"
8915
+ isSelected && selectedIcon ? "selected-content" : "content"
8695
8916
  ) })
8696
8917
  ] });
8697
8918
  const containerClassName = cn(
@@ -8700,12 +8921,13 @@ var IconButtonComponent = React59.forwardRef(
8700
8921
  outlineWidthClass,
8701
8922
  disabledBgClass,
8702
8923
  "overflow-hidden",
8703
- SIZE_STYLES2[size],
8924
+ heightClass,
8925
+ widthClass,
8704
8926
  loading && "pointer-events-none opacity-75 cursor-not-allowed",
8705
8927
  className
8706
8928
  );
8707
8929
  if (asChild) {
8708
- const child = React59.Children.only(children);
8930
+ const child = React61.Children.only(children);
8709
8931
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(
8710
8932
  Slot,
8711
8933
  __spreadProps(__spreadValues({
@@ -8717,10 +8939,12 @@ var IconButtonComponent = React59.forwardRef(
8717
8939
  onClick: handleClick,
8718
8940
  onPointerDown,
8719
8941
  onKeyDown: handleKeyDown,
8720
- style: __spreadProps(__spreadValues({}, style), { borderRadius: `${animateRadius}px` }),
8942
+ style: __spreadProps(__spreadValues({}, style), {
8943
+ borderRadius: `${animateRadius}px`
8944
+ }),
8721
8945
  className: containerClassName
8722
8946
  }, restProps), {
8723
- children: React59.cloneElement(child, { children: innerContent })
8947
+ children: React61.cloneElement(child, { children: innerContent })
8724
8948
  })
8725
8949
  ) });
8726
8950
  }
@@ -8748,12 +8972,12 @@ var IconButtonComponent = React59.forwardRef(
8748
8972
  }
8749
8973
  );
8750
8974
  IconButtonComponent.displayName = "IconButton";
8751
- var IconButton = React59.memo(IconButtonComponent);
8752
- var SplitButtonContext = React59.createContext(null);
8975
+ var IconButton = React61.memo(IconButtonComponent);
8976
+ var SplitButtonContext = React61.createContext(null);
8753
8977
  function useSplitButtonContext() {
8754
- return React59.useContext(SplitButtonContext);
8978
+ return React61.useContext(SplitButtonContext);
8755
8979
  }
8756
- var SplitButtonLayoutComponent = React59.forwardRef(
8980
+ var SplitButtonLayoutComponent = React61.forwardRef(
8757
8981
  (_a, ref) => {
8758
8982
  var _b = _a, {
8759
8983
  leadingButton,
@@ -8770,10 +8994,10 @@ var SplitButtonLayoutComponent = React59.forwardRef(
8770
8994
  "variant",
8771
8995
  "size"
8772
8996
  ]);
8773
- const leadingProps = React59.isValidElement(leadingButton) ? leadingButton.props : {};
8997
+ const leadingProps = React61.isValidElement(leadingButton) ? leadingButton.props : {};
8774
8998
  const size = layoutSize || leadingProps.size;
8775
8999
  const variant = layoutVariant || leadingProps.variant;
8776
- const contextValue = React59.useMemo(
9000
+ const contextValue = React61.useMemo(
8777
9001
  () => ({
8778
9002
  size,
8779
9003
  variant
@@ -8799,8 +9023,8 @@ var SplitButtonLayoutComponent = React59.forwardRef(
8799
9023
  }
8800
9024
  );
8801
9025
  SplitButtonLayoutComponent.displayName = "SplitButtonLayout";
8802
- var SplitButtonLayout = React59.memo(SplitButtonLayoutComponent);
8803
- var StateLayer = React59.forwardRef(
9026
+ var SplitButtonLayout = React61.memo(SplitButtonLayoutComponent);
9027
+ var StateLayer = React61.forwardRef(
8804
9028
  (_a, ref) => {
8805
9029
  var _b = _a, { className, hovered, focused, pressed } = _b, props = __objRest(_b, ["className", "hovered", "focused", "pressed"]);
8806
9030
  let opacity = 0;
@@ -9052,7 +9276,7 @@ var splitButtonVariants = cva(
9052
9276
  }
9053
9277
  }
9054
9278
  );
9055
- var SplitButtonLeadingComponent = React59.forwardRef(
9279
+ var SplitButtonLeadingComponent = React61.forwardRef(
9056
9280
  (_a, ref) => {
9057
9281
  var _b = _a, {
9058
9282
  className,
@@ -9091,9 +9315,9 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9091
9315
  const context = useSplitButtonContext();
9092
9316
  const actualSize = (_a2 = context == null ? void 0 : context.size) != null ? _a2 : size;
9093
9317
  const actualVariant = (_b2 = context == null ? void 0 : context.variant) != null ? _b2 : variant;
9094
- const [isHovered, setIsHovered] = React59.useState(false);
9095
- const [isFocused, setIsFocused] = React59.useState(false);
9096
- const [isPressed, setIsPressed] = React59.useState(false);
9318
+ const [isHovered, setIsHovered] = React61.useState(false);
9319
+ const [isFocused, setIsFocused] = React61.useState(false);
9320
+ const [isPressed, setIsPressed] = React61.useState(false);
9097
9321
  const tokens = SPLIT_BUTTON_TOKENS[actualSize];
9098
9322
  const typographyClass = (_c = BUTTON_TYPOGRAPHY_TOKENS[actualSize]) != null ? _c : BUTTON_TYPOGRAPHY_TOKENS.sm;
9099
9323
  const needsTouchTarget = actualSize === "xs" || actualSize === "sm";
@@ -9105,7 +9329,7 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9105
9329
  const innerCornerRadius = isPressed || isFocused ? tokens.innerCorner.pressed : isHovered ? tokens.innerCorner.hovered : tokens.innerCorner.default;
9106
9330
  const outerRadius = tokens.containerHeight * tokens.outerCornerPercent / 100;
9107
9331
  const borderRadius = `${outerRadius}px ${innerCornerRadius}px ${innerCornerRadius}px ${outerRadius}px`;
9108
- const handleClick = React59.useCallback(
9332
+ const handleClick = React61.useCallback(
9109
9333
  (e) => {
9110
9334
  if (disabled) {
9111
9335
  e.preventDefault();
@@ -9115,7 +9339,7 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9115
9339
  },
9116
9340
  [disabled, onClick]
9117
9341
  );
9118
- const handlePointerDown = React59.useCallback(
9342
+ const handlePointerDown = React61.useCallback(
9119
9343
  (e) => {
9120
9344
  onRipplePointerDown(e);
9121
9345
  setIsPressed(true);
@@ -9123,19 +9347,19 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9123
9347
  },
9124
9348
  [onRipplePointerDown, onPointerDown]
9125
9349
  );
9126
- const handlePointerUp = React59.useCallback(
9350
+ const handlePointerUp = React61.useCallback(
9127
9351
  (e) => {
9128
9352
  setIsPressed(false);
9129
9353
  onPointerUp == null ? void 0 : onPointerUp(e);
9130
9354
  },
9131
9355
  [onPointerUp]
9132
9356
  );
9133
- const handlePointerEnter = React59.useCallback(() => {
9357
+ const handlePointerEnter = React61.useCallback(() => {
9134
9358
  if (!disabled) {
9135
9359
  setIsHovered(true);
9136
9360
  }
9137
9361
  }, [disabled]);
9138
- const handlePointerLeave = React59.useCallback(
9362
+ const handlePointerLeave = React61.useCallback(
9139
9363
  (e) => {
9140
9364
  setIsHovered(false);
9141
9365
  setIsPressed(false);
@@ -9143,21 +9367,21 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9143
9367
  },
9144
9368
  [onPointerLeave]
9145
9369
  );
9146
- const handlePointerCancel = React59.useCallback(
9370
+ const handlePointerCancel = React61.useCallback(
9147
9371
  (e) => {
9148
9372
  setIsPressed(false);
9149
9373
  onPointerCancel == null ? void 0 : onPointerCancel(e);
9150
9374
  },
9151
9375
  [onPointerCancel]
9152
9376
  );
9153
- const handleFocus = React59.useCallback(
9377
+ const handleFocus = React61.useCallback(
9154
9378
  (e) => {
9155
9379
  if (!disabled) setIsFocused(true);
9156
9380
  onFocus == null ? void 0 : onFocus(e);
9157
9381
  },
9158
9382
  [disabled, onFocus]
9159
9383
  );
9160
- const handleBlur = React59.useCallback(
9384
+ const handleBlur = React61.useCallback(
9161
9385
  (e) => {
9162
9386
  setIsFocused(false);
9163
9387
  onBlur == null ? void 0 : onBlur(e);
@@ -9165,7 +9389,7 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9165
9389
  [onBlur]
9166
9390
  );
9167
9391
  const leadingIconSize = LEADING_ICON_SIZE_FOR_SIZE[actualSize];
9168
- const labelContent = asChild ? React59.Children.only(children).props.children : children;
9392
+ const labelContent = asChild ? React61.Children.only(children).props.children : children;
9169
9393
  const innerContent = /* @__PURE__ */ jsxs(Fragment, { children: [
9170
9394
  needsTouchTarget && /* @__PURE__ */ jsx(TouchTarget, {}),
9171
9395
  /* @__PURE__ */ jsx(
@@ -9222,8 +9446,8 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9222
9446
  style: mergedStyle,
9223
9447
  className: containerClassName
9224
9448
  }, restProps), {
9225
- children: React59.cloneElement(
9226
- React59.Children.only(children),
9449
+ children: React61.cloneElement(
9450
+ React61.Children.only(children),
9227
9451
  { children: innerContent }
9228
9452
  )
9229
9453
  })
@@ -9256,16 +9480,16 @@ var SplitButtonLeadingComponent = React59.forwardRef(
9256
9480
  }
9257
9481
  );
9258
9482
  SplitButtonLeadingComponent.displayName = "SplitButtonLeading";
9259
- var SplitButtonLeading = React59.memo(SplitButtonLeadingComponent);
9260
- var FilledSplitButtonLeading = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "filled" }, props)));
9483
+ var SplitButtonLeading = React61.memo(SplitButtonLeadingComponent);
9484
+ var FilledSplitButtonLeading = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "filled" }, props)));
9261
9485
  FilledSplitButtonLeading.displayName = "FilledSplitButtonLeading";
9262
- var TonalSplitButtonLeading = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "tonal" }, props)));
9486
+ var TonalSplitButtonLeading = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "tonal" }, props)));
9263
9487
  TonalSplitButtonLeading.displayName = "TonalSplitButtonLeading";
9264
- var ElevatedSplitButtonLeading = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "elevated" }, props)));
9488
+ var ElevatedSplitButtonLeading = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "elevated" }, props)));
9265
9489
  ElevatedSplitButtonLeading.displayName = "ElevatedSplitButtonLeading";
9266
- var OutlinedSplitButtonLeading = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "outlined" }, props)));
9490
+ var OutlinedSplitButtonLeading = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonLeading, __spreadValues({ ref, variant: "outlined" }, props)));
9267
9491
  OutlinedSplitButtonLeading.displayName = "OutlinedSplitButtonLeading";
9268
- var SplitButtonTrailingComponent = React59.forwardRef(
9492
+ var SplitButtonTrailingComponent = React61.forwardRef(
9269
9493
  (_a, ref) => {
9270
9494
  var _b = _a, {
9271
9495
  className,
@@ -9308,9 +9532,9 @@ var SplitButtonTrailingComponent = React59.forwardRef(
9308
9532
  const context = useSplitButtonContext();
9309
9533
  const actualSize = (_a2 = context == null ? void 0 : context.size) != null ? _a2 : size;
9310
9534
  const actualVariant = (_b2 = context == null ? void 0 : context.variant) != null ? _b2 : variant;
9311
- const [isHovered, setIsHovered] = React59.useState(false);
9312
- const [isFocused, setIsFocused] = React59.useState(false);
9313
- const [isPressed, setIsPressed] = React59.useState(false);
9535
+ const [isHovered, setIsHovered] = React61.useState(false);
9536
+ const [isFocused, setIsFocused] = React61.useState(false);
9537
+ const [isPressed, setIsPressed] = React61.useState(false);
9314
9538
  const tokens = SPLIT_BUTTON_TOKENS[actualSize];
9315
9539
  const prefersReducedMotion2 = useReducedMotion();
9316
9540
  const needsTouchTarget = actualSize === "xs" || actualSize === "sm";
@@ -9322,12 +9546,12 @@ var SplitButtonTrailingComponent = React59.forwardRef(
9322
9546
  const innerCornerRadius = isPressed || isFocused ? tokens.innerCorner.pressed : isHovered ? tokens.innerCorner.hovered : tokens.innerCorner.default;
9323
9547
  const outerRadius = tokens.containerHeight * tokens.outerCornerPercent / 100;
9324
9548
  const borderRadius = checked ? `${outerRadius}px ${outerRadius}px ${outerRadius}px ${outerRadius}px` : `${innerCornerRadius}px ${outerRadius}px ${outerRadius}px ${innerCornerRadius}px`;
9325
- const handleToggle = React59.useCallback(() => {
9549
+ const handleToggle = React61.useCallback(() => {
9326
9550
  if (!disabled) {
9327
9551
  onCheckedChange(!checked);
9328
9552
  }
9329
9553
  }, [disabled, checked, onCheckedChange]);
9330
- const handlePointerDown = React59.useCallback(
9554
+ const handlePointerDown = React61.useCallback(
9331
9555
  (e) => {
9332
9556
  onRipplePointerDown(e);
9333
9557
  setIsPressed(true);
@@ -9335,19 +9559,19 @@ var SplitButtonTrailingComponent = React59.forwardRef(
9335
9559
  },
9336
9560
  [onRipplePointerDown, onPointerDown]
9337
9561
  );
9338
- const handlePointerUp = React59.useCallback(
9562
+ const handlePointerUp = React61.useCallback(
9339
9563
  (e) => {
9340
9564
  setIsPressed(false);
9341
9565
  onPointerUp == null ? void 0 : onPointerUp(e);
9342
9566
  },
9343
9567
  [onPointerUp]
9344
9568
  );
9345
- const handlePointerEnter = React59.useCallback(() => {
9569
+ const handlePointerEnter = React61.useCallback(() => {
9346
9570
  if (!disabled) {
9347
9571
  setIsHovered(true);
9348
9572
  }
9349
9573
  }, [disabled]);
9350
- const handlePointerLeave = React59.useCallback(
9574
+ const handlePointerLeave = React61.useCallback(
9351
9575
  (e) => {
9352
9576
  setIsHovered(false);
9353
9577
  setIsPressed(false);
@@ -9355,21 +9579,21 @@ var SplitButtonTrailingComponent = React59.forwardRef(
9355
9579
  },
9356
9580
  [onPointerLeave]
9357
9581
  );
9358
- const handlePointerCancel = React59.useCallback(
9582
+ const handlePointerCancel = React61.useCallback(
9359
9583
  (e) => {
9360
9584
  setIsPressed(false);
9361
9585
  onPointerCancel == null ? void 0 : onPointerCancel(e);
9362
9586
  },
9363
9587
  [onPointerCancel]
9364
9588
  );
9365
- const handleFocus = React59.useCallback(
9589
+ const handleFocus = React61.useCallback(
9366
9590
  (e) => {
9367
9591
  if (!disabled) setIsFocused(true);
9368
9592
  onFocus == null ? void 0 : onFocus(e);
9369
9593
  },
9370
9594
  [disabled, onFocus]
9371
9595
  );
9372
- const handleBlur = React59.useCallback(
9596
+ const handleBlur = React61.useCallback(
9373
9597
  (e) => {
9374
9598
  setIsFocused(false);
9375
9599
  onBlur == null ? void 0 : onBlur(e);
@@ -9438,8 +9662,8 @@ var SplitButtonTrailingComponent = React59.forwardRef(
9438
9662
  style: mergedStyle,
9439
9663
  className: containerClassName
9440
9664
  }, restProps), {
9441
- children: React59.cloneElement(
9442
- React59.Children.only(children),
9665
+ children: React61.cloneElement(
9666
+ React61.Children.only(children),
9443
9667
  { children: innerContent }
9444
9668
  )
9445
9669
  })
@@ -9474,16 +9698,16 @@ var SplitButtonTrailingComponent = React59.forwardRef(
9474
9698
  }
9475
9699
  );
9476
9700
  SplitButtonTrailingComponent.displayName = "SplitButtonTrailing";
9477
- var SplitButtonTrailing = React59.memo(SplitButtonTrailingComponent);
9478
- var FilledSplitButtonTrailing = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "filled" }, props)));
9701
+ var SplitButtonTrailing = React61.memo(SplitButtonTrailingComponent);
9702
+ var FilledSplitButtonTrailing = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "filled" }, props)));
9479
9703
  FilledSplitButtonTrailing.displayName = "FilledSplitButtonTrailing";
9480
- var TonalSplitButtonTrailing = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "tonal" }, props)));
9704
+ var TonalSplitButtonTrailing = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "tonal" }, props)));
9481
9705
  TonalSplitButtonTrailing.displayName = "TonalSplitButtonTrailing";
9482
- var ElevatedSplitButtonTrailing = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "elevated" }, props)));
9706
+ var ElevatedSplitButtonTrailing = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "elevated" }, props)));
9483
9707
  ElevatedSplitButtonTrailing.displayName = "ElevatedSplitButtonTrailing";
9484
- var OutlinedSplitButtonTrailing = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "outlined" }, props)));
9708
+ var OutlinedSplitButtonTrailing = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailing, __spreadValues({ ref, variant: "outlined" }, props)));
9485
9709
  OutlinedSplitButtonTrailing.displayName = "OutlinedSplitButtonTrailing";
9486
- var SplitButtonTrailingUncheckableComponent = React59.forwardRef(
9710
+ var SplitButtonTrailingUncheckableComponent = React61.forwardRef(
9487
9711
  (_a, ref) => {
9488
9712
  var _b = _a, {
9489
9713
  className,
@@ -9520,9 +9744,9 @@ var SplitButtonTrailingUncheckableComponent = React59.forwardRef(
9520
9744
  const context = useSplitButtonContext();
9521
9745
  const actualSize = (_a2 = context == null ? void 0 : context.size) != null ? _a2 : size;
9522
9746
  const actualVariant = (_b2 = context == null ? void 0 : context.variant) != null ? _b2 : variant;
9523
- const [isHovered, setIsHovered] = React59.useState(false);
9524
- const [isFocused, setIsFocused] = React59.useState(false);
9525
- const [isPressed, setIsPressed] = React59.useState(false);
9747
+ const [isHovered, setIsHovered] = React61.useState(false);
9748
+ const [isFocused, setIsFocused] = React61.useState(false);
9749
+ const [isPressed, setIsPressed] = React61.useState(false);
9526
9750
  const tokens = SPLIT_BUTTON_TOKENS[actualSize];
9527
9751
  const needsTouchTarget = actualSize === "xs" || actualSize === "sm";
9528
9752
  const {
@@ -9533,7 +9757,7 @@ var SplitButtonTrailingUncheckableComponent = React59.forwardRef(
9533
9757
  const innerCornerRadius = isPressed || isFocused ? tokens.innerCorner.pressed : isHovered ? tokens.innerCorner.hovered : tokens.innerCorner.default;
9534
9758
  const outerRadius = tokens.containerHeight * tokens.outerCornerPercent / 100;
9535
9759
  const borderRadius = `${innerCornerRadius}px ${outerRadius}px ${outerRadius}px ${innerCornerRadius}px`;
9536
- const handlePointerDown = React59.useCallback(
9760
+ const handlePointerDown = React61.useCallback(
9537
9761
  (e) => {
9538
9762
  onRipplePointerDown(e);
9539
9763
  setIsPressed(true);
@@ -9541,19 +9765,19 @@ var SplitButtonTrailingUncheckableComponent = React59.forwardRef(
9541
9765
  },
9542
9766
  [onRipplePointerDown, onPointerDown]
9543
9767
  );
9544
- const handlePointerUp = React59.useCallback(
9768
+ const handlePointerUp = React61.useCallback(
9545
9769
  (e) => {
9546
9770
  setIsPressed(false);
9547
9771
  onPointerUp == null ? void 0 : onPointerUp(e);
9548
9772
  },
9549
9773
  [onPointerUp]
9550
9774
  );
9551
- const handlePointerEnter = React59.useCallback(() => {
9775
+ const handlePointerEnter = React61.useCallback(() => {
9552
9776
  if (!disabled) {
9553
9777
  setIsHovered(true);
9554
9778
  }
9555
9779
  }, [disabled]);
9556
- const handlePointerLeave = React59.useCallback(
9780
+ const handlePointerLeave = React61.useCallback(
9557
9781
  (e) => {
9558
9782
  setIsHovered(false);
9559
9783
  setIsPressed(false);
@@ -9561,21 +9785,21 @@ var SplitButtonTrailingUncheckableComponent = React59.forwardRef(
9561
9785
  },
9562
9786
  [onPointerLeave]
9563
9787
  );
9564
- const handlePointerCancel = React59.useCallback(
9788
+ const handlePointerCancel = React61.useCallback(
9565
9789
  (e) => {
9566
9790
  setIsPressed(false);
9567
9791
  onPointerCancel == null ? void 0 : onPointerCancel(e);
9568
9792
  },
9569
9793
  [onPointerCancel]
9570
9794
  );
9571
- const handleFocus = React59.useCallback(
9795
+ const handleFocus = React61.useCallback(
9572
9796
  (e) => {
9573
9797
  if (!disabled) setIsFocused(true);
9574
9798
  onFocus == null ? void 0 : onFocus(e);
9575
9799
  },
9576
9800
  [disabled, onFocus]
9577
9801
  );
9578
- const handleBlur = React59.useCallback(
9802
+ const handleBlur = React61.useCallback(
9579
9803
  (e) => {
9580
9804
  setIsFocused(false);
9581
9805
  onBlur == null ? void 0 : onBlur(e);
@@ -9642,16 +9866,16 @@ var SplitButtonTrailingUncheckableComponent = React59.forwardRef(
9642
9866
  }
9643
9867
  );
9644
9868
  SplitButtonTrailingUncheckableComponent.displayName = "SplitButtonTrailingUncheckable";
9645
- var SplitButtonTrailingUncheckable = React59.memo(
9869
+ var SplitButtonTrailingUncheckable = React61.memo(
9646
9870
  SplitButtonTrailingUncheckableComponent
9647
9871
  );
9648
- var FilledSplitButtonTrailingUncheckable = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "filled" }, props)));
9872
+ var FilledSplitButtonTrailingUncheckable = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "filled" }, props)));
9649
9873
  FilledSplitButtonTrailingUncheckable.displayName = "FilledSplitButtonTrailingUncheckable";
9650
- var TonalSplitButtonTrailingUncheckable = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "tonal" }, props)));
9874
+ var TonalSplitButtonTrailingUncheckable = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "tonal" }, props)));
9651
9875
  TonalSplitButtonTrailingUncheckable.displayName = "TonalSplitButtonTrailingUncheckable";
9652
- var ElevatedSplitButtonTrailingUncheckable = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "elevated" }, props)));
9876
+ var ElevatedSplitButtonTrailingUncheckable = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "elevated" }, props)));
9653
9877
  ElevatedSplitButtonTrailingUncheckable.displayName = "ElevatedSplitButtonTrailingUncheckable";
9654
- var OutlinedSplitButtonTrailingUncheckable = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "outlined" }, props)));
9878
+ var OutlinedSplitButtonTrailingUncheckable = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(SplitButtonTrailingUncheckable, __spreadValues({ ref, variant: "outlined" }, props)));
9655
9879
  OutlinedSplitButtonTrailingUncheckable.displayName = "OutlinedSplitButtonTrailingUncheckable";
9656
9880
  var SHADOW = {
9657
9881
  level0: "none",
@@ -9711,7 +9935,7 @@ function useCardElevation(variant, disabled) {
9711
9935
  }
9712
9936
  };
9713
9937
  }
9714
- var CardImpl = React59.forwardRef(
9938
+ var CardImpl = React61.forwardRef(
9715
9939
  (_a, ref) => {
9716
9940
  var _b = _a, {
9717
9941
  className,
@@ -9759,7 +9983,7 @@ var CardImpl = React59.forwardRef(
9759
9983
  variant === "outlined" && "hover:border-m3-outline focus-visible:border-m3-outline active:border-m3-outline"
9760
9984
  );
9761
9985
  if (asChild) {
9762
- const child = React59.Children.only(children);
9986
+ const child = React61.Children.only(children);
9763
9987
  const innerContent = /* @__PURE__ */ jsxs(Fragment, { children: [
9764
9988
  /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone: removeRipple }),
9765
9989
  child.props.children
@@ -9774,7 +9998,7 @@ var CardImpl = React59.forwardRef(
9774
9998
  onPointerDown,
9775
9999
  onClick
9776
10000
  }, props), {
9777
- children: React59.cloneElement(child, { children: innerContent })
10001
+ children: React61.cloneElement(child, { children: innerContent })
9778
10002
  })
9779
10003
  ) });
9780
10004
  }
@@ -9831,7 +10055,7 @@ var CardImpl = React59.forwardRef(
9831
10055
  }
9832
10056
  );
9833
10057
  CardImpl.displayName = "Card";
9834
- var Card = React59.memo(CardImpl);
10058
+ var Card = React61.memo(CardImpl);
9835
10059
  var MD3_STANDARD = [0.2, 0, 0, 1];
9836
10060
  var MD3_FAST_EFFECTS = [0.3, 0, 1, 1];
9837
10061
  var CHECKMARK_PATH = "M 4.5 9.5 L 7.5 12.5 L 13.5 5.5";
@@ -9845,7 +10069,7 @@ var NEXT_STATE = {
9845
10069
  checked: "indeterminate",
9846
10070
  indeterminate: "unchecked"
9847
10071
  };
9848
- var CheckboxVisual = React59.memo(function CheckboxVisual2({
10072
+ var CheckboxVisual = React61.memo(function CheckboxVisual2({
9849
10073
  isSelected,
9850
10074
  isIndeterminate,
9851
10075
  containerBg,
@@ -9916,7 +10140,7 @@ var CheckboxVisual = React59.memo(function CheckboxVisual2({
9916
10140
  );
9917
10141
  });
9918
10142
  function useMergedRef2(externalRef, internalRef) {
9919
- return React59.useCallback(
10143
+ return React61.useCallback(
9920
10144
  (node) => {
9921
10145
  internalRef.current = node;
9922
10146
  if (!externalRef) return;
@@ -9929,7 +10153,7 @@ function useMergedRef2(externalRef, internalRef) {
9929
10153
  [externalRef, internalRef]
9930
10154
  );
9931
10155
  }
9932
- var CheckboxComponent = React59.forwardRef(
10156
+ var CheckboxComponent = React61.forwardRef(
9933
10157
  ({
9934
10158
  checked,
9935
10159
  defaultChecked = false,
@@ -9951,20 +10175,20 @@ var CheckboxComponent = React59.forwardRef(
9951
10175
  }, ref) => {
9952
10176
  var _a;
9953
10177
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
9954
- const generatedId = React59.useId();
10178
+ const generatedId = React61.useId();
9955
10179
  const inputId = idProp != null ? idProp : label ? `checkbox-${generatedId}` : void 0;
9956
- const [internalState, setInternalState] = React59.useState(
10180
+ const [internalState, setInternalState] = React61.useState(
9957
10181
  () => defaultChecked ? "checked" : "unchecked"
9958
10182
  );
9959
10183
  const isControlled = stateProp !== void 0 || checked !== void 0;
9960
10184
  const baseState = isControlled ? resolveState(checked, false, stateProp) : internalState;
9961
10185
  const effectiveState = indeterminate ? "indeterminate" : baseState;
9962
- const [ripples, setRipples] = React59.useState([]);
9963
- const removeRipple = React59.useCallback(
10186
+ const [ripples, setRipples] = React61.useState([]);
10187
+ const removeRipple = React61.useCallback(
9964
10188
  (id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
9965
10189
  []
9966
10190
  );
9967
- const onPointerDown = React59.useCallback(
10191
+ const onPointerDown = React61.useCallback(
9968
10192
  (e) => {
9969
10193
  if (disabled) return;
9970
10194
  const rect = e.currentTarget.getBoundingClientRect();
@@ -9978,7 +10202,7 @@ var CheckboxComponent = React59.forwardRef(
9978
10202
  },
9979
10203
  [disabled]
9980
10204
  );
9981
- const handleChange = React59.useCallback(
10205
+ const handleChange = React61.useCallback(
9982
10206
  (e) => {
9983
10207
  if (disabled) return;
9984
10208
  if (stateProp !== void 0) {
@@ -10004,9 +10228,9 @@ var CheckboxComponent = React59.forwardRef(
10004
10228
  onCheckedChange
10005
10229
  ]
10006
10230
  );
10007
- const inputRef = React59.useRef(null);
10231
+ const inputRef = React61.useRef(null);
10008
10232
  const mergedRef = useMergedRef2(ref, inputRef);
10009
- React59.useEffect(() => {
10233
+ React61.useEffect(() => {
10010
10234
  if (inputRef.current) {
10011
10235
  inputRef.current.indeterminate = effectiveState === "indeterminate";
10012
10236
  }
@@ -10131,13 +10355,13 @@ var CheckboxComponent = React59.forwardRef(
10131
10355
  }
10132
10356
  );
10133
10357
  CheckboxComponent.displayName = "Checkbox";
10134
- var Checkbox = React59.memo(CheckboxComponent);
10135
- var TriStateCheckboxComponent = React59.forwardRef((_a, ref) => {
10358
+ var Checkbox = React61.memo(CheckboxComponent);
10359
+ var TriStateCheckboxComponent = React61.forwardRef((_a, ref) => {
10136
10360
  var _b = _a, { state, onStateChange } = _b, rest = __objRest(_b, ["state", "onStateChange"]);
10137
10361
  return /* @__PURE__ */ jsx(Checkbox, __spreadValues({ ref, state, onStateChange }, rest));
10138
10362
  });
10139
10363
  TriStateCheckboxComponent.displayName = "TriStateCheckbox";
10140
- var TriStateCheckbox = React59.memo(TriStateCheckboxComponent);
10364
+ var TriStateCheckbox = React61.memo(TriStateCheckboxComponent);
10141
10365
  function CheckIcon({ className }) {
10142
10366
  return /* @__PURE__ */ jsx(
10143
10367
  "svg",
@@ -10231,7 +10455,7 @@ var chipVariants = cva(
10231
10455
  defaultVariants: { variant: "assist" }
10232
10456
  }
10233
10457
  );
10234
- var ChipImpl = React59.forwardRef(
10458
+ var ChipImpl = React61.forwardRef(
10235
10459
  (_a, ref) => {
10236
10460
  var _b = _a, {
10237
10461
  variant = "assist",
@@ -10271,7 +10495,7 @@ var ChipImpl = React59.forwardRef(
10271
10495
  const showCheckmark = isFilter && selected;
10272
10496
  const hasTrailingContent = !!trailingIcon || !!onRemove;
10273
10497
  const hasLeadingContent = isFilter || !!resolvedLeadingIcon;
10274
- const paddingClass = React59.useMemo(
10498
+ const paddingClass = React61.useMemo(
10275
10499
  () => cn(
10276
10500
  !isInput && !hasLeadingContent && !hasTrailingContent && "px-4",
10277
10501
  !isInput && hasLeadingContent && !hasTrailingContent && "pl-2 pr-4",
@@ -10284,7 +10508,7 @@ var ChipImpl = React59.forwardRef(
10284
10508
  ),
10285
10509
  [isInput, hasLeadingContent, hasTrailingContent]
10286
10510
  );
10287
- const stateClass = React59.useMemo(
10511
+ const stateClass = React61.useMemo(
10288
10512
  () => cn(
10289
10513
  (isFilter || isInput) && selected && "bg-m3-secondary-container text-m3-on-secondary-container border-none before:bg-m3-on-secondary-container",
10290
10514
  elevated && !selected && "bg-m3-surface-container-low border-none elevation-1",
@@ -10295,7 +10519,7 @@ var ChipImpl = React59.forwardRef(
10295
10519
  ),
10296
10520
  [isFilter, isInput, selected, elevated, disabled]
10297
10521
  );
10298
- const leadingIconColorClass = React59.useMemo(
10522
+ const leadingIconColorClass = React61.useMemo(
10299
10523
  () => cn(
10300
10524
  (variant === "assist" || variant === "suggestion") && "text-m3-primary",
10301
10525
  isFilter && !selected && "text-m3-primary",
@@ -10376,7 +10600,7 @@ var ChipImpl = React59.forwardRef(
10376
10600
  /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", children: label })
10377
10601
  ] });
10378
10602
  if (asChild) {
10379
- const child = React59.Children.only(children);
10603
+ const child = React61.Children.only(children);
10380
10604
  const innerContent = /* @__PURE__ */ jsxs(Fragment, { children: [
10381
10605
  /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone: removeRipple }),
10382
10606
  mainContent,
@@ -10428,7 +10652,7 @@ var ChipImpl = React59.forwardRef(
10428
10652
  onPointerDown,
10429
10653
  className: containerClass
10430
10654
  }, strippedProps), {
10431
- children: React59.cloneElement(child, { children: innerContent })
10655
+ children: React61.cloneElement(child, { children: innerContent })
10432
10656
  })
10433
10657
  ) });
10434
10658
  }
@@ -10524,8 +10748,8 @@ var ChipImpl = React59.forwardRef(
10524
10748
  }
10525
10749
  );
10526
10750
  ChipImpl.displayName = "Chip";
10527
- var Chip = React59.memo(ChipImpl);
10528
- var ScrollArea = React59.forwardRef(
10751
+ var Chip = React61.memo(ChipImpl);
10752
+ var ScrollArea = React61.forwardRef(
10529
10753
  (_a, ref) => {
10530
10754
  var _b = _a, {
10531
10755
  className,
@@ -10546,15 +10770,15 @@ var ScrollArea = React59.forwardRef(
10546
10770
  "viewportRef",
10547
10771
  "viewportProps"
10548
10772
  ]);
10549
- const [isTouchDevice, setIsTouchDevice] = React59.useState(false);
10550
- React59.useEffect(() => {
10773
+ const [isTouchDevice, setIsTouchDevice] = React61.useState(false);
10774
+ React61.useEffect(() => {
10551
10775
  if (typeof window !== "undefined") {
10552
10776
  setIsTouchDevice(
10553
10777
  "ontouchstart" in window || navigator.maxTouchPoints > 0
10554
10778
  );
10555
10779
  }
10556
10780
  }, []);
10557
- const resolvedType = React59.useMemo(() => {
10781
+ const resolvedType = React61.useMemo(() => {
10558
10782
  if (type === "hover" && isTouchDevice) {
10559
10783
  return "scroll";
10560
10784
  }
@@ -10605,7 +10829,7 @@ var ScrollArea = React59.forwardRef(
10605
10829
  }
10606
10830
  );
10607
10831
  ScrollArea.displayName = "ScrollArea";
10608
- var ScrollAreaScrollbar = React59.forwardRef((_a, ref) => {
10832
+ var ScrollAreaScrollbar = React61.forwardRef((_a, ref) => {
10609
10833
  var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
10610
10834
  return /* @__PURE__ */ jsx(
10611
10835
  RadixScrollArea.Scrollbar,
@@ -10635,7 +10859,7 @@ var ScrollAreaScrollbar = React59.forwardRef((_a, ref) => {
10635
10859
  );
10636
10860
  });
10637
10861
  ScrollAreaScrollbar.displayName = RadixScrollArea.Scrollbar.displayName;
10638
- var ScrollAreaCorner = React59.forwardRef((_a, ref) => {
10862
+ var ScrollAreaCorner = React61.forwardRef((_a, ref) => {
10639
10863
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
10640
10864
  return /* @__PURE__ */ jsx(
10641
10865
  RadixScrollArea.Corner,
@@ -10815,6 +11039,75 @@ function CodeBlock({
10815
11039
  );
10816
11040
  }
10817
11041
 
11042
+ // src/ui/date-time-pickers/shared/animation-tokens.ts
11043
+ var PICKER_OVERLAY_ANIM = {
11044
+ initial: { opacity: 0 },
11045
+ animate: {
11046
+ opacity: 1,
11047
+ transition: { duration: 0.2, ease: [0, 0, 0, 1] }
11048
+ },
11049
+ exit: {
11050
+ opacity: 0,
11051
+ transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11052
+ }
11053
+ };
11054
+ var PICKER_CONTENT_ANIM = {
11055
+ initial: { opacity: 0, scale: 0.85, y: 16 },
11056
+ animate: {
11057
+ opacity: 1,
11058
+ scale: 1,
11059
+ y: 0,
11060
+ transition: DEFAULT_SPATIAL_SPRING
11061
+ },
11062
+ exit: {
11063
+ opacity: 0,
11064
+ scale: 0.95,
11065
+ y: 8,
11066
+ transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11067
+ }
11068
+ };
11069
+ var CALENDAR_SLIDE_VARIANTS = {
11070
+ enterFromRight: {
11071
+ x: "100%",
11072
+ opacity: 0
11073
+ },
11074
+ enterFromLeft: {
11075
+ x: "-100%",
11076
+ opacity: 0
11077
+ },
11078
+ center: {
11079
+ x: 0,
11080
+ opacity: 1,
11081
+ transition: FAST_SPATIAL_SPRING
11082
+ },
11083
+ exitToLeft: {
11084
+ x: "-100%",
11085
+ opacity: 0,
11086
+ transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11087
+ },
11088
+ exitToRight: {
11089
+ x: "100%",
11090
+ opacity: 0,
11091
+ transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11092
+ }
11093
+ };
11094
+ var PICKER_SELECTOR_ANIM = {
11095
+ initial: { opacity: 0, scale: 0.95, y: -6 },
11096
+ animate: {
11097
+ opacity: 1,
11098
+ scale: 1,
11099
+ y: 0,
11100
+ transition: DEFAULT_SPATIAL_SPRING
11101
+ },
11102
+ exit: {
11103
+ opacity: 0,
11104
+ scale: 0.95,
11105
+ y: 6,
11106
+ transition: { duration: 0.1, ease: "easeIn" }
11107
+ }
11108
+ };
11109
+ var DAY_CELL_STATE_TRANSITION = FAST_EFFECTS_SPRING;
11110
+
10818
11111
  // src/ui/date-time-pickers/shared/calendar-model.ts
10819
11112
  var startOfDayUTC = (ms) => {
10820
11113
  const d = new Date(ms);
@@ -10941,13 +11234,13 @@ var DatePickerInput = ({
10941
11234
  locale,
10942
11235
  className
10943
11236
  }) => {
10944
- const inputId = React59.useId();
11237
+ const inputId = React61.useId();
10945
11238
  const errorId = `${inputId}-error`;
10946
- const placeholder = React59.useMemo(() => {
11239
+ const placeholder = React61.useMemo(() => {
10947
11240
  if (locale == null ? void 0 : locale.startsWith("vi")) return "DD/MM/YYYY";
10948
11241
  return "MM/DD/YYYY";
10949
11242
  }, [locale]);
10950
- const handleKeyDown = React59.useCallback(
11243
+ const handleKeyDown = React61.useCallback(
10951
11244
  (e) => {
10952
11245
  if (e.key === "Enter") {
10953
11246
  const parsed = parseDateInput(value);
@@ -10956,11 +11249,11 @@ var DatePickerInput = ({
10956
11249
  },
10957
11250
  [value, onCommit]
10958
11251
  );
10959
- const handleBlur = React59.useCallback(() => {
11252
+ const handleBlur = React61.useCallback(() => {
10960
11253
  const parsed = parseDateInput(value);
10961
11254
  onCommit(parsed);
10962
11255
  }, [value, onCommit]);
10963
- const handleChange = React59.useCallback(
11256
+ const handleChange = React61.useCallback(
10964
11257
  (e) => {
10965
11258
  let raw = e.target.value.replace(/\D/g, "");
10966
11259
  if (raw.length > 8) raw = raw.slice(0, 8);
@@ -11006,60 +11299,6 @@ var DatePickerInput = ({
11006
11299
  ] }) }) });
11007
11300
  };
11008
11301
  DatePickerInput.displayName = "DatePickerInput";
11009
-
11010
- // src/ui/date-time-pickers/shared/animation-tokens.ts
11011
- var PICKER_OVERLAY_ANIM = {
11012
- initial: { opacity: 0 },
11013
- animate: {
11014
- opacity: 1,
11015
- transition: { duration: 0.2, ease: [0, 0, 0, 1] }
11016
- },
11017
- exit: {
11018
- opacity: 0,
11019
- transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11020
- }
11021
- };
11022
- var PICKER_CONTENT_ANIM = {
11023
- initial: { opacity: 0, scale: 0.85, y: 16 },
11024
- animate: {
11025
- opacity: 1,
11026
- scale: 1,
11027
- y: 0,
11028
- transition: DEFAULT_SPATIAL_SPRING
11029
- },
11030
- exit: {
11031
- opacity: 0,
11032
- scale: 0.95,
11033
- y: 8,
11034
- transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11035
- }
11036
- };
11037
- var CALENDAR_SLIDE_VARIANTS = {
11038
- enterFromRight: {
11039
- x: "100%",
11040
- opacity: 0
11041
- },
11042
- enterFromLeft: {
11043
- x: "-100%",
11044
- opacity: 0
11045
- },
11046
- center: {
11047
- x: 0,
11048
- opacity: 1,
11049
- transition: FAST_SPATIAL_SPRING
11050
- },
11051
- exitToLeft: {
11052
- x: "-100%",
11053
- opacity: 0,
11054
- transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11055
- },
11056
- exitToRight: {
11057
- x: "100%",
11058
- opacity: 0,
11059
- transition: { duration: 0.15, ease: [0.3, 0, 1, 1] }
11060
- }
11061
- };
11062
- var DAY_CELL_STATE_TRANSITION = FAST_EFFECTS_SPRING;
11063
11302
  var DayCell = ({
11064
11303
  day,
11065
11304
  selectedMs,
@@ -11108,11 +11347,11 @@ var DayCell = ({
11108
11347
  // Disabled
11109
11348
  isDisabled && "opacity-[0.38]"
11110
11349
  );
11111
- const handleClick = React59.useCallback(() => {
11350
+ const handleClick = React61.useCallback(() => {
11112
11351
  if (isDisabled) return;
11113
11352
  onSelect(utcMs);
11114
11353
  }, [isDisabled, utcMs, onSelect]);
11115
- const handleKeyDown = React59.useCallback(
11354
+ const handleKeyDown = React61.useCallback(
11116
11355
  (e) => {
11117
11356
  if (e.key === "Enter" || e.key === " ") {
11118
11357
  e.preventDefault();
@@ -11148,7 +11387,7 @@ var DayCell = ({
11148
11387
  };
11149
11388
  DayCell.displayName = "DayCell";
11150
11389
  var WeekdayRow = ({ locale }) => {
11151
- const names = React59.useMemo(() => getWeekdayNames(locale), [locale]);
11390
+ const names = React61.useMemo(() => getWeekdayNames(locale), [locale]);
11152
11391
  return /* @__PURE__ */ jsx("tr", { className: "grid grid-cols-7 mb-1", children: names.map((name, i) => /* @__PURE__ */ jsx(
11153
11392
  "th",
11154
11393
  {
@@ -11175,7 +11414,7 @@ var CalendarGrid = ({
11175
11414
  const d = new Date(displayedMonthMs);
11176
11415
  const year = d.getUTCFullYear();
11177
11416
  const month = d.getUTCMonth();
11178
- const weeks = React59.useMemo(
11417
+ const weeks = React61.useMemo(
11179
11418
  () => getWeeksInMonth(year, month, locale.weekStartsOn),
11180
11419
  [year, month, locale.weekStartsOn]
11181
11420
  );
@@ -11259,16 +11498,16 @@ var CalendarHeader = ({
11259
11498
  }).format(date);
11260
11499
  const yearLabel = String(date.getUTCFullYear());
11261
11500
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 px-6 pb-4 pt-5", children: [
11262
- /* @__PURE__ */ jsx("div", { className: "text-[length:var(--md-typescale-label-large-size,14px)] font-[number:var(--md-typescale-label-large-weight,500)] text-m3-on-surface-variant", children: title }),
11263
- /* @__PURE__ */ jsx("div", { className: "mb-2 leading-tight text-[length:var(--md-typescale-headline-large-size,32px)] font-[number:var(--md-typescale-headline-large-weight,400)] text-m3-on-surface-variant", children: headline }),
11264
- displayMode === "picker" && /* @__PURE__ */ jsxs("div", { className: "-mx-2 flex min-h-10 items-center gap-0.5", children: [
11501
+ /* @__PURE__ */ jsx("div", { className: "text-(length:--md-typescale-label-large-size,14px) font-(--md-typescale-label-large-weight,500) text-m3-on-surface-variant", children: title }),
11502
+ /* @__PURE__ */ jsx("div", { className: "mb-2 leading-tight text-(length:--md-typescale-headline-large-size,32px) font-(--md-typescale-headline-large-weight,400) text-m3-on-surface-variant", children: headline }),
11503
+ displayMode === "picker" && /* @__PURE__ */ jsxs("div", { className: "flex min-h-10 items-center gap-0.5", children: [
11265
11504
  activeSelector === null && /* @__PURE__ */ jsx(
11266
11505
  IconButton,
11267
11506
  {
11268
11507
  onClick: onPrev,
11269
11508
  "aria-label": "Previous month",
11270
11509
  disabled: !canNavigatePrev,
11271
- size: "sm",
11510
+ size: "xs",
11272
11511
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron_left" })
11273
11512
  }
11274
11513
  ),
@@ -11290,7 +11529,7 @@ var CalendarHeader = ({
11290
11529
  {
11291
11530
  name: "arrow_drop_down",
11292
11531
  className: cn(
11293
- "text-[20px]",
11532
+ "text-[20px] transition-transform duration-200",
11294
11533
  activeSelector === "month" && "rotate-180"
11295
11534
  )
11296
11535
  }
@@ -11304,7 +11543,7 @@ var CalendarHeader = ({
11304
11543
  onClick: onNext,
11305
11544
  "aria-label": "Next month",
11306
11545
  disabled: !canNavigateNext,
11307
- size: "sm",
11546
+ size: "xs",
11308
11547
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron_right" })
11309
11548
  }
11310
11549
  ),
@@ -11315,7 +11554,7 @@ var CalendarHeader = ({
11315
11554
  onClick: onPreviousYear,
11316
11555
  "aria-label": "Previous year",
11317
11556
  disabled: !canNavigatePreviousYear,
11318
- size: "sm",
11557
+ size: "xs",
11319
11558
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron_left" })
11320
11559
  }
11321
11560
  ),
@@ -11337,7 +11576,7 @@ var CalendarHeader = ({
11337
11576
  {
11338
11577
  name: "arrow_drop_down",
11339
11578
  className: cn(
11340
- "text-[20px]",
11579
+ "text-[20px] transition-transform duration-200",
11341
11580
  activeSelector === "year" && "rotate-180"
11342
11581
  )
11343
11582
  }
@@ -11351,7 +11590,7 @@ var CalendarHeader = ({
11351
11590
  onClick: onNextYear,
11352
11591
  "aria-label": "Next year",
11353
11592
  disabled: !canNavigateNextYear,
11354
- size: "sm",
11593
+ size: "xs",
11355
11594
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron_right" })
11356
11595
  }
11357
11596
  ),
@@ -11360,7 +11599,7 @@ var CalendarHeader = ({
11360
11599
  {
11361
11600
  onClick: onToggleMode,
11362
11601
  "aria-label": "Switch to text input",
11363
- size: "sm",
11602
+ size: "xs",
11364
11603
  children: /* @__PURE__ */ jsx(Icon, { name: "keyboard" })
11365
11604
  }
11366
11605
  )
@@ -11371,7 +11610,7 @@ var CalendarHeader = ({
11371
11610
  {
11372
11611
  onClick: onToggleMode,
11373
11612
  "aria-label": "Switch to calendar",
11374
- size: "sm",
11613
+ size: "xs",
11375
11614
  className: "self-end",
11376
11615
  children: /* @__PURE__ */ jsx(Icon, { name: "calendar_month" })
11377
11616
  }
@@ -11389,15 +11628,15 @@ var MonthPickerList = ({
11389
11628
  locale,
11390
11629
  onMonthSelect
11391
11630
  }) => {
11392
- const selectedRef = React59.useRef(null);
11393
- React59.useEffect(() => {
11631
+ const selectedRef = React61.useRef(null);
11632
+ React61.useEffect(() => {
11394
11633
  var _a, _b;
11395
11634
  (_b = (_a = selectedRef.current) == null ? void 0 : _a.scrollIntoView) == null ? void 0 : _b.call(_a, {
11396
11635
  block: "center",
11397
11636
  behavior: "instant"
11398
11637
  });
11399
11638
  }, []);
11400
- const months = React59.useMemo(
11639
+ const months = React61.useMemo(
11401
11640
  () => Array.from({ length: 12 }, (_, month) => month),
11402
11641
  []
11403
11642
  );
@@ -11442,12 +11681,12 @@ var YearPickerList = ({
11442
11681
  selectableDates,
11443
11682
  onYearSelect
11444
11683
  }) => {
11445
- const selectedRef = React59.useRef(null);
11446
- const years = React59.useMemo(() => {
11684
+ const selectedRef = React61.useRef(null);
11685
+ const years = React61.useMemo(() => {
11447
11686
  const [min, max] = yearRange;
11448
11687
  return Array.from({ length: max - min + 1 }, (_, index) => min + index);
11449
11688
  }, [yearRange]);
11450
- React59.useEffect(() => {
11689
+ React61.useEffect(() => {
11451
11690
  var _a, _b;
11452
11691
  (_b = (_a = selectedRef.current) == null ? void 0 : _a.scrollIntoView) == null ? void 0 : _b.call(_a, {
11453
11692
  block: "center",
@@ -11518,17 +11757,17 @@ var DatePicker = ({
11518
11757
  navigateToMonth,
11519
11758
  setDisplayMode
11520
11759
  } = state;
11521
- const [activeSelector, setActiveSelector] = React59.useState(null);
11522
- const [slideDirection, setSlideDirection] = React59.useState(null);
11523
- const handlePrev = React59.useCallback(() => {
11760
+ const [activeSelector, setActiveSelector] = React61.useState(null);
11761
+ const [slideDirection, setSlideDirection] = React61.useState(null);
11762
+ const handlePrev = React61.useCallback(() => {
11524
11763
  setSlideDirection("prev");
11525
11764
  navigateMonth2("prev");
11526
11765
  }, [navigateMonth2]);
11527
- const handleNext = React59.useCallback(() => {
11766
+ const handleNext = React61.useCallback(() => {
11528
11767
  setSlideDirection("next");
11529
11768
  navigateMonth2("next");
11530
11769
  }, [navigateMonth2]);
11531
- const handleYearSelect = React59.useCallback(
11770
+ const handleYearSelect = React61.useCallback(
11532
11771
  (year) => {
11533
11772
  const d = new Date(displayedMonthMs);
11534
11773
  navigateToMonth(year, d.getUTCMonth());
@@ -11536,7 +11775,7 @@ var DatePicker = ({
11536
11775
  },
11537
11776
  [displayedMonthMs, navigateToMonth]
11538
11777
  );
11539
- const handleMonthSelect = React59.useCallback(
11778
+ const handleMonthSelect = React61.useCallback(
11540
11779
  (month) => {
11541
11780
  const d = new Date(displayedMonthMs);
11542
11781
  navigateToMonth(d.getUTCFullYear(), month);
@@ -11544,11 +11783,11 @@ var DatePicker = ({
11544
11783
  },
11545
11784
  [displayedMonthMs, navigateToMonth]
11546
11785
  );
11547
- const [inputValue, setInputValue] = React59.useState(
11786
+ const [inputValue, setInputValue] = React61.useState(
11548
11787
  () => selectedDateMs !== null ? formatInputDate(selectedDateMs) : ""
11549
11788
  );
11550
- const [inputError, setInputError] = React59.useState();
11551
- const handleInputCommit = React59.useCallback(
11789
+ const [inputError, setInputError] = React61.useState();
11790
+ const handleInputCommit = React61.useCallback(
11552
11791
  (ms) => {
11553
11792
  if (ms === null && inputValue.length > 0) {
11554
11793
  setInputError("Invalid date");
@@ -11634,9 +11873,12 @@ var DatePicker = ({
11634
11873
  "input-mode"
11635
11874
  )
11636
11875
  ) : activeSelector === "month" ? /* @__PURE__ */ jsx(
11637
- "div",
11876
+ m.div,
11638
11877
  {
11639
11878
  id: "date-picker-selection",
11879
+ initial: PICKER_SELECTOR_ANIM.initial,
11880
+ animate: PICKER_SELECTOR_ANIM.animate,
11881
+ exit: PICKER_SELECTOR_ANIM.exit,
11640
11882
  className: "absolute inset-0",
11641
11883
  children: /* @__PURE__ */ jsx(
11642
11884
  MonthPickerList,
@@ -11649,9 +11891,12 @@ var DatePicker = ({
11649
11891
  },
11650
11892
  "month-list"
11651
11893
  ) : activeSelector === "year" ? /* @__PURE__ */ jsx(
11652
- "div",
11894
+ m.div,
11653
11895
  {
11654
11896
  id: "date-picker-selection",
11897
+ initial: PICKER_SELECTOR_ANIM.initial,
11898
+ animate: PICKER_SELECTOR_ANIM.animate,
11899
+ exit: PICKER_SELECTOR_ANIM.exit,
11655
11900
  className: "absolute inset-0",
11656
11901
  children: /* @__PURE__ */ jsx(
11657
11902
  YearPickerList,
@@ -11813,9 +12058,9 @@ DialogTrigger.displayName = "DialogTrigger";
11813
12058
  var DialogPortal = ({
11814
12059
  open,
11815
12060
  children
11816
- }) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open ? React59.Children.toArray(children) : null }) });
12061
+ }) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open ? React61.Children.toArray(children) : null }) });
11817
12062
  DialogPortal.displayName = "DialogPortal";
11818
- var DialogOverlay = React59.forwardRef((_a, ref) => {
12063
+ var DialogOverlay = React61.forwardRef((_a, ref) => {
11819
12064
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
11820
12065
  return /* @__PURE__ */ jsx(RadixDialog.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsx(
11821
12066
  m.div,
@@ -11826,7 +12071,7 @@ var DialogOverlay = React59.forwardRef((_a, ref) => {
11826
12071
  ) }));
11827
12072
  });
11828
12073
  DialogOverlay.displayName = "DialogOverlay";
11829
- var DialogContent = React59.forwardRef((_a, ref) => {
12074
+ var DialogContent = React61.forwardRef((_a, ref) => {
11830
12075
  var _b = _a, { className, children, hideCloseButton = false } = _b, props = __objRest(_b, ["className", "children", "hideCloseButton"]);
11831
12076
  return /* @__PURE__ */ jsx(
11832
12077
  RadixDialog.Content,
@@ -11866,7 +12111,7 @@ var DialogContent = React59.forwardRef((_a, ref) => {
11866
12111
  );
11867
12112
  });
11868
12113
  DialogContent.displayName = "DialogContent";
11869
- var DialogIcon = React59.forwardRef((_a, ref) => {
12114
+ var DialogIcon = React61.forwardRef((_a, ref) => {
11870
12115
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
11871
12116
  return /* @__PURE__ */ jsx(
11872
12117
  "div",
@@ -11889,7 +12134,7 @@ var DialogHeader = (_a) => {
11889
12134
  return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mb-4", className) }, props));
11890
12135
  };
11891
12136
  DialogHeader.displayName = "DialogHeader";
11892
- var DialogTitle = React59.forwardRef((_a, ref) => {
12137
+ var DialogTitle = React61.forwardRef((_a, ref) => {
11893
12138
  var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
11894
12139
  return /* @__PURE__ */ jsx(
11895
12140
  RadixDialog.Title,
@@ -11904,7 +12149,7 @@ var DialogTitle = React59.forwardRef((_a, ref) => {
11904
12149
  );
11905
12150
  });
11906
12151
  DialogTitle.displayName = "DialogTitle";
11907
- var DialogDescription = React59.forwardRef((_a, ref) => {
12152
+ var DialogDescription = React61.forwardRef((_a, ref) => {
11908
12153
  var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
11909
12154
  return /* @__PURE__ */ jsx(
11910
12155
  RadixDialog.Description,
@@ -11916,7 +12161,7 @@ var DialogDescription = React59.forwardRef((_a, ref) => {
11916
12161
  );
11917
12162
  });
11918
12163
  DialogDescription.displayName = "DialogDescription";
11919
- var DialogBody = React59.forwardRef((_a, ref) => {
12164
+ var DialogBody = React61.forwardRef((_a, ref) => {
11920
12165
  var _b = _a, { className, children, dir } = _b, props = __objRest(_b, ["className", "children", "dir"]);
11921
12166
  return /* @__PURE__ */ jsx(
11922
12167
  ScrollArea,
@@ -11947,7 +12192,7 @@ var DialogFooter = (_a) => {
11947
12192
  };
11948
12193
  DialogFooter.displayName = "DialogFooter";
11949
12194
  var DialogClose = RadixDialog.Close;
11950
- var DialogFullScreenContent = React59.forwardRef(
12195
+ var DialogFullScreenContent = React61.forwardRef(
11951
12196
  (_a, ref) => {
11952
12197
  var _b = _a, {
11953
12198
  className,
@@ -12095,17 +12340,17 @@ var DateRangePicker = ({
12095
12340
  navigateToMonth,
12096
12341
  setDisplayMode
12097
12342
  } = state;
12098
- const [activeSelector, setActiveSelector] = React59.useState(null);
12099
- const [slideDirection, setSlideDirection] = React59.useState(null);
12100
- const handlePrev = React59.useCallback(() => {
12343
+ const [activeSelector, setActiveSelector] = React61.useState(null);
12344
+ const [slideDirection, setSlideDirection] = React61.useState(null);
12345
+ const handlePrev = React61.useCallback(() => {
12101
12346
  setSlideDirection("prev");
12102
12347
  navigateMonth2("prev");
12103
12348
  }, [navigateMonth2]);
12104
- const handleNext = React59.useCallback(() => {
12349
+ const handleNext = React61.useCallback(() => {
12105
12350
  setSlideDirection("next");
12106
12351
  navigateMonth2("next");
12107
12352
  }, [navigateMonth2]);
12108
- const handleYearSelect = React59.useCallback(
12353
+ const handleYearSelect = React61.useCallback(
12109
12354
  (year) => {
12110
12355
  const d = new Date(displayedMonthMs);
12111
12356
  navigateToMonth(year, d.getUTCMonth());
@@ -12113,7 +12358,7 @@ var DateRangePicker = ({
12113
12358
  },
12114
12359
  [displayedMonthMs, navigateToMonth]
12115
12360
  );
12116
- const handleMonthSelect = React59.useCallback(
12361
+ const handleMonthSelect = React61.useCallback(
12117
12362
  (month) => {
12118
12363
  const d = new Date(displayedMonthMs);
12119
12364
  navigateToMonth(d.getUTCFullYear(), month);
@@ -12121,7 +12366,7 @@ var DateRangePicker = ({
12121
12366
  },
12122
12367
  [displayedMonthMs, navigateToMonth]
12123
12368
  );
12124
- const formatShort = React59.useCallback(
12369
+ const formatShort = React61.useCallback(
12125
12370
  (ms) => {
12126
12371
  if (ms === null) return "\u2014";
12127
12372
  return formatDate(ms, locale, {
@@ -12187,9 +12432,12 @@ var DateRangePicker = ({
12187
12432
  className: "relative flex-1 overflow-hidden",
12188
12433
  style: { minHeight: "296px" },
12189
12434
  children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeSelector === "month" ? /* @__PURE__ */ jsx(
12190
- "div",
12435
+ m.div,
12191
12436
  {
12192
12437
  id: "date-picker-selection",
12438
+ initial: PICKER_SELECTOR_ANIM.initial,
12439
+ animate: PICKER_SELECTOR_ANIM.animate,
12440
+ exit: PICKER_SELECTOR_ANIM.exit,
12193
12441
  className: "absolute inset-0",
12194
12442
  children: /* @__PURE__ */ jsx(
12195
12443
  MonthPickerList,
@@ -12202,9 +12450,12 @@ var DateRangePicker = ({
12202
12450
  },
12203
12451
  "month-list"
12204
12452
  ) : activeSelector === "year" ? /* @__PURE__ */ jsx(
12205
- "div",
12453
+ m.div,
12206
12454
  {
12207
12455
  id: "date-picker-selection",
12456
+ initial: PICKER_SELECTOR_ANIM.initial,
12457
+ animate: PICKER_SELECTOR_ANIM.animate,
12458
+ exit: PICKER_SELECTOR_ANIM.exit,
12208
12459
  className: "absolute inset-0",
12209
12460
  children: /* @__PURE__ */ jsx(
12210
12461
  YearPickerList,
@@ -12726,16 +12977,16 @@ var InputField = ({
12726
12977
  onBlur,
12727
12978
  className
12728
12979
  }) => {
12729
- const [inputText, setInputText] = React59.useState(
12980
+ const [inputText, setInputText] = React61.useState(
12730
12981
  String(value).padStart(2, "0")
12731
12982
  );
12732
- const inputRef = React59.useRef(null);
12733
- React59.useEffect(() => {
12983
+ const inputRef = React61.useRef(null);
12984
+ React61.useEffect(() => {
12734
12985
  if (!isFocused) {
12735
12986
  setInputText(String(value).padStart(2, "0"));
12736
12987
  }
12737
12988
  }, [value, isFocused]);
12738
- React59.useEffect(() => {
12989
+ React61.useEffect(() => {
12739
12990
  var _a, _b;
12740
12991
  if (isFocused) {
12741
12992
  (_a = inputRef.current) == null ? void 0 : _a.focus();
@@ -12825,7 +13076,7 @@ var InputField = ({
12825
13076
  };
12826
13077
  var TimeInput = ({ state, className }) => {
12827
13078
  const { is24hour, setHourInput, setMinuteInput, setSelection } = state;
12828
- const [focusedField, setFocusedField] = React59.useState(null);
13079
+ const [focusedField, setFocusedField] = React61.useState(null);
12829
13080
  const handleHourAutoAdvance = () => {
12830
13081
  setFocusedField("minute");
12831
13082
  setSelection("minute");
@@ -13019,17 +13270,17 @@ var ClockDial = ({
13019
13270
  setMinute,
13020
13271
  setSelection
13021
13272
  } = state;
13022
- const displayAngle = React59.useMemo(() => {
13273
+ const displayAngle = React61.useMemo(() => {
13023
13274
  if (selection === "hour") {
13024
13275
  return valueToAngle(hour, "hour");
13025
13276
  }
13026
13277
  return valueToAngle(minute, "minute");
13027
13278
  }, [selection, hour, minute]);
13028
- const selectorPos = React59.useMemo(
13279
+ const selectorPos = React61.useMemo(
13029
13280
  () => getSelectorPosition(displayAngle, selection, is24hour, isPm),
13030
13281
  [displayAngle, selection, is24hour, isPm]
13031
13282
  );
13032
- const trackEnd = React59.useMemo(() => {
13283
+ const trackEnd = React61.useMemo(() => {
13033
13284
  const dx = selectorPos.x - CENTER;
13034
13285
  const dy = selectorPos.y - CENTER;
13035
13286
  const length = Math.hypot(dx, dy);
@@ -13039,13 +13290,13 @@ var ClockDial = ({
13039
13290
  y: selectorPos.y - dy / length * HANDLE_RADIUS
13040
13291
  };
13041
13292
  }, [selectorPos]);
13042
- const numbers = React59.useMemo(() => {
13293
+ const numbers = React61.useMemo(() => {
13043
13294
  if (selection === "minute") return buildMinuteNumbers();
13044
13295
  if (is24hour) return buildHour24Numbers();
13045
13296
  return buildHour12Numbers();
13046
13297
  }, [selection, is24hour]);
13047
- const isDragging = React59.useRef(false);
13048
- const svgRef = React59.useRef(null);
13298
+ const isDragging = React61.useRef(false);
13299
+ const svgRef = React61.useRef(null);
13049
13300
  const getSVGPoint = (e) => {
13050
13301
  const svg = svgRef.current;
13051
13302
  if (!svg) return { x: e.clientX, y: e.clientY };
@@ -13195,8 +13446,8 @@ var getAutoLayout = () => {
13195
13446
  return innerWidth >= 600 && innerHeight >= 300 && innerWidth >= innerHeight ? "horizontal" : "vertical";
13196
13447
  };
13197
13448
  var useResolvedLayout = (layout) => {
13198
- const [autoLayout, setAutoLayout] = React59.useState("vertical");
13199
- React59.useEffect(() => {
13449
+ const [autoLayout, setAutoLayout] = React61.useState("vertical");
13450
+ React61.useEffect(() => {
13200
13451
  if (layout !== "auto") return;
13201
13452
  const updateLayout = () => setAutoLayout(getAutoLayout());
13202
13453
  updateLayout();
@@ -13373,7 +13624,7 @@ var TimePickerDialog = ({
13373
13624
  TimePickerDialog.displayName = "TimePickerDialog";
13374
13625
  var clamp = (value, min, max) => Math.max(min, Math.min(max, value));
13375
13626
  var isValidHourInput = (h, is24hour) => is24hour ? h >= 0 && h <= 23 : h >= 1 && h <= 12;
13376
- var isValidMinuteInput = (m68) => m68 >= 0 && m68 <= 59;
13627
+ var isValidMinuteInput = (m71) => m71 >= 0 && m71 <= 59;
13377
13628
  var to24Hour = (hour12, isPm) => {
13378
13629
  if (isPm) {
13379
13630
  return hour12 === 12 ? 12 : hour12 + 12;
@@ -13409,8 +13660,8 @@ var useTimePickerState = (options) => {
13409
13660
  },
13410
13661
  [is24hour]
13411
13662
  );
13412
- const setMinute = useCallback((m68) => {
13413
- const clamped = clamp(m68, 0, 59);
13663
+ const setMinute = useCallback((m71) => {
13664
+ const clamped = clamp(m71, 0, 59);
13414
13665
  setMinuteState(clamped);
13415
13666
  setMinuteInputState(clamped);
13416
13667
  }, []);
@@ -13424,10 +13675,10 @@ var useTimePickerState = (options) => {
13424
13675
  },
13425
13676
  [is24hour, isPm]
13426
13677
  );
13427
- const setMinuteInput = useCallback((m68) => {
13428
- setMinuteInputState(m68);
13429
- if (isValidMinuteInput(m68)) {
13430
- setMinuteState(m68);
13678
+ const setMinuteInput = useCallback((m71) => {
13679
+ setMinuteInputState(m71);
13680
+ if (isValidMinuteInput(m71)) {
13681
+ setMinuteState(m71);
13431
13682
  }
13432
13683
  }, []);
13433
13684
  const setSelection = useCallback((mode) => {
@@ -13508,7 +13759,7 @@ function buildWavePath(startX, endX, amplitude = 2, wavelength = 32, yCenter = 4
13508
13759
  }
13509
13760
  return d;
13510
13761
  }
13511
- var DividerImpl = React59.forwardRef(
13762
+ var DividerImpl = React61.forwardRef(
13512
13763
  (_a, ref) => {
13513
13764
  var _b = _a, {
13514
13765
  variant = "full-bleed",
@@ -13628,7 +13879,7 @@ var DividerImpl = React59.forwardRef(
13628
13879
  }
13629
13880
  );
13630
13881
  DividerImpl.displayName = "Divider";
13631
- var Divider = React59.memo(DividerImpl);
13882
+ var Divider = React61.memo(DividerImpl);
13632
13883
  var MD3_DRAWER_SPRING = DEFAULT_SPATIAL_SPRING;
13633
13884
  var MD3_DRAWER_ANIM = {
13634
13885
  initial: { y: "100%", opacity: 0.6 },
@@ -13660,7 +13911,7 @@ var DrawerPortal = ({
13660
13911
  open,
13661
13912
  children
13662
13913
  }) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: open && children }) });
13663
- var DrawerOverlay = React59.forwardRef((_a, ref) => {
13914
+ var DrawerOverlay = React61.forwardRef((_a, ref) => {
13664
13915
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
13665
13916
  return /* @__PURE__ */ jsx(RadixDialog.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsx(
13666
13917
  m.div,
@@ -13671,7 +13922,7 @@ var DrawerOverlay = React59.forwardRef((_a, ref) => {
13671
13922
  ) }));
13672
13923
  });
13673
13924
  DrawerOverlay.displayName = "DrawerOverlay";
13674
- var DrawerContent = React59.forwardRef(
13925
+ var DrawerContent = React61.forwardRef(
13675
13926
  (_a, ref) => {
13676
13927
  var _b = _a, {
13677
13928
  className,
@@ -13750,7 +14001,7 @@ var DrawerFooter = (_a) => {
13750
14001
  return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mt-4", className) }, props));
13751
14002
  };
13752
14003
  DrawerFooter.displayName = "DrawerFooter";
13753
- var DrawerTitle = React59.forwardRef((_a, ref) => {
14004
+ var DrawerTitle = React61.forwardRef((_a, ref) => {
13754
14005
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
13755
14006
  return /* @__PURE__ */ jsx(
13756
14007
  RadixDialog.Title,
@@ -13764,7 +14015,7 @@ var DrawerTitle = React59.forwardRef((_a, ref) => {
13764
14015
  );
13765
14016
  });
13766
14017
  DrawerTitle.displayName = "DrawerTitle";
13767
- var DrawerDescription = React59.forwardRef((_a, ref) => {
14018
+ var DrawerDescription = React61.forwardRef((_a, ref) => {
13768
14019
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
13769
14020
  return /* @__PURE__ */ jsx(
13770
14021
  RadixDialog.Description,
@@ -13775,8 +14026,8 @@ var DrawerDescription = React59.forwardRef((_a, ref) => {
13775
14026
  );
13776
14027
  });
13777
14028
  DrawerDescription.displayName = "DrawerDescription";
13778
- var ListContext = React59.createContext(null);
13779
- var useListContext = () => React59.useContext(ListContext);
14029
+ var ListContext = React61.createContext(null);
14030
+ var useListContext = () => React61.useContext(ListContext);
13780
14031
  var LIST_TOKENS = {
13781
14032
  oneLineHeight: 56,
13782
14033
  twoLineHeight: 72,
@@ -13841,9 +14092,9 @@ function resolveItemId(item) {
13841
14092
  return String(item);
13842
14093
  }
13843
14094
  function isListItem(child) {
13844
- return React59.isValidElement(child) && child.props != null && typeof child.props === "object" && "value" in child.props;
14095
+ return React61.isValidElement(child) && child.props != null && typeof child.props === "object" && "value" in child.props;
13845
14096
  }
13846
- var ListImpl = React59.forwardRef(
14097
+ var ListImpl = React61.forwardRef(
13847
14098
  (_a, ref) => {
13848
14099
  var _b = _a, {
13849
14100
  className,
@@ -13874,12 +14125,12 @@ var ListImpl = React59.forwardRef(
13874
14125
  "innerRadius",
13875
14126
  "children"
13876
14127
  ]);
13877
- const listRef = React59.useRef(null);
13878
- const [draggedOrder, setDraggedOrder] = React59.useState(
14128
+ const listRef = React61.useRef(null);
14129
+ const [draggedOrder, setDraggedOrder] = React61.useState(
13879
14130
  null
13880
14131
  );
13881
- React59.useImperativeHandle(ref, () => listRef.current);
13882
- const [selectedState, setSelectedState] = React59.useState(
14132
+ React61.useImperativeHandle(ref, () => listRef.current);
14133
+ const [selectedState, setSelectedState] = React61.useState(
13883
14134
  () => {
13884
14135
  var _a2;
13885
14136
  const initialValue = (_a2 = value != null ? value : defaultValue) != null ? _a2 : [];
@@ -13889,13 +14140,13 @@ var ListImpl = React59.forwardRef(
13889
14140
  }
13890
14141
  );
13891
14142
  const isControlled = value !== void 0;
13892
- const selectedValues = React59.useMemo(() => {
14143
+ const selectedValues = React61.useMemo(() => {
13893
14144
  if (isControlled) {
13894
14145
  return new Set(Array.isArray(value) ? value : value ? [value] : []);
13895
14146
  }
13896
14147
  return selectedState;
13897
14148
  }, [isControlled, value, selectedState]);
13898
- const onItemChange = React59.useCallback(
14149
+ const onItemChange = React61.useCallback(
13899
14150
  (itemValue, selected) => {
13900
14151
  const nextSet = new Set(selectedValues);
13901
14152
  if (selectionMode === "single-select") {
@@ -13927,11 +14178,11 @@ var ListImpl = React59.forwardRef(
13927
14178
  coordinateGetter: sortableKeyboardCoordinates
13928
14179
  })
13929
14180
  );
13930
- const itemIds = React59.useMemo(
14181
+ const itemIds = React61.useMemo(
13931
14182
  () => items ? items.map(resolveItemId) : [],
13932
14183
  [items]
13933
14184
  );
13934
- const currentOrder = React59.useMemo(
14185
+ const currentOrder = React61.useMemo(
13935
14186
  () => draggedOrder || itemIds,
13936
14187
  [draggedOrder, itemIds]
13937
14188
  );
@@ -13991,20 +14242,20 @@ var ListImpl = React59.forwardRef(
13991
14242
  }
13992
14243
  (_a2 = focusableItems[nextIndex]) == null ? void 0 : _a2.focus();
13993
14244
  };
13994
- const childrenArray = React59.Children.toArray(children);
14245
+ const childrenArray = React61.Children.toArray(children);
13995
14246
  const listItemCount = childrenArray.filter(isListItem).length;
13996
14247
  let currentListItemIndex = 0;
13997
- const processedChildren = React59.Children.map(children, (child) => {
14248
+ const processedChildren = React61.Children.map(children, (child) => {
13998
14249
  if (!isListItem(child)) return child;
13999
14250
  const childValue = child.props.value;
14000
14251
  const index = reorderable && currentOrder.length > 0 ? currentOrder.indexOf(String(childValue)) : currentListItemIndex;
14001
14252
  currentListItemIndex++;
14002
- return React59.cloneElement(
14253
+ return React61.cloneElement(
14003
14254
  child,
14004
14255
  { _listIndex: index }
14005
14256
  );
14006
14257
  });
14007
- const contextValue = React59.useMemo(
14258
+ const contextValue = React61.useMemo(
14008
14259
  () => ({
14009
14260
  selectionMode,
14010
14261
  variant,
@@ -14028,7 +14279,7 @@ var ListImpl = React59.forwardRef(
14028
14279
  innerRadius
14029
14280
  ]
14030
14281
  );
14031
- const dndId = React59.useId();
14282
+ const dndId = React61.useId();
14032
14283
  const isListbox = selectionMode === "single-select" || selectionMode === "multi-select";
14033
14284
  const role = isListbox ? "listbox" : "list";
14034
14285
  const ariaMultiselectable = selectionMode === "multi-select" ? true : void 0;
@@ -14075,13 +14326,13 @@ var ListImpl = React59.forwardRef(
14075
14326
  }
14076
14327
  );
14077
14328
  ListImpl.displayName = "List";
14078
- var List = React59.memo(ListImpl);
14329
+ var List = React61.memo(ListImpl);
14079
14330
  var INSET_CLASSES = {
14080
14331
  icon: "pl-[56px]",
14081
14332
  avatar: "pl-[72px]",
14082
14333
  custom: "pl-4"
14083
14334
  };
14084
- var ListDividerImpl = React59.forwardRef(
14335
+ var ListDividerImpl = React61.forwardRef(
14085
14336
  (_a, ref) => {
14086
14337
  var _b = _a, { className, inset = false, insetType = "avatar" } = _b, props = __objRest(_b, ["className", "inset", "insetType"]);
14087
14338
  const insetClass = inset ? INSET_CLASSES[insetType] : "";
@@ -14106,13 +14357,13 @@ var ListDividerImpl = React59.forwardRef(
14106
14357
  }
14107
14358
  );
14108
14359
  ListDividerImpl.displayName = "ListDivider";
14109
- var ListDivider = React59.memo(ListDividerImpl);
14360
+ var ListDivider = React61.memo(ListDividerImpl);
14110
14361
  var MD3_FAST_EFFECTS2 = [0.3, 0, 1, 1];
14111
- var RadioGroupContext = React59.createContext(
14362
+ var RadioGroupContext = React61.createContext(
14112
14363
  null
14113
14364
  );
14114
14365
  function useMergedRef3(externalRef, internalRef) {
14115
- return React59.useCallback(
14366
+ return React61.useCallback(
14116
14367
  (node) => {
14117
14368
  internalRef.current = node;
14118
14369
  if (!externalRef) return;
@@ -14125,7 +14376,7 @@ function useMergedRef3(externalRef, internalRef) {
14125
14376
  [externalRef, internalRef]
14126
14377
  );
14127
14378
  }
14128
- var RadioVisual = React59.memo(function RadioVisual2({
14379
+ var RadioVisual = React61.memo(function RadioVisual2({
14129
14380
  isSelected,
14130
14381
  disabled,
14131
14382
  error,
@@ -14178,7 +14429,7 @@ var RadioVisual = React59.memo(function RadioVisual2({
14178
14429
  }
14179
14430
  );
14180
14431
  });
14181
- var RadioButtonComponent = React59.forwardRef(
14432
+ var RadioButtonComponent = React61.forwardRef(
14182
14433
  ({
14183
14434
  selected,
14184
14435
  defaultSelected = false,
@@ -14197,23 +14448,23 @@ var RadioButtonComponent = React59.forwardRef(
14197
14448
  required: requiredProp
14198
14449
  }, ref) => {
14199
14450
  var _a, _b;
14200
- const group = React59.useContext(RadioGroupContext);
14451
+ const group = React61.useContext(RadioGroupContext);
14201
14452
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
14202
- const generatedId = React59.useId();
14453
+ const generatedId = React61.useId();
14203
14454
  const inputId = idProp != null ? idProp : label ? `radio-${generatedId}` : void 0;
14204
14455
  const name = (_b = group == null ? void 0 : group.name) != null ? _b : nameProp;
14205
14456
  const disabled = (group == null ? void 0 : group.disabled) || disabledProp;
14206
14457
  const error = (group == null ? void 0 : group.error) || errorProp || color === "error";
14207
14458
  const required = (group == null ? void 0 : group.required) || requiredProp;
14208
- const [internalSelected, setInternalSelected] = React59.useState(defaultSelected);
14459
+ const [internalSelected, setInternalSelected] = React61.useState(defaultSelected);
14209
14460
  const isControlled = selected !== void 0;
14210
14461
  const isSelected = group ? group.selectedValue === value : isControlled ? selected != null ? selected : false : internalSelected;
14211
- const [ripples, setRipples] = React59.useState([]);
14212
- const removeRipple = React59.useCallback(
14462
+ const [ripples, setRipples] = React61.useState([]);
14463
+ const removeRipple = React61.useCallback(
14213
14464
  (id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
14214
14465
  []
14215
14466
  );
14216
- const onPointerDown = React59.useCallback(
14467
+ const onPointerDown = React61.useCallback(
14217
14468
  (e) => {
14218
14469
  if (disabled) return;
14219
14470
  const rect = e.currentTarget.getBoundingClientRect();
@@ -14227,12 +14478,12 @@ var RadioButtonComponent = React59.forwardRef(
14227
14478
  },
14228
14479
  [disabled]
14229
14480
  );
14230
- const [isHovered, setIsHovered] = React59.useState(false);
14231
- const onPointerEnter = React59.useCallback(() => {
14481
+ const [isHovered, setIsHovered] = React61.useState(false);
14482
+ const onPointerEnter = React61.useCallback(() => {
14232
14483
  if (!disabled) setIsHovered(true);
14233
14484
  }, [disabled]);
14234
- const onPointerLeave = React59.useCallback(() => setIsHovered(false), []);
14235
- const handleChange = React59.useCallback(
14485
+ const onPointerLeave = React61.useCallback(() => setIsHovered(false), []);
14486
+ const handleChange = React61.useCallback(
14236
14487
  (_e) => {
14237
14488
  if (disabled || onClick === null) return;
14238
14489
  if (group) {
@@ -14246,7 +14497,7 @@ var RadioButtonComponent = React59.forwardRef(
14246
14497
  },
14247
14498
  [disabled, onClick, group, value, isControlled]
14248
14499
  );
14249
- const inputRef = React59.useRef(null);
14500
+ const inputRef = React61.useRef(null);
14250
14501
  const mergedRef = useMergedRef3(ref, inputRef);
14251
14502
  const stateLayerBg = error ? "before:bg-m3-error" : "before:bg-m3-primary";
14252
14503
  const stateLayerClass = cn(
@@ -14357,8 +14608,8 @@ var RadioButtonComponent = React59.forwardRef(
14357
14608
  }
14358
14609
  );
14359
14610
  RadioButtonComponent.displayName = "RadioButton";
14360
- var RadioButton = React59.memo(RadioButtonComponent);
14361
- var RadioGroupComponent = React59.forwardRef(
14611
+ var RadioButton = React61.memo(RadioButtonComponent);
14612
+ var RadioGroupComponent = React61.forwardRef(
14362
14613
  ({
14363
14614
  name,
14364
14615
  value: valueProp,
@@ -14373,19 +14624,19 @@ var RadioGroupComponent = React59.forwardRef(
14373
14624
  children,
14374
14625
  className
14375
14626
  }, ref) => {
14376
- const [internalValue, setInternalValue] = React59.useState(defaultValue);
14627
+ const [internalValue, setInternalValue] = React61.useState(defaultValue);
14377
14628
  const isControlled = valueProp !== void 0;
14378
14629
  const selectedValue = isControlled ? valueProp : internalValue;
14379
- const handleValueChange = React59.useCallback(
14630
+ const handleValueChange = React61.useCallback(
14380
14631
  (val) => {
14381
14632
  if (!isControlled) setInternalValue(val);
14382
14633
  onValueChange == null ? void 0 : onValueChange(val);
14383
14634
  },
14384
14635
  [isControlled, onValueChange]
14385
14636
  );
14386
- const groupRef = React59.useRef(null);
14637
+ const groupRef = React61.useRef(null);
14387
14638
  const mergedRef = useMergedRef3(ref, groupRef);
14388
- const onKeyDown = React59.useCallback(
14639
+ const onKeyDown = React61.useCallback(
14389
14640
  (e) => {
14390
14641
  var _a, _b;
14391
14642
  if (disabled) return;
@@ -14409,7 +14660,7 @@ var RadioGroupComponent = React59.forwardRef(
14409
14660
  },
14410
14661
  [disabled, handleValueChange]
14411
14662
  );
14412
- const contextValue = React59.useMemo(
14663
+ const contextValue = React61.useMemo(
14413
14664
  () => ({
14414
14665
  name,
14415
14666
  selectedValue,
@@ -14444,7 +14695,7 @@ var RadioGroupComponent = React59.forwardRef(
14444
14695
  }
14445
14696
  );
14446
14697
  RadioGroupComponent.displayName = "RadioGroup";
14447
- var RadioGroup = React59.memo(RadioGroupComponent);
14698
+ var RadioGroup = React61.memo(RadioGroupComponent);
14448
14699
 
14449
14700
  // src/ui/switch/switch.tokens.ts
14450
14701
  var SwitchTokens = {
@@ -14536,7 +14787,7 @@ function isIconVisible(thumbContent, icons, showOnlySelectedIcon, checked) {
14536
14787
  if (icons) return true;
14537
14788
  return showOnlySelectedIcon && checked;
14538
14789
  }
14539
- var SwitchVisual = React59.memo(function SwitchVisual2({
14790
+ var SwitchVisual = React61.memo(function SwitchVisual2({
14540
14791
  checked,
14541
14792
  disabled,
14542
14793
  isPressed,
@@ -14656,7 +14907,7 @@ var SwitchVisual = React59.memo(function SwitchVisual2({
14656
14907
  }
14657
14908
  );
14658
14909
  });
14659
- var SwitchComponent = React59.forwardRef(
14910
+ var SwitchComponent = React61.forwardRef(
14660
14911
  ({
14661
14912
  checked,
14662
14913
  onCheckedChange,
@@ -14674,16 +14925,16 @@ var SwitchComponent = React59.forwardRef(
14674
14925
  }, ref) => {
14675
14926
  var _a;
14676
14927
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
14677
- const [isPressed, setIsPressed] = React59.useState(false);
14678
- const [isHovered, setIsHovered] = React59.useState(false);
14679
- const [isFocused, setIsFocused] = React59.useState(false);
14680
- const [ripples, setRipples] = React59.useState([]);
14681
- const generatedId = React59.useId();
14928
+ const [isPressed, setIsPressed] = React61.useState(false);
14929
+ const [isHovered, setIsHovered] = React61.useState(false);
14930
+ const [isFocused, setIsFocused] = React61.useState(false);
14931
+ const [ripples, setRipples] = React61.useState([]);
14932
+ const generatedId = React61.useId();
14682
14933
  const switchId = label ? `switch-${generatedId}` : void 0;
14683
- const handleClick = React59.useCallback(() => {
14934
+ const handleClick = React61.useCallback(() => {
14684
14935
  if (!disabled) onCheckedChange(!checked);
14685
14936
  }, [disabled, checked, onCheckedChange]);
14686
- const handleKeyDown = React59.useCallback(
14937
+ const handleKeyDown = React61.useCallback(
14687
14938
  (e) => {
14688
14939
  if (disabled) return;
14689
14940
  if (e.key === " " || e.key === "Enter") {
@@ -14693,7 +14944,7 @@ var SwitchComponent = React59.forwardRef(
14693
14944
  },
14694
14945
  [disabled, checked, onCheckedChange]
14695
14946
  );
14696
- const handlePointerDown = React59.useCallback(
14947
+ const handlePointerDown = React61.useCallback(
14697
14948
  (e) => {
14698
14949
  if (disabled) return;
14699
14950
  setIsPressed(true);
@@ -14708,19 +14959,19 @@ var SwitchComponent = React59.forwardRef(
14708
14959
  },
14709
14960
  [disabled]
14710
14961
  );
14711
- const handlePointerUp = React59.useCallback(() => {
14962
+ const handlePointerUp = React61.useCallback(() => {
14712
14963
  setIsPressed(false);
14713
14964
  }, []);
14714
- const handlePointerEnter = React59.useCallback(() => {
14965
+ const handlePointerEnter = React61.useCallback(() => {
14715
14966
  if (!disabled) setIsHovered(true);
14716
14967
  }, [disabled]);
14717
- const handlePointerLeave = React59.useCallback(() => {
14968
+ const handlePointerLeave = React61.useCallback(() => {
14718
14969
  setIsHovered(false);
14719
14970
  setIsPressed(false);
14720
14971
  }, []);
14721
- const handleFocus = React59.useCallback(() => setIsFocused(true), []);
14722
- const handleBlur = React59.useCallback(() => setIsFocused(false), []);
14723
- const removeRipple = React59.useCallback(
14972
+ const handleFocus = React61.useCallback(() => setIsFocused(true), []);
14973
+ const handleBlur = React61.useCallback(() => setIsFocused(false), []);
14974
+ const removeRipple = React61.useCallback(
14724
14975
  (id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
14725
14976
  []
14726
14977
  );
@@ -14805,7 +15056,7 @@ var SwitchComponent = React59.forwardRef(
14805
15056
  }
14806
15057
  );
14807
15058
  SwitchComponent.displayName = "Switch";
14808
- var Switch = React59.memo(SwitchComponent);
15059
+ var Switch = React61.memo(SwitchComponent);
14809
15060
 
14810
15061
  // src/ui/lists/list-utils.ts
14811
15062
  function getListItemHeight(hasOverline, supportingTextLines) {
@@ -14945,7 +15196,7 @@ function renderSwitchTrailing({
14945
15196
  trailingClass
14946
15197
  }) {
14947
15198
  const isSelectingMode = selectionMode === "single-select" || selectionMode === "multi-select";
14948
- const switchElement = React59.isValidElement(trailingContent) ? (() => {
15199
+ const switchElement = React61.isValidElement(trailingContent) ? (() => {
14949
15200
  const trailingProps = trailingContent.props;
14950
15201
  const checkedValue = !isSelectingMode && trailingProps.checked !== void 0 ? trailingProps.checked : isSelected;
14951
15202
  const disabledValue = trailingProps.disabled !== void 0 ? disabled || trailingProps.disabled : disabled;
@@ -14956,7 +15207,7 @@ function renderSwitchTrailing({
14956
15207
  onItemChange(value, checked);
14957
15208
  }
14958
15209
  };
14959
- return React59.cloneElement(
15210
+ return React61.cloneElement(
14960
15211
  trailingContent,
14961
15212
  { checked: checkedValue, disabled: disabledValue, onCheckedChange }
14962
15213
  );
@@ -14981,7 +15232,7 @@ function renderSwitchTrailing({
14981
15232
  )
14982
15233
  );
14983
15234
  }
14984
- var ListItemImpl = React59.forwardRef(
15235
+ var ListItemImpl = React61.forwardRef(
14985
15236
  (_a, ref) => {
14986
15237
  var _b = _a, {
14987
15238
  className,
@@ -15037,9 +15288,9 @@ var ListItemImpl = React59.forwardRef(
15037
15288
  });
15038
15289
  const reorderable = (_e = context == null ? void 0 : context.reorderable) != null ? _e : false;
15039
15290
  const isSelected = selected !== void 0 ? selected : (_f = context == null ? void 0 : context.selectedValues.has(value)) != null ? _f : false;
15040
- const [isHovered, setIsHovered] = React59.useState(false);
15041
- const [isFocused, setIsFocused] = React59.useState(false);
15042
- const [isPressed, setIsPressed] = React59.useState(false);
15291
+ const [isHovered, setIsHovered] = React61.useState(false);
15292
+ const [isFocused, setIsFocused] = React61.useState(false);
15293
+ const [isPressed, setIsPressed] = React61.useState(false);
15043
15294
  const { ripples, onPointerDown, removeRipple } = useRippleState({
15044
15295
  disabled
15045
15296
  });
@@ -15051,8 +15302,8 @@ var ListItemImpl = React59.forwardRef(
15051
15302
  transition,
15052
15303
  isDragging
15053
15304
  } = useSortable({ id: value, disabled: !reorderable });
15054
- const itemRef = React59.useRef(null);
15055
- const setRefs = React59.useCallback(
15305
+ const itemRef = React61.useRef(null);
15306
+ const setRefs = React61.useCallback(
15056
15307
  (node) => {
15057
15308
  itemRef.current = node;
15058
15309
  setNodeRef(node);
@@ -15505,12 +15756,12 @@ var ListItemImpl = React59.forwardRef(
15505
15756
  }
15506
15757
  );
15507
15758
  ListItemImpl.displayName = "ListItem";
15508
- var ListItem = React59.memo(ListItemImpl);
15509
- var NavigationBarContext = React59.createContext({ variant: "flexible" });
15759
+ var ListItem = React61.memo(ListItemImpl);
15760
+ var NavigationBarContext = React61.createContext({ variant: "flexible" });
15510
15761
  function cloneIconWithFill(icon, selected) {
15511
- if (!React59.isValidElement(icon)) return icon;
15762
+ if (!React61.isValidElement(icon)) return icon;
15512
15763
  if (icon.type === Icon) {
15513
- return React59.cloneElement(
15764
+ return React61.cloneElement(
15514
15765
  icon,
15515
15766
  { fill: selected ? 1 : 0, animateFill: true }
15516
15767
  );
@@ -15518,7 +15769,7 @@ function cloneIconWithFill(icon, selected) {
15518
15769
  return icon;
15519
15770
  }
15520
15771
  function ActivePill() {
15521
- const { activeIndicatorTransition } = React59.useContext(NavigationBarContext);
15772
+ const { activeIndicatorTransition } = React61.useContext(NavigationBarContext);
15522
15773
  return /* @__PURE__ */ jsx(
15523
15774
  m.div,
15524
15775
  {
@@ -15556,7 +15807,7 @@ function IconContainer({ selected, badge, children }) {
15556
15807
  }
15557
15808
  );
15558
15809
  }
15559
- var NavigationBarItemComponent = React59.forwardRef(
15810
+ var NavigationBarItemComponent = React61.forwardRef(
15560
15811
  ({
15561
15812
  selected,
15562
15813
  icon,
@@ -15567,13 +15818,17 @@ var NavigationBarItemComponent = React59.forwardRef(
15567
15818
  className,
15568
15819
  "aria-label": ariaLabelProp
15569
15820
  }, ref) => {
15570
- const { variant, itemLayout, itemClassName: contextItemClassName } = React59.useContext(NavigationBarContext);
15821
+ const {
15822
+ variant,
15823
+ itemLayout,
15824
+ itemClassName: contextItemClassName
15825
+ } = React61.useContext(NavigationBarContext);
15571
15826
  const isForcedHorizontal = itemLayout === "horizontal";
15572
15827
  const isResponsiveHorizontal = (variant === "flexible" || variant === "xr") && itemLayout === void 0;
15573
15828
  const { ripples, onPointerDown, removeRipple } = useRippleState({
15574
15829
  disabled
15575
15830
  });
15576
- const handleClick = React59.useCallback(
15831
+ const handleClick = React61.useCallback(
15577
15832
  (e) => {
15578
15833
  if (disabled) {
15579
15834
  e.preventDefault();
@@ -15684,7 +15939,7 @@ var NavigationBarItemComponent = React59.forwardRef(
15684
15939
  }
15685
15940
  );
15686
15941
  NavigationBarItemComponent.displayName = "NavigationBarItem";
15687
- var NavigationBarItem = React59.memo(NavigationBarItemComponent);
15942
+ var NavigationBarItem = React61.memo(NavigationBarItemComponent);
15688
15943
  var navContainerVariants = cva(
15689
15944
  "flex items-center justify-center select-none transition-transform duration-300 z-50",
15690
15945
  {
@@ -15710,7 +15965,7 @@ var navContainerVariants = cva(
15710
15965
  }
15711
15966
  }
15712
15967
  );
15713
- var NavigationBarComponent = React59.forwardRef(
15968
+ var NavigationBarComponent = React61.forwardRef(
15714
15969
  ({
15715
15970
  variant = "flexible",
15716
15971
  itemLayout,
@@ -15724,11 +15979,11 @@ var NavigationBarComponent = React59.forwardRef(
15724
15979
  className,
15725
15980
  style
15726
15981
  }, ref) => {
15727
- const [isVisible, setIsVisible] = React59.useState(true);
15728
- const lastScrollY = React59.useRef(
15982
+ const [isVisible, setIsVisible] = React61.useState(true);
15983
+ const lastScrollY = React61.useRef(
15729
15984
  typeof window !== "undefined" ? window.scrollY : 0
15730
15985
  );
15731
- React59.useEffect(() => {
15986
+ React61.useEffect(() => {
15732
15987
  if (typeof window === "undefined" || !hideOnScroll) {
15733
15988
  setIsVisible(true);
15734
15989
  return;
@@ -15771,7 +16026,12 @@ var NavigationBarComponent = React59.forwardRef(
15771
16026
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(
15772
16027
  NavigationBarContext.Provider,
15773
16028
  {
15774
- value: { variant, itemLayout, activeIndicatorTransition, itemClassName },
16029
+ value: {
16030
+ variant,
16031
+ itemLayout,
16032
+ activeIndicatorTransition,
16033
+ itemClassName
16034
+ },
15775
16035
  children: /* @__PURE__ */ jsx(
15776
16036
  m.nav,
15777
16037
  {
@@ -15804,8 +16064,8 @@ var NavigationBarComponent = React59.forwardRef(
15804
16064
  }
15805
16065
  );
15806
16066
  NavigationBarComponent.displayName = "NavigationBar";
15807
- var NavigationBar = React59.memo(NavigationBarComponent);
15808
- var NavigationRailContext = React59.createContext({ variant: "collapsed", labelVisibility: "labeled" });
16067
+ var NavigationBar = React61.memo(NavigationBarComponent);
16068
+ var NavigationRailContext = React61.createContext({ variant: "collapsed", labelVisibility: "labeled" });
15809
16069
  var MD3_MODAL_TRANSITION = {
15810
16070
  type: "tween",
15811
16071
  ease: [0.05, 0.7, 0.1, 1],
@@ -15837,9 +16097,9 @@ var railContainerVariants = cva(
15837
16097
  }
15838
16098
  );
15839
16099
  function cloneIconWithFill2(icon, selected) {
15840
- if (!React59.isValidElement(icon)) return icon;
16100
+ if (!React61.isValidElement(icon)) return icon;
15841
16101
  if (icon.type === Icon) {
15842
- return React59.cloneElement(
16102
+ return React61.cloneElement(
15843
16103
  icon,
15844
16104
  { fill: selected ? 1 : 0, animateFill: true }
15845
16105
  );
@@ -15862,7 +16122,7 @@ function setFocusedItem(items, index) {
15862
16122
  }
15863
16123
  }
15864
16124
  function ActivePill2({ layoutId, disableInitial = false }) {
15865
- const { activeIndicatorTransition } = React59.useContext(NavigationRailContext);
16125
+ const { activeIndicatorTransition } = React61.useContext(NavigationRailContext);
15866
16126
  return /* @__PURE__ */ jsx(
15867
16127
  m.div,
15868
16128
  {
@@ -15898,7 +16158,7 @@ function IconContainer2({ selected, badge, children }) {
15898
16158
  }
15899
16159
  );
15900
16160
  }
15901
- var NavigationRailItemComponent = React59.forwardRef(
16161
+ var NavigationRailItemComponent = React61.forwardRef(
15902
16162
  ({
15903
16163
  selected,
15904
16164
  icon,
@@ -15909,18 +16169,18 @@ var NavigationRailItemComponent = React59.forwardRef(
15909
16169
  className,
15910
16170
  "aria-label": ariaLabelProp
15911
16171
  }, ref) => {
15912
- const { variant, labelVisibility } = React59.useContext(
16172
+ const { variant, labelVisibility } = React61.useContext(
15913
16173
  NavigationRailContext
15914
16174
  );
15915
16175
  const isExpanded = variant === "expanded" || variant === "modal";
15916
16176
  const isModal = variant === "modal";
15917
16177
  const enableLayout = !isModal;
15918
- const activePillId = `rail-pill-${React59.useId()}`;
16178
+ const activePillId = `rail-pill-${React61.useId()}`;
15919
16179
  const { ripples, onPointerDown, removeRipple } = useRippleState({
15920
16180
  disabled
15921
16181
  });
15922
16182
  const showLabel = isExpanded || labelVisibility === "labeled" || labelVisibility === "auto" && selected;
15923
- const handleClick = React59.useCallback(
16183
+ const handleClick = React61.useCallback(
15924
16184
  (e) => {
15925
16185
  if (disabled) {
15926
16186
  e.preventDefault();
@@ -16022,9 +16282,9 @@ var NavigationRailItemComponent = React59.forwardRef(
16022
16282
  }
16023
16283
  );
16024
16284
  NavigationRailItemComponent.displayName = "NavigationRailItem";
16025
- var NavigationRailItem = React59.memo(NavigationRailItemComponent);
16285
+ var NavigationRailItem = React61.memo(NavigationRailItemComponent);
16026
16286
  function useRoving(navRef) {
16027
- React59.useEffect(() => {
16287
+ React61.useEffect(() => {
16028
16288
  if (!navRef.current) return;
16029
16289
  const items = getMenuItems(navRef.current);
16030
16290
  const selected = items.find(
@@ -16034,7 +16294,7 @@ function useRoving(navRef) {
16034
16294
  const firstFocusable = selected != null ? selected : items[0];
16035
16295
  if (firstFocusable) firstFocusable.tabIndex = 0;
16036
16296
  }, [navRef]);
16037
- return React59.useCallback(
16297
+ return React61.useCallback(
16038
16298
  (e) => {
16039
16299
  if (!navRef.current) return;
16040
16300
  const items = getMenuItems(navRef.current);
@@ -16062,7 +16322,7 @@ function useRoving(navRef) {
16062
16322
  [navRef]
16063
16323
  );
16064
16324
  }
16065
- var NavigationRailComponent = React59.forwardRef(
16325
+ var NavigationRailComponent = React61.forwardRef(
16066
16326
  ({
16067
16327
  variant = "collapsed",
16068
16328
  labelVisibility = "labeled",
@@ -16082,9 +16342,9 @@ var NavigationRailComponent = React59.forwardRef(
16082
16342
  const isXr = variant === "xr";
16083
16343
  const isSpatial = isXr && fabPlacement === "spatialized";
16084
16344
  const applyAnimation = !isXr || !isSpatial;
16085
- const navRef = React59.useRef(null);
16345
+ const navRef = React61.useRef(null);
16086
16346
  const handleKeyDown = useRoving(navRef);
16087
- const setRefs = React59.useCallback(
16347
+ const setRefs = React61.useCallback(
16088
16348
  (node) => {
16089
16349
  navRef.current = node;
16090
16350
  if (typeof ref === "function") ref(node);
@@ -16175,7 +16435,7 @@ var NavigationRailComponent = React59.forwardRef(
16175
16435
  children: fab
16176
16436
  }
16177
16437
  ),
16178
- React59.cloneElement(
16438
+ React61.cloneElement(
16179
16439
  navElement,
16180
16440
  {
16181
16441
  className: cn(navBaseClasses, "pointer-events-auto")
@@ -16217,7 +16477,7 @@ var NavigationRailComponent = React59.forwardRef(
16217
16477
  }
16218
16478
  );
16219
16479
  NavigationRailComponent.displayName = "NavigationRail";
16220
- var NavigationRail = React59.memo(NavigationRailComponent);
16480
+ var NavigationRail = React61.memo(NavigationRailComponent);
16221
16481
  function useSearchKeyboard({
16222
16482
  active,
16223
16483
  onActiveChange,
@@ -16226,14 +16486,14 @@ function useSearchKeyboard({
16226
16486
  itemCount,
16227
16487
  onSelectSuggestion
16228
16488
  }) {
16229
- const [activeIndex, setActiveIndex] = React59.useState(-1);
16230
- const resetKeyRef = React59.useRef(`${active}:${query}`);
16489
+ const [activeIndex, setActiveIndex] = React61.useState(-1);
16490
+ const resetKeyRef = React61.useRef(`${active}:${query}`);
16231
16491
  const currentKey = `${active}:${query}`;
16232
16492
  if (resetKeyRef.current !== currentKey) {
16233
16493
  resetKeyRef.current = currentKey;
16234
16494
  setActiveIndex(-1);
16235
16495
  }
16236
- const handleKeyDown = React59.useCallback(
16496
+ const handleKeyDown = React61.useCallback(
16237
16497
  (e) => {
16238
16498
  if (!active) return;
16239
16499
  switch (e.key) {
@@ -16273,7 +16533,7 @@ function useSearchKeyboard({
16273
16533
  query
16274
16534
  ]
16275
16535
  );
16276
- const resetActiveIndex = React59.useCallback(() => {
16536
+ const resetActiveIndex = React61.useCallback(() => {
16277
16537
  setActiveIndex(-1);
16278
16538
  }, []);
16279
16539
  return { activeIndex, handleKeyDown, resetActiveIndex };
@@ -16341,10 +16601,10 @@ function AnimatedPlaceholder({
16341
16601
  className
16342
16602
  }) {
16343
16603
  const shouldReduceMotion = useReducedMotion();
16344
- const containerRef = React59.useRef(null);
16345
- const spanRef = React59.useRef(null);
16346
- const [xOffset, setXOffset] = React59.useState(0);
16347
- const recalculate = React59.useCallback(() => {
16604
+ const containerRef = React61.useRef(null);
16605
+ const spanRef = React61.useRef(null);
16606
+ const [xOffset, setXOffset] = React61.useState(0);
16607
+ const recalculate = React61.useCallback(() => {
16348
16608
  const container = containerRef.current;
16349
16609
  const span = spanRef.current;
16350
16610
  if (!container || !span || textAlign === "left") {
@@ -16359,10 +16619,10 @@ function AnimatedPlaceholder({
16359
16619
  setXOffset(Math.max(0, containerWidth - textWidth));
16360
16620
  }
16361
16621
  }, [textAlign]);
16362
- React59.useLayoutEffect(() => {
16622
+ React61.useLayoutEffect(() => {
16363
16623
  recalculate();
16364
16624
  }, [recalculate]);
16365
- React59.useEffect(() => {
16625
+ React61.useEffect(() => {
16366
16626
  const container = containerRef.current;
16367
16627
  if (!container) return;
16368
16628
  const observer = new ResizeObserver(recalculate);
@@ -16431,10 +16691,10 @@ function SearchBar({
16431
16691
  activeIndex
16432
16692
  }) {
16433
16693
  const shouldReduceMotion = useReducedMotion();
16434
- const inputRef = React59.useRef(null);
16435
- const prevActiveRef = React59.useRef(active);
16436
- const isRestoringFocusRef = React59.useRef(false);
16437
- React59.useEffect(() => {
16694
+ const inputRef = React61.useRef(null);
16695
+ const prevActiveRef = React61.useRef(active);
16696
+ const isRestoringFocusRef = React61.useRef(false);
16697
+ React61.useEffect(() => {
16438
16698
  var _a;
16439
16699
  let rafId;
16440
16700
  if (prevActiveRef.current === true && active === false) {
@@ -16553,7 +16813,7 @@ function SearchBar({
16553
16813
  ) })
16554
16814
  );
16555
16815
  }
16556
- var SearchContext = React59.createContext(null);
16816
+ var SearchContext = React61.createContext(null);
16557
16817
  function SearchProvider({
16558
16818
  children,
16559
16819
  value
@@ -16561,7 +16821,7 @@ function SearchProvider({
16561
16821
  return /* @__PURE__ */ jsx(SearchContext.Provider, { value, children });
16562
16822
  }
16563
16823
  function useSearch() {
16564
- const context = React59.useContext(SearchContext);
16824
+ const context = React61.useContext(SearchContext);
16565
16825
  if (!context) {
16566
16826
  return { listboxId: "", activeIndex: -1 };
16567
16827
  }
@@ -16588,7 +16848,7 @@ function useClickOutside(handler, enabled = true) {
16588
16848
  return ref;
16589
16849
  }
16590
16850
  function useSearchViewFocus(inputRef, active) {
16591
- React59.useEffect(() => {
16851
+ React61.useEffect(() => {
16592
16852
  if (!active) return;
16593
16853
  let raf2;
16594
16854
  const raf1 = requestAnimationFrame(() => {
@@ -16662,7 +16922,7 @@ function SearchViewDocked({
16662
16922
  activeIndex
16663
16923
  }) {
16664
16924
  const shouldReduceMotion = useReducedMotion();
16665
- const inputRef = React59.useRef(null);
16925
+ const inputRef = React61.useRef(null);
16666
16926
  useSearchViewFocus(inputRef, active);
16667
16927
  const dropdownRef = useClickOutside(() => {
16668
16928
  onActiveChange(false);
@@ -16808,10 +17068,10 @@ function SearchViewFullScreen({
16808
17068
  activeIndex
16809
17069
  }) {
16810
17070
  const shouldReduceMotion = useReducedMotion();
16811
- const inputRef = React59.useRef(null);
17071
+ const inputRef = React61.useRef(null);
16812
17072
  useSearchViewFocus(inputRef, active);
16813
- const [mounted, setMounted] = React59.useState(false);
16814
- React59.useEffect(() => {
17073
+ const [mounted, setMounted] = React61.useState(false);
17074
+ React61.useEffect(() => {
16815
17075
  setMounted(true);
16816
17076
  }, []);
16817
17077
  const handleFormSubmit = (e) => {
@@ -16969,10 +17229,10 @@ function SearchComponent({
16969
17229
  className,
16970
17230
  viewClassName
16971
17231
  }) {
16972
- const generatedId = React59.useId();
17232
+ const generatedId = React61.useId();
16973
17233
  const searchId = id != null ? id : generatedId;
16974
17234
  const listboxId = `${searchId}-listbox`;
16975
- const itemCount = React59.Children.count(children);
17235
+ const itemCount = React61.Children.count(children);
16976
17236
  const { activeIndex, handleKeyDown } = useSearchKeyboard({
16977
17237
  active,
16978
17238
  onActiveChange,
@@ -17347,7 +17607,7 @@ function ShapeSvg({
17347
17607
  );
17348
17608
  }
17349
17609
  var INDICATOR = "h-1 w-8 rounded-full bg-m3-on-surface-variant/40";
17350
- var DragHandle = React59.forwardRef(
17610
+ var DragHandle = React61.forwardRef(
17351
17611
  ({ className, onCycle, "aria-label": ariaLabel }, ref) => {
17352
17612
  const isInteractive = Boolean(onCycle);
17353
17613
  if (isInteractive) {
@@ -17900,7 +18160,7 @@ function resolveMaxHeight(maxHeight, snapPoints) {
17900
18160
  return ABSOLUTE_MAX_HEIGHT;
17901
18161
  return maxHeight;
17902
18162
  }
17903
- var BottomSheet = React59.forwardRef(
18163
+ var BottomSheet = React61.forwardRef(
17904
18164
  ({
17905
18165
  isOpen,
17906
18166
  onClose,
@@ -17933,27 +18193,27 @@ var BottomSheet = React59.forwardRef(
17933
18193
  isModal: false,
17934
18194
  maxHeight: resolveMaxHeight(maxHeight, snapPoints)
17935
18195
  });
17936
- React59.useEffect(() => {
18196
+ React61.useEffect(() => {
17937
18197
  const node = scope.current;
17938
18198
  if (node) {
17939
18199
  node.snapTo = snapTo;
17940
18200
  }
17941
18201
  }, [snapTo, scope]);
17942
- const [mounted, setMounted] = React59.useState(false);
17943
- React59.useEffect(() => {
18202
+ const [mounted, setMounted] = React61.useState(false);
18203
+ React61.useEffect(() => {
17944
18204
  setMounted(true);
17945
18205
  }, []);
17946
- const resolvedDividers = React59.useMemo(
18206
+ const resolvedDividers = React61.useMemo(
17947
18207
  () => resolveDividers(divider),
17948
18208
  [divider]
17949
18209
  );
17950
- const resolvedSheetMaxWidth = React59.useMemo(() => {
18210
+ const resolvedSheetMaxWidth = React61.useMemo(() => {
17951
18211
  if (sheetMaxWidth === void 0)
17952
18212
  return "var(--m3-bottom-sheet-max-width, 640px)";
17953
18213
  if (typeof sheetMaxWidth === "number") return `${sheetMaxWidth}px`;
17954
18214
  return sheetMaxWidth;
17955
18215
  }, [sheetMaxWidth]);
17956
- const mergedRef = React59.useCallback(
18216
+ const mergedRef = React61.useCallback(
17957
18217
  (node) => {
17958
18218
  scope(node);
17959
18219
  if (typeof ref === "function") ref(node);
@@ -18037,7 +18297,7 @@ var SCRIM_ANIM = {
18037
18297
  },
18038
18298
  exit: { opacity: 0, transition: { duration: 0.18, ease: "easeIn" } }
18039
18299
  };
18040
- var Scrim = React59.forwardRef(
18300
+ var Scrim = React61.forwardRef(
18041
18301
  ({ onClick, className, style }, ref) => /* @__PURE__ */ jsx(
18042
18302
  m.div,
18043
18303
  __spreadValues({
@@ -18069,7 +18329,7 @@ function resolveSheetMaxWidth(value) {
18069
18329
  if (typeof value === "number") return `${value}px`;
18070
18330
  return value;
18071
18331
  }
18072
- var BottomSheetModal = React59.forwardRef(
18332
+ var BottomSheetModal = React61.forwardRef(
18073
18333
  ({
18074
18334
  isOpen,
18075
18335
  onClose,
@@ -18108,21 +18368,21 @@ var BottomSheetModal = React59.forwardRef(
18108
18368
  isModal: true,
18109
18369
  maxHeight: resolveMaxHeight2(maxHeight, snapPoints)
18110
18370
  });
18111
- React59.useEffect(() => {
18371
+ React61.useEffect(() => {
18112
18372
  const node = scope.current;
18113
18373
  if (node) {
18114
18374
  node.snapTo = snapTo;
18115
18375
  }
18116
18376
  }, [snapTo, scope]);
18117
- const resolvedDividers = React59.useMemo(
18377
+ const resolvedDividers = React61.useMemo(
18118
18378
  () => resolveDividers(divider),
18119
18379
  [divider]
18120
18380
  );
18121
- const resolvedSheetMaxWidth = React59.useMemo(
18381
+ const resolvedSheetMaxWidth = React61.useMemo(
18122
18382
  () => resolveSheetMaxWidth(sheetMaxWidth),
18123
18383
  [sheetMaxWidth]
18124
18384
  );
18125
- const mergedRef = React59.useCallback(
18385
+ const mergedRef = React61.useCallback(
18126
18386
  (node) => {
18127
18387
  scope(node);
18128
18388
  if (typeof ref === "function") ref(node);
@@ -18213,7 +18473,7 @@ var BottomSheetModal = React59.forwardRef(
18213
18473
  );
18214
18474
  BottomSheetModal.displayName = "BottomSheetModal";
18215
18475
  var COPLANAR_TRANSITION = `margin ${getMotionTransitionCSS("default", "spatial")}`;
18216
- var SideSheet = React59.forwardRef(
18476
+ var SideSheet = React61.forwardRef(
18217
18477
  ({
18218
18478
  isOpen,
18219
18479
  children,
@@ -18229,16 +18489,16 @@ var SideSheet = React59.forwardRef(
18229
18489
  divider,
18230
18490
  scrollAreaProps
18231
18491
  }, ref) => {
18232
- const sheetAnim = React59.useMemo(() => buildSideSheetAnim(edge), [edge]);
18233
- const [mounted, setMounted] = React59.useState(false);
18234
- React59.useEffect(() => {
18492
+ const sheetAnim = React61.useMemo(() => buildSideSheetAnim(edge), [edge]);
18493
+ const [mounted, setMounted] = React61.useState(false);
18494
+ React61.useEffect(() => {
18235
18495
  setMounted(true);
18236
18496
  }, []);
18237
- const resolvedDividers = React59.useMemo(
18497
+ const resolvedDividers = React61.useMemo(
18238
18498
  () => resolveDividers(divider),
18239
18499
  [divider]
18240
18500
  );
18241
- React59.useEffect(() => {
18501
+ React61.useEffect(() => {
18242
18502
  const sibling = coplanarSiblingRef == null ? void 0 : coplanarSiblingRef.current;
18243
18503
  if (!sibling) return;
18244
18504
  sibling.style.transition = COPLANAR_TRANSITION;
@@ -18302,7 +18562,7 @@ var SideSheet = React59.forwardRef(
18302
18562
  }
18303
18563
  );
18304
18564
  SideSheet.displayName = "SideSheet";
18305
- var SideSheetModal = React59.forwardRef(
18565
+ var SideSheetModal = React61.forwardRef(
18306
18566
  ({
18307
18567
  isOpen,
18308
18568
  onClose,
@@ -18317,8 +18577,8 @@ var SideSheetModal = React59.forwardRef(
18317
18577
  divider,
18318
18578
  scrollAreaProps
18319
18579
  }, ref) => {
18320
- const sheetAnim = React59.useMemo(() => buildSideSheetAnim(edge), [edge]);
18321
- const resolvedDividers = React59.useMemo(
18580
+ const sheetAnim = React61.useMemo(() => buildSideSheetAnim(edge), [edge]);
18581
+ const resolvedDividers = React61.useMemo(
18322
18582
  () => resolveDividers(divider),
18323
18583
  [divider]
18324
18584
  );
@@ -18577,7 +18837,7 @@ var SLIDER_INDICATOR_TRANSITION = {
18577
18837
  stiffness: 450,
18578
18838
  damping: 32
18579
18839
  };
18580
- var ValueIndicator = React59.memo(function ValueIndicator2({
18840
+ var ValueIndicator = React61.memo(function ValueIndicator2({
18581
18841
  value,
18582
18842
  visible,
18583
18843
  orientation,
@@ -18624,7 +18884,7 @@ var ValueIndicator = React59.memo(function ValueIndicator2({
18624
18884
  "value-indicator"
18625
18885
  ) });
18626
18886
  });
18627
- var SliderThumb = React59.memo(function SliderThumb2({
18887
+ var SliderThumb = React61.memo(function SliderThumb2({
18628
18888
  value,
18629
18889
  percent,
18630
18890
  min,
@@ -18656,11 +18916,11 @@ var SliderThumb = React59.memo(function SliderThumb2({
18656
18916
  [posTarget]: `calc(${trackInset}px + ${percent} * (100% - ${trackInset * 2}px))`
18657
18917
  };
18658
18918
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
18659
- const [isDragging, setIsDragging] = React59.useState(false);
18660
- const [isHovered, setIsHovered] = React59.useState(false);
18661
- const [isFocused, setIsFocused] = React59.useState(false);
18662
- const pointerIdRef = React59.useRef(null);
18663
- const thumbRef = React59.useRef(null);
18919
+ const [isDragging, setIsDragging] = React61.useState(false);
18920
+ const [isHovered, setIsHovered] = React61.useState(false);
18921
+ const [isFocused, setIsFocused] = React61.useState(false);
18922
+ const pointerIdRef = React61.useRef(null);
18923
+ const thumbRef = React61.useRef(null);
18664
18924
  const showIndicator = showValueIndicator && (isDragging || isHovered || isFocused);
18665
18925
  const positionStyle = isHorizontal ? __spreadProps(__spreadValues({
18666
18926
  position: "absolute"
@@ -18675,7 +18935,7 @@ var SliderThumb = React59.memo(function SliderThumb2({
18675
18935
  transform: "translate(-50%, 50%)",
18676
18936
  zIndex
18677
18937
  });
18678
- const getDeltaFromPointer = React59.useCallback(
18938
+ const getDeltaFromPointer = React61.useCallback(
18679
18939
  (e) => {
18680
18940
  const trackEl = trackRef.current;
18681
18941
  if (!trackEl) return percent;
@@ -18702,7 +18962,7 @@ var SliderThumb = React59.memo(function SliderThumb2({
18702
18962
  },
18703
18963
  [isHorizontal, max, min, percent, step, trackRef, trackSize]
18704
18964
  );
18705
- const handlePointerDown = React59.useCallback(
18965
+ const handlePointerDown = React61.useCallback(
18706
18966
  (e) => {
18707
18967
  if (disabled) return;
18708
18968
  e.preventDefault();
@@ -18713,7 +18973,7 @@ var SliderThumb = React59.memo(function SliderThumb2({
18713
18973
  },
18714
18974
  [disabled]
18715
18975
  );
18716
- const handlePointerMove = React59.useCallback(
18976
+ const handlePointerMove = React61.useCallback(
18717
18977
  (e) => {
18718
18978
  if (!isDragging || e.pointerId !== pointerIdRef.current) return;
18719
18979
  const newValue = getDeltaFromPointer(e.nativeEvent);
@@ -18721,7 +18981,7 @@ var SliderThumb = React59.memo(function SliderThumb2({
18721
18981
  },
18722
18982
  [isDragging, getDeltaFromPointer, onValueChange]
18723
18983
  );
18724
- const handlePointerUp = React59.useCallback(
18984
+ const handlePointerUp = React61.useCallback(
18725
18985
  (e) => {
18726
18986
  if (e.pointerId !== pointerIdRef.current) return;
18727
18987
  e.currentTarget.releasePointerCapture(e.pointerId);
@@ -18731,7 +18991,7 @@ var SliderThumb = React59.memo(function SliderThumb2({
18731
18991
  },
18732
18992
  [onValueChangeEnd, value]
18733
18993
  );
18734
- const handleKeyDown = React59.useCallback(
18994
+ const handleKeyDown = React61.useCallback(
18735
18995
  (e) => {
18736
18996
  if (disabled) return;
18737
18997
  if (e.key === "Home") {
@@ -18835,7 +19095,7 @@ var SliderThumb = React59.memo(function SliderThumb2({
18835
19095
  }
18836
19096
  );
18837
19097
  });
18838
- var RangeTrack = React59.memo(function RangeTrack2({
19098
+ var RangeTrack = React61.memo(function RangeTrack2({
18839
19099
  startPercent,
18840
19100
  endPercent,
18841
19101
  trackSize,
@@ -19080,7 +19340,7 @@ var RangeTrack = React59.memo(function RangeTrack2({
19080
19340
  }
19081
19341
  );
19082
19342
  });
19083
- var RangeSliderComponent = React59.forwardRef(
19343
+ var RangeSliderComponent = React61.forwardRef(
19084
19344
  ({
19085
19345
  value: controlledValue,
19086
19346
  defaultValue,
@@ -19104,7 +19364,7 @@ var RangeSliderComponent = React59.forwardRef(
19104
19364
  const isHorizontal = orientation === "horizontal";
19105
19365
  const defaultStart = (_a = defaultValue == null ? void 0 : defaultValue[0]) != null ? _a : min;
19106
19366
  const defaultEnd = (_b = defaultValue == null ? void 0 : defaultValue[1]) != null ? _b : max;
19107
- const [internalValue, setInternalValue] = React59.useState([
19367
+ const [internalValue, setInternalValue] = React61.useState([
19108
19368
  defaultStart,
19109
19369
  defaultEnd
19110
19370
  ]);
@@ -19118,10 +19378,10 @@ var RangeSliderComponent = React59.forwardRef(
19118
19378
  const endValue = snap(coerce(resolvedValue[1]));
19119
19379
  const startPercent = toPercent(startValue);
19120
19380
  const endPercent = toPercent(endValue);
19121
- const [topThumb, setTopThumb] = React59.useState("end");
19122
- const trackRef = React59.useRef(null);
19381
+ const [topThumb, setTopThumb] = React61.useState("end");
19382
+ const trackRef = React61.useRef(null);
19123
19383
  const minGap = step > 0 ? step : (max - min) / 1e3;
19124
- const handleStartChange = React59.useCallback(
19384
+ const handleStartChange = React61.useCallback(
19125
19385
  (newStart) => {
19126
19386
  setTopThumb("start");
19127
19387
  const clamped = Math.min(newStart, endValue - minGap);
@@ -19133,7 +19393,7 @@ var RangeSliderComponent = React59.forwardRef(
19133
19393
  },
19134
19394
  [controlledValue, coerce, endValue, minGap, onValueChange, snap]
19135
19395
  );
19136
- const handleEndChange = React59.useCallback(
19396
+ const handleEndChange = React61.useCallback(
19137
19397
  (newEnd) => {
19138
19398
  setTopThumb("end");
19139
19399
  const clamped = Math.max(newEnd, startValue + minGap);
@@ -19145,15 +19405,15 @@ var RangeSliderComponent = React59.forwardRef(
19145
19405
  },
19146
19406
  [controlledValue, coerce, minGap, onValueChange, snap, startValue]
19147
19407
  );
19148
- const handleStartChangeEnd = React59.useCallback(
19408
+ const handleStartChangeEnd = React61.useCallback(
19149
19409
  (v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([v, endValue]),
19150
19410
  [endValue, onValueChangeEnd]
19151
19411
  );
19152
- const handleEndChangeEnd = React59.useCallback(
19412
+ const handleEndChangeEnd = React61.useCallback(
19153
19413
  (v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([startValue, v]),
19154
19414
  [onValueChangeEnd, startValue]
19155
19415
  );
19156
- const handleTrackPointerDown = React59.useCallback(
19416
+ const handleTrackPointerDown = React61.useCallback(
19157
19417
  (e) => {
19158
19418
  if (disabled) return;
19159
19419
  const trackEl = trackRef.current;
@@ -19197,7 +19457,7 @@ var RangeSliderComponent = React59.forwardRef(
19197
19457
  trackSize
19198
19458
  ]
19199
19459
  );
19200
- const id = React59.useId();
19460
+ const id = React61.useId();
19201
19461
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
19202
19462
  "div",
19203
19463
  {
@@ -19277,7 +19537,7 @@ var RangeSliderComponent = React59.forwardRef(
19277
19537
  }
19278
19538
  );
19279
19539
  RangeSliderComponent.displayName = "RangeSlider";
19280
- var RangeSlider = React59.memo(RangeSliderComponent);
19540
+ var RangeSlider = React61.memo(RangeSliderComponent);
19281
19541
  function getHorizontalRadius(isLeading, innerR, outerR) {
19282
19542
  if (isLeading) {
19283
19543
  return {
@@ -19316,7 +19576,7 @@ var allInnerRadius = (innerR) => ({
19316
19576
  borderTopRightRadius: innerR,
19317
19577
  borderBottomRightRadius: innerR
19318
19578
  });
19319
- var InsetIcon = React59.memo(function InsetIcon2({
19579
+ var InsetIcon = React61.memo(function InsetIcon2({
19320
19580
  icon,
19321
19581
  isOnActiveSegment,
19322
19582
  position,
@@ -19410,7 +19670,7 @@ function Ticks({
19410
19670
  return /* @__PURE__ */ jsx("div", { style, "aria-hidden": "true" }, tick);
19411
19671
  }) });
19412
19672
  }
19413
- var SliderTrack = React59.memo(function SliderTrack2({
19673
+ var SliderTrack = React61.memo(function SliderTrack2({
19414
19674
  percent,
19415
19675
  trackSize,
19416
19676
  orientation,
@@ -19445,8 +19705,8 @@ var SliderTrack = React59.memo(function SliderTrack2({
19445
19705
  const gapWithThumbStr = `${thumbGap + thumbHalfWidth}px`;
19446
19706
  const hasAnyInsetIcon = Boolean(insetIcon || insetIconTrailing);
19447
19707
  const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
19448
- const [trackWidth, setTrackWidth] = React59.useState(0);
19449
- React59.useLayoutEffect(() => {
19708
+ const [trackWidth, setTrackWidth] = React61.useState(0);
19709
+ React61.useLayoutEffect(() => {
19450
19710
  const el = trackRef.current;
19451
19711
  if (!el || !hasAnyInsetIcon) return;
19452
19712
  setTrackWidth(isHorizontal ? el.clientWidth : el.clientHeight);
@@ -19463,8 +19723,8 @@ var SliderTrack = React59.memo(function SliderTrack2({
19463
19723
  const iconTotalWidth = activeIconSize + SliderTokens.insetIconPadding * 2 + thumbGap + thumbHalfWidth;
19464
19724
  const iconThreshold = trackWidth > 0 ? iconTotalWidth / trackWidth : 0.15;
19465
19725
  const HYSTERESIS_GAP = 0.04;
19466
- const trailingActiveRef = React59.useRef(1 - percent <= iconThreshold);
19467
- const leadingActiveRef = React59.useRef(percent > iconThreshold);
19726
+ const trailingActiveRef = React61.useRef(1 - percent <= iconThreshold);
19727
+ const leadingActiveRef = React61.useRef(percent > iconThreshold);
19468
19728
  const trailingPercent = 1 - percent;
19469
19729
  if (trailingActiveRef.current) {
19470
19730
  if (trailingPercent > iconThreshold + HYSTERESIS_GAP) {
@@ -19971,7 +20231,7 @@ var SliderTrack = React59.memo(function SliderTrack2({
19971
20231
  }
19972
20232
  );
19973
20233
  });
19974
- var SliderComponent = React59.forwardRef(
20234
+ var SliderComponent = React61.forwardRef(
19975
20235
  ({
19976
20236
  value: controlledValue,
19977
20237
  defaultValue,
@@ -20000,7 +20260,7 @@ var SliderComponent = React59.forwardRef(
20000
20260
  const isHorizontal = orientation === "horizontal";
20001
20261
  const midpoint = min + (max - min) / 2;
20002
20262
  const initialValue = defaultValue != null ? defaultValue : midpoint;
20003
- const [internalValue, setInternalValue] = React59.useState(initialValue);
20263
+ const [internalValue, setInternalValue] = React61.useState(initialValue);
20004
20264
  const resolvedValue = controlledValue !== void 0 ? controlledValue : internalValue;
20005
20265
  const { coerce, snap, toPercent, ticks } = useSliderMath({
20006
20266
  min,
@@ -20009,8 +20269,8 @@ var SliderComponent = React59.forwardRef(
20009
20269
  });
20010
20270
  const safeValue = snap(coerce(resolvedValue));
20011
20271
  const percent = toPercent(safeValue);
20012
- const trackRef = React59.useRef(null);
20013
- const handleValueChange = React59.useCallback(
20272
+ const trackRef = React61.useRef(null);
20273
+ const handleValueChange = React61.useCallback(
20014
20274
  (newValue) => {
20015
20275
  const clamped = snap(coerce(newValue));
20016
20276
  if (controlledValue === void 0) {
@@ -20020,13 +20280,13 @@ var SliderComponent = React59.forwardRef(
20020
20280
  },
20021
20281
  [coerce, controlledValue, onValueChange, snap]
20022
20282
  );
20023
- const handleValueChangeEnd = React59.useCallback(
20283
+ const handleValueChangeEnd = React61.useCallback(
20024
20284
  (newValue) => {
20025
20285
  onValueChangeEnd == null ? void 0 : onValueChangeEnd(snap(coerce(newValue)));
20026
20286
  },
20027
20287
  [coerce, onValueChangeEnd, snap]
20028
20288
  );
20029
- const handleTrackPointerDown = React59.useCallback(
20289
+ const handleTrackPointerDown = React61.useCallback(
20030
20290
  (e) => {
20031
20291
  if (disabled) return;
20032
20292
  const trackEl = trackRef.current;
@@ -20061,7 +20321,7 @@ var SliderComponent = React59.forwardRef(
20061
20321
  trackSize
20062
20322
  ]
20063
20323
  );
20064
- const id = React59.useId();
20324
+ const id = React61.useId();
20065
20325
  const thumbId = `slider-thumb-${id}`;
20066
20326
  const supportsInsetIcon = !isCentered && SliderTokens.trackSizes[trackSize] >= 40;
20067
20327
  const hasAnyInsetIcon = !!(insetIcon || insetIconTrailing);
@@ -20133,7 +20393,7 @@ var SliderComponent = React59.forwardRef(
20133
20393
  }
20134
20394
  );
20135
20395
  SliderComponent.displayName = "Slider";
20136
- var Slider = React59.memo(SliderComponent);
20396
+ var Slider = React61.memo(SliderComponent);
20137
20397
  var DURATION_MAP = {
20138
20398
  short: 4e3,
20139
20399
  long: 7e3
@@ -20175,9 +20435,9 @@ function toSnackbarData(item) {
20175
20435
  return { id: generateId(), visuals: item.visuals, resolve: item.resolve };
20176
20436
  }
20177
20437
  function useSnackbarState() {
20178
- const [current, setCurrent] = React59.useState(null);
20179
- const queueRef = React59.useRef([]);
20180
- const showSnackbar = React59.useCallback(
20438
+ const [current, setCurrent] = React61.useState(null);
20439
+ const queueRef = React61.useRef([]);
20440
+ const showSnackbar = React61.useCallback(
20181
20441
  (visuals) => {
20182
20442
  return new Promise((resolve) => {
20183
20443
  const item = { visuals, resolve };
@@ -20190,14 +20450,14 @@ function useSnackbarState() {
20190
20450
  },
20191
20451
  []
20192
20452
  );
20193
- const _dismiss = React59.useCallback((result) => {
20453
+ const _dismiss = React61.useCallback((result) => {
20194
20454
  setCurrent((prev) => {
20195
20455
  if (prev) prev.resolve(result);
20196
20456
  const next = queueRef.current.shift();
20197
20457
  return next ? toSnackbarData(next) : null;
20198
20458
  });
20199
20459
  }, []);
20200
- React59.useEffect(() => {
20460
+ React61.useEffect(() => {
20201
20461
  return () => {
20202
20462
  for (const item of queueRef.current) {
20203
20463
  item.resolve(RESULT.DISMISSED);
@@ -20207,7 +20467,7 @@ function useSnackbarState() {
20207
20467
  }, []);
20208
20468
  return { current, showSnackbar, _dismiss };
20209
20469
  }
20210
- var Snackbar = React59.memo(function Snackbar2({
20470
+ var Snackbar = React61.memo(function Snackbar2({
20211
20471
  data,
20212
20472
  className
20213
20473
  }) {
@@ -20221,15 +20481,15 @@ var Snackbar = React59.memo(function Snackbar2({
20221
20481
  } = visuals;
20222
20482
  const reducedMotion = useReducedMotion();
20223
20483
  const durationMs = resolveDuration(duration);
20224
- React59.useEffect(() => {
20484
+ React61.useEffect(() => {
20225
20485
  const timer = setTimeout(() => resolve(RESULT.DISMISSED), durationMs);
20226
20486
  return () => clearTimeout(timer);
20227
20487
  }, [resolve, durationMs]);
20228
- const handleAction = React59.useCallback(
20488
+ const handleAction = React61.useCallback(
20229
20489
  () => resolve(RESULT.ACTION),
20230
20490
  [resolve]
20231
20491
  );
20232
- const handleDismiss = React59.useCallback(
20492
+ const handleDismiss = React61.useCallback(
20233
20493
  () => resolve(RESULT.DISMISSED),
20234
20494
  [resolve]
20235
20495
  );
@@ -20297,7 +20557,7 @@ var Snackbar = React59.memo(function Snackbar2({
20297
20557
  Snackbar.displayName = "Snackbar";
20298
20558
  function SnackbarHost({ state, className }) {
20299
20559
  const { current, _dismiss } = state;
20300
- const wrappedData = React59.useMemo(() => {
20560
+ const wrappedData = React61.useMemo(() => {
20301
20561
  if (!current) return null;
20302
20562
  return __spreadProps(__spreadValues({}, current), { resolve: _dismiss });
20303
20563
  }, [current, _dismiss]);
@@ -20315,12 +20575,12 @@ function SnackbarHost({ state, className }) {
20315
20575
  ) });
20316
20576
  }
20317
20577
  SnackbarHost.displayName = "SnackbarHost";
20318
- var SnackbarContext = React59.createContext(
20578
+ var SnackbarContext = React61.createContext(
20319
20579
  null
20320
20580
  );
20321
20581
  function SnackbarProvider({ children }) {
20322
20582
  const state = useSnackbarState();
20323
- const contextValue = React59.useMemo(
20583
+ const contextValue = React61.useMemo(
20324
20584
  () => ({ showSnackbar: state.showSnackbar }),
20325
20585
  [state.showSnackbar]
20326
20586
  );
@@ -20331,15 +20591,15 @@ function SnackbarProvider({ children }) {
20331
20591
  }
20332
20592
  SnackbarProvider.displayName = "SnackbarProvider";
20333
20593
  function useSnackbar() {
20334
- const ctx = React59.useContext(SnackbarContext);
20594
+ const ctx = React61.useContext(SnackbarContext);
20335
20595
  if (!ctx) {
20336
20596
  throw new Error("useSnackbar must be used within a <SnackbarProvider>.");
20337
20597
  }
20338
20598
  return ctx;
20339
20599
  }
20340
- var TabsContext = React59.createContext(null);
20600
+ var TabsContext = React61.createContext(null);
20341
20601
  function useTabsContext() {
20342
- const ctx = React59.useContext(TabsContext);
20602
+ const ctx = React61.useContext(TabsContext);
20343
20603
  if (!ctx) {
20344
20604
  throw new Error(
20345
20605
  "[MD3 Tabs] Component must be used within a <Tabs> root. Ensure <TabsList>, <Tab>, and <TabsContent> are descendants of <Tabs>."
@@ -20347,7 +20607,7 @@ function useTabsContext() {
20347
20607
  }
20348
20608
  return ctx;
20349
20609
  }
20350
- var TabsComponent = React59.forwardRef(
20610
+ var TabsComponent = React61.forwardRef(
20351
20611
  ({
20352
20612
  value: controlledValue,
20353
20613
  defaultValue = "",
@@ -20356,35 +20616,35 @@ var TabsComponent = React59.forwardRef(
20356
20616
  children,
20357
20617
  className
20358
20618
  }, ref) => {
20359
- const [internalValue, setInternalValue] = React59.useState(defaultValue);
20619
+ const [internalValue, setInternalValue] = React61.useState(defaultValue);
20360
20620
  const isControlled = controlledValue !== void 0;
20361
20621
  const value = isControlled ? controlledValue : internalValue;
20362
- const handleValueChange = React59.useCallback(
20622
+ const handleValueChange = React61.useCallback(
20363
20623
  (newValue) => {
20364
20624
  if (!isControlled) setInternalValue(newValue);
20365
20625
  onValueChange == null ? void 0 : onValueChange(newValue);
20366
20626
  },
20367
20627
  [isControlled, onValueChange]
20368
20628
  );
20369
- const [focusedValue, setFocusedValue] = React59.useState(value);
20370
- React59.useEffect(() => {
20629
+ const [focusedValue, setFocusedValue] = React61.useState(value);
20630
+ React61.useEffect(() => {
20371
20631
  setFocusedValue(value);
20372
20632
  }, [value]);
20373
- const [tabValues, setTabValues] = React59.useState([]);
20374
- const registerTab = React59.useCallback((tabValue) => {
20633
+ const [tabValues, setTabValues] = React61.useState([]);
20634
+ const registerTab = React61.useCallback((tabValue) => {
20375
20635
  setTabValues((prev) => {
20376
20636
  if (prev.includes(tabValue)) return prev;
20377
20637
  return [...prev, tabValue];
20378
20638
  });
20379
20639
  }, []);
20380
- const unregisterTab = React59.useCallback((tabValue) => {
20640
+ const unregisterTab = React61.useCallback((tabValue) => {
20381
20641
  setTabValues((prev) => prev.filter((v) => v !== tabValue));
20382
20642
  }, []);
20383
- const hasAutoSelected = React59.useRef(false);
20384
- const [disabledValues, setDisabledValues] = React59.useState(
20643
+ const hasAutoSelected = React61.useRef(false);
20644
+ const [disabledValues, setDisabledValues] = React61.useState(
20385
20645
  /* @__PURE__ */ new Set()
20386
20646
  );
20387
- const markTabDisabled = React59.useCallback(
20647
+ const markTabDisabled = React61.useCallback(
20388
20648
  (tabValue, disabled) => {
20389
20649
  setDisabledValues((prev) => {
20390
20650
  const next = new Set(prev);
@@ -20398,7 +20658,7 @@ var TabsComponent = React59.forwardRef(
20398
20658
  },
20399
20659
  []
20400
20660
  );
20401
- React59.useEffect(() => {
20661
+ React61.useEffect(() => {
20402
20662
  if (isControlled || hasAutoSelected.current || tabValues.length === 0) {
20403
20663
  return;
20404
20664
  }
@@ -20413,9 +20673,9 @@ var TabsComponent = React59.forwardRef(
20413
20673
  setFocusedValue(firstEnabled);
20414
20674
  }
20415
20675
  }, [tabValues, disabledValues, isControlled, value]);
20416
- const id = React59.useId();
20676
+ const id = React61.useId();
20417
20677
  const layoutGroupId = `tabs-${id}`;
20418
- const contextValue = React59.useMemo(
20678
+ const contextValue = React61.useMemo(
20419
20679
  () => ({
20420
20680
  value,
20421
20681
  onValueChange: handleValueChange,
@@ -20446,12 +20706,12 @@ var TabsComponent = React59.forwardRef(
20446
20706
  }
20447
20707
  );
20448
20708
  TabsComponent.displayName = "Tabs";
20449
- var Tabs = React59.memo(TabsComponent);
20450
- var TabsListContext = React59.createContext(
20709
+ var Tabs = React61.memo(TabsComponent);
20710
+ var TabsListContext = React61.createContext(
20451
20711
  null
20452
20712
  );
20453
20713
  function useTabsListContext() {
20454
- const ctx = React59.useContext(TabsListContext);
20714
+ const ctx = React61.useContext(TabsListContext);
20455
20715
  return ctx != null ? ctx : { variant: "primary", scrollable: false };
20456
20716
  }
20457
20717
 
@@ -20535,7 +20795,7 @@ var TABS_CONTENT_TRANSITION = {
20535
20795
  ease: "easeInOut"
20536
20796
  };
20537
20797
  var INDICATOR_MIN_WIDTH = 24;
20538
- var TabComponent = React59.forwardRef(
20798
+ var TabComponent = React61.forwardRef(
20539
20799
  ({
20540
20800
  value,
20541
20801
  icon,
@@ -20565,9 +20825,9 @@ var TabComponent = React59.forwardRef(
20565
20825
  const isFocused = focusedValue === value;
20566
20826
  const hasIcon = icon != null;
20567
20827
  const isStackedIcon = hasIcon && !inlineIcon;
20568
- const buttonRef = React59.useRef(null);
20569
- const isFirstMount = React59.useRef(true);
20570
- const mergedRef = React59.useCallback(
20828
+ const buttonRef = React61.useRef(null);
20829
+ const isFirstMount = React61.useRef(true);
20830
+ const mergedRef = React61.useCallback(
20571
20831
  (node) => {
20572
20832
  buttonRef.current = node;
20573
20833
  if (typeof ref === "function") ref(node);
@@ -20575,15 +20835,15 @@ var TabComponent = React59.forwardRef(
20575
20835
  },
20576
20836
  [ref]
20577
20837
  );
20578
- React59.useEffect(() => {
20838
+ React61.useEffect(() => {
20579
20839
  registerTab(value);
20580
20840
  return () => unregisterTab(value);
20581
20841
  }, [value, registerTab, unregisterTab]);
20582
- React59.useEffect(() => {
20842
+ React61.useEffect(() => {
20583
20843
  markTabDisabled(value, disabled);
20584
20844
  return () => markTabDisabled(value, false);
20585
20845
  }, [value, disabled, markTabDisabled]);
20586
- const handleKeyDown = React59.useCallback(
20846
+ const handleKeyDown = React61.useCallback(
20587
20847
  (e) => {
20588
20848
  const isRtl = buttonRef.current ? getComputedStyle(buttonRef.current).direction === "rtl" : false;
20589
20849
  const enabledValues = tabValues.filter((v) => !disabledValues.has(v));
@@ -20637,7 +20897,7 @@ var TabComponent = React59.forwardRef(
20637
20897
  autoActivate
20638
20898
  ]
20639
20899
  );
20640
- React59.useEffect(() => {
20900
+ React61.useEffect(() => {
20641
20901
  if (isFirstMount.current) {
20642
20902
  isFirstMount.current = false;
20643
20903
  return;
@@ -20646,7 +20906,7 @@ var TabComponent = React59.forwardRef(
20646
20906
  buttonRef.current.focus({ preventScroll: true });
20647
20907
  }
20648
20908
  }, [isFocused]);
20649
- React59.useEffect(() => {
20909
+ React61.useEffect(() => {
20650
20910
  if (!isActive || !scrollable || !buttonRef.current) return;
20651
20911
  const btn = buttonRef.current;
20652
20912
  let container = btn.parentElement;
@@ -20783,8 +21043,8 @@ var TabComponent = React59.forwardRef(
20783
21043
  }
20784
21044
  );
20785
21045
  TabComponent.displayName = "Tab";
20786
- var Tab = React59.memo(TabComponent);
20787
- var TabsContentComponent = React59.forwardRef(
21046
+ var Tab = React61.memo(TabComponent);
21047
+ var TabsContentComponent = React61.forwardRef(
20788
21048
  ({ value, className, children }, ref) => {
20789
21049
  var _a;
20790
21050
  const { value: selectedValue, layoutGroupId } = useTabsContext();
@@ -20818,8 +21078,8 @@ var TabsContentComponent = React59.forwardRef(
20818
21078
  }
20819
21079
  );
20820
21080
  TabsContentComponent.displayName = "TabsContent";
20821
- var TabsContent = React59.memo(TabsContentComponent);
20822
- var TabsListComponent = React59.forwardRef(
21081
+ var TabsContent = React61.memo(TabsContentComponent);
21082
+ var TabsListComponent = React61.forwardRef(
20823
21083
  ({
20824
21084
  variant,
20825
21085
  scrollable = false,
@@ -20830,12 +21090,12 @@ var TabsListComponent = React59.forwardRef(
20830
21090
  }, ref) => {
20831
21091
  const { layoutGroupId, value, setFocusedValue } = useTabsContext();
20832
21092
  const listLayoutId = `${layoutGroupId}-list`;
20833
- const listContextValue = React59.useMemo(
21093
+ const listContextValue = React61.useMemo(
20834
21094
  () => ({ variant, scrollable }),
20835
21095
  [variant, scrollable]
20836
21096
  );
20837
21097
  const bgColor = backgroundColor != null ? backgroundColor : "var(--md-sys-color-surface)";
20838
- const handleBlur = React59.useCallback(
21098
+ const handleBlur = React61.useCallback(
20839
21099
  (e) => {
20840
21100
  const listEl = e.currentTarget;
20841
21101
  if (listEl.contains(e.relatedTarget)) return;
@@ -20884,7 +21144,7 @@ var TabsListComponent = React59.forwardRef(
20884
21144
  }
20885
21145
  );
20886
21146
  TabsListComponent.displayName = "TabsList";
20887
- var TabsList = React59.memo(TabsListComponent);
21147
+ var TabsList = React61.memo(TabsListComponent);
20888
21148
  var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
20889
21149
  variants: {
20890
21150
  variant: {
@@ -20942,10 +21202,10 @@ var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
20942
21202
  variant: "body-md"
20943
21203
  }
20944
21204
  });
20945
- var Text = React59.forwardRef(
21205
+ var Text = React61.forwardRef(
20946
21206
  (_a, ref) => {
20947
21207
  var _b = _a, { className, variant, as: Component, color, weight, style } = _b, props = __objRest(_b, ["className", "variant", "as", "color", "weight", "style"]);
20948
- const defaultComponent = React59.useMemo(() => {
21208
+ const defaultComponent = React61.useMemo(() => {
20949
21209
  const v = variant ? String(variant).toLowerCase() : "";
20950
21210
  if (v.startsWith("display") || v.startsWith("headline")) return "h1";
20951
21211
  if (v.startsWith("title")) return "h2";
@@ -20964,11 +21224,11 @@ var Text = React59.forwardRef(
20964
21224
  }
20965
21225
  );
20966
21226
  Text.displayName = "Text";
20967
- var ToolbarContext = React59.createContext(
21227
+ var ToolbarContext = React61.createContext(
20968
21228
  null
20969
21229
  );
20970
21230
  function useToolbarContext() {
20971
- return React59.useContext(ToolbarContext);
21231
+ return React61.useContext(ToolbarContext);
20972
21232
  }
20973
21233
 
20974
21234
  // src/ui/text-field/text-field.tokens.ts
@@ -21008,7 +21268,7 @@ var TF_TYPOGRAPHY = {
21008
21268
  var TF_CLASSES = {
21009
21269
  // Prefix / Suffix
21010
21270
  prefixSuffix: "text-base text-[var(--md-sys-color-on-surface-variant)] select-none shrink-0"};
21011
- var ActiveIndicator = React59.memo(function ActiveIndicator2({
21271
+ var ActiveIndicator = React61.memo(function ActiveIndicator2({
21012
21272
  isFocused,
21013
21273
  isError,
21014
21274
  isDisabled,
@@ -21055,7 +21315,7 @@ function getLabelColor(isFloated, isFocused, isError, isDisabled) {
21055
21315
  if (isFloated && isFocused) return TF_COLORS.primary;
21056
21316
  return TF_COLORS.onSurfaceVariant;
21057
21317
  }
21058
- var FloatingLabel = React59.memo(function FloatingLabel2({
21318
+ var FloatingLabel = React61.memo(function FloatingLabel2({
21059
21319
  text,
21060
21320
  isFloated,
21061
21321
  isFocused,
@@ -21114,7 +21374,7 @@ var FloatingLabel = React59.memo(function FloatingLabel2({
21114
21374
  );
21115
21375
  });
21116
21376
  FloatingLabel.displayName = "FloatingLabel";
21117
- var LeadingIcon = React59.memo(function LeadingIcon2({
21377
+ var LeadingIcon = React61.memo(function LeadingIcon2({
21118
21378
  children,
21119
21379
  isError,
21120
21380
  isDisabled
@@ -21138,7 +21398,7 @@ function getOutlineColor(isFocused, isError, isHovered, isDisabled) {
21138
21398
  if (isHovered) return TF_COLORS.inputText;
21139
21399
  return TF_COLORS.outline;
21140
21400
  }
21141
- var OutlineContainer = React59.memo(function OutlineContainer2({
21401
+ var OutlineContainer = React61.memo(function OutlineContainer2({
21142
21402
  isFloated,
21143
21403
  isFocused,
21144
21404
  isError,
@@ -21237,7 +21497,7 @@ var OutlineContainer = React59.memo(function OutlineContainer2({
21237
21497
  );
21238
21498
  });
21239
21499
  OutlineContainer.displayName = "OutlineContainer";
21240
- var PrefixSuffix = React59.memo(function PrefixSuffix2({
21500
+ var PrefixSuffix = React61.memo(function PrefixSuffix2({
21241
21501
  text,
21242
21502
  type,
21243
21503
  visible,
@@ -21279,7 +21539,7 @@ function AnimatedText({
21279
21539
  motionKey
21280
21540
  );
21281
21541
  }
21282
- var SupportingText = React59.memo(function SupportingText2({
21542
+ var SupportingText = React61.memo(function SupportingText2({
21283
21543
  supportingText,
21284
21544
  errorText,
21285
21545
  isError,
@@ -21390,7 +21650,7 @@ function ClearIcon() {
21390
21650
  }
21391
21651
  );
21392
21652
  }
21393
- var TrailingIcon = React59.memo(function TrailingIcon2({
21653
+ var TrailingIcon = React61.memo(function TrailingIcon2({
21394
21654
  mode,
21395
21655
  children,
21396
21656
  value,
@@ -21456,7 +21716,7 @@ var TrailingIcon = React59.memo(function TrailingIcon2({
21456
21716
  });
21457
21717
  TrailingIcon.displayName = "TrailingIcon";
21458
21718
  var LINE_HEIGHT_PX = 24;
21459
- var TextFieldComponent = React59.forwardRef(
21719
+ var TextFieldComponent = React61.forwardRef(
21460
21720
  ({
21461
21721
  // Core
21462
21722
  variant = "filled",
@@ -21524,30 +21784,30 @@ var TextFieldComponent = React59.forwardRef(
21524
21784
  const isInToolbar = !!toolbarContext;
21525
21785
  const resolvedDense = isInToolbar ? true : dense;
21526
21786
  const resolvedLabel = isInToolbar ? void 0 : label;
21527
- const generatedId = React59.useId();
21787
+ const generatedId = React61.useId();
21528
21788
  const inputId = idProp != null ? idProp : `tf-${generatedId}`;
21529
21789
  const supportingId = `${inputId}-supporting`;
21530
21790
  const isControlled = valueProp !== void 0;
21531
- const [internalValue, setInternalValue] = React59.useState(defaultValue);
21791
+ const [internalValue, setInternalValue] = React61.useState(defaultValue);
21532
21792
  const currentValue = isControlled ? valueProp : internalValue;
21533
- const [isFocused, setIsFocused] = React59.useState(false);
21534
- const [showPassword, setShowPassword] = React59.useState(false);
21793
+ const [isFocused, setIsFocused] = React61.useState(false);
21794
+ const [showPassword, setShowPassword] = React61.useState(false);
21535
21795
  const resolvedInputType = type === "password" && showPassword ? "text" : type;
21536
- const [nativeError, setNativeError] = React59.useState("");
21537
- const [labelWidth, setLabelWidth] = React59.useState(0);
21796
+ const [nativeError, setNativeError] = React61.useState("");
21797
+ const [labelWidth, setLabelWidth] = React61.useState(0);
21538
21798
  const hasValue = currentValue.length > 0;
21539
21799
  const isFloated = isFocused || hasValue;
21540
21800
  const isError = errorProp || !!nativeError || maxLength !== void 0 && currentValue.length > maxLength;
21541
21801
  const containerHeight = resolvedDense ? TF_SIZE.denseHeight : TF_SIZE.height;
21542
21802
  const showAsterisk = required && !noAsterisk;
21543
- const inputRef = React59.useRef(null);
21544
- const labelSpanRef = React59.useRef(null);
21545
- React59.useLayoutEffect(() => {
21803
+ const inputRef = React61.useRef(null);
21804
+ const labelSpanRef = React61.useRef(null);
21805
+ React61.useLayoutEffect(() => {
21546
21806
  if (labelSpanRef.current) {
21547
21807
  setLabelWidth(labelSpanRef.current.offsetWidth);
21548
21808
  }
21549
21809
  }, []);
21550
- React59.useLayoutEffect(() => {
21810
+ React61.useLayoutEffect(() => {
21551
21811
  if (type !== "textarea" || !inputRef.current) return;
21552
21812
  const textarea = inputRef.current;
21553
21813
  if (autoResize) {
@@ -21559,7 +21819,7 @@ var TextFieldComponent = React59.forwardRef(
21559
21819
  }
21560
21820
  textarea.style.overflowY = "hidden";
21561
21821
  }, [type, autoResize, maxRows, currentValue]);
21562
- const handleValueChange = React59.useCallback(
21822
+ const handleValueChange = React61.useCallback(
21563
21823
  (newValue) => {
21564
21824
  var _a2, _b;
21565
21825
  if (!isControlled) setInternalValue(newValue);
@@ -21568,7 +21828,7 @@ var TextFieldComponent = React59.forwardRef(
21568
21828
  },
21569
21829
  [isControlled]
21570
21830
  );
21571
- const handleChange = React59.useCallback(
21831
+ const handleChange = React61.useCallback(
21572
21832
  (e) => {
21573
21833
  const newVal = e.target.value;
21574
21834
  handleValueChange(newVal);
@@ -21576,14 +21836,14 @@ var TextFieldComponent = React59.forwardRef(
21576
21836
  },
21577
21837
  [handleValueChange, onChange]
21578
21838
  );
21579
- const handleFocus = React59.useCallback(
21839
+ const handleFocus = React61.useCallback(
21580
21840
  (e) => {
21581
21841
  setIsFocused(true);
21582
21842
  onFocus == null ? void 0 : onFocus(e);
21583
21843
  },
21584
21844
  [onFocus]
21585
21845
  );
21586
- const handleBlur = React59.useCallback(
21846
+ const handleBlur = React61.useCallback(
21587
21847
  (e) => {
21588
21848
  setIsFocused(false);
21589
21849
  const el = inputRef.current;
@@ -21596,7 +21856,7 @@ var TextFieldComponent = React59.forwardRef(
21596
21856
  },
21597
21857
  [onBlur]
21598
21858
  );
21599
- const handleClear = React59.useCallback(() => {
21859
+ const handleClear = React61.useCallback(() => {
21600
21860
  var _a2;
21601
21861
  handleValueChange("");
21602
21862
  onChange == null ? void 0 : onChange("", {
@@ -21604,12 +21864,12 @@ var TextFieldComponent = React59.forwardRef(
21604
21864
  });
21605
21865
  (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
21606
21866
  }, [handleValueChange, onChange]);
21607
- const handlePasswordToggle = React59.useCallback(() => {
21867
+ const handlePasswordToggle = React61.useCallback(() => {
21608
21868
  var _a2;
21609
21869
  setShowPassword((prev) => !prev);
21610
21870
  (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
21611
21871
  }, []);
21612
- React59.useImperativeHandle(
21872
+ React61.useImperativeHandle(
21613
21873
  ref,
21614
21874
  () => ({
21615
21875
  focus: () => {
@@ -21855,7 +22115,7 @@ var TextFieldComponent = React59.forwardRef(
21855
22115
  }
21856
22116
  );
21857
22117
  TextFieldComponent.displayName = "TextField";
21858
- var TextField = React59.memo(TextFieldComponent);
22118
+ var TextField = React61.memo(TextFieldComponent);
21859
22119
 
21860
22120
  // src/ui/typography/typography-key-tokens.ts
21861
22121
  var TypographyKeyTokens = /* @__PURE__ */ ((TypographyKeyTokens2) => {
@@ -22817,7 +23077,7 @@ function getToolbarColors(variant = "standard", customColors) {
22817
23077
  return standardFloatingToolbarColors;
22818
23078
  }
22819
23079
  }
22820
- var BottomDockedToolbar = React59.forwardRef(
23080
+ var BottomDockedToolbar = React61.forwardRef(
22821
23081
  (_a, ref) => {
22822
23082
  var _b = _a, {
22823
23083
  variant = "standard",
@@ -22850,8 +23110,8 @@ var BottomDockedToolbar = React59.forwardRef(
22850
23110
  const { scrollY } = useScroll(
22851
23111
  scrollContainerRef ? { container: scrollContainerRef } : void 0
22852
23112
  );
22853
- const [isHidden, setIsHidden] = React59.useState(false);
22854
- const lastScrollY = React59.useRef(0);
23113
+ const [isHidden, setIsHidden] = React61.useState(false);
23114
+ const lastScrollY = React61.useRef(0);
22855
23115
  useMotionValueEvent(scrollY, "change", (latest) => {
22856
23116
  if (!hideOnScroll) return;
22857
23117
  const diff = latest - lastScrollY.current;
@@ -23000,15 +23260,15 @@ function buildSlotVariants(xHidden, yHidden, isHorizontal) {
23000
23260
  };
23001
23261
  }
23002
23262
  function applyItemClassName(nodes, itemClassName) {
23003
- return React59.Children.map(nodes, (child) => {
23004
- if (!React59.isValidElement(child)) return child;
23263
+ return React61.Children.map(nodes, (child) => {
23264
+ if (!React61.isValidElement(child)) return child;
23005
23265
  const element = child;
23006
- return React59.cloneElement(element, {
23266
+ return React61.cloneElement(element, {
23007
23267
  className: cn(element.props.className, itemClassName)
23008
23268
  });
23009
23269
  });
23010
23270
  }
23011
- var FloatingToolbarBase = React59.forwardRef(
23271
+ var FloatingToolbarBase = React61.forwardRef(
23012
23272
  (_a, ref) => {
23013
23273
  var _b = _a, {
23014
23274
  expanded,
@@ -23120,7 +23380,9 @@ var FloatingToolbarBase = React59.forwardRef(
23120
23380
  isHorizontal ? "flex-row h-full" : "flex-col w-full",
23121
23381
  isStringPadding ? contentPadding : isHorizontal ? "px-2" : "py-2"
23122
23382
  ),
23123
- style: __spreadValues({ gap: itemGap }, isStringPadding ? {} : contentPadding),
23383
+ style: __spreadValues({
23384
+ gap: itemGap
23385
+ }, isStringPadding ? {} : contentPadding),
23124
23386
  children: [
23125
23387
  /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: expanded && startContent && /* @__PURE__ */ jsx(
23126
23388
  m.div,
@@ -23178,11 +23440,11 @@ var FloatingToolbarBase = React59.forwardRef(
23178
23440
  }
23179
23441
  );
23180
23442
  FloatingToolbarBase.displayName = "FloatingToolbarBase";
23181
- var HorizontalFloatingToolbar = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
23443
+ var HorizontalFloatingToolbar = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
23182
23444
  HorizontalFloatingToolbar.displayName = "HorizontalFloatingToolbar";
23183
- var VerticalFloatingToolbar = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "vertical" }, props)));
23445
+ var VerticalFloatingToolbar = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarBase, __spreadValues({ ref, orientation: "vertical" }, props)));
23184
23446
  VerticalFloatingToolbar.displayName = "VerticalFloatingToolbar";
23185
- var FloatingToolbarWithFabBase = React59.forwardRef(
23447
+ var FloatingToolbarWithFabBase = React61.forwardRef(
23186
23448
  (_a, ref) => {
23187
23449
  var _b = _a, {
23188
23450
  expanded,
@@ -23310,9 +23572,9 @@ var FloatingToolbarWithFabBase = React59.forwardRef(
23310
23572
  }
23311
23573
  );
23312
23574
  FloatingToolbarWithFabBase.displayName = "FloatingToolbarWithFabBase";
23313
- var HorizontalFloatingToolbarWithFab = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
23575
+ var HorizontalFloatingToolbarWithFab = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "horizontal" }, props)));
23314
23576
  HorizontalFloatingToolbarWithFab.displayName = "HorizontalFloatingToolbarWithFab";
23315
- var VerticalFloatingToolbarWithFab = React59.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "vertical" }, props)));
23577
+ var VerticalFloatingToolbarWithFab = React61.forwardRef((props, ref) => /* @__PURE__ */ jsx(FloatingToolbarWithFabBase, __spreadValues({ ref, orientation: "vertical" }, props)));
23316
23578
  VerticalFloatingToolbarWithFab.displayName = "VerticalFloatingToolbarWithFab";
23317
23579
  var ToolbarDivider = ({
23318
23580
  orientation: propsOrientation,
@@ -23348,7 +23610,7 @@ var VARIANT_TO_COLOR_STYLE = {
23348
23610
  tonal: "tonal",
23349
23611
  filled: "filled"
23350
23612
  };
23351
- var ToolbarIconButton = React59.forwardRef(
23613
+ var ToolbarIconButton = React61.forwardRef(
23352
23614
  (_a, ref) => {
23353
23615
  var _b = _a, {
23354
23616
  emphasis = "standard",
@@ -23484,7 +23746,7 @@ var MOTION_PROP_KEYS2 = [
23484
23746
  "layoutId",
23485
23747
  "onLayoutAnimationComplete"
23486
23748
  ];
23487
- var ToolbarToggleButton = React59.forwardRef(
23749
+ var ToolbarToggleButton = React61.forwardRef(
23488
23750
  (_a, ref) => {
23489
23751
  var _b = _a, {
23490
23752
  emphasis = "standard",
@@ -23521,7 +23783,7 @@ var ToolbarToggleButton = React59.forwardRef(
23521
23783
  } = useRippleState({
23522
23784
  disabled: Boolean(disabled) || !ripple
23523
23785
  });
23524
- const handlePointerDown = React59.useCallback(
23786
+ const handlePointerDown = React61.useCallback(
23525
23787
  (e) => {
23526
23788
  if (!disabled && ripple) {
23527
23789
  handleRipplePointerDown(e);
@@ -23542,7 +23804,7 @@ var ToolbarToggleButton = React59.forwardRef(
23542
23804
  context == null ? void 0 : context.itemClassName,
23543
23805
  className
23544
23806
  );
23545
- const whileTapConfig = React59.useMemo(
23807
+ const whileTapConfig = React61.useMemo(
23546
23808
  () => ({
23547
23809
  scale: pressScale,
23548
23810
  x: pressBounceOffset ? [
@@ -23556,7 +23818,7 @@ var ToolbarToggleButton = React59.forwardRef(
23556
23818
  }),
23557
23819
  [pressScale, pressBounceOffset]
23558
23820
  );
23559
- const transitionConfig = React59.useMemo(
23821
+ const transitionConfig = React61.useMemo(
23560
23822
  () => ({
23561
23823
  scale: FAST_SPATIAL_SPRING,
23562
23824
  x: {
@@ -23581,7 +23843,7 @@ var ToolbarToggleButton = React59.forwardRef(
23581
23843
  children && (typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsx("span", { children }) : children)
23582
23844
  ] });
23583
23845
  if (asChild) {
23584
- const child = React59.Children.only(children);
23846
+ const child = React61.Children.only(children);
23585
23847
  const childContent = child.props.children;
23586
23848
  const innerChildContent = /* @__PURE__ */ jsxs(Fragment, { children: [
23587
23849
  ripple && /* @__PURE__ */ jsx(
@@ -23618,7 +23880,7 @@ var ToolbarToggleButton = React59.forwardRef(
23618
23880
  className: combinedClassName,
23619
23881
  onPointerDown: handlePointerDown
23620
23882
  }, strippedProps), {
23621
- children: React59.cloneElement(child, { children: innerChildContent })
23883
+ children: React61.cloneElement(child, { children: innerChildContent })
23622
23884
  })
23623
23885
  ) });
23624
23886
  }
@@ -24222,7 +24484,7 @@ function TooltipBox({
24222
24484
  onKeyDown: handleKeyDown,
24223
24485
  "aria-label": ariaLabel,
24224
24486
  "aria-describedby": state.isVisible ? tooltipId : void 0,
24225
- children: React59.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
24487
+ children: React61.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
24226
24488
  }
24227
24489
  ),
24228
24490
  mounted && createPortal(
@@ -24252,6 +24514,6 @@ function TooltipBox({
24252
24514
  ] });
24253
24515
  }
24254
24516
 
24255
- export { ANGLE_EPSILON, APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, BUTTON_COLOR_TOKENS, BUTTON_SIZE_TOKENS, Badge, BadgedBox, BottomAppBar, BottomDockedToolbar, BottomSheet, BottomSheetModal, Button, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, Cubic, DISTANCE_EPSILON, DIVIDER_COLOR, DIVIDER_PADDING, DP_CLASSES, DP_COLORS, DP_SHAPE, DP_SIZE, DatePicker, DatePickerDialog, DatePickerInput, DateRangePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, DragHandle, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, ElevatedSplitButtonLeading, ElevatedSplitButtonTrailing, ElevatedSplitButtonTrailingUncheckable, ExtendedFAB, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, FLOAT_PI, FilledSplitButtonLeading, FilledSplitButtonTrailing, FilledSplitButtonTrailingUncheckable, GROUP_SHAPES, HorizontalFloatingToolbar, HorizontalFloatingToolbarWithFab, ITEM_SHAPE_CLASSES, Icon, IconButton, LIST_TOKENS, LargeFlexibleAppBar, List, ListContext, ListDivider, ListItem, LoadingIndicator, MD3CornerRadius, MD3Shapes, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MeasuredPolygon, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, Morph, MutableCubic, NavigationBar, NavigationBarItem, NavigationRail, NavigationRailItem, OutlinedSplitButtonLeading, OutlinedSplitButtonTrailing, OutlinedSplitButtonTrailingUncheckable, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, RoundedPolygon, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, Scrim, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, ShapeIcon, ShapeMedia, ShapeMediaServer, ShapeSvg, SideSheet, SideSheetModal, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SplitButtonLayout, SplitButtonLeading, SplitButtonTrailing, SplitButtonTrailingUncheckable, SubMenu, Switch, SwitchColors, SwitchTokens, TP_CLASSES, TP_COLORS, TP_SHAPE, TP_SIZE, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, TimeInput, TimePicker, TimePickerDialog, ToggleFAB, TonalSplitButtonLeading, TonalSplitButtonTrailing, TonalSplitButtonTrailingUncheckable, ToolbarDivider, ToolbarDividerTokens, ToolbarIconButton, ToolbarIconButtonTokens, ToolbarToggleButton, ToolbarToggleButtonTokens, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, UNROUNDED, VIBRANT_COLORS, VerticalFloatingToolbar, VerticalFloatingToolbarWithFab, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, addPoints, appBarTypography, applyTheme, buildWavePath, circle, clockwise, cn, convex, cornerFeature, cornerRounding, createDoubleMapper, createMd3ExpressiveTheme, directionVector, distance, distanceSquared, dividePoint, dotProduct, edgeFeature, featureMapper, generateM3Theme, getDirection, getDistance, getDistanceSquared, getExpressiveShape, getListItemHeight, getToolbarColors, interpolate, interpolatePath, lerpPoint, pill, pillStar, point, positiveModulo, radialToCartesian, rectangle, resolveMode, rotate90, scalePoint, shouldTopAlign, square, standardFloatingToolbarColors, star, subtractPoints, surfaceContainerHighFloatingToolbarColors, surfaceContainerHighestFloatingToolbarColors, tertiaryContainerFloatingToolbarColors, toClipPath, toSvgPath, transformFeature, transformPoint, useAppBarScroll, useBottomSheet, useRipple as useDOMRipple, useDatePickerState, useDateRangePickerState, useFloatingToolbarScrollBehavior, useListContext, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useShapeMorph, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTimePickerState, useTooltipPosition, useTooltipState, useTypography, vibrantFloatingToolbarColors, xrFloatingToolbarColors };
24517
+ export { ANGLE_EPSILON, APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, BUTTON_COLOR_TOKENS, BUTTON_SIZE_TOKENS, Badge, BadgedBox, BottomAppBar, BottomDockedToolbar, BottomSheet, BottomSheetModal, Button, ButtonDistribute, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, Cubic, DISTANCE_EPSILON, DIVIDER_COLOR, DIVIDER_PADDING, DP_CLASSES, DP_COLORS, DP_SHAPE, DP_SIZE, DatePicker, DatePickerDialog, DatePickerInput, DateRangePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, DragHandle, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, ElevatedSplitButtonLeading, ElevatedSplitButtonTrailing, ElevatedSplitButtonTrailingUncheckable, ExtendedFAB, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, FLOAT_PI, FilledSplitButtonLeading, FilledSplitButtonTrailing, FilledSplitButtonTrailingUncheckable, GROUP_SHAPES, HorizontalFloatingToolbar, HorizontalFloatingToolbarWithFab, ITEM_SHAPE_CLASSES, Icon, IconButton, LIST_TOKENS, LargeFlexibleAppBar, List, ListContext, ListDivider, ListItem, LoadingIndicator, MD3CornerRadius, MD3Shapes, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MeasuredPolygon, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, Morph, MutableCubic, NavigationBar, NavigationBarItem, NavigationRail, NavigationRailItem, OutlinedSplitButtonLeading, OutlinedSplitButtonTrailing, OutlinedSplitButtonTrailingUncheckable, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, RoundedPolygon, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, Scrim, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, ShapeIcon, ShapeMedia, ShapeMediaServer, ShapeSvg, SideSheet, SideSheetModal, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SplitButtonLayout, SplitButtonLeading, SplitButtonTrailing, SplitButtonTrailingUncheckable, SubMenu, Switch, SwitchColors, SwitchTokens, TP_CLASSES, TP_COLORS, TP_SHAPE, TP_SIZE, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, TimeInput, TimePicker, TimePickerDialog, ToggleFAB, TonalSplitButtonLeading, TonalSplitButtonTrailing, TonalSplitButtonTrailingUncheckable, ToolbarDivider, ToolbarDividerTokens, ToolbarIconButton, ToolbarIconButtonTokens, ToolbarToggleButton, ToolbarToggleButtonTokens, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, UNROUNDED, VIBRANT_COLORS, VerticalFloatingToolbar, VerticalFloatingToolbarWithFab, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, addPoints, appBarTypography, applyTheme, buildWavePath, circle, clockwise, cn, convex, cornerFeature, cornerRounding, createDoubleMapper, createMd3ExpressiveTheme, directionVector, distance, distanceSquared, dividePoint, dotProduct, edgeFeature, featureMapper, generateM3Theme, getDirection, getDistance, getDistanceSquared, getExpressiveShape, getListItemHeight, getToolbarColors, interpolate, interpolatePath, lerpPoint, pill, pillStar, point, positiveModulo, radialToCartesian, rectangle, resolveMode, rotate90, scalePoint, shouldTopAlign, square, standardFloatingToolbarColors, star, subtractPoints, surfaceContainerHighFloatingToolbarColors, surfaceContainerHighestFloatingToolbarColors, tertiaryContainerFloatingToolbarColors, toClipPath, toSvgPath, transformFeature, transformPoint, useAppBarScroll, useBottomSheet, useRipple as useDOMRipple, useDatePickerState, useDateRangePickerState, useFloatingToolbarScrollBehavior, useListContext, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useShapeMorph, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTimePickerState, useTooltipPosition, useTooltipState, useTypography, vibrantFloatingToolbarColors, xrFloatingToolbarColors };
24256
24518
  //# sourceMappingURL=index.mjs.map
24257
24519
  //# sourceMappingURL=index.mjs.map