react-loadly 2.2.0 → 2.3.2
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 +482 -15
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +119 -46
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/types/@types/index.d.ts +15 -0
- package/dist/types/@types/index.d.ts.map +1 -1
- package/dist/types/@types/interfaces/IBarsLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IBarsLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IBaseLoaderProps.d.ts +0 -2
- package/dist/types/@types/interfaces/IBaseLoaderProps.d.ts.map +1 -1
- package/dist/types/@types/interfaces/IBounceLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IBounceLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IDotsLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IDotsLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IFluidLoaderProps.d.ts +1 -0
- package/dist/types/@types/interfaces/IFluidLoaderProps.d.ts.map +1 -1
- package/dist/types/@types/interfaces/IGeometricLoaderProps.d.ts +2 -0
- package/dist/types/@types/interfaces/IGeometricLoaderProps.d.ts.map +1 -1
- package/dist/types/@types/interfaces/IHashtagLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IHashtagLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IOrbitLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IOrbitLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IPlaneLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IPlaneLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IProgressRingLoaderProps.d.ts +2 -0
- package/dist/types/@types/interfaces/IProgressRingLoaderProps.d.ts.map +1 -1
- package/dist/types/@types/interfaces/IRippleLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IRippleLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IRotateLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IRotateLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/ISnakeLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/ISnakeLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/ISquaresLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/ISquaresLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/IStairLoaderProps.d.ts +7 -0
- package/dist/types/@types/interfaces/IStairLoaderProps.d.ts.map +1 -0
- package/dist/types/@types/interfaces/index.d.ts +11 -0
- package/dist/types/@types/interfaces/index.d.ts.map +1 -1
- package/dist/types/components/organisms/BarsLoader.d.ts +2 -2
- package/dist/types/components/organisms/BarsLoader.d.ts.map +1 -1
- package/dist/types/components/organisms/BounceLoader.d.ts +2 -2
- package/dist/types/components/organisms/BounceLoader.d.ts.map +1 -1
- package/dist/types/components/organisms/DotsLoader.d.ts +2 -2
- package/dist/types/components/organisms/DotsLoader.d.ts.map +1 -1
- package/dist/types/components/organisms/ElementLoader.d.ts.map +1 -1
- package/dist/types/components/organisms/HashtagLoader.d.ts +4 -0
- package/dist/types/components/organisms/HashtagLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/OrbitLoader.d.ts +4 -0
- package/dist/types/components/organisms/OrbitLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/PlaneLoader.d.ts +4 -0
- package/dist/types/components/organisms/PlaneLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/ProgressRingLoader.d.ts.map +1 -1
- package/dist/types/components/organisms/RippleLoader.d.ts +4 -0
- package/dist/types/components/organisms/RippleLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/RotateLoader.d.ts +2 -2
- package/dist/types/components/organisms/RotateLoader.d.ts.map +1 -1
- package/dist/types/components/organisms/SnakeLoader.d.ts +4 -0
- package/dist/types/components/organisms/SnakeLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/SquaresLoader.d.ts +4 -0
- package/dist/types/components/organisms/SquaresLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/StairLoader.d.ts +4 -0
- package/dist/types/components/organisms/StairLoader.d.ts.map +1 -0
- package/dist/types/components/organisms/index.d.ts +8 -1
- package/dist/types/components/organisms/index.d.ts.map +1 -1
- package/dist/types/examples/AutoSkeletonAPIExample.d.ts +3 -0
- package/dist/types/examples/AutoSkeletonAPIExample.d.ts.map +1 -0
- package/dist/types/examples/AutoSkeletonExample.d.ts.map +1 -0
- package/dist/types/examples/BarsExample.d.ts +3 -0
- package/dist/types/examples/BarsExample.d.ts.map +1 -0
- package/dist/types/examples/BounceExample.d.ts +3 -0
- package/dist/types/examples/BounceExample.d.ts.map +1 -0
- package/dist/types/examples/DotsExample.d.ts +3 -0
- package/dist/types/examples/DotsExample.d.ts.map +1 -0
- package/dist/types/examples/ElementExample.d.ts +3 -0
- package/dist/types/examples/ElementExample.d.ts.map +1 -0
- package/dist/types/examples/HashtagExample.d.ts +3 -0
- package/dist/types/examples/HashtagExample.d.ts.map +1 -0
- package/dist/types/examples/OrbitExample.d.ts +3 -0
- package/dist/types/examples/OrbitExample.d.ts.map +1 -0
- package/dist/types/examples/PlaneExample.d.ts +3 -0
- package/dist/types/examples/PlaneExample.d.ts.map +1 -0
- package/dist/types/examples/ProgressRingExample.d.ts +3 -0
- package/dist/types/examples/ProgressRingExample.d.ts.map +1 -0
- package/dist/types/examples/RippleExample.d.ts +3 -0
- package/dist/types/examples/RippleExample.d.ts.map +1 -0
- package/dist/types/examples/RotateExample.d.ts +3 -0
- package/dist/types/examples/RotateExample.d.ts.map +1 -0
- package/dist/types/examples/SnakeExample.d.ts +3 -0
- package/dist/types/examples/SnakeExample.d.ts.map +1 -0
- package/dist/types/examples/SquaresExample.d.ts +3 -0
- package/dist/types/examples/SquaresExample.d.ts.map +1 -0
- package/dist/types/examples/StairExample.d.ts +3 -0
- package/dist/types/examples/StairExample.d.ts.map +1 -0
- package/package.json +71 -22
- package/dist/types/AutoSkeletonExample.d.ts.map +0 -1
- /package/dist/types/{AutoSkeletonExample.d.ts → examples/AutoSkeletonExample.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
# ⚛️ React Loadly — React Loader, Spinner & Loading Indicator Components
|
|
1
|
+
# ⚛️ React Loadly — React Loader, Spinner & Loading Indicator Components Library
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./public/images/react-loadly-hero.png" alt="React Loadly - Modern React Loaders, Spinners, Skeleton Loaders, and Loading Indicators for React and Next.js" width="900" />
|
|
5
|
+
</p>
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
**React Loadly** is a modern, high-performance **React loader, spinner, and skeleton loader components library** with **30+ customizable loading animations**. Built with **TypeScript**, optimized for **Next.js and SSR**, and designed with **accessibility (ARIA)** and **developer experience** in mind.
|
|
8
|
+
|
|
9
|
+
Perfect for building **React applications, React dashboards, forms, and data-driven UIs** where you need smooth, customizable loading states and skeleton screens. Includes **AutoSkeletonLoader** for automatically generating skeleton loaders based on your component structure.
|
|
10
|
+
|
|
11
|
+
🔍 **Search-friendly features**: React loading spinner | React loader components | React skeleton loader | React loading indicator | Next.js loader | TypeScript loader | Accessible React loader | React loading animation
|
|
7
12
|
|
|
8
13
|
🏠 **Home Page**: [https://Mostafashadow1.github.io/react-loadly-showCases/](https://Mostafashadow1.github.io/react-loadly-showCases/)
|
|
9
14
|
|
|
@@ -25,6 +30,28 @@ Perfect for building **React apps, dashboards, forms, and data-driven UIs** wher
|
|
|
25
30
|
|
|
26
31
|
---
|
|
27
32
|
|
|
33
|
+
## 🆕 What's New
|
|
34
|
+
|
|
35
|
+
We've added **7 exciting new loaders** to expand your loading animation options:
|
|
36
|
+
|
|
37
|
+
1. **OrbitLoader** - Beautiful orbiting elements around a central point
|
|
38
|
+
2. **PlaneLoader** - 3D rotating cube with perspective transforms
|
|
39
|
+
3. **RippleLoader** - Expanding ripple rings from a central point
|
|
40
|
+
4. **SquaresLoader** - Multiple rotating squares with dynamic grid effect
|
|
41
|
+
5. **StairLoader** - Cascading stair steps with progress-like effect
|
|
42
|
+
6. **HashtagLoader** - Animated hashtag with progressive drawing
|
|
43
|
+
7. **SnakeLoader** - Snake-like slithering animation with flowing segments
|
|
44
|
+
|
|
45
|
+
All new loaders support:
|
|
46
|
+
|
|
47
|
+
- ✅ Customizable colors with `secondaryColor` prop
|
|
48
|
+
- ✅ Adjustable element count (where applicable)
|
|
49
|
+
- ✅ Fullscreen mode support
|
|
50
|
+
- ✅ Accessibility features (ARIA labels, reduced motion)
|
|
51
|
+
- ✅ Performance optimizations with hardware acceleration
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
28
55
|
## 🚀 Getting Started
|
|
29
56
|
|
|
30
57
|
### Installation
|
|
@@ -84,16 +111,23 @@ function App() {
|
|
|
84
111
|
|
|
85
112
|
### Geometric Loaders
|
|
86
113
|
|
|
87
|
-
| Component
|
|
88
|
-
|
|
|
89
|
-
| `SpinLoader`
|
|
90
|
-
| `PulseLoader`
|
|
91
|
-
| `WaveLoader`
|
|
92
|
-
| `GridLoader`
|
|
93
|
-
| `RingLoader`
|
|
94
|
-
| `BarsLoader`
|
|
95
|
-
| `BounceLoader`
|
|
96
|
-
| `RotateLoader`
|
|
114
|
+
| Component | Description |
|
|
115
|
+
| --------------- | ---------------------------------------------------------------------------- |
|
|
116
|
+
| `SpinLoader` | A classic spinner with a minimalist design. |
|
|
117
|
+
| `PulseLoader` | A dynamic animation of pulsing dots. |
|
|
118
|
+
| `WaveLoader` | A series of bars creating a wave-like effect. |
|
|
119
|
+
| `GridLoader` | A grid of squares that animate in sequence. |
|
|
120
|
+
| `RingLoader` | A sophisticated ring spinner with dual rotation. |
|
|
121
|
+
| `BarsLoader` | Animated bars with staggered timing. |
|
|
122
|
+
| `BounceLoader` | Bouncing dots with elastic animation. |
|
|
123
|
+
| `RotateLoader` | 3D rotating elements with depth. |
|
|
124
|
+
| `OrbitLoader` | Orbiting elements around a central point with customizable count and colors. |
|
|
125
|
+
| `PlaneLoader` | 3D rotating cube with perspective transforms. |
|
|
126
|
+
| `SquaresLoader` | Multiple rotating squares with varying delays and scales. |
|
|
127
|
+
| `StairLoader` | Cascading stair steps creating a progress effect. |
|
|
128
|
+
| `HashtagLoader` | Animated hashtag symbol with progressive drawing effect. |
|
|
129
|
+
| `SnakeLoader` | Snake-like slithering animation with flowing segments. |
|
|
130
|
+
| `RippleLoader` | Expanding ripple rings from a central point. |
|
|
97
131
|
|
|
98
132
|
---
|
|
99
133
|
|
|
@@ -358,6 +392,278 @@ All other props are inherited from `IBaseLoaderProps`.
|
|
|
358
392
|
|
|
359
393
|
---
|
|
360
394
|
|
|
395
|
+
### OrbitLoader Component
|
|
396
|
+
|
|
397
|
+
The `OrbitLoader` creates a beautiful orbital animation with elements rotating around a central point, similar to planets orbiting a star.
|
|
398
|
+
|
|
399
|
+
#### Basic Usage
|
|
400
|
+
|
|
401
|
+
```jsx
|
|
402
|
+
import { OrbitLoader } from "react-loadly";
|
|
403
|
+
|
|
404
|
+
function App() {
|
|
405
|
+
return (
|
|
406
|
+
<div>
|
|
407
|
+
{/* Default with 3 orbiting elements */}
|
|
408
|
+
<OrbitLoader />
|
|
409
|
+
|
|
410
|
+
{/* Custom number of orbiting elements */}
|
|
411
|
+
<OrbitLoader count={5} />
|
|
412
|
+
|
|
413
|
+
{/* With secondary color */}
|
|
414
|
+
<OrbitLoader count={4} color="#3b82f6" secondaryColor="#f59e0b" />
|
|
415
|
+
</div>
|
|
416
|
+
);
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
#### OrbitLoader Props
|
|
421
|
+
|
|
422
|
+
| Prop | Type | Default | Description |
|
|
423
|
+
| ---------------- | ---------------- | --------- | ---------------------------------------- |
|
|
424
|
+
| `count` | number | 3 | Number of orbiting elements |
|
|
425
|
+
| `secondaryColor` | string | undefined | Secondary color for alternating elements |
|
|
426
|
+
| `size` | number \| string | 60 | Size of the loader |
|
|
427
|
+
| `color` | string | "#6366f1" | Primary color of the orbit elements |
|
|
428
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
429
|
+
|
|
430
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
### PlaneLoader Component
|
|
435
|
+
|
|
436
|
+
The `PlaneLoader` displays a 3D rotating cube with perspective transforms, creating a modern 3D loading experience.
|
|
437
|
+
|
|
438
|
+
#### Basic Usage
|
|
439
|
+
|
|
440
|
+
```jsx
|
|
441
|
+
import { PlaneLoader } from "react-loadly";
|
|
442
|
+
|
|
443
|
+
function App() {
|
|
444
|
+
return (
|
|
445
|
+
<div>
|
|
446
|
+
{/* Default cube */}
|
|
447
|
+
<PlaneLoader />
|
|
448
|
+
|
|
449
|
+
{/* Custom size and color */}
|
|
450
|
+
<PlaneLoader size={60} color="#10b981" />
|
|
451
|
+
|
|
452
|
+
{/* With secondary color for cube faces */}
|
|
453
|
+
<PlaneLoader size={70} color="#3b82f6" secondaryColor="#8b5cf6" />
|
|
454
|
+
</div>
|
|
455
|
+
);
|
|
456
|
+
}
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
#### PlaneLoader Props
|
|
460
|
+
|
|
461
|
+
| Prop | Type | Default | Description |
|
|
462
|
+
| ---------------- | ---------------- | --------- | ----------------------------------- |
|
|
463
|
+
| `secondaryColor` | string | undefined | Color for the cube face backgrounds |
|
|
464
|
+
| `size` | number \| string | 50 | Size of the loader |
|
|
465
|
+
| `color` | string | "#6366f1" | Primary color of the cube edges |
|
|
466
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
467
|
+
|
|
468
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
### RippleLoader Component
|
|
473
|
+
|
|
474
|
+
The `RippleLoader` creates expanding ripple rings from a central point, similar to water ripples.
|
|
475
|
+
|
|
476
|
+
#### Basic Usage
|
|
477
|
+
|
|
478
|
+
```jsx
|
|
479
|
+
import { RippleLoader } from "react-loadly";
|
|
480
|
+
|
|
481
|
+
function App() {
|
|
482
|
+
return (
|
|
483
|
+
<div>
|
|
484
|
+
{/* Default with 3 ripples */}
|
|
485
|
+
<RippleLoader />
|
|
486
|
+
|
|
487
|
+
{/* Custom number of ripples */}
|
|
488
|
+
<RippleLoader count={5} />
|
|
489
|
+
|
|
490
|
+
{/* With secondary color and custom border width */}
|
|
491
|
+
<RippleLoader count={4} color="#3b82f6" secondaryColor="#8b5cf6" borderWidth={3} />
|
|
492
|
+
</div>
|
|
493
|
+
);
|
|
494
|
+
}
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
#### RippleLoader Props
|
|
498
|
+
|
|
499
|
+
| Prop | Type | Default | Description |
|
|
500
|
+
| ---------------- | ---------------- | --------- | --------------------------------------- |
|
|
501
|
+
| `count` | number | 3 | Number of ripple rings |
|
|
502
|
+
| `secondaryColor` | string | undefined | Secondary color for alternating ripples |
|
|
503
|
+
| `borderWidth` | number | 2 | Width of the ripple border |
|
|
504
|
+
| `size` | number \| string | 50 | Size of the loader |
|
|
505
|
+
| `color` | string | "#6366f1" | Primary color of the ripples |
|
|
506
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
507
|
+
|
|
508
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
### SquaresLoader Component
|
|
513
|
+
|
|
514
|
+
The `SquaresLoader` displays multiple rotating squares with varying delays and scales for a dynamic grid effect.
|
|
515
|
+
|
|
516
|
+
#### Basic Usage
|
|
517
|
+
|
|
518
|
+
```jsx
|
|
519
|
+
import { SquaresLoader } from "react-loadly";
|
|
520
|
+
|
|
521
|
+
function App() {
|
|
522
|
+
return (
|
|
523
|
+
<div>
|
|
524
|
+
{/* Default with 4 squares */}
|
|
525
|
+
<SquaresLoader />
|
|
526
|
+
|
|
527
|
+
{/* Custom number of squares */}
|
|
528
|
+
<SquaresLoader count={6} />
|
|
529
|
+
|
|
530
|
+
{/* With secondary color */}
|
|
531
|
+
<SquaresLoader count={9} color="#3b82f6" secondaryColor="#f59e0b" />
|
|
532
|
+
</div>
|
|
533
|
+
);
|
|
534
|
+
}
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
#### SquaresLoader Props
|
|
538
|
+
|
|
539
|
+
| Prop | Type | Default | Description |
|
|
540
|
+
| ---------------- | ---------------- | --------- | --------------------------------------- |
|
|
541
|
+
| `count` | number | 4 | Number of squares |
|
|
542
|
+
| `secondaryColor` | string | undefined | Secondary color for alternating squares |
|
|
543
|
+
| `size` | number \| string | 40 | Size of the loader |
|
|
544
|
+
| `color` | string | "#6366f1" | Primary color of the squares |
|
|
545
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
546
|
+
|
|
547
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
### StairLoader Component
|
|
552
|
+
|
|
553
|
+
The `StairLoader` creates cascading stair steps that animate in sequence, creating a progress-like effect.
|
|
554
|
+
|
|
555
|
+
#### Basic Usage
|
|
556
|
+
|
|
557
|
+
```jsx
|
|
558
|
+
import { StairLoader } from "react-loadly";
|
|
559
|
+
|
|
560
|
+
function App() {
|
|
561
|
+
return (
|
|
562
|
+
<div>
|
|
563
|
+
{/* Default with 5 steps */}
|
|
564
|
+
<StairLoader />
|
|
565
|
+
|
|
566
|
+
{/* Custom number of steps */}
|
|
567
|
+
<StairLoader count={7} />
|
|
568
|
+
|
|
569
|
+
{/* With secondary color */}
|
|
570
|
+
<StairLoader count={6} color="#3b82f6" secondaryColor="#8b5cf6" />
|
|
571
|
+
</div>
|
|
572
|
+
);
|
|
573
|
+
}
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
#### StairLoader Props
|
|
577
|
+
|
|
578
|
+
| Prop | Type | Default | Description |
|
|
579
|
+
| ---------------- | ---------------- | --------- | ------------------------------------- |
|
|
580
|
+
| `count` | number | 5 | Number of stair steps |
|
|
581
|
+
| `secondaryColor` | string | undefined | Secondary color for alternating steps |
|
|
582
|
+
| `size` | number \| string | 35 | Size of the loader |
|
|
583
|
+
| `color` | string | "#6366f1" | Primary color of the steps |
|
|
584
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
585
|
+
|
|
586
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
### HashtagLoader Component
|
|
591
|
+
|
|
592
|
+
The `HashtagLoader` animates a hashtag symbol with a progressive drawing effect.
|
|
593
|
+
|
|
594
|
+
#### Basic Usage
|
|
595
|
+
|
|
596
|
+
```jsx
|
|
597
|
+
import { HashtagLoader } from "react-loadly";
|
|
598
|
+
|
|
599
|
+
function App() {
|
|
600
|
+
return (
|
|
601
|
+
<div>
|
|
602
|
+
{/* Default hashtag */}
|
|
603
|
+
<HashtagLoader />
|
|
604
|
+
|
|
605
|
+
{/* Custom size and color */}
|
|
606
|
+
<HashtagLoader size={60} color="#10b981" />
|
|
607
|
+
|
|
608
|
+
{/* With secondary color */}
|
|
609
|
+
<HashtagLoader size={70} color="#3b82f6" secondaryColor="#8b5cf6" />
|
|
610
|
+
</div>
|
|
611
|
+
);
|
|
612
|
+
}
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
#### HashtagLoader Props
|
|
616
|
+
|
|
617
|
+
| Prop | Type | Default | Description |
|
|
618
|
+
| ---------------- | ---------------- | --------- | --------------------------------------------- |
|
|
619
|
+
| `secondaryColor` | string | undefined | Secondary color for alternating path segments |
|
|
620
|
+
| `size` | number \| string | 50 | Size of the loader |
|
|
621
|
+
| `color` | string | "#6366f1" | Primary color of the hashtag stroke |
|
|
622
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
623
|
+
|
|
624
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
### SnakeLoader Component
|
|
629
|
+
|
|
630
|
+
The `SnakeLoader` creates a snake-like animation with flowing segments that move in a wave pattern.
|
|
631
|
+
|
|
632
|
+
#### Basic Usage
|
|
633
|
+
|
|
634
|
+
```jsx
|
|
635
|
+
import { SnakeLoader } from "react-loadly";
|
|
636
|
+
|
|
637
|
+
function App() {
|
|
638
|
+
return (
|
|
639
|
+
<div>
|
|
640
|
+
{/* Default with 6 segments */}
|
|
641
|
+
<SnakeLoader />
|
|
642
|
+
|
|
643
|
+
{/* Custom number of segments */}
|
|
644
|
+
<SnakeLoader count={8} />
|
|
645
|
+
|
|
646
|
+
{/* With secondary color */}
|
|
647
|
+
<SnakeLoader count={10} color="#3b82f6" secondaryColor="#f59e0b" />
|
|
648
|
+
</div>
|
|
649
|
+
);
|
|
650
|
+
}
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
#### SnakeLoader Props
|
|
654
|
+
|
|
655
|
+
| Prop | Type | Default | Description |
|
|
656
|
+
| ---------------- | ---------------- | --------- | ---------------------------------------- |
|
|
657
|
+
| `count` | number | 6 | Number of snake segments |
|
|
658
|
+
| `secondaryColor` | string | undefined | Secondary color for alternating segments |
|
|
659
|
+
| `size` | number \| string | 60 | Size of the loader |
|
|
660
|
+
| `color` | string | "#6366f1" | Primary color of the snake segments |
|
|
661
|
+
| `speed` | number | 1 | Animation speed multiplier |
|
|
662
|
+
|
|
663
|
+
All other props are inherited from `IBaseLoaderProps`.
|
|
664
|
+
|
|
665
|
+
---
|
|
666
|
+
|
|
361
667
|
## 🦴 SkeletonLoader Component
|
|
362
668
|
|
|
363
669
|
The `SkeletonLoader` is perfect for modern loading states, creating placeholder content that mimics the actual content structure.
|
|
@@ -575,6 +881,88 @@ All other props are inherited from `IBaseLoaderProps`.
|
|
|
575
881
|
|
|
576
882
|
---
|
|
577
883
|
|
|
884
|
+
## 🎨 New Loaders Feature Guide
|
|
885
|
+
|
|
886
|
+
### Using Multiple New Loaders Together
|
|
887
|
+
|
|
888
|
+
Here's how to combine the new loaders for amazing visual effects:
|
|
889
|
+
|
|
890
|
+
```jsx
|
|
891
|
+
import { OrbitLoader, PlaneLoader, RippleLoader, SquaresLoader, StairLoader, HashtagLoader, SnakeLoader } from "react-loadly";
|
|
892
|
+
|
|
893
|
+
function MultiLoaderShowcase() {
|
|
894
|
+
return (
|
|
895
|
+
<div style={{ display: "grid", gridTemplateColumns: "repeat(2, 1fr)", gap: "40px", padding: "40px" }}>
|
|
896
|
+
{/* Orbital system animation */}
|
|
897
|
+
<div style={{ textAlign: "center" }}>
|
|
898
|
+
<h3>OrbitLoader - Space Theme</h3>
|
|
899
|
+
<OrbitLoader size={80} count={5} color="#0ea5e9" secondaryColor="#fbbf24" />
|
|
900
|
+
</div>
|
|
901
|
+
|
|
902
|
+
{/* 3D cube for tech products */}
|
|
903
|
+
<div style={{ textAlign: "center" }}>
|
|
904
|
+
<h3>PlaneLoader - 3D Effect</h3>
|
|
905
|
+
<PlaneLoader size={70} color="#6366f1" secondaryColor="#8b5cf6" />
|
|
906
|
+
</div>
|
|
907
|
+
|
|
908
|
+
{/* Ripple for notifications */}
|
|
909
|
+
<div style={{ textAlign: "center" }}>
|
|
910
|
+
<h3>RippleLoader - Pulse Effect</h3>
|
|
911
|
+
<RippleLoader size={60} count={4} color="#10b981" borderWidth={3} />
|
|
912
|
+
</div>
|
|
913
|
+
|
|
914
|
+
{/* Dynamic grid */}
|
|
915
|
+
<div style={{ textAlign: "center" }}>
|
|
916
|
+
<h3>SquaresLoader - Grid Animation</h3>
|
|
917
|
+
<SquaresLoader size={50} count={6} color="#3b82f6" />
|
|
918
|
+
</div>
|
|
919
|
+
|
|
920
|
+
{/* Progress stairs */}
|
|
921
|
+
<div style={{ textAlign: "center" }}>
|
|
922
|
+
<h3>StairLoader - Step Effect</h3>
|
|
923
|
+
<StairLoader size={45} count={7} color="#f59e0b" />
|
|
924
|
+
</div>
|
|
925
|
+
|
|
926
|
+
{/* Social media hashtag */}
|
|
927
|
+
<div style={{ textAlign: "center" }}>
|
|
928
|
+
<h3>HashtagLoader - Social Media</h3>
|
|
929
|
+
<HashtagLoader size={65} color="#1da1f2" speed={1.5} />
|
|
930
|
+
</div>
|
|
931
|
+
|
|
932
|
+
{/* Flowing snake */}
|
|
933
|
+
<div style={{ textAlign: "center" }}>
|
|
934
|
+
<h3>SnakeLoader - Organic Motion</h3>
|
|
935
|
+
<SnakeLoader size={70} count={8} color="#ec4899" secondaryColor="#8b5cf6" />
|
|
936
|
+
</div>
|
|
937
|
+
</div>
|
|
938
|
+
);
|
|
939
|
+
}
|
|
940
|
+
```
|
|
941
|
+
|
|
942
|
+
### Color Themes for New Loaders
|
|
943
|
+
|
|
944
|
+
All new loaders support `secondaryColor` for beautiful gradient and alternating color effects:
|
|
945
|
+
|
|
946
|
+
```jsx
|
|
947
|
+
// Ocean theme
|
|
948
|
+
<OrbitLoader color="#0ea5e9" secondaryColor="#06b6d4" />
|
|
949
|
+
<RippleLoader color="#0891b2" borderWidth={2} />
|
|
950
|
+
|
|
951
|
+
// Fire theme
|
|
952
|
+
<SnakeLoader color="#f97316" secondaryColor="#ef4444" />
|
|
953
|
+
<StairLoader color="#ff9500" secondaryColor="#ff6b00" />
|
|
954
|
+
|
|
955
|
+
// Purple theme
|
|
956
|
+
<PlaneLoader color="#7c3aed" secondaryColor="#a78bfa" />
|
|
957
|
+
<SquaresLoader color="#8b5cf6" secondaryColor="#c4b5fd" />
|
|
958
|
+
|
|
959
|
+
// Social media theme
|
|
960
|
+
<HashtagLoader color="#1da1f2" /> // Twitter blue
|
|
961
|
+
<HashtagLoader color="#E1306C" /> // Instagram pink
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
---
|
|
965
|
+
|
|
578
966
|
## ⚡ Performance & Best Practices
|
|
579
967
|
|
|
580
968
|
### Performance Optimization
|
|
@@ -713,7 +1101,15 @@ React Loadly provides comprehensive TypeScript definitions for all components an
|
|
|
713
1101
|
import type { IBaseLoaderProps, ISkeletonLoaderProps } from "react-loadly";
|
|
714
1102
|
|
|
715
1103
|
// For component-specific props
|
|
716
|
-
import type {
|
|
1104
|
+
import type {
|
|
1105
|
+
IOrbitLoaderProps,
|
|
1106
|
+
IPlaneLoaderProps,
|
|
1107
|
+
IRippleLoaderProps,
|
|
1108
|
+
ISquaresLoaderProps,
|
|
1109
|
+
IStairLoaderProps,
|
|
1110
|
+
IHashtagLoaderProps,
|
|
1111
|
+
ISnakeLoaderProps
|
|
1112
|
+
} from "react-loadly";
|
|
717
1113
|
|
|
718
1114
|
// For hook return types
|
|
719
1115
|
import type { IUseLoaderStateReturn } from "react-loadly/hooks";
|
|
@@ -725,6 +1121,12 @@ import type { AnimationDirectionType } from "react-loadly";
|
|
|
725
1121
|
|
|
726
1122
|
All types are properly exported and can be used in your TypeScript projects for better type safety and autocompletion.
|
|
727
1123
|
|
|
1124
|
+
**Available Interface Exports:**
|
|
1125
|
+
- `IBaseLoaderProps` - Base props for all loaders
|
|
1126
|
+
- `IGeometricLoaderProps` - Base props for geometric loaders (includes `count`, `secondaryColor`, etc.)
|
|
1127
|
+
- `IOrbitLoaderProps`, `IPlaneLoaderProps`, `IRippleLoaderProps`, etc. - Specific loader props
|
|
1128
|
+
- `ISkeletonLoaderProps`, `IProgressRingLoaderProps`, `IMorphLoaderProps` - Specialized loader props
|
|
1129
|
+
|
|
728
1130
|
Avoid importing directly from internal paths like `react-loadly/types` or `react-loadly/interfaces` as these are not part of the public API and may change.
|
|
729
1131
|
|
|
730
1132
|
### Fullscreen Mode
|
|
@@ -878,6 +1280,71 @@ function ImageGallery({ images, loading }) {
|
|
|
878
1280
|
}
|
|
879
1281
|
```
|
|
880
1282
|
|
|
1283
|
+
### Social Media Feed Loading
|
|
1284
|
+
|
|
1285
|
+
``jsx
|
|
1286
|
+
function SocialFeed({ posts, loading }) {
|
|
1287
|
+
if (loading) {
|
|
1288
|
+
return (
|
|
1289
|
+
<div className="social-feed">
|
|
1290
|
+
{Array.from({ length: 5 }).map((_, i) => (
|
|
1291
|
+
<div key={i} className="feed-card">
|
|
1292
|
+
<div style={{ display: 'flex', alignItems: 'center', gap: '12px', marginBottom: '12px' }}>
|
|
1293
|
+
<SkeletonLoader variant="avatar" size={40} />
|
|
1294
|
+
<SkeletonLoader lines={2} width="80%" />
|
|
1295
|
+
</div>
|
|
1296
|
+
<SkeletonLoader variant="card" width="100%" height={200} />
|
|
1297
|
+
<div style={{ display: 'flex', gap: '8px', marginTop: '12px' }}>
|
|
1298
|
+
<SnakeLoader size={20} count={4} />
|
|
1299
|
+
<span>Processing...</span>
|
|
1300
|
+
</div>
|
|
1301
|
+
</div>
|
|
1302
|
+
))}
|
|
1303
|
+
</div>
|
|
1304
|
+
);
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
return <div className="social-feed">{posts.map(renderPost)}</div>;
|
|
1308
|
+
}
|
|
1309
|
+
```
|
|
1310
|
+
|
|
1311
|
+
### Gaming/Entertainment Loading States
|
|
1312
|
+
|
|
1313
|
+
``jsx
|
|
1314
|
+
function GameLoader() {
|
|
1315
|
+
return (
|
|
1316
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '20px', alignItems: 'center' }}>
|
|
1317
|
+
{/* Futuristic game loading */}
|
|
1318
|
+
<OrbitLoader size={80} count={6} color="#00f5ff" secondaryColor="#ff0080" />
|
|
1319
|
+
|
|
1320
|
+
{/* Social media hashtag */}
|
|
1321
|
+
<HashtagLoader size={60} color="#1da1f2" speed={1.5} />
|
|
1322
|
+
|
|
1323
|
+
{/* Snake game effect */}
|
|
1324
|
+
<SnakeLoader size={70} count={8} color="#10b981" secondaryColor="#f59e0b" />
|
|
1325
|
+
</div>
|
|
1326
|
+
);
|
|
1327
|
+
}
|
|
1328
|
+
```
|
|
1329
|
+
|
|
1330
|
+
### 3D and Modern UI Loading
|
|
1331
|
+
|
|
1332
|
+
``jsx
|
|
1333
|
+
function ModernDashboardLoader() {
|
|
1334
|
+
return (
|
|
1335
|
+
<div className="dashboard-loader">
|
|
1336
|
+
{/* 3D rotating cube for tech products */}
|
|
1337
|
+
<PlaneLoader size={60} color="#6366f1" secondaryColor="#8b5cf6" />
|
|
1338
|
+
|
|
1339
|
+
{/* Ripple effect for notifications */}
|
|
1340
|
+
<RippleLoader size={50} count={4} color="#3b82f6" borderWidth={3} />
|
|
1341
|
+
|
|
1342
|
+
{/* Staircase for progress indication */}
|
|
1343
|
+
<StairLoader count={7} size={40} color="#10b981" />
|
|
1344
|
+
</div>
|
|
1345
|
+
);
|
|
1346
|
+
}
|
|
1347
|
+
|
|
881
1348
|
---
|
|
882
1349
|
|
|
883
1350
|
## 🧩 Advanced Usage
|