@groupix/groupix-spinner
Version:
A lightweight Angular spinner library with customizable ball count, size, speed, and loading text
202 lines (141 loc) ⢠4.99 kB
Markdown
# š Groupix Spinner




### ā” A lightweight Angular spinner library for seamless loading animations
---
## šÆ Features
āļø Easy to integrate
āļø Lightweight and fast performance
āļø Customizable ball count (3-9 balls)
āļø Multiple size options (sm, m, l, xl, xxl)
---
## š¦ Installation
Install the package using NPM:
```sh
npm install @groupix/groupix-spinner --save
```
---
## š Usage
### 1ļøā£ Import the module in `app.module.ts`
```typescript
import { GroupixSpinnerModule } from '@groupix/groupix-spinner';
@NgModule({
declarations: [AppComponent],
imports: [GroupixSpinnerModule],
bootstrap: [AppComponent]
})
export class AppModule {}
```
### 2ļøā£ Add the spinner component to your template
```html
<!-- Basic usage -->
<groupix-spinner></groupix-spinner>
<!-- With custom properties -->
<groupix-spinner
[ballCount]="5"
size="xl">
</groupix-spinner>
```
<!--
---
## šØ Customization
Modify the styles using CSS:
```css
groupix-spinner {
display: block;
width: 50px;
height: 50px;
border-radius: 50%;
border: 5px solid rgba(0, 0, 0, 0.1);
border-top-color: #3498db;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
``` -->
---
## āļø Configuration Options
| Property | Type | Default | Description |
|----------|------|---------|-------------|
| `ballCount` | `number` | `3` | Number of bouncing balls (3-9) |
| `size` | `'sm' \| 'm' \| 'l' \| 'xl' \| 'xxl'` | `'l'` | Size of the balls |
---
## š Size Options
Choose the perfect size for your spinner! Each size is optimized for different use cases:
### šø Available Sizes
| Size | Dimensions | Best For | Example |
|------|------------|----------|---------|
| `sm` | 20Ć20px | Small buttons, inline loading | `<groupix-spinner size="sm"></groupix-spinner>` |
| `m` | 30Ć30px | Form inputs, compact spaces | `<groupix-spinner size="m"></groupix-spinner>` |
| `l` | 40Ć40px | **Default** - General purpose | `<groupix-spinner size="l"></groupix-spinner>` |
| `xl` | 50Ć50px | Page loading, prominent areas | `<groupix-spinner size="xl"></groupix-spinner>` |
| `xxl` | 60Ć60px | Full-screen loading, hero sections | `<groupix-spinner size="xxl"></groupix-spinner>` |
### šØ Size Examples
```html
<!-- Tiny spinner for buttons -->
<button [disabled]="loading">
<groupix-spinner *ngIf="loading" size="sm" [ballCount]="3"></groupix-spinner>
{{ loading ? 'Loading...' : 'Submit' }}
</button>
<!-- Medium spinner for cards -->
<div class="card-loading">
<groupix-spinner size="m" [ballCount]="5"></groupix-spinner>
</div>
<!-- Large spinner for page loading -->
<div class="page-loader">
<groupix-spinner size="xl" [ballCount]="7"></groupix-spinner>
<p>Loading your content...</p>
</div>
<!-- Extra large for splash screens -->
<div class="splash-screen">
<groupix-spinner size="xxl" [ballCount]="9"></groupix-spinner>
</div>
```
### š” Size Tips
- **Responsive Design**: Use CSS media queries to change sizes on different screens
- **Performance**: Smaller sizes with fewer balls load faster
- **Accessibility**: Larger sizes are easier to see for users with visual impairments
- **Context**: Match the spinner size to the content it's loading
---
## š® Live Demo
š Check out the live demo: [Groupix Spinner Demo](https://groupix-spinner.vercel.app/)
---
## ā FAQ
### š¹ How do I show/hide the spinner dynamically?
Use Angular binding:
```html
<groupix-spinner *ngIf="isLoading"></groupix-spinner>
<button (click)="isLoading = !isLoading">Toggle Spinner</button>
```
### š¹ How do I customize the spinner appearance?
You can customize ball count and size:
```html
<!-- Small spinner with 3 balls -->
<groupix-spinner
[ballCount]="3"
size="sm">
</groupix-spinner>
<!-- Large spinner with 7 balls -->
<groupix-spinner
[ballCount]="7"
size="xxl">
</groupix-spinner>
```
### š¹ What's the valid range for ball count?
The ball count must be between 3 and 9. Values outside this range will be automatically clamped.
---
## š¤ Contributing
We ā¤ļø contributions! If you have any suggestions or want to improve this library, feel free to open an issue or submit a PR.
---
## šØāš» Created by
# **Arshdeep Singh**
š§ <arsh199820@gmail.com>
š¼ [LinkedIn](https://linkedin.com/in/arshdeepgrover)
š [Personal Website](https://arshdeepsingh.info)
---
## š License
This project is licensed under the **MIT License**.