premium-react-loaders 1.1.0 → 1.3.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 (154) hide show
  1. package/README.md +55 -6
  2. package/dist/components/overlay/LoaderOverlay.d.ts.map +1 -1
  3. package/dist/components/progress/ProgressBar.d.ts.map +1 -1
  4. package/dist/components/progress/ProgressCircle.d.ts.map +1 -1
  5. package/dist/components/progress/ProgressRing.d.ts.map +1 -1
  6. package/dist/components/progress/ProgressSteps.d.ts.map +1 -1
  7. package/dist/components/pulse/PulseBars.d.ts +2 -2
  8. package/dist/components/pulse/PulseBars.d.ts.map +1 -1
  9. package/dist/components/pulse/PulseDots.d.ts +2 -2
  10. package/dist/components/pulse/PulseDots.d.ts.map +1 -1
  11. package/dist/components/pulse/PulseWave.d.ts +2 -2
  12. package/dist/components/pulse/PulseWave.d.ts.map +1 -1
  13. package/dist/components/pulse/TypingIndicator.d.ts.map +1 -1
  14. package/dist/components/skeleton/Skeleton.d.ts.map +1 -1
  15. package/dist/components/skeleton/SkeletonAvatar.d.ts.map +1 -1
  16. package/dist/components/skeleton/SkeletonCard.d.ts.map +1 -1
  17. package/dist/components/skeleton/SkeletonForm.d.ts.map +1 -1
  18. package/dist/components/skeleton/SkeletonImage.d.ts.map +1 -1
  19. package/dist/components/skeleton/SkeletonList.d.ts.map +1 -1
  20. package/dist/components/skeleton/SkeletonPage.d.ts.map +1 -1
  21. package/dist/components/skeleton/SkeletonTable.d.ts.map +1 -1
  22. package/dist/components/skeleton/SkeletonText.d.ts.map +1 -1
  23. package/dist/components/spinner/SpinnerBars.d.ts +2 -2
  24. package/dist/components/spinner/SpinnerBars.d.ts.map +1 -1
  25. package/dist/components/spinner/SpinnerCircle.d.ts +2 -1
  26. package/dist/components/spinner/SpinnerCircle.d.ts.map +1 -1
  27. package/dist/components/spinner/SpinnerDots.d.ts +2 -2
  28. package/dist/components/spinner/SpinnerDots.d.ts.map +1 -1
  29. package/dist/components/spinner/SpinnerGrid.d.ts +2 -2
  30. package/dist/components/spinner/SpinnerGrid.d.ts.map +1 -1
  31. package/dist/components/spinner/SpinnerPulse.d.ts +3 -3
  32. package/dist/components/spinner/SpinnerPulse.d.ts.map +1 -1
  33. package/dist/components/spinner/SpinnerRing.d.ts +3 -3
  34. package/dist/components/spinner/SpinnerRing.d.ts.map +1 -1
  35. package/dist/components/spinner/SpinnerWave.d.ts +3 -3
  36. package/dist/components/spinner/SpinnerWave.d.ts.map +1 -1
  37. package/dist/index10.cjs +14 -2
  38. package/dist/index10.cjs.map +1 -1
  39. package/dist/index10.js +14 -2
  40. package/dist/index10.js.map +1 -1
  41. package/dist/index11.cjs +16 -2
  42. package/dist/index11.cjs.map +1 -1
  43. package/dist/index11.js +16 -2
  44. package/dist/index11.js.map +1 -1
  45. package/dist/index12.cjs +16 -2
  46. package/dist/index12.cjs.map +1 -1
  47. package/dist/index12.js +16 -2
  48. package/dist/index12.js.map +1 -1
  49. package/dist/index13.cjs +12 -2
  50. package/dist/index13.cjs.map +1 -1
  51. package/dist/index13.js +12 -2
  52. package/dist/index13.js.map +1 -1
  53. package/dist/index14.cjs +24 -5
  54. package/dist/index14.cjs.map +1 -1
  55. package/dist/index14.js +24 -5
  56. package/dist/index14.js.map +1 -1
  57. package/dist/index15.cjs +23 -4
  58. package/dist/index15.cjs.map +1 -1
  59. package/dist/index15.js +24 -5
  60. package/dist/index15.js.map +1 -1
  61. package/dist/index16.cjs +23 -4
  62. package/dist/index16.cjs.map +1 -1
  63. package/dist/index16.js +24 -5
  64. package/dist/index16.js.map +1 -1
  65. package/dist/index17.cjs +21 -6
  66. package/dist/index17.cjs.map +1 -1
  67. package/dist/index17.js +22 -7
  68. package/dist/index17.js.map +1 -1
  69. package/dist/index18.cjs +25 -7
  70. package/dist/index18.cjs.map +1 -1
  71. package/dist/index18.js +26 -8
  72. package/dist/index18.js.map +1 -1
  73. package/dist/index19.cjs +24 -6
  74. package/dist/index19.cjs.map +1 -1
  75. package/dist/index19.js +25 -7
  76. package/dist/index19.js.map +1 -1
  77. package/dist/index20.cjs +24 -6
  78. package/dist/index20.cjs.map +1 -1
  79. package/dist/index20.js +25 -7
  80. package/dist/index20.js.map +1 -1
  81. package/dist/index21.cjs +21 -5
  82. package/dist/index21.cjs.map +1 -1
  83. package/dist/index21.js +22 -6
  84. package/dist/index21.js.map +1 -1
  85. package/dist/index22.cjs +24 -6
  86. package/dist/index22.cjs.map +1 -1
  87. package/dist/index22.js +25 -7
  88. package/dist/index22.js.map +1 -1
  89. package/dist/index23.cjs +25 -7
  90. package/dist/index23.cjs.map +1 -1
  91. package/dist/index23.js +26 -8
  92. package/dist/index23.js.map +1 -1
  93. package/dist/index24.cjs +16 -2
  94. package/dist/index24.cjs.map +1 -1
  95. package/dist/index24.js +16 -2
  96. package/dist/index24.js.map +1 -1
  97. package/dist/index25.cjs +21 -6
  98. package/dist/index25.cjs.map +1 -1
  99. package/dist/index25.js +22 -7
  100. package/dist/index25.js.map +1 -1
  101. package/dist/index26.cjs +22 -7
  102. package/dist/index26.cjs.map +1 -1
  103. package/dist/index26.js +23 -8
  104. package/dist/index26.js.map +1 -1
  105. package/dist/index27.cjs +23 -7
  106. package/dist/index27.cjs.map +1 -1
  107. package/dist/index27.js +24 -8
  108. package/dist/index27.js.map +1 -1
  109. package/dist/index28.cjs +20 -5
  110. package/dist/index28.cjs.map +1 -1
  111. package/dist/index28.js +21 -6
  112. package/dist/index28.js.map +1 -1
  113. package/dist/index29.cjs +14 -2
  114. package/dist/index29.cjs.map +1 -1
  115. package/dist/index29.js +14 -2
  116. package/dist/index29.js.map +1 -1
  117. package/dist/index31.cjs +126 -0
  118. package/dist/index31.cjs.map +1 -0
  119. package/dist/index31.js +126 -0
  120. package/dist/index31.js.map +1 -0
  121. package/dist/index4.cjs +10 -0
  122. package/dist/index4.cjs.map +1 -1
  123. package/dist/index4.js +10 -0
  124. package/dist/index4.js.map +1 -1
  125. package/dist/index5.cjs +14 -2
  126. package/dist/index5.cjs.map +1 -1
  127. package/dist/index5.js +14 -2
  128. package/dist/index5.js.map +1 -1
  129. package/dist/index6.cjs +14 -2
  130. package/dist/index6.cjs.map +1 -1
  131. package/dist/index6.js +14 -2
  132. package/dist/index6.js.map +1 -1
  133. package/dist/index7.cjs +16 -2
  134. package/dist/index7.cjs.map +1 -1
  135. package/dist/index7.js +16 -2
  136. package/dist/index7.js.map +1 -1
  137. package/dist/index8.cjs +14 -2
  138. package/dist/index8.cjs.map +1 -1
  139. package/dist/index8.js +14 -2
  140. package/dist/index8.js.map +1 -1
  141. package/dist/index9.cjs +16 -2
  142. package/dist/index9.cjs.map +1 -1
  143. package/dist/index9.js +16 -2
  144. package/dist/index9.js.map +1 -1
  145. package/dist/premium-react-loaders.css +405 -6
  146. package/dist/types/common.d.ts +20 -2
  147. package/dist/types/common.d.ts.map +1 -1
  148. package/dist/utils/colors.d.ts +2 -1
  149. package/dist/utils/colors.d.ts.map +1 -1
  150. package/dist/utils/hooks.d.ts +19 -0
  151. package/dist/utils/hooks.d.ts.map +1 -0
  152. package/dist/utils/index.d.ts +1 -0
  153. package/dist/utils/index.d.ts.map +1 -1
  154. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Premium React Loaders
