@moontra/moonui-pro 3.4.1 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -88297,7 +88297,7 @@ var GridDistortionInternal = ({
88297
88297
  if (!canvas || !container)
88298
88298
  return;
88299
88299
  const rect = container.getBoundingClientRect();
88300
- const dpr = window.devicePixelRatio || 1;
88300
+ const dpr = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
88301
88301
  canvas.style.width = "100%";
88302
88302
  canvas.style.height = "100%";
88303
88303
  canvas.width = rect.width * dpr;
@@ -89525,6 +89525,8 @@ var LiquidBackgroundInternal = ({
89525
89525
  }) => {
89526
89526
  const canvasRef = useRef(null);
89527
89527
  const containerRef = useRef(null);
89528
+ const offscreenCanvasRef = useRef(null);
89529
+ const offscreenCtxRef = useRef(null);
89528
89530
  const animationRef = useRef(void 0);
89529
89531
  const blobsRef = useRef([]);
89530
89532
  const mouseRef = useRef({ x: 0, y: 0, vx: 0, vy: 0 });
@@ -89533,6 +89535,12 @@ var LiquidBackgroundInternal = ({
89533
89535
  const frameInterval = 1e3 / fps;
89534
89536
  const [isVisible, setIsVisible] = useState(true);
89535
89537
  const observerTimeoutRef = useRef(null);
89538
+ const filterString = useMemo(() => {
89539
+ if (blur2 > 0 && contrast > 0) {
89540
+ return `blur(${blur2}px) contrast(${contrast})`;
89541
+ }
89542
+ return "none";
89543
+ }, [blur2, contrast]);
89536
89544
  const initializeBlobs = useCallback(() => {
89537
89545
  const canvas = canvasRef.current;
89538
89546
  if (!canvas)
@@ -89637,9 +89645,7 @@ var LiquidBackgroundInternal = ({
89637
89645
  }, [animationStyle, speed, viscosity, tension, sizeRange, interactive, mouseRadius]);
89638
89646
  const drawLiquid = useCallback((ctx, canvas) => {
89639
89647
  ctx.clearRect(0, 0, canvas.width, canvas.height);
89640
- if (blur2 > 0 && contrast > 0) {
89641
- ctx.filter = `blur(${blur2}px) contrast(${contrast})`;
89642
- }
89648
+ ctx.filter = filterString;
89643
89649
  ctx.globalAlpha = opacity;
89644
89650
  const blobs = blobsRef.current;
89645
89651
  blobs.forEach((blob) => {
@@ -89685,14 +89691,17 @@ var LiquidBackgroundInternal = ({
89685
89691
  ctx.fillRect(0, 0, canvas.width, canvas.height);
89686
89692
  ctx.globalCompositeOperation = "source-over";
89687
89693
  }
89688
- }, [blur2, contrast, opacity, glow, glowIntensity, gradientOverlay]);
89694
+ }, [filterString, opacity, glow, glowIntensity, gradientOverlay]);
89689
89695
  const animate4 = useCallback((currentTime) => {
89690
89696
  const canvas = canvasRef.current;
89691
- if (!canvas)
89697
+ const offscreenCanvas = offscreenCanvasRef.current;
89698
+ const offscreenCtx = offscreenCtxRef.current;
89699
+ if (!canvas || !offscreenCanvas || !offscreenCtx)
89692
89700
  return;
89693
89701
  const ctx = canvas.getContext("2d", {
89694
89702
  alpha: true,
89695
- desynchronized: true
89703
+ desynchronized: true,
89704
+ willReadFrequently: false
89696
89705
  });
89697
89706
  if (!ctx)
89698
89707
  return;
@@ -89704,18 +89713,23 @@ var LiquidBackgroundInternal = ({
89704
89713
  lastFrameTimeRef.current = currentTime;
89705
89714
  if (!pauseWhenHidden || isVisible) {
89706
89715
  timeRef.current += 1;
89707
- updateBlobs(canvas);
89708
- drawLiquid(ctx, canvas);
89716
+ updateBlobs(offscreenCanvas);
89717
+ drawLiquid(offscreenCtx, offscreenCanvas);
89718
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
89719
+ ctx.drawImage(offscreenCanvas, 0, 0);
89709
89720
  }
89710
89721
  animationRef.current = requestAnimationFrame(animate4);
89711
89722
  }, [frameInterval, updateBlobs, drawLiquid, pauseWhenHidden, isVisible]);
89712
89723
  const handleResize = useCallback(() => {
89713
89724
  const canvas = canvasRef.current;
89714
- if (!canvas)
89725
+ const offscreenCanvas = offscreenCanvasRef.current;
89726
+ if (!canvas || !offscreenCanvas)
89715
89727
  return;
89716
89728
  const rect = canvas.getBoundingClientRect();
89717
89729
  canvas.width = rect.width;
89718
89730
  canvas.height = rect.height;
89731
+ offscreenCanvas.width = rect.width;
89732
+ offscreenCanvas.height = rect.height;
89719
89733
  initializeBlobs();
89720
89734
  }, [initializeBlobs]);
89721
89735
  const handleMouseMove2 = useCallback((e) => {
@@ -89734,9 +89748,22 @@ var LiquidBackgroundInternal = ({
89734
89748
  const canvas = canvasRef.current;
89735
89749
  if (!canvas)
89736
89750
  return;
89751
+ timeRef.current = Math.random() * 100;
89752
+ const offscreenCanvas = document.createElement("canvas");
89753
+ const offscreenCtx = offscreenCanvas.getContext("2d", {
89754
+ alpha: true,
89755
+ desynchronized: true,
89756
+ willReadFrequently: false
89757
+ });
89758
+ if (!offscreenCtx)
89759
+ return;
89760
+ offscreenCanvasRef.current = offscreenCanvas;
89761
+ offscreenCtxRef.current = offscreenCtx;
89737
89762
  const rect = canvas.getBoundingClientRect();
89738
89763
  canvas.width = rect.width;
89739
89764
  canvas.height = rect.height;
89765
+ offscreenCanvas.width = rect.width;
89766
+ offscreenCanvas.height = rect.height;
89740
89767
  initializeBlobs();
89741
89768
  window.addEventListener("resize", handleResize);
89742
89769
  if (interactive) {
@@ -89749,6 +89776,8 @@ var LiquidBackgroundInternal = ({
89749
89776
  if (animationRef.current) {
89750
89777
  cancelAnimationFrame(animationRef.current);
89751
89778
  }
89779
+ offscreenCanvasRef.current = null;
89780
+ offscreenCtxRef.current = null;
89752
89781
  };
89753
89782
  }, [initializeBlobs, handleResize, handleMouseMove2, animate4, interactive]);
89754
89783
  useEffect(() => {
@@ -89779,9 +89808,11 @@ var LiquidBackgroundInternal = ({
89779
89808
  };
89780
89809
  }, [pauseWhenHidden]);
89781
89810
  const canvasStyle = useMemo(() => ({
89782
- willChange: "transform",
89811
+ willChange: "transform, opacity",
89783
89812
  transform: "translate3d(0, 0, 0)",
89784
89813
  backfaceVisibility: "hidden",
89814
+ contain: "paint layout",
89815
+ isolation: "isolate",
89785
89816
  opacity: !pauseWhenHidden || isVisible ? 1 : 0,
89786
89817
  transition: pauseWhenHidden ? "opacity 0.3s ease-out" : "none"
89787
89818
  }), [pauseWhenHidden, isVisible]);
@@ -89794,7 +89825,9 @@ var LiquidBackgroundInternal = ({
89794
89825
  containerClassName
89795
89826
  ),
89796
89827
  style: {
89797
- backgroundColor
89828
+ backgroundColor,
89829
+ contain: "layout style paint",
89830
+ willChange: "contents"
89798
89831
  },
89799
89832
  children: [
89800
89833
  /* @__PURE__ */ jsx(
@@ -91733,7 +91766,7 @@ var GeometricPatternsInternal = ({
91733
91766
  lastFrameTimeRef.current = currentTime;
91734
91767
  timeRef.current += 1;
91735
91768
  const rect = container.getBoundingClientRect();
91736
- const rawDPR = window.devicePixelRatio || 1;
91769
+ const rawDPR = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
91737
91770
  Math.min(rawDPR, performanceSettings.maxDPR);
91738
91771
  ctx.clearRect(0, 0, canvas.width, canvas.height);
91739
91772
  if (backgroundColor !== "transparent") {
@@ -91762,7 +91795,7 @@ var GeometricPatternsInternal = ({
91762
91795
  if (!canvas || !container)
91763
91796
  return;
91764
91797
  const rect = container.getBoundingClientRect();
91765
- const rawDPR = window.devicePixelRatio || 1;
91798
+ const rawDPR = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
91766
91799
  const devicePixelRatio = Math.min(rawDPR, performanceSettings.maxDPR);
91767
91800
  const newWidth = rect.width * devicePixelRatio;
91768
91801
  const newHeight = rect.height * devicePixelRatio;
@@ -91850,7 +91883,7 @@ var GeometricPatternsInternal = ({
91850
91883
  if (!canvas || !container)
91851
91884
  return;
91852
91885
  const rect = container.getBoundingClientRect();
91853
- const rawDPR = window.devicePixelRatio || 1;
91886
+ const rawDPR = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
91854
91887
  const devicePixelRatio = Math.min(rawDPR, performanceSettings.maxDPR);
91855
91888
  canvas.width = rect.width * devicePixelRatio;
91856
91889
  canvas.height = rect.height * devicePixelRatio;
@@ -93815,7 +93848,11 @@ var GlowEffectInternal = ({
93815
93848
  const [isHovered, setIsHovered] = useState(false);
93816
93849
  const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
93817
93850
  const [flickerState, setFlickerState] = useState(true);
93851
+ const [mounted, setMounted] = useState(false);
93818
93852
  useRef(void 0);
93853
+ useEffect(() => {
93854
+ setMounted(true);
93855
+ }, []);
93819
93856
  const isMobile = () => {
93820
93857
  return typeof window !== "undefined" && window.innerWidth <= 768;
93821
93858
  };
@@ -93983,6 +94020,20 @@ var GlowEffectInternal = ({
93983
94020
  animation: glow-rainbow ${duration}ms linear infinite;
93984
94021
  }
93985
94022
  `;
94023
+ if (!mounted) {
94024
+ return /* @__PURE__ */ jsx(
94025
+ "div",
94026
+ {
94027
+ className: cn(
94028
+ "glow-effect-container",
94029
+ "relative",
94030
+ "inline-block",
94031
+ containerClassName
94032
+ ),
94033
+ children: /* @__PURE__ */ jsx("div", { className: "glow-content relative", children })
94034
+ }
94035
+ );
94036
+ }
93986
94037
  return /* @__PURE__ */ jsxs(Fragment, { children: [
93987
94038
  /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: animationStyles } }),
93988
94039
  /* @__PURE__ */ jsxs(
@@ -94029,7 +94080,7 @@ var GlowEffectInternal = ({
94029
94080
  clipPath: getClipPath(),
94030
94081
  filter: customFilter || (animation === "rainbow" ? "hue-rotate(0deg)" : void 0),
94031
94082
  background: gradient ? getGlowColor() : void 0,
94032
- opacity: gradient ? 0.5 : 1
94083
+ opacity: gradient ? "0.5" : "1"
94033
94084
  }
94034
94085
  }
94035
94086
  ),
@@ -96861,6 +96912,35 @@ var ScrollReveal = (props) => {
96861
96912
  return /* @__PURE__ */ jsx(ScrollRevealInternal, { ...props });
96862
96913
  };
96863
96914
  ScrollReveal.displayName = "ScrollReveal";
96915
+ var getEasingValue = (t2, easing) => {
96916
+ switch (easing) {
96917
+ case "linear":
96918
+ return t2;
96919
+ case "ease":
96920
+ return t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;
96921
+ case "ease-in":
96922
+ return t2 * t2;
96923
+ case "ease-out":
96924
+ return t2 * (2 - t2);
96925
+ case "bounce":
96926
+ if (t2 < 0.363636) {
96927
+ return 7.5625 * t2 * t2;
96928
+ } else if (t2 < 0.727272) {
96929
+ t2 -= 0.545454;
96930
+ return 7.5625 * t2 * t2 + 0.75;
96931
+ } else if (t2 < 0.90909) {
96932
+ t2 -= 0.818181;
96933
+ return 7.5625 * t2 * t2 + 0.9375;
96934
+ } else {
96935
+ t2 -= 0.954545;
96936
+ return 7.5625 * t2 * t2 + 0.984375;
96937
+ }
96938
+ case "elastic":
96939
+ return t2 === 0 || t2 === 1 ? t2 : -Math.pow(2, 10 * (t2 - 1)) * Math.sin((t2 - 1.1) * 5 * Math.PI);
96940
+ default:
96941
+ return t2;
96942
+ }
96943
+ };
96864
96944
  var BounceEffectInternal = ({
96865
96945
  children,
96866
96946
  trigger = "hover",
@@ -96898,7 +96978,9 @@ var BounceEffectInternal = ({
96898
96978
  }) => {
96899
96979
  const elementRef = useRef(null);
96900
96980
  const animationRef = useRef(void 0);
96901
- const [isAnimating, setIsAnimating] = useState(false);
96981
+ const isAnimatingRef = useRef(false);
96982
+ const hasAutoTriggered = useRef(false);
96983
+ const [animationState, setAnimationState] = useState(false);
96902
96984
  const [currentBounce, setCurrentBounce] = useState(0);
96903
96985
  const [position, setPosition] = useState({ x: 0, y: 0 });
96904
96986
  const [rotation, setRotation] = useState(0);
@@ -96906,39 +96988,10 @@ var BounceEffectInternal = ({
96906
96988
  const [squash, setSquash] = useState({ x: 1, y: 1 });
96907
96989
  useRef({ x: 0, y: 0 });
96908
96990
  const startTimeRef = useRef(0);
96909
- const getEasing = (t2) => {
96910
- switch (easing) {
96911
- case "linear":
96912
- return t2;
96913
- case "ease":
96914
- return t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;
96915
- case "ease-in":
96916
- return t2 * t2;
96917
- case "ease-out":
96918
- return t2 * (2 - t2);
96919
- case "bounce":
96920
- if (t2 < 0.363636) {
96921
- return 7.5625 * t2 * t2;
96922
- } else if (t2 < 0.727272) {
96923
- t2 -= 0.545454;
96924
- return 7.5625 * t2 * t2 + 0.75;
96925
- } else if (t2 < 0.90909) {
96926
- t2 -= 0.818181;
96927
- return 7.5625 * t2 * t2 + 0.9375;
96928
- } else {
96929
- t2 -= 0.954545;
96930
- return 7.5625 * t2 * t2 + 0.984375;
96931
- }
96932
- case "elastic":
96933
- return t2 === 0 || t2 === 1 ? t2 : -Math.pow(2, 10 * (t2 - 1)) * Math.sin((t2 - 1.1) * 5 * Math.PI);
96934
- default:
96935
- return t2;
96936
- }
96937
- };
96938
96991
  const calculateBounce = useCallback((time) => {
96939
96992
  const elapsed = time - startTimeRef.current;
96940
96993
  const progress = Math.min(elapsed / duration, 1);
96941
- const easedProgress = getEasing(progress);
96994
+ const easedProgress = getEasingValue(progress, easing);
96942
96995
  let x2 = 0, y = 0;
96943
96996
  switch (direction) {
96944
96997
  case "up":
@@ -96991,10 +97044,12 @@ var BounceEffectInternal = ({
96991
97044
  if (currentBounce >= bounces - 1) {
96992
97045
  if (infinite) {
96993
97046
  setTimeout(() => {
96994
- startAnimation();
97047
+ setCurrentBounce(0);
97048
+ startTimeRef.current = performance.now();
96995
97049
  }, pauseBetween);
96996
97050
  } else {
96997
- setIsAnimating(false);
97051
+ isAnimatingRef.current = false;
97052
+ setAnimationState(false);
96998
97053
  if (onBounceComplete)
96999
97054
  onBounceComplete();
97000
97055
  }
@@ -97020,6 +97075,7 @@ var BounceEffectInternal = ({
97020
97075
  squashAmount,
97021
97076
  jelly,
97022
97077
  jellyIntensity,
97078
+ easing,
97023
97079
  currentBounce,
97024
97080
  position.y,
97025
97081
  infinite,
@@ -97027,15 +97083,16 @@ var BounceEffectInternal = ({
97027
97083
  onBounceComplete
97028
97084
  ]);
97029
97085
  const animate4 = useCallback((time) => {
97030
- if (!isAnimating)
97086
+ if (!isAnimatingRef.current)
97031
97087
  return;
97032
97088
  calculateBounce(time);
97033
97089
  animationRef.current = requestAnimationFrame(animate4);
97034
- }, [isAnimating, calculateBounce]);
97090
+ }, [calculateBounce]);
97035
97091
  const startAnimation = useCallback(() => {
97036
- if (isAnimating)
97092
+ if (isAnimatingRef.current)
97037
97093
  return;
97038
- setIsAnimating(true);
97094
+ isAnimatingRef.current = true;
97095
+ setAnimationState(true);
97039
97096
  setCurrentBounce(0);
97040
97097
  startTimeRef.current = performance.now();
97041
97098
  if (onBounceStart)
@@ -97043,7 +97100,7 @@ var BounceEffectInternal = ({
97043
97100
  setTimeout(() => {
97044
97101
  animationRef.current = requestAnimationFrame(animate4);
97045
97102
  }, delay);
97046
- }, [delay, onBounceStart, animate4, isAnimating]);
97103
+ }, [delay, onBounceStart, animate4]);
97047
97104
  const handleMouseEnter = () => {
97048
97105
  if (trigger === "hover")
97049
97106
  startAnimation();
@@ -97061,19 +97118,20 @@ var BounceEffectInternal = ({
97061
97118
  return;
97062
97119
  const rect = element.getBoundingClientRect();
97063
97120
  const inView = rect.top < window.innerHeight && rect.bottom > 0;
97064
- if (inView && !isAnimating) {
97121
+ if (inView && !isAnimatingRef.current) {
97065
97122
  startAnimation();
97066
97123
  }
97067
97124
  };
97068
97125
  window.addEventListener("scroll", handleScroll);
97069
97126
  handleScroll();
97070
97127
  return () => window.removeEventListener("scroll", handleScroll);
97071
- }, [trigger, isAnimating, startAnimation]);
97128
+ }, [trigger, startAnimation]);
97072
97129
  useEffect(() => {
97073
- if (trigger === "auto") {
97130
+ if (trigger === "auto" && !hasAutoTriggered.current) {
97131
+ hasAutoTriggered.current = true;
97074
97132
  startAnimation();
97075
97133
  }
97076
- }, [trigger, startAnimation]);
97134
+ }, [trigger]);
97077
97135
  useEffect(() => {
97078
97136
  return () => {
97079
97137
  if (animationRef.current) {
@@ -97112,7 +97170,7 @@ var BounceEffectInternal = ({
97112
97170
  onMouseEnter: handleMouseEnter,
97113
97171
  onClick: handleClick2,
97114
97172
  children: [
97115
- trail && isAnimating && Array.from({ length: trailCount }).map((_2, i) => /* @__PURE__ */ jsx(
97173
+ trail && animationState && Array.from({ length: trailCount }).map((_2, i) => /* @__PURE__ */ jsx(
97116
97174
  "div",
97117
97175
  {
97118
97176
  className: "absolute inset-0 pointer-events-none",
@@ -97164,449 +97222,50 @@ var BounceEffect = (props) => {
97164
97222
  return /* @__PURE__ */ jsx(BounceEffectInternal, { ...props });
97165
97223
  };
97166
97224
  BounceEffect.displayName = "BounceEffect";
97167
- var SPRING_PRESETS = {
97168
- default: { tension: 0.4, friction: 0.3 },
97169
- gentle: { tension: 0.2, friction: 0.5 },
97170
- wobbly: { tension: 0.3, friction: 0.1 },
97171
- stiff: { tension: 0.8, friction: 0.5 },
97172
- slow: { tension: 0.2, friction: 0.8 },
97173
- molasses: { tension: 0.1, friction: 0.9 }
97174
- };
97175
- var SpringPhysicsInternal = ({
97176
- children,
97177
- tension = 0.4,
97178
- friction = 0.3,
97179
- mass = 1,
97180
- initialVelocity = { x: 0, y: 0 },
97181
- target = { x: 0, y: 0 },
97182
- trigger = "hover",
97183
- mouseTracking = false,
97184
- mouseRadius = 200,
97185
- preset = "default",
97186
- overshoot = true,
97187
- clamp: clamp3 = false,
97188
- precision = 0.01,
97189
- transform3d = false,
97190
- rotate = false,
97191
- rotationMultiplier = 1,
97192
- scale = false,
97193
- scaleRange = [0.9, 1.1],
97194
- skew = false,
97195
- skewIntensity = 10,
97196
- trail = false,
97197
- trailCount = 5,
97198
- trailDecay = 0.9,
97199
- boundaries = false,
97200
- boundaryBox = {},
97201
- multiSpring = false,
97202
- chainCount = 3,
97203
- chainDelay = 50,
97204
- oscillate = false,
97205
- oscillationFrequency = 2,
97206
- oscillationAmplitude = 10,
97207
- containerClassName,
97208
- springClassName,
97209
- onMotionStart,
97210
- onMotionComplete,
97211
- onSpringUpdate
97212
- }) => {
97213
- const elementRef = useRef(null);
97214
- const animationRef = useRef(void 0);
97215
- const [isAnimating, setIsAnimating] = useState(false);
97216
- const [isDragging, setIsDragging] = useState(false);
97217
- const [position, setPosition] = useState({ x: 0, y: 0 });
97218
- const [velocity, setVelocity] = useState(initialVelocity);
97219
- useState({ x: 0, y: 0 });
97220
- const [trailPositions, setTrailPositions] = useState([]);
97221
- const [chainPositions, setChainPositions] = useState([]);
97222
- const restPositionRef = useRef({ x: 0, y: 0 });
97223
- const dragStartRef = useRef({ x: 0, y: 0 });
97224
- const elementStartRef = useRef({ x: 0, y: 0 });
97225
- const timeRef = useRef(0);
97226
- const motionCompleteRef = useRef(false);
97227
- const getSpringConfig = () => {
97228
- if (preset !== "default") {
97229
- return SPRING_PRESETS[preset];
97230
- }
97231
- return { tension, friction };
97232
- };
97233
- const calculateSpringForce = useCallback((currentPos, targetPos, vel, config) => {
97234
- const dx = targetPos.x - currentPos.x;
97235
- const dy = targetPos.y - currentPos.y;
97236
- const springForceX = dx * config.tension;
97237
- const springForceY = dy * config.tension;
97238
- const dampingForceX = vel.x * config.friction;
97239
- const dampingForceY = vel.y * config.friction;
97240
- return {
97241
- x: springForceX - dampingForceX,
97242
- y: springForceY - dampingForceY
97243
- };
97244
- }, []);
97245
- const applyBoundaries = useCallback((pos) => {
97246
- if (!boundaries)
97247
- return pos;
97248
- const bounded = { ...pos };
97249
- const box = {
97250
- left: boundaryBox?.left ?? -100,
97251
- right: boundaryBox?.right ?? 100,
97252
- top: boundaryBox?.top ?? -100,
97253
- bottom: boundaryBox?.bottom ?? 100
97254
- };
97255
- if (bounded.x < box.left) {
97256
- bounded.x = box.left;
97257
- setVelocity((prev) => ({ ...prev, x: Math.abs(prev.x || 0) * 0.5 }));
97258
- }
97259
- if (bounded.x > box.right) {
97260
- bounded.x = box.right;
97261
- setVelocity((prev) => ({ ...prev, x: -Math.abs(prev.x || 0) * 0.5 }));
97262
- }
97263
- if (bounded.y < box.top) {
97264
- bounded.y = box.top;
97265
- setVelocity((prev) => ({ ...prev, y: Math.abs(prev.y || 0) * 0.5 }));
97266
- }
97267
- if (bounded.y > box.bottom) {
97268
- bounded.y = box.bottom;
97269
- setVelocity((prev) => ({ ...prev, y: -Math.abs(prev.y || 0) * 0.5 }));
97270
- }
97271
- return bounded;
97272
- }, [boundaries, boundaryBox]);
97273
- const updateSpring = useCallback((deltaTime) => {
97274
- const config = getSpringConfig();
97275
- let targetPos = { ...target };
97276
- if (oscillate) {
97277
- const time = timeRef.current * 1e-3;
97278
- targetPos.x = (targetPos.x || 0) + Math.sin(time * oscillationFrequency) * oscillationAmplitude;
97279
- targetPos.y = (targetPos.y || 0) + Math.cos(time * oscillationFrequency) * oscillationAmplitude;
97280
- }
97281
- const force = calculateSpringForce(position, { x: targetPos.x || 0, y: targetPos.y || 0 }, { x: velocity.x || 0, y: velocity.y || 0 }, config);
97282
- const newVelocity = {
97283
- x: (velocity.x || 0) + force.x / mass * deltaTime,
97284
- y: (velocity.y || 0) + force.y / mass * deltaTime
97285
- };
97286
- if (clamp3 && !overshoot) {
97287
- const distX = Math.abs((targetPos.x || 0) - position.x);
97288
- const distY = Math.abs((targetPos.y || 0) - position.y);
97289
- if (distX < 1)
97290
- newVelocity.x *= 0.8;
97291
- if (distY < 1)
97292
- newVelocity.y *= 0.8;
97293
- }
97294
- let newPosition = {
97295
- x: position.x + newVelocity.x * deltaTime,
97296
- y: position.y + newVelocity.y * deltaTime
97297
- };
97298
- newPosition = applyBoundaries(newPosition);
97299
- if (trail) {
97300
- setTrailPositions((prev) => {
97301
- const newTrail = [newPosition, ...prev.slice(0, trailCount - 1)];
97302
- return newTrail.map((pos, i) => ({
97303
- x: pos.x * Math.pow(trailDecay, i),
97304
- y: pos.y * Math.pow(trailDecay, i)
97305
- }));
97306
- });
97307
- }
97308
- if (multiSpring) {
97309
- setChainPositions((prev) => {
97310
- const newChain = [...prev];
97311
- for (let i = 0; i < chainCount; i++) {
97312
- const chainTarget = i === 0 ? newPosition : newChain[i - 1];
97313
- const chainConfig = {
97314
- tension: config.tension * (1 - i * 0.1),
97315
- friction: config.friction * (1 + i * 0.1)
97316
- };
97317
- const chainForce = calculateSpringForce(
97318
- newChain[i] || { x: 0, y: 0 },
97319
- chainTarget,
97320
- { x: 0, y: 0 },
97321
- chainConfig
97322
- );
97323
- newChain[i] = {
97324
- x: (newChain[i]?.x ?? 0) + chainForce.x * deltaTime,
97325
- y: (newChain[i]?.y ?? 0) + chainForce.y * deltaTime
97326
- };
97327
- }
97328
- return newChain;
97329
- });
97330
- }
97331
- const isComplete = Math.abs(newVelocity.x) < precision && Math.abs(newVelocity.y) < precision && Math.abs(newPosition.x - (targetPos.x || 0)) < precision && Math.abs(newPosition.y - (targetPos.y || 0)) < precision;
97332
- if (isComplete && !motionCompleteRef.current) {
97333
- motionCompleteRef.current = true;
97334
- onMotionComplete?.();
97335
- } else if (!isComplete && motionCompleteRef.current) {
97336
- motionCompleteRef.current = false;
97337
- }
97338
- setPosition(newPosition);
97339
- setVelocity(newVelocity);
97340
- onSpringUpdate?.(newPosition);
97341
- return !isComplete;
97342
- }, [
97343
- position,
97344
- velocity,
97345
- target,
97346
- mass,
97347
- precision,
97348
- overshoot,
97349
- clamp3,
97350
- trail,
97351
- trailCount,
97352
- trailDecay,
97353
- multiSpring,
97354
- chainCount,
97355
- oscillate,
97356
- oscillationFrequency,
97357
- oscillationAmplitude,
97358
- calculateSpringForce,
97359
- applyBoundaries,
97360
- onMotionComplete,
97361
- onSpringUpdate
97362
- ]);
97363
- const animate4 = useCallback((timestamp) => {
97364
- if (!isAnimating)
97365
- return;
97366
- const deltaTime = Math.min((timestamp - timeRef.current) / 1e3, 0.1) || 0.016;
97367
- timeRef.current = timestamp;
97368
- const shouldContinue = updateSpring(deltaTime);
97369
- if (shouldContinue || isDragging) {
97370
- animationRef.current = requestAnimationFrame(animate4);
97371
- } else {
97372
- setIsAnimating(false);
97373
- }
97374
- }, [isAnimating, isDragging, updateSpring]);
97375
- const startAnimation = useCallback((targetPos) => {
97376
- setIsAnimating(true);
97377
- motionCompleteRef.current = false;
97378
- if (targetPos) {
97379
- restPositionRef.current = targetPos;
97380
- }
97381
- onMotionStart?.();
97382
- timeRef.current = performance.now();
97383
- animationRef.current = requestAnimationFrame(animate4);
97384
- }, [animate4, onMotionStart]);
97385
- const handleMouseMove2 = useCallback((e) => {
97386
- if (!mouseTracking || !elementRef.current)
97387
- return;
97388
- const rect = elementRef.current.getBoundingClientRect();
97389
- const centerX = rect.left + rect.width / 2;
97390
- const centerY = rect.top + rect.height / 2;
97391
- const dx = e.clientX - centerX;
97392
- const dy = e.clientY - centerY;
97393
- const distance = Math.sqrt(dx * dx + dy * dy);
97394
- if (distance < mouseRadius) {
97395
- const influence = 1 - distance / mouseRadius;
97396
- const targetX = dx * influence * 0.5;
97397
- const targetY = dy * influence * 0.5;
97398
- restPositionRef.current = { x: targetX, y: targetY };
97399
- if (!isAnimating) {
97400
- startAnimation({ x: targetX, y: targetY });
97401
- }
97402
- }
97403
- }, [mouseTracking, mouseRadius, isAnimating, startAnimation]);
97404
- const handleMouseDown3 = useCallback((e) => {
97405
- if (trigger !== "drag")
97406
- return;
97407
- setIsDragging(true);
97408
- dragStartRef.current = { x: e.clientX, y: e.clientY };
97409
- elementStartRef.current = { ...position };
97410
- e.preventDefault();
97411
- }, [trigger, position]);
97412
- const handleMouseMoveOnDrag = useCallback((e) => {
97413
- if (!isDragging)
97414
- return;
97415
- const dx = e.clientX - dragStartRef.current.x;
97416
- const dy = e.clientY - dragStartRef.current.y;
97417
- setPosition({
97418
- x: elementStartRef.current.x + dx,
97419
- y: elementStartRef.current.y + dy
97420
- });
97421
- }, [isDragging]);
97422
- const handleMouseUp = useCallback(() => {
97423
- if (!isDragging)
97424
- return;
97425
- setIsDragging(false);
97426
- startAnimation({ x: 0, y: 0 });
97427
- }, [isDragging, startAnimation]);
97428
- const handleMouseEnter = () => {
97429
- if (trigger === "hover") {
97430
- startAnimation({ x: 20, y: -10 });
97431
- }
97432
- };
97433
- const handleMouseLeave2 = () => {
97434
- if (trigger === "hover") {
97435
- startAnimation({ x: 0, y: 0 });
97436
- }
97437
- };
97438
- const handleClick2 = () => {
97439
- if (trigger === "click") {
97440
- const targetX = (Math.random() - 0.5) * 100;
97441
- const targetY = (Math.random() - 0.5) * 100;
97442
- startAnimation({ x: targetX, y: targetY });
97443
- setTimeout(() => {
97444
- startAnimation({ x: 0, y: 0 });
97445
- }, 1e3);
97446
- }
97447
- };
97448
- useEffect(() => {
97449
- if (trigger !== "scroll")
97450
- return;
97451
- const handleScroll = () => {
97452
- const scrollY = window.scrollY;
97453
- const targetY = Math.sin(scrollY * 0.01) * 50;
97454
- restPositionRef.current = { x: 0, y: targetY };
97455
- if (!isAnimating) {
97456
- startAnimation({ x: 0, y: targetY });
97457
- }
97458
- };
97459
- window.addEventListener("scroll", handleScroll);
97460
- return () => window.removeEventListener("scroll", handleScroll);
97461
- }, [trigger, isAnimating, startAnimation]);
97462
- useEffect(() => {
97463
- if (trigger === "auto") {
97464
- startAnimation({ x: target?.x || 0, y: target?.y || 0 });
97465
- }
97466
- }, [trigger, target, startAnimation]);
97467
- useEffect(() => {
97468
- if (trigger === "drag") {
97469
- window.addEventListener("mousemove", handleMouseMoveOnDrag);
97470
- window.addEventListener("mouseup", handleMouseUp);
97471
- return () => {
97472
- window.removeEventListener("mousemove", handleMouseMoveOnDrag);
97473
- window.removeEventListener("mouseup", handleMouseUp);
97474
- };
97475
- }
97476
- }, [trigger, handleMouseMoveOnDrag, handleMouseUp]);
97477
- useEffect(() => {
97478
- if (mouseTracking) {
97479
- window.addEventListener("mousemove", handleMouseMove2);
97480
- return () => window.removeEventListener("mousemove", handleMouseMove2);
97481
- }
97482
- }, [mouseTracking, handleMouseMove2]);
97483
- useEffect(() => {
97484
- return () => {
97485
- if (animationRef.current) {
97486
- cancelAnimationFrame(animationRef.current);
97487
- }
97488
- };
97489
- }, []);
97490
- const getTransformStyle = (pos = position) => {
97491
- const transforms = [];
97492
- if (transform3d) {
97493
- transforms.push(`translate3d(${pos.x}px, ${pos.y}px, 0)`);
97494
- } else {
97495
- transforms.push(`translateX(${pos.x}px) translateY(${pos.y}px)`);
97496
- }
97497
- if (rotate) {
97498
- const rotation = pos.x / 10 * rotationMultiplier;
97499
- transforms.push(`rotate(${rotation}deg)`);
97500
- }
97501
- if (scale) {
97502
- const distance = Math.sqrt(pos.x * pos.x + pos.y * pos.y);
97503
- const scaleValue = scaleRange[0] + distance / 100 * (scaleRange[1] - scaleRange[0]);
97504
- transforms.push(`scale(${Math.min(Math.max(scaleValue, scaleRange[0]), scaleRange[1])})`);
97505
- }
97506
- if (skew) {
97507
- const skewX = (velocity.x || 0) / 10 * skewIntensity;
97508
- const skewY = (velocity.y || 0) / 10 * skewIntensity;
97509
- transforms.push(`skewX(${skewX}deg) skewY(${skewY}deg)`);
97510
- }
97511
- return transforms.join(" ");
97512
- };
97513
- return /* @__PURE__ */ jsxs(
97514
- "div",
97515
- {
97516
- ref: elementRef,
97517
- className: cn(
97518
- "spring-physics-container",
97519
- "relative",
97520
- "inline-block",
97521
- containerClassName
97522
- ),
97523
- onMouseEnter: handleMouseEnter,
97524
- onMouseLeave: handleMouseLeave2,
97525
- onMouseDown: handleMouseDown3,
97526
- onClick: handleClick2,
97527
- style: {
97528
- cursor: trigger === "drag" ? "grab" : void 0
97529
- },
97530
- children: [
97531
- trail && trailPositions.map((pos, i) => /* @__PURE__ */ jsx(
97532
- "div",
97533
- {
97534
- className: "absolute inset-0 pointer-events-none",
97535
- style: {
97536
- transform: getTransformStyle(pos),
97537
- opacity: 1 - i / trailCount,
97538
- filter: `blur(${i * 0.5}px)`
97539
- },
97540
- children: React71__default.isValidElement(children) && React71__default.cloneElement(children, {
97541
- style: { opacity: 0.3 }
97542
- })
97543
- },
97544
- i
97545
- )),
97546
- multiSpring && chainPositions.map((pos, i) => /* @__PURE__ */ jsx(
97547
- "div",
97548
- {
97549
- className: "absolute inset-0 pointer-events-none",
97550
- style: {
97551
- transform: getTransformStyle(pos),
97552
- opacity: 1 - i / chainCount * 0.5,
97553
- transitionDelay: `${i * chainDelay}ms`
97554
- },
97555
- children: React71__default.isValidElement(children) && React71__default.cloneElement(children, {
97556
- style: {
97557
- opacity: 0.5,
97558
- transform: `scale(${1 - i * 0.1})`
97559
- }
97560
- })
97561
- },
97562
- `chain-${i}`
97563
- )),
97564
- /* @__PURE__ */ jsx(
97565
- "div",
97566
- {
97567
- className: cn(
97568
- "spring-element",
97569
- isDragging && "cursor-grabbing",
97570
- springClassName
97571
- ),
97572
- style: {
97573
- transform: getTransformStyle(),
97574
- willChange: "transform",
97575
- transformOrigin: "center center"
97576
- },
97577
- children
97578
- }
97579
- )
97580
- ]
97581
- }
97582
- );
97583
- };
97584
- var SpringPhysics = (props) => {
97585
- const { hasProAccess, isLoading } = useSubscription();
97586
- if (!isLoading && !hasProAccess) {
97587
- return /* @__PURE__ */ jsx(
97588
- ProLockScreen,
97589
- {
97590
- componentName: "SpringPhysics",
97591
- compact: true,
97592
- className: "inline-block"
97225
+ var getEasingValue2 = (t2, easing) => {
97226
+ switch (easing) {
97227
+ case "linear":
97228
+ return t2;
97229
+ case "ease-in":
97230
+ return t2 * t2;
97231
+ case "ease-out":
97232
+ return t2 * (2 - t2);
97233
+ case "ease-in-out":
97234
+ return t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;
97235
+ case "elastic":
97236
+ if (t2 === 0 || t2 === 1)
97237
+ return t2;
97238
+ const p = 0.3;
97239
+ const s = p / 4;
97240
+ return Math.pow(2, -10 * t2) * Math.sin((t2 - s) * (2 * Math.PI) / p) + 1;
97241
+ case "bounce":
97242
+ if (t2 < 0.363636) {
97243
+ return 7.5625 * t2 * t2;
97244
+ } else if (t2 < 0.727272) {
97245
+ t2 -= 0.545454;
97246
+ return 7.5625 * t2 * t2 + 0.75;
97247
+ } else if (t2 < 0.90909) {
97248
+ t2 -= 0.818181;
97249
+ return 7.5625 * t2 * t2 + 0.9375;
97250
+ } else {
97251
+ t2 -= 0.954545;
97252
+ return 7.5625 * t2 * t2 + 0.984375;
97593
97253
  }
97594
- );
97254
+ default:
97255
+ return t2;
97595
97256
  }
97596
- return /* @__PURE__ */ jsx(SpringPhysicsInternal, { ...props });
97597
97257
  };
97598
- SpringPhysics.displayName = "SpringPhysics";
97599
97258
  var ElasticAnimationInternal = ({
97600
97259
  children,
97601
97260
  trigger = "hover",
97602
97261
  elasticity = 0.8,
97603
- damping = 0.15,
97604
- duration = 1e3,
97262
+ damping = 0.18,
97263
+ duration = 1200,
97605
97264
  delay = 0,
97606
97265
  direction = "both",
97607
97266
  distance = 50,
97608
97267
  oscillate = true,
97609
- oscillationCount = 3,
97268
+ oscillationCount = 2,
97610
97269
  rubberBand = false,
97611
97270
  rubberBandIntensity = 1.5,
97612
97271
  jello = false,
@@ -97639,7 +97298,10 @@ var ElasticAnimationInternal = ({
97639
97298
  }) => {
97640
97299
  const elementRef = useRef(null);
97641
97300
  const animationRef = useRef(void 0);
97642
- const [isAnimating, setIsAnimating] = useState(false);
97301
+ const isAnimatingRef = useRef(false);
97302
+ const hasAutoTriggered = useRef(false);
97303
+ const [animationState, setAnimationState] = useState(false);
97304
+ const [isResetting, setIsResetting] = useState(false);
97643
97305
  const [currentTransform, setCurrentTransform] = useState({
97644
97306
  x: 0,
97645
97307
  y: 0,
@@ -97651,41 +97313,8 @@ var ElasticAnimationInternal = ({
97651
97313
  const [morphIndex, setMorphIndex] = useState(0);
97652
97314
  const startTimeRef = useRef(0);
97653
97315
  const animationPhaseRef = useRef("main");
97654
- const getEasingValue = (t2) => {
97655
- switch (easing) {
97656
- case "linear":
97657
- return t2;
97658
- case "ease-in":
97659
- return t2 * t2;
97660
- case "ease-out":
97661
- return t2 * (2 - t2);
97662
- case "ease-in-out":
97663
- return t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;
97664
- case "elastic":
97665
- if (t2 === 0 || t2 === 1)
97666
- return t2;
97667
- const p = 0.3;
97668
- const s = p / 4;
97669
- return Math.pow(2, -10 * t2) * Math.sin((t2 - s) * (2 * Math.PI) / p) + 1;
97670
- case "bounce":
97671
- if (t2 < 0.363636) {
97672
- return 7.5625 * t2 * t2;
97673
- } else if (t2 < 0.727272) {
97674
- t2 -= 0.545454;
97675
- return 7.5625 * t2 * t2 + 0.75;
97676
- } else if (t2 < 0.90909) {
97677
- t2 -= 0.818181;
97678
- return 7.5625 * t2 * t2 + 0.9375;
97679
- } else {
97680
- t2 -= 0.954545;
97681
- return 7.5625 * t2 * t2 + 0.984375;
97682
- }
97683
- default:
97684
- return t2;
97685
- }
97686
- };
97687
97316
  const calculateElasticMotion = useCallback((progress) => {
97688
- const elasticProgress = getEasingValue(progress);
97317
+ const elasticProgress = getEasingValue2(progress, easing);
97689
97318
  let x2 = 0, y = 0, scale = 1, rotate = 0, skewX = 0, skewY = 0;
97690
97319
  if (direction === "horizontal" || direction === "both") {
97691
97320
  x2 = distance * elasticProgress * Math.cos(progress * Math.PI * 2 * oscillationCount);
@@ -97761,6 +97390,7 @@ var ElasticAnimationInternal = ({
97761
97390
  }
97762
97391
  return { x: x2, y, scale, rotate, skewX, skewY };
97763
97392
  }, [
97393
+ easing,
97764
97394
  direction,
97765
97395
  distance,
97766
97396
  oscillate,
@@ -97789,7 +97419,7 @@ var ElasticAnimationInternal = ({
97789
97419
  shakeIntensity
97790
97420
  ]);
97791
97421
  const animate4 = useCallback((timestamp) => {
97792
- if (!isAnimating)
97422
+ if (!isAnimatingRef.current)
97793
97423
  return;
97794
97424
  const elapsed = timestamp - startTimeRef.current;
97795
97425
  let progress = Math.min(elapsed / duration, 1);
@@ -97816,14 +97446,18 @@ var ElasticAnimationInternal = ({
97816
97446
  }
97817
97447
  animationRef.current = requestAnimationFrame(animate4);
97818
97448
  } else {
97819
- setIsAnimating(false);
97449
+ isAnimatingRef.current = false;
97450
+ setAnimationState(false);
97451
+ setIsResetting(true);
97820
97452
  setCurrentTransform({ x: 0, y: 0, scale: 1, rotate: 0, skewX: 0, skewY: 0 });
97821
- if (onAnimationComplete)
97822
- onAnimationComplete();
97453
+ setTimeout(() => {
97454
+ setIsResetting(false);
97455
+ if (onAnimationComplete)
97456
+ onAnimationComplete();
97457
+ }, 300);
97823
97458
  }
97824
97459
  }
97825
97460
  }, [
97826
- isAnimating,
97827
97461
  duration,
97828
97462
  anticipation,
97829
97463
  followThrough,
@@ -97833,9 +97467,10 @@ var ElasticAnimationInternal = ({
97833
97467
  onAnimationComplete
97834
97468
  ]);
97835
97469
  const startAnimation = useCallback(() => {
97836
- if (isAnimating && trigger !== "continuous")
97470
+ if (isAnimatingRef.current && trigger !== "continuous")
97837
97471
  return;
97838
- setIsAnimating(true);
97472
+ isAnimatingRef.current = true;
97473
+ setAnimationState(true);
97839
97474
  startTimeRef.current = performance.now();
97840
97475
  animationPhaseRef.current = anticipation ? "anticipation" : "main";
97841
97476
  if (onAnimationStart)
@@ -97852,7 +97487,6 @@ var ElasticAnimationInternal = ({
97852
97487
  }, secondaryDelay);
97853
97488
  }
97854
97489
  }, [
97855
- isAnimating,
97856
97490
  trigger,
97857
97491
  delay,
97858
97492
  anticipation,
@@ -97866,8 +97500,10 @@ var ElasticAnimationInternal = ({
97866
97500
  startAnimation();
97867
97501
  };
97868
97502
  const handleMouseLeave2 = () => {
97869
- if (trigger === "hover" && !isAnimating) {
97503
+ if (trigger === "hover" && !isAnimatingRef.current) {
97504
+ setIsResetting(true);
97870
97505
  setCurrentTransform({ x: 0, y: 0, scale: 1, rotate: 0, skewX: 0, skewY: 0 });
97506
+ setTimeout(() => setIsResetting(false), 300);
97871
97507
  }
97872
97508
  };
97873
97509
  const handleClick2 = () => {
@@ -97883,16 +97519,17 @@ var ElasticAnimationInternal = ({
97883
97519
  return;
97884
97520
  const rect = element.getBoundingClientRect();
97885
97521
  const inView = rect.top < window.innerHeight && rect.bottom > 0;
97886
- if (inView && !isAnimating) {
97522
+ if (inView && !isAnimatingRef.current) {
97887
97523
  startAnimation();
97888
97524
  }
97889
97525
  };
97890
97526
  window.addEventListener("scroll", handleScroll);
97891
97527
  handleScroll();
97892
97528
  return () => window.removeEventListener("scroll", handleScroll);
97893
- }, [trigger, isAnimating, startAnimation]);
97529
+ }, [trigger, startAnimation]);
97894
97530
  useEffect(() => {
97895
- if (trigger === "auto" || trigger === "continuous") {
97531
+ if ((trigger === "auto" || trigger === "continuous") && !hasAutoTriggered.current) {
97532
+ hasAutoTriggered.current = true;
97896
97533
  startAnimation();
97897
97534
  }
97898
97535
  }, [trigger, startAnimation]);
@@ -97944,7 +97581,8 @@ var ElasticAnimationInternal = ({
97944
97581
  transform: getTransformStyle(),
97945
97582
  transformOrigin: "center center",
97946
97583
  willChange: "transform",
97947
- backfaceVisibility: "hidden"
97584
+ backfaceVisibility: "hidden",
97585
+ transition: isResetting ? "transform 0.3s ease-out" : "none"
97948
97586
  },
97949
97587
  children
97950
97588
  }
@@ -98022,6 +97660,7 @@ var PathAnimationsInternal = ({
98022
97660
  const pathRef = useRef(null);
98023
97661
  const elementRef = useRef(null);
98024
97662
  const animationRef = useRef(void 0);
97663
+ const isAnimatingRef = useRef(false);
98025
97664
  const [isAnimating, setIsAnimating] = useState(false);
98026
97665
  const [currentPath, setCurrentPath] = useState("");
98027
97666
  const [pathLength, setPathLength] = useState(0);
@@ -98053,7 +97692,7 @@ var PathAnimationsInternal = ({
98053
97692
  svgRef.current.removeChild(tempPath);
98054
97693
  }
98055
97694
  }, [getPathString]);
98056
- const getEasingValue = (t2) => {
97695
+ const getEasingValue3 = (t2) => {
98057
97696
  switch (easing) {
98058
97697
  case "linear":
98059
97698
  return t2;
@@ -98110,11 +97749,11 @@ var PathAnimationsInternal = ({
98110
97749
  requestAnimationFrame(animateMorph);
98111
97750
  }, [morph, morphPaths, morphIndex, currentPath, morphDuration]);
98112
97751
  const animate4 = useCallback((timestamp) => {
98113
- if (!isAnimating)
97752
+ if (!isAnimatingRef.current)
98114
97753
  return;
98115
97754
  const elapsed = timestamp - startTimeRef.current + pausedTimeRef.current;
98116
97755
  let progress = Math.min(elapsed / duration, 1);
98117
- progress = getEasingValue(progress);
97756
+ progress = getEasingValue3(progress);
98118
97757
  const pathPosition = calculatePathPosition(progress);
98119
97758
  setPosition({ x: pathPosition.x, y: pathPosition.y });
98120
97759
  setRotation(pathPosition.angle);
@@ -98171,7 +97810,6 @@ var PathAnimationsInternal = ({
98171
97810
  animationRef.current = requestAnimationFrame(animate4);
98172
97811
  }
98173
97812
  }, [
98174
- isAnimating,
98175
97813
  duration,
98176
97814
  calculatePathPosition,
98177
97815
  scaleAnimation,
@@ -98193,8 +97831,9 @@ var PathAnimationsInternal = ({
98193
97831
  onAnimationComplete
98194
97832
  ]);
98195
97833
  const startAnimation = useCallback(() => {
98196
- if (isAnimating)
97834
+ if (isAnimatingRef.current)
98197
97835
  return;
97836
+ isAnimatingRef.current = true;
98198
97837
  setIsAnimating(true);
98199
97838
  setCurrentLoop(0);
98200
97839
  startTimeRef.current = performance.now();
@@ -98203,8 +97842,9 @@ var PathAnimationsInternal = ({
98203
97842
  setTimeout(() => {
98204
97843
  animationRef.current = requestAnimationFrame(animate4);
98205
97844
  }, delay);
98206
- }, [isAnimating, delay, animate4, onAnimationStart]);
97845
+ }, [delay, animate4, onAnimationStart]);
98207
97846
  const stopAnimation = useCallback(() => {
97847
+ isAnimatingRef.current = false;
98208
97848
  setIsAnimating(false);
98209
97849
  if (animationRef.current) {
98210
97850
  cancelAnimationFrame(animationRef.current);
@@ -98248,9 +97888,10 @@ var PathAnimationsInternal = ({
98248
97888
  if (trigger === "auto") {
98249
97889
  startAnimation();
98250
97890
  }
98251
- }, [trigger, startAnimation]);
97891
+ }, [trigger]);
98252
97892
  useEffect(() => {
98253
97893
  return () => {
97894
+ isAnimatingRef.current = false;
98254
97895
  if (animationRef.current) {
98255
97896
  cancelAnimationFrame(animationRef.current);
98256
97897
  }
@@ -98393,6 +98034,9 @@ var PathAnimations = (props) => {
98393
98034
  PathAnimations.displayName = "PathAnimations";
98394
98035
  var SVGAnimationsInternal = ({
98395
98036
  children,
98037
+ viewBox = "0 0 200 200",
98038
+ width = "100%",
98039
+ height = "100%",
98396
98040
  type = "draw",
98397
98041
  duration = 2e3,
98398
98042
  delay = 0,
@@ -98461,8 +98105,25 @@ var SVGAnimationsInternal = ({
98461
98105
  onAnimationComplete,
98462
98106
  onFrame
98463
98107
  }) => {
98108
+ const mergedTransformOptions = {
98109
+ scale: [1, 1],
98110
+ rotate: 0,
98111
+ translate: [0, 0],
98112
+ skew: [0, 0],
98113
+ transformOrigin: "center",
98114
+ ...transformOptions
98115
+ };
98116
+ const mergedFilterOptions = {
98117
+ blur: [0, 0],
98118
+ brightness: [1, 1],
98119
+ contrast: [1, 1],
98120
+ saturate: [1, 1],
98121
+ hueRotate: [0, 0],
98122
+ ...filterOptions
98123
+ };
98464
98124
  const svgRef = useRef(null);
98465
98125
  const animationRef = useRef(void 0);
98126
+ const isAnimatingRef = useRef(false);
98466
98127
  const [isAnimating, setIsAnimating] = useState(false);
98467
98128
  const [paths, setPaths] = useState([]);
98468
98129
  const [currentMorphIndex, setCurrentMorphIndex] = useState(0);
@@ -98488,7 +98149,7 @@ var SVGAnimationsInternal = ({
98488
98149
  });
98489
98150
  }
98490
98151
  }, [type, drawOptions.fadeIn]);
98491
- const getEasingValue = (t2) => {
98152
+ const getEasingValue3 = (t2) => {
98492
98153
  switch (easing) {
98493
98154
  case "linear":
98494
98155
  return t2;
@@ -98586,21 +98247,21 @@ var SVGAnimationsInternal = ({
98586
98247
  const offset4 = strokeOptions.strokeDashoffset * (1 - progress);
98587
98248
  path.style.strokeDashoffset = `${offset4}`;
98588
98249
  if (strokeOptions.animateWidth) {
98589
- const width = strokeOptions.strokeWidth * progress;
98590
- path.style.strokeWidth = `${width}`;
98250
+ const width2 = strokeOptions.strokeWidth * progress;
98251
+ path.style.strokeWidth = `${width2}`;
98591
98252
  }
98592
98253
  path.style.stroke = strokeOptions.strokeColor;
98593
98254
  });
98594
98255
  }, [paths, strokeOptions]);
98595
98256
  const animateTransform = useCallback((progress) => {
98596
- const easedProgress = getEasingValue(progress);
98597
- const scaleX = transformOptions.scale[0] + (1 - transformOptions.scale[0]) * easedProgress;
98598
- const scaleY = transformOptions.scale[1] + (1 - transformOptions.scale[1]) * easedProgress;
98599
- const rotate = transformOptions.rotate * easedProgress;
98600
- const translateX = transformOptions.translate[0] * easedProgress;
98601
- const translateY = transformOptions.translate[1] * easedProgress;
98602
- const skewX = transformOptions.skew[0] * easedProgress;
98603
- const skewY = transformOptions.skew[1] * easedProgress;
98257
+ const easedProgress = getEasingValue3(progress);
98258
+ const scaleX = mergedTransformOptions.scale[0] + (1 - mergedTransformOptions.scale[0]) * easedProgress;
98259
+ const scaleY = mergedTransformOptions.scale[1] + (1 - mergedTransformOptions.scale[1]) * easedProgress;
98260
+ const rotate = mergedTransformOptions.rotate * easedProgress;
98261
+ const translateX = mergedTransformOptions.translate[0] * easedProgress;
98262
+ const translateY = mergedTransformOptions.translate[1] * easedProgress;
98263
+ const skewX = mergedTransformOptions.skew[0] * easedProgress;
98264
+ const skewY = mergedTransformOptions.skew[1] * easedProgress;
98604
98265
  const transform = `
98605
98266
  translate(${translateX}px, ${translateY}px)
98606
98267
  scale(${scaleX}, ${scaleY})
@@ -98609,18 +98270,18 @@ var SVGAnimationsInternal = ({
98609
98270
  skewY(${skewY}deg)
98610
98271
  `;
98611
98272
  if (svgRef.current) {
98612
- svgRef.current.style.transformOrigin = transformOptions.transformOrigin;
98273
+ svgRef.current.style.transformOrigin = mergedTransformOptions.transformOrigin;
98613
98274
  svgRef.current.style.transform = transform;
98614
98275
  }
98615
- }, [transformOptions]);
98276
+ }, [mergedTransformOptions]);
98616
98277
  const animateFilter = useCallback((progress) => {
98617
98278
  if (!svgRef.current)
98618
98279
  return;
98619
- const blur2 = filterOptions.blur[0] + (filterOptions.blur[1] - filterOptions.blur[0]) * progress;
98620
- const brightness = filterOptions.brightness[0] + (filterOptions.brightness[1] - filterOptions.brightness[0]) * progress;
98621
- const contrast = filterOptions.contrast[0] + (filterOptions.contrast[1] - filterOptions.contrast[0]) * progress;
98622
- const saturate = filterOptions.saturate[0] + (filterOptions.saturate[1] - filterOptions.saturate[0]) * progress;
98623
- const hueRotate = filterOptions.hueRotate[0] + (filterOptions.hueRotate[1] - filterOptions.hueRotate[0]) * progress;
98280
+ const blur2 = mergedFilterOptions.blur[0] + (mergedFilterOptions.blur[1] - mergedFilterOptions.blur[0]) * progress;
98281
+ const brightness = mergedFilterOptions.brightness[0] + (mergedFilterOptions.brightness[1] - mergedFilterOptions.brightness[0]) * progress;
98282
+ const contrast = mergedFilterOptions.contrast[0] + (mergedFilterOptions.contrast[1] - mergedFilterOptions.contrast[0]) * progress;
98283
+ const saturate = mergedFilterOptions.saturate[0] + (mergedFilterOptions.saturate[1] - mergedFilterOptions.saturate[0]) * progress;
98284
+ const hueRotate = mergedFilterOptions.hueRotate[0] + (mergedFilterOptions.hueRotate[1] - mergedFilterOptions.hueRotate[0]) * progress;
98624
98285
  const filter = `
98625
98286
  blur(${blur2}px)
98626
98287
  brightness(${brightness})
@@ -98629,13 +98290,13 @@ var SVGAnimationsInternal = ({
98629
98290
  hue-rotate(${hueRotate}deg)
98630
98291
  `;
98631
98292
  svgRef.current.style.filter = filter;
98632
- }, [filterOptions]);
98293
+ }, [mergedFilterOptions]);
98633
98294
  const animate4 = useCallback((timestamp) => {
98634
- if (!isAnimating)
98295
+ if (!isAnimatingRef.current)
98635
98296
  return;
98636
98297
  const elapsed = timestamp - startTimeRef.current;
98637
98298
  let progress = Math.min(elapsed / duration, 1);
98638
- progress = getEasingValue(progress);
98299
+ progress = getEasingValue3(progress);
98639
98300
  setAnimationProgress(progress);
98640
98301
  switch (type) {
98641
98302
  case "draw":
@@ -98666,6 +98327,7 @@ var SVGAnimationsInternal = ({
98666
98327
  startTimeRef.current = timestamp;
98667
98328
  animationRef.current = requestAnimationFrame(animate4);
98668
98329
  } else {
98330
+ isAnimatingRef.current = false;
98669
98331
  setIsAnimating(false);
98670
98332
  if (onAnimationComplete)
98671
98333
  onAnimationComplete();
@@ -98674,7 +98336,6 @@ var SVGAnimationsInternal = ({
98674
98336
  animationRef.current = requestAnimationFrame(animate4);
98675
98337
  }
98676
98338
  }, [
98677
- isAnimating,
98678
98339
  duration,
98679
98340
  type,
98680
98341
  loop,
@@ -98690,8 +98351,10 @@ var SVGAnimationsInternal = ({
98690
98351
  onAnimationComplete
98691
98352
  ]);
98692
98353
  const startAnimation = useCallback(() => {
98693
- if (isAnimating)
98694
- return;
98354
+ if (animationRef.current) {
98355
+ cancelAnimationFrame(animationRef.current);
98356
+ }
98357
+ isAnimatingRef.current = true;
98695
98358
  setIsAnimating(true);
98696
98359
  setCurrentLoop(0);
98697
98360
  startTimeRef.current = performance.now();
@@ -98700,8 +98363,9 @@ var SVGAnimationsInternal = ({
98700
98363
  setTimeout(() => {
98701
98364
  animationRef.current = requestAnimationFrame(animate4);
98702
98365
  }, delay);
98703
- }, [isAnimating, delay, animate4, onAnimationStart]);
98366
+ }, [delay, animate4, onAnimationStart]);
98704
98367
  const stopAnimation = useCallback(() => {
98368
+ isAnimatingRef.current = false;
98705
98369
  setIsAnimating(false);
98706
98370
  if (animationRef.current) {
98707
98371
  cancelAnimationFrame(animationRef.current);
@@ -98745,12 +98409,13 @@ var SVGAnimationsInternal = ({
98745
98409
  if (autoPlay && trigger === "auto") {
98746
98410
  startAnimation();
98747
98411
  }
98748
- }, [autoPlay, trigger, startAnimation]);
98412
+ }, [autoPlay, trigger]);
98749
98413
  useEffect(() => {
98750
98414
  return () => {
98751
98415
  if (animationRef.current) {
98752
98416
  cancelAnimationFrame(animationRef.current);
98753
98417
  }
98418
+ isAnimatingRef.current = false;
98754
98419
  };
98755
98420
  }, []);
98756
98421
  return /* @__PURE__ */ jsxs(
@@ -98770,6 +98435,9 @@ var SVGAnimationsInternal = ({
98770
98435
  "svg",
98771
98436
  {
98772
98437
  ref: svgRef,
98438
+ viewBox,
98439
+ width,
98440
+ height,
98773
98441
  className: cn(
98774
98442
  "svg-animated",
98775
98443
  svgClassName
@@ -98858,7 +98526,9 @@ var FadeTransitionsInternal = ({
98858
98526
  }) => {
98859
98527
  const containerRef = useRef(null);
98860
98528
  const [isVisible, setIsVisible] = useState(controlledVisible ?? false);
98861
- const [isAnimating, setIsAnimating] = useState(false);
98529
+ const isAnimatingRef = useRef(false);
98530
+ const hasAutoTriggered = useRef(false);
98531
+ const [animationState, setAnimationState] = useState(false);
98862
98532
  const [currentLoop, setCurrentLoop] = useState(0);
98863
98533
  const [childrenArray, setChildrenArray] = useState([]);
98864
98534
  const observerRef = useRef(void 0);
@@ -98963,7 +98633,7 @@ var FadeTransitionsInternal = ({
98963
98633
  filter: type === "blur-fade" && !visible ? `blur(${blurAmount}px)` : "none",
98964
98634
  willChange: "transform, opacity, filter"
98965
98635
  };
98966
- if (glow && isAnimating) {
98636
+ if (glow && animationState) {
98967
98637
  styles.boxShadow = `0 0 ${glowIntensity}px ${glowColor}`;
98968
98638
  }
98969
98639
  if (mask) {
@@ -98991,9 +98661,10 @@ var FadeTransitionsInternal = ({
98991
98661
  return styles;
98992
98662
  };
98993
98663
  const handleVisibilityChange = useCallback((visible) => {
98994
- if (isAnimating)
98664
+ if (isAnimatingRef.current)
98995
98665
  return;
98996
- setIsAnimating(true);
98666
+ isAnimatingRef.current = true;
98667
+ setAnimationState(true);
98997
98668
  setIsVisible(visible);
98998
98669
  if (onTransitionStart)
98999
98670
  onTransitionStart();
@@ -99003,7 +98674,8 @@ var FadeTransitionsInternal = ({
99003
98674
  animationTimeoutsRef.current = [];
99004
98675
  const totalDuration = duration + (staggered ? (childrenArray.length - 1) * stagger : 0) + delay;
99005
98676
  const completeTimeout = setTimeout(() => {
99006
- setIsAnimating(false);
98677
+ isAnimatingRef.current = false;
98678
+ setAnimationState(false);
99007
98679
  if (onTransitionComplete)
99008
98680
  onTransitionComplete();
99009
98681
  if (loop && visible) {
@@ -99011,15 +98683,15 @@ var FadeTransitionsInternal = ({
99011
98683
  setCurrentLoop((prev) => prev + 1);
99012
98684
  if (reverseOnExit) {
99013
98685
  setTimeout(() => {
99014
- handleVisibilityChange(false);
98686
+ setIsVisible(false);
99015
98687
  setTimeout(() => {
99016
- handleVisibilityChange(true);
98688
+ setIsVisible(true);
99017
98689
  }, totalDuration);
99018
98690
  }, 1e3);
99019
98691
  } else {
99020
98692
  setIsVisible(false);
99021
98693
  setTimeout(() => {
99022
- handleVisibilityChange(true);
98694
+ setIsVisible(true);
99023
98695
  }, 100);
99024
98696
  }
99025
98697
  }
@@ -99027,7 +98699,6 @@ var FadeTransitionsInternal = ({
99027
98699
  }, totalDuration);
99028
98700
  animationTimeoutsRef.current.push(completeTimeout);
99029
98701
  }, [
99030
- isAnimating,
99031
98702
  duration,
99032
98703
  delay,
99033
98704
  stagger,
@@ -99056,19 +98727,20 @@ var FadeTransitionsInternal = ({
99056
98727
  handleVisibilityChange(!isVisible);
99057
98728
  }
99058
98729
  };
98730
+ const observerCallback = useCallback((entries) => {
98731
+ entries.forEach((entry) => {
98732
+ if (entry.isIntersecting && !isVisible) {
98733
+ handleVisibilityChange(true);
98734
+ } else if (!entry.isIntersecting && reverseOnExit && isVisible) {
98735
+ handleVisibilityChange(false);
98736
+ }
98737
+ });
98738
+ }, [isVisible, reverseOnExit, handleVisibilityChange]);
99059
98739
  useEffect(() => {
99060
98740
  if (trigger !== "scroll" || !containerRef.current)
99061
98741
  return;
99062
98742
  observerRef.current = new IntersectionObserver(
99063
- (entries) => {
99064
- entries.forEach((entry) => {
99065
- if (entry.isIntersecting && !isVisible) {
99066
- handleVisibilityChange(true);
99067
- } else if (!entry.isIntersecting && reverseOnExit && isVisible) {
99068
- handleVisibilityChange(false);
99069
- }
99070
- });
99071
- },
98743
+ observerCallback,
99072
98744
  {
99073
98745
  threshold
99074
98746
  }
@@ -99079,17 +98751,18 @@ var FadeTransitionsInternal = ({
99079
98751
  observerRef.current.disconnect();
99080
98752
  }
99081
98753
  };
99082
- }, [trigger, threshold, isVisible, reverseOnExit, handleVisibilityChange]);
98754
+ }, [trigger, threshold, observerCallback]);
99083
98755
  useEffect(() => {
99084
98756
  if (controlledVisible !== void 0) {
99085
98757
  handleVisibilityChange(controlledVisible);
99086
98758
  }
99087
- }, [controlledVisible]);
98759
+ }, [controlledVisible, handleVisibilityChange]);
99088
98760
  useEffect(() => {
99089
- if (trigger === "auto" && !controlledVisible) {
98761
+ if (trigger === "auto" && !hasAutoTriggered.current && !controlledVisible) {
98762
+ hasAutoTriggered.current = true;
99090
98763
  handleVisibilityChange(true);
99091
98764
  }
99092
- }, [trigger]);
98765
+ }, [trigger, controlledVisible, handleVisibilityChange]);
99093
98766
  useEffect(() => {
99094
98767
  return () => {
99095
98768
  animationTimeoutsRef.current.forEach((timeout) => clearTimeout(timeout));
@@ -99776,25 +99449,64 @@ var SwipeActionsInternal = ({
99776
99449
  swipeDirection === "up" && "justify-end pb-4 flex-col"
99777
99450
  ),
99778
99451
  style: { backgroundColor: activeAction.backgroundColor },
99779
- children: actions.map((action, index2) => /* @__PURE__ */ jsx(
99780
- "div",
99781
- {
99782
- className: cn(
99783
- "flex items-center justify-center rounded-lg transition-all duration-200",
99784
- isHorizontal ? "mr-2 last:mr-0" : "mb-2 last:mb-0",
99785
- action === activeAction && "scale-110"
99786
- ),
99787
- style: {
99788
- width: actionSize,
99789
- height: actionSize,
99790
- backgroundColor: action.color,
99791
- marginRight: isHorizontal ? actionSpacing : 0,
99792
- marginBottom: isHorizontal ? 0 : actionSpacing
99452
+ children: actions.map((action, index2) => {
99453
+ const getTextColor = (bgColor) => {
99454
+ if (!bgColor)
99455
+ return "text-gray-900 dark:text-gray-100";
99456
+ const hexToRgb = (hex) => {
99457
+ hex = hex.replace(/^#/, "");
99458
+ if (hex.length === 3) {
99459
+ hex = hex.split("").map((char) => char + char).join("");
99460
+ }
99461
+ if (hex.length === 6) {
99462
+ const r3 = parseInt(hex.substring(0, 2), 16);
99463
+ const g2 = parseInt(hex.substring(2, 4), 16);
99464
+ const b2 = parseInt(hex.substring(4, 6), 16);
99465
+ return [r3, g2, b2];
99466
+ }
99467
+ return null;
99468
+ };
99469
+ const getLuminance = (r3, g2, b2) => {
99470
+ const [rs, gs, bs] = [r3, g2, b2].map((val) => {
99471
+ val = val / 255;
99472
+ return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);
99473
+ });
99474
+ return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;
99475
+ };
99476
+ const rgb = hexToRgb(bgColor.toLowerCase());
99477
+ if (!rgb) {
99478
+ return "text-gray-900 dark:text-gray-100";
99479
+ }
99480
+ const [r2, g, b] = rgb;
99481
+ const luminance = getLuminance(r2, g, b);
99482
+ if (luminance > 0.5) {
99483
+ return "text-gray-900 dark:text-gray-800";
99484
+ } else {
99485
+ return "text-white dark:text-gray-100";
99486
+ }
99487
+ };
99488
+ const textColorClass = getTextColor(action.color);
99489
+ return /* @__PURE__ */ jsxs(
99490
+ "div",
99491
+ {
99492
+ className: cn(
99493
+ "flex items-center gap-2 px-4 py-2 rounded-lg transition-all duration-200",
99494
+ isHorizontal ? "mr-2 last:mr-0 flex-row" : "mb-2 last:mb-0 flex-col",
99495
+ action === activeAction && "scale-110"
99496
+ ),
99497
+ style: {
99498
+ backgroundColor: action.color,
99499
+ marginRight: isHorizontal ? actionSpacing : 0,
99500
+ marginBottom: isHorizontal ? 0 : actionSpacing
99501
+ },
99502
+ children: [
99503
+ /* @__PURE__ */ jsx("div", { className: textColorClass, children: action.icon }),
99504
+ action.label && /* @__PURE__ */ jsx("span", { className: cn("font-medium text-sm whitespace-nowrap", textColorClass), children: action.label })
99505
+ ]
99793
99506
  },
99794
- children: action.icon
99795
- },
99796
- action.id
99797
- ))
99507
+ action.id
99508
+ );
99509
+ })
99798
99510
  }
99799
99511
  );
99800
99512
  };
@@ -99857,6 +99569,7 @@ var SwipeActions = (props) => {
99857
99569
  }
99858
99570
  return /* @__PURE__ */ jsx(SwipeActionsInternal, { ...props });
99859
99571
  };
99572
+ SwipeActions.displayName = "SwipeActions";
99860
99573
  var ClickAnimationsInternal = ({
99861
99574
  children,
99862
99575
  className,
@@ -100145,6 +99858,13 @@ var ClickAnimationsInternal = ({
100145
99858
  const easedProgress = getEasingFunction(config.easing, progress);
100146
99859
  const intensity2 = config.intensity;
100147
99860
  switch (type) {
99861
+ case "ripple":
99862
+ const rippleScale = 1 + easedProgress * intensity2 * 0.05;
99863
+ const rippleOpacity = 1 - easedProgress * 0.2;
99864
+ return {
99865
+ transform: `scale(${rippleScale})`,
99866
+ opacity: rippleOpacity
99867
+ };
100148
99868
  case "scale":
100149
99869
  const scale = 1 + easedProgress * intensity2 * 0.1;
100150
99870
  return { transform: `scale(${scale})` };
@@ -100167,6 +99887,12 @@ var ClickAnimationsInternal = ({
100167
99887
  opacity: pulseOpacity,
100168
99888
  transform: `scale(${pulseScale})`
100169
99889
  };
99890
+ case "wave":
99891
+ const waveRotate = Math.sin(easedProgress * Math.PI * 2) * intensity2 * 5;
99892
+ const waveScale = 1 + Math.sin(easedProgress * Math.PI) * intensity2 * 0.08;
99893
+ return {
99894
+ transform: `scale(${waveScale}) rotate(${waveRotate}deg)`
99895
+ };
100170
99896
  default:
100171
99897
  return {};
100172
99898
  }
@@ -100244,6 +99970,25 @@ var ClickAnimations = (props) => {
100244
99970
  }
100245
99971
  return /* @__PURE__ */ jsx(ClickAnimationsInternal, { ...props });
100246
99972
  };
99973
+ ClickAnimations.displayName = "ClickAnimations";
99974
+ var getColorValue = (colorName) => {
99975
+ const colors = {
99976
+ blue: "#3b82f6",
99977
+ purple: "#a855f7",
99978
+ green: "#10b981",
99979
+ red: "#ef4444",
99980
+ yellow: "#eab308",
99981
+ cyan: "#06b6d4",
99982
+ indigo: "#6366f1",
99983
+ pink: "#ec4899",
99984
+ orange: "#f97316",
99985
+ violet: "#8b5cf6",
99986
+ emerald: "#10b981",
99987
+ rose: "#f43f5e",
99988
+ slate: "#64748b"
99989
+ };
99990
+ return colors[colorName] || colorName;
99991
+ };
100247
99992
  var FocusTransitionsInternal = forwardRef(({
100248
99993
  children,
100249
99994
  className,
@@ -100320,6 +100065,24 @@ var FocusTransitionsInternal = forwardRef(({
100320
100065
  offset: focusOffset,
100321
100066
  blur: focusBlur
100322
100067
  }), [duration, easing, intensity, focusColor, focusOffset, focusBlur]);
100068
+ const getEasingCSS = useCallback((easingType) => {
100069
+ switch (easingType) {
100070
+ case "ease":
100071
+ return "ease";
100072
+ case "ease-in":
100073
+ return "ease-in";
100074
+ case "ease-out":
100075
+ return "ease-out";
100076
+ case "ease-in-out":
100077
+ return "ease-in-out";
100078
+ case "bounce":
100079
+ return "cubic-bezier(0.68, -0.55, 0.265, 1.55)";
100080
+ case "elastic":
100081
+ return "cubic-bezier(0.68, -0.25, 0.265, 1.25)";
100082
+ default:
100083
+ return "ease-out";
100084
+ }
100085
+ }, []);
100323
100086
  const startAnimation = useCallback((direction, customConfig) => {
100324
100087
  if (prefersReducedMotion)
100325
100088
  return;
@@ -100488,9 +100251,10 @@ var FocusTransitionsInternal = forwardRef(({
100488
100251
  const getAnimationStyles = useCallback((config) => {
100489
100252
  const { type, intensity: intensity2, color, offset: offset4, blur: blur2 } = config;
100490
100253
  const baseStyles = {};
100254
+ const cssColor = getColorValue(color || focusColor);
100491
100255
  switch (type) {
100492
100256
  case "glow":
100493
- baseStyles.boxShadow = `0 0 ${intensity2 * 10}px ${intensity2 * 2}px ${color}`;
100257
+ baseStyles.boxShadow = `0 0 ${intensity2 * 10}px ${intensity2 * 2}px ${cssColor}`;
100494
100258
  if (blur2)
100495
100259
  baseStyles.filter = `blur(${blur2}px)`;
100496
100260
  break;
@@ -100498,7 +100262,7 @@ var FocusTransitionsInternal = forwardRef(({
100498
100262
  baseStyles.transform = `scale(${1 + intensity2 * 0.05})`;
100499
100263
  break;
100500
100264
  case "border":
100501
- baseStyles.border = `${focusThickness}px solid ${color}`;
100265
+ baseStyles.border = `${focusThickness}px solid ${cssColor}`;
100502
100266
  baseStyles.borderRadius = `${focusRadius}px`;
100503
100267
  break;
100504
100268
  case "shadow":
@@ -100511,34 +100275,35 @@ var FocusTransitionsInternal = forwardRef(({
100511
100275
  baseStyles.opacity = 0.8 + intensity2 * 0.2;
100512
100276
  break;
100513
100277
  case "pulse":
100514
- baseStyles.animation = `pulse ${duration}ms ${easing} infinite`;
100278
+ baseStyles.animation = `pulse ${duration}ms ${getEasingCSS(easing)} infinite`;
100515
100279
  break;
100516
100280
  case "outline":
100517
- baseStyles.outline = `${focusThickness}px solid ${color}`;
100281
+ baseStyles.outline = `${focusThickness}px solid ${cssColor}`;
100518
100282
  baseStyles.outlineOffset = `${offset4}px`;
100519
100283
  break;
100520
100284
  }
100521
100285
  return baseStyles;
100522
- }, [focusThickness, focusRadius, duration, easing]);
100286
+ }, [focusThickness, focusRadius, duration, easing, focusColor, getEasingCSS]);
100523
100287
  const getFocusRingStyles = useCallback(() => {
100524
100288
  if (!showFocusRing || !focusState.isFocused)
100525
100289
  return {};
100290
+ const cssColor = getColorValue(focusColor);
100526
100291
  const ringStyles = {
100527
100292
  position: "absolute",
100528
100293
  top: focusRingPosition === "outside" ? -focusOffset : 0,
100529
100294
  left: focusRingPosition === "outside" ? -focusOffset : 0,
100530
100295
  right: focusRingPosition === "outside" ? -focusOffset : 0,
100531
100296
  bottom: focusRingPosition === "outside" ? -focusOffset : 0,
100532
- border: `${focusThickness}px solid ${focusColor}`,
100297
+ border: `${focusThickness}px solid ${cssColor}`,
100533
100298
  borderRadius: focusRadius,
100534
100299
  pointerEvents: "none",
100535
100300
  zIndex: 1
100536
100301
  };
100537
100302
  if (glowEffect) {
100538
- ringStyles.boxShadow = `0 0 ${focusBlur * 2}px ${focusColor}`;
100303
+ ringStyles.boxShadow = `0 0 ${focusBlur * 2}px ${cssColor}`;
100539
100304
  }
100540
100305
  if (shadowEffect) {
100541
- ringStyles.filter = `drop-shadow(0 0 ${focusBlur}px ${focusColor})`;
100306
+ ringStyles.filter = `drop-shadow(0 0 ${focusBlur}px ${cssColor})`;
100542
100307
  }
100543
100308
  return ringStyles;
100544
100309
  }, [
@@ -100594,7 +100359,7 @@ var FocusTransitionsInternal = forwardRef(({
100594
100359
  "aria-disabled": disabled,
100595
100360
  style: {
100596
100361
  ...getCombinedStyles(),
100597
- transition: performanceMode ? "none" : `all ${duration}ms ${easing}`
100362
+ transition: performanceMode ? "none" : `all ${duration}ms ${getEasingCSS(easing)}`
100598
100363
  },
100599
100364
  children: [
100600
100365
  !customFocusRing && /* @__PURE__ */ jsx(
@@ -100617,13 +100382,16 @@ var FocusTransitionsInternal = forwardRef(({
100617
100382
  });
100618
100383
  FocusTransitionsInternal.displayName = "FocusTransitionsInternal";
100619
100384
  var FocusTransitions = forwardRef((props, ref) => {
100620
- const { hasProAccess } = useSubscription();
100621
- if (!hasProAccess) {
100622
- return /* @__PURE__ */ jsxs("div", { className: "p-8 text-center border-2 border-dashed border-gray-300 rounded-lg", children: [
100623
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-2", children: "Pro Component - FocusTransitions" }),
100624
- /* @__PURE__ */ jsx("p", { className: "text-gray-600 mb-4", children: "Bu bile\u015Fen MoonUI Pro aboneli\u011Fi gerektirir." }),
100625
- /* @__PURE__ */ jsx("button", { className: "bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors", children: "Pro'ya Y\xFCkselt" })
100626
- ] });
100385
+ const { hasProAccess, isLoading } = useSubscription();
100386
+ if (!isLoading && !hasProAccess) {
100387
+ return /* @__PURE__ */ jsx(
100388
+ ProLockScreen,
100389
+ {
100390
+ componentName: "FocusTransitions",
100391
+ compact: true,
100392
+ className: "inline-block"
100393
+ }
100394
+ );
100627
100395
  }
100628
100396
  return /* @__PURE__ */ jsx(FocusTransitionsInternal, { ...props, ref });
100629
100397
  });
@@ -101063,17 +100831,6 @@ FocusTransitions.displayName = "FocusTransitions";
101063
100831
  * @license MIT
101064
100832
  * @credits React Bits by David H
101065
100833
  */
101066
- /**
101067
- * SpringPhysics Component
101068
- *
101069
- * Provides realistic spring physics animations with damping and tension
101070
- * Derived from React Bits (https://github.com/DavidHDev/react-bits)
101071
- * Adapted for MoonUI Pro with TypeScript and enhanced features
101072
- *
101073
- * @author MoonUI Team
101074
- * @license MIT
101075
- * @credits React Bits by David H
101076
- */
101077
100834
  /**
101078
100835
  * ElasticAnimation Component
101079
100836
  *
@@ -101130,4 +100887,4 @@ FocusTransitions.displayName = "FocusTransitions";
101130
100887
  * @credits React Bits by David H
101131
100888
  */
101132
100889
 
101133
- export { MoonUIAccordionPro as Accordion, MoonUIAccordionContentPro as AccordionContent, MoonUIAccordionItemPro as AccordionItem, MoonUIAccordionTriggerPro as AccordionTrigger, Calendar3 as AdvancedCalendar, AdvancedChart, AdvancedForms, MoonUIAlertPro as Alert, MoonUIAlertDescriptionPro as AlertDescription, AlertDialog2 as AlertDialog, AlertDialogAction2 as AlertDialogAction, AlertDialogCancel2 as AlertDialogCancel, AlertDialogContent2 as AlertDialogContent, AlertDialogDescription2 as AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay2 as AlertDialogOverlay, AlertDialogPortal2 as AlertDialogPortal, AlertDialogTitle2 as AlertDialogTitle, AlertDialogTrigger2 as AlertDialogTrigger, MoonUIAlertTitlePro as AlertTitle, AnimatedNumber, MoonUIAspectRatioPro as AspectRatio, AuroraBackground, MoonUIAvatarPro as Avatar, MoonUIAvatarFallbackPro as AvatarFallback, MoonUIAvatarImagePro as AvatarImage, MoonUIBadgePro as Badge, BentoGrid, BentoGridItem, BlurFade, BounceEffect, MoonUIBreadcrumbPro as Breadcrumb, MoonUIBreadcrumbEllipsisPro as BreadcrumbEllipsis, MoonUIBreadcrumbItemPro as BreadcrumbItem, MoonUIBreadcrumbLinkPro as BreadcrumbLink, MoonUIBreadcrumbListPro as BreadcrumbList, MoonUIBreadcrumbPagePro as BreadcrumbPage, MoonUIBreadcrumbSeparatorPro as BreadcrumbSeparator, BubbleBackground, MoonUIButtonPro as Button, Calendar, Calendar3 as CalendarPro, MoonUICardPro as Card, MoonUICardContentPro as CardContent, MoonUICardDescriptionPro as CardDescription, MoonUICardFooterPro as CardFooter, MoonUICardHeaderPro as CardHeader, MoonUICardTitlePro as CardTitle, ChartWidget2 as ChartWidget, MoonUICheckboxPro as Checkbox, ClaudeProvider, ClickAnimations, CodeSnippets, MoonUICollapsiblePro as Collapsible, MoonUICollapsibleContentPro as CollapsibleContent, MoonUICollapsibleTriggerPro as CollapsibleTrigger, MoonUIColorPickerPro as ColorPicker, MoonUICommandPro as Command, MoonUICommandDialogPro as CommandDialog, MoonUICommandEmptyPro as CommandEmpty, MoonUICommandGroupPro as CommandGroup, MoonUICommandInputPro as CommandInput, MoonUICommandItemPro as CommandItem, MoonUICommandListPro as CommandList, MoonUICommandSeparatorPro as CommandSeparator, MoonUICommandShortcutPro as CommandShortcut, Confetti, ConfettiButton, CursorTrail, Dashboard, DataTable, MoonUIDialogPro as Dialog, MoonUIDialogClosePro as DialogClose, MoonUIDialogContentPro as DialogContent, MoonUIDialogDescriptionPro as DialogDescription, MoonUIDialogFooterPro as DialogFooter, MoonUIDialogHeaderPro as DialogHeader, MoonUIDialogTitlePro as DialogTitle, MoonUIDialogTriggerPro as DialogTrigger, DocsProProvider, DotPattern, DraggableList, MoonUIDropdownMenuPro as DropdownMenu, MoonUIDropdownMenuCheckboxItemPro as DropdownMenuCheckboxItem, MoonUIDropdownMenuContentPro as DropdownMenuContent, MoonUIDropdownMenuGroupPro as DropdownMenuGroup, MoonUIDropdownMenuItemPro as DropdownMenuItem, MoonUIDropdownMenuLabelPro as DropdownMenuLabel, MoonUIDropdownMenuPortalPro as DropdownMenuPortal, MoonUIDropdownMenuRadioGroupPro as DropdownMenuRadioGroup, MoonUIDropdownMenuRadioItemPro as DropdownMenuRadioItem, MoonUIDropdownMenuSeparatorPro as DropdownMenuSeparator, MoonUIDropdownMenuShortcutPro as DropdownMenuShortcut, MoonUIDropdownMenuSubPro as DropdownMenuSub, MoonUIDropdownMenuSubContentPro as DropdownMenuSubContent, MoonUIDropdownMenuSubTriggerPro as DropdownMenuSubTrigger, MoonUIDropdownMenuTriggerPro as DropdownMenuTrigger, ElasticAnimation, ErrorBoundary, FadeTransitions, FlipText, FloatingActionButton, FloatingDock, FloatingElements, FocusTransitions, FormWizard, FormWizardNavigation, FormWizardProgress, FormWizardStep, FunnelWidget, MoonUIGalleryItemPro as GalleryItem, GaugeWidget, GeminiProvider, GeometricPatterns, GestureDrawer, GitHubStars, GlitchBackground, GlitchText, GlowCard, GlowEffect, GradientFlow, GradientText, GridDistortion, GridPattern, HealthCheck, HoverCard2 as HoverCard, HoverCard3D, HoverCardContent2 as HoverCardContent, HoverCardTrigger2 as HoverCardTrigger, MoonUIInputPro as Input, KPIWidget, Kanban, LANGUAGE_COLORS, MoonUILabelPro as Label, LazyComponent, LazyImage, LazyList, LightboxContent, LightboxProvider, LightboxTrigger, LiquidBackground, MagneticButton, MagneticElements, Marquee, MatrixRain, MoonUIMediaGalleryPro as MediaGallery, MemoryAnalytics, MemoryEfficientData, MeshGradient, Meteors, MoonUIAccordionContentPro, MoonUIAccordionItemPro, MoonUIAccordionPro, MoonUIAccordionTriggerPro, MoonUIAdvancedChartPro, MoonUIAlertDescriptionPro, AlertDialogAction2 as MoonUIAlertDialogActionPro, AlertDialogCancel2 as MoonUIAlertDialogCancelPro, AlertDialogContent2 as MoonUIAlertDialogContentPro, AlertDialogDescription2 as MoonUIAlertDialogDescriptionPro, AlertDialogFooter as MoonUIAlertDialogFooterPro, AlertDialogHeader as MoonUIAlertDialogHeaderPro, AlertDialogOverlay2 as MoonUIAlertDialogOverlayPro, AlertDialogPortal2 as MoonUIAlertDialogPortalPro, AlertDialog2 as MoonUIAlertDialogPro, AlertDialogTitle2 as MoonUIAlertDialogTitlePro, AlertDialogTrigger2 as MoonUIAlertDialogTriggerPro, MoonUIAlertPro, MoonUIAlertTitlePro, MoonUIAnimatedButtonPro, MoonUIAnimatedListPro, MoonUIAspectRatioPro, MoonUIAsyncAvatarPro, MoonUIAuthProvider, MoonUIAvatarFallbackPro, MoonUIAvatarGroupPro2 as MoonUIAvatarGroupPro, MoonUIAvatarImagePro, MoonUIAvatarPro2 as MoonUIAvatarPro, MoonUIBadgePro, MoonUIBreadcrumbEllipsisPro, MoonUIBreadcrumbItemPro, MoonUIBreadcrumbLinkPro, MoonUIBreadcrumbListPro, MoonUIBreadcrumbPagePro, MoonUIBreadcrumbPro, MoonUIBreadcrumbSeparatorPro, MoonUIButtonPro, Calendar3 as MoonUICalendarPro, MoonUICardContentPro, MoonUICardDescriptionPro, MoonUICardFooterPro, MoonUICardHeaderPro, MoonUICardPro, MoonUICardTitlePro, ChartWidget2 as MoonUIChartWidget, MoonUICheckboxPro, MoonUICollapsibleContentPro, MoonUICollapsiblePro, MoonUICollapsibleTriggerPro, MoonUIColorPickerPro, MoonUICommandDialogPro, MoonUICommandEmptyPro, MoonUICommandGroupPro, MoonUICommandInputPro, MoonUICommandItemPro, MoonUICommandListPro, MoonUICommandPro, MoonUICommandSeparatorPro, MoonUICommandShortcutPro, MoonUICreditCardInputPro, Dashboard as MoonUIDashboardPro, MoonUIDataTable, DataTable as MoonUIDataTablePro, MoonUIDialogClosePro, MoonUIDialogContentPro, MoonUIDialogDescriptionPro, MoonUIDialogFooterPro, MoonUIDialogHeaderPro, MoonUIDialogPro, MoonUIDialogTitlePro, MoonUIDialogTriggerPro, DraggableList as MoonUIDraggableListPro, MoonUIDropdownMenuCheckboxItemPro, MoonUIDropdownMenuContentPro, MoonUIDropdownMenuGroupPro, MoonUIDropdownMenuItemPro, MoonUIDropdownMenuLabelPro, MoonUIDropdownMenuPortalPro, MoonUIDropdownMenuPro, MoonUIDropdownMenuRadioGroupPro, MoonUIDropdownMenuRadioItemPro, MoonUIDropdownMenuSeparatorPro, MoonUIDropdownMenuShortcutPro, MoonUIDropdownMenuSubContentPro, MoonUIDropdownMenuSubPro, MoonUIDropdownMenuSubTriggerPro, MoonUIDropdownMenuTriggerPro, file_upload_default as MoonUIFileUploadPro, MoonUIFormWizardPro, FunnelWidget as MoonUIFunnelWidget, MoonUIGalleryItemPro, GaugeWidget as MoonUIGaugeWidget, MoonUIGestureDrawerPro, MoonUIInputPro, KPIWidget as MoonUIKPIWidget, MoonUIKanbanPro, MoonUILabelPro, LightboxContent as MoonUILightboxContentPro, SimpleLightbox as MoonUILightboxPro, LightboxProvider as MoonUILightboxProviderPro, LightboxTrigger as MoonUILightboxTriggerPro, MagneticButton as MoonUIMagneticButtonPro, MoonUIMediaGalleryPro, MoonUIMemoryEfficientDataPro, Navbar as MoonUINavbarPro, MoonUIPaginationContentPro, MoonUIPaginationEllipsisPro, MoonUIPaginationItemPro, MoonUIPaginationLinkPro, MoonUIPaginationNextPro, MoonUIPaginationPreviousPro, MoonUIPaginationPro, PhoneNumberInput as MoonUIPhoneNumberInputPro, MoonUIPhoneNumberInputSimple, MoonUIPopoverContentPro, MoonUIPopoverPro, MoonUIPopoverTriggerPro, MoonUIProgressPro, MoonUIQuizFormPro2 as MoonUIQuizFormPro, MoonUIRadioGroupContextPro, MoonUIRadioGroupItemPro, MoonUIRadioGroupPro, MoonUIRadioItemWithLabelPro, MoonUIRadioLabelPro, RevenueWidget as MoonUIRevenueWidget, RichTextEditor as MoonUIRichTextEditorPro, MoonUISelectContentPro, MoonUISelectGroupPro, MoonUISelectItemPro, MoonUISelectLabelPro, MoonUISelectPro, MoonUISelectSeparatorPro, MoonUISelectTriggerPro, MoonUISelectValuePro, SelectableVirtualList as MoonUISelectableVirtualListPro, MoonUISeparatorPro, ServerMonitorWidget as MoonUIServerMonitorWidget, Sidebar as MoonUISidebarPro, MoonUISkeletonPro, MoonUISliderPro, MoonUISpotlightCardPro, SwipeableCard as MoonUISwipeableCardPro, MoonUISwitchPro, MoonUITableBodyPro, MoonUITableCaptionPro, MoonUITableCellPro, MoonUITableFooterPro, MoonUITableHeadPro, MoonUITableHeaderPro, MoonUITablePro, MoonUITableRowPro, MoonUITabsContentPro, MoonUITabsPro as MoonUITabsEnhanced, MoonUITabsListPro, MoonUITabsPro, MoonUITabsTriggerPro, MoonUITextareaPro, Timeline as MoonUITimelinePro, MoonUIToastPro, MoonUITogglePro, MoonUITooltipContentPro, MoonUITooltipPro, MoonUITooltipProviderPro, MoonUITooltipTriggerPro, VirtualList as MoonUIVirtualListPro, WidgetBase as MoonUIWidgetBase, MoonUIalertVariantsPro, MoonUIaspectRatioVariantsPro, MoonUIbreadcrumbVariantsPro, collapsibleContentVariants as MoonUIcollapsibleContentVariantsPro, collapsibleTriggerVariants as MoonUIcollapsibleTriggerVariantsPro, MoonUIradioGroupItemVariantsPro, MoonUItableVariantsPro, MoonUItoggleVariantsPro, MorphingText, MouseTrail, Navbar, NavigationMenu2 as NavigationMenu, NavigationMenuContent2 as NavigationMenuContent, NavigationMenuIndicator2 as NavigationMenuIndicator, NavigationMenuItem2 as NavigationMenuItem, NavigationMenuLink2 as NavigationMenuLink, NavigationMenuList2 as NavigationMenuList, NavigationMenuTrigger2 as NavigationMenuTrigger, NavigationMenuViewport2 as NavigationMenuViewport, NeonEffect, NumberTicker, OpenAIProvider, OptimizedImage, MoonUIPaginationPro as Pagination, MoonUIPaginationContentPro as PaginationContent, MoonUIPaginationEllipsisPro as PaginationEllipsis, MoonUIPaginationItemPro as PaginationItem, MoonUIPaginationLinkPro as PaginationLink, MoonUIPaginationNextPro as PaginationNext, MoonUIPaginationPreviousPro as PaginationPrevious, ParallaxScroll, Particles, PathAnimations, PerformanceDebugger, PerformanceMonitor, PhoneNumberInput, PinchZoom, MoonUIPopoverPro as Popover, MoonUIPopoverContentPro as PopoverContent, MoonUIPopoverTriggerPro as PopoverTrigger, ProLockScreen, MoonUIProgressPro as Progress, QuizForm, MoonUIRadioGroupPro as RadioGroup, MoonUIRadioGroupContextPro as RadioGroupContext, MoonUIRadioGroupItemPro as RadioGroupItem, MoonUIRadioItemWithLabelPro as RadioItemWithLabel, MoonUIRadioLabelPro as RadioLabel, RealTimePerformanceMonitor, RevealCard, RevealCards, RevenueWidget, RichTextEditor, Ripple, spotlightPresets as SPOTLIGHT_PRESETS, SVGAnimations, ScrambledText, ScrollArea, ScrollBar, ScrollReveal, MoonUISelectPro as Select, MoonUISelectContentPro as SelectContent, MoonUISelectGroupPro as SelectGroup, MoonUISelectItemPro as SelectItem, MoonUISelectLabelPro as SelectLabel, MoonUISelectSeparatorPro as SelectSeparator, MoonUISelectTriggerPro as SelectTrigger, MoonUISelectValuePro as SelectValue, SelectableVirtualList, MoonUISeparatorPro as Separator, ServerMonitorWidget, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shimmer, ShinyText, Sidebar, SimpleLightbox, MoonUISkeletonPro as Skeleton, MoonUISliderPro as Slider, Sparkles36 as Sparkles, SplashCursor, SplashCursorContainer, Spotlight, SpringPhysics, Starfield, SubscriptionProvider, SwipeActions, SwipeableCard, MoonUISwitchPro as Switch, MoonUITablePro as Table, MoonUITableBodyPro as TableBody, MoonUITableCaptionPro as TableCaption, MoonUITableCellPro as TableCell, MoonUITableFooterPro as TableFooter, MoonUITableHeadPro as TableHead, MoonUITableHeaderPro as TableHeader, MoonUITableRowPro as TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text3D, TextReveal, MoonUITextareaPro as Textarea, Timeline, MoonUIToastPro as Toast, MoonUITogglePro as Toggle, MoonUITooltipPro as Tooltip, MoonUITooltipContentPro as TooltipContent, MoonUITooltipProviderPro as TooltipProvider, MoonUITooltipTriggerPro as TooltipTrigger, TouchGestures, TypewriterText, VirtualList, Waves, WavyText, WidgetBase, WordRotate, MoonUIalertVariantsPro as alertVariants, MoonUIaspectRatioVariantsPro as aspectRatioVariants, moonUIBadgeVariantsPro as badgeVariants, MoonUIbreadcrumbVariantsPro as breadcrumbVariants, moonUIButtonProVariants as buttonVariants, clearAuth, clearAuth as clearAuthV2, cn, codeSnippetsPresets, collapsibleContentVariants, collapsibleTriggerVariants, commandVariantsPro, createAIProvider, forceRefresh, forceRefresh as forceRefreshV2, galleryItemVariants, galleryVariants, getExpandableColumn, hoverCard3DVariants, magneticButtonVariants, moonUIAnimatedButtonProVariants, badgeVariants as moonUIAvatarBadgeVariants, avatarVariants as moonUIAvatarProVariants, statusVariants as moonUIAvatarStatusVariants, moonUIBadgeVariantsPro, moonUIButtonProVariants, gestureDrawerVariants as moonUIGestureDrawerProVariants, magneticButtonVariants as moonUIMagneticButtonVariantsPro, moonUISeparatorVariantsPro, navigationMenuTriggerStyle, countries as phoneCountries, MoonUIradioGroupItemVariantsPro as radioGroupItemVariants, moonUISeparatorVariantsPro as separatorVariants, spotlightPresets, MoonUItableVariantsPro as tableVariants, MoonUItoggleVariantsPro as toggleVariants, useAccordionAnalytics, useCollapsibleAnalytics, useExpandableRows, useFormWizard, useMoonUIAuth, useStreamingData, useSubscription, useSubscriptionContext, useSubscription as useSubscriptionV2, useVirtualList };
100890
+ export { MoonUIAccordionPro as Accordion, MoonUIAccordionContentPro as AccordionContent, MoonUIAccordionItemPro as AccordionItem, MoonUIAccordionTriggerPro as AccordionTrigger, Calendar3 as AdvancedCalendar, AdvancedChart, AdvancedForms, MoonUIAlertPro as Alert, MoonUIAlertDescriptionPro as AlertDescription, AlertDialog2 as AlertDialog, AlertDialogAction2 as AlertDialogAction, AlertDialogCancel2 as AlertDialogCancel, AlertDialogContent2 as AlertDialogContent, AlertDialogDescription2 as AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay2 as AlertDialogOverlay, AlertDialogPortal2 as AlertDialogPortal, AlertDialogTitle2 as AlertDialogTitle, AlertDialogTrigger2 as AlertDialogTrigger, MoonUIAlertTitlePro as AlertTitle, MoonUIAnimatedListPro as AnimatedList, AnimatedNumber, MoonUIAspectRatioPro as AspectRatio, AuroraBackground, MoonUIAvatarPro as Avatar, MoonUIAvatarFallbackPro as AvatarFallback, MoonUIAvatarImagePro as AvatarImage, MoonUIBadgePro as Badge, BentoGrid, BentoGridItem, BlurFade, BounceEffect, MoonUIBreadcrumbPro as Breadcrumb, MoonUIBreadcrumbEllipsisPro as BreadcrumbEllipsis, MoonUIBreadcrumbItemPro as BreadcrumbItem, MoonUIBreadcrumbLinkPro as BreadcrumbLink, MoonUIBreadcrumbListPro as BreadcrumbList, MoonUIBreadcrumbPagePro as BreadcrumbPage, MoonUIBreadcrumbSeparatorPro as BreadcrumbSeparator, BubbleBackground, MoonUIButtonPro as Button, Calendar, Calendar3 as CalendarPro, MoonUICardPro as Card, MoonUICardContentPro as CardContent, MoonUICardDescriptionPro as CardDescription, MoonUICardFooterPro as CardFooter, MoonUICardHeaderPro as CardHeader, MoonUICardTitlePro as CardTitle, ChartWidget2 as ChartWidget, MoonUICheckboxPro as Checkbox, ClaudeProvider, ClickAnimations, CodeSnippets, MoonUICollapsiblePro as Collapsible, MoonUICollapsibleContentPro as CollapsibleContent, MoonUICollapsibleTriggerPro as CollapsibleTrigger, MoonUIColorPickerPro as ColorPicker, MoonUICommandPro as Command, MoonUICommandDialogPro as CommandDialog, MoonUICommandEmptyPro as CommandEmpty, MoonUICommandGroupPro as CommandGroup, MoonUICommandInputPro as CommandInput, MoonUICommandItemPro as CommandItem, MoonUICommandListPro as CommandList, MoonUICommandSeparatorPro as CommandSeparator, MoonUICommandShortcutPro as CommandShortcut, Confetti, ConfettiButton, CursorTrail, Dashboard, DataTable, MoonUIDialogPro as Dialog, MoonUIDialogClosePro as DialogClose, MoonUIDialogContentPro as DialogContent, MoonUIDialogDescriptionPro as DialogDescription, MoonUIDialogFooterPro as DialogFooter, MoonUIDialogHeaderPro as DialogHeader, MoonUIDialogTitlePro as DialogTitle, MoonUIDialogTriggerPro as DialogTrigger, DocsProProvider, DotPattern, DraggableList, MoonUIDropdownMenuPro as DropdownMenu, MoonUIDropdownMenuCheckboxItemPro as DropdownMenuCheckboxItem, MoonUIDropdownMenuContentPro as DropdownMenuContent, MoonUIDropdownMenuGroupPro as DropdownMenuGroup, MoonUIDropdownMenuItemPro as DropdownMenuItem, MoonUIDropdownMenuLabelPro as DropdownMenuLabel, MoonUIDropdownMenuPortalPro as DropdownMenuPortal, MoonUIDropdownMenuRadioGroupPro as DropdownMenuRadioGroup, MoonUIDropdownMenuRadioItemPro as DropdownMenuRadioItem, MoonUIDropdownMenuSeparatorPro as DropdownMenuSeparator, MoonUIDropdownMenuShortcutPro as DropdownMenuShortcut, MoonUIDropdownMenuSubPro as DropdownMenuSub, MoonUIDropdownMenuSubContentPro as DropdownMenuSubContent, MoonUIDropdownMenuSubTriggerPro as DropdownMenuSubTrigger, MoonUIDropdownMenuTriggerPro as DropdownMenuTrigger, ElasticAnimation, ErrorBoundary, FadeTransitions, FlipText, FloatingActionButton, FloatingDock, FloatingElements, FocusTransitions, FormWizard, FormWizardNavigation, FormWizardProgress, FormWizardStep, FunnelWidget, MoonUIGalleryItemPro as GalleryItem, GaugeWidget, GeminiProvider, GeometricPatterns, GestureDrawer, GitHubStars, GlitchBackground, GlitchText, GlowCard, GlowEffect, GradientFlow, GradientText, GridDistortion, GridPattern, HealthCheck, HoverCard2 as HoverCard, HoverCard3D, HoverCardContent2 as HoverCardContent, HoverCardTrigger2 as HoverCardTrigger, MoonUIInputPro as Input, KPIWidget, Kanban, LANGUAGE_COLORS, MoonUILabelPro as Label, LazyComponent, LazyImage, LazyList, LightboxContent, LightboxProvider, LightboxTrigger, LiquidBackground, MagneticButton, MagneticElements, Marquee, MatrixRain, MoonUIMediaGalleryPro as MediaGallery, MemoryAnalytics, MemoryEfficientData, MeshGradient, Meteors, MoonUIAccordionContentPro, MoonUIAccordionItemPro, MoonUIAccordionPro, MoonUIAccordionTriggerPro, MoonUIAdvancedChartPro, MoonUIAlertDescriptionPro, AlertDialogAction2 as MoonUIAlertDialogActionPro, AlertDialogCancel2 as MoonUIAlertDialogCancelPro, AlertDialogContent2 as MoonUIAlertDialogContentPro, AlertDialogDescription2 as MoonUIAlertDialogDescriptionPro, AlertDialogFooter as MoonUIAlertDialogFooterPro, AlertDialogHeader as MoonUIAlertDialogHeaderPro, AlertDialogOverlay2 as MoonUIAlertDialogOverlayPro, AlertDialogPortal2 as MoonUIAlertDialogPortalPro, AlertDialog2 as MoonUIAlertDialogPro, AlertDialogTitle2 as MoonUIAlertDialogTitlePro, AlertDialogTrigger2 as MoonUIAlertDialogTriggerPro, MoonUIAlertPro, MoonUIAlertTitlePro, MoonUIAnimatedButtonPro, MoonUIAnimatedListPro, MoonUIAspectRatioPro, MoonUIAsyncAvatarPro, MoonUIAuthProvider, MoonUIAvatarFallbackPro, MoonUIAvatarGroupPro2 as MoonUIAvatarGroupPro, MoonUIAvatarImagePro, MoonUIAvatarPro2 as MoonUIAvatarPro, MoonUIBadgePro, BounceEffect as MoonUIBounceEffectPro, MoonUIBreadcrumbEllipsisPro, MoonUIBreadcrumbItemPro, MoonUIBreadcrumbLinkPro, MoonUIBreadcrumbListPro, MoonUIBreadcrumbPagePro, MoonUIBreadcrumbPro, MoonUIBreadcrumbSeparatorPro, MoonUIButtonPro, Calendar3 as MoonUICalendarPro, MoonUICardContentPro, MoonUICardDescriptionPro, MoonUICardFooterPro, MoonUICardHeaderPro, MoonUICardPro, MoonUICardTitlePro, ChartWidget2 as MoonUIChartWidget, MoonUICheckboxPro, ClickAnimations as MoonUIClickAnimationsPro, MoonUICollapsibleContentPro, MoonUICollapsiblePro, MoonUICollapsibleTriggerPro, MoonUIColorPickerPro, MoonUICommandDialogPro, MoonUICommandEmptyPro, MoonUICommandGroupPro, MoonUICommandInputPro, MoonUICommandItemPro, MoonUICommandListPro, MoonUICommandPro, MoonUICommandSeparatorPro, MoonUICommandShortcutPro, MoonUICreditCardInputPro, Dashboard as MoonUIDashboardPro, MoonUIDataTable, DataTable as MoonUIDataTablePro, MoonUIDialogClosePro, MoonUIDialogContentPro, MoonUIDialogDescriptionPro, MoonUIDialogFooterPro, MoonUIDialogHeaderPro, MoonUIDialogPro, MoonUIDialogTitlePro, MoonUIDialogTriggerPro, DraggableList as MoonUIDraggableListPro, MoonUIDropdownMenuCheckboxItemPro, MoonUIDropdownMenuContentPro, MoonUIDropdownMenuGroupPro, MoonUIDropdownMenuItemPro, MoonUIDropdownMenuLabelPro, MoonUIDropdownMenuPortalPro, MoonUIDropdownMenuPro, MoonUIDropdownMenuRadioGroupPro, MoonUIDropdownMenuRadioItemPro, MoonUIDropdownMenuSeparatorPro, MoonUIDropdownMenuShortcutPro, MoonUIDropdownMenuSubContentPro, MoonUIDropdownMenuSubPro, MoonUIDropdownMenuSubTriggerPro, MoonUIDropdownMenuTriggerPro, ElasticAnimation as MoonUIElasticAnimationPro, FadeTransitions as MoonUIFadeTransitionsPro, file_upload_default as MoonUIFileUploadPro, FocusTransitions as MoonUIFocusTransitionsPro, MoonUIFormWizardPro, FunnelWidget as MoonUIFunnelWidget, MoonUIGalleryItemPro, GaugeWidget as MoonUIGaugeWidget, MoonUIGestureDrawerPro, GlowEffect as MoonUIGlowEffectPro, MoonUIInputPro, KPIWidget as MoonUIKPIWidget, MoonUIKanbanPro, MoonUILabelPro, LightboxContent as MoonUILightboxContentPro, SimpleLightbox as MoonUILightboxPro, LightboxProvider as MoonUILightboxProviderPro, LightboxTrigger as MoonUILightboxTriggerPro, MagneticButton as MoonUIMagneticButtonPro, MoonUIMediaGalleryPro, MoonUIMemoryEfficientDataPro, Navbar as MoonUINavbarPro, MoonUIPaginationContentPro, MoonUIPaginationEllipsisPro, MoonUIPaginationItemPro, MoonUIPaginationLinkPro, MoonUIPaginationNextPro, MoonUIPaginationPreviousPro, MoonUIPaginationPro, PathAnimations as MoonUIPathAnimationsPro, PhoneNumberInput as MoonUIPhoneNumberInputPro, MoonUIPhoneNumberInputSimple, MoonUIPopoverContentPro, MoonUIPopoverPro, MoonUIPopoverTriggerPro, MoonUIProgressPro, MoonUIQuizFormPro2 as MoonUIQuizFormPro, MoonUIRadioGroupContextPro, MoonUIRadioGroupItemPro, MoonUIRadioGroupPro, MoonUIRadioItemWithLabelPro, MoonUIRadioLabelPro, RevenueWidget as MoonUIRevenueWidget, RichTextEditor as MoonUIRichTextEditorPro, SVGAnimations as MoonUISVGAnimationsPro, MoonUISelectContentPro, MoonUISelectGroupPro, MoonUISelectItemPro, MoonUISelectLabelPro, MoonUISelectPro, MoonUISelectSeparatorPro, MoonUISelectTriggerPro, MoonUISelectValuePro, SelectableVirtualList as MoonUISelectableVirtualListPro, MoonUISeparatorPro, ServerMonitorWidget as MoonUIServerMonitorWidget, Sidebar as MoonUISidebarPro, MoonUISkeletonPro, MoonUISliderPro, MoonUISpotlightCardPro, SwipeActions as MoonUISwipeActionsPro, SwipeableCard as MoonUISwipeableCardPro, MoonUISwitchPro, MoonUITableBodyPro, MoonUITableCaptionPro, MoonUITableCellPro, MoonUITableFooterPro, MoonUITableHeadPro, MoonUITableHeaderPro, MoonUITablePro, MoonUITableRowPro, MoonUITabsContentPro, MoonUITabsPro as MoonUITabsEnhanced, MoonUITabsListPro, MoonUITabsPro, MoonUITabsTriggerPro, MoonUITextareaPro, Timeline as MoonUITimelinePro, MoonUIToastPro, MoonUITogglePro, MoonUITooltipContentPro, MoonUITooltipPro, MoonUITooltipProviderPro, MoonUITooltipTriggerPro, TouchGestures as MoonUITouchGesturesPro, VirtualList as MoonUIVirtualListPro, WidgetBase as MoonUIWidgetBase, MoonUIalertVariantsPro, MoonUIaspectRatioVariantsPro, MoonUIbreadcrumbVariantsPro, collapsibleContentVariants as MoonUIcollapsibleContentVariantsPro, collapsibleTriggerVariants as MoonUIcollapsibleTriggerVariantsPro, MoonUIradioGroupItemVariantsPro, MoonUItableVariantsPro, MoonUItoggleVariantsPro, MorphingText, MouseTrail, Navbar, NavigationMenu2 as NavigationMenu, NavigationMenuContent2 as NavigationMenuContent, NavigationMenuIndicator2 as NavigationMenuIndicator, NavigationMenuItem2 as NavigationMenuItem, NavigationMenuLink2 as NavigationMenuLink, NavigationMenuList2 as NavigationMenuList, NavigationMenuTrigger2 as NavigationMenuTrigger, NavigationMenuViewport2 as NavigationMenuViewport, NeonEffect, NumberTicker, OpenAIProvider, OptimizedImage, MoonUIPaginationPro as Pagination, MoonUIPaginationContentPro as PaginationContent, MoonUIPaginationEllipsisPro as PaginationEllipsis, MoonUIPaginationItemPro as PaginationItem, MoonUIPaginationLinkPro as PaginationLink, MoonUIPaginationNextPro as PaginationNext, MoonUIPaginationPreviousPro as PaginationPrevious, ParallaxScroll, Particles, PathAnimations, PerformanceDebugger, PerformanceMonitor, PhoneNumberInput, PinchZoom, MoonUIPopoverPro as Popover, MoonUIPopoverContentPro as PopoverContent, MoonUIPopoverTriggerPro as PopoverTrigger, ProLockScreen, MoonUIProgressPro as Progress, QuizForm, MoonUIRadioGroupPro as RadioGroup, MoonUIRadioGroupContextPro as RadioGroupContext, MoonUIRadioGroupItemPro as RadioGroupItem, MoonUIRadioItemWithLabelPro as RadioItemWithLabel, MoonUIRadioLabelPro as RadioLabel, RealTimePerformanceMonitor, RevealCard, RevealCards, RevenueWidget, RichTextEditor, Ripple, spotlightPresets as SPOTLIGHT_PRESETS, SVGAnimations, ScrambledText, ScrollArea, ScrollBar, ScrollReveal, MoonUISelectPro as Select, MoonUISelectContentPro as SelectContent, MoonUISelectGroupPro as SelectGroup, MoonUISelectItemPro as SelectItem, MoonUISelectLabelPro as SelectLabel, MoonUISelectSeparatorPro as SelectSeparator, MoonUISelectTriggerPro as SelectTrigger, MoonUISelectValuePro as SelectValue, SelectableVirtualList, MoonUISeparatorPro as Separator, ServerMonitorWidget, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shimmer, ShinyText, Sidebar, SimpleLightbox, MoonUISkeletonPro as Skeleton, MoonUISliderPro as Slider, Sparkles36 as Sparkles, SplashCursor, SplashCursorContainer, Spotlight, Starfield, SubscriptionProvider, SwipeActions, SwipeableCard, MoonUISwitchPro as Switch, MoonUITablePro as Table, MoonUITableBodyPro as TableBody, MoonUITableCaptionPro as TableCaption, MoonUITableCellPro as TableCell, MoonUITableFooterPro as TableFooter, MoonUITableHeadPro as TableHead, MoonUITableHeaderPro as TableHeader, MoonUITableRowPro as TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text3D, TextReveal, MoonUITextareaPro as Textarea, Timeline, MoonUIToastPro as Toast, MoonUITogglePro as Toggle, MoonUITooltipPro as Tooltip, MoonUITooltipContentPro as TooltipContent, MoonUITooltipProviderPro as TooltipProvider, MoonUITooltipTriggerPro as TooltipTrigger, TouchGestures, TypewriterText, VirtualList, Waves, WavyText, WidgetBase, WordRotate, MoonUIalertVariantsPro as alertVariants, MoonUIaspectRatioVariantsPro as aspectRatioVariants, moonUIBadgeVariantsPro as badgeVariants, MoonUIbreadcrumbVariantsPro as breadcrumbVariants, moonUIButtonProVariants as buttonVariants, clearAuth, clearAuth as clearAuthV2, cn, codeSnippetsPresets, collapsibleContentVariants, collapsibleTriggerVariants, commandVariantsPro, createAIProvider, forceRefresh, forceRefresh as forceRefreshV2, galleryItemVariants, galleryVariants, getExpandableColumn, hoverCard3DVariants, magneticButtonVariants, moonUIAnimatedButtonProVariants, badgeVariants as moonUIAvatarBadgeVariants, avatarVariants as moonUIAvatarProVariants, statusVariants as moonUIAvatarStatusVariants, moonUIBadgeVariantsPro, moonUIButtonProVariants, gestureDrawerVariants as moonUIGestureDrawerProVariants, magneticButtonVariants as moonUIMagneticButtonVariantsPro, moonUISeparatorVariantsPro, navigationMenuTriggerStyle, countries as phoneCountries, MoonUIradioGroupItemVariantsPro as radioGroupItemVariants, moonUISeparatorVariantsPro as separatorVariants, spotlightPresets, MoonUItableVariantsPro as tableVariants, MoonUItoggleVariantsPro as toggleVariants, useAccordionAnalytics, useCollapsibleAnalytics, useExpandableRows, useFormWizard, useMoonUIAuth, useStreamingData, useSubscription, useSubscriptionContext, useSubscription as useSubscriptionV2, useVirtualList };