premium-react-loaders 3.0.0 → 3.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 (153) hide show
  1. package/README.md +45 -3
  2. package/dist/components/3d/CubeSpinner.d.ts +21 -0
  3. package/dist/components/3d/CubeSpinner.d.ts.map +1 -0
  4. package/dist/components/3d/FlipCard.d.ts +21 -0
  5. package/dist/components/3d/FlipCard.d.ts.map +1 -0
  6. package/dist/components/3d/Helix.d.ts +23 -0
  7. package/dist/components/3d/Helix.d.ts.map +1 -0
  8. package/dist/components/3d/PerspectiveRing.d.ts +21 -0
  9. package/dist/components/3d/PerspectiveRing.d.ts.map +1 -0
  10. package/dist/components/3d/PlaneRotate.d.ts +21 -0
  11. package/dist/components/3d/PlaneRotate.d.ts.map +1 -0
  12. package/dist/components/3d/index.d.ts +6 -0
  13. package/dist/components/3d/index.d.ts.map +1 -0
  14. package/dist/components/accessibility/LiveRegion.d.ts +34 -0
  15. package/dist/components/accessibility/LiveRegion.d.ts.map +1 -0
  16. package/dist/components/accessibility/index.d.ts +2 -0
  17. package/dist/components/accessibility/index.d.ts.map +1 -0
  18. package/dist/components/index.d.ts +3 -0
  19. package/dist/components/index.d.ts.map +1 -1
  20. package/dist/components/skeleton/DataTableSkeleton.d.ts +25 -0
  21. package/dist/components/skeleton/DataTableSkeleton.d.ts.map +1 -0
  22. package/dist/components/skeleton/SmartSkeleton.d.ts +23 -0
  23. package/dist/components/skeleton/SmartSkeleton.d.ts.map +1 -0
  24. package/dist/components/skeleton/index.d.ts +2 -0
  25. package/dist/components/skeleton/index.d.ts.map +1 -1
  26. package/dist/components/smart/FormFieldLoader.d.ts +22 -0
  27. package/dist/components/smart/FormFieldLoader.d.ts.map +1 -0
  28. package/dist/components/smart/index.d.ts +2 -0
  29. package/dist/components/smart/index.d.ts.map +1 -0
  30. package/dist/hooks/index.d.ts +6 -0
  31. package/dist/hooks/index.d.ts.map +1 -1
  32. package/dist/hooks/useLoadingAnalytics.d.ts +101 -0
  33. package/dist/hooks/useLoadingAnalytics.d.ts.map +1 -0
  34. package/dist/hooks/useLoadingOrchestrator.d.ts +104 -0
  35. package/dist/hooks/useLoadingOrchestrator.d.ts.map +1 -0
  36. package/dist/hooks/useSmartLoader.d.ts +98 -0
  37. package/dist/hooks/useSmartLoader.d.ts.map +1 -0
  38. package/dist/index.cjs +49 -31
  39. package/dist/index.js +49 -31
  40. package/dist/index10.cjs +1 -1
  41. package/dist/index10.js +1 -1
  42. package/dist/index11.cjs +1 -1
  43. package/dist/index11.js +1 -1
  44. package/dist/index12.cjs +1 -1
  45. package/dist/index12.js +1 -1
  46. package/dist/index13.cjs +1 -1
  47. package/dist/index13.js +1 -1
  48. package/dist/index14.cjs +1 -1
  49. package/dist/index14.js +1 -1
  50. package/dist/index15.cjs +1 -1
  51. package/dist/index15.js +1 -1
  52. package/dist/index16.cjs +131 -66
  53. package/dist/index16.js +132 -67
  54. package/dist/index17.cjs +245 -30
  55. package/dist/index17.js +246 -31
  56. package/dist/index18.cjs +24 -36
  57. package/dist/index18.js +24 -36
  58. package/dist/index19.cjs +19 -21
  59. package/dist/index19.js +19 -21
  60. package/dist/index20.cjs +25 -20
  61. package/dist/index20.js +25 -20
  62. package/dist/index21.cjs +22 -32
  63. package/dist/index21.js +22 -32
  64. package/dist/index22.cjs +26 -35
  65. package/dist/index22.js +28 -37
  66. package/dist/index23.cjs +40 -76
  67. package/dist/index23.js +42 -78
  68. package/dist/index24.cjs +53 -102
  69. package/dist/index24.js +54 -103
  70. package/dist/index25.cjs +46 -80
  71. package/dist/index25.js +47 -81
  72. package/dist/index26.cjs +105 -103
  73. package/dist/index26.js +107 -105
  74. package/dist/index27.cjs +108 -27
  75. package/dist/index27.js +111 -30
  76. package/dist/index28.cjs +104 -36
  77. package/dist/index28.js +106 -38
  78. package/dist/index29.cjs +22 -30
  79. package/dist/index29.js +23 -31
  80. package/dist/index30.cjs +30 -32
  81. package/dist/index30.js +31 -33
  82. package/dist/index31.cjs +49 -52
  83. package/dist/index31.js +50 -53
  84. package/dist/index32.cjs +37 -108
  85. package/dist/index32.js +38 -109
  86. package/dist/index33.cjs +54 -72
  87. package/dist/index33.js +55 -73
  88. package/dist/index34.cjs +112 -80
  89. package/dist/index34.js +112 -80
  90. package/dist/index35.cjs +78 -145
  91. package/dist/index35.js +80 -147
  92. package/dist/index36.cjs +78 -57
  93. package/dist/index36.js +79 -58
  94. package/dist/index37.cjs +138 -84
  95. package/dist/index37.js +140 -86
  96. package/dist/index38.cjs +33 -106
  97. package/dist/index38.js +34 -107
  98. package/dist/index39.cjs +66 -50
  99. package/dist/index39.js +66 -50
  100. package/dist/index40.cjs +123 -44
  101. package/dist/index40.js +124 -45
  102. package/dist/index41.cjs +43 -85
  103. package/dist/index41.js +44 -86
  104. package/dist/index42.cjs +35 -27
  105. package/dist/index42.js +35 -27
  106. package/dist/index43.cjs +87 -58
  107. package/dist/index43.js +87 -58
  108. package/dist/index44.cjs +35 -88
  109. package/dist/index44.js +36 -89
  110. package/dist/index45.cjs +62 -58
  111. package/dist/index45.js +63 -59
  112. package/dist/index46.cjs +87 -110
  113. package/dist/index46.js +88 -111
  114. package/dist/index47.cjs +101 -120
  115. package/dist/index47.js +102 -121
  116. package/dist/index48.cjs +158 -0
  117. package/dist/index48.js +158 -0
  118. package/dist/index49.cjs +167 -0
  119. package/dist/index49.js +167 -0
  120. package/dist/index50.cjs +110 -0
  121. package/dist/index50.js +110 -0
  122. package/dist/index51.cjs +112 -0
  123. package/dist/index51.js +112 -0
  124. package/dist/index52.cjs +144 -0
  125. package/dist/index52.js +144 -0
  126. package/dist/index53.cjs +112 -0
  127. package/dist/index53.js +112 -0
  128. package/dist/index54.cjs +189 -0
  129. package/dist/index54.js +189 -0
  130. package/dist/index55.cjs +53 -0
  131. package/dist/index55.js +53 -0
  132. package/dist/index56.cjs +125 -0
  133. package/dist/index56.js +125 -0
  134. package/dist/index7.cjs +1 -1
  135. package/dist/index7.js +1 -1
  136. package/dist/index8.cjs +1 -1
  137. package/dist/index8.js +1 -1
  138. package/dist/index9.cjs +1 -1
  139. package/dist/index9.js +1 -1
  140. package/dist/premium-react-loaders.css +140 -0
  141. package/dist/types/3d.d.ts +85 -0
  142. package/dist/types/3d.d.ts.map +1 -0
  143. package/dist/types/accessibility.d.ts +35 -0
  144. package/dist/types/accessibility.d.ts.map +1 -0
  145. package/dist/types/index.d.ts +3 -0
  146. package/dist/types/index.d.ts.map +1 -1
  147. package/dist/types/smart.d.ts +63 -0
  148. package/dist/types/smart.d.ts.map +1 -0
  149. package/dist/utils/accessibility.d.ts +67 -0
  150. package/dist/utils/accessibility.d.ts.map +1 -0
  151. package/dist/utils/index.d.ts +1 -0
  152. package/dist/utils/index.d.ts.map +1 -1
  153. package/package.json +1 -1
package/dist/index34.js CHANGED
@@ -1,38 +1,124 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useLoaderVisibility } from "./index47.js";
3
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index56.js";
4
4
  import { cn } from "./index3.js";
5
5
  import { normalizeSize } from "./index4.js";
6
- const ErrorIndicator = forwardRef(
6
+ const ButtonSpinner = forwardRef(
7
7
  ({
8
- size = "md",
9
- color = "#ef4444",
10
- strokeWidth = 3,
11
- duration = 500,
12
- showCircle = false,
13
- circleColor,
14
- fillCircle = false,
15
- shake = true,
8
+ size = 16,
9
+ color = "currentColor",
10
+ variant = "circle",
11
+ position = "left",
12
+ thickness = 2,
13
+ dotCount = 3,
14
+ barCount = 3,
15
+ speed = "normal",
16
+ gap = 8,
17
+ showContent = true,
18
+ children,
16
19
  delay = 0,
17
20
  minDuration = 0,
18
- transition = true,
21
+ transition,
22
+ respectMotionPreference = true,
19
23
  className,
20
24
  style,
21
- testId = "error-indicator",
25
+ testId = "button-spinner",
22
26
  visible = true,
23
- ariaLabel = "Error",
27
+ ariaLabel = "Loading...",
24
28
  ...rest
25
29
  }, ref) => {
30
+ const prefersReducedMotion = useReducedMotion();
31
+ const effectiveDuration = getEffectiveDuration(speed, respectMotionPreference, prefersReducedMotion);
26
32
  const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
27
33
  visible,
28
34
  delay,
29
35
  minDuration,
30
36
  transition
31
37
  );
32
- if (!shouldRender) return null;
33
- const effectiveCircleColor = circleColor || color;
34
- const sizeValue = normalizeSize(size);
35
- return /* @__PURE__ */ jsx(
38
+ if (!shouldRender) {
39
+ return children ? /* @__PURE__ */ jsx("div", { className, style, children }) : null;
40
+ }
41
+ const spinnerSize = normalizeSize(size);
42
+ const gapSize = typeof gap === "number" ? `${gap}px` : gap;
43
+ const renderSpinner = () => {
44
+ switch (variant) {
45
+ case "dots":
46
+ return /* @__PURE__ */ jsx(
47
+ "div",
48
+ {
49
+ className: "inline-flex items-center justify-center",
50
+ style: { gap: `${parseInt(spinnerSize) / 8}px` },
51
+ children: Array.from({ length: dotCount }).map((_, i) => /* @__PURE__ */ jsx(
52
+ "div",
53
+ {
54
+ className: "animate-button-dot-pulse",
55
+ style: {
56
+ width: `${parseInt(spinnerSize) / 3}px`,
57
+ height: `${parseInt(spinnerSize) / 3}px`,
58
+ backgroundColor: color,
59
+ borderRadius: "50%",
60
+ animationDuration: effectiveDuration,
61
+ animationDelay: `${i * parseInt(effectiveDuration) / (dotCount * 3)}ms`
62
+ }
63
+ },
64
+ i
65
+ ))
66
+ }
67
+ );
68
+ case "bars":
69
+ return /* @__PURE__ */ jsx(
70
+ "div",
71
+ {
72
+ className: "inline-flex items-center justify-center",
73
+ style: { gap: `${parseInt(spinnerSize) / 8}px`, height: spinnerSize },
74
+ children: Array.from({ length: barCount }).map((_, i) => /* @__PURE__ */ jsx(
75
+ "div",
76
+ {
77
+ className: "animate-button-bar-pulse",
78
+ style: {
79
+ width: `${parseInt(spinnerSize) / 6}px`,
80
+ height: "100%",
81
+ backgroundColor: color,
82
+ borderRadius: "2px",
83
+ animationDuration: effectiveDuration,
84
+ animationDelay: `${i * parseInt(effectiveDuration) / (barCount * 3)}ms`
85
+ }
86
+ },
87
+ i
88
+ ))
89
+ }
90
+ );
91
+ case "circle":
92
+ default:
93
+ return /* @__PURE__ */ jsx(
94
+ "svg",
95
+ {
96
+ className: "animate-spinner-rotate",
97
+ style: {
98
+ width: spinnerSize,
99
+ height: spinnerSize,
100
+ animationDuration: effectiveDuration
101
+ },
102
+ viewBox: "0 0 50 50",
103
+ children: /* @__PURE__ */ jsx(
104
+ "circle",
105
+ {
106
+ cx: "25",
107
+ cy: "25",
108
+ r: 25 - thickness * 4,
109
+ fill: "none",
110
+ stroke: color,
111
+ strokeWidth: thickness * 2,
112
+ strokeDasharray: "80, 200",
113
+ strokeLinecap: "round"
114
+ }
115
+ )
116
+ }
117
+ );
118
+ }
119
+ };
120
+ const flexDirection = position === "right" ? "row-reverse" : "row";
121
+ return /* @__PURE__ */ jsxs(
36
122
  "div",
37
123
  {
38
124
  ref,
@@ -40,78 +126,24 @@ const ErrorIndicator = forwardRef(
40
126
  className: cn("inline-flex items-center justify-center", className),
41
127
  style: {
42
128
  ...style,
129
+ flexDirection: position === "center" ? "column" : flexDirection,
130
+ gap: showContent && children ? gapSize : 0,
43
131
  opacity,
44
132
  transition: transitionStyle
45
133
  },
46
134
  role: "status",
47
135
  "aria-label": ariaLabel,
136
+ "aria-busy": "true",
48
137
  ...rest,
49
- children: /* @__PURE__ */ jsxs(
50
- "svg",
51
- {
52
- className: shake ? "animate-error-shake" : "animate-error-scale",
53
- style: {
54
- width: sizeValue,
55
- height: sizeValue,
56
- animationDuration: `${duration}ms`
57
- },
58
- viewBox: "0 0 52 52",
59
- children: [
60
- showCircle && /* @__PURE__ */ jsx(
61
- "circle",
62
- {
63
- className: "animate-error-circle",
64
- cx: "26",
65
- cy: "26",
66
- r: "23",
67
- fill: fillCircle ? effectiveCircleColor : "none",
68
- stroke: effectiveCircleColor,
69
- strokeWidth,
70
- style: {
71
- animationDuration: `${duration}ms`
72
- }
73
- }
74
- ),
75
- /* @__PURE__ */ jsxs(
76
- "g",
77
- {
78
- className: "animate-error-x",
79
- style: {
80
- animationDuration: `${duration}ms`,
81
- animationDelay: showCircle ? `${duration * 0.3}ms` : "0ms"
82
- },
83
- children: [
84
- /* @__PURE__ */ jsx(
85
- "path",
86
- {
87
- fill: "none",
88
- stroke: color,
89
- strokeWidth,
90
- strokeLinecap: "round",
91
- d: "M16 16 36 36"
92
- }
93
- ),
94
- /* @__PURE__ */ jsx(
95
- "path",
96
- {
97
- fill: "none",
98
- stroke: color,
99
- strokeWidth,
100
- strokeLinecap: "round",
101
- d: "M36 16 16 36"
102
- }
103
- )
104
- ]
105
- }
106
- )
107
- ]
108
- }
109
- )
138
+ children: [
139
+ renderSpinner(),
140
+ showContent && children && /* @__PURE__ */ jsx("span", { children })
141
+ ]
110
142
  }
111
143
  );
112
144
  }
113
145
  );
114
- ErrorIndicator.displayName = "ErrorIndicator";
146
+ ButtonSpinner.displayName = "ButtonSpinner";
115
147
  export {
116
- ErrorIndicator
148
+ ButtonSpinner
117
149
  };
package/dist/index35.cjs CHANGED
@@ -2,166 +2,99 @@
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
6
  const classNames = require("./index3.cjs");
6
- const LoaderTransition = react.forwardRef(
7
+ const colors = require("./index4.cjs");
8
+ const SuccessCheckmark = react.forwardRef(
7
9
  ({
8
- loading,
9
- loadingContent,
10
- children,
11
- transitionType = "fade",
12
- duration = 300,
13
- timing = "ease-out",
14
- keepMounted = false,
15
- exitDelay = 0,
16
- appearOnMount = false,
10
+ size = "md",
11
+ color = "#10b981",
12
+ strokeWidth = 3,
13
+ duration = 500,
14
+ showCircle = false,
15
+ circleColor,
16
+ fillCircle = false,
17
+ delay = 0,
18
+ minDuration = 0,
19
+ transition = true,
17
20
  className,
18
21
  style,
19
- testId = "loader-transition",
20
- ariaLabel,
22
+ testId = "success-checkmark",
21
23
  visible = true,
22
- delay = 0,
23
- minDuration = 0,
24
- transition: transitionProp,
24
+ ariaLabel = "Success",
25
25
  ...rest
26
26
  }, ref) => {
27
- const [isTransitioning, setIsTransitioning] = react.useState(false);
28
- const [showLoading, setShowLoading] = react.useState(appearOnMount ? loading : false);
29
- const [showContent, setShowContent] = react.useState(!appearOnMount && !loading);
30
- const timeoutRef = react.useRef(null);
31
- const entryTimeRef = react.useRef(null);
32
- react.useEffect(() => {
33
- if (!visible) {
34
- setShowLoading(false);
35
- setShowContent(false);
36
- return;
37
- }
38
- if (loading) {
39
- if (timeoutRef.current) {
40
- clearTimeout(timeoutRef.current);
41
- }
42
- if (delay > 0) {
43
- timeoutRef.current = setTimeout(() => {
44
- setShowLoading(true);
45
- setShowContent(false);
46
- entryTimeRef.current = Date.now();
47
- }, delay);
48
- } else {
49
- setShowLoading(true);
50
- setShowContent(false);
51
- entryTimeRef.current = Date.now();
52
- }
53
- } else {
54
- const elapsed = entryTimeRef.current ? Date.now() - entryTimeRef.current : 0;
55
- const remainingMinDuration = Math.max(0, minDuration - elapsed);
56
- const totalDelay = exitDelay + remainingMinDuration;
57
- if (totalDelay > 0) {
58
- timeoutRef.current = setTimeout(() => {
59
- setIsTransitioning(true);
60
- timeoutRef.current = setTimeout(() => {
61
- setShowLoading(false);
62
- setShowContent(true);
63
- setIsTransitioning(false);
64
- }, duration);
65
- }, totalDelay);
66
- } else {
67
- setIsTransitioning(true);
68
- timeoutRef.current = setTimeout(() => {
69
- setShowLoading(false);
70
- setShowContent(true);
71
- setIsTransitioning(false);
72
- }, duration);
73
- }
74
- }
75
- return () => {
76
- if (timeoutRef.current) {
77
- clearTimeout(timeoutRef.current);
78
- }
79
- };
80
- }, [loading, visible, delay, minDuration, exitDelay, duration]);
81
- const getTransitionClasses = (isLoading, isTransition) => {
82
- const baseClasses = "loader-transition";
83
- const timingClass = `loader-transition-${timing}`;
84
- if (transitionType === "none") {
85
- return baseClasses;
86
- }
87
- if (transitionType === "fade") {
88
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-fade-enter-active`;
89
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-fade-exit-active`;
90
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-fade-enter-active`;
91
- return `${baseClasses} ${timingClass}`;
92
- }
93
- if (transitionType === "slide-up") {
94
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-up-enter-active`;
95
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-up-exit-active`;
96
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-up-enter-active`;
97
- return `${baseClasses} ${timingClass}`;
98
- }
99
- if (transitionType === "slide-down") {
100
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-down-enter-active`;
101
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-down-exit-active`;
102
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-down-enter-active`;
103
- return `${baseClasses} ${timingClass}`;
104
- }
105
- if (transitionType === "slide-left") {
106
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-left-enter-active`;
107
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-left-exit-active`;
108
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-left-enter-active`;
109
- return `${baseClasses} ${timingClass}`;
110
- }
111
- if (transitionType === "slide-right") {
112
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-right-enter-active`;
113
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-right-exit-active`;
114
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-right-enter-active`;
115
- return `${baseClasses} ${timingClass}`;
116
- }
117
- if (transitionType === "scale") {
118
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-scale-enter-active`;
119
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-scale-exit-active`;
120
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-scale-enter-active`;
121
- return `${baseClasses} ${timingClass}`;
122
- }
123
- return baseClasses;
124
- };
125
- const shouldShowLoading = showLoading || keepMounted && loading;
126
- const shouldShowContent = showContent || keepMounted && !loading;
127
- return /* @__PURE__ */ jsxRuntime.jsxs(
27
+ const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
28
+ visible,
29
+ delay,
30
+ minDuration,
31
+ transition
32
+ );
33
+ if (!shouldRender) return null;
34
+ const effectiveCircleColor = circleColor || color;
35
+ const sizeValue = colors.normalizeSize(size);
36
+ return /* @__PURE__ */ jsxRuntime.jsx(
128
37
  "div",
129
38
  {
130
39
  ref,
131
40
  "data-testid": testId,
132
- className: classNames.cn("relative", className),
133
- style,
41
+ className: classNames.cn("inline-flex items-center justify-center", className),
42
+ style: {
43
+ ...style,
44
+ opacity,
45
+ transition: transitionStyle
46
+ },
134
47
  role: "status",
135
48
  "aria-label": ariaLabel,
136
- "aria-busy": loading,
137
49
  ...rest,
138
- children: [
139
- shouldShowLoading && /* @__PURE__ */ jsxRuntime.jsx(
140
- "div",
141
- {
142
- className: getTransitionClasses(true, isTransitioning),
143
- style: {
144
- transitionDuration: `${duration}ms`,
145
- display: showLoading ? "block" : "none"
146
- },
147
- children: loadingContent
148
- }
149
- ),
150
- shouldShowContent && /* @__PURE__ */ jsxRuntime.jsx(
151
- "div",
152
- {
153
- className: getTransitionClasses(false, isTransitioning),
154
- style: {
155
- transitionDuration: `${duration}ms`,
156
- display: showContent ? "block" : "none"
157
- },
158
- children
159
- }
160
- )
161
- ]
50
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
51
+ "svg",
52
+ {
53
+ className: "animate-success-scale",
54
+ style: {
55
+ width: sizeValue,
56
+ height: sizeValue,
57
+ animationDuration: `${duration}ms`
58
+ },
59
+ viewBox: "0 0 52 52",
60
+ children: [
61
+ showCircle && /* @__PURE__ */ jsxRuntime.jsx(
62
+ "circle",
63
+ {
64
+ className: "animate-success-circle",
65
+ cx: "26",
66
+ cy: "26",
67
+ r: "23",
68
+ fill: fillCircle ? effectiveCircleColor : "none",
69
+ stroke: effectiveCircleColor,
70
+ strokeWidth,
71
+ style: {
72
+ animationDuration: `${duration}ms`
73
+ }
74
+ }
75
+ ),
76
+ /* @__PURE__ */ jsxRuntime.jsx(
77
+ "path",
78
+ {
79
+ className: "animate-success-check",
80
+ fill: "none",
81
+ stroke: color,
82
+ strokeWidth,
83
+ strokeLinecap: "round",
84
+ strokeLinejoin: "round",
85
+ d: "M14.1 27.2l7.1 7.2 16.7-16.8",
86
+ style: {
87
+ animationDuration: `${duration}ms`,
88
+ animationDelay: showCircle ? `${duration * 0.3}ms` : "0ms"
89
+ }
90
+ }
91
+ )
92
+ ]
93
+ }
94
+ )
162
95
  }
163
96
  );
164
97
  }
165
98
  );
166
- LoaderTransition.displayName = "LoaderTransition";
167
- exports.LoaderTransition = LoaderTransition;
99
+ SuccessCheckmark.displayName = "SuccessCheckmark";
100
+ exports.SuccessCheckmark = SuccessCheckmark;