2
2
 
3
- A comprehensive collection of **20 premium, production-ready loading components** for React applications. Built with TypeScript and Tailwind CSS for maximum flexibility and customization.
3
+ A comprehensive collection of **25 premium, production-ready loading components** for React applications. Built with TypeScript and Tailwind CSS for maximum flexibility and customization.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/premium-react-loaders.svg)](https://www.npmjs.com/package/premium-react-loaders)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
@@ -11,11 +11,14 @@ A comprehensive collection of **20 premium, production-ready loading components*
11
11
 
12
12
  📚 **[Storybook Documentation](https://docs.premium-react-loaders.ishansasika.dev/)** - Detailed component documentation and examples
13
13
 
14
- See all 20 components in action with interactive examples and customization options.
14
+ See all 25 components in action with interactive examples and customization options.
15
15
 
16
16
  ## Features
17
17
 
18
- - **20 Premium Components** across 5 categories (Skeleton, Spinner, Progress, Pulse, Overlay)
18
+ - **25 Premium Components** across 5 categories (Skeleton, Spinner, Progress, Pulse, Overlay)
19
+ - **Size Presets** - Easy sizing with `xs`, `sm`, `md`, `lg`, `xl` presets ✨ *New in v1.2.0*
20
+ - **Reduced Motion Support** - Respects `prefers-reduced-motion` for accessibility ✨ *New in v1.2.0*
21
+ - **Animation Direction Control** - Reverse animations with `reverse` prop ✨ *New in v1.2.0*
19
22
  - **Full TypeScript Support** with exported type definitions
20
23
  - **Tailwind CSS Integration** for easy customization
21
24
  - **Tree-shakeable** - only bundle what you use
@@ -80,14 +83,16 @@ function App() {
80
83
  <Skeleton width={200} height={20} />
81
84
  <SkeletonCard hasAvatar lines={3} />
82
85
 
83
- {/* Spinners */}
84
- <SpinnerCircle size={40} color="#3b82f6" />
86
+ {/* Spinners with Size Presets (v1.2.0+) */}
87
+ <SpinnerCircle size="lg" color="#3b82f6" />
88
+ <SpinnerCircle size="md" reverse /> {/* Reverse animation */}
85
89
 
86
90
  {/* Progress Bars */}
87
91
  <ProgressBar value={75} showValue />
92
+ <ProgressBar indeterminate reverse /> {/* Reverse sweep */}
88
93
 
89
94
  {/* Pulse Loaders */}
90
- <PulseDots dotCount={3} />
95
+ <PulseDots size="sm" dotCount={3} />
91
96
  </div>
92
97
  );
93
98
  }
@@ -268,6 +273,50 @@ import { LoaderOverlay, SkeletonPage, SpinnerCircle } from 'premium-react-loader
268
273
  </LoaderOverlay>
269
274
  ```
270
275
 
276
+ ### New in v1.2.0
277
+
278
+ **Size Presets** - Use semantic size names instead of pixel values:
279
+
280
+ ```tsx
281
+ import { SpinnerCircle, ProgressBar, PulseDots } from 'premium-react-loaders';
282
+
283
+ // Size presets: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
284
+ <SpinnerCircle size="xs" /> {/* 16px */}
285
+ <SpinnerCircle size="sm" /> {/* 24px */}
286
+ <SpinnerCircle size="md" /> {/* 40px - default */}
287
+ <SpinnerCircle size="lg" /> {/* 56px */}
288
+ <SpinnerCircle size="xl" /> {/* 72px */}
289
+
290
+ // Still works with numbers and CSS strings
291
+ <SpinnerCircle size={50} />
292
+ <SpinnerCircle size="3rem" />
293
+ ```
294
+
295
+ **Reduced Motion Support** - Automatically respects user accessibility preferences:
296
+
297
+ ```tsx
298
+ // Respects prefers-reduced-motion by default
299
+ <SpinnerCircle size="md" />
300
+
301
+ // Disable reduced motion support if needed
302
+ <SpinnerCircle size="md" respectMotionPreference={false} />
303
+ ```
304
+
305
+ **Animation Direction Control** - Reverse animations for creative effects:
306
+
307
+ ```tsx
308
+ import { SpinnerCircle, ProgressBar, PulseDots } from 'premium-react-loaders';
309
+
310
+ // Reverse spinner rotation (counter-clockwise)
311
+ <SpinnerCircle size="lg" reverse />
312
+
313
+ // Reverse progress sweep direction
314
+ <ProgressBar indeterminate reverse />
315
+
316
+ // Reverse pulse/dot animation sequence
317
+ <PulseDots size="md" reverse />
318
+ ```
319
+
271
320
  ## Customization
272
321
 
273
322
  All components support multiple customization methods:
@@ -1 +1 @@
1
- {"version":3,"file":"LoaderOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/LoaderOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,aAAa,+GA+DzB,CAAC"}
1
+ {"version":3,"file":"LoaderOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/LoaderOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,aAAa,+GA2EzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,6GAuGvB,CAAC"}
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,6GAwHvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressCircle.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressCircle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,gHA+G1B,CAAC"}
1
+ {"version":3,"file":"ProgressCircle.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressCircle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,gHAiI1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressRing.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressRing.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,8GAyHxB,CAAC"}
1
+ {"version":3,"file":"ProgressRing.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressRing.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,8GA8IxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressSteps.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressSteps.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,+GAuIzB,CAAC"}
1
+ {"version":3,"file":"ProgressSteps.d.ts","sourceRoot":"","sources":["../../../src/components/progress/ProgressSteps.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,+GAqJzB,CAAC"}
@@ -6,8 +6,8 @@ import { PulseBarsProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <PulseBars size={40} color="#3b82f6" />
10
- * <PulseBars size={48} barCount={6} speed="fast" />
9
+ * <PulseBars size="lg" color="#3b82f6" />
10
+ * <PulseBars size="md" barCount={6} speed="fast" reverse />
11
11
  * ```
12
12
  */
13
13
  export declare const PulseBars: import('react').ForwardRefExoticComponent<PulseBarsProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"PulseBars.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/PulseBars.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,2GA4DrB,CAAC"}
