@eightshift/ui-components 1.6.1 → 1.7.1

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 (97) hide show
  1. package/dist/Button-VbCAu4hd.js +185 -0
  2. package/dist/{intlStrings-BxJIrC6b.js → Color-BpLubxWI.js} +2394 -2394
  3. package/dist/{ColorSwatch-BNX2quma.js → ColorSwatch-CinC14s3.js} +4 -4
  4. package/dist/{Dialog-BdtBguys.js → Dialog-BN5EE7UH.js} +9 -9
  5. package/dist/{FieldError-ClB3-XvF.js → FieldError-BttM1Nxd.js} +2 -2
  6. package/dist/{FocusScope-B5L3qI3N.js → FocusScope-CtCX0OGo.js} +2 -2
  7. package/dist/{Group-ubPTwji_.js → Group-XzWUooix.js} +3 -3
  8. package/dist/{Heading-DGnF6JDc.js → Heading-DZelepHV.js} +1 -1
  9. package/dist/{Hidden-CupIZhlF.js → Hidden-CcFqOzrp.js} +1 -1
  10. package/dist/{Input-BoNEjaXM.js → Input-CV1qVS6t.js} +8 -8
  11. package/dist/{Label-BqW0M3HN.js → Label-BwqMVkuV.js} +2 -2
  12. package/dist/{ListBox-civ86c_v.js → ListBox-DuZPdnkk.js} +16 -12
  13. package/dist/{SelectionManager-Ctbzoj1E.js → SelectionManager-x27KqnAT.js} +67 -34
  14. package/dist/{Separator-CDhAddZc.js → Separator-BM58t3PP.js} +24 -26
  15. package/dist/{Slider-Dkj8Slw3.js → Slider-D9Cs6yKr.js} +162 -162
  16. package/dist/{Text-CdwRBXol.js → Text-BVIXT8qq.js} +1 -1
  17. package/dist/{VisuallyHidden-DsMLX-RC.js → VisuallyHidden-WhC7vZaL.js} +2 -2
  18. package/dist/assets/style.css +1 -1
  19. package/dist/components/animated-visibility/animated-visibility.js +92 -129
  20. package/dist/components/base-control/base-control.js +1 -1
  21. package/dist/components/button/button.js +6 -6
  22. package/dist/components/checkbox/checkbox.js +7 -7
  23. package/dist/components/color-pickers/color-picker.js +2 -2
  24. package/dist/components/color-pickers/color-swatch.js +3 -3
  25. package/dist/components/color-pickers/gradient-editor.js +2 -2
  26. package/dist/components/color-pickers/solid-color-picker.js +64 -64
  27. package/dist/components/component-toggle/component-toggle.js +1 -1
  28. package/dist/components/draggable/draggable-handle.js +2 -2
  29. package/dist/components/draggable/draggable.js +7 -4
  30. package/dist/components/draggable-list/draggable-list-item.js +2 -2
  31. package/dist/components/draggable-list/draggable-list.js +6 -3
  32. package/dist/components/expandable/expandable.js +3 -3
  33. package/dist/components/index.js +3 -1
  34. package/dist/components/input-field/input-field.js +7 -7
  35. package/dist/components/item-collection/item-collection.js +6 -1
  36. package/dist/components/link-input/link-input.js +40 -36
  37. package/dist/components/list-box/list-box.js +2 -2
  38. package/dist/components/matrix-align/matrix-align.js +2 -2
  39. package/dist/components/menu/menu.js +15 -15
  40. package/dist/components/modal/modal.js +6 -6
  41. package/dist/components/number-picker/number-picker.js +10 -10
  42. package/dist/components/option-select/option-select.js +1 -1
  43. package/dist/components/options-panel/options-panel.js +1 -1
  44. package/dist/components/placeholders/file-placeholder.js +1 -1
  45. package/dist/components/placeholders/media-placeholder.js +6 -5
  46. package/dist/components/popover/popover.js +2 -2
  47. package/dist/components/radio/radio.js +13 -13
  48. package/dist/components/repeater/repeater-item.js +1 -1
  49. package/dist/components/repeater/repeater.js +6 -3
  50. package/dist/components/responsive/mini-responsive.js +495 -0
  51. package/dist/components/responsive/responsive-legacy.js +2 -2
  52. package/dist/components/responsive/responsive.js +7 -3
  53. package/dist/components/responsive-preview/responsive-preview.js +1 -1
  54. package/dist/components/select/async-multi-select.js +1 -0
  55. package/dist/components/select/async-single-select.js +1 -0
  56. package/dist/components/select/multi-select.js +1 -0
  57. package/dist/components/select/single-select.js +1 -0
  58. package/dist/components/select/styles.js +1 -1
  59. package/dist/components/slider/column-config-slider.js +3 -3
  60. package/dist/components/slider/slider.js +3 -3
  61. package/dist/components/slider/utils.js +1 -1
  62. package/dist/components/spacer/spacer.js +3 -4
  63. package/dist/components/tabs/tabs.js +22 -17
  64. package/dist/components/toggle/switch.js +6 -6
  65. package/dist/components/toggle/toggle.js +1 -1
  66. package/dist/components/toggle-button/toggle-button.js +6 -6
  67. package/dist/components/tooltip/tooltip.js +3 -3
  68. package/dist/{context-kCEA3M_y.js → context-Cs-ZD1nu.js} +1 -1
  69. package/dist/{default-i18n-BqWys-1G.js → default-i18n-DRnM8y4w.js} +45 -21
  70. package/dist/{focusSafely-xMzk3syC.js → focusSafely-CgFLw4FA.js} +1 -1
  71. package/dist/icons/jsx-svg.js +1 -1
  72. package/dist/index.js +3 -1
  73. package/dist/{number-CHmNj-oR.js → number-GajL10e1.js} +2 -2
  74. package/dist/{react-jsx-parser.min-sPC96O_U.js → react-jsx-parser.min-B5HVwW_W.js} +103 -53
  75. package/dist/{textSelection-D5Bit8i8.js → textSelection-CvK0YHTZ.js} +1 -1
  76. package/dist/{tooltip-srrt1p-b.js → tooltip-eKaARDoV.js} +5 -5
  77. package/dist/{useButton-6H5k2W5N.js → useButton-Cy9eEev7.js} +3 -3
  78. package/dist/{useEvent-BY-3vfxa.js → useEvent-LZebwyrb.js} +1 -1
  79. package/dist/{useFocusRing-rz8eyzby.js → useFocusRing-BMOTWmOx.js} +1 -1
  80. package/dist/{useFocusable-Bu2Ovohk.js → useFocusable-ByyKSVQv.js} +2 -2
  81. package/dist/{useFormReset-fUHUaaR6.js → useFormReset-B8m1uz1J.js} +1 -1
  82. package/dist/{useFormValidationState-DAan_XbC.js → useFormValidationState-BjMhz_VI.js} +2 -2
  83. package/dist/{useLabel-Bk7iP__W.js → useLabel-B6uO0wVK.js} +2 -2
  84. package/dist/{useLabels-DmsOywGg.js → useLabels-5dFkeiXx.js} +1 -1
  85. package/dist/{useListState-GXSJsAgz.js → useListState-eKxv7HPC.js} +28 -16
  86. package/dist/{useLocalizedStringFormatter-m03yY3xi.js → useLocalizedStringFormatter-BaKmjFNp.js} +1 -1
  87. package/dist/{useMenuTrigger-CT2-BFLo.js → useMenuTrigger-4fwEmto8.js} +4 -4
  88. package/dist/{useNumberFieldState-CpmU88xz.js → useNumberField-DMMUTZ-h.js} +169 -169
  89. package/dist/{useNumberFormatter-B-20GQ2u.js → useNumberFormatter-Cyx5Dxkf.js} +1 -1
  90. package/dist/{usePress-Cs8K7gKw.js → usePress-D8nPoIQm.js} +22 -10
  91. package/dist/{useSingleSelectListState-C1ddMCq3.js → useSingleSelectListState-CABciySJ.js} +3 -2
  92. package/dist/{useToggle-Cn2nQUNS.js → useToggle-BmltE9Zr.js} +4 -4
  93. package/dist/{useToggleState-Dj0JhD9W.js → useToggleState-DZXLEnA_.js} +1 -1
  94. package/dist/{utils-Du2x3YVu.js → utils-BCJajCwh.js} +15 -7
  95. package/package.json +24 -24
  96. package/dist/Button-CYX0D6At.js +0 -55
  97. package/dist/LiveAnnouncer-D8h-3GrG.js +0 -63
