premium-react-loaders 4.0.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +21 -6
  2. package/dist/components/index.d.ts +1 -0
  3. package/dist/components/index.d.ts.map +1 -1
  4. package/dist/components/neon/NeonPulse.d.ts +12 -0
  5. package/dist/components/neon/NeonPulse.d.ts.map +1 -0
  6. package/dist/components/neon/NeonSpinner.d.ts +12 -0
  7. package/dist/components/neon/NeonSpinner.d.ts.map +1 -0
  8. package/dist/components/neon/NeonText.d.ts +12 -0
  9. package/dist/components/neon/NeonText.d.ts.map +1 -0
  10. package/dist/components/neon/index.d.ts +4 -0
  11. package/dist/components/neon/index.d.ts.map +1 -0
  12. package/dist/components/particle/ParticleField.d.ts +3 -0
  13. package/dist/components/particle/ParticleField.d.ts.map +1 -0
  14. package/dist/components/particle/ParticleTrail.d.ts +12 -0
  15. package/dist/components/particle/ParticleTrail.d.ts.map +1 -0
  16. package/dist/components/particle/index.d.ts +2 -0
  17. package/dist/components/particle/index.d.ts.map +1 -1
  18. package/dist/components/status/InfoIndicator.d.ts +29 -0
  19. package/dist/components/status/InfoIndicator.d.ts.map +1 -0
  20. package/dist/components/status/WarningIndicator.d.ts +29 -0
  21. package/dist/components/status/WarningIndicator.d.ts.map +1 -0
  22. package/dist/components/status/index.d.ts +2 -0
  23. package/dist/components/status/index.d.ts.map +1 -1
  24. package/dist/index.cjs +41 -27
  25. package/dist/index.js +41 -27
  26. package/dist/index10.cjs +1 -1
  27. package/dist/index10.js +1 -1
  28. package/dist/index11.cjs +1 -1
  29. package/dist/index11.js +1 -1
  30. package/dist/index12.cjs +1 -1
  31. package/dist/index12.js +1 -1
  32. package/dist/index13.cjs +1 -1
  33. package/dist/index13.js +1 -1
  34. package/dist/index14.cjs +1 -1
  35. package/dist/index14.js +1 -1
  36. package/dist/index15.cjs +1 -1
  37. package/dist/index15.js +1 -1
  38. package/dist/index17.cjs +1 -1
  39. package/dist/index17.js +1 -1
  40. package/dist/index18.cjs +1 -1
  41. package/dist/index18.js +1 -1
  42. package/dist/index19.cjs +1 -1
  43. package/dist/index19.js +1 -1
  44. package/dist/index20.cjs +1 -1
  45. package/dist/index20.js +1 -1
  46. package/dist/index21.cjs +1 -1
  47. package/dist/index21.js +1 -1
  48. package/dist/index22.cjs +1 -1
  49. package/dist/index22.js +1 -1
  50. package/dist/index23.cjs +1 -1
  51. package/dist/index23.js +1 -1
  52. package/dist/index24.cjs +1 -1
  53. package/dist/index24.js +1 -1
  54. package/dist/index25.cjs +1 -1
  55. package/dist/index25.js +1 -1
  56. package/dist/index26.cjs +1 -1
  57. package/dist/index26.js +1 -1
  58. package/dist/index27.cjs +1 -1
  59. package/dist/index27.js +1 -1
  60. package/dist/index28.cjs +1 -1
  61. package/dist/index28.js +1 -1
  62. package/dist/index29.cjs +1 -1
  63. package/dist/index29.js +1 -1
  64. package/dist/index30.cjs +1 -1
  65. package/dist/index30.js +1 -1
  66. package/dist/index31.cjs +1 -1
  67. package/dist/index31.js +1 -1
  68. package/dist/index32.cjs +1 -1
  69. package/dist/index32.js +1 -1
  70. package/dist/index33.cjs +1 -1
  71. package/dist/index33.js +1 -1
  72. package/dist/index34.cjs +1 -1
  73. package/dist/index34.js +1 -1
  74. package/dist/index35.cjs +1 -1
  75. package/dist/index35.js +1 -1
  76. package/dist/index36.cjs +1 -1
  77. package/dist/index36.js +1 -1
  78. package/dist/index37.cjs +59 -145
  79. package/dist/index37.js +61 -147
  80. package/dist/index38.cjs +32 -53
  81. package/dist/index38.js +33 -54
  82. package/dist/index39.cjs +138 -84
  83. package/dist/index39.js +140 -86
  84. package/dist/index40.cjs +33 -106
  85. package/dist/index40.js +34 -107
  86. package/dist/index41.cjs +66 -50
  87. package/dist/index41.js +66 -50
  88. package/dist/index42.cjs +123 -44
  89. package/dist/index42.js +124 -45
  90. package/dist/index43.cjs +43 -85
  91. package/dist/index43.js +44 -86
  92. package/dist/index44.cjs +35 -27
  93. package/dist/index44.js +35 -27
  94. package/dist/index45.cjs +87 -58
  95. package/dist/index45.js +87 -58
  96. package/dist/index46.cjs +35 -88
  97. package/dist/index46.js +36 -89
  98. package/dist/index47.cjs +62 -58
  99. package/dist/index47.js +63 -59
  100. package/dist/index48.cjs +87 -110
  101. package/dist/index48.js +88 -111
  102. package/dist/index49.cjs +48 -109
  103. package/dist/index49.js +49 -110
  104. package/dist/index50.cjs +110 -62
  105. package/dist/index50.js +111 -63
  106. package/dist/index51.cjs +104 -49
  107. package/dist/index51.js +104 -49
  108. package/dist/index52.cjs +43 -77
  109. package/dist/index52.js +44 -78
  110. package/dist/index53.cjs +56 -56
  111. package/dist/index53.js +56 -56
  112. package/dist/index54.cjs +104 -149
  113. package/dist/index54.js +106 -151
  114. package/dist/index55.cjs +97 -38
  115. package/dist/index55.js +99 -40
  116. package/dist/index56.cjs +161 -27
  117. package/dist/index56.js +162 -28
  118. package/dist/index57.cjs +36 -102
  119. package/dist/index57.js +38 -104
  120. package/dist/index58.cjs +19 -34
  121. package/dist/index58.js +20 -35
  122. package/dist/index59.cjs +87 -34
  123. package/dist/index59.js +89 -36
  124. package/dist/index60.cjs +25 -23
  125. package/dist/index60.js +25 -23
  126. package/dist/index61.cjs +32 -65
  127. package/dist/index61.js +34 -67
  128. package/dist/index62.cjs +29 -36
  129. package/dist/index62.js +30 -37
  130. package/dist/index63.cjs +66 -59
  131. package/dist/index63.js +69 -62
  132. package/dist/index64.cjs +71 -121
  133. package/dist/index64.js +72 -122
  134. package/dist/index65.cjs +92 -0
  135. package/dist/index65.js +92 -0
  136. package/dist/index66.cjs +76 -0
  137. package/dist/index66.js +76 -0
  138. package/dist/index67.cjs +76 -0
  139. package/dist/index67.js +76 -0
  140. package/dist/index68.cjs +64 -0
  141. package/dist/index68.js +64 -0
  142. package/dist/index69.cjs +60 -0
  143. package/dist/index69.js +60 -0
  144. package/dist/index7.cjs +1 -1
  145. package/dist/index7.js +1 -1
  146. package/dist/index70.cjs +57 -0
  147. package/dist/index70.js +57 -0
  148. package/dist/index71.cjs +125 -0
  149. package/dist/index71.js +125 -0
  150. package/dist/index8.cjs +1 -1
  151. package/dist/index8.js +1 -1
  152. package/dist/index9.cjs +1 -1
  153. package/dist/index9.js +1 -1
  154. package/dist/premium-react-loaders.css +85 -0
  155. package/dist/types/index.d.ts +1 -0
  156. package/dist/types/index.d.ts.map +1 -1
  157. package/dist/types/neon.d.ts +26 -0
  158. package/dist/types/neon.d.ts.map +1 -0
  159. package/dist/types/particle.d.ts +18 -0
  160. package/dist/types/particle.d.ts.map +1 -1
  161. package/dist/types/status.d.ts +30 -0
  162. package/dist/types/status.d.ts.map +1 -1
  163. package/package.json +1 -1