1
+ {"version":3,"file":"PulseBars.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/PulseBars.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,2GA4ErB,CAAC"}
@@ -6,8 +6,8 @@ import { PulseDotsProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <PulseDots size={40} color="#3b82f6" />
10
- * <PulseDots size={32} dotCount={5} speed="fast" />
9
+ * <PulseDots size="lg" color="#3b82f6" />
10
+ * <PulseDots size="sm" dotCount={5} speed="fast" reverse />
11
11
  * ```
12
12
  */
13
13
  export declare const PulseDots: import('react').ForwardRefExoticComponent<PulseDotsProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"PulseDots.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/PulseDots.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,2GAmDrB,CAAC"}
1
+ {"version":3,"file":"PulseDots.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/PulseDots.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,2GAiErB,CAAC"}
@@ -6,8 +6,8 @@ import { PulseWaveProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <PulseWave size={40} color="#3b82f6" />
10
- * <PulseWave size={32} barCount={7} speed="slow" />
9
+ * <PulseWave size="lg" color="#3b82f6" />
10
+ * <PulseWave size="sm" barCount={7} speed="slow" reverse />
11
11
  * ```
12
12
  */
13
13
  export declare const PulseWave: import('react').ForwardRefExoticComponent<PulseWaveProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"PulseWave.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/PulseWave.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,2GAyDrB,CAAC"}