@@ -143,11 +143,8 @@ const getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {
143
143
  }
144
144
  return ease;
145
145
  };
146
- function isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {
147
- return !!Object.keys(transition).length;
148
- }
149
146
  function getValueTransition(transition, key) {
150
- return transition[key] || transition["default"] || transition;
147
+ return transition ? transition[key] || transition["default"] || transition : void 0;
151
148
  }
152
149
  const MotionGlobalConfig = {
153
150
  skipAnimations: false,
@@ -350,8 +347,8 @@ if (process.env.NODE_ENV !== "production") {
350
347
  }
351
348
  const isNumericalString = (v) => /^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(v);
352
349
  const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
353
- const isCSSVariableName = checkStringStartsWith("--");
354
- const startsAsVariableToken = checkStringStartsWith("var(--");
350
+ const isCSSVariableName = /* @__PURE__ */ checkStringStartsWith("--");
351
+ const startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith("var(--");
355
352
  const isCSSVariableToken = (value) => {
356
353
  const startsWithToken = startsAsVariableToken(value);
357
354
  if (!startsWithToken)
@@ -403,18 +400,8 @@ const scale = {
403
400
  ...number,
404
401
  default: 1
405
402
  };
406
- const sanitize = (v) => Math.round(v * 1e5) / 1e5;
407
- const floatRegex = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu;
408
- const colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;
409
- const singleColorRegex = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;
410
- function isString(v) {
411
- return typeof v === "string";
412
- }
413
- function isNullish(v) {
414
- return v == null;
415
- }
416
403
  const createUnitType = (unit) => ({
417
- test: (v) => isString(v) && v.endsWith(unit) && v.split(" ").length === 1,
404
+ test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1,
418
405
  parse: parseFloat,
419
406
  transform: (v) => `${v}${unit}`
420
407
  });
@@ -619,11 +606,17 @@ class KeyframeResolver {
619
606
  this.scheduleResolve();
620
607
  }
621
608
  }
609
+ const sanitize = (v) => Math.round(v * 1e5) / 1e5;
610
+ const floatRegex = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu;
611
+ function isNullish(v) {
612
+ return v == null;
613
+ }
614
+ const singleColorRegex = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;
622
615
  const isColorString = (type, testProp) => (v) => {
623
- return Boolean(isString(v) && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));
616
+ return Boolean(typeof v === "string" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));
624
617
  };
