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/index53.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 "./index64.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 PerspectiveRing = forwardRef(
6
+ const PlaneRotate = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
- tilt = 45,
11
- thickness = 4,
12
- showShadow = true,
13
- shadowBlur = 10,
14
- segments = 8,
10
+ planeCount = 3,
11
+ spacing = 6,
12
+ rotationType = "staggered",
13
+ opacity: planeOpacity = 0.6,
14
+ showAxis = false,
15
15
  speed = "normal",
16
16
  reverse = false,
17
17
  respectMotionPreference = true,
@@ -20,23 +20,27 @@ const PerspectiveRing = forwardRef(
20
20
  transition,
21
21
  className,
22
22
  style,
23
- testId = "perspective-ring",
23
+ testId = "plane-rotate",
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, transitionStyle } = useLoaderVisibility(
30
+ const { shouldRender, opacity: containerOpacity, transitionStyle } = useLoaderVisibility(
31
31
  visible,
32
32
  delay,
33
33
  minDuration,
34
34
  transition
35
35
  );
36
36
  if (!shouldRender) return null;
37
- const ringSize = normalizeSize(size);
38
- const tiltAngle = Math.min(Math.max(tilt, 0), 90);
39
- const segmentCount = Math.min(Math.max(segments, 4), 24);
37
+ const planeSize = normalizeSize(size);
38
+ const count = Math.min(Math.max(planeCount, 2), 6);
39
+ const animationClass = {
40
+ synchronized: "animate-plane-rotate-sync",
41
+ staggered: "animate-plane-rotate-stagger",
42
+ opposite: "animate-plane-rotate-opposite"
43
+ }[rotationType];
40
44
  return /* @__PURE__ */ jsx(
41
45
  "div",
42
46
  {
@@ -45,68 +49,64 @@ const PerspectiveRing = forwardRef(
45
49
  className: cn("inline-flex items-center justify-center", className),
46
50
  style: {
47
51
  ...style,
48
- opacity,
52
+ opacity: containerOpacity,
49
53
  transition: transitionStyle,
50
- perspective: "800px"
54
+ perspective: "600px"
51
55
  },
52
56
  role: "status",
53
57
  "aria-label": ariaLabel,
54
58
  "aria-busy": "true",
55
59
  ...rest,
56
- children: /* @__PURE__ */ jsxs("div", { className: "relative", style: { width: ringSize, height: ringSize }, children: [
57
- showShadow && /* @__PURE__ */ jsx(
58
- "div",
59
- {
60
- className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
61
- style: {
62
- width: `calc(${ringSize} * 0.8)`,
63
- height: `calc(${ringSize} * 0.2)`,
64
- borderRadius: "50%",
65
- backgroundColor: "rgba(0, 0, 0, 0.2)",
66
- filter: `blur(${shadowBlur}px)`,
67
- transform: `translate(-50%, calc(${ringSize} * 0.3))`
68
- }
69
- }
70
- ),
71
- /* @__PURE__ */ jsx(
72
- "div",
73
- {
74
- className: "absolute inset-0 animate-spinner-rotate",
75
- style: {
76
- transformStyle: "preserve-3d",
77
- transform: `rotateX(${tiltAngle}deg)`,
78
- animationDuration: effectiveDuration,
79
- animationDirection: reverse ? "reverse" : "normal"
80
- },
81
- children: Array.from({ length: segmentCount }).map((_, index) => {
82
- const angle = index / segmentCount * 360;
83
- const segmentOpacity = 0.3 + (Math.cos(angle * Math.PI / 180) + 1) / 2 * 0.7;
60
+ children: /* @__PURE__ */ jsxs(
61
+ "div",
62
+ {
63
+ className: "relative",
64
+ style: {
65
+ width: planeSize,
66
+ height: planeSize,
67
+ transformStyle: "preserve-3d"
68
+ },
69
+ children: [
70
+ showAxis && /* @__PURE__ */ jsx(
71
+ "div",
72
+ {
73
+ className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
74
+ style: {
75
+ width: "2px",
76
+ height: planeSize,
77
+ backgroundColor: color,
78
+ opacity: 0.3
79
+ }
80
+ }
81
+ ),
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";
84
85
  return /* @__PURE__ */ jsx(
85
86
  "div",
86
87
  {
87
- className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
88
+ className: cn("absolute inset-0", animationClass),
88
89
  style: {
89
- width: ringSize,
90
- height: ringSize,
91
- borderRadius: "50%",
92
- border: `${thickness}px solid ${color}`,
93
- borderColor: "transparent",
94
- borderTopColor: color,
95
- transform: `rotateZ(${angle}deg)`,
96
- opacity: segmentOpacity
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
97
  }
98
98
  },
99
99
  index
100
100
  );
101
101
  })
102
- }
103
- )
104
- ] })
102
+ ]
103
+ }
104
+ )
105
105
  }
106
106
  );
107
107
  }
108
108
  );
109
- PerspectiveRing.displayName = "PerspectiveRing";
109
+ PlaneRotate.displayName = "PlaneRotate";
110
110
  export {
111
- PerspectiveRing
111
+ PlaneRotate
112
112
  };
package/dist/index54.cjs CHANGED
@@ -2,31 +2,36 @@
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 Skeleton = require("./index7.cjs");
6
- const hooks = require("./index64.cjs");
5
+ const hooks = require("./index71.cjs");
7
6
  const classNames = require("./index3.cjs");
8
7
  const colors = require("./index4.cjs");
9
- const FormFieldLoader = react.forwardRef(
8
+ const Helix = react.forwardRef(
10
9
  ({
11
10
  size = "md",
12
- fieldType = "text",
13
- showLabel = true,
14
- labelWidth = 100,
15
- fieldWidth = "100%",
16
- fieldHeight,
17
- showValidation = false,
18
- showRequired = false,
19
- showHelperText = false,
11
+ color = "#3b82f6",
12
+ secondaryColor = "#8b5cf6",
13
+ particleCount = 12,
14
+ radius = 20,
15
+ height,
16
+ turns = 1.5,
17
+ direction = "up",
18
+ particleSize = 6,
19
+ showLines = false,
20
+ speed = "normal",
21
+ reverse = false,
22
+ respectMotionPreference = true,
20
23
  delay = 0,
21
24
  minDuration = 0,
22
25
  transition,
23
26
  className,
24
27
  style,
25
- testId = "form-field-loader",
28
+ testId = "helix",
26
29
  visible = true,
27
- ariaLabel = "Loading form field...",
30
+ ariaLabel = "Loading...",
28
31
  ...rest
29
32
  }, ref) => {
33
+ const prefersReducedMotion = hooks.useReducedMotion();
34
+ const effectiveDuration = hooks.getEffectiveDuration(speed, respectMotionPreference, prefersReducedMotion);
30
35
  const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
31
36
  visible,
32
37
  delay,
@@ -34,156 +39,106 @@ const FormFieldLoader = react.forwardRef(
34
39
  transition
35
40
  );
36
41
  if (!shouldRender) return null;
37
- const getFieldHeight = () => {
38
- if (fieldHeight) return colors.normalizeSize(fieldHeight);
39
- switch (fieldType) {
40
- case "textarea":
41
- return "80px";
42
- case "select":
43
- return "40px";
44
- case "checkbox":
45
- case "radio":
46
- return "20px";
47
- default:
48
- return "40px";
49
- }
50
- };
51
- return /* @__PURE__ */ jsxRuntime.jsxs(
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";
59
+ return /* @__PURE__ */ jsxRuntime.jsx(
52
60
  "div",
53
61
  {
54
62
  ref,
55
63
  "data-testid": testId,
56
- className: classNames.cn("w-full", className),
64
+ className: classNames.cn("inline-flex items-center justify-center", className),
57
65
  style: {
58
66
  ...style,
59
67
  opacity,
60
- transition: transitionStyle
68
+ transition: transitionStyle,
69
+ perspective: "600px"
61
70
  },
62
71
  role: "status",
63
72
  "aria-label": ariaLabel,
64
73
  "aria-busy": "true",
65
74
  ...rest,
66
- children: [
67
- showLabel && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 mb-2", children: [
68
- /* @__PURE__ */ jsxRuntime.jsx(
69
- Skeleton.Skeleton,
70
- {
71
- width: colors.normalizeSize(labelWidth),
72
- height: 16,
73
- borderRadius: 4
74
- }
75
- ),
76
- showRequired && /* @__PURE__ */ jsxRuntime.jsx(
77
- Skeleton.Skeleton,
78
- {
79
- width: 8,
80
- height: 8,
81
- variant: "circular"
82
- }
83
- )
84
- ] }),
85
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", children: fieldType === "checkbox" || fieldType === "radio" ? (
86
- // Checkbox/Radio with label on the right
87
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
88
- /* @__PURE__ */ jsxRuntime.jsx(
89
- Skeleton.Skeleton,
90
- {
91
- width: 20,
92
- height: 20,
93
- variant: fieldType === "radio" ? "circular" : "rectangular",
94
- borderRadius: fieldType === "checkbox" ? 4 : void 0
95
- }
96
- ),
97
- /* @__PURE__ */ jsxRuntime.jsx(
98
- Skeleton.Skeleton,
99
- {
100
- width: 150,
101
- height: 16,
102
- borderRadius: 4
103
- }
104
- )
105
- ] })
106
- ) : fieldType === "select" ? (
107
- // Select dropdown
108
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
109
- /* @__PURE__ */ jsxRuntime.jsx(
110
- Skeleton.Skeleton,
111
- {
112
- width: fieldWidth,
113
- height: getFieldHeight(),
114
- borderRadius: 6
115
- }
116
- ),
117
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-3 top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsxRuntime.jsx(
118
- Skeleton.Skeleton,
119
- {
120
- width: 12,
121
- height: 12,
122
- variant: "rectangular"
123
- }
124
- ) })
125
- ] })
126
- ) : fieldType === "file" ? (
127
- // File input
128
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
129
- /* @__PURE__ */ jsxRuntime.jsx(
130
- Skeleton.Skeleton,
131
- {
132
- width: 120,
133
- height: 40,
134
- borderRadius: 6
135
- }
136
- ),
137
- /* @__PURE__ */ jsxRuntime.jsx(
138
- Skeleton.Skeleton,
75
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
76
+ "div",
77
+ {
78
+ className: classNames.cn("relative", animationClass),
79
+ style: {
80
+ width: `${radius * 2 + particleSize * 2}px`,
81
+ height: `${helixHeight}px`,
82
+ transformStyle: "preserve-3d",
83
+ animationDuration: effectiveDuration,
84
+ animationDirection: reverse ? "reverse" : "normal"
85
+ },
86
+ 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(
119
+ "div",
139
120
  {
140
- width: "calc(100% - 132px)",
141
- height: 40,
142
- borderRadius: 6
143
- }
144
- )
145
- ] })
146
- ) : (
147
- // Text, textarea, etc.
148
- /* @__PURE__ */ jsxRuntime.jsx(
149
- Skeleton.Skeleton,
150
- {
151
- width: fieldWidth,
152
- height: getFieldHeight(),
153
- borderRadius: 6
154
- }
155
- )
156
- ) }),
157
- showHelperText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsxRuntime.jsx(
158
- Skeleton.Skeleton,
159
- {
160
- width: 200,
161
- height: 14,
162
- borderRadius: 4
163
- }
164
- ) }),
165
- showValidation && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 mt-1", children: [
166
- /* @__PURE__ */ jsxRuntime.jsx(
167
- Skeleton.Skeleton,
168
- {
169
- width: 14,
170
- height: 14,
171
- variant: "circular"
172
- }
173
- ),
174
- /* @__PURE__ */ jsxRuntime.jsx(
175
- Skeleton.Skeleton,
176
- {
177
- width: 180,
178
- height: 14,
179
- borderRadius: 4
180
- }
181
- )
182
- ] })
183
- ]
121
+ className: "absolute animate-helix-particle-pulse",
122
+ 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`
132
+ }
133
+ },
134
+ index
135
+ ))
136
+ ]
137
+ }
138
+ )
184
139
  }
185
140
  );
186
141
  }
187
142
  );
188
- FormFieldLoader.displayName = "FormFieldLoader";
189
- exports.FormFieldLoader = FormFieldLoader;
143
+ Helix.displayName = "Helix";
144
+ exports.Helix = Helix;