1
+ {"version":3,"file":"PulseWave.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/PulseWave.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,2GAwErB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TypingIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/TypingIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,iHAuD3B,CAAC"}
1
+ {"version":3,"file":"TypingIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/pulse/TypingIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,iHAqE3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,sFA4DpB,CAAC"}
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,sFAwEpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonAvatar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,gHAqC1B,CAAC"}
1
+ {"version":3,"file":"SkeletonAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonAvatar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,gHAmD1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonCard.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,8GAiExB,CAAC"}
1
+ {"version":3,"file":"SkeletonCard.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,8GA+ExB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonForm.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonForm.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,8GAmFxB,CAAC"}
1
+ {"version":3,"file":"SkeletonForm.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonForm.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,8GA6FxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonImage.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonImage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,+GAyCzB,CAAC"}
1
+ {"version":3,"file":"SkeletonImage.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonImage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,+GAqDzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonList.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,8GAkDxB,CAAC"}
1
+ {"version":3,"file":"SkeletonList.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,8GA8DxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonPage.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,8GA+LxB,CAAC"}
1
+ {"version":3,"file":"SkeletonPage.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,8GA6MxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonTable.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,+GAgEzB,CAAC"}
1
+ {"version":3,"file":"SkeletonTable.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,+GA8EzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonText.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonText.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,8GAsDxB,CAAC"}
1
+ {"version":3,"file":"SkeletonText.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/SkeletonText.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,8GAkExB,CAAC"}
@@ -6,8 +6,8 @@ import { SpinnerBarsProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <SpinnerBars size={40} color="#3b82f6" />
10
- * <SpinnerBars size={32} barCount={5} speed="fast" />
9
+ * <SpinnerBars size="lg" color="#3b82f6" />
10
+ * <SpinnerBars size="sm" barCount={5} speed="fast" reverse />
11
11
  * ```
12
12
  */
13
13
  export declare const SpinnerBars: import('react').ForwardRefExoticComponent<SpinnerBarsProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerBars.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerBars.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6GAoDvB,CAAC"}
1
+ {"version":3,"file":"SpinnerBars.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerBars.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAU/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6GAmEvB,CAAC"}
@@ -7,7 +7,8 @@ import { SpinnerCircleProps } from '../../types';
7
7
  * @example
8
8
  * ```tsx
9
9
  * <SpinnerCircle size={40} color="#3b82f6" />
10
- * <SpinnerCircle size={24} thickness={3} speed="fast" />
10
+ * <SpinnerCircle size="lg" thickness={3} speed="fast" />
11
+ * <SpinnerCircle size="md" reverse />
11
12
  * ```
12
13
  */
13
14
  export declare const SpinnerCircle: import('react').ForwardRefExoticComponent<SpinnerCircleProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerCircle.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerCircle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,+GAoDzB,CAAC"}
1
+ {"version":3,"file":"SpinnerCircle.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerCircle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AASjD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,+GAuEzB,CAAC"}
@@ -6,8 +6,8 @@ import { SpinnerDotsProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <SpinnerDots size={40} color="#3b82f6" />
10
- * <SpinnerDots size={48} dotCount={8} dotSize={6} />
9
+ * <SpinnerDots size="lg" color="#3b82f6" />
10
+ * <SpinnerDots size="md" dotCount={8} dotSize={6} reverse />
11
11
  * ```
12
12
  */
13
13
  export declare const SpinnerDots: import('react').ForwardRefExoticComponent<SpinnerDotsProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerDots.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerDots.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6GAmEvB,CAAC"}
1
+ {"version":3,"file":"SpinnerDots.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerDots.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAU/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6GAsFvB,CAAC"}
@@ -6,8 +6,8 @@ import { SpinnerGridProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <SpinnerGrid size={40} color="#3b82f6" />
10
- * <SpinnerGrid size={48} gridSize={4} />
9
+ * <SpinnerGrid size="lg" color="#3b82f6" />
10
+ * <SpinnerGrid size="md" gridSize={4} reverse />
11
11
  * ```
12
12
  */
13
13
  export declare const SpinnerGrid: import('react').ForwardRefExoticComponent<SpinnerGridProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerGrid.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6GAgEvB,CAAC"}
1
+ {"version":3,"file":"SpinnerGrid.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6GAkFvB,CAAC"}
@@ -6,9 +6,9 @@ import { SpinnerPulseProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <SpinnerPulse size={60} color="#3b82f6" />
10
- * <SpinnerPulse size={80} pulses={3} />
11
- * <SpinnerPulse size={50} maxScale={2.5} speed="slow" />
9
+ * <SpinnerPulse size="lg" color="#3b82f6" />
10
+ * <SpinnerPulse size="xl" pulses={3} reverse />
11
+ * <SpinnerPulse size="md" maxScale={2.5} speed="slow" />
12
12
  * ```
13
13
  */
14
14
  export declare const SpinnerPulse: import('react').ForwardRefExoticComponent<SpinnerPulseProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerPulse.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerPulse.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,8GAsExB,CAAC"}
1
+ {"version":3,"file":"SpinnerPulse.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerPulse.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,8GAuFxB,CAAC"}
@@ -6,9 +6,9 @@ import { SpinnerRingProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <SpinnerRing size={40} color="#8b5cf6" />
10
- * <SpinnerRing size={32} thickness={3} speed="slow" />
11
- * <SpinnerRing size={40} color="#3b82f6" secondaryColor="#e0e0e0" />
9
+ * <SpinnerRing size="lg" color="#8b5cf6" />
10
+ * <SpinnerRing size="sm" thickness={3} speed="slow" />
11
+ * <SpinnerRing size="md" color="#3b82f6" secondaryColor="#e0e0e0" reverse />
12
12
  * ```
13
13
  */
14
14
  export declare const SpinnerRing: import('react').ForwardRefExoticComponent<SpinnerRingProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerRing.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerRing.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,6GA2CvB,CAAC"}
1
+ {"version":3,"file":"SpinnerRing.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerRing.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAS/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,6GA8DvB,CAAC"}
@@ -6,9 +6,9 @@ import { SpinnerWaveProps } from '../../types';
6
6
  *
7
7
  * @example
8
8
  * ```tsx
9
- * <SpinnerWave size={60} color="#3b82f6" />
10
- * <SpinnerWave size={80} ripples={5} />
11
- * <SpinnerWave size={50} maxScale={2.5} speed="fast" />
9
+ * <SpinnerWave size="lg" color="#3b82f6" />
10
+ * <SpinnerWave size="xl" ripples={5} reverse />
11
+ * <SpinnerWave size="md" maxScale={2.5} speed="fast" />
12
12
  * ```
13
13
  */
14
14
  export declare const SpinnerWave: import('react').ForwardRefExoticComponent<SpinnerWaveProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinnerWave.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerWave.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,6GA0DvB,CAAC"}
1
+ {"version":3,"file":"SpinnerWave.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/SpinnerWave.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,6GA2EvB,CAAC"}
package/dist/index10.cjs CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const react = require("react");
5
5
  const Skeleton = require("./index5.cjs");
6
+ const hooks = require("./index31.cjs");
6
7
  const colors = require("./index4.cjs");
7
8
  const classNames = require("./index3.cjs");
8
9
  const SkeletonList = react.forwardRef(
@@ -15,13 +16,22 @@ const SkeletonList = react.forwardRef(
15
16
  baseColor,
16
17
  highlightColor,
17
18
  borderRadius = "0.5rem",
19
+ delay = 0,
20
+ minDuration = 0,
21
+ transition,
18
22
  className,
19
23
  style,
20
24
  testId = "skeleton-list",
21
25
  visible = true,
22
26
  ...rest
23
27
  }, ref) => {
24
- if (!visible) return null;
28
+ const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
29
+ visible,
30
+ delay,
31
+ minDuration,
32
+ transition
33
+ );
34
+ if (!shouldRender) return null;
25
35
  return /* @__PURE__ */ jsxRuntime.jsx(
26
36
  "div",
27
37
  {
@@ -30,7 +40,9 @@ const SkeletonList = react.forwardRef(
30
40
  className: classNames.cn("flex flex-col", className),
31
41
  style: {
32
42
  gap: colors.normalizeSize(gap),
33
- ...style
43
+ ...style,
44
+ opacity,
45
+ transition: transitionStyle
34
46
  },
35
47
  role: "status",
36
48
  "aria-label": "Loading list...",
@@ -1 +1 @@
1
- {"version":3,"file":"index10.cjs","sources":["../src/components/skeleton/SkeletonList.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonListProps } from '../../types';\nimport { cn, normalizeSize } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonList - List skeleton loader\n *\n * A skeleton loader for list items with customizable count, item height, and spacing.\n *\n * @example\n * ```tsx\n * <SkeletonList items={5} />\n * <SkeletonList items={3} itemHeight={60} gap={12} />\n * ```\n */\nexport const SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(\n (\n {\n items = 3,\n itemHeight = '3rem',\n gap = '0.75rem',\n width = '100%',\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n className,\n style,\n testId = 'skeleton-list',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!visible) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col', className)}\n style={{\n gap: normalizeSize(gap),\n ...style,\n }}\n role=\"status\"\n aria-label=\"Loading list...\"\n aria-busy=\"true\"\n {...rest}\n >\n {Array.from({ length: items }).map((_, index) => (\n <Skeleton\n key={index}\n width={width}\n height={itemHeight}\n variant=\"rounded\"\n borderRadius={borderRadius}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n }\n);\n\nSkeletonList.displayName = 'SkeletonList';\n"],"names":["forwardRef","jsx","cn","normalizeSize","Skeleton"],"mappings":";;;;;;;AAgBO,MAAM,eAAeA,MAAAA;AAAAA,EAC1B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,QAAI,CAAC,QAAS,QAAO;AAErB,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAO;AAAA,UACL,KAAKC,OAAAA,cAAc,GAAG;AAAA,UACtB,GAAG;AAAA,QAAA;AAAA,QAEL,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,OAAO,EAAE,IAAI,CAAC,GAAG,UACrCF,2BAAAA;AAAAA,UAACG,SAAAA;AAAAA,UAAA;AAAA,YAEC;AAAA,YACA,QAAQ;AAAA,YACR,SAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAPK;AAAA,QAAA,CASR;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;;"}
1
+ {"version":3,"file":"index10.cjs","sources":["../src/components/skeleton/SkeletonList.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonListProps } from '../../types';\nimport { cn, normalizeSize, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonList - List skeleton loader\n *\n * A skeleton loader for list items with customizable count, item height, and spacing.\n *\n * @example\n * ```tsx\n * <SkeletonList items={5} />\n * <SkeletonList items={3} itemHeight={60} gap={12} />\n * ```\n */\nexport const SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(\n (\n {\n items = 3,\n itemHeight = '3rem',\n gap = '0.75rem',\n width = '100%',\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-list',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col', className)}\n style={{\n gap: normalizeSize(gap),\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading list...\"\n aria-busy=\"true\"\n {...rest}\n >\n {Array.from({ length: items }).map((_, index) => (\n <Skeleton\n key={index}\n width={width}\n height={itemHeight}\n variant=\"rounded\"\n borderRadius={borderRadius}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n }\n);\n\nSkeletonList.displayName = 'SkeletonList';\n"],"names":["forwardRef","useLoaderVisibility","jsx","cn","normalizeSize","Skeleton"],"mappings":";;;;;;;;AAgBO,MAAM,eAAeA,MAAAA;AAAAA,EAC1B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAO;AAAA,UACL,KAAKC,OAAAA,cAAc,GAAG;AAAA,UACtB,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,OAAO,EAAE,IAAI,CAAC,GAAG,UACrCF,2BAAAA;AAAAA,UAACG,SAAAA;AAAAA,UAAA;AAAA,YAEC;AAAA,YACA,QAAQ;AAAA,YACR,SAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAPK;AAAA,QAAA,CASR;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;;"}
package/dist/index10.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { Skeleton } from "./index5.js";
4
+ import { useLoaderVisibility } from "./index31.js";
4
5
  import { normalizeSize } from "./index4.js";
5
6
  import { cn } from "./index3.js";
6
7
  const SkeletonList = forwardRef(
@@ -13,13 +14,22 @@ const SkeletonList = forwardRef(
13
14
  baseColor,
14
15
  highlightColor,
15
16
  borderRadius = "0.5rem",
17
+ delay = 0,
18
+ minDuration = 0,
19
+ transition,
16
20
  className,
17
21
  style,
18
22
  testId = "skeleton-list",
19
23
  visible = true,
20
24
  ...rest
21
25
  }, ref) => {
22
- if (!visible) return null;
26
+ const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
27
+ visible,
28
+ delay,
29
+ minDuration,
30
+ transition
31
+ );
32
+ if (!shouldRender) return null;
23
33
  return /* @__PURE__ */ jsx(
24
34
  "div",
25
35
  {
@@ -28,7 +38,9 @@ const SkeletonList = forwardRef(
28
38
  className: cn("flex flex-col", className),
29
39
  style: {
30
40
  gap: normalizeSize(gap),
31
- ...style
41
+ ...style,
42
+ opacity,
43
+ transition: transitionStyle
32
44
  },
33
45
  role: "status",
34
46
  "aria-label": "Loading list...",
@@ -1 +1 @@
1
- {"version":3,"file":"index10.js","sources":["../src/components/skeleton/SkeletonList.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonListProps } from '../../types';\nimport { cn, normalizeSize } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonList - List skeleton loader\n *\n * A skeleton loader for list items with customizable count, item height, and spacing.\n *\n * @example\n * ```tsx\n * <SkeletonList items={5} />\n * <SkeletonList items={3} itemHeight={60} gap={12} />\n * ```\n */\nexport const SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(\n (\n {\n items = 3,\n itemHeight = '3rem',\n gap = '0.75rem',\n width = '100%',\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n className,\n style,\n testId = 'skeleton-list',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!visible) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col', className)}\n style={{\n gap: normalizeSize(gap),\n ...style,\n }}\n role=\"status\"\n aria-label=\"Loading list...\"\n aria-busy=\"true\"\n {...rest}\n >\n {Array.from({ length: items }).map((_, index) => (\n <Skeleton\n key={index}\n width={width}\n height={itemHeight}\n variant=\"rounded\"\n borderRadius={borderRadius}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n }\n);\n\nSkeletonList.displayName = 'SkeletonList';\n"],"names":[],"mappings":";;;;;AAgBO,MAAM,eAAe;AAAA,EAC1B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,QAAI,CAAC,QAAS,QAAO;AAErB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAO;AAAA,UACL,KAAK,cAAc,GAAG;AAAA,UACtB,GAAG;AAAA,QAAA;AAAA,QAEL,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,OAAO,EAAE,IAAI,CAAC,GAAG,UACrC;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC;AAAA,YACA,QAAQ;AAAA,YACR,SAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAPK;AAAA,QAAA,CASR;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;"}
1
+ {"version":3,"file":"index10.js","sources":["../src/components/skeleton/SkeletonList.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonListProps } from '../../types';\nimport { cn, normalizeSize, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonList - List skeleton loader\n *\n * A skeleton loader for list items with customizable count, item height, and spacing.\n *\n * @example\n * ```tsx\n * <SkeletonList items={5} />\n * <SkeletonList items={3} itemHeight={60} gap={12} />\n * ```\n */\nexport const SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(\n (\n {\n items = 3,\n itemHeight = '3rem',\n gap = '0.75rem',\n width = '100%',\n animate = true,\n baseColor,\n highlightColor,\n borderRadius = '0.5rem',\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-list',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col', className)}\n style={{\n gap: normalizeSize(gap),\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading list...\"\n aria-busy=\"true\"\n {...rest}\n >\n {Array.from({ length: items }).map((_, index) => (\n <Skeleton\n key={index}\n width={width}\n height={itemHeight}\n variant=\"rounded\"\n borderRadius={borderRadius}\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n }\n);\n\nSkeletonList.displayName = 'SkeletonList';\n"],"names":[],"mappings":";;;;;;AAgBO,MAAM,eAAe;AAAA,EAC1B,CACE;AAAA,IACE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAO;AAAA,UACL,KAAK,cAAc,GAAG;AAAA,UACtB,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,OAAO,EAAE,IAAI,CAAC,GAAG,UACrC;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC;AAAA,YACA,QAAQ;AAAA,YACR,SAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAPK;AAAA,QAAA,CASR;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;"}
package/dist/index11.cjs CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const react = require("react");
5
5
  const Skeleton = require("./index5.cjs");
6
+ const hooks = require("./index31.cjs");
6
7
  const classNames = require("./index3.cjs");
7
8
  const SkeletonTable = react.forwardRef(
8
9
  ({
@@ -12,13 +13,22 @@ const SkeletonTable = react.forwardRef(
12
13
  animate = true,
13
14
  baseColor,
14
15
  highlightColor,
16
+ delay = 0,
17
+ minDuration = 0,
18
+ transition,
15
19
  className,
16
20
  style,
17
21
  testId = "skeleton-table",
18
22
  visible = true,
19
23
  ...rest
20
24
  }, ref) => {
21
- if (!visible) return null;
25
+ const { shouldRender, opacity, transitionStyle } = hooks.useLoaderVisibility(
26
+ visible,
27
+ delay,
28
+ minDuration,
29
+ transition
30
+ );
31
+ if (!shouldRender) return null;
22
32
  const renderRow = (isHeader = false) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-4", style: { gridTemplateColumns: `repeat(${columns}, 1fr)` }, children: Array.from({ length: columns }).map((_, colIndex) => /* @__PURE__ */ jsxRuntime.jsx(
23
33
  Skeleton.Skeleton,
24
34
  {
@@ -37,7 +47,11 @@ const SkeletonTable = react.forwardRef(
37
47
  ref,
38
48
  "data-testid": testId,
39
49
  className: classNames.cn("flex flex-col gap-3", className),
40
- style,
50
+ style: {
51
+ ...style,
52
+ opacity,
53
+ transition: transitionStyle
54
+ },
41
55
  role: "status",
42
56
  "aria-label": "Loading table...",
43
57
  "aria-busy": "true",
@@ -1 +1 @@
1
- {"version":3,"file":"index11.cjs","sources":["../src/components/skeleton/SkeletonTable.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTableProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonTable - Table skeleton loader\n *\n * A skeleton loader for table layouts with rows and columns.\n *\n * @example\n * ```tsx\n * <SkeletonTable rows={5} columns={4} />\n * <SkeletonTable rows={3} columns={3} showHeader={true} />\n * ```\n */\nexport const SkeletonTable = forwardRef<HTMLDivElement, SkeletonTableProps>(\n (\n {\n rows = 5,\n columns = 3,\n showHeader = true,\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-table',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!visible) return null;\n\n const renderRow = (isHeader: boolean = false) => (\n <div className=\"grid gap-4\" style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` }}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <Skeleton\n key={colIndex}\n width=\"100%\"\n height={isHeader ? '1.5rem' : '1.25rem'}\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col gap-3', className)}\n style={style}\n role=\"status\"\n aria-label=\"Loading table...\"\n aria-busy=\"true\"\n {...rest}\n >\n {/* Header */}\n {showHeader && (\n <div className=\"border-b border-gray-200 pb-2\">\n {renderRow(true)}\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-3\">\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <div key={rowIndex}>\n {renderRow(false)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nSkeletonTable.displayName = 'SkeletonTable';\n"],"names":["forwardRef","jsx","Skeleton","jsxs","cn"],"mappings":";;;;;;AAgBO,MAAM,gBAAgBA,MAAAA;AAAAA,EAC3B,CACE;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,QAAI,CAAC,QAAS,QAAO;AAErB,UAAM,YAAY,CAAC,WAAoB,UACrCC,2BAAAA,IAAC,SAAI,WAAU,cAAa,OAAO,EAAE,qBAAqB,UAAU,OAAO,SAAA,GACxE,UAAA,MAAM,KAAK,EAAE,QAAQ,QAAA,CAAS,EAAE,IAAI,CAAC,GAAG,aACvCA,2BAAAA;AAAAA,MAACC,SAAAA;AAAAA,MAAA;AAAA,QAEC,OAAM;AAAA,QACN,QAAQ,WAAW,WAAW;AAAA,QAC9B,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MANK;AAAA,IAAA,CAQR,GACH;AAGF,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA,GAAG,uBAAuB,SAAS;AAAA,QAC9C;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAGH,UAAA;AAAA,UAAA,6CACE,OAAA,EAAI,WAAU,iCACZ,UAAA,UAAU,IAAI,GACjB;AAAA,UAIFH,2BAAAA,IAAC,SAAI,WAAU,aACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,aACpCA,2BAAAA,IAAC,OAAA,EACE,oBAAU,KAAK,KADR,QAEV,CACD,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,cAAc,cAAc;;"}
1
+ {"version":3,"file":"index11.cjs","sources":["../src/components/skeleton/SkeletonTable.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTableProps } from '../../types';\nimport { cn, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonTable - Table skeleton loader\n *\n * A skeleton loader for table layouts with rows and columns.\n *\n * @example\n * ```tsx\n * <SkeletonTable rows={5} columns={4} />\n * <SkeletonTable rows={3} columns={3} showHeader={true} />\n * ```\n */\nexport const SkeletonTable = forwardRef<HTMLDivElement, SkeletonTableProps>(\n (\n {\n rows = 5,\n columns = 3,\n showHeader = true,\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-table',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n const renderRow = (isHeader: boolean = false) => (\n <div className=\"grid gap-4\" style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` }}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <Skeleton\n key={colIndex}\n width=\"100%\"\n height={isHeader ? '1.5rem' : '1.25rem'}\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col gap-3', className)}\n style={{\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading table...\"\n aria-busy=\"true\"\n {...rest}\n >\n {/* Header */}\n {showHeader && (\n <div className=\"border-b border-gray-200 pb-2\">\n {renderRow(true)}\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-3\">\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <div key={rowIndex}>\n {renderRow(false)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nSkeletonTable.displayName = 'SkeletonTable';\n"],"names":["forwardRef","useLoaderVisibility","jsx","Skeleton","jsxs","cn"],"mappings":";;;;;;;AAgBO,MAAM,gBAAgBA,MAAAA;AAAAA,EAC3B,CACE;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoBC,MAAAA;AAAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,UAAM,YAAY,CAAC,WAAoB,UACrCC,2BAAAA,IAAC,SAAI,WAAU,cAAa,OAAO,EAAE,qBAAqB,UAAU,OAAO,SAAA,GACxE,UAAA,MAAM,KAAK,EAAE,QAAQ,QAAA,CAAS,EAAE,IAAI,CAAC,GAAG,aACvCA,2BAAAA;AAAAA,MAACC,SAAAA;AAAAA,MAAA;AAAA,QAEC,OAAM;AAAA,QACN,QAAQ,WAAW,WAAW;AAAA,QAC9B,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MANK;AAAA,IAAA,CAQR,GACH;AAGF,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAWC,WAAAA,GAAG,uBAAuB,SAAS;AAAA,QAC9C,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAGH,UAAA;AAAA,UAAA,6CACE,OAAA,EAAI,WAAU,iCACZ,UAAA,UAAU,IAAI,GACjB;AAAA,UAIFH,2BAAAA,IAAC,SAAI,WAAU,aACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,aACpCA,2BAAAA,IAAC,OAAA,EACE,oBAAU,KAAK,KADR,QAEV,CACD,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,cAAc,cAAc;;"}
package/dist/index11.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { Skeleton } from "./index5.js";
4
+ import { useLoaderVisibility } from "./index31.js";
4
5
  import { cn } from "./index3.js";
