premium-react-loaders 1.3.0 → 2.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 (138) hide show
  1. package/README.md +264 -30
  2. package/dist/components/pulse/TypingIndicator.d.ts.map +1 -1
  3. package/dist/context/ThemeContext.d.ts +84 -0
  4. package/dist/context/ThemeContext.d.ts.map +1 -0
  5. package/dist/context/index.d.ts +3 -0
  6. package/dist/context/index.d.ts.map +1 -0
  7. package/dist/hooks/index.d.ts +3 -0
  8. package/dist/hooks/index.d.ts.map +1 -0
  9. package/dist/hooks/useLoader.d.ts +56 -0
  10. package/dist/hooks/useLoader.d.ts.map +1 -0
  11. package/dist/index.cjs +31 -27
  12. package/dist/index.d.ts +5 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +31 -27
  15. package/dist/index10.cjs +20 -32
  16. package/dist/index10.js +20 -32
  17. package/dist/index11.cjs +47 -26
  18. package/dist/index11.js +47 -26
  19. package/dist/index12.cjs +30 -127
  20. package/dist/index12.js +31 -128
  21. package/dist/index13.cjs +30 -54
  22. package/dist/index13.js +30 -54
  23. package/dist/index14.cjs +127 -44
  24. package/dist/index14.js +128 -45
  25. package/dist/index15.cjs +58 -38
  26. package/dist/index15.js +59 -39
  27. package/dist/index16.cjs +24 -37
  28. package/dist/index16.js +24 -37
  29. package/dist/index17.cjs +19 -22
  30. package/dist/index17.js +19 -22
  31. package/dist/index18.cjs +25 -21
  32. package/dist/index18.js +25 -21
  33. package/dist/index19.cjs +22 -33
  34. package/dist/index19.js +22 -33
  35. package/dist/index20.cjs +26 -36
  36. package/dist/index20.js +28 -38
  37. package/dist/index21.cjs +40 -77
  38. package/dist/index21.js +42 -79
  39. package/dist/index22.cjs +53 -103
  40. package/dist/index22.js +54 -104
  41. package/dist/index23.cjs +46 -81
  42. package/dist/index23.js +47 -82
  43. package/dist/index24.cjs +105 -104
  44. package/dist/index24.js +107 -106
  45. package/dist/index25.cjs +108 -28
  46. package/dist/index25.js +111 -31
  47. package/dist/index26.cjs +104 -37
  48. package/dist/index26.js +106 -39
  49. package/dist/index27.cjs +22 -31
  50. package/dist/index27.js +23 -32
  51. package/dist/index28.cjs +30 -30
  52. package/dist/index28.js +31 -31
  53. package/dist/index29.cjs +49 -53
  54. package/dist/index29.js +50 -54
  55. package/dist/index3.cjs +11 -3
  56. package/dist/index3.js +11 -3
  57. package/dist/index30.cjs +77 -17
  58. package/dist/index30.js +76 -16
  59. package/dist/index31.cjs +77 -121
  60. package/dist/index31.js +78 -122
  61. package/dist/index32.cjs +125 -0
  62. package/dist/index32.js +125 -0
  63. package/dist/index4.cjs +0 -1
  64. package/dist/index4.js +0 -1
  65. package/dist/index5.cjs +11 -73
  66. package/dist/index5.js +12 -74
  67. package/dist/index6.cjs +86 -66
  68. package/dist/index6.js +87 -67
  69. package/dist/index7.cjs +40 -21
  70. package/dist/index7.js +40 -21
  71. package/dist/index8.cjs +34 -22
  72. package/dist/index8.js +34 -22
  73. package/dist/index9.cjs +21 -56
  74. package/dist/index9.js +22 -57
  75. package/dist/premium-react-loaders.css +250 -1073
  76. package/dist/utils/classNames.d.ts +3 -2
  77. package/dist/utils/classNames.d.ts.map +1 -1
  78. package/package.json +5 -8
  79. package/dist/index.cjs.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/index10.cjs.map +0 -1
  82. package/dist/index10.js.map +0 -1
  83. package/dist/index11.cjs.map +0 -1
  84. package/dist/index11.js.map +0 -1
  85. package/dist/index12.cjs.map +0 -1
  86. package/dist/index12.js.map +0 -1
  87. package/dist/index13.cjs.map +0 -1
  88. package/dist/index13.js.map +0 -1
  89. package/dist/index14.cjs.map +0 -1
  90. package/dist/index14.js.map +0 -1
  91. package/dist/index15.cjs.map +0 -1
  92. package/dist/index15.js.map +0 -1
  93. package/dist/index16.cjs.map +0 -1
  94. package/dist/index16.js.map +0 -1
  95. package/dist/index17.cjs.map +0 -1
  96. package/dist/index17.js.map +0 -1
  97. package/dist/index18.cjs.map +0 -1
  98. package/dist/index18.js.map +0 -1
  99. package/dist/index19.cjs.map +0 -1
  100. package/dist/index19.js.map +0 -1
  101. package/dist/index20.cjs.map +0 -1
  102. package/dist/index20.js.map +0 -1
  103. package/dist/index21.cjs.map +0 -1
  104. package/dist/index21.js.map +0 -1
  105. package/dist/index22.cjs.map +0 -1
  106. package/dist/index22.js.map +0 -1
  107. package/dist/index23.cjs.map +0 -1
  108. package/dist/index23.js.map +0 -1
  109. package/dist/index24.cjs.map +0 -1
  110. package/dist/index24.js.map +0 -1
  111. package/dist/index25.cjs.map +0 -1
  112. package/dist/index25.js.map +0 -1
  113. package/dist/index26.cjs.map +0 -1
  114. package/dist/index26.js.map +0 -1
  115. package/dist/index27.cjs.map +0 -1
  116. package/dist/index27.js.map +0 -1
  117. package/dist/index28.cjs.map +0 -1
  118. package/dist/index28.js.map +0 -1
  119. package/dist/index29.cjs.map +0 -1
  120. package/dist/index29.js.map +0 -1
  121. package/dist/index3.cjs.map +0 -1
  122. package/dist/index3.js.map +0 -1
  123. package/dist/index30.cjs.map +0 -1
  124. package/dist/index30.js.map +0 -1
  125. package/dist/index31.cjs.map +0 -1
  126. package/dist/index31.js.map +0 -1
  127. package/dist/index4.cjs.map +0 -1
  128. package/dist/index4.js.map +0 -1
  129. package/dist/index5.cjs.map +0 -1
  130. package/dist/index5.js.map +0 -1
  131. package/dist/index6.cjs.map +0 -1
  132. package/dist/index6.js.map +0 -1
  133. package/dist/index7.cjs.map +0 -1
  134. package/dist/index7.js.map +0 -1
  135. package/dist/index8.cjs.map +0 -1
  136. package/dist/index8.js.map +0 -1
  137. package/dist/index9.cjs.map +0 -1
  138. package/dist/index9.js.map +0 -1