625
618
  const splitColor = (aName, bName, cName) => (v) => {
626
- if (!isString(v))
619
+ if (typeof v !== "string")
627
620
  return v;
628
621
  const [a, b, c, alpha2] = v.match(floatRegex);
629
622
  return {
@@ -694,12 +687,13 @@ const color = {
694
687
  }
695
688
  },
696
689
  transform: (v) => {
697
- return isString(v) ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
690
+ return typeof v === "string" ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
698
691
  }
699
692
  };
693
+ const colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;
700
694
  function test(v) {
701
695
  var _a, _b;
702
- return isNaN(v) && isString(v) && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;
696
+ return isNaN(v) && typeof v === "string" && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;
703
697
  }
704
698
  const NUMBER_TOKEN = "number";
705
699
  const COLOR_TOKEN = "color";
@@ -795,11 +789,7 @@ const filter = {
795
789
  return functions ? functions.map(applyDefaultFilter).join(" ") : v;
796
790
  }
797
791
  };
798
- const int = {
799
- ...number,
800
- transform: Math.round
801
- };
802
- const numberValueTypes = {
792
+ const browserNumberValueTypes = {
803
793
  // Border props
804
794
  borderWidth: px,
805
795
  borderTopWidth: px,
@@ -817,7 +807,6 @@ const numberValueTypes = {
817
807
  maxWidth: px,
818
808
  height: px,
819
809
  maxHeight: px,
820
- size: px,
821
810
  top: px,
822
811
  right: px,
823
812
  bottom: px,
@@ -833,7 +822,11 @@ const numberValueTypes = {
833
822
  marginRight: px,
834
823
  marginBottom: px,
835
824
  marginLeft: px,
836
- // Transform props
825
+ // Misc
826
+ backgroundPositionX: px,
827
+ backgroundPositionY: px
828
+ };
829
+ const transformValueTypes = {
837
830
  rotate: degrees,
838
831
  rotateX: degrees,
839
832
  rotateY: degrees,
@@ -857,11 +850,17 @@ const numberValueTypes = {
857
850
  opacity: alpha,
858
851
  originX: progressPercentage,
859
852
  originY: progressPercentage,
860
- originZ: px,
861
- // Misc
853
+ originZ: px
854
+ };
855
+ const int = {
856
+ ...number,
857
+ transform: Math.round
858
+ };
859
+ const numberValueTypes = {
860
+ ...browserNumberValueTypes,
861
+ ...transformValueTypes,
862
862
  zIndex: int,
863
- backgroundPositionX: px,
864
- backgroundPositionY: px,
863
+ size: px,
865
864
  // SVG
866
865
  fillOpacity: alpha,
867
866
  strokeOpacity: alpha,
@@ -999,14 +998,6 @@ class DOMKeyframesResolver extends KeyframeResolver {
999
998
  this.resolveNoneKeyframes();
1000
999
  }
1001
1000
  }
1002
- function memo(callback) {
1003
- let result;
1004
- return () => {
1005
- if (result === void 0)
1006
- result = callback();
1007
- return result;
1008
- };
1009
- }
1010
1001
  function isGenerator(type) {
1011
1002
  return typeof type === "function";
1012
1003
  }
@@ -1375,6 +1366,7 @@ const easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);
1375
1366
  const isEasingArray = (ease2) => {
1376
1367
  return Array.isArray(ease2) && typeof ease2[0] !== "number";
1377
1368
  };
1369
+ const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === "number";
1378
1370
  const easingLookup = {
1379
1371
  linear: noop,
1380
1372
  easeIn,
@@ -1389,7 +1381,7 @@ const easingLookup = {
1389
1381
  anticipate
1390
1382
  };
1391
1383
  const easingDefinitionToFunction = (definition) => {
1392
- if (Array.isArray(definition)) {
1384
+ if (isBezierDefinition(definition)) {
1393
1385
  invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);
1394
1386
  const [x1, y1, x2, y2] = definition;
1395
1387
  return cubicBezier(x1, y1, x2, y2);
@@ -1932,7 +1924,6 @@ const acceleratedValues = /* @__PURE__ */ new Set([
1932
1924
  // or until we implement support for linear() easing.
1933
1925
  // "background-color"
1934
1926
  ]);
1935
- const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === "number";
1936
1927
  const resolution = 10;
1937
1928
  const generateLinearEasing = (easing, duration) => {
1938
1929
  let points = "";
@@ -1942,6 +1933,14 @@ const generateLinearEasing = (easing, duration) => {
1942
1933
  }
1943
1934
  return `linear(${points.substring(0, points.length - 2)})`;
1944
1935
  };
1936
+ function memo(callback) {
1937
+ let result;
1938
+ return () => {
1939
+ if (result === void 0)
1940
+ result = callback();
1941
+ return result;
1942
+ };
1943
+ }
1945
1944
  const supportsFlags = {
1946
1945
  linearEasing: void 0
1947
1946
  };
@@ -1988,7 +1987,7 @@ function mapEasingToNativeEasing(easing, duration) {
1988
1987
  return supportedWaapiEasing[easing];
1989
1988
  }
1990
1989
  }
1991
- function animateStyle(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = "loop", ease: ease2, times } = {}) {
1990
+ function startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = "loop", ease: ease2, times } = {}) {
1992
1991
  const keyframeOptions = { [valueName]: keyframes2 };
1993
1992
  if (times)
1994
1993
  keyframeOptions.offset = times;
@@ -2004,6 +2003,10 @@ function animateStyle(element, valueName, keyframes2, { delay: delay2 = 0, durat
2004
2003
  direction: repeatType === "reverse" ? "alternate" : "normal"
2005
2004
  });
2006
2005
  }
2006
+ function attachTimeline(animation, timeline) {
2007
+ animation.timeline = timeline;
2008
+ animation.onfinish = null;
2009
+ }
2007
2010
  const supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, "animate"));
2008
2011
  const sampleDelta = 10;
2009
2012
  const maxDuration = 2e4;
@@ -2069,10 +2072,10 @@ class AcceleratedAnimation extends BaseAnimation {
2069
2072
  ease2 = pregeneratedAnimation.ease;
2070
2073
  type = "keyframes";
2071
2074
  }
2072
- const animation = animateStyle(motionValue2.owner.current, name, keyframes2, { ...this.options, duration, times, ease: ease2 });
2075
+ const animation = startWaapiAnimation(motionValue2.owner.current, name, keyframes2, { ...this.options, duration, times, ease: ease2 });
2073
2076
  animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();
2074
2077
  if (this.pendingTimeline) {
2075
- animation.timeline = this.pendingTimeline;
2078
+ attachTimeline(animation, this.pendingTimeline);
2076
2079
  this.pendingTimeline = void 0;
2077
2080
  } else {
2078
2081
  animation.onfinish = () => {
@@ -2153,8 +2156,7 @@ class AcceleratedAnimation extends BaseAnimation {
2153
2156
  if (!resolved)
2154
2157
  return noop;
2155
2158
  const { animation } = resolved;
2156
- animation.timeline = timeline;
2157
- animation.onfinish = null;
2159
+ attachTimeline(animation, timeline);
2158
2160
  }
2159
2161
  return noop;
2160
2162
  }
@@ -2230,20 +2232,6 @@ class AcceleratedAnimation extends BaseAnimation {
2230
2232
  !motionValue2.owner.getProps().onUpdate && !repeatDelay && repeatType !== "mirror" && damping !== 0 && type !== "inertia";
2231
2233
  }
2232
2234
  }
2233
- function observeTimeline(update, timeline) {
2234
- let prevProgress;
2235
- const onFrame = () => {
2236
- const { currentTime } = timeline;
2237
- const percentage = currentTime === null ? 0 : currentTime.value;
2238
- const progress2 = percentage / 100;
2239
- if (prevProgress !== progress2) {
2240
- update(progress2);
2241
- }
2242
- prevProgress = progress2;
2243
- };
2244
- frame.update(onFrame, true);
2245
- return () => cancelFrame(onFrame);
2246
- }
2247
2235
  const supportsScrollTimeline = memo(() => window.ScrollTimeline !== void 0);
2248
2236
  class GroupPlaybackControls {
2249
2237
  constructor(animations2) {
@@ -2264,21 +2252,17 @@ class GroupPlaybackControls {
2264
2252
  this.animations[i][propName] = newValue;
2265
2253
  }
2266
2254
  }
2267
- attachTimeline(timeline) {
2268
- const cancelAll = this.animations.map((animation) => {
2255
+ attachTimeline(timeline, fallback) {
2256
+ const subscriptions = this.animations.map((animation) => {
2269
2257
  if (supportsScrollTimeline() && animation.attachTimeline) {
2270
- animation.attachTimeline(timeline);
2258
+ return animation.attachTimeline(timeline);
2271
2259
  } else {
2272
- animation.pause();
2273
- return observeTimeline((progress2) => {
2274
- animation.time = animation.duration * progress2;
2275
- }, timeline);
2260
+ return fallback(animation);
2276
2261
  }
2277
2262
  });
2278
2263
  return () => {
2279
- cancelAll.forEach((cancelTimeline, i) => {
2280
- if (cancelTimeline)
2281
- cancelTimeline();
2264
+ subscriptions.forEach((cancel, i) => {
2265
+ cancel && cancel();
2282
2266
  this.animations[i].stop();
2283
2267
  });
2284
2268
  };
@@ -2321,6 +2305,9 @@ class GroupPlaybackControls {
2321
2305
  this.runAll("complete");
2322
2306
  }
2323
2307
  }
2308
+ function isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {
2309
+ return !!Object.keys(transition).length;
2310
+ }
2324
2311
  const animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {
2325
2312
  const valueTransition = getValueTransition(transition, name) || {};
2326
2313
  const delay2 = valueTransition.delay || transition.delay || 0;
@@ -2439,7 +2426,7 @@ class MotionValue {
2439
2426
  * @internal
2440
2427
  */
2441
2428
  constructor(init, options = {}) {
2442
- this.version = "11.8.0";
2429
+ this.version = "11.11.4";
2443
2430
  this.canTrackVelocity = null;
2444
2431
  this.events = {};
2445
2432
  this.updateAndNotify = (v, render = true) => {
@@ -2713,6 +2700,10 @@ const optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId
2713
2700
  function getOptimisedAppearId(visualElement) {
2714
2701
  return visualElement.props[optimizedAppearDataAttribute];
2715
2702
  }
2703
+ const isMotionValue = (value) => Boolean(value && value.getVelocity);
2704
+ function isWillChangeMotionValue(value) {
2705
+ return Boolean(isMotionValue(value) && value.add);
2706
+ }
2716
2707
  function getWillChangeName(name) {
2717
2708
  if (transformProps.has(name)) {
2718
2709
  return "transform";
@@ -2720,37 +2711,15 @@ function getWillChangeName(name) {
2720
2711
  return camelToDash(name);
2721
2712
  }
2722
2713
  }
2723
- class WillChangeMotionValue extends MotionValue {
2724
- constructor() {
2725
- super(...arguments);
2726
- this.values = [];
2727
- }
2728
- add(name) {
2729
- const styleName = getWillChangeName(name);
2730
- if (styleName) {
2731
- addUniqueItem(this.values, styleName);
2732
- this.update();
2733
- }
2734
- }
2735
- update() {
2736
- this.set(this.values.length ? this.values.join(", ") : "auto");
2737
- }
2738
- }
2739
- const isMotionValue = (value) => Boolean(value && value.getVelocity);
2740
- function isWillChangeMotionValue(value) {
2741
- return Boolean(isMotionValue(value) && value.add);
2742
- }
2743
2714
  function addValueToWillChange(visualElement, key) {
2744
2715
  var _a;
2745
2716
  if (!visualElement.applyWillChange)
2746
2717
  return;
2747
- let willChange = visualElement.getValue("willChange");
2748
- if (!willChange && !((_a = visualElement.props.style) === null || _a === void 0 ? void 0 : _a.willChange)) {
2749
- willChange = new WillChangeMotionValue("auto");
2750
- visualElement.addValue("willChange", willChange);
2751
- }
2718
+ const willChange = visualElement.getValue("willChange");
2752
2719
  if (isWillChangeMotionValue(willChange)) {
2753
2720
  return willChange.add(key);
2721
+ } else if (!((_a = visualElement.props.style) === null || _a === void 0 ? void 0 : _a.willChange) && getWillChangeName(key)) {
2722
+ visualElement.setStaticValue("willChange", "transform");
2754
2723
  }
2755
2724
  }
2756
2725
  function shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {
@@ -5843,9 +5812,8 @@ const MotionContext = createContext({});
5843
5812
  const isBrowser = typeof window !== "undefined";
5844
5813
  const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
5845
5814
  const LazyContext = createContext({ strict: false });
5846
- let scheduleHandoffComplete = false;
5847
5815
  function useVisualElement(Component2, visualState, props, createVisualElement, ProjectionNodeConstructor) {
5848
- var _a;
5816
+ var _a, _b;
5849
5817
  const { visualElement: parent } = useContext(MotionContext);
5850
5818
  const lazyContext = useContext(LazyContext);
5851
5819
  const presenceContext = useContext(PresenceContext);
@@ -5871,10 +5839,11 @@ function useVisualElement(Component2, visualState, props, createVisualElement, P
5871
5839
  visualElement && visualElement.update(props, presenceContext);
5872
5840
  });
5873
5841
  const optimisedAppearId = props[optimizedAppearDataAttribute];
5874
- const wantsHandoff = useRef(Boolean(optimisedAppearId) && !window.MotionHandoffIsComplete && ((_a = window.MotionHasOptimisedAnimation) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)));
5842
+ const wantsHandoff = useRef(Boolean(optimisedAppearId) && !((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));
5875
5843
  useIsomorphicLayoutEffect(() => {
5876
5844
  if (!visualElement)
5877
5845
  return;
5846
+ window.MotionIsMounted = true;
5878
5847
  visualElement.updateFeatures();
5879
5848
  microtask.render(visualElement.render);
5880
5849
  if (wantsHandoff.current && visualElement.animationState) {
@@ -5887,17 +5856,16 @@ function useVisualElement(Component2, visualState, props, createVisualElement, P
5887
5856
  if (!wantsHandoff.current && visualElement.animationState) {
5888
5857
  visualElement.animationState.animateChanges();
5889
5858
  }
5890
- wantsHandoff.current = false;
5891
- if (!scheduleHandoffComplete) {
5892
- scheduleHandoffComplete = true;
5893
- queueMicrotask(completeHandoff);
5859
+ if (wantsHandoff.current) {
5860
+ queueMicrotask(() => {
5861
+ var _a2;
5862
+ (_a2 = window.MotionHandoffMarkAsComplete) === null || _a2 === void 0 ? void 0 : _a2.call(window, optimisedAppearId);
5863
+ });
5864
+ wantsHandoff.current = false;
5894
5865
  }
5895
5866
  });
5896
5867
  return visualElement;
5897
5868
  }
5898
- function completeHandoff() {
5899
- window.MotionHandoffIsComplete = true;
5900
- }
5901
5869
  function createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {
5902
5870
  const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot } = props;
5903
5871
  visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props["data-framer-portal-id"] ? void 0 : getClosestProjectingNode(visualElement.parent));
@@ -6193,12 +6161,6 @@ const makeUseVisualState = (config) => (props, isStatic) => {
6193
6161
  const make = () => makeState(config, props, context, presenceContext, isStatic);
6194
6162
  return isStatic ? make() : useConstant(make);
6195
6163
  };
6196
- function addWillChange(willChange, name) {
6197
- const memberName = getWillChangeName(name);
6198
- if (memberName) {
6199
- addUniqueItem(willChange, memberName);
6200
- }
6201
- }
6202
6164
  function forEachDefinition(props, definition, callback) {
6203
6165
  const list = Array.isArray(definition) ? definition : [definition];
6204
6166
  for (let i = 0; i < list.length; i++) {
@@ -6212,8 +6174,7 @@ function forEachDefinition(props, definition, callback) {
6212
6174
  function makeLatestValues(props, context, presenceContext, shouldApplyWillChange, scrapeMotionValues) {
6213
6175
  var _a;
6214
6176
  const values = {};
6215
- const willChange = [];
6216
- const applyWillChange = shouldApplyWillChange && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.willChange) === void 0;
6177
+ let applyWillChange = shouldApplyWillChange && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.willChange) === void 0;
6217
6178
  const motionValues = scrapeMotionValues(props, {});
6218
6179
  for (const key in motionValues) {
6219
6180
  values[key] = resolveMotionValue(motionValues[key]);
@@ -6251,13 +6212,14 @@ function makeLatestValues(props, context, presenceContext, shouldApplyWillChange
6251
6212
  if (animate && initial !== false && !isAnimationControls(animate)) {
6252
6213
  forEachDefinition(props, animate, (target) => {
6253
6214
  for (const key in target) {
6254
- addWillChange(willChange, key);
6215
+ const willChangeName = getWillChangeName(key);
6216
+ if (willChangeName) {
6217
+ values.willChange = "transform";
6218
+ return;
6219
+ }
6255
6220
  }
6256
6221
  });
6257
6222
  }
6258
- if (willChange.length) {
6259
- values.willChange = willChange.join(",");
6260
- }
6261
6223
  }
6262
6224
  return values;
6263
6225
  }
@@ -6603,7 +6565,7 @@ function updateMotionValuesFromProps(element, next, prev) {
6603
6565
  if (isMotionValue(nextValue)) {
6604
6566
  element.addValue(key, nextValue);
6605
6567
  if (process.env.NODE_ENV === "development") {
6606
- warnOnce(nextValue.version === "11.8.0", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.8.0 may not work as expected.`);
6568
+ warnOnce(nextValue.version === "11.11.4", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.11.4 may not work as expected.`);
6607
6569
  }
6608
6570
  } else if (isMotionValue(prevValue)) {
6609
6571
  element.addValue(key, motionValue(nextValue, { owner: element }));
@@ -7142,20 +7104,21 @@ function PopChild({ children, isPresent }) {
7142
7104
  const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode }) => {
7143
7105
  const presenceChildren = useConstant(newChildrenMap);
7144
7106
  const id2 = useId();
7107
+ const memoizedOnExitComplete = useCallback((childId) => {
7108
+ presenceChildren.set(childId, true);
7109
+ for (const isComplete of presenceChildren.values()) {
7110
+ if (!isComplete)
7111
+ return;
7112
+ }
7113
+ onExitComplete && onExitComplete();
7114
+ }, [presenceChildren, onExitComplete]);
7145
7115
  const context = useMemo(
7146
7116
  () => ({
7147
7117
  id: id2,
7148
7118
  initial,
7149
7119
  isPresent,
7150
7120
  custom,
7151
- onExitComplete: (childId) => {
7152
- presenceChildren.set(childId, true);
7153
- for (const isComplete of presenceChildren.values()) {
7154
- if (!isComplete)
7155
- return;
7156
- }
7157
- onExitComplete && onExitComplete();
7158
- },
7121
+ onExitComplete: memoizedOnExitComplete,
7159
7122
  register: (childId) => {
7160
7123
  presenceChildren.set(childId, false);
7161
7124
  return () => presenceChildren.delete(childId);
@@ -7166,7 +7129,7 @@ const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, p
7166
7129
  * we want to make a new context value to ensure they get re-rendered
7167
7130
  * so they can detect that layout change.
7168
7131
  */
7169
- presenceAffectsLayout ? [Math.random()] : [isPresent]
7132
+ presenceAffectsLayout ? [Math.random(), memoizedOnExitComplete] : [isPresent, memoizedOnExitComplete]
7170
7133
  );
7171
7134
  useMemo(() => {
7172
7135
  presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import { $ as $514c0188e459b4c0$export$5f1af8db9871e1d6 } from "../../Text-CdwRBXol.js";
2
+ import { $ as $514c0188e459b4c0$export$5f1af8db9871e1d6 } from "../../Text-BVIXT8qq.js";
3
3
  import { c as clsx } from "../../lite-DVmmD_-j.js";
4
4
  import { RichLabel } from "../rich-label/rich-label.js";
5
5
  /**
@@ -1,13 +1,13 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import { a as $d2b4bc8c273e7be6$export$353f5b6fc5456de1 } from "../../Button-CYX0D6At.js";
3
- import { j as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, a as $64fa3d84918910a7$export$29f1550f4b0d4415, b as $64fa3d84918910a7$export$4d86445c2cf5e3, c as $3ef42575df84b30b$export$9d1611c77c2fe928, l as $df56164dff5785e2$export$4338b53315abf666 } from "../../utils-Du2x3YVu.js";
4
- import { a as $9bf71ea28793e738$export$c5251b9e124bf29 } from "../../FocusScope-B5L3qI3N.js";
2
+ import { a as $d2b4bc8c273e7be6$export$353f5b6fc5456de1 } from "../../Button-VbCAu4hd.js";
3
+ import { j as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c, a as $64fa3d84918910a7$export$29f1550f4b0d4415, b as $64fa3d84918910a7$export$4d86445c2cf5e3, c as $3ef42575df84b30b$export$9d1611c77c2fe928, l as $df56164dff5785e2$export$4338b53315abf666 } from "../../utils-BCJajCwh.js";
4
+ import { a as $9bf71ea28793e738$export$c5251b9e124bf29 } from "../../FocusScope-CtCX0OGo.js";
5
5
  import React__default, { useState, useRef, forwardRef, createContext } from "react";
6
- import { $ as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 } from "../../context-kCEA3M_y.js";
6
+ import { $ as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 } from "../../context-Cs-ZD1nu.js";
7
7
  import { $ as $65484d02dcb7eb3e$export$457c3d6518dd4c6f } from "../../filterDOMProps-EDDcM64A.js";
8
8
  import { c as clsx } from "../../lite-DVmmD_-j.js";
9
- import { T as Tooltip } from "../../tooltip-srrt1p-b.js";
10
- import { _ as __ } from "../../default-i18n-BqWys-1G.js";
9
+ import { T as Tooltip } from "../../tooltip-eKaARDoV.js";
10
+ import { _ as __ } from "../../default-i18n-DRnM8y4w.js";
11
11
  function $2680b1829e803644$export$fa142eb1681c520(props, ref) {
12
12
  const { "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, orientation = "horizontal" } = props;
13
13
  let [isInToolbar, setInToolbar] = useState(false);
@@ -1,15 +1,15 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { a as $4e85f108e88277b8$export$b085522c77523c51 } from "../../RSPContexts-2lR5GG9p.js";
3
- import { a as $64fa3d84918910a7$export$29f1550f4b0d4415, $ as $64fa3d84918910a7$export$fabf2dc03a41866e, l as $df56164dff5785e2$export$4338b53315abf666, m as $5dc95899b306f630$export$c9058316764c140e, b as $64fa3d84918910a7$export$4d86445c2cf5e3, c as $3ef42575df84b30b$export$9d1611c77c2fe928 } from "../../utils-Du2x3YVu.js";
3
+ import { a as $64fa3d84918910a7$export$29f1550f4b0d4415, $ as $64fa3d84918910a7$export$fabf2dc03a41866e, l as $df56164dff5785e2$export$4338b53315abf666, m as $5dc95899b306f630$export$c9058316764c140e, b as $64fa3d84918910a7$export$4d86445c2cf5e3, c as $3ef42575df84b30b$export$9d1611c77c2fe928 } from "../../utils-BCJajCwh.js";
4
4
  import { $ as $d3e0e05bdfcf66bd$export$c24727297075ec6a } from "../../Form-Cq3fu75_.js";
5
5
  import { $ as $65484d02dcb7eb3e$export$457c3d6518dd4c6f } from "../../filterDOMProps-EDDcM64A.js";
6
6
  import React__default, { useEffect, useRef, forwardRef, useContext, createContext } from "react";
7
- import { $ as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, a as $e93e671b31057976$export$b8473d3665f3a75a, b as $e5be200c675c3b3a$export$dad6ae84456c676a, c as $e5be200c675c3b3a$export$a763b9476acd3eb } from "../../useFormValidationState-DAan_XbC.js";
8
- import { $ as $d2c8e2b0480f3f34$export$cbe85ee05b554577 } from "../../useToggle-Cn2nQUNS.js";
9
- import { $ as $3017fa7ffdddec74$export$8042c6c013fd5226 } from "../../useToggleState-Dj0JhD9W.js";
10
- import { $ as $f7dceffc5ad7768b$export$4e328f61c538687f } from "../../useFocusRing-rz8eyzby.js";
11
- import { $ as $6179b936705e76d3$export$ae780daf29e6d456 } from "../../focusSafely-xMzk3syC.js";
12
- import { $ as $5c3e21d68f1c4674$export$439d29a4e110a164 } from "../../VisuallyHidden-DsMLX-RC.js";
7
+ import { $ as $e5be200c675c3b3a$export$fc1a364ae1f3ff10, a as $e93e671b31057976$export$b8473d3665f3a75a, b as $e5be200c675c3b3a$export$dad6ae84456c676a, c as $e5be200c675c3b3a$export$a763b9476acd3eb } from "../../useFormValidationState-BjMhz_VI.js";
8
+ import { $ as $d2c8e2b0480f3f34$export$cbe85ee05b554577 } from "../../useToggle-BmltE9Zr.js";
9
+ import { $ as $3017fa7ffdddec74$export$8042c6c013fd5226 } from "../../useToggleState-DZXLEnA_.js";
10
+ import { $ as $f7dceffc5ad7768b$export$4e328f61c538687f } from "../../useFocusRing-BMOTWmOx.js";
11
+ import { $ as $6179b936705e76d3$export$ae780daf29e6d456 } from "../../focusSafely-CgFLw4FA.js";
12
+ import { $ as $5c3e21d68f1c4674$export$439d29a4e110a164 } from "../../VisuallyHidden-WhC7vZaL.js";
13
13
  import { c as clsx } from "../../lite-DVmmD_-j.js";
14
14
  import { AnimatedVisibility } from "../animated-visibility/animated-visibility.js";
15
15
  import { icons } from "../../icons/icons.js";
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { _ as __ } from "../../default-i18n-BqWys-1G.js";
2
+ import { _ as __ } from "../../default-i18n-DRnM8y4w.js";
3
3
  import { Menu, MenuItem, MenuSeparator, MenuSection } from "../menu/menu.js";
4
4
  import { ColorSwatch } from "./color-swatch.js";
5
5
  import { RichLabel } from "../rich-label/rich-label.js";
@@ -237,7 +237,7 @@ const ColorPicker = (props) => {
237
237
  return /* @__PURE__ */ jsx(
238
238
  MenuSection,
239
239
  {
240
- label: colorGroupNames[groupSlug],
240
+ "aria-label": colorGroupNames[groupSlug],
241
241
  children: colors2.map((color) => /* @__PURE__ */ jsx(
242
242
  SingleItem,
243
243
  {
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { $ as $251c695a52d94a8d$export$cae13e90592f246a } from "../../ColorSwatch-BNX2quma.js";
3
- import { $ as $799cddbef784668f$export$6e865ea70d7724f } from "../../intlStrings-BxJIrC6b.js";
2
+ import { $ as $251c695a52d94a8d$export$cae13e90592f246a } from "../../ColorSwatch-CinC14s3.js";
3
+ import { $ as $799cddbef784668f$export$6e865ea70d7724f } from "../../Color-BpLubxWI.js";
4
4
  import { c as clsx } from "../../lite-DVmmD_-j.js";
5
- import { _ as __ } from "../../default-i18n-BqWys-1G.js";
5
+ import { _ as __ } from "../../default-i18n-DRnM8y4w.js";
6
6
  /**
7
7
  * A simple color/gradient swatch.
8
8
  *
@@ -1,12 +1,12 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { _ as __, s as sprintf } from "../../default-i18n-BqWys-1G.js";
2
+ import { _ as __, s as sprintf } from "../../default-i18n-DRnM8y4w.js";
3
3
  import { useMemo, useState } from "react";
4
4
  import { Button, ButtonGroup } from "../button/button.js";
5
5
  import { icons } from "../../icons/icons.js";
6
6
  import { SolidColorPicker } from "./solid-color-picker.js";
7
7
  import { Slider } from "../slider/slider.js";
8
8
  import { NumberPicker } from "../number-picker/number-picker.js";
9
- import { $ as $251c695a52d94a8d$export$cae13e90592f246a } from "../../ColorSwatch-BNX2quma.js";
9
+ import { $ as $251c695a52d94a8d$export$cae13e90592f246a } from "../../ColorSwatch-CinC14s3.js";
10
10
  import { Menu, MenuItem } from "../menu/menu.js";
11
11
  import { MatrixAlign } from "../matrix-align/matrix-align.js";
12
12
  import { Spacer } from "../spacer/spacer.js";