5
6
  const SkeletonTable = forwardRef(
6
7
  ({
@@ -10,13 +11,22 @@ const SkeletonTable = forwardRef(
10
11
  animate = true,
11
12
  baseColor,
12
13
  highlightColor,
14
+ delay = 0,
15
+ minDuration = 0,
16
+ transition,
13
17
  className,
14
18
  style,
15
19
  testId = "skeleton-table",
16
20
  visible = true,
17
21
  ...rest
18
22
  }, ref) => {
19
- if (!visible) return null;
23
+ const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(
24
+ visible,
25
+ delay,
26
+ minDuration,
27
+ transition
28
+ );
29
+ if (!shouldRender) return null;
20
30
  const renderRow = (isHeader = false) => /* @__PURE__ */ jsx("div", { className: "grid gap-4", style: { gridTemplateColumns: `repeat(${columns}, 1fr)` }, children: Array.from({ length: columns }).map((_, colIndex) => /* @__PURE__ */ jsx(
21
31
  Skeleton,
22
32
  {
@@ -35,7 +45,11 @@ const SkeletonTable = forwardRef(
35
45
  ref,
36
46
  "data-testid": testId,
37
47
  className: cn("flex flex-col gap-3", className),
38
- style,
48
+ style: {
49
+ ...style,
50
+ opacity,
51
+ transition: transitionStyle
52
+ },
39
53
  role: "status",
40
54
  "aria-label": "Loading table...",
41
55
  "aria-busy": "true",
@@ -1 +1 @@
1
- {"version":3,"file":"index11.js","sources":["../src/components/skeleton/SkeletonTable.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTableProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonTable - Table skeleton loader\n *\n * A skeleton loader for table layouts with rows and columns.\n *\n * @example\n * ```tsx\n * <SkeletonTable rows={5} columns={4} />\n * <SkeletonTable rows={3} columns={3} showHeader={true} />\n * ```\n */\nexport const SkeletonTable = forwardRef<HTMLDivElement, SkeletonTableProps>(\n (\n {\n rows = 5,\n columns = 3,\n showHeader = true,\n animate = true,\n baseColor,\n highlightColor,\n className,\n style,\n testId = 'skeleton-table',\n visible = true,\n ...rest\n },\n ref\n ) => {\n if (!visible) return null;\n\n const renderRow = (isHeader: boolean = false) => (\n <div className=\"grid gap-4\" style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` }}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <Skeleton\n key={colIndex}\n width=\"100%\"\n height={isHeader ? '1.5rem' : '1.25rem'}\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col gap-3', className)}\n style={style}\n role=\"status\"\n aria-label=\"Loading table...\"\n aria-busy=\"true\"\n {...rest}\n >\n {/* Header */}\n {showHeader && (\n <div className=\"border-b border-gray-200 pb-2\">\n {renderRow(true)}\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-3\">\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <div key={rowIndex}>\n {renderRow(false)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nSkeletonTable.displayName = 'SkeletonTable';\n"],"names":[],"mappings":";;;;AAgBO,MAAM,gBAAgB;AAAA,EAC3B,CACE;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,QAAI,CAAC,QAAS,QAAO;AAErB,UAAM,YAAY,CAAC,WAAoB,UACrC,oBAAC,SAAI,WAAU,cAAa,OAAO,EAAE,qBAAqB,UAAU,OAAO,SAAA,GACxE,UAAA,MAAM,KAAK,EAAE,QAAQ,QAAA,CAAS,EAAE,IAAI,CAAC,GAAG,aACvC;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,OAAM;AAAA,QACN,QAAQ,WAAW,WAAW;AAAA,QAC9B,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MANK;AAAA,IAAA,CAQR,GACH;AAGF,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAG,uBAAuB,SAAS;AAAA,QAC9C;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAGH,UAAA;AAAA,UAAA,kCACE,OAAA,EAAI,WAAU,iCACZ,UAAA,UAAU,IAAI,GACjB;AAAA,UAIF,oBAAC,SAAI,WAAU,aACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,aACpC,oBAAC,OAAA,EACE,oBAAU,KAAK,KADR,QAEV,CACD,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,cAAc,cAAc;"}
1
+ {"version":3,"file":"index11.js","sources":["../src/components/skeleton/SkeletonTable.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SkeletonTableProps } from '../../types';\nimport { cn, useLoaderVisibility } from '../../utils';\nimport { Skeleton } from './Skeleton';\n\n/**\n * SkeletonTable - Table skeleton loader\n *\n * A skeleton loader for table layouts with rows and columns.\n *\n * @example\n * ```tsx\n * <SkeletonTable rows={5} columns={4} />\n * <SkeletonTable rows={3} columns={3} showHeader={true} />\n * ```\n */\nexport const SkeletonTable = forwardRef<HTMLDivElement, SkeletonTableProps>(\n (\n {\n rows = 5,\n columns = 3,\n showHeader = true,\n animate = true,\n baseColor,\n highlightColor,\n delay = 0,\n minDuration = 0,\n transition,\n className,\n style,\n testId = 'skeleton-table',\n visible = true,\n ...rest\n },\n ref\n ) => {\n const { shouldRender, opacity, transitionStyle } = useLoaderVisibility(\n visible,\n delay,\n minDuration,\n transition\n );\n\n if (!shouldRender) return null;\n\n const renderRow = (isHeader: boolean = false) => (\n <div className=\"grid gap-4\" style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` }}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <Skeleton\n key={colIndex}\n width=\"100%\"\n height={isHeader ? '1.5rem' : '1.25rem'}\n variant=\"text\"\n animate={animate}\n baseColor={baseColor}\n highlightColor={highlightColor}\n />\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n data-testid={testId}\n className={cn('flex flex-col gap-3', className)}\n style={{\n ...style,\n opacity,\n transition: transitionStyle,\n }}\n role=\"status\"\n aria-label=\"Loading table...\"\n aria-busy=\"true\"\n {...rest}\n >\n {/* Header */}\n {showHeader && (\n <div className=\"border-b border-gray-200 pb-2\">\n {renderRow(true)}\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-3\">\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <div key={rowIndex}>\n {renderRow(false)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nSkeletonTable.displayName = 'SkeletonTable';\n"],"names":[],"mappings":";;;;;AAgBO,MAAM,gBAAgB;AAAA,EAC3B,CACE;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,UAAU;AAAA,IACV,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,EAAE,cAAc,SAAS,gBAAA,IAAoB;AAAA,MACjD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,aAAc,QAAO;AAE1B,UAAM,YAAY,CAAC,WAAoB,UACrC,oBAAC,SAAI,WAAU,cAAa,OAAO,EAAE,qBAAqB,UAAU,OAAO,SAAA,GACxE,UAAA,MAAM,KAAK,EAAE,QAAQ,QAAA,CAAS,EAAE,IAAI,CAAC,GAAG,aACvC;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,OAAM;AAAA,QACN,QAAQ,WAAW,WAAW;AAAA,QAC9B,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MANK;AAAA,IAAA,CAQR,GACH;AAGF,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAG,uBAAuB,SAAS;AAAA,QAC9C,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QAAA;AAAA,QAEd,MAAK;AAAA,QACL,cAAW;AAAA,QACX,aAAU;AAAA,QACT,GAAG;AAAA,QAGH,UAAA;AAAA,UAAA,kCACE,OAAA,EAAI,WAAU,iCACZ,UAAA,UAAU,IAAI,GACjB;AAAA,UAIF,oBAAC,SAAI,WAAU,aACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,aACpC,oBAAC,OAAA,EACE,oBAAU,KAAK,KADR,QAEV,CACD,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEA,cAAc,cAAc;"}