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.
- package/README.md +55 -6
- package/dist/components/overlay/LoaderOverlay.d.ts.map +1 -1
- package/dist/components/progress/ProgressBar.d.ts.map +1 -1
- package/dist/components/progress/ProgressCircle.d.ts.map +1 -1
- package/dist/components/progress/ProgressRing.d.ts.map +1 -1
- package/dist/components/progress/ProgressSteps.d.ts.map +1 -1
- package/dist/components/pulse/PulseBars.d.ts +2 -2
- package/dist/components/pulse/PulseBars.d.ts.map +1 -1
- package/dist/components/pulse/PulseDots.d.ts +2 -2
- package/dist/components/pulse/PulseDots.d.ts.map +1 -1
- package/dist/components/pulse/PulseWave.d.ts +2 -2
- package/dist/components/pulse/PulseWave.d.ts.map +1 -1
- package/dist/components/pulse/TypingIndicator.d.ts.map +1 -1
- package/dist/components/skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonAvatar.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonCard.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonForm.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonImage.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonList.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonPage.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonTable.d.ts.map +1 -1
- package/dist/components/skeleton/SkeletonText.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerBars.d.ts +2 -2
- package/dist/components/spinner/SpinnerBars.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerCircle.d.ts +2 -1
- package/dist/components/spinner/SpinnerCircle.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerDots.d.ts +2 -2
- package/dist/components/spinner/SpinnerDots.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerGrid.d.ts +2 -2
- package/dist/components/spinner/SpinnerGrid.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerPulse.d.ts +3 -3
- package/dist/components/spinner/SpinnerPulse.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerRing.d.ts +3 -3
- package/dist/components/spinner/SpinnerRing.d.ts.map +1 -1
- package/dist/components/spinner/SpinnerWave.d.ts +3 -3
- package/dist/components/spinner/SpinnerWave.d.ts.map +1 -1
- package/dist/index10.cjs +14 -2
- package/dist/index10.cjs.map +1 -1
- package/dist/index10.js +14 -2
- package/dist/index10.js.map +1 -1
- package/dist/index11.cjs +16 -2
- package/dist/index11.cjs.map +1 -1
- package/dist/index11.js +16 -2
- package/dist/index11.js.map +1 -1
- package/dist/index12.cjs +16 -2
- package/dist/index12.cjs.map +1 -1
- package/dist/index12.js +16 -2
- package/dist/index12.js.map +1 -1
- package/dist/index13.cjs +12 -2
- package/dist/index13.cjs.map +1 -1
- package/dist/index13.js +12 -2
- package/dist/index13.js.map +1 -1
- package/dist/index14.cjs +24 -5
- package/dist/index14.cjs.map +1 -1
- package/dist/index14.js +24 -5
- package/dist/index14.js.map +1 -1
- package/dist/index15.cjs +23 -4
- package/dist/index15.cjs.map +1 -1
- package/dist/index15.js +24 -5
- package/dist/index15.js.map +1 -1
- package/dist/index16.cjs +23 -4
- package/dist/index16.cjs.map +1 -1
- package/dist/index16.js +24 -5
- package/dist/index16.js.map +1 -1
- package/dist/index17.cjs +21 -6
- package/dist/index17.cjs.map +1 -1
- package/dist/index17.js +22 -7
- package/dist/index17.js.map +1 -1
- package/dist/index18.cjs +25 -7
- package/dist/index18.cjs.map +1 -1
- package/dist/index18.js +26 -8
- package/dist/index18.js.map +1 -1
- package/dist/index19.cjs +24 -6
- package/dist/index19.cjs.map +1 -1
- package/dist/index19.js +25 -7
- package/dist/index19.js.map +1 -1
- package/dist/index20.cjs +24 -6
- package/dist/index20.cjs.map +1 -1
- package/dist/index20.js +25 -7
- package/dist/index20.js.map +1 -1
- package/dist/index21.cjs +21 -5
- package/dist/index21.cjs.map +1 -1
- package/dist/index21.js +22 -6
- package/dist/index21.js.map +1 -1
- package/dist/index22.cjs +24 -6
- package/dist/index22.cjs.map +1 -1
- package/dist/index22.js +25 -7
- package/dist/index22.js.map +1 -1
- package/dist/index23.cjs +25 -7
- package/dist/index23.cjs.map +1 -1
- package/dist/index23.js +26 -8
- package/dist/index23.js.map +1 -1
- package/dist/index24.cjs +16 -2
- package/dist/index24.cjs.map +1 -1
- package/dist/index24.js +16 -2
- package/dist/index24.js.map +1 -1
- package/dist/index25.cjs +21 -6
- package/dist/index25.cjs.map +1 -1
- package/dist/index25.js +22 -7
- package/dist/index25.js.map +1 -1
- package/dist/index26.cjs +22 -7
- package/dist/index26.cjs.map +1 -1
- package/dist/index26.js +23 -8
- package/dist/index26.js.map +1 -1
- package/dist/index27.cjs +23 -7
- package/dist/index27.cjs.map +1 -1
- package/dist/index27.js +24 -8
- package/dist/index27.js.map +1 -1
- package/dist/index28.cjs +20 -5
- package/dist/index28.cjs.map +1 -1
- package/dist/index28.js +21 -6
- package/dist/index28.js.map +1 -1
- package/dist/index29.cjs +14 -2
- package/dist/index29.cjs.map +1 -1
- package/dist/index29.js +14 -2
- package/dist/index29.js.map +1 -1
- package/dist/index31.cjs +126 -0
- package/dist/index31.cjs.map +1 -0
- package/dist/index31.js +126 -0
- package/dist/index31.js.map +1 -0
- package/dist/index4.cjs +10 -0
- package/dist/index4.cjs.map +1 -1
- package/dist/index4.js +10 -0
- package/dist/index4.js.map +1 -1
- package/dist/index5.cjs +14 -2
- package/dist/index5.cjs.map +1 -1
- package/dist/index5.js +14 -2
- package/dist/index5.js.map +1 -1
- package/dist/index6.cjs +14 -2
- package/dist/index6.cjs.map +1 -1
- package/dist/index6.js +14 -2
- package/dist/index6.js.map +1 -1
- package/dist/index7.cjs +16 -2
- package/dist/index7.cjs.map +1 -1
- package/dist/index7.js +16 -2
- package/dist/index7.js.map +1 -1
- package/dist/index8.cjs +14 -2
- package/dist/index8.cjs.map +1 -1
- package/dist/index8.js +14 -2
- package/dist/index8.js.map +1 -1
- package/dist/index9.cjs +16 -2
- package/dist/index9.cjs.map +1 -1
- package/dist/index9.js +16 -2
- package/dist/index9.js.map +1 -1
- package/dist/premium-react-loaders.css +405 -6
- package/dist/types/common.d.ts +20 -2
- package/dist/types/common.d.ts.map +1 -1
- package/dist/utils/colors.d.ts +2 -1
- package/dist/utils/colors.d.ts.map +1 -1
- package/dist/utils/hooks.d.ts +19 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- 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 **
|
|
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
|
[](https://www.npmjs.com/package/premium-react-loaders)
|
|
6
6
|
[](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
|
|
14
|
+
See all 25 components in action with interactive examples and customization options.
|
|
15
15
|
|
|
16
16
|
## Features
|
|
17
17
|
|
|
18
|
-
- **
|
|
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=
|
|
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,+
|
|
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,
|
|
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,
|
|
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,
|
|
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,+
|
|
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=
|
|
10
|
-
* <PulseBars size=
|
|
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,
|
|
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=
|
|
10
|
-
* <PulseDots size=
|
|
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,
|
|
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=
|
|
10
|
-
* <PulseWave size=
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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;
|
|
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,
|
|
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,
|
|
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,+
|
|
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,
|
|
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=
|
|
10
|
-
* <SpinnerBars size=
|
|
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;
|
|
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=
|
|
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;
|
|
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=
|
|
10
|
-
* <SpinnerDots size=
|
|
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;
|
|
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=
|
|
10
|
-
* <SpinnerGrid size=
|
|
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,
|
|
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=
|
|
10
|
-
* <SpinnerPulse size=
|
|
11
|
-
* <SpinnerPulse size=
|
|
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,
|
|
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=
|
|
10
|
-
* <SpinnerRing size=
|
|
11
|
-
* <SpinnerRing size=
|
|
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;
|
|
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=
|
|
10
|
-
* <SpinnerWave size=
|
|
11
|
-
* <SpinnerWave size=
|
|
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,
|
|
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
|
-
|
|
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...",
|
package/dist/index10.cjs.map
CHANGED
|
@@ -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 (!
|
|
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
|
-
|
|
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...",
|
package/dist/index10.js.map
CHANGED
|
@@ -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 (!
|
|
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
|
-
|
|
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",
|
package/dist/index11.cjs.map
CHANGED
|
@@ -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 (!
|
|
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
|
-
|
|
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",
|
package/dist/index11.js.map
CHANGED
|
@@ -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 (!
|
|
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;"}
|