Sparkles
An animated sparkles effect for React that can be applied around any div or section. Adds a dynamic, glowing particle effect to highlight content and enhance visual appeal.
An animated sparkles effect for React that can be applied around any div or section. Adds a dynamic, glowing particle effect to highlight content and enhance visual appeal.
To Get the Globe/Earth code Please Click That Link here
npm install @tsparticles/react @tsparticles/slim
'use client';
import { useEffect, useId, useState } from 'react';
import Particles, { initParticlesEngine } from '@tsparticles/react';
import { loadSlim } from '@tsparticles/slim';
interface SparklesProps {
className?: string;
size?: number;
minSize?: number | null;
density?: number;
speed?: number;
minSpeed?: number | null;
opacity?: number;
direction?: string;
opacitySpeed?: number;
minOpacity?: number | null;
color?: string;
mousemove?: boolean;
hover?: boolean;
background?: string;
options?: Record<string, any>; // Adjust type as needed based on `options` structure
}
export function Sparkles({
className,
size = 1.2,
minSize = null,
density = 800,
speed = 1.5,
minSpeed = null,
opacity = 1,
direction = '',
opacitySpeed = 3,
minOpacity = null,
color = '#ffffff',
mousemove = false,
hover = false,
background = 'transparent',
options = {},
}: SparklesProps) {
const [isReady, setIsReady] = useState(false);
useEffect(() => {
initParticlesEngine(async (engine) => {
await loadSlim(engine);
}).then(() => {
setIsReady(true);
});
}, []);
const id = useId();
const defaultOptions = {
background: {
color: {
value: background,
},
},
fullScreen: {
enable: false,
zIndex: 1,
},
fpsLimit: 300,
interactivity: {
events: {
onClick: {
enable: true,
mode: 'push',
},
onHover: {
enable: hover,
mode: 'grab',
parallax: {
enable: mousemove,
force: 60,
smooth: 10,
},
},
resize: true as any,
},
modes: {
push: {
quantity: 4,
},
repulse: {
distance: 200,
duration: 0.4,
},
},
},
particles: {
color: {
value: color,
},
move: {
enable: true,
direction,
speed: {
min: minSpeed || speed / 130,
max: speed,
},
straight: true,
},
collisions: {
absorb: {
speed: 2,
},
bounce: {
horizontal: {
value: 1,
},
vertical: {
value: 1,
},
},
enable: false,
maxSpeed: 50,
mode: 'bounce',
overlap: {
enable: true,
retries: 0,
},
},
number: {
value: density,
},
opacity: {
value: {
min: minOpacity || opacity / 10,
max: opacity,
},
animation: {
enable: true,
sync: false,
speed: opacitySpeed,
},
},
size: {
value: {
min: minSize || size / 1.5,
max: size,
},
},
},
detectRetina: true,
};
return (
isReady && (
<Particles id={id}
// @ts-nocheck
options={defaultOptions} className={className} />
)
);
}
| Prop | Type | Default | Description |
|---|---|---|---|
| className | string | Optional CSS class for styling the sparkles component. | |
| size | number | 1.2 | Size of the sparkles. |
| minSize | number | null | null | Minimum size of the sparkles, or null if no minimum size is set. |
| density | number | 800 | Density of the sparkles. |
| speed | number | 1.5 | Speed of the sparkles' animation. |
| minSpeed | number | null | null | Minimum speed of the sparkles, or null if no minimum speed is set. |
| opacity | number | 1 | Opacity of the sparkles. |
| direction | string | '' | Direction of the sparkles' movement. |
| opacitySpeed | number | 3 | Speed at which the opacity of the sparkles changes. |
| minOpacity | number | null | null | Minimum opacity of the sparkles, or null if no minimum opacity is set. |
| color | string | '#ffffff' | Color of the sparkles. |
| mousemove | boolean | false | Whether the sparkles should follow the mouse movement. |
| hover | boolean | false | Whether the sparkles should be active on hover. |
| background | string | 'transparent' | Background color of the component. |
| options | Record<string, any> | {} | Additional options for configuring the sparkles. |