package/dist/index52.cjs CHANGED
@@ -2,21 +2,21 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const react = require("react");
5
- const hooks = require("./index64.cjs");
5
+ const hooks = require("./index71.cjs");
6
6
  const classNames = require("./index3.cjs");
7
7
  const colors = require("./index4.cjs");
8
- const Helix = react.forwardRef(
8
+ const FlipCard = react.forwardRef(
9
9
  ({
10
10
  size = "md",
11
11
  color = "#3b82f6",
12
12
  secondaryColor = "#8b5cf6",
13
- particleCount = 12,
14
- radius = 20,
13
+ direction = "horizontal",
14
+ frontColor,
15
+ backColor,
16
+ width,
15
17
  height,
16
- turns = 1.5,
17
- direction = "up",
18
- particleSize = 6,
19
- showLines = false,
18
+ interval,
19
+ perspective = 1e3,
20
20
  speed = "normal",
21
21
  reverse = false,
22
22
  respectMotionPreference = true,
@@ -25,13 +25,17 @@ const Helix = react.forwardRef(
25
25
  transition,
26
26
  className,
27
27
  style,
28
- testId = "helix",
28
+ testId = "flip-card",
29
29
  visible = true,
30
30
  ariaLabel = "Loading...",
31
31
  ...rest
32
32
  }, ref) => {
33
33
  const prefersReducedMotion = hooks.useReducedMotion();
34
- const effectiveDuration = hooks.getEffectiveDuration(speed, respectMotionPreference, prefersReducedMotion);
34
+ const effectiveDuration = hooks.getEffectiveDuration(
35
+ interval !== void 0 ? interval : speed,
36
+ respectMotionPreference,
37
+ prefersReducedMotion
38
+ );
35
39
  const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
36
40
  visible,
37
41
  delay,
@@ -39,23 +43,11 @@ const Helix = react.forwardRef(
39
43
  transition
40
44
  );
41
45
  if (!shouldRender) return null;
42
- const containerSize = colors.normalizeSize(size);
43
- const helixHeight = height ? colors.parseSizeToNumber(colors.normalizeSize(height), 80) : colors.parseSizeToNumber(containerSize, 40) * 1.5;
44
- const particles = Array.from({ length: particleCount }, (_, index) => {
45
- const angle = index / particleCount * Math.PI * 2 * turns;
46
- const y = index / particleCount * helixHeight;
47
- const x = Math.cos(angle) * radius;
48
- const z = Math.sin(angle) * radius;
49
- const isSecondStrand = index % 2 === 1;
50
- return {
51
- x,
52
- y,
53
- z,
54
- angle,
55
- color: isSecondStrand ? secondaryColor : color
56
- };
57
- });
58
- const animationClass = direction === "up" ? "animate-helix-rotate-up" : "animate-helix-rotate-down";
46
+ const cardWidth = width ? colors.normalizeSize(width) : colors.normalizeSize(size);
47
+ const cardHeight = height ? colors.normalizeSize(height) : `calc(${colors.normalizeSize(size)} * 0.6)`;
48
+ const front = frontColor || color;
49
+ const back = backColor || secondaryColor;
50
+ const animationClass = direction === "horizontal" ? "animate-flip-card-horizontal" : "animate-flip-card-vertical";
59
51
  return /* @__PURE__ */ jsxRuntime.jsx(
60
52
  "div",
61
53
  {
@@ -66,7 +58,7 @@ const Helix = react.forwardRef(
66
58
  ...style,
67
59
  opacity,
68
60
  transition: transitionStyle,
69
- perspective: "600px"
61
+ perspective: `${perspective}px`
70
62
  },
71
63
  role: "status",
72
64
  "aria-label": ariaLabel,
@@ -77,62 +69,36 @@ const Helix = react.forwardRef(
77
69
  {
78
70
  className: classNames.cn("relative", animationClass),
79
71
  style: {
80
- width: `${radius * 2 + particleSize * 2}px`,
81
- height: `${helixHeight}px`,
72
+ width: cardWidth,
73
+ height: cardHeight,
82
74
  transformStyle: "preserve-3d",
83
75
  animationDuration: effectiveDuration,
84
76
  animationDirection: reverse ? "reverse" : "normal"
85
77
  },
86
78
  children: [
87
- showLines && particles.map((particle, index) => {
88
- if (index === 0) return null;
89
- const prevParticle = particles[index - 1];
90
- return /* @__PURE__ */ jsxRuntime.jsx(
91
- "svg",
92
- {
93
- className: "absolute",
94
- style: {
95
- left: "50%",
96
- top: "0",
97
- transform: "translateX(-50%)",
98
- width: `${radius * 2 + particleSize * 2}px`,
99
- height: `${helixHeight}px`,
100
- pointerEvents: "none"
101
- },
102
- children: /* @__PURE__ */ jsxRuntime.jsx(
103
- "line",
104
- {
105
- x1: prevParticle.x + radius + particleSize,
106
- y1: prevParticle.y,
107
- x2: particle.x + radius + particleSize,
108
- y2: particle.y,
109
- stroke: particle.color,
110
- strokeWidth: "1",
111
- opacity: "0.3"
112
- }
113
- )
114
- },
115
- `line-${index}`
116
- );
117
- }),
118
- particles.map((particle, index) => /* @__PURE__ */ jsxRuntime.jsx(
79
+ /* @__PURE__ */ jsxRuntime.jsx(
80
+ "div",
81
+ {
82
+ className: "absolute inset-0 rounded-md flex items-center justify-center",
83
+ style: {
84
+ backgroundColor: front,
85
+ backfaceVisibility: "hidden",
86
+ WebkitBackfaceVisibility: "hidden"
87
+ }
88
+ }
89
+ ),
90
+ /* @__PURE__ */ jsxRuntime.jsx(
119
91
  "div",
120
92
  {
121
- className: "absolute animate-helix-particle-pulse",
93
+ className: "absolute inset-0 rounded-md flex items-center justify-center",
122
94
  style: {
123
- left: "50%",
124
- top: `${particle.y}px`,
125
- width: `${particleSize}px`,
126
- height: `${particleSize}px`,
127
- backgroundColor: particle.color,
128
- borderRadius: "50%",
129
- transform: `translate3d(${particle.x}px, 0, ${particle.z}px)`,
130
- animationDuration: "1s",
131
- animationDelay: `${index * 0.08}s`
95
+ backgroundColor: back,
96
+ backfaceVisibility: "hidden",
97
+ WebkitBackfaceVisibility: "hidden",
98
+ transform: direction === "horizontal" ? "rotateY(180deg)" : "rotateX(180deg)"
132
99
  }
133
- },
134
- index
135
- ))
100
+ }
101
+ )
136
102
  ]
137
103
  }
138
104
  )
@@ -140,5 +106,5 @@ const Helix = react.forwardRef(
140
106
  );
141
107
  }
142
108
  );
143
- Helix.displayName = "Helix";
144
- exports.Helix = Helix;
109
+ FlipCard.displayName = "FlipCard";
110
+ exports.FlipCard = FlipCard;
package/dist/index52.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index64.js";
3
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index71.js";
4
4
  import { cn } from "./index3.js";
5
- import { parseSizeToNumber, normalizeSize } from "./index4.js";
6
- const Helix = forwardRef(
5
+ import { normalizeSize } from "./index4.js";
6
+ const FlipCard = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
10
  secondaryColor = "#8b5cf6",
11
- particleCount = 12,
12
- radius = 20,
11
+ direction = "horizontal",
12
+ frontColor,
13
+ backColor,
14
+ width,
13
15
  height,
14
- turns = 1.5,
15
- direction = "up",
16
- particleSize = 6,
17
- showLines = false,
16
+ interval,
17
+ perspective = 1e3,
18
18
  speed = "normal",
19
19
  reverse = false,
20
20
  respectMotionPreference = true,
@@ -23,13 +23,17 @@ const Helix = forwardRef(
23
23
  transition,
24
24
  className,
25
25
  style,
26
- testId = "helix",
26
+ testId = "flip-card",
27
27
  visible = true,
28
28
  ariaLabel = "Loading...",
29
29
  ...rest
30
30
  }, ref) => {
31
31
  const prefersReducedMotion = useReducedMotion();
32
- const effectiveDuration = getEffectiveDuration(speed, respectMotionPreference, prefersReducedMotion);
32
+ const effectiveDuration = getEffectiveDuration(
33
+ interval !== void 0 ? interval : speed,
34
+ respectMotionPreference,
35
+ prefersReducedMotion
36
+ );
33
37
  const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
34
38
  visible,
35
39
  delay,
@@ -37,23 +41,11 @@ const Helix = forwardRef(
37
41
  transition
38
42
  );
39
43
  if (!shouldRender) return null;
40
- const containerSize = normalizeSize(size);
41
- const helixHeight = height ? parseSizeToNumber(normalizeSize(height), 80) : parseSizeToNumber(containerSize, 40) * 1.5;
42
- const particles = Array.from({ length: particleCount }, (_, index) => {
43
- const angle = index / particleCount * Math.PI * 2 * turns;
44
- const y = index / particleCount * helixHeight;
45
- const x = Math.cos(angle) * radius;
46
- const z = Math.sin(angle) * radius;
47
- const isSecondStrand = index % 2 === 1;
48
- return {
49
- x,
50
- y,
51
- z,
52
- angle,
53
- color: isSecondStrand ? secondaryColor : color
54
- };
55
- });
56
- const animationClass = direction === "up" ? "animate-helix-rotate-up" : "animate-helix-rotate-down";
44
+ const cardWidth = width ? normalizeSize(width) : normalizeSize(size);
45
+ const cardHeight = height ? normalizeSize(height) : `calc(${normalizeSize(size)} * 0.6)`;
46
+ const front = frontColor || color;
47
+ const back = backColor || secondaryColor;
48
+ const animationClass = direction === "horizontal" ? "animate-flip-card-horizontal" : "animate-flip-card-vertical";
57
49
  return /* @__PURE__ */ jsx(
58
50
  "div",
59
51
  {
@@ -64,7 +56,7 @@ const Helix = forwardRef(
64
56
  ...style,
65
57
  opacity,
66
58
  transition: transitionStyle,
67
- perspective: "600px"
59
+ perspective: `${perspective}px`
68
60
  },
69
61
  role: "status",
70
62
  "aria-label": ariaLabel,
@@ -75,62 +67,36 @@ const Helix = forwardRef(
75
67
  {
76
68
  className: cn("relative", animationClass),
77
69
  style: {
78
- width: `${radius * 2 + particleSize * 2}px`,
79
- height: `${helixHeight}px`,
70
+ width: cardWidth,
71
+ height: cardHeight,
80
72
  transformStyle: "preserve-3d",
81
73
  animationDuration: effectiveDuration,
82
74
  animationDirection: reverse ? "reverse" : "normal"
83
75
  },
84
76
  children: [
85
- showLines && particles.map((particle, index) => {
86
- if (index === 0) return null;
87
- const prevParticle = particles[index - 1];
88
- return /* @__PURE__ */ jsx(
89
- "svg",
90
- {
91
- className: "absolute",
92
- style: {
93
- left: "50%",
94
- top: "0",
95
- transform: "translateX(-50%)",
96
- width: `${radius * 2 + particleSize * 2}px`,
97
- height: `${helixHeight}px`,
98
- pointerEvents: "none"
99
- },
100
- children: /* @__PURE__ */ jsx(
101
- "line",
102
- {
103
- x1: prevParticle.x + radius + particleSize,
104
- y1: prevParticle.y,
105
- x2: particle.x + radius + particleSize,
106
- y2: particle.y,
107
- stroke: particle.color,
108
- strokeWidth: "1",
109
- opacity: "0.3"
110
- }
111
- )
112
- },
113
- `line-${index}`
114
- );
115
- }),
116
- particles.map((particle, index) => /* @__PURE__ */ jsx(
77
+ /* @__PURE__ */ jsx(
78
+ "div",
79
+ {
80
+ className: "absolute inset-0 rounded-md flex items-center justify-center",
81
+ style: {
82
+ backgroundColor: front,
83
+ backfaceVisibility: "hidden",
84
+ WebkitBackfaceVisibility: "hidden"
85
+ }
86
+ }
87
+ ),
88
+ /* @__PURE__ */ jsx(
117
89
  "div",
118
90
  {
119
- className: "absolute animate-helix-particle-pulse",
91
+ className: "absolute inset-0 rounded-md flex items-center justify-center",
120
92
  style: {
121
- left: "50%",
122
- top: `${particle.y}px`,
123
- width: `${particleSize}px`,
124
- height: `${particleSize}px`,
125
- backgroundColor: particle.color,
126
- borderRadius: "50%",
127
- transform: `translate3d(${particle.x}px, 0, ${particle.z}px)`,
128
- animationDuration: "1s",
129
- animationDelay: `${index * 0.08}s`
93
+ backgroundColor: back,
94
+ backfaceVisibility: "hidden",
95
+ WebkitBackfaceVisibility: "hidden",
96
+ transform: direction === "horizontal" ? "rotateY(180deg)" : "rotateX(180deg)"
130
97
  }
131
- },
132
- index
133
- ))
98
+ }
99
+ )
134
100
  ]
135
101
  }
136
102
  )
@@ -138,7 +104,7 @@ const Helix = forwardRef(
138
104
  );
139
105
  }
140
106
  );
141
- Helix.displayName = "Helix";
107
+ FlipCard.displayName = "FlipCard";
142
108
  export {
143
- Helix
109
+ FlipCard
144
110
  };
package/dist/index53.cjs CHANGED
@@ -2,18 +2,18 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const react = require("react");
5
- const hooks = require("./index64.cjs");
5
+ const hooks = require("./index71.cjs");
6
6
  const classNames = require("./index3.cjs");
7
7
  const colors = require("./index4.cjs");
8
- const PerspectiveRing = react.forwardRef(
8
+ const PlaneRotate = react.forwardRef(
9
9
  ({
10
10
  size = "md",
11
11
  color = "#3b82f6",
12
- tilt = 45,
13
- thickness = 4,
14
- showShadow = true,
15
- shadowBlur = 10,
16
- segments = 8,
12
+ planeCount = 3,
13
+ spacing = 6,
14
+ rotationType = "staggered",
15
+ opacity: planeOpacity = 0.6,
16
+ showAxis = false,
17
17
  speed = "normal",
18
18
  reverse = false,
19
19
  respectMotionPreference = true,
@@ -22,23 +22,27 @@ const PerspectiveRing = react.forwardRef(
22
22
  transition,
23
23
  className,
24
24
  style,
25
- testId = "perspective-ring",
25
+ testId = "plane-rotate",
26
26
  visible = true,
27
27
  ariaLabel = "Loading...",
28
28
  ...rest
29
29
  }, ref) => {
30
30
  const prefersReducedMotion = hooks.useReducedMotion();
31
31
  const effectiveDuration = hooks.getEffectiveDuration(speed, respectMotionPreference, prefersReducedMotion);
32
- const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
32
+ const { shouldRender, opacity: containerOpacity, transitionStyle } = hooks.useLoaderVisibility(
33
33
  visible,
34
34
  delay,
35
35
  minDuration,
36
36
  transition
37
37
  );
38
38
  if (!shouldRender) return null;
39
- const ringSize = colors.normalizeSize(size);
40
- const tiltAngle = Math.min(Math.max(tilt, 0), 90);
41
- const segmentCount = Math.min(Math.max(segments, 4), 24);
39
+ const planeSize = colors.normalizeSize(size);
40
+ const count = Math.min(Math.max(planeCount, 2), 6);
41
+ const animationClass = {
42
+ synchronized: "animate-plane-rotate-sync",
43
+ staggered: "animate-plane-rotate-stagger",
44
+ opposite: "animate-plane-rotate-opposite"
45
+ }[rotationType];
42
46
  return /* @__PURE__ */ jsxRuntime.jsx(
43
47
  "div",
44
48
  {
@@ -47,66 +51,62 @@ const PerspectiveRing = react.forwardRef(
47
51
  className: classNames.cn("inline-flex items-center justify-center", className),
48
52
  style: {
49
53
  ...style,
50
- opacity,
54
+ opacity: containerOpacity,
51
55
  transition: transitionStyle,
52
- perspective: "800px"
56
+ perspective: "600px"
53
57
  },
54
58
  role: "status",
55
59
  "aria-label": ariaLabel,
56
60
  "aria-busy": "true",
57
61
  ...rest,
58
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", style: { width: ringSize, height: ringSize }, children: [
59
- showShadow && /* @__PURE__ */ jsxRuntime.jsx(
60
- "div",
61
- {
62
- className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
63
- style: {
64
- width: `calc(${ringSize} * 0.8)`,
65
- height: `calc(${ringSize} * 0.2)`,
66
- borderRadius: "50%",
67
- backgroundColor: "rgba(0, 0, 0, 0.2)",
68
- filter: `blur(${shadowBlur}px)`,
69
- transform: `translate(-50%, calc(${ringSize} * 0.3))`
70
- }
71
- }
72
- ),
73
- /* @__PURE__ */ jsxRuntime.jsx(
74
- "div",
75
- {
76
- className: "absolute inset-0 animate-spinner-rotate",
77
- style: {
78
- transformStyle: "preserve-3d",
79
- transform: `rotateX(${tiltAngle}deg)`,
80
- animationDuration: effectiveDuration,
81
- animationDirection: reverse ? "reverse" : "normal"
82
- },
83
- children: Array.from({ length: segmentCount }).map((_, index) => {
84
- const angle = index / segmentCount * 360;
85
- const segmentOpacity = 0.3 + (Math.cos(angle * Math.PI / 180) + 1) / 2 * 0.7;
62
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
63
+ "div",
64
+ {
65
+ className: "relative",
66
+ style: {
67
+ width: planeSize,
68
+ height: planeSize,
69
+ transformStyle: "preserve-3d"
70
+ },
71
+ children: [
72
+ showAxis && /* @__PURE__ */ jsxRuntime.jsx(
73
+ "div",
74
+ {
75
+ className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
76
+ style: {
77
+ width: "2px",
78
+ height: planeSize,
79
+ backgroundColor: color,
80
+ opacity: 0.3
81
+ }
82
+ }
83
+ ),
84
+ Array.from({ length: count }).map((_, index) => {
85
+ const delay2 = rotationType === "staggered" ? `${index * 0.15}s` : "0s";
86
+ const direction = rotationType === "opposite" && index % 2 === 1 ? reverse ? "normal" : "reverse" : reverse ? "reverse" : "normal";
86
87
  return /* @__PURE__ */ jsxRuntime.jsx(
87
88
  "div",
88
89
  {
89
- className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
90
+ className: classNames.cn("absolute inset-0", animationClass),
90
91
  style: {
91
- width: ringSize,
92
- height: ringSize,
93
- borderRadius: "50%",
94
- border: `${thickness}px solid ${color}`,
95
- borderColor: "transparent",
96
- borderTopColor: color,
97
- transform: `rotateZ(${angle}deg)`,
98
- opacity: segmentOpacity
92
+ backgroundColor: color,
93
+ opacity: planeOpacity,
94
+ transformStyle: "preserve-3d",
95
+ transform: `translateZ(${(index - count / 2) * spacing}px)`,
96
+ animationDuration: effectiveDuration,
97
+ animationDelay: delay2,
98
+ animationDirection: direction
99
99
  }
100
100
  },
101
101
  index
102
102
  );
103
103
  })
104
- }
105
- )
106
- ] })
104
+ ]
105
+ }
106
+ )
107
107
  }
108
108
  );
109
109
  }
110
110
  );
111
- PerspectiveRing.displayName = "PerspectiveRing";
112
- exports.PerspectiveRing = PerspectiveRing;
111
+ PlaneRotate.displayName = "PlaneRotate";
112
+ exports.PlaneRotate = PlaneRotate;