package/dist/index16.js CHANGED
@@ -1,14 +1,13 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { normalizeSize, parseSizeToNumber } from "./index4.js";
4
- import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index31.js";
3
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index32.js";
5
4
  import { cn } from "./index3.js";
6
- const SpinnerDots = forwardRef(
5
+ import { normalizeSize } from "./index4.js";
6
+ const SpinnerCircle = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
- dotCount = 8,
11
- dotSize = 4,
10
+ thickness = 4,
12
11
  speed = "normal",
13
12
  reverse = false,
14
13
  respectMotionPreference = true,
@@ -17,7 +16,7 @@ const SpinnerDots = forwardRef(
17
16
  transition,
18
17
  className,
19
18
  style,
20
- testId = "spinner-dots",
19
+ testId = "spinner-circle",
21
20
  visible = true,
22
21
  ariaLabel = "Loading...",
23
22
  ...rest
@@ -31,9 +30,6 @@ const SpinnerDots = forwardRef(
31
30
  transition
32
31
  );
33
32
  if (!shouldRender) return null;
34
- const sizeValue = parseSizeToNumber(size, 40);
35
- const dotSizeValue = parseSizeToNumber(dotSize, 4);
36
- const radius = (sizeValue - dotSizeValue) / 2;
37
33
  return /* @__PURE__ */ jsx(
38
34
  "div",
39
35
  {
@@ -50,45 +46,36 @@ const SpinnerDots = forwardRef(
50
46
  "aria-busy": "true",
51
47
  ...rest,
52
48
  children: /* @__PURE__ */ jsx(
53
- "div",
49
+ "svg",
54
50
  {
55
- className: "relative",
51
+ className: "animate-spinner-rotate",
56
52
  style: {
57
53
  width: normalizeSize(size),
58
54
  height: normalizeSize(size),
59
- animation: `spinner-rotate ${effectiveDuration} linear infinite`,
55
+ animationDuration: effectiveDuration,
60
56
  animationDirection: reverse ? "reverse" : "normal"
61
57
  },
62
- children: Array.from({ length: dotCount }).map((_, index) => {
63
- const angle = 360 / dotCount * index;
64
- const radian = angle * Math.PI / 180;
65
- const x = radius * Math.cos(radian) + radius;
66
- const y = radius * Math.sin(radian) + radius;
67
- return /* @__PURE__ */ jsx(
68
- "div",
69
- {
70
- className: "absolute rounded-full",
71
- style: {
72
- width: normalizeSize(dotSize),
73
- height: normalizeSize(dotSize),
74
- backgroundColor: color,
75
- left: `${x}px`,
76
- top: `${y}px`,
77
- opacity: 1 - index / dotCount * 0.7
78
- // Fade effect
79
- }
80
- },
81
- index
82
- );
83
- })
58
+ viewBox: "0 0 50 50",
59
+ children: /* @__PURE__ */ jsx(
60
+ "circle",
61
+ {
62
+ cx: "25",
63
+ cy: "25",
64
+ r: 25 - thickness * 2,
65
+ fill: "none",
66
+ stroke: color,
67
+ strokeWidth: thickness,
68
+ strokeDasharray: "80, 200",
69
+ strokeLinecap: "round"
70
+ }
71
+ )
84
72
  }
85
73
  )
86
74
  }
87
75
  );
88
76
  }
89
77
  );
90
- SpinnerDots.displayName = "SpinnerDots";
78
+ SpinnerCircle.displayName = "SpinnerCircle";
91
79
  export {
92
- SpinnerDots
80
+ SpinnerCircle
93
81
  };
94
- //# sourceMappingURL=index16.js.map
package/dist/index17.cjs CHANGED
@@ -2,14 +2,15 @@
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("./index31.cjs");
6
- const colors = require("./index4.cjs");
5
+ const hooks = require("./index32.cjs");
7
6
  const classNames = require("./index3.cjs");
8
- const SpinnerBars = react.forwardRef(
7
+ const colors = require("./index4.cjs");
8
+ const SpinnerRing = react.forwardRef(
9
9
  ({
10
10
  size = "md",
11
11
  color = "#3b82f6",
12
- barCount = 5,
12
+ secondaryColor = "rgba(0, 0, 0, 0.1)",
13
+ thickness = 4,
13
14
  speed = "normal",
14
15
  reverse = false,
15
16
  respectMotionPreference = true,
@@ -18,7 +19,7 @@ const SpinnerBars = react.forwardRef(
18
19
  transition,
19
20
  className,
20
21
  style,
21
- testId = "spinner-bars",
22
+ testId = "spinner-ring",
22
23
  visible = true,
23
24
  ariaLabel = "Loading...",
24
25
  ...rest
@@ -32,16 +33,13 @@ const SpinnerBars = react.forwardRef(
32
33
  transition
33
34
  );
34
35
  if (!shouldRender) return null;
35
- const sizeValue = colors.parseSizeToNumber(size, 40);
36
- const barWidth = Math.floor(sizeValue / (barCount * 2));
37
36
  return /* @__PURE__ */ jsxRuntime.jsx(
38
37
  "div",
39
38
  {
40
39
  ref,
41
40
  "data-testid": testId,
42
- className: classNames.cn("inline-flex items-center justify-center gap-1", className),
41
+ className: classNames.cn("inline-flex items-center justify-center", className),
43
42
  style: {
44
- height: colors.normalizeSize(size),
45
43
  ...style,
46
44
  opacity,
47
45
  transition: transitionStyle
@@ -50,24 +48,23 @@ const SpinnerBars = react.forwardRef(
50
48
  "aria-label": ariaLabel,
51
49
  "aria-busy": "true",
52
50
  ...rest,
53
- children: Array.from({ length: barCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
51
+ children: /* @__PURE__ */ jsxRuntime.jsx(
54
52
  "div",
55
53
  {
56
- className: "rounded-sm",
54
+ className: "rounded-full",
57
55
  style: {
58
- width: `${barWidth}px`,
59
- height: "100%",
60
- backgroundColor: color,
61
- animation: `pulse-wave ${effectiveDuration} ease-in-out infinite`,
62
- animationDelay: reverse ? `${(barCount - index - 1) * 0.1}s` : `${index * 0.1}s`
56
+ width: colors.normalizeSize(size),
57
+ height: colors.normalizeSize(size),
58
+ border: `${thickness}px solid ${secondaryColor}`,
59
+ borderTopColor: color,
60
+ animation: `spinner-rotate ${effectiveDuration} linear infinite`,
61
+ animationDirection: reverse ? "reverse" : "normal"
63
62
  }
64
- },
65
- index
66
- ))
63
+ }
64
+ )
67
65
  }
68
66
  );
69
67
  }
70
68
  );
71
- SpinnerBars.displayName = "SpinnerBars";
72
- exports.SpinnerBars = SpinnerBars;
73
- //# sourceMappingURL=index17.cjs.map
69
+ SpinnerRing.displayName = "SpinnerRing";
70
+ exports.SpinnerRing = SpinnerRing;
package/dist/index17.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index31.js";
4
- import { normalizeSize, parseSizeToNumber } from "./index4.js";
3
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index32.js";
5
4
  import { cn } from "./index3.js";
6
- const SpinnerBars = forwardRef(
5
+ import { normalizeSize } from "./index4.js";
6
+ const SpinnerRing = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
- barCount = 5,
10
+ secondaryColor = "rgba(0, 0, 0, 0.1)",
11
+ thickness = 4,
11
12
  speed = "normal",
12
13
  reverse = false,
13
14
  respectMotionPreference = true,
@@ -16,7 +17,7 @@ const SpinnerBars = forwardRef(
16
17
  transition,
17
18
  className,
18
19
  style,
19
- testId = "spinner-bars",
20
+ testId = "spinner-ring",
20
21
  visible = true,
21
22
  ariaLabel = "Loading...",
22
23
  ...rest
@@ -30,16 +31,13 @@ const SpinnerBars = forwardRef(
30
31
  transition
31
32
  );
32
33
  if (!shouldRender) return null;
33
- const sizeValue = parseSizeToNumber(size, 40);
34
- const barWidth = Math.floor(sizeValue / (barCount * 2));
35
34
  return /* @__PURE__ */ jsx(
36
35
  "div",
37
36
  {
38
37
  ref,
39
38
  "data-testid": testId,
40
- className: cn("inline-flex items-center justify-center gap-1", className),
39
+ className: cn("inline-flex items-center justify-center", className),
41
40
  style: {
42
- height: normalizeSize(size),
43
41
  ...style,
44
42
  opacity,
45
43
  transition: transitionStyle
@@ -48,26 +46,25 @@ const SpinnerBars = forwardRef(
48
46
  "aria-label": ariaLabel,
49
47
  "aria-busy": "true",
50
48
  ...rest,
51
- children: Array.from({ length: barCount }).map((_, index) => /* @__PURE__ */ jsx(
49
+ children: /* @__PURE__ */ jsx(
52
50
  "div",
53
51
  {
54
- className: "rounded-sm",
52
+ className: "rounded-full",
55
53
  style: {
56
- width: `${barWidth}px`,
57
- height: "100%",
58
- backgroundColor: color,
59
- animation: `pulse-wave ${effectiveDuration} ease-in-out infinite`,
60
- animationDelay: reverse ? `${(barCount - index - 1) * 0.1}s` : `${index * 0.1}s`
54
+ width: normalizeSize(size),
55
+ height: normalizeSize(size),
56
+ border: `${thickness}px solid ${secondaryColor}`,
57
+ borderTopColor: color,
58
+ animation: `spinner-rotate ${effectiveDuration} linear infinite`,
59
+ animationDirection: reverse ? "reverse" : "normal"
61
60
  }
62
- },
63
- index
64
- ))
61
+ }
62
+ )
65
63
  }
66
64
  );
67
65
  }
68
66
  );
69
- SpinnerBars.displayName = "SpinnerBars";
67
+ SpinnerRing.displayName = "SpinnerRing";
70
68
  export {
71
- SpinnerBars
69
+ SpinnerRing
72
70
  };
73
- //# sourceMappingURL=index17.js.map
package/dist/index18.cjs CHANGED
@@ -2,14 +2,15 @@
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("./index31.cjs");
6
- const classNames = require("./index3.cjs");
7
5
  const colors = require("./index4.cjs");
8
- const SpinnerGrid = react.forwardRef(
6
+ const hooks = require("./index32.cjs");
7
+ const classNames = require("./index3.cjs");
8
+ const SpinnerDots = react.forwardRef(
9
9
  ({
10
10
  size = "md",
11
11
  color = "#3b82f6",
12
- gridSize = 3,
12
+ dotCount = 8,
13
+ dotSize = 4,
13
14
  speed = "normal",
14
15
  reverse = false,
15
16
  respectMotionPreference = true,
@@ -18,7 +19,7 @@ const SpinnerGrid = react.forwardRef(
18
19
  transition,
19
20
  className,
20
21
  style,
21
- testId = "spinner-grid",
22
+ testId = "spinner-dots",
22
23
  visible = true,
23
24
  ariaLabel = "Loading...",
24
25
  ...rest
@@ -33,7 +34,8 @@ const SpinnerGrid = react.forwardRef(
33
34
  );
34
35
  if (!shouldRender) return null;
35
36
  const sizeValue = colors.parseSizeToNumber(size, 40);
36
- const cellSize = Math.floor(sizeValue / gridSize) - 2;
37
+ const dotSizeValue = colors.parseSizeToNumber(dotSize, 4);
38
+ const radius = (sizeValue - dotSizeValue) / 2;
37
39
  return /* @__PURE__ */ jsxRuntime.jsx(
38
40
  "div",
39
41
  {
@@ -52,27 +54,30 @@ const SpinnerGrid = react.forwardRef(
52
54
  children: /* @__PURE__ */ jsxRuntime.jsx(
53
55
  "div",
54
56
  {
55
- className: "grid gap-0.5",
57
+ className: "relative",
56
58
  style: {
57
59
  width: colors.normalizeSize(size),
58
60
  height: colors.normalizeSize(size),
59
- gridTemplateColumns: `repeat(${gridSize}, 1fr)`
61
+ animation: `spinner-rotate ${effectiveDuration} linear infinite`,
62
+ animationDirection: reverse ? "reverse" : "normal"
60
63
  },
61
- children: Array.from({ length: gridSize * gridSize }).map((_, index) => {
62
- const row = Math.floor(index / gridSize);
63
- const col = index % gridSize;
64
- const maxDelay = (gridSize - 1) * 2;
65
- const delay2 = reverse ? (maxDelay - (row + col)) * 0.1 : (row + col) * 0.1;
64
+ children: Array.from({ length: dotCount }).map((_, index) => {
65
+ const angle = 360 / dotCount * index;
66
+ const radian = angle * Math.PI / 180;
67
+ const x = radius * Math.cos(radian) + radius;
68
+ const y = radius * Math.sin(radian) + radius;
66
69
  return /* @__PURE__ */ jsxRuntime.jsx(
67
70
  "div",
68
71
  {
69
- className: "rounded-sm",
72
+ className: "absolute rounded-full",
70
73
  style: {
71
- width: `${cellSize}px`,
72
- height: `${cellSize}px`,
74
+ width: colors.normalizeSize(dotSize),
75
+ height: colors.normalizeSize(dotSize),
73
76
  backgroundColor: color,
74
- animation: `fade-pulse ${effectiveDuration} ease-in-out infinite`,
75
- animationDelay: `${delay2}s`
77
+ left: `${x}px`,
78
+ top: `${y}px`,
79
+ opacity: 1 - index / dotCount * 0.7
80
+ // Fade effect
76
81
  }
77
82
  },
78
83
  index
@@ -84,6 +89,5 @@ const SpinnerGrid = react.forwardRef(
84
89
  );
85
90
  }
86
91
  );
87
- SpinnerGrid.displayName = "SpinnerGrid";
88
- exports.SpinnerGrid = SpinnerGrid;
89
- //# sourceMappingURL=index18.cjs.map
92
+ SpinnerDots.displayName = "SpinnerDots";
93
+ exports.SpinnerDots = SpinnerDots;
package/dist/index18.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index31.js";
4
- import { cn } from "./index3.js";
5
3
  import { normalizeSize, parseSizeToNumber } from "./index4.js";
6
- const SpinnerGrid = forwardRef(
4
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index32.js";
5
+ import { cn } from "./index3.js";
6
+ const SpinnerDots = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
- gridSize = 3,
10
+ dotCount = 8,
11
+ dotSize = 4,
11
12
  speed = "normal",
12
13
  reverse = false,
13
14
  respectMotionPreference = true,
@@ -16,7 +17,7 @@ const SpinnerGrid = forwardRef(
16
17
  transition,
17
18
  className,
18
19
  style,
19
- testId = "spinner-grid",
20
+ testId = "spinner-dots",
20
21
  visible = true,
21
22
  ariaLabel = "Loading...",
22
23
  ...rest
@@ -31,7 +32,8 @@ const SpinnerGrid = forwardRef(
31
32
  );
32
33
  if (!shouldRender) return null;
33
34
  const sizeValue = parseSizeToNumber(size, 40);
34
- const cellSize = Math.floor(sizeValue / gridSize) - 2;
35
+ const dotSizeValue = parseSizeToNumber(dotSize, 4);
36
+ const radius = (sizeValue - dotSizeValue) / 2;
35
37
  return /* @__PURE__ */ jsx(
36
38
  "div",
37
39
  {
@@ -50,27 +52,30 @@ const SpinnerGrid = forwardRef(
50
52
  children: /* @__PURE__ */ jsx(
51
53
  "div",
52
54
  {
53
- className: "grid gap-0.5",
55
+ className: "relative",
54
56
  style: {
55
57
  width: normalizeSize(size),
56
58
  height: normalizeSize(size),
57
- gridTemplateColumns: `repeat(${gridSize}, 1fr)`
59
+ animation: `spinner-rotate ${effectiveDuration} linear infinite`,
60
+ animationDirection: reverse ? "reverse" : "normal"
58
61
  },
59
- children: Array.from({ length: gridSize * gridSize }).map((_, index) => {
60
- const row = Math.floor(index / gridSize);
61
- const col = index % gridSize;
62
- const maxDelay = (gridSize - 1) * 2;
63
- const delay2 = reverse ? (maxDelay - (row + col)) * 0.1 : (row + col) * 0.1;
62
+ children: Array.from({ length: dotCount }).map((_, index) => {
63
+ const angle = 360 / dotCount * index;
64
+ const radian = angle * Math.PI / 180;
65
+ const x = radius * Math.cos(radian) + radius;
66
+ const y = radius * Math.sin(radian) + radius;
64
67
  return /* @__PURE__ */ jsx(
65
68
  "div",
66
69
  {
67
- className: "rounded-sm",
70
+ className: "absolute rounded-full",
68
71
  style: {
69
- width: `${cellSize}px`,
70
- height: `${cellSize}px`,
72
+ width: normalizeSize(dotSize),
73
+ height: normalizeSize(dotSize),
71
74
  backgroundColor: color,
72
- animation: `fade-pulse ${effectiveDuration} ease-in-out infinite`,
73
- animationDelay: `${delay2}s`
75
+ left: `${x}px`,
76
+ top: `${y}px`,
77
+ opacity: 1 - index / dotCount * 0.7
78
+ // Fade effect
74
79
  }
75
80
  },
76
81
  index
@@ -82,8 +87,7 @@ const SpinnerGrid = forwardRef(
82
87
  );
83
88
  }
84
89
  );
85
- SpinnerGrid.displayName = "SpinnerGrid";
90
+ SpinnerDots.displayName = "SpinnerDots";
86
91
  export {
87
- SpinnerGrid
92
+ SpinnerDots
88
93
  };
89
- //# sourceMappingURL=index18.js.map
package/dist/index19.cjs CHANGED
@@ -2,15 +2,14 @@
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("./index31.cjs");
6
- const classNames = require("./index3.cjs");
5
+ const hooks = require("./index32.cjs");
7
6
  const colors = require("./index4.cjs");
8
- const SpinnerWave = react.forwardRef(
7
+ const classNames = require("./index3.cjs");
8
+ const SpinnerBars = react.forwardRef(
9
9
  ({
10
10
  size = "md",
11
11
  color = "#3b82f6",
12
- ripples = 3,
13
- maxScale = 2,
12
+ barCount = 5,
14
13
  speed = "normal",
15
14
  reverse = false,
16
15
  respectMotionPreference = true,
@@ -19,7 +18,7 @@ const SpinnerWave = react.forwardRef(
19
18
  transition,
20
19
  className,
21
20
  style,
22
- testId = "spinner-wave",
21
+ testId = "spinner-bars",
23
22
  visible = true,
24
23
  ariaLabel = "Loading...",
25
24
  ...rest
@@ -33,14 +32,16 @@ const SpinnerWave = react.forwardRef(
33
32
  transition
34
33
  );
35
34
  if (!shouldRender) return null;
36
- const sizeValue = colors.normalizeSize(size);
35
+ const sizeValue = colors.parseSizeToNumber(size, 40);
36
+ const barWidth = Math.floor(sizeValue / (barCount * 2));
37
37
  return /* @__PURE__ */ jsxRuntime.jsx(
38
38
  "div",
39
39
  {
40
40
  ref,
41
41
  "data-testid": testId,
42
- className: classNames.cn("inline-flex items-center justify-center", className),
42
+ className: classNames.cn("inline-flex items-center justify-center gap-1", className),
43
43
  style: {
44
+ height: colors.normalizeSize(size),
44
45
  ...style,
45
46
  opacity,
46
47
  transition: transitionStyle
@@ -49,35 +50,23 @@ const SpinnerWave = react.forwardRef(
49
50
  "aria-label": ariaLabel,
50
51
  "aria-busy": "true",
51
52
  ...rest,
52
- children: /* @__PURE__ */ jsxRuntime.jsx(
53
+ children: Array.from({ length: barCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
53
54
  "div",
54
55
  {
55
- className: "relative",
56
+ className: "rounded-sm",
56
57
  style: {
57
- width: sizeValue,
58
- height: sizeValue
59
- },
60
- children: Array.from({ length: ripples }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
61
- "div",
62
- {
63
- className: "absolute inset-0 rounded-full border-2",
64
- style: {
65
- borderColor: color,
66
- animation: `ripple-expand ${effectiveDuration} ease-out infinite`,
67
- animationDelay: reverse ? `${(ripples - index - 1) * 0.4}s` : `${index * 0.4}s`,
68
- animationDirection: reverse ? "reverse" : "normal",
69
- // @ts-ignore - CSS variable for animation
70
- "--max-scale": maxScale
71
- }
72
- },
73
- index
74
- ))
75
- }
76
- )
58
+ width: `${barWidth}px`,
59
+ height: "100%",
60
+ backgroundColor: color,
61
+ animation: `pulse-wave ${effectiveDuration} ease-in-out infinite`,
62
+ animationDelay: reverse ? `${(barCount - index - 1) * 0.1}s` : `${index * 0.1}s`
63
+ }
64
+ },
65
+ index
66
+ ))
77
67
  }
78
68
  );
79
69
  }
80
70
  );
81
- SpinnerWave.displayName = "SpinnerWave";
82
- exports.SpinnerWave = SpinnerWave;
83
- //# sourceMappingURL=index19.cjs.map
71
+ SpinnerBars.displayName = "SpinnerBars";
72
+ exports.SpinnerBars = SpinnerBars;
package/dist/index19.js CHANGED
@@ -1,14 +1,13 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index31.js";
3
+ import { useReducedMotion, useLoaderVisibility, getEffectiveDuration } from "./index32.js";
4
+ import { normalizeSize, parseSizeToNumber } from "./index4.js";
4
5
  import { cn } from "./index3.js";
5
- import { normalizeSize } from "./index4.js";
6
- const SpinnerWave = forwardRef(
6
+ const SpinnerBars = forwardRef(
7
7
  ({
8
8
  size = "md",
9
9
  color = "#3b82f6",
10
- ripples = 3,
11
- maxScale = 2,
10
+ barCount = 5,
12
11
  speed = "normal",
13
12
  reverse = false,
14
13
  respectMotionPreference = true,
@@ -17,7 +16,7 @@ const SpinnerWave = forwardRef(
17
16
  transition,
18
17
  className,
19
18
  style,
20
- testId = "spinner-wave",
19
+ testId = "spinner-bars",
21
20
  visible = true,
22
21
  ariaLabel = "Loading...",
23
22
  ...rest
@@ -31,14 +30,16 @@ const SpinnerWave = forwardRef(
31
30
  transition
32
31
  );
33
32
  if (!shouldRender) return null;
34
- const sizeValue = normalizeSize(size);
33
+ const sizeValue = parseSizeToNumber(size, 40);
34
+ const barWidth = Math.floor(sizeValue / (barCount * 2));
35
35
  return /* @__PURE__ */ jsx(
36
36
  "div",
37
37
  {
38
38
  ref,
39
39
  "data-testid": testId,
40
- className: cn("inline-flex items-center justify-center", className),
40
+ className: cn("inline-flex items-center justify-center gap-1", className),
41
41
  style: {
42
+ height: normalizeSize(size),
42
43
  ...style,
43
44
  opacity,
44
45
  transition: transitionStyle
@@ -47,37 +48,25 @@ const SpinnerWave = forwardRef(
47
48
  "aria-label": ariaLabel,
48
49
  "aria-busy": "true",
49
50
  ...rest,
50
- children: /* @__PURE__ */ jsx(
51
+ children: Array.from({ length: barCount }).map((_, index) => /* @__PURE__ */ jsx(
51
52
  "div",
52
53
  {
53
- className: "relative",
54
+ className: "rounded-sm",
54
55
  style: {
55
- width: sizeValue,
56
- height: sizeValue
57
- },
58
- children: Array.from({ length: ripples }).map((_, index) => /* @__PURE__ */ jsx(
59
- "div",
60
- {
61
- className: "absolute inset-0 rounded-full border-2",
62
- style: {
63
- borderColor: color,
64
- animation: `ripple-expand ${effectiveDuration} ease-out infinite`,
65
- animationDelay: reverse ? `${(ripples - index - 1) * 0.4}s` : `${index * 0.4}s`,
66
- animationDirection: reverse ? "reverse" : "normal",
67
- // @ts-ignore - CSS variable for animation
68
- "--max-scale": maxScale
69
- }
70
- },
71
- index
72
- ))
73
- }
74
- )
56
+ width: `${barWidth}px`,
57
+ height: "100%",
58
+ backgroundColor: color,
59
+ animation: `pulse-wave ${effectiveDuration} ease-in-out infinite`,
60
+ animationDelay: reverse ? `${(barCount - index - 1) * 0.1}s` : `${index * 0.1}s`
61
+ }
62
+ },
63
+ index
64
+ ))
75
65
  }
76
66
  );
77
67
  }
78
68
  );
79
- SpinnerWave.displayName = "SpinnerWave";
69
+ SpinnerBars.displayName = "SpinnerBars";
80
70
  export {
81
- SpinnerWave
71
+ SpinnerBars
82
72
  };
83
- //# sourceMappingURL=index19.js.map