premium-react-loaders 3.1.1 → 4.1.0

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 (197) hide show
  1. package/README.md +30 -3
  2. package/dist/components/gradient/GradientBar.d.ts +13 -0
  3. package/dist/components/gradient/GradientBar.d.ts.map +1 -0
  4. package/dist/components/gradient/GradientRing.d.ts +12 -0
  5. package/dist/components/gradient/GradientRing.d.ts.map +1 -0
  6. package/dist/components/gradient/GradientSpinner.d.ts +12 -0
  7. package/dist/components/gradient/GradientSpinner.d.ts.map +1 -0
  8. package/dist/components/gradient/index.d.ts +4 -0
  9. package/dist/components/gradient/index.d.ts.map +1 -0
  10. package/dist/components/index.d.ts +4 -0
  11. package/dist/components/index.d.ts.map +1 -1
  12. package/dist/components/morph/LiquidFill.d.ts +13 -0
  13. package/dist/components/morph/LiquidFill.d.ts.map +1 -0
  14. package/dist/components/morph/MorphBlob.d.ts +12 -0
  15. package/dist/components/morph/MorphBlob.d.ts.map +1 -0
  16. package/dist/components/morph/WaveCircle.d.ts +12 -0
  17. package/dist/components/morph/WaveCircle.d.ts.map +1 -0
  18. package/dist/components/morph/index.d.ts +4 -0
  19. package/dist/components/morph/index.d.ts.map +1 -0
  20. package/dist/components/neon/NeonPulse.d.ts +12 -0
  21. package/dist/components/neon/NeonPulse.d.ts.map +1 -0
  22. package/dist/components/neon/NeonSpinner.d.ts +12 -0
  23. package/dist/components/neon/NeonSpinner.d.ts.map +1 -0
  24. package/dist/components/neon/NeonText.d.ts +12 -0
  25. package/dist/components/neon/NeonText.d.ts.map +1 -0
  26. package/dist/components/neon/index.d.ts +4 -0
  27. package/dist/components/neon/index.d.ts.map +1 -0
  28. package/dist/components/particle/ParticleBurst.d.ts +12 -0
  29. package/dist/components/particle/ParticleBurst.d.ts.map +1 -0
  30. package/dist/components/particle/ParticleField.d.ts +3 -0
  31. package/dist/components/particle/ParticleField.d.ts.map +1 -0
  32. package/dist/components/particle/ParticleOrbit.d.ts +12 -0
  33. package/dist/components/particle/ParticleOrbit.d.ts.map +1 -0
  34. package/dist/components/particle/ParticleTrail.d.ts +12 -0
  35. package/dist/components/particle/ParticleTrail.d.ts.map +1 -0
  36. package/dist/components/particle/index.d.ts +5 -0
  37. package/dist/components/particle/index.d.ts.map +1 -0
  38. package/dist/components/progress/ProgressBar.d.ts.map +1 -1
  39. package/dist/components/progress/ProgressCircle.d.ts.map +1 -1
  40. package/dist/components/progress/ProgressRing.d.ts.map +1 -1
  41. package/dist/components/status/InfoIndicator.d.ts +29 -0
  42. package/dist/components/status/InfoIndicator.d.ts.map +1 -0
  43. package/dist/components/status/WarningIndicator.d.ts +29 -0
  44. package/dist/components/status/WarningIndicator.d.ts.map +1 -0
  45. package/dist/components/status/index.d.ts +2 -0
  46. package/dist/components/status/index.d.ts.map +1 -1
  47. package/dist/index.cjs +50 -20
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +50 -20
  50. package/dist/index10.cjs +1 -1
  51. package/dist/index10.js +1 -1
  52. package/dist/index11.cjs +1 -1
  53. package/dist/index11.js +1 -1
  54. package/dist/index12.cjs +1 -1
  55. package/dist/index12.js +1 -1
  56. package/dist/index13.cjs +1 -1
  57. package/dist/index13.js +1 -1
  58. package/dist/index14.cjs +1 -1
  59. package/dist/index14.js +1 -1
  60. package/dist/index15.cjs +1 -1
  61. package/dist/index15.js +1 -1
  62. package/dist/index17.cjs +1 -1
  63. package/dist/index17.js +1 -1
  64. package/dist/index18.cjs +1 -1
  65. package/dist/index18.js +1 -1
  66. package/dist/index19.cjs +1 -1
  67. package/dist/index19.js +1 -1
  68. package/dist/index20.cjs +1 -1
  69. package/dist/index20.js +1 -1
  70. package/dist/index21.cjs +1 -1
  71. package/dist/index21.js +1 -1
  72. package/dist/index22.cjs +1 -1
  73. package/dist/index22.js +1 -1
  74. package/dist/index23.cjs +1 -1
  75. package/dist/index23.js +1 -1
  76. package/dist/index24.cjs +1 -1
  77. package/dist/index24.js +1 -1
  78. package/dist/index25.cjs +17 -2
  79. package/dist/index25.js +18 -3
  80. package/dist/index26.cjs +17 -2
  81. package/dist/index26.js +18 -3
  82. package/dist/index27.cjs +17 -2
  83. package/dist/index27.js +18 -3
  84. package/dist/index28.cjs +1 -1
  85. package/dist/index28.js +1 -1
  86. package/dist/index29.cjs +1 -1
  87. package/dist/index29.js +1 -1
  88. package/dist/index30.cjs +1 -1
  89. package/dist/index30.js +1 -1
  90. package/dist/index31.cjs +1 -1
  91. package/dist/index31.js +1 -1
  92. package/dist/index32.cjs +1 -1
  93. package/dist/index32.js +1 -1
  94. package/dist/index33.cjs +1 -1
  95. package/dist/index33.js +1 -1
  96. package/dist/index34.cjs +1 -1
  97. package/dist/index34.js +1 -1
  98. package/dist/index35.cjs +1 -1
  99. package/dist/index35.js +1 -1
  100. package/dist/index36.cjs +1 -1
  101. package/dist/index36.js +1 -1
  102. package/dist/index37.cjs +59 -145
  103. package/dist/index37.js +61 -147
  104. package/dist/index38.cjs +32 -53
  105. package/dist/index38.js +33 -54
  106. package/dist/index39.cjs +138 -84
  107. package/dist/index39.js +140 -86
  108. package/dist/index4.cjs +10 -0
  109. package/dist/index4.js +10 -0
  110. package/dist/index40.cjs +33 -106
  111. package/dist/index40.js +34 -107
  112. package/dist/index41.cjs +66 -50
  113. package/dist/index41.js +66 -50
  114. package/dist/index42.cjs +123 -44
  115. package/dist/index42.js +124 -45
  116. package/dist/index43.cjs +43 -85
  117. package/dist/index43.js +44 -86
  118. package/dist/index44.cjs +35 -27
  119. package/dist/index44.js +35 -27
  120. package/dist/index45.cjs +87 -58
  121. package/dist/index45.js +87 -58
  122. package/dist/index46.cjs +35 -88
  123. package/dist/index46.js +36 -89
  124. package/dist/index47.cjs +62 -58
  125. package/dist/index47.js +63 -59
  126. package/dist/index48.cjs +87 -110
  127. package/dist/index48.js +88 -111
  128. package/dist/index49.cjs +48 -109
  129. package/dist/index49.js +49 -110
  130. package/dist/index50.cjs +110 -62
  131. package/dist/index50.js +111 -63
  132. package/dist/index51.cjs +104 -49
  133. package/dist/index51.js +104 -49
  134. package/dist/index52.cjs +43 -77
  135. package/dist/index52.js +44 -78
  136. package/dist/index53.cjs +56 -56
  137. package/dist/index53.js +56 -56
  138. package/dist/index54.cjs +104 -149
  139. package/dist/index54.js +106 -151
  140. package/dist/index55.cjs +97 -38
  141. package/dist/index55.js +99 -40
  142. package/dist/index56.cjs +184 -120
  143. package/dist/index56.js +185 -121
  144. package/dist/index57.cjs +53 -0
  145. package/dist/index57.js +53 -0
  146. package/dist/index58.cjs +55 -0
  147. package/dist/index58.js +55 -0
  148. package/dist/index59.cjs +119 -0
  149. package/dist/index59.js +119 -0
  150. package/dist/index60.cjs +70 -0
  151. package/dist/index60.js +70 -0
  152. package/dist/index61.cjs +66 -0
  153. package/dist/index61.js +66 -0
  154. package/dist/index62.cjs +68 -0
  155. package/dist/index62.js +68 -0
  156. package/dist/index63.cjs +99 -0
  157. package/dist/index63.js +99 -0
  158. package/dist/index64.cjs +75 -0
  159. package/dist/index64.js +75 -0
  160. package/dist/index65.cjs +92 -0
  161. package/dist/index65.js +92 -0
  162. package/dist/index66.cjs +76 -0
  163. package/dist/index66.js +76 -0
  164. package/dist/index67.cjs +76 -0
  165. package/dist/index67.js +76 -0
  166. package/dist/index68.cjs +64 -0
  167. package/dist/index68.js +64 -0
  168. package/dist/index69.cjs +60 -0
  169. package/dist/index69.js +60 -0
  170. package/dist/index7.cjs +1 -1
  171. package/dist/index7.js +1 -1
  172. package/dist/index70.cjs +57 -0
  173. package/dist/index70.js +57 -0
  174. package/dist/index71.cjs +125 -0
  175. package/dist/index71.js +125 -0
  176. package/dist/index8.cjs +1 -1
  177. package/dist/index8.js +1 -1
  178. package/dist/index9.cjs +1 -1
  179. package/dist/index9.js +1 -1
  180. package/dist/premium-react-loaders.css +126 -0
  181. package/dist/types/gradient.d.ts +38 -0
  182. package/dist/types/gradient.d.ts.map +1 -0
  183. package/dist/types/index.d.ts +4 -0
  184. package/dist/types/index.d.ts.map +1 -1
  185. package/dist/types/morph.d.ts +28 -0
  186. package/dist/types/morph.d.ts.map +1 -0
  187. package/dist/types/neon.d.ts +26 -0
  188. package/dist/types/neon.d.ts.map +1 -0
  189. package/dist/types/particle.d.ts +40 -0
  190. package/dist/types/particle.d.ts.map +1 -0
  191. package/dist/types/progress.d.ts +6 -0
  192. package/dist/types/progress.d.ts.map +1 -1
  193. package/dist/types/status.d.ts +30 -0
  194. package/dist/types/status.d.ts.map +1 -1
  195. package/dist/utils/colors.d.ts +5 -0
  196. package/dist/utils/colors.d.ts.map +1 -1
  197. package/package.json +1 -1
package/dist/index51.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index56.js";
3
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index71.js";
4
4
  import { cn } from "./index3.js";
5
5
  import { normalizeSize } from "./index4.js";
6
- const PlaneRotate = forwardRef(
6
+ const CubeSpinner = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
- planeCount = 3,
11
- spacing = 6,
12
- rotationType = "staggered",
13
- opacity: planeOpacity = 0.6,
14
- showAxis = false,
10
+ faceColors,
11
+ rotationAxis = "diagonal",
12
+ perspective = 600,
13
+ showEdges = false,
14
+ edgeColor = "#000000",
15
15
  speed = "normal",
16
16
  reverse = false,
17
17
  respectMotionPreference = true,
@@ -20,27 +20,46 @@ const PlaneRotate = forwardRef(
20
20
  transition,
21
21
  className,
22
22
  style,
23
- testId = "plane-rotate",
23
+ testId = "cube-spinner",
24
24
  visible = true,
25
25
  ariaLabel = "Loading...",
26
26
  ...rest
27
27
  }, ref) => {
28
28
  const prefersReducedMotion = useReducedMotion();
29
29
  const effectiveDuration = getEffectiveDuration(speed, respectMotionPreference, prefersReducedMotion);
30
- const { shouldRender, opacity: containerOpacity, transitionStyle } = useLoaderVisibility(
30
+ const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
31
31
  visible,
32
32
  delay,
33
33
  minDuration,
34
34
  transition
35
35
  );
36
36
  if (!shouldRender) return null;
37
- const planeSize = normalizeSize(size);
38
- const count = Math.min(Math.max(planeCount, 2), 6);
37
+ const cubeSize = normalizeSize(size);
38
+ const halfSize = `calc(${cubeSize} / 2)`;
39
+ const defaultFaceColors = [
40
+ color,
41
+ // front
42
+ color,
43
+ // back
44
+ color,
45
+ // right
46
+ color,
47
+ // left
48
+ color,
49
+ // top
50
+ color
51
+ // bottom
52
+ ];
53
+ const colors = faceColors && faceColors.length === 6 ? faceColors : defaultFaceColors;
39
54
  const animationClass = {
40
- synchronized: "animate-plane-rotate-sync",
41
- staggered: "animate-plane-rotate-stagger",
42
- opposite: "animate-plane-rotate-opposite"
43
- }[rotationType];
55
+ x: "animate-cube-rotate-x",
56
+ y: "animate-cube-rotate-y",
57
+ z: "animate-cube-rotate-z",
58
+ diagonal: "animate-cube-rotate-diagonal"
59
+ }[rotationAxis];
60
+ const edgeStyle = showEdges ? {
61
+ border: `1px solid ${edgeColor}`
62
+ } : {};
44
63
  return /* @__PURE__ */ jsx(
45
64
  "div",
46
65
  {
@@ -49,9 +68,9 @@ const PlaneRotate = forwardRef(
49
68
  className: cn("inline-flex items-center justify-center", className),
50
69
  style: {
51
70
  ...style,
52
- opacity: containerOpacity,
71
+ opacity,
53
72
  transition: transitionStyle,
54
- perspective: "600px"
73
+ perspective: `${perspective}px`
55
74
  },
56
75
  role: "status",
57
76
  "aria-label": ariaLabel,
@@ -60,45 +79,81 @@ const PlaneRotate = forwardRef(
60
79
  children: /* @__PURE__ */ jsxs(
61
80
  "div",
62
81
  {
63
- className: "relative",
82
+ className: cn("relative", animationClass),
64
83
  style: {
65
- width: planeSize,
66
- height: planeSize,
67
- transformStyle: "preserve-3d"
84
+ width: cubeSize,
85
+ height: cubeSize,
86
+ transformStyle: "preserve-3d",
87
+ animationDuration: effectiveDuration,
88
+ animationDirection: reverse ? "reverse" : "normal"
68
89
  },
69
90
  children: [
70
- showAxis && /* @__PURE__ */ jsx(
91
+ /* @__PURE__ */ jsx(
71
92
  "div",
72
93
  {
73
- className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
94
+ className: "absolute inset-0",
74
95
  style: {
75
- width: "2px",
76
- height: planeSize,
77
- backgroundColor: color,
78
- opacity: 0.3
96
+ backgroundColor: colors[0],
97
+ transform: `translateZ(${halfSize})`,
98
+ ...edgeStyle
79
99
  }
80
100
  }
81
101
  ),
82
- Array.from({ length: count }).map((_, index) => {
83
- const delay2 = rotationType === "staggered" ? `${index * 0.15}s` : "0s";
84
- const direction = rotationType === "opposite" && index % 2 === 1 ? reverse ? "normal" : "reverse" : reverse ? "reverse" : "normal";
85
- return /* @__PURE__ */ jsx(
86
- "div",
87
- {
88
- className: cn("absolute inset-0", animationClass),
89
- style: {
90
- backgroundColor: color,
91
- opacity: planeOpacity,
92
- transformStyle: "preserve-3d",
93
- transform: `translateZ(${(index - count / 2) * spacing}px)`,
94
- animationDuration: effectiveDuration,
95
- animationDelay: delay2,
96
- animationDirection: direction
97
- }
98
- },
99
- index
100
- );
101
- })
102
+ /* @__PURE__ */ jsx(
103
+ "div",
104
+ {
105
+ className: "absolute inset-0",
106
+ style: {
107
+ backgroundColor: colors[1],
108
+ transform: `translateZ(calc(-${halfSize})) rotateY(180deg)`,
109
+ ...edgeStyle
110
+ }
111
+ }
112
+ ),
113
+ /* @__PURE__ */ jsx(
114
+ "div",
115
+ {
116
+ className: "absolute inset-0",
117
+ style: {
118
+ backgroundColor: colors[2],
119
+ transform: `translateX(${halfSize}) rotateY(90deg)`,
120
+ ...edgeStyle
121
+ }
122
+ }
123
+ ),
124
+ /* @__PURE__ */ jsx(
125
+ "div",
126
+ {
127
+ className: "absolute inset-0",
128
+ style: {
129
+ backgroundColor: colors[3],
130
+ transform: `translateX(calc(-${halfSize})) rotateY(-90deg)`,
131
+ ...edgeStyle
132
+ }
133
+ }
134
+ ),
135
+ /* @__PURE__ */ jsx(
136
+ "div",
137
+ {
138
+ className: "absolute inset-0",
139
+ style: {
140
+ backgroundColor: colors[4],
141
+ transform: `translateY(calc(-${halfSize})) rotateX(90deg)`,
142
+ ...edgeStyle
143
+ }
144
+ }
145
+ ),
146
+ /* @__PURE__ */ jsx(
147
+ "div",
148
+ {
149
+ className: "absolute inset-0",
150
+ style: {
151
+ backgroundColor: colors[5],
152
+ transform: `translateY(${halfSize}) rotateX(-90deg)`,
153
+ ...edgeStyle
154
+ }
155
+ }
156
+ )
102
157
  ]
103
158
  }
104
159
  )
@@ -106,7 +161,7 @@ const PlaneRotate = forwardRef(
106
161
  );
107
162
  }
108
163
  );
109
- PlaneRotate.displayName = "PlaneRotate";
164
+ CubeSpinner.displayName = "CubeSpinner";
110
165
  export {
111
- PlaneRotate
166
+ CubeSpinner
112
167
  };
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("./index56.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 "./index56.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
  };