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/index29.cjs CHANGED
@@ -2,7 +2,7 @@
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 colors = require("./index4.cjs");
7
7
  const classNames = require("./index3.cjs");
8
8
  const PulseDots = react.forwardRef(
package/dist/index29.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx } 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 { normalizeSize } from "./index4.js";
5
5
  import { cn } from "./index3.js";
6
6
  const PulseDots = forwardRef(
package/dist/index30.cjs CHANGED
@@ -2,7 +2,7 @@
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 colors = require("./index4.cjs");
7
7
  const classNames = require("./index3.cjs");
8
8
  const PulseWave = react.forwardRef(
package/dist/index30.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx } 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 { normalizeSize, parseSizeToNumber } from "./index4.js";
5
5
  import { cn } from "./index3.js";
6
6
  const PulseWave = forwardRef(
package/dist/index31.cjs CHANGED
@@ -2,7 +2,7 @@
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 colors = require("./index4.cjs");
7
7
  const classNames = require("./index3.cjs");
8
8
  const PulseBars = react.forwardRef(
package/dist/index31.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx } 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 { normalizeSize, parseSizeToNumber } from "./index4.js";
5
5
  import { cn } from "./index3.js";
6
6
  const PulseBars = forwardRef(
package/dist/index32.cjs CHANGED
@@ -2,7 +2,7 @@
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 colors = require("./index4.cjs");
7
7
  const classNames = require("./index3.cjs");
8
8
  const TypingIndicator = react.forwardRef(
package/dist/index32.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx } 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 { normalizeSize } from "./index4.js";
5
5
  import { cn } from "./index3.js";
6
6
  const TypingIndicator = forwardRef(
package/dist/index33.cjs CHANGED
@@ -2,7 +2,7 @@
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 LoaderOverlay = react.forwardRef(
8
8
  ({
package/dist/index33.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useLoaderVisibility } from "./index56.js";
3
+ import { useLoaderVisibility } from "./index71.js";
4
4
  import { cn } from "./index3.js";
5
5
  const LoaderOverlay = forwardRef(
6
6
  ({
package/dist/index34.cjs CHANGED
@@ -2,7 +2,7 @@
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
8
  const ButtonSpinner = react.forwardRef(
package/dist/index34.js CHANGED
@@ -1,6 +1,6 @@
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
6
  const ButtonSpinner = forwardRef(
package/dist/index35.cjs CHANGED
@@ -2,7 +2,7 @@
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
8
  const SuccessCheckmark = react.forwardRef(
package/dist/index35.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useLoaderVisibility } from "./index56.js";
3
+ import { useLoaderVisibility } from "./index71.js";
4
4
  import { cn } from "./index3.js";
5
5
  import { normalizeSize } from "./index4.js";
6
6
  const SuccessCheckmark = forwardRef(
package/dist/index36.cjs CHANGED
@@ -2,7 +2,7 @@
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
8
  const ErrorIndicator = react.forwardRef(
package/dist/index36.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useLoaderVisibility } from "./index56.js";
3
+ import { useLoaderVisibility } from "./index71.js";
4
4
  import { cn } from "./index3.js";
5
5
  import { normalizeSize } from "./index4.js";
6
6
  const ErrorIndicator = forwardRef(
package/dist/index37.cjs CHANGED
@@ -2,166 +2,80 @@
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("./index71.cjs");
5
6
  const classNames = require("./index3.cjs");
6
- const LoaderTransition = react.forwardRef(
7
+ const WarningIndicator = react.forwardRef(
7
8
  ({
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,
9
+ size = 48,
10
+ color = "#f59e0b",
11
+ animate = true,
12
+ shake = false,
13
+ duration = 500,
14
+ delay = 0,
15
+ minDuration = 0,
16
+ transition = true,
17
17
  className,
18
18
  style,
19
- testId = "loader-transition",
20
- ariaLabel,
19
+ testId = "warning-indicator",
21
20
  visible = true,
22
- delay = 0,
23
- minDuration = 0,
24
- transition: transitionProp,
21
+ ariaLabel = "Warning",
25
22
  ...rest
26
23
  }, 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(
24
+ const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
25
+ visible,
26
+ delay,
27
+ minDuration,
28
+ transition
29
+ );
30
+ if (!shouldRender) return null;
31
+ const animClass = !animate ? "" : shake ? "animate-warning-shake" : "animate-warning-scale";
32
+ return /* @__PURE__ */ jsxRuntime.jsx(
128
33
  "div",
129
34
  {
130
35
  ref,
131
36
  "data-testid": testId,
132
- className: classNames.cn("relative", className),
133
- style,
37
+ className: classNames.cn("inline-flex items-center justify-center", className),
38
+ style: { opacity, transition: transitionStyle, ...style },
134
39
  role: "status",
135
40
  "aria-label": ariaLabel,
136
- "aria-busy": loading,
137
41
  ...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
- ]
42
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
43
+ "svg",
44
+ {
45
+ className: animClass,
46
+ style: { width: size, height: size, animationDuration: `${duration}ms` },
47
+ viewBox: "0 0 52 52",
48
+ fill: "none",
49
+ children: [
50
+ /* @__PURE__ */ jsxRuntime.jsx(
51
+ "path",
52
+ {
53
+ d: "M26 4 L49 46 L3 46 Z",
54
+ fill: color,
55
+ stroke: color,
56
+ strokeWidth: 1,
57
+ strokeLinejoin: "round"
58
+ }
59
+ ),
60
+ /* @__PURE__ */ jsxRuntime.jsx(
61
+ "line",
62
+ {
63
+ x1: "26",
64
+ y1: "19",
65
+ x2: "26",
66
+ y2: "33",
67
+ stroke: "white",
68
+ strokeWidth: 3.5,
69
+ strokeLinecap: "round"
70
+ }
71
+ ),
72
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "26", cy: "39", r: "2", fill: "white" })
73
+ ]
74
+ }
75
+ )
162
76
  }
163
77
  );
164
78
  }
165
79
  );
166
- LoaderTransition.displayName = "LoaderTransition";
167
- exports.LoaderTransition = LoaderTransition;
80
+ WarningIndicator.displayName = "WarningIndicator";
81
+ exports.WarningIndicator = WarningIndicator;
package/dist/index37.js CHANGED
@@ -1,167 +1,81 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { forwardRef, useState, useRef, useEffect } from "react";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { useLoaderVisibility } from "./index71.js";
3
4
  import { cn } from "./index3.js";
4
- const LoaderTransition = forwardRef(
5
+ const WarningIndicator = forwardRef(
5
6
  ({
6
- loading,
7
- loadingContent,
8
- children,
9
- transitionType = "fade",
10
- duration = 300,
11
- timing = "ease-out",
12
- keepMounted = false,
13
- exitDelay = 0,
14
- appearOnMount = false,
7
+ size = 48,
8
+ color = "#f59e0b",
9
+ animate = true,
10
+ shake = false,
11
+ duration = 500,
12
+ delay = 0,
13
+ minDuration = 0,
14
+ transition = true,
15
15
  className,
16
16
  style,
17
- testId = "loader-transition",
18
- ariaLabel,
17
+ testId = "warning-indicator",
19
18
  visible = true,
20
- delay = 0,
21
- minDuration = 0,
22
- transition: transitionProp,
19
+ ariaLabel = "Warning",
23
20
  ...rest
24
21
  }, ref) => {
25
- const [isTransitioning, setIsTransitioning] = useState(false);
26
- const [showLoading, setShowLoading] = useState(appearOnMount ? loading : false);
27
- const [showContent, setShowContent] = useState(!appearOnMount && !loading);
28
- const timeoutRef = useRef(null);
29
- const entryTimeRef = useRef(null);
30
- useEffect(() => {
31
- if (!visible) {
32
- setShowLoading(false);
33
- setShowContent(false);
34
- return;
35
- }
36
- if (loading) {
37
- if (timeoutRef.current) {
38
- clearTimeout(timeoutRef.current);
39
- }
40
- if (delay > 0) {
41
- timeoutRef.current = setTimeout(() => {
42
- setShowLoading(true);
43
- setShowContent(false);
44
- entryTimeRef.current = Date.now();
45
- }, delay);
46
- } else {
47
- setShowLoading(true);
48
- setShowContent(false);
49
- entryTimeRef.current = Date.now();
50
- }
51
- } else {
52
- const elapsed = entryTimeRef.current ? Date.now() - entryTimeRef.current : 0;
53
- const remainingMinDuration = Math.max(0, minDuration - elapsed);
54
- const totalDelay = exitDelay + remainingMinDuration;
55
- if (totalDelay > 0) {
56
- timeoutRef.current = setTimeout(() => {
57
- setIsTransitioning(true);
58
- timeoutRef.current = setTimeout(() => {
59
- setShowLoading(false);
60
- setShowContent(true);
61
- setIsTransitioning(false);
62
- }, duration);
63
- }, totalDelay);
64
- } else {
65
- setIsTransitioning(true);
66
- timeoutRef.current = setTimeout(() => {
67
- setShowLoading(false);
68
- setShowContent(true);
69
- setIsTransitioning(false);
70
- }, duration);
71
- }
72
- }
73
- return () => {
74
- if (timeoutRef.current) {
75
- clearTimeout(timeoutRef.current);
76
- }
77
- };
78
- }, [loading, visible, delay, minDuration, exitDelay, duration]);
79
- const getTransitionClasses = (isLoading, isTransition) => {
80
- const baseClasses = "loader-transition";
81
- const timingClass = `loader-transition-${timing}`;
82
- if (transitionType === "none") {
83
- return baseClasses;
84
- }
85
- if (transitionType === "fade") {
86
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-fade-enter-active`;
87
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-fade-exit-active`;
88
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-fade-enter-active`;
89
- return `${baseClasses} ${timingClass}`;
90
- }
91
- if (transitionType === "slide-up") {
92
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-up-enter-active`;
93
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-up-exit-active`;
94
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-up-enter-active`;
95
- return `${baseClasses} ${timingClass}`;
96
- }
97
- if (transitionType === "slide-down") {
98
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-down-enter-active`;
99
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-down-exit-active`;
100
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-down-enter-active`;
101
- return `${baseClasses} ${timingClass}`;
102
- }
103
- if (transitionType === "slide-left") {
104
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-left-enter-active`;
105
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-left-exit-active`;
106
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-left-enter-active`;
107
- return `${baseClasses} ${timingClass}`;
108
- }
109
- if (transitionType === "slide-right") {
110
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-right-enter-active`;
111
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-right-exit-active`;
112
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-slide-right-enter-active`;
113
- return `${baseClasses} ${timingClass}`;
114
- }
115
- if (transitionType === "scale") {
116
- if (isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-scale-enter-active`;
117
- if (!isLoading && isTransition) return `${baseClasses} ${timingClass} loader-transition-scale-exit-active`;
118
- if (!isLoading && !isTransition) return `${baseClasses} ${timingClass} loader-transition-scale-enter-active`;
119
- return `${baseClasses} ${timingClass}`;
120
- }
121
- return baseClasses;
122
- };
123
- const shouldShowLoading = showLoading || keepMounted && loading;
124
- const shouldShowContent = showContent || keepMounted && !loading;
125
- return /* @__PURE__ */ jsxs(
22
+ const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
23
+ visible,
24
+ delay,
25
+ minDuration,
26
+ transition
27
+ );
28
+ if (!shouldRender) return null;
29
+ const animClass = !animate ? "" : shake ? "animate-warning-shake" : "animate-warning-scale";
30
+ return /* @__PURE__ */ jsx(
126
31
  "div",
127
32
  {
128
33
  ref,
129
34
  "data-testid": testId,
130
- className: cn("relative", className),
131
- style,
35
+ className: cn("inline-flex items-center justify-center", className),
36
+ style: { opacity, transition: transitionStyle, ...style },
132
37
  role: "status",
133
38
  "aria-label": ariaLabel,
134
- "aria-busy": loading,
135
39
  ...rest,
136
- children: [
137
- shouldShowLoading && /* @__PURE__ */ jsx(
138
- "div",
139
- {
140
- className: getTransitionClasses(true, isTransitioning),
141
- style: {
142
- transitionDuration: `${duration}ms`,
143
- display: showLoading ? "block" : "none"
144
- },
145
- children: loadingContent
146
- }
147
- ),
148
- shouldShowContent && /* @__PURE__ */ jsx(
149
- "div",
150
- {
151
- className: getTransitionClasses(false, isTransitioning),
152
- style: {
153
- transitionDuration: `${duration}ms`,
154
- display: showContent ? "block" : "none"
155
- },
156
- children
157
- }
158
- )
159
- ]
40
+ children: /* @__PURE__ */ jsxs(
41
+ "svg",
42
+ {
43
+ className: animClass,
44
+ style: { width: size, height: size, animationDuration: `${duration}ms` },
45
+ viewBox: "0 0 52 52",
46
+ fill: "none",
47
+ children: [
48
+ /* @__PURE__ */ jsx(
49
+ "path",
50
+ {
51
+ d: "M26 4 L49 46 L3 46 Z",
52
+ fill: color,
53
+ stroke: color,
54
+ strokeWidth: 1,
55
+ strokeLinejoin: "round"
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsx(
59
+ "line",
60
+ {
61
+ x1: "26",
62
+ y1: "19",
63
+ x2: "26",
64
+ y2: "33",
65
+ stroke: "white",
66
+ strokeWidth: 3.5,
67
+ strokeLinecap: "round"
68
+ }
69
+ ),
70
+ /* @__PURE__ */ jsx("circle", { cx: "26", cy: "39", r: "2", fill: "white" })
71
+ ]
72
+ }
73
+ )
160
74
  }
161
75
  );
162
76
  }
163
77
  );
164
- LoaderTransition.displayName = "LoaderTransition";
78
+ WarningIndicator.displayName = "WarningIndicator";
165
79
  export {
166
- LoaderTransition
80
+ WarningIndicator
167
81
  };