@moontra/moonui-pro 3.4.2 → 3.4.4

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;
@@ -91766,7 +91766,7 @@ var GeometricPatternsInternal = ({
91766
91766
  lastFrameTimeRef.current = currentTime;
91767
91767
  timeRef.current += 1;
91768
91768
  const rect = container.getBoundingClientRect();
91769
- const rawDPR = window.devicePixelRatio || 1;
91769
+ const rawDPR = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
91770
91770
  Math.min(rawDPR, performanceSettings.maxDPR);
91771
91771
  ctx.clearRect(0, 0, canvas.width, canvas.height);
91772
91772
  if (backgroundColor !== "transparent") {
@@ -91795,7 +91795,7 @@ var GeometricPatternsInternal = ({
91795
91795
  if (!canvas || !container)
91796
91796
  return;
91797
91797
  const rect = container.getBoundingClientRect();
91798
- const rawDPR = window.devicePixelRatio || 1;
91798
+ const rawDPR = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
91799
91799
  const devicePixelRatio = Math.min(rawDPR, performanceSettings.maxDPR);
91800
91800
  const newWidth = rect.width * devicePixelRatio;
91801
91801
  const newHeight = rect.height * devicePixelRatio;
@@ -91883,7 +91883,7 @@ var GeometricPatternsInternal = ({
91883
91883
  if (!canvas || !container)
91884
91884
  return;
91885
91885
  const rect = container.getBoundingClientRect();
91886
- const rawDPR = window.devicePixelRatio || 1;
91886
+ const rawDPR = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
91887
91887
  const devicePixelRatio = Math.min(rawDPR, performanceSettings.maxDPR);
91888
91888
  canvas.width = rect.width * devicePixelRatio;
91889
91889
  canvas.height = rect.height * devicePixelRatio;
@@ -93848,7 +93848,11 @@ var GlowEffectInternal = ({
93848
93848
  const [isHovered, setIsHovered] = useState(false);
93849
93849
  const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
93850
93850
  const [flickerState, setFlickerState] = useState(true);
93851
+ const [mounted, setMounted] = useState(false);
93851
93852
  useRef(void 0);
93853
+ useEffect(() => {
93854
+ setMounted(true);
93855
+ }, []);
93852
93856
  const isMobile = () => {
93853
93857
  return typeof window !== "undefined" && window.innerWidth <= 768;
93854
93858
  };
@@ -94016,6 +94020,20 @@ var GlowEffectInternal = ({
94016
94020
  animation: glow-rainbow ${duration}ms linear infinite;
94017
94021
  }
94018
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
+ }
94019
94037
  return /* @__PURE__ */ jsxs(Fragment, { children: [
94020
94038
  /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: animationStyles } }),
94021
94039
  /* @__PURE__ */ jsxs(
@@ -94062,7 +94080,7 @@ var GlowEffectInternal = ({
94062
94080
  clipPath: getClipPath(),
94063
94081
  filter: customFilter || (animation === "rainbow" ? "hue-rotate(0deg)" : void 0),
94064
94082
  background: gradient ? getGlowColor() : void 0,
94065
- opacity: gradient ? 0.5 : 1
94083
+ opacity: gradient ? "0.5" : "1"
94066
94084
  }
94067
94085
  }
94068
94086
  ),
@@ -96894,6 +96912,35 @@ var ScrollReveal = (props) => {
96894
96912
  return /* @__PURE__ */ jsx(ScrollRevealInternal, { ...props });
96895
96913
  };
96896
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
+ };
96897
96944
  var BounceEffectInternal = ({
96898
96945
  children,
96899
96946
  trigger = "hover",
@@ -96931,7 +96978,9 @@ var BounceEffectInternal = ({
96931
96978
  }) => {
96932
96979
  const elementRef = useRef(null);
96933
96980
  const animationRef = useRef(void 0);
96934
- const [isAnimating, setIsAnimating] = useState(false);
96981
+ const isAnimatingRef = useRef(false);
96982
+ const hasAutoTriggered = useRef(false);
96983
+ const [animationState, setAnimationState] = useState(false);
96935
96984
  const [currentBounce, setCurrentBounce] = useState(0);
96936
96985
  const [position, setPosition] = useState({ x: 0, y: 0 });
96937
96986
  const [rotation, setRotation] = useState(0);
@@ -96939,39 +96988,10 @@ var BounceEffectInternal = ({
96939
96988
  const [squash, setSquash] = useState({ x: 1, y: 1 });
96940
96989
  useRef({ x: 0, y: 0 });
96941
96990
  const startTimeRef = useRef(0);
96942
- const getEasing = (t2) => {
96943
- switch (easing) {
96944
- case "linear":
96945
- return t2;
96946
- case "ease":
96947
- return t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;
96948
- case "ease-in":
96949
- return t2 * t2;
96950
- case "ease-out":
96951
- return t2 * (2 - t2);
96952
- case "bounce":
96953
- if (t2 < 0.363636) {
96954
- return 7.5625 * t2 * t2;
96955
- } else if (t2 < 0.727272) {
96956
- t2 -= 0.545454;
96957
- return 7.5625 * t2 * t2 + 0.75;
96958
- } else if (t2 < 0.90909) {
96959
- t2 -= 0.818181;
96960
- return 7.5625 * t2 * t2 + 0.9375;
96961
- } else {
96962
- t2 -= 0.954545;
96963
- return 7.5625 * t2 * t2 + 0.984375;
96964
- }
96965
- case "elastic":
96966
- return t2 === 0 || t2 === 1 ? t2 : -Math.pow(2, 10 * (t2 - 1)) * Math.sin((t2 - 1.1) * 5 * Math.PI);
96967
- default:
96968
- return t2;
96969
- }
96970
- };
96971
96991
  const calculateBounce = useCallback((time) => {
96972
96992
  const elapsed = time - startTimeRef.current;
96973
96993
  const progress = Math.min(elapsed / duration, 1);
96974
- const easedProgress = getEasing(progress);
96994
+ const easedProgress = getEasingValue(progress, easing);
96975
96995
  let x2 = 0, y = 0;
96976
96996
  switch (direction) {
96977
96997
  case "up":
@@ -97024,10 +97044,12 @@ var BounceEffectInternal = ({
97024
97044
  if (currentBounce >= bounces - 1) {
97025
97045
  if (infinite) {
97026
97046
  setTimeout(() => {
97027
- startAnimation();
97047
+ setCurrentBounce(0);
97048
+ startTimeRef.current = performance.now();
97028
97049
  }, pauseBetween);
97029
97050
  } else {
97030
- setIsAnimating(false);
97051
+ isAnimatingRef.current = false;
97052
+ setAnimationState(false);
97031
97053
  if (onBounceComplete)
97032
97054
  onBounceComplete();
97033
97055
  }
@@ -97053,6 +97075,7 @@ var BounceEffectInternal = ({
97053
97075
  squashAmount,
97054
97076
  jelly,
97055
97077
  jellyIntensity,
97078
+ easing,
97056
97079
  currentBounce,
97057
97080
  position.y,
97058
97081
  infinite,
@@ -97060,15 +97083,16 @@ var BounceEffectInternal = ({
97060
97083
  onBounceComplete
97061
97084
  ]);
97062
97085
  const animate4 = useCallback((time) => {
97063
- if (!isAnimating)
97086
+ if (!isAnimatingRef.current)
97064
97087
  return;
97065
97088
  calculateBounce(time);
97066
97089
  animationRef.current = requestAnimationFrame(animate4);
97067
- }, [isAnimating, calculateBounce]);
97090
+ }, [calculateBounce]);
97068
97091
  const startAnimation = useCallback(() => {
97069
- if (isAnimating)
97092
+ if (isAnimatingRef.current)
97070
97093
  return;
97071
- setIsAnimating(true);
97094
+ isAnimatingRef.current = true;
97095
+ setAnimationState(true);
97072
97096
  setCurrentBounce(0);
97073
97097
  startTimeRef.current = performance.now();
97074
97098
  if (onBounceStart)
@@ -97076,7 +97100,7 @@ var BounceEffectInternal = ({
97076
97100
  setTimeout(() => {
97077
97101
  animationRef.current = requestAnimationFrame(animate4);
97078
97102
  }, delay);
97079
- }, [delay, onBounceStart, animate4, isAnimating]);
97103
+ }, [delay, onBounceStart, animate4]);
97080
97104
  const handleMouseEnter = () => {
97081
97105
  if (trigger === "hover")
97082
97106
  startAnimation();
@@ -97094,19 +97118,20 @@ var BounceEffectInternal = ({
97094
97118
  return;
97095
97119
  const rect = element.getBoundingClientRect();
97096
97120
  const inView = rect.top < window.innerHeight && rect.bottom > 0;
97097
- if (inView && !isAnimating) {
97121
+ if (inView && !isAnimatingRef.current) {
97098
97122
  startAnimation();
97099
97123
  }
97100
97124
  };
97101
97125
  window.addEventListener("scroll", handleScroll);
97102
97126
  handleScroll();
97103
97127
  return () => window.removeEventListener("scroll", handleScroll);
97104
- }, [trigger, isAnimating, startAnimation]);
97128
+ }, [trigger, startAnimation]);
97105
97129
  useEffect(() => {
97106
- if (trigger === "auto") {
97130
+ if (trigger === "auto" && !hasAutoTriggered.current) {
97131
+ hasAutoTriggered.current = true;
97107
97132
  startAnimation();
97108
97133
  }
97109
- }, [trigger, startAnimation]);
97134
+ }, [trigger]);
97110
97135
  useEffect(() => {
97111
97136
  return () => {
97112
97137
  if (animationRef.current) {
@@ -97145,7 +97170,7 @@ var BounceEffectInternal = ({
97145
97170
  onMouseEnter: handleMouseEnter,
97146
97171
  onClick: handleClick2,
97147
97172
  children: [
97148
- trail && isAnimating && Array.from({ length: trailCount }).map((_2, i) => /* @__PURE__ */ jsx(
97173
+ trail && animationState && Array.from({ length: trailCount }).map((_2, i) => /* @__PURE__ */ jsx(
97149
97174
  "div",
97150
97175
  {
97151
97176
  className: "absolute inset-0 pointer-events-none",
@@ -97197,449 +97222,50 @@ var BounceEffect = (props) => {
97197
97222
  return /* @__PURE__ */ jsx(BounceEffectInternal, { ...props });
97198
97223
  };
97199
97224
  BounceEffect.displayName = "BounceEffect";
97200
- var SPRING_PRESETS = {
97201
- default: { tension: 0.4, friction: 0.3 },
97202
- gentle: { tension: 0.2, friction: 0.5 },
97203
- wobbly: { tension: 0.3, friction: 0.1 },
97204
- stiff: { tension: 0.8, friction: 0.5 },
97205
- slow: { tension: 0.2, friction: 0.8 },
97206
- molasses: { tension: 0.1, friction: 0.9 }
97207
- };
97208
- var SpringPhysicsInternal = ({
97209
- children,
97210
- tension = 0.4,
97211
- friction = 0.3,
97212
- mass = 1,
97213
- initialVelocity = { x: 0, y: 0 },
97214
- target = { x: 0, y: 0 },
97215
- trigger = "hover",
97216
- mouseTracking = false,
97217
- mouseRadius = 200,
97218
- preset = "default",
97219
- overshoot = true,
97220
- clamp: clamp3 = false,
97221
- precision = 0.01,
97222
- transform3d = false,
97223
- rotate = false,
97224
- rotationMultiplier = 1,
97225
- scale = false,
97226
- scaleRange = [0.9, 1.1],
97227
- skew = false,
97228
- skewIntensity = 10,
97229
- trail = false,
97230
- trailCount = 5,
97231
- trailDecay = 0.9,
97232
- boundaries = false,
97233
- boundaryBox = {},
97234
- multiSpring = false,
97235
- chainCount = 3,
97236
- chainDelay = 50,
97237
- oscillate = false,
97238
- oscillationFrequency = 2,
97239
- oscillationAmplitude = 10,
97240
- containerClassName,
97241
- springClassName,
97242
- onMotionStart,
97243
- onMotionComplete,
97244
- onSpringUpdate
97245
- }) => {
97246
- const elementRef = useRef(null);
97247
- const animationRef = useRef(void 0);
97248
- const [isAnimating, setIsAnimating] = useState(false);
97249
- const [isDragging, setIsDragging] = useState(false);
97250
- const [position, setPosition] = useState({ x: 0, y: 0 });
97251
- const [velocity, setVelocity] = useState(initialVelocity);
97252
- useState({ x: 0, y: 0 });
97253
- const [trailPositions, setTrailPositions] = useState([]);
97254
- const [chainPositions, setChainPositions] = useState([]);
97255
- const restPositionRef = useRef({ x: 0, y: 0 });
97256
- const dragStartRef = useRef({ x: 0, y: 0 });
97257
- const elementStartRef = useRef({ x: 0, y: 0 });
97258
- const timeRef = useRef(0);
97259
- const motionCompleteRef = useRef(false);
97260
- const getSpringConfig = () => {
97261
- if (preset !== "default") {
97262
- return SPRING_PRESETS[preset];
97263
- }
97264
- return { tension, friction };
97265
- };
97266
- const calculateSpringForce = useCallback((currentPos, targetPos, vel, config) => {
97267
- const dx = targetPos.x - currentPos.x;
97268
- const dy = targetPos.y - currentPos.y;
97269
- const springForceX = dx * config.tension;
97270
- const springForceY = dy * config.tension;
97271
- const dampingForceX = vel.x * config.friction;
97272
- const dampingForceY = vel.y * config.friction;
97273
- return {
97274
- x: springForceX - dampingForceX,
97275
- y: springForceY - dampingForceY
97276
- };
97277
- }, []);
97278
- const applyBoundaries = useCallback((pos) => {
97279
- if (!boundaries)
97280
- return pos;
97281
- const bounded = { ...pos };
97282
- const box = {
97283
- left: boundaryBox?.left ?? -100,
97284
- right: boundaryBox?.right ?? 100,
97285
- top: boundaryBox?.top ?? -100,
97286
- bottom: boundaryBox?.bottom ?? 100
97287
- };
97288
- if (bounded.x < box.left) {
97289
- bounded.x = box.left;
97290
- setVelocity((prev) => ({ ...prev, x: Math.abs(prev.x || 0) * 0.5 }));
97291
- }
97292
- if (bounded.x > box.right) {
97293
- bounded.x = box.right;
97294
- setVelocity((prev) => ({ ...prev, x: -Math.abs(prev.x || 0) * 0.5 }));
97295
- }
97296
- if (bounded.y < box.top) {
97297
- bounded.y = box.top;
97298
- setVelocity((prev) => ({ ...prev, y: Math.abs(prev.y || 0) * 0.5 }));
97299
- }
97300
- if (bounded.y > box.bottom) {
97301
- bounded.y = box.bottom;
97302
- setVelocity((prev) => ({ ...prev, y: -Math.abs(prev.y || 0) * 0.5 }));
97303
- }
97304
- return bounded;
97305
- }, [boundaries, boundaryBox]);
97306
- const updateSpring = useCallback((deltaTime) => {
97307
- const config = getSpringConfig();
97308
- let targetPos = { ...target };
97309
- if (oscillate) {
97310
- const time = timeRef.current * 1e-3;
97311
- targetPos.x = (targetPos.x || 0) + Math.sin(time * oscillationFrequency) * oscillationAmplitude;
97312
- targetPos.y = (targetPos.y || 0) + Math.cos(time * oscillationFrequency) * oscillationAmplitude;
97313
- }
97314
- const force = calculateSpringForce(position, { x: targetPos.x || 0, y: targetPos.y || 0 }, { x: velocity.x || 0, y: velocity.y || 0 }, config);
97315
- const newVelocity = {
97316
- x: (velocity.x || 0) + force.x / mass * deltaTime,
97317
- y: (velocity.y || 0) + force.y / mass * deltaTime
97318
- };
97319
- if (clamp3 && !overshoot) {
97320
- const distX = Math.abs((targetPos.x || 0) - position.x);
97321
- const distY = Math.abs((targetPos.y || 0) - position.y);
97322
- if (distX < 1)
97323
- newVelocity.x *= 0.8;
97324
- if (distY < 1)
97325
- newVelocity.y *= 0.8;
97326
- }
97327
- let newPosition = {
97328
- x: position.x + newVelocity.x * deltaTime,
97329
- y: position.y + newVelocity.y * deltaTime
97330
- };
97331
- newPosition = applyBoundaries(newPosition);
97332
- if (trail) {
97333
- setTrailPositions((prev) => {
97334
- const newTrail = [newPosition, ...prev.slice(0, trailCount - 1)];
97335
- return newTrail.map((pos, i) => ({
97336
- x: pos.x * Math.pow(trailDecay, i),
97337
- y: pos.y * Math.pow(trailDecay, i)
97338
- }));
97339
- });
97340
- }
97341
- if (multiSpring) {
97342
- setChainPositions((prev) => {
97343
- const newChain = [...prev];
97344
- for (let i = 0; i < chainCount; i++) {
97345
- const chainTarget = i === 0 ? newPosition : newChain[i - 1];
97346
- const chainConfig = {
97347
- tension: config.tension * (1 - i * 0.1),
97348
- friction: config.friction * (1 + i * 0.1)
97349
- };
97350
- const chainForce = calculateSpringForce(
97351
- newChain[i] || { x: 0, y: 0 },
97352
- chainTarget,
97353
- { x: 0, y: 0 },
97354
- chainConfig
97355
- );
97356
- newChain[i] = {
97357
- x: (newChain[i]?.x ?? 0) + chainForce.x * deltaTime,
97358
- y: (newChain[i]?.y ?? 0) + chainForce.y * deltaTime
97359
- };
97360
- }
97361
- return newChain;
97362
- });
97363
- }
97364
- 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;
97365
- if (isComplete && !motionCompleteRef.current) {
97366
- motionCompleteRef.current = true;
97367
- onMotionComplete?.();
97368
- } else if (!isComplete && motionCompleteRef.current) {
97369
- motionCompleteRef.current = false;
97370
- }
97371
- setPosition(newPosition);
97372
- setVelocity(newVelocity);
97373
- onSpringUpdate?.(newPosition);
97374
- return !isComplete;
97375
- }, [
97376
- position,
97377
- velocity,
97378
- target,
97379
- mass,
97380
- precision,
97381
- overshoot,
97382
- clamp3,
97383
- trail,
97384
- trailCount,
97385
- trailDecay,
97386
- multiSpring,
97387
- chainCount,
97388
- oscillate,
97389
- oscillationFrequency,
97390
- oscillationAmplitude,
97391
- calculateSpringForce,
97392
- applyBoundaries,
97393
- onMotionComplete,
97394
- onSpringUpdate
97395
- ]);
97396
- const animate4 = useCallback((timestamp) => {
97397
- if (!isAnimating)
97398
- return;
97399
- const deltaTime = Math.min((timestamp - timeRef.current) / 1e3, 0.1) || 0.016;
97400
- timeRef.current = timestamp;
97401
- const shouldContinue = updateSpring(deltaTime);
97402
- if (shouldContinue || isDragging) {
97403
- animationRef.current = requestAnimationFrame(animate4);
97404
- } else {
97405
- setIsAnimating(false);
97406
- }
97407
- }, [isAnimating, isDragging, updateSpring]);
97408
- const startAnimation = useCallback((targetPos) => {
97409
- setIsAnimating(true);
97410
- motionCompleteRef.current = false;
97411
- if (targetPos) {
97412
- restPositionRef.current = targetPos;
97413
- }
97414
- onMotionStart?.();
97415
- timeRef.current = performance.now();
97416
- animationRef.current = requestAnimationFrame(animate4);
97417
- }, [animate4, onMotionStart]);
97418
- const handleMouseMove2 = useCallback((e) => {
97419
- if (!mouseTracking || !elementRef.current)
97420
- return;
97421
- const rect = elementRef.current.getBoundingClientRect();
97422
- const centerX = rect.left + rect.width / 2;
97423
- const centerY = rect.top + rect.height / 2;
97424
- const dx = e.clientX - centerX;
97425
- const dy = e.clientY - centerY;
97426
- const distance = Math.sqrt(dx * dx + dy * dy);
97427
- if (distance < mouseRadius) {
97428
- const influence = 1 - distance / mouseRadius;
97429
- const targetX = dx * influence * 0.5;
97430
- const targetY = dy * influence * 0.5;
97431
- restPositionRef.current = { x: targetX, y: targetY };
97432
- if (!isAnimating) {
97433
- startAnimation({ x: targetX, y: targetY });
97434
- }
97435
- }
97436
- }, [mouseTracking, mouseRadius, isAnimating, startAnimation]);
97437
- const handleMouseDown3 = useCallback((e) => {
97438
- if (trigger !== "drag")
97439
- return;
97440
- setIsDragging(true);
97441
- dragStartRef.current = { x: e.clientX, y: e.clientY };
97442
- elementStartRef.current = { ...position };
97443
- e.preventDefault();
97444
- }, [trigger, position]);
97445
- const handleMouseMoveOnDrag = useCallback((e) => {
97446
- if (!isDragging)
97447
- return;
97448
- const dx = e.clientX - dragStartRef.current.x;
97449
- const dy = e.clientY - dragStartRef.current.y;
97450
- setPosition({
97451
- x: elementStartRef.current.x + dx,
97452
- y: elementStartRef.current.y + dy
97453
- });
97454
- }, [isDragging]);
97455
- const handleMouseUp = useCallback(() => {
97456
- if (!isDragging)
97457
- return;
97458
- setIsDragging(false);
97459
- startAnimation({ x: 0, y: 0 });
97460
- }, [isDragging, startAnimation]);
97461
- const handleMouseEnter = () => {
97462
- if (trigger === "hover") {
97463
- startAnimation({ x: 20, y: -10 });
97464
- }
97465
- };
97466
- const handleMouseLeave2 = () => {
97467
- if (trigger === "hover") {
97468
- startAnimation({ x: 0, y: 0 });
97469
- }
97470
- };
97471
- const handleClick2 = () => {
97472
- if (trigger === "click") {
97473
- const targetX = (Math.random() - 0.5) * 100;
97474
- const targetY = (Math.random() - 0.5) * 100;
97475
- startAnimation({ x: targetX, y: targetY });
97476
- setTimeout(() => {
97477
- startAnimation({ x: 0, y: 0 });
97478
- }, 1e3);
97479
- }
97480
- };
97481
- useEffect(() => {
97482
- if (trigger !== "scroll")
97483
- return;
97484
- const handleScroll = () => {
97485
- const scrollY = window.scrollY;
97486
- const targetY = Math.sin(scrollY * 0.01) * 50;
97487
- restPositionRef.current = { x: 0, y: targetY };
97488
- if (!isAnimating) {
97489
- startAnimation({ x: 0, y: targetY });
97490
- }
97491
- };
97492
- window.addEventListener("scroll", handleScroll);
97493
- return () => window.removeEventListener("scroll", handleScroll);
97494
- }, [trigger, isAnimating, startAnimation]);
97495
- useEffect(() => {
97496
- if (trigger === "auto") {
97497
- startAnimation({ x: target?.x || 0, y: target?.y || 0 });
97498
- }
97499
- }, [trigger, target, startAnimation]);
97500
- useEffect(() => {
97501
- if (trigger === "drag") {
97502
- window.addEventListener("mousemove", handleMouseMoveOnDrag);
97503
- window.addEventListener("mouseup", handleMouseUp);
97504
- return () => {
97505
- window.removeEventListener("mousemove", handleMouseMoveOnDrag);
97506
- window.removeEventListener("mouseup", handleMouseUp);
97507
- };
97508
- }
97509
- }, [trigger, handleMouseMoveOnDrag, handleMouseUp]);
97510
- useEffect(() => {
97511
- if (mouseTracking) {
97512
- window.addEventListener("mousemove", handleMouseMove2);
97513
- return () => window.removeEventListener("mousemove", handleMouseMove2);
97514
- }
97515
- }, [mouseTracking, handleMouseMove2]);
97516
- useEffect(() => {
97517
- return () => {
97518
- if (animationRef.current) {
97519
- cancelAnimationFrame(animationRef.current);
97520
- }
97521
- };
97522
- }, []);
97523
- const getTransformStyle = (pos = position) => {
97524
- const transforms = [];
97525
- if (transform3d) {
97526
- transforms.push(`translate3d(${pos.x}px, ${pos.y}px, 0)`);
97527
- } else {
97528
- transforms.push(`translateX(${pos.x}px) translateY(${pos.y}px)`);
97529
- }
97530
- if (rotate) {
97531
- const rotation = pos.x / 10 * rotationMultiplier;
97532
- transforms.push(`rotate(${rotation}deg)`);
97533
- }
97534
- if (scale) {
97535
- const distance = Math.sqrt(pos.x * pos.x + pos.y * pos.y);
97536
- const scaleValue = scaleRange[0] + distance / 100 * (scaleRange[1] - scaleRange[0]);
97537
- transforms.push(`scale(${Math.min(Math.max(scaleValue, scaleRange[0]), scaleRange[1])})`);
97538
- }
97539
- if (skew) {
97540
- const skewX = (velocity.x || 0) / 10 * skewIntensity;
97541
- const skewY = (velocity.y || 0) / 10 * skewIntensity;
97542
- transforms.push(`skewX(${skewX}deg) skewY(${skewY}deg)`);
97543
- }
97544
- return transforms.join(" ");
97545
- };
97546
- return /* @__PURE__ */ jsxs(
97547
- "div",
97548
- {
97549
- ref: elementRef,
97550
- className: cn(
97551
- "spring-physics-container",
97552
- "relative",
97553
- "inline-block",
97554
- containerClassName
97555
- ),
97556
- onMouseEnter: handleMouseEnter,
97557
- onMouseLeave: handleMouseLeave2,
97558
- onMouseDown: handleMouseDown3,
97559
- onClick: handleClick2,
97560
- style: {
97561
- cursor: trigger === "drag" ? "grab" : void 0
97562
- },
97563
- children: [
97564
- trail && trailPositions.map((pos, i) => /* @__PURE__ */ jsx(
97565
- "div",
97566
- {
97567
- className: "absolute inset-0 pointer-events-none",
97568
- style: {
97569
- transform: getTransformStyle(pos),
97570
- opacity: 1 - i / trailCount,
97571
- filter: `blur(${i * 0.5}px)`
97572
- },
97573
- children: React71__default.isValidElement(children) && React71__default.cloneElement(children, {
97574
- style: { opacity: 0.3 }
97575
- })
97576
- },
97577
- i
97578
- )),
97579
- multiSpring && chainPositions.map((pos, i) => /* @__PURE__ */ jsx(
97580
- "div",
97581
- {
97582
- className: "absolute inset-0 pointer-events-none",
97583
- style: {
97584
- transform: getTransformStyle(pos),
97585
- opacity: 1 - i / chainCount * 0.5,
97586
- transitionDelay: `${i * chainDelay}ms`
97587
- },
97588
- children: React71__default.isValidElement(children) && React71__default.cloneElement(children, {
97589
- style: {
97590
- opacity: 0.5,
97591
- transform: `scale(${1 - i * 0.1})`
97592
- }
97593
- })
97594
- },
97595
- `chain-${i}`
97596
- )),
97597
- /* @__PURE__ */ jsx(
97598
- "div",
97599
- {
97600
- className: cn(
97601
- "spring-element",
97602
- isDragging && "cursor-grabbing",
97603
- springClassName
97604
- ),
97605
- style: {
97606
- transform: getTransformStyle(),
97607
- willChange: "transform",
97608
- transformOrigin: "center center"
97609
- },
97610
- children
97611
- }
97612
- )
97613
- ]
97614
- }
97615
- );
97616
- };
97617
- var SpringPhysics = (props) => {
97618
- const { hasProAccess, isLoading } = useSubscription();
97619
- if (!isLoading && !hasProAccess) {
97620
- return /* @__PURE__ */ jsx(
97621
- ProLockScreen,
97622
- {
97623
- componentName: "SpringPhysics",
97624
- compact: true,
97625
- 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;
97626
97253
  }
97627
- );
97254
+ default:
97255
+ return t2;
97628
97256
  }
97629
- return /* @__PURE__ */ jsx(SpringPhysicsInternal, { ...props });
97630
97257
  };
97631
- SpringPhysics.displayName = "SpringPhysics";
97632
97258
  var ElasticAnimationInternal = ({
97633
97259
  children,
97634
97260
  trigger = "hover",
97635
97261
  elasticity = 0.8,
97636
- damping = 0.15,
97637
- duration = 1e3,
97262
+ damping = 0.18,
97263
+ duration = 1200,
97638
97264
  delay = 0,
97639
97265
  direction = "both",
97640
97266
  distance = 50,
97641
97267
  oscillate = true,
97642
- oscillationCount = 3,
97268
+ oscillationCount = 2,
97643
97269
  rubberBand = false,
97644
97270
  rubberBandIntensity = 1.5,
97645
97271
  jello = false,
@@ -97672,7 +97298,10 @@ var ElasticAnimationInternal = ({
97672
97298
  }) => {
97673
97299
  const elementRef = useRef(null);
97674
97300
  const animationRef = useRef(void 0);
97675
- 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);
97676
97305
  const [currentTransform, setCurrentTransform] = useState({
97677
97306
  x: 0,
97678
97307
  y: 0,
@@ -97684,41 +97313,8 @@ var ElasticAnimationInternal = ({
97684
97313
  const [morphIndex, setMorphIndex] = useState(0);
97685
97314
  const startTimeRef = useRef(0);
97686
97315
  const animationPhaseRef = useRef("main");
97687
- const getEasingValue = (t2) => {
97688
- switch (easing) {
97689
- case "linear":
97690
- return t2;
97691
- case "ease-in":
97692
- return t2 * t2;
97693
- case "ease-out":
97694
- return t2 * (2 - t2);
97695
- case "ease-in-out":
97696
- return t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;
97697
- case "elastic":
97698
- if (t2 === 0 || t2 === 1)
97699
- return t2;
97700
- const p = 0.3;
97701
- const s = p / 4;
97702
- return Math.pow(2, -10 * t2) * Math.sin((t2 - s) * (2 * Math.PI) / p) + 1;
97703
- case "bounce":
97704
- if (t2 < 0.363636) {
97705
- return 7.5625 * t2 * t2;
97706
- } else if (t2 < 0.727272) {
97707
- t2 -= 0.545454;
97708
- return 7.5625 * t2 * t2 + 0.75;
97709
- } else if (t2 < 0.90909) {
97710
- t2 -= 0.818181;
97711
- return 7.5625 * t2 * t2 + 0.9375;
97712
- } else {
97713
- t2 -= 0.954545;
97714
- return 7.5625 * t2 * t2 + 0.984375;
97715
- }
97716
- default:
97717
- return t2;
97718
- }
97719
- };
97720
97316
  const calculateElasticMotion = useCallback((progress) => {
97721
- const elasticProgress = getEasingValue(progress);
97317
+ const elasticProgress = getEasingValue2(progress, easing);
97722
97318
  let x2 = 0, y = 0, scale = 1, rotate = 0, skewX = 0, skewY = 0;
97723
97319
  if (direction === "horizontal" || direction === "both") {
97724
97320
  x2 = distance * elasticProgress * Math.cos(progress * Math.PI * 2 * oscillationCount);
@@ -97794,6 +97390,7 @@ var ElasticAnimationInternal = ({
97794
97390
  }
97795
97391
  return { x: x2, y, scale, rotate, skewX, skewY };
97796
97392
  }, [
97393
+ easing,
97797
97394
  direction,
97798
97395
  distance,
97799
97396
  oscillate,
@@ -97822,7 +97419,7 @@ var ElasticAnimationInternal = ({
97822
97419
  shakeIntensity
97823
97420
  ]);
97824
97421
  const animate4 = useCallback((timestamp) => {
97825
- if (!isAnimating)
97422
+ if (!isAnimatingRef.current)
97826
97423
  return;
97827
97424
  const elapsed = timestamp - startTimeRef.current;
97828
97425
  let progress = Math.min(elapsed / duration, 1);
@@ -97849,14 +97446,18 @@ var ElasticAnimationInternal = ({
97849
97446
  }
97850
97447
  animationRef.current = requestAnimationFrame(animate4);
97851
97448
  } else {
97852
- setIsAnimating(false);
97449
+ isAnimatingRef.current = false;
97450
+ setAnimationState(false);
97451
+ setIsResetting(true);
97853
97452
  setCurrentTransform({ x: 0, y: 0, scale: 1, rotate: 0, skewX: 0, skewY: 0 });
97854
- if (onAnimationComplete)
97855
- onAnimationComplete();
97453
+ setTimeout(() => {
97454
+ setIsResetting(false);
97455
+ if (onAnimationComplete)
97456
+ onAnimationComplete();
97457
+ }, 300);
97856
97458
  }
97857
97459
  }
97858
97460
  }, [
97859
- isAnimating,
97860
97461
  duration,
97861
97462
  anticipation,
97862
97463
  followThrough,
@@ -97866,9 +97467,10 @@ var ElasticAnimationInternal = ({
97866
97467
  onAnimationComplete
97867
97468
  ]);
97868
97469
  const startAnimation = useCallback(() => {
97869
- if (isAnimating && trigger !== "continuous")
97470
+ if (isAnimatingRef.current && trigger !== "continuous")
97870
97471
  return;
97871
- setIsAnimating(true);
97472
+ isAnimatingRef.current = true;
97473
+ setAnimationState(true);
97872
97474
  startTimeRef.current = performance.now();
97873
97475
  animationPhaseRef.current = anticipation ? "anticipation" : "main";
97874
97476
  if (onAnimationStart)
@@ -97885,7 +97487,6 @@ var ElasticAnimationInternal = ({
97885
97487
  }, secondaryDelay);
97886
97488
  }
97887
97489
  }, [
97888
- isAnimating,
97889
97490
  trigger,
97890
97491
  delay,
97891
97492
  anticipation,
@@ -97899,8 +97500,10 @@ var ElasticAnimationInternal = ({
97899
97500
  startAnimation();
97900
97501
  };
97901
97502
  const handleMouseLeave2 = () => {
97902
- if (trigger === "hover" && !isAnimating) {
97503
+ if (trigger === "hover" && !isAnimatingRef.current) {
97504
+ setIsResetting(true);
97903
97505
  setCurrentTransform({ x: 0, y: 0, scale: 1, rotate: 0, skewX: 0, skewY: 0 });
97506
+ setTimeout(() => setIsResetting(false), 300);
97904
97507
  }
97905
97508
  };
97906
97509
  const handleClick2 = () => {
@@ -97916,16 +97519,17 @@ var ElasticAnimationInternal = ({
97916
97519
  return;
97917
97520
  const rect = element.getBoundingClientRect();
97918
97521
  const inView = rect.top < window.innerHeight && rect.bottom > 0;
97919
- if (inView && !isAnimating) {
97522
+ if (inView && !isAnimatingRef.current) {
97920
97523
  startAnimation();
97921
97524
  }
97922
97525
  };
97923
97526
  window.addEventListener("scroll", handleScroll);
97924
97527
  handleScroll();
97925
97528
  return () => window.removeEventListener("scroll", handleScroll);
97926
- }, [trigger, isAnimating, startAnimation]);
97529
+ }, [trigger, startAnimation]);
97927
97530
  useEffect(() => {
97928
- if (trigger === "auto" || trigger === "continuous") {
97531
+ if ((trigger === "auto" || trigger === "continuous") && !hasAutoTriggered.current) {
97532
+ hasAutoTriggered.current = true;
97929
97533
  startAnimation();
97930
97534
  }
97931
97535
  }, [trigger, startAnimation]);
@@ -97977,7 +97581,8 @@ var ElasticAnimationInternal = ({
97977
97581
  transform: getTransformStyle(),
97978
97582
  transformOrigin: "center center",
97979
97583
  willChange: "transform",
97980
- backfaceVisibility: "hidden"
97584
+ backfaceVisibility: "hidden",
97585
+ transition: isResetting ? "transform 0.3s ease-out" : "none"
97981
97586
  },
97982
97587
  children
97983
97588
  }
@@ -98055,6 +97660,7 @@ var PathAnimationsInternal = ({
98055
97660
  const pathRef = useRef(null);
98056
97661
  const elementRef = useRef(null);
98057
97662
  const animationRef = useRef(void 0);
97663
+ const isAnimatingRef = useRef(false);
98058
97664
  const [isAnimating, setIsAnimating] = useState(false);
98059
97665
  const [currentPath, setCurrentPath] = useState("");
98060
97666
  const [pathLength, setPathLength] = useState(0);
@@ -98086,7 +97692,7 @@ var PathAnimationsInternal = ({
98086
97692
  svgRef.current.removeChild(tempPath);
98087
97693
  }
98088
97694
  }, [getPathString]);
98089
- const getEasingValue = (t2) => {
97695
+ const getEasingValue3 = (t2) => {
98090
97696
  switch (easing) {
98091
97697
  case "linear":
98092
97698
  return t2;
@@ -98143,11 +97749,11 @@ var PathAnimationsInternal = ({
98143
97749
  requestAnimationFrame(animateMorph);
98144
97750
  }, [morph, morphPaths, morphIndex, currentPath, morphDuration]);
98145
97751
  const animate4 = useCallback((timestamp) => {
98146
- if (!isAnimating)
97752
+ if (!isAnimatingRef.current)
98147
97753
  return;
98148
97754
  const elapsed = timestamp - startTimeRef.current + pausedTimeRef.current;
98149
97755
  let progress = Math.min(elapsed / duration, 1);
98150
- progress = getEasingValue(progress);
97756
+ progress = getEasingValue3(progress);
98151
97757
  const pathPosition = calculatePathPosition(progress);
98152
97758
  setPosition({ x: pathPosition.x, y: pathPosition.y });
98153
97759
  setRotation(pathPosition.angle);
@@ -98204,7 +97810,6 @@ var PathAnimationsInternal = ({
98204
97810
  animationRef.current = requestAnimationFrame(animate4);
98205
97811
  }
98206
97812
  }, [
98207
- isAnimating,
98208
97813
  duration,
98209
97814
  calculatePathPosition,
98210
97815
  scaleAnimation,
@@ -98226,8 +97831,9 @@ var PathAnimationsInternal = ({
98226
97831
  onAnimationComplete
98227
97832
  ]);
98228
97833
  const startAnimation = useCallback(() => {
98229
- if (isAnimating)
97834
+ if (isAnimatingRef.current)
98230
97835
  return;
97836
+ isAnimatingRef.current = true;
98231
97837
  setIsAnimating(true);
98232
97838
  setCurrentLoop(0);
98233
97839
  startTimeRef.current = performance.now();
@@ -98236,8 +97842,9 @@ var PathAnimationsInternal = ({
98236
97842
  setTimeout(() => {
98237
97843
  animationRef.current = requestAnimationFrame(animate4);
98238
97844
  }, delay);
98239
- }, [isAnimating, delay, animate4, onAnimationStart]);
97845
+ }, [delay, animate4, onAnimationStart]);
98240
97846
  const stopAnimation = useCallback(() => {
97847
+ isAnimatingRef.current = false;
98241
97848
  setIsAnimating(false);
98242
97849
  if (animationRef.current) {
98243
97850
  cancelAnimationFrame(animationRef.current);
@@ -98281,9 +97888,10 @@ var PathAnimationsInternal = ({
98281
97888
  if (trigger === "auto") {
98282
97889
  startAnimation();
98283
97890
  }
98284
- }, [trigger, startAnimation]);
97891
+ }, [trigger]);
98285
97892
  useEffect(() => {
98286
97893
  return () => {
97894
+ isAnimatingRef.current = false;
98287
97895
  if (animationRef.current) {
98288
97896
  cancelAnimationFrame(animationRef.current);
98289
97897
  }
@@ -98426,6 +98034,9 @@ var PathAnimations = (props) => {
98426
98034
  PathAnimations.displayName = "PathAnimations";
98427
98035
  var SVGAnimationsInternal = ({
98428
98036
  children,
98037
+ viewBox = "0 0 200 200",
98038
+ width = "100%",
98039
+ height = "100%",
98429
98040
  type = "draw",
98430
98041
  duration = 2e3,
98431
98042
  delay = 0,
@@ -98494,8 +98105,25 @@ var SVGAnimationsInternal = ({
98494
98105
  onAnimationComplete,
98495
98106
  onFrame
98496
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
+ };
98497
98124
  const svgRef = useRef(null);
98498
98125
  const animationRef = useRef(void 0);
98126
+ const isAnimatingRef = useRef(false);
98499
98127
  const [isAnimating, setIsAnimating] = useState(false);
98500
98128
  const [paths, setPaths] = useState([]);
98501
98129
  const [currentMorphIndex, setCurrentMorphIndex] = useState(0);
@@ -98521,7 +98149,7 @@ var SVGAnimationsInternal = ({
98521
98149
  });
98522
98150
  }
98523
98151
  }, [type, drawOptions.fadeIn]);
98524
- const getEasingValue = (t2) => {
98152
+ const getEasingValue3 = (t2) => {
98525
98153
  switch (easing) {
98526
98154
  case "linear":
98527
98155
  return t2;
@@ -98619,21 +98247,21 @@ var SVGAnimationsInternal = ({
98619
98247
  const offset4 = strokeOptions.strokeDashoffset * (1 - progress);
98620
98248
  path.style.strokeDashoffset = `${offset4}`;
98621
98249
  if (strokeOptions.animateWidth) {
98622
- const width = strokeOptions.strokeWidth * progress;
98623
- path.style.strokeWidth = `${width}`;
98250
+ const width2 = strokeOptions.strokeWidth * progress;
98251
+ path.style.strokeWidth = `${width2}`;
98624
98252
  }
98625
98253
  path.style.stroke = strokeOptions.strokeColor;
98626
98254
  });
98627
98255
  }, [paths, strokeOptions]);
98628
98256
  const animateTransform = useCallback((progress) => {
98629
- const easedProgress = getEasingValue(progress);
98630
- const scaleX = transformOptions.scale[0] + (1 - transformOptions.scale[0]) * easedProgress;
98631
- const scaleY = transformOptions.scale[1] + (1 - transformOptions.scale[1]) * easedProgress;
98632
- const rotate = transformOptions.rotate * easedProgress;
98633
- const translateX = transformOptions.translate[0] * easedProgress;
98634
- const translateY = transformOptions.translate[1] * easedProgress;
98635
- const skewX = transformOptions.skew[0] * easedProgress;
98636
- 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;
98637
98265
  const transform = `
98638
98266
  translate(${translateX}px, ${translateY}px)
98639
98267
  scale(${scaleX}, ${scaleY})
@@ -98642,18 +98270,18 @@ var SVGAnimationsInternal = ({
98642
98270
  skewY(${skewY}deg)
98643
98271
  `;
98644
98272
  if (svgRef.current) {
98645
- svgRef.current.style.transformOrigin = transformOptions.transformOrigin;
98273
+ svgRef.current.style.transformOrigin = mergedTransformOptions.transformOrigin;
98646
98274
  svgRef.current.style.transform = transform;
98647
98275
  }
98648
- }, [transformOptions]);
98276
+ }, [mergedTransformOptions]);
98649
98277
  const animateFilter = useCallback((progress) => {
98650
98278
  if (!svgRef.current)
98651
98279
  return;
98652
- const blur2 = filterOptions.blur[0] + (filterOptions.blur[1] - filterOptions.blur[0]) * progress;
98653
- const brightness = filterOptions.brightness[0] + (filterOptions.brightness[1] - filterOptions.brightness[0]) * progress;
98654
- const contrast = filterOptions.contrast[0] + (filterOptions.contrast[1] - filterOptions.contrast[0]) * progress;
98655
- const saturate = filterOptions.saturate[0] + (filterOptions.saturate[1] - filterOptions.saturate[0]) * progress;
98656
- 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;
98657
98285
  const filter = `
98658
98286
  blur(${blur2}px)
98659
98287
  brightness(${brightness})
@@ -98662,13 +98290,13 @@ var SVGAnimationsInternal = ({
98662
98290
  hue-rotate(${hueRotate}deg)
98663
98291
  `;
98664
98292
  svgRef.current.style.filter = filter;
98665
- }, [filterOptions]);
98293
+ }, [mergedFilterOptions]);
98666
98294
  const animate4 = useCallback((timestamp) => {
98667
- if (!isAnimating)
98295
+ if (!isAnimatingRef.current)
98668
98296
  return;
98669
98297
  const elapsed = timestamp - startTimeRef.current;
98670
98298
  let progress = Math.min(elapsed / duration, 1);
98671
- progress = getEasingValue(progress);
98299
+ progress = getEasingValue3(progress);
98672
98300
  setAnimationProgress(progress);
98673
98301
  switch (type) {
98674
98302
  case "draw":
@@ -98699,6 +98327,7 @@ var SVGAnimationsInternal = ({
98699
98327
  startTimeRef.current = timestamp;
98700
98328
  animationRef.current = requestAnimationFrame(animate4);
98701
98329
  } else {
98330
+ isAnimatingRef.current = false;
98702
98331
  setIsAnimating(false);
98703
98332
  if (onAnimationComplete)
98704
98333
  onAnimationComplete();
@@ -98707,7 +98336,6 @@ var SVGAnimationsInternal = ({
98707
98336
  animationRef.current = requestAnimationFrame(animate4);
98708
98337
  }
98709
98338
  }, [
98710
- isAnimating,
98711
98339
  duration,
98712
98340
  type,
98713
98341
  loop,
@@ -98723,8 +98351,10 @@ var SVGAnimationsInternal = ({
98723
98351
  onAnimationComplete
98724
98352
  ]);
98725
98353
  const startAnimation = useCallback(() => {
98726
- if (isAnimating)
98727
- return;
98354
+ if (animationRef.current) {
98355
+ cancelAnimationFrame(animationRef.current);
98356
+ }
98357
+ isAnimatingRef.current = true;
98728
98358
  setIsAnimating(true);
98729
98359
  setCurrentLoop(0);
98730
98360
  startTimeRef.current = performance.now();
@@ -98733,8 +98363,9 @@ var SVGAnimationsInternal = ({
98733
98363
  setTimeout(() => {
98734
98364
  animationRef.current = requestAnimationFrame(animate4);
98735
98365
  }, delay);
98736
- }, [isAnimating, delay, animate4, onAnimationStart]);
98366
+ }, [delay, animate4, onAnimationStart]);
98737
98367
  const stopAnimation = useCallback(() => {
98368
+ isAnimatingRef.current = false;
98738
98369
  setIsAnimating(false);
98739
98370
  if (animationRef.current) {
98740
98371
  cancelAnimationFrame(animationRef.current);
@@ -98778,12 +98409,13 @@ var SVGAnimationsInternal = ({
98778
98409
  if (autoPlay && trigger === "auto") {
98779
98410
  startAnimation();
98780
98411
  }
98781
- }, [autoPlay, trigger, startAnimation]);
98412
+ }, [autoPlay, trigger]);
98782
98413
  useEffect(() => {
98783
98414
  return () => {
98784
98415
  if (animationRef.current) {
98785
98416
  cancelAnimationFrame(animationRef.current);
98786
98417
  }
98418
+ isAnimatingRef.current = false;
98787
98419
  };
98788
98420
  }, []);
98789
98421
  return /* @__PURE__ */ jsxs(
@@ -98803,6 +98435,9 @@ var SVGAnimationsInternal = ({
98803
98435
  "svg",
98804
98436
  {
98805
98437
  ref: svgRef,
98438
+ viewBox,
98439
+ width,
98440
+ height,
98806
98441
  className: cn(
98807
98442
  "svg-animated",
98808
98443
  svgClassName
@@ -98891,7 +98526,9 @@ var FadeTransitionsInternal = ({
98891
98526
  }) => {
98892
98527
  const containerRef = useRef(null);
98893
98528
  const [isVisible, setIsVisible] = useState(controlledVisible ?? false);
98894
- const [isAnimating, setIsAnimating] = useState(false);
98529
+ const isAnimatingRef = useRef(false);
98530
+ const hasAutoTriggered = useRef(false);
98531
+ const [animationState, setAnimationState] = useState(false);
98895
98532
  const [currentLoop, setCurrentLoop] = useState(0);
98896
98533
  const [childrenArray, setChildrenArray] = useState([]);
98897
98534
  const observerRef = useRef(void 0);
@@ -98996,7 +98633,7 @@ var FadeTransitionsInternal = ({
98996
98633
  filter: type === "blur-fade" && !visible ? `blur(${blurAmount}px)` : "none",
98997
98634
  willChange: "transform, opacity, filter"
98998
98635
  };
98999
- if (glow && isAnimating) {
98636
+ if (glow && animationState) {
99000
98637
  styles.boxShadow = `0 0 ${glowIntensity}px ${glowColor}`;
99001
98638
  }
99002
98639
  if (mask) {
@@ -99024,9 +98661,10 @@ var FadeTransitionsInternal = ({
99024
98661
  return styles;
99025
98662
  };
99026
98663
  const handleVisibilityChange = useCallback((visible) => {
99027
- if (isAnimating)
98664
+ if (isAnimatingRef.current)
99028
98665
  return;
99029
- setIsAnimating(true);
98666
+ isAnimatingRef.current = true;
98667
+ setAnimationState(true);
99030
98668
  setIsVisible(visible);
99031
98669
  if (onTransitionStart)
99032
98670
  onTransitionStart();
@@ -99036,7 +98674,8 @@ var FadeTransitionsInternal = ({
99036
98674
  animationTimeoutsRef.current = [];
99037
98675
  const totalDuration = duration + (staggered ? (childrenArray.length - 1) * stagger : 0) + delay;
99038
98676
  const completeTimeout = setTimeout(() => {
99039
- setIsAnimating(false);
98677
+ isAnimatingRef.current = false;
98678
+ setAnimationState(false);
99040
98679
  if (onTransitionComplete)
99041
98680
  onTransitionComplete();
99042
98681
  if (loop && visible) {
@@ -99044,15 +98683,15 @@ var FadeTransitionsInternal = ({
99044
98683
  setCurrentLoop((prev) => prev + 1);
99045
98684
  if (reverseOnExit) {
99046
98685
  setTimeout(() => {
99047
- handleVisibilityChange(false);
98686
+ setIsVisible(false);
99048
98687
  setTimeout(() => {
99049
- handleVisibilityChange(true);
98688
+ setIsVisible(true);
99050
98689
  }, totalDuration);
99051
98690
  }, 1e3);
99052
98691
  } else {
99053
98692
  setIsVisible(false);
99054
98693
  setTimeout(() => {
99055
- handleVisibilityChange(true);
98694
+ setIsVisible(true);
99056
98695
  }, 100);
99057
98696
  }
99058
98697
  }
@@ -99060,7 +98699,6 @@ var FadeTransitionsInternal = ({
99060
98699
  }, totalDuration);
99061
98700
  animationTimeoutsRef.current.push(completeTimeout);
99062
98701
  }, [
99063
- isAnimating,
99064
98702
  duration,
99065
98703
  delay,
99066
98704
  stagger,
@@ -99089,19 +98727,20 @@ var FadeTransitionsInternal = ({
99089
98727
  handleVisibilityChange(!isVisible);
99090
98728
  }
99091
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]);
99092
98739
  useEffect(() => {
99093
98740
  if (trigger !== "scroll" || !containerRef.current)
99094
98741
  return;
99095
98742
  observerRef.current = new IntersectionObserver(
99096
- (entries) => {
99097
- entries.forEach((entry) => {
99098
- if (entry.isIntersecting && !isVisible) {
99099
- handleVisibilityChange(true);
99100
- } else if (!entry.isIntersecting && reverseOnExit && isVisible) {
99101
- handleVisibilityChange(false);
99102
- }
99103
- });
99104
- },
98743
+ observerCallback,
99105
98744
  {
99106
98745
  threshold
99107
98746
  }
@@ -99112,17 +98751,18 @@ var FadeTransitionsInternal = ({
99112
98751
  observerRef.current.disconnect();
99113
98752
  }
99114
98753
  };
99115
- }, [trigger, threshold, isVisible, reverseOnExit, handleVisibilityChange]);
98754
+ }, [trigger, threshold, observerCallback]);
99116
98755
  useEffect(() => {
99117
98756
  if (controlledVisible !== void 0) {
99118
98757
  handleVisibilityChange(controlledVisible);
99119
98758
  }
99120
- }, [controlledVisible]);
98759
+ }, [controlledVisible, handleVisibilityChange]);
99121
98760
  useEffect(() => {
99122
- if (trigger === "auto" && !controlledVisible) {
98761
+ if (trigger === "auto" && !hasAutoTriggered.current && !controlledVisible) {
98762
+ hasAutoTriggered.current = true;
99123
98763
  handleVisibilityChange(true);
99124
98764
  }
99125
- }, [trigger]);
98765
+ }, [trigger, controlledVisible, handleVisibilityChange]);
99126
98766
  useEffect(() => {
99127
98767
  return () => {
99128
98768
  animationTimeoutsRef.current.forEach((timeout) => clearTimeout(timeout));
@@ -99809,25 +99449,64 @@ var SwipeActionsInternal = ({
99809
99449
  swipeDirection === "up" && "justify-end pb-4 flex-col"
99810
99450
  ),
99811
99451
  style: { backgroundColor: activeAction.backgroundColor },
99812
- children: actions.map((action, index2) => /* @__PURE__ */ jsx(
99813
- "div",
99814
- {
99815
- className: cn(
99816
- "flex items-center justify-center rounded-lg transition-all duration-200",
99817
- isHorizontal ? "mr-2 last:mr-0" : "mb-2 last:mb-0",
99818
- action === activeAction && "scale-110"
99819
- ),
99820
- style: {
99821
- width: actionSize,
99822
- height: actionSize,
99823
- backgroundColor: action.color,
99824
- marginRight: isHorizontal ? actionSpacing : 0,
99825
- 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
+ ]
99826
99506
  },
99827
- children: action.icon
99828
- },
99829
- action.id
99830
- ))
99507
+ action.id
99508
+ );
99509
+ })
99831
99510
  }
99832
99511
  );
99833
99512
  };
@@ -99890,6 +99569,7 @@ var SwipeActions = (props) => {
99890
99569
  }
99891
99570
  return /* @__PURE__ */ jsx(SwipeActionsInternal, { ...props });
99892
99571
  };
99572
+ SwipeActions.displayName = "SwipeActions";
99893
99573
  var ClickAnimationsInternal = ({
99894
99574
  children,
99895
99575
  className,
@@ -100178,6 +99858,13 @@ var ClickAnimationsInternal = ({
100178
99858
  const easedProgress = getEasingFunction(config.easing, progress);
100179
99859
  const intensity2 = config.intensity;
100180
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
+ };
100181
99868
  case "scale":
100182
99869
  const scale = 1 + easedProgress * intensity2 * 0.1;
100183
99870
  return { transform: `scale(${scale})` };
@@ -100200,6 +99887,12 @@ var ClickAnimationsInternal = ({
100200
99887
  opacity: pulseOpacity,
100201
99888
  transform: `scale(${pulseScale})`
100202
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
+ };
100203
99896
  default:
100204
99897
  return {};
100205
99898
  }
@@ -100277,6 +99970,25 @@ var ClickAnimations = (props) => {
100277
99970
  }
100278
99971
  return /* @__PURE__ */ jsx(ClickAnimationsInternal, { ...props });
100279
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
+ };
100280
99992
  var FocusTransitionsInternal = forwardRef(({
100281
99993
  children,
100282
99994
  className,
@@ -100353,6 +100065,24 @@ var FocusTransitionsInternal = forwardRef(({
100353
100065
  offset: focusOffset,
100354
100066
  blur: focusBlur
100355
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
+ }, []);
100356
100086
  const startAnimation = useCallback((direction, customConfig) => {
100357
100087
  if (prefersReducedMotion)
100358
100088
  return;
@@ -100521,9 +100251,10 @@ var FocusTransitionsInternal = forwardRef(({
100521
100251
  const getAnimationStyles = useCallback((config) => {
100522
100252
  const { type, intensity: intensity2, color, offset: offset4, blur: blur2 } = config;
100523
100253
  const baseStyles = {};
100254
+ const cssColor = getColorValue(color || focusColor);
100524
100255
  switch (type) {
100525
100256
  case "glow":
100526
- baseStyles.boxShadow = `0 0 ${intensity2 * 10}px ${intensity2 * 2}px ${color}`;
100257
+ baseStyles.boxShadow = `0 0 ${intensity2 * 10}px ${intensity2 * 2}px ${cssColor}`;
100527
100258
  if (blur2)
100528
100259
  baseStyles.filter = `blur(${blur2}px)`;
100529
100260
  break;
@@ -100531,7 +100262,7 @@ var FocusTransitionsInternal = forwardRef(({
100531
100262
  baseStyles.transform = `scale(${1 + intensity2 * 0.05})`;
100532
100263
  break;
100533
100264
  case "border":
100534
- baseStyles.border = `${focusThickness}px solid ${color}`;
100265
+ baseStyles.border = `${focusThickness}px solid ${cssColor}`;
100535
100266
  baseStyles.borderRadius = `${focusRadius}px`;
100536
100267
  break;
100537
100268
  case "shadow":
@@ -100544,34 +100275,35 @@ var FocusTransitionsInternal = forwardRef(({
100544
100275
  baseStyles.opacity = 0.8 + intensity2 * 0.2;
100545
100276
  break;
100546
100277
  case "pulse":
100547
- baseStyles.animation = `pulse ${duration}ms ${easing} infinite`;
100278
+ baseStyles.animation = `pulse ${duration}ms ${getEasingCSS(easing)} infinite`;
100548
100279
  break;
100549
100280
  case "outline":
100550
- baseStyles.outline = `${focusThickness}px solid ${color}`;
100281
+ baseStyles.outline = `${focusThickness}px solid ${cssColor}`;
100551
100282
  baseStyles.outlineOffset = `${offset4}px`;
100552
100283
  break;
100553
100284
  }
100554
100285
  return baseStyles;
100555
- }, [focusThickness, focusRadius, duration, easing]);
100286
+ }, [focusThickness, focusRadius, duration, easing, focusColor, getEasingCSS]);
100556
100287
  const getFocusRingStyles = useCallback(() => {
100557
100288
  if (!showFocusRing || !focusState.isFocused)
100558
100289
  return {};
100290
+ const cssColor = getColorValue(focusColor);
100559
100291
  const ringStyles = {
100560
100292
  position: "absolute",
100561
100293
  top: focusRingPosition === "outside" ? -focusOffset : 0,
100562
100294
  left: focusRingPosition === "outside" ? -focusOffset : 0,
100563
100295
  right: focusRingPosition === "outside" ? -focusOffset : 0,
100564
100296
  bottom: focusRingPosition === "outside" ? -focusOffset : 0,
100565
- border: `${focusThickness}px solid ${focusColor}`,
100297
+ border: `${focusThickness}px solid ${cssColor}`,
100566
100298
  borderRadius: focusRadius,
100567
100299
  pointerEvents: "none",
100568
100300
  zIndex: 1
100569
100301
  };
100570
100302
  if (glowEffect) {
100571
- ringStyles.boxShadow = `0 0 ${focusBlur * 2}px ${focusColor}`;
100303
+ ringStyles.boxShadow = `0 0 ${focusBlur * 2}px ${cssColor}`;
100572
100304
  }
100573
100305
  if (shadowEffect) {
100574
- ringStyles.filter = `drop-shadow(0 0 ${focusBlur}px ${focusColor})`;
100306
+ ringStyles.filter = `drop-shadow(0 0 ${focusBlur}px ${cssColor})`;
100575
100307
  }
100576
100308
  return ringStyles;
100577
100309
  }, [
@@ -100627,7 +100359,7 @@ var FocusTransitionsInternal = forwardRef(({
100627
100359
  "aria-disabled": disabled,
100628
100360
  style: {
100629
100361
  ...getCombinedStyles(),
100630
- transition: performanceMode ? "none" : `all ${duration}ms ${easing}`
100362
+ transition: performanceMode ? "none" : `all ${duration}ms ${getEasingCSS(easing)}`
100631
100363
  },
100632
100364
  children: [
100633
100365
  !customFocusRing && /* @__PURE__ */ jsx(
@@ -100650,13 +100382,16 @@ var FocusTransitionsInternal = forwardRef(({
100650
100382
  });
100651
100383
  FocusTransitionsInternal.displayName = "FocusTransitionsInternal";
100652
100384
  var FocusTransitions = forwardRef((props, ref) => {
100653
- const { hasProAccess } = useSubscription();
100654
- if (!hasProAccess) {
100655
- return /* @__PURE__ */ jsxs("div", { className: "p-8 text-center border-2 border-dashed border-gray-300 rounded-lg", children: [
100656
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-2", children: "Pro Component - FocusTransitions" }),
100657
- /* @__PURE__ */ jsx("p", { className: "text-gray-600 mb-4", children: "Bu bile\u015Fen MoonUI Pro aboneli\u011Fi gerektirir." }),
100658
- /* @__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" })
100659
- ] });
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
+ );
100660
100395
  }
100661
100396
  return /* @__PURE__ */ jsx(FocusTransitionsInternal, { ...props, ref });
100662
100397
  });
@@ -101096,17 +100831,6 @@ FocusTransitions.displayName = "FocusTransitions";
101096
100831
  * @license MIT
101097
100832
  * @credits React Bits by David H
101098
100833
  */
101099
- /**
101100
- * SpringPhysics Component
101101
- *
101102
- * Provides realistic spring physics animations with damping and tension
101103
- * Derived from React Bits (https://github.com/DavidHDev/react-bits)
101104
- * Adapted for MoonUI Pro with TypeScript and enhanced features
101105
- *
101106
- * @author MoonUI Team
101107
- * @license MIT
101108
- * @credits React Bits by David H
101109
- */
101110
100834
  /**
101111
100835
  * ElasticAnimation Component
101112
100836
  *
@@ -101163,4 +100887,4 @@ FocusTransitions.displayName = "FocusTransitions";
101163
100887
  * @credits React Bits by David H
101164
100888
  */
101165
100889
 
101166
- 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 };