@xdy-npm/react-particle-backgrounds 1.0.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/LICENSE +21 -0
- package/README.md +177 -0
- package/dist/index.d.mts +131 -0
- package/dist/index.d.ts +131 -0
- package/dist/index.js +1103 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1081 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/themes/base.ts","../src/themes/starline.ts","../src/themes/snow.ts","../src/themes/bubble.ts","../src/themes/stars.ts","../src/themes/firefly.ts","../src/themes/geometry.ts","../src/themes/wave.ts","../src/themes/index.ts","../src/context/ParticleContext.tsx","../src/components/ParticleWave.tsx","../src/components/ParticlesBackground.tsx","../src/components/ThemeSelector.tsx"],"names":["useEffect","jsx","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ISourceOptions } from '@tsparticles/engine';\n\nexport const baseConfig: Partial<ISourceOptions> = {\n fullScreen: {\n enable: true,\n zIndex: 0,\n },\n background: {\n color: { value: 'transparent' },\n },\n fpsLimit: 120,\n detectRetina: true,\n};\n\n/** Default accent colors used by themes that support multi-color particles */\nexport const DEFAULT_COLORS = [\n '#ffb3d9', '#f43f5e', '#a78bfa', '#3b82f6',\n '#10b981', '#f59e0b', '#ff6b6b', '#8b5cf6',\n '#06b6d4', '#fb7185',\n];\n","import type { ParticleTheme } from './types';\nimport { baseConfig, DEFAULT_COLORS } from './base';\n\nexport const starlineTheme: ParticleTheme = {\n id: 'starline',\n name: 'Star Links',\n icon: '\\u2728',\n description: 'Classic particle linking effect',\n backgroundGradient: 'linear-gradient(180deg, #0f172a 0%, #1e293b 50%, #334155 100%)',\n options: (isDark: boolean) => {\n const colors = DEFAULT_COLORS;\n return {\n ...baseConfig,\n interactivity: {\n detectsOn: 'window',\n events: {\n onClick: { enable: true, mode: 'push' },\n onHover: { enable: true, mode: 'grab' },\n resize: { enable: true },\n },\n modes: {\n push: { quantity: 6 },\n grab: {\n distance: 200,\n links: { opacity: 1, color: colors },\n },\n },\n },\n particles: {\n color: { value: colors },\n links: {\n color: colors,\n distance: 150,\n enable: true,\n opacity: 0.5,\n width: 1,\n },\n move: {\n direction: 'none',\n enable: true,\n outModes: { default: 'out' },\n random: false,\n speed: 2,\n straight: false,\n },\n number: {\n density: { enable: true, width: 1920, height: 1080 },\n value: 100,\n },\n opacity: { value: 0.7 },\n shape: { type: 'circle' },\n size: { value: { min: 2, max: 6 } },\n shadow: {\n blur: 8,\n color: { value: colors },\n enable: true,\n offset: { x: 0, y: 0 },\n },\n },\n };\n },\n};\n","import type { ParticleTheme } from './types';\nimport { baseConfig } from './base';\n\nexport const snowTheme: ParticleTheme = {\n id: 'snow',\n name: 'Snowfall',\n icon: '\\u2744\\uFE0F',\n description: 'Romantic falling snowflakes',\n backgroundGradient: 'linear-gradient(180deg, #1e3a5f 0%, #2d4a6b 50%, #3d5a7b 100%)',\n options: (isDark: boolean) => ({\n ...baseConfig,\n interactivity: {\n detectsOn: 'window',\n events: {\n onHover: { enable: true, mode: 'repulse' },\n resize: { enable: true },\n },\n modes: {\n repulse: { distance: 100, duration: 0.4 },\n },\n },\n particles: {\n color: { value: isDark ? '#ffffff' : '#87CEEB' },\n move: {\n direction: 'bottom',\n enable: true,\n outModes: { default: 'out' },\n speed: { min: 1, max: 3 },\n straight: false,\n drift: { min: -0.5, max: 0.5 },\n },\n number: {\n density: { enable: true, width: 1920, height: 1080 },\n value: 80,\n },\n opacity: {\n value: { min: 0.3, max: 0.8 },\n animation: { enable: true, speed: 1, minimumValue: 0.3, sync: false },\n },\n shape: { type: 'circle' },\n size: { value: { min: 2, max: 6 } },\n wobble: {\n enable: true,\n distance: 10,\n speed: { min: -5, max: 5 },\n },\n shadow: {\n blur: 5,\n color: { value: isDark ? '#ffffff' : '#87CEEB' },\n enable: true,\n offset: { x: 0, y: 0 },\n },\n },\n }),\n};\n","import type { ParticleTheme } from './types';\nimport { baseConfig } from './base';\n\nexport const bubbleTheme: ParticleTheme = {\n id: 'bubble',\n name: 'Bubbles',\n icon: '\\uD83E\\uDEE7',\n description: 'Dreamy rising bubbles',\n backgroundGradient: 'linear-gradient(180deg, #0a2647 0%, #144272 50%, #205295 100%)',\n options: (isDark: boolean) => ({\n ...baseConfig,\n interactivity: {\n detectsOn: 'window',\n events: {\n onClick: { enable: true, mode: 'pop' },\n onHover: { enable: true, mode: 'bubble' },\n resize: { enable: true },\n },\n modes: {\n bubble: { distance: 200, size: 15, duration: 2, opacity: 0.8 },\n pop: {},\n },\n },\n particles: {\n color: {\n value: isDark\n ? ['#00d9ff', '#00ff9d', '#ff00e6', '#ffee00']\n : ['#ffb3d9', '#ff91c7', '#ffc0e5', '#ffd6e8'],\n },\n move: {\n direction: 'top',\n enable: true,\n outModes: { default: 'out' },\n speed: { min: 1, max: 2 },\n straight: false,\n },\n number: {\n density: { enable: true, width: 1920, height: 1080 },\n value: 50,\n },\n opacity: {\n value: { min: 0.2, max: 0.6 },\n animation: { enable: true, speed: 0.5, minimumValue: 0.1, sync: false },\n },\n shape: { type: 'circle' },\n size: {\n value: { min: 5, max: 15 },\n animation: { enable: true, speed: 3, minimumValue: 3, sync: false },\n },\n stroke: {\n width: 1,\n color: { value: isDark ? 'rgba(255,255,255,0.3)' : 'rgba(0,0,0,0.1)' },\n },\n shadow: {\n blur: 10,\n color: { value: isDark ? '#ffb3d9' : '#ff91c7' },\n enable: true,\n offset: { x: 0, y: 0 },\n },\n },\n }),\n};\n","import type { ParticleTheme } from './types';\nimport { baseConfig } from './base';\n\nexport const starsTheme: ParticleTheme = {\n id: 'stars',\n name: 'Twinkling Stars',\n icon: '\\u2B50',\n description: 'Sparkling starry sky',\n backgroundGradient: 'linear-gradient(180deg, #000000 0%, #1a1a2e 50%, #16213e 100%)',\n options: (isDark: boolean) => ({\n ...baseConfig,\n interactivity: {\n detectsOn: 'window',\n events: {\n onClick: { enable: true, mode: 'push' },\n onHover: { enable: true, mode: 'connect' },\n resize: { enable: true },\n },\n modes: {\n push: { quantity: 3 },\n connect: { distance: 100, links: { opacity: 0.3 }, radius: 150 },\n },\n },\n particles: {\n color: {\n value: isDark\n ? ['#ffffff', '#ffffd4', '#ffecd2', '#d4f1ff']\n : ['#ffd700', '#ffb347', '#ff6b6b', '#4ecdc4'],\n },\n move: {\n direction: 'none',\n enable: true,\n outModes: { default: 'out' },\n random: true,\n speed: 0.5,\n straight: false,\n },\n number: {\n density: { enable: true, width: 1920, height: 1080 },\n value: 120,\n },\n opacity: {\n value: { min: 0.2, max: 1 },\n animation: {\n enable: true,\n speed: 1,\n minimumValue: 0.1,\n sync: false,\n },\n },\n shape: { type: 'star', options: { star: { sides: 5 } } },\n size: { value: { min: 1, max: 4 } },\n twinkle: {\n lines: { enable: false },\n particles: {\n enable: true,\n frequency: 0.05,\n opacity: 1,\n color: { value: isDark ? '#ffffff' : '#ffd700' },\n },\n },\n shadow: {\n blur: 6,\n color: { value: isDark ? '#ffffff' : '#ffd700' },\n enable: true,\n offset: { x: 0, y: 0 },\n },\n },\n }),\n};\n","import type { ParticleTheme } from './types';\nimport { baseConfig } from './base';\n\nexport const fireflyTheme: ParticleTheme = {\n id: 'firefly',\n name: 'Fireflies',\n icon: '\\uD83E\\uDEB2',\n description: 'Warm glowing firefly effect',\n backgroundGradient: 'linear-gradient(180deg, #1a1a1a 0%, #2d2d2d 50%, #1a1a1a 100%)',\n options: (isDark: boolean) => ({\n ...baseConfig,\n interactivity: {\n detectsOn: 'window',\n events: {\n onHover: { enable: true, mode: 'slow' },\n resize: { enable: true },\n },\n modes: {\n slow: { factor: 3, radius: 200 },\n },\n },\n particles: {\n color: {\n value: isDark\n ? ['#ffff00', '#adff2f', '#7fff00', '#00ff7f']\n : ['#ffc107', '#ff9800', '#ff5722', '#4caf50'],\n },\n move: {\n direction: 'none',\n enable: true,\n outModes: { default: 'bounce' },\n random: true,\n speed: 1,\n straight: false,\n trail: {\n enable: true,\n length: 5,\n fill: { color: 'transparent' },\n },\n },\n number: {\n density: { enable: true, width: 1920, height: 1080 },\n value: 40,\n },\n opacity: {\n value: { min: 0.3, max: 1 },\n animation: {\n enable: true,\n speed: 2,\n minimumValue: 0.1,\n sync: false,\n },\n },\n shape: { type: 'circle' },\n size: { value: { min: 2, max: 5 } },\n shadow: {\n blur: 15,\n color: { value: isDark ? '#adff2f' : '#ffc107' },\n enable: true,\n offset: { x: 0, y: 0 },\n },\n },\n }),\n};\n","import type { ParticleTheme } from './types';\nimport { baseConfig } from './base';\n\nexport const geometryTheme: ParticleTheme = {\n id: 'geometry',\n name: 'Geometry',\n icon: '\\uD83D\\uDD37',\n description: 'Floating abstract geometric shapes',\n backgroundGradient: 'linear-gradient(180deg, #0f0c29 0%, #302b63 50%, #24243e 100%)',\n options: (isDark: boolean) => ({\n ...baseConfig,\n interactivity: {\n detectsOn: 'window',\n events: {\n onClick: { enable: true, mode: 'push' },\n onHover: { enable: true, mode: 'repulse' },\n resize: { enable: true },\n },\n modes: {\n push: { quantity: 2 },\n repulse: { distance: 150, duration: 0.4 },\n },\n },\n particles: {\n color: {\n value: ['#ffb3d9', '#ff91c7', '#ffc0e5', '#ffd6e8'],\n },\n move: {\n direction: 'none',\n enable: true,\n outModes: { default: 'bounce' },\n random: false,\n speed: 1.5,\n straight: false,\n },\n number: {\n density: { enable: true, width: 1920, height: 1080 },\n value: 30,\n },\n opacity: {\n value: { min: 0.3, max: 0.7 },\n },\n rotate: {\n value: { min: 0, max: 360 },\n direction: 'random',\n animation: { enable: true, speed: 5 },\n },\n shape: {\n type: ['triangle', 'square', 'polygon'],\n options: {\n polygon: { sides: 6 },\n },\n },\n size: { value: { min: 10, max: 25 } },\n stroke: {\n width: 1,\n color: { value: isDark ? 'rgba(255,255,255,0.5)' : 'rgba(0,0,0,0.2)' },\n },\n shadow: {\n blur: 10,\n color: { value: isDark ? '#ffb3d9' : '#ff91c7' },\n enable: true,\n offset: { x: 2, y: 2 },\n },\n },\n }),\n};\n","import type { ParticleTheme } from './types';\nimport { baseConfig } from './base';\n\nexport const waveTheme: ParticleTheme = {\n id: 'wave',\n name: 'Particle Ocean',\n icon: '\\uD83C\\uDF0A',\n description: '3D particle wave effect (requires three.js)',\n isThreeJS: true,\n backgroundGradient: 'linear-gradient(180deg, #000000 0%, #0a1628 50%, #0d1f3c 100%)',\n options: () => ({\n ...baseConfig,\n particles: {\n number: { value: 0 },\n },\n }),\n};\n","export type { ParticleTheme, ThemeId } from './types';\nexport { baseConfig, DEFAULT_COLORS } from './base';\nexport { starlineTheme } from './starline';\nexport { snowTheme } from './snow';\nexport { bubbleTheme } from './bubble';\nexport { starsTheme } from './stars';\nexport { fireflyTheme } from './firefly';\nexport { geometryTheme } from './geometry';\nexport { waveTheme } from './wave';\n\nimport { starlineTheme } from './starline';\nimport { snowTheme } from './snow';\nimport { bubbleTheme } from './bubble';\nimport { starsTheme } from './stars';\nimport { fireflyTheme } from './firefly';\nimport { geometryTheme } from './geometry';\nimport { waveTheme } from './wave';\nimport type { ParticleTheme } from './types';\n\n/** All built-in particle themes (excludes \"none\") */\nexport const particleThemes: ParticleTheme[] = [\n starlineTheme,\n snowTheme,\n bubbleTheme,\n starsTheme,\n fireflyTheme,\n geometryTheme,\n waveTheme,\n];\n\n/** Get a theme by its ID. Falls back to starline if not found. */\nexport const getThemeById = (id: string): ParticleTheme => {\n return particleThemes.find((theme) => theme.id === id) || starlineTheme;\n};\n\nexport const DEFAULT_THEME_ID = 'starline';\n","import React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport type { ThemeId } from '../themes/types';\nimport { DEFAULT_THEME_ID } from '../themes';\n\ninterface ParticleContextValue {\n themeId: string;\n isDark: boolean;\n setTheme: (id: string) => void;\n setDark: (dark: boolean) => void;\n}\n\nconst ParticleContext = createContext<ParticleContextValue | null>(null);\n\nconst STORAGE_KEY = 'rpb-theme-id';\n\nexport interface ParticleProviderProps {\n /** Initial/default theme ID */\n defaultTheme?: ThemeId | string;\n /** Whether to use dark mode particle colors */\n isDark?: boolean;\n /** Persist theme selection to localStorage */\n persist?: boolean;\n children: React.ReactNode;\n}\n\n/**\n * Provides particle theme state to child components.\n * Wrap your app (or a subtree) with this provider to use\n * `<ParticlesBackground />` and `<ThemeSelector />` without explicit props.\n */\nexport const ParticleProvider: React.FC<ParticleProviderProps> = ({\n defaultTheme = DEFAULT_THEME_ID,\n isDark: isDarkProp = true,\n persist = true,\n children,\n}) => {\n const [themeId, setThemeId] = useState<string>(() => {\n if (persist && typeof window !== 'undefined') {\n return localStorage.getItem(STORAGE_KEY) || defaultTheme;\n }\n return defaultTheme;\n });\n const [isDark, setDark] = useState(isDarkProp);\n\n useEffect(() => {\n setDark(isDarkProp);\n }, [isDarkProp]);\n\n const setTheme = useCallback((id: string) => {\n setThemeId(id);\n if (persist && typeof window !== 'undefined') {\n localStorage.setItem(STORAGE_KEY, id);\n }\n }, [persist]);\n\n return (\n <ParticleContext.Provider value={{ themeId, isDark, setTheme, setDark }}>\n {children}\n </ParticleContext.Provider>\n );\n};\n\n/** Access the current particle theme context. Must be used within a `<ParticleProvider>`. */\nexport const useParticleTheme = (): ParticleContextValue => {\n const ctx = useContext(ParticleContext);\n if (!ctx) {\n throw new Error('useParticleTheme must be used within a <ParticleProvider>');\n }\n return ctx;\n};\n\n/**\n * Internal hook: returns context if available, otherwise falls back to props.\n * This allows components to work both with and without a provider.\n */\nexport const useParticleThemeOptional = () => {\n return useContext(ParticleContext);\n};\n","import React, { useRef, useEffect } from 'react';\n\ninterface ParticleWaveProps {\n /** CSS gradient or solid background behind the wave */\n background?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * 3D particle ocean wave rendered with Three.js.\n * Three.js is loaded dynamically — if not installed, this component renders nothing.\n */\nconst ParticleWave: React.FC<ParticleWaveProps> = ({\n background = 'linear-gradient(180deg, #000000 0%, #0a1628 50%, #0d1f3c 100%)',\n className,\n style,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const animationRef = useRef<number>();\n const hasThree = useRef(true);\n\n useEffect(() => {\n let THREE: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n THREE = (globalThis as any).require\n ? (globalThis as any).require('three')\n : (() => { throw new Error('no require'); })();\n } catch {\n hasThree.current = false;\n console.warn('[react-particle-backgrounds] \"three\" is not installed. The wave theme requires it as a peer dependency.');\n return;\n }\n\n if (!containerRef.current) return;\n\n const container = containerRef.current;\n const width = container.clientWidth;\n const height = container.clientHeight;\n\n const scene = new THREE.Scene();\n scene.background = null;\n\n const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);\n camera.position.set(0, 50, 100);\n camera.lookAt(0, 0, 0);\n\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.setSize(width, height);\n renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n container.appendChild(renderer.domElement);\n\n const particleCount = 15000;\n const waveWidth = 200;\n const waveDepth = 100;\n\n // Wave particles\n const geometry = new THREE.BufferGeometry();\n const positions = new Float32Array(particleCount * 3);\n const colors = new Float32Array(particleCount * 3);\n const sizes = new Float32Array(particleCount);\n\n for (let i = 0; i < particleCount; i++) {\n const i3 = i * 3;\n positions[i3] = (Math.random() - 0.5) * waveWidth;\n positions[i3 + 1] = 0;\n positions[i3 + 2] = (Math.random() - 0.5) * waveDepth;\n\n const colorChoice = Math.random();\n if (colorChoice < 0.5) {\n colors[i3] = 0; colors[i3 + 1] = 0.8 + Math.random() * 0.2; colors[i3 + 2] = 1;\n } else if (colorChoice < 0.8) {\n colors[i3] = 0.1; colors[i3 + 1] = 0.3 + Math.random() * 0.3; colors[i3 + 2] = 0.9 + Math.random() * 0.1;\n } else {\n colors[i3] = 0.8 + Math.random() * 0.2; colors[i3 + 1] = 0.9 + Math.random() * 0.1; colors[i3 + 2] = 1;\n }\n sizes[i] = Math.random() * 2 + 0.5;\n }\n\n geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));\n geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3));\n geometry.setAttribute('size', new THREE.BufferAttribute(sizes, 1));\n\n const vertexShader = `\n attribute float size;\n varying vec3 vColor;\n void main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = size * (300.0 / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n `;\n\n const fragmentShader = `\n varying vec3 vColor;\n void main() {\n float dist = length(gl_PointCoord - vec2(0.5));\n if (dist > 0.5) discard;\n float alpha = 1.0 - smoothstep(0.0, 0.5, dist);\n float glow = exp(-dist * 3.0);\n vec3 finalColor = vColor + glow * 0.5;\n gl_FragColor = vec4(finalColor, alpha * 0.8);\n }\n `;\n\n const material = new THREE.ShaderMaterial({\n vertexShader, fragmentShader,\n transparent: true, vertexColors: true,\n blending: THREE.AdditiveBlending, depthWrite: false,\n });\n\n const particles = new THREE.Points(geometry, material);\n scene.add(particles);\n\n // Bokeh particles\n const bokehCount = 100;\n const bokehGeometry = new THREE.BufferGeometry();\n const bokehPositions = new Float32Array(bokehCount * 3);\n const bokehColors = new Float32Array(bokehCount * 3);\n const bokehSizes = new Float32Array(bokehCount);\n\n for (let i = 0; i < bokehCount; i++) {\n const i3 = i * 3;\n bokehPositions[i3] = (Math.random() - 0.5) * waveWidth * 1.5;\n bokehPositions[i3 + 1] = Math.random() * -30 - 10;\n bokehPositions[i3 + 2] = (Math.random() - 0.5) * waveDepth * 2;\n bokehColors[i3] = 0.2; bokehColors[i3 + 1] = 0.5 + Math.random() * 0.3; bokehColors[i3 + 2] = 1;\n bokehSizes[i] = Math.random() * 15 + 8;\n }\n\n bokehGeometry.setAttribute('position', new THREE.BufferAttribute(bokehPositions, 3));\n bokehGeometry.setAttribute('color', new THREE.BufferAttribute(bokehColors, 3));\n bokehGeometry.setAttribute('size', new THREE.BufferAttribute(bokehSizes, 1));\n\n const bokehMaterial = new THREE.ShaderMaterial({\n vertexShader,\n fragmentShader: `\n varying vec3 vColor;\n void main() {\n float dist = length(gl_PointCoord - vec2(0.5));\n if (dist > 0.5) discard;\n float alpha = 1.0 - smoothstep(0.2, 0.5, dist);\n gl_FragColor = vec4(vColor, alpha * 0.3);\n }\n `,\n transparent: true, vertexColors: true,\n blending: THREE.AdditiveBlending, depthWrite: false,\n });\n\n const bokehParticles = new THREE.Points(bokehGeometry, bokehMaterial);\n scene.add(bokehParticles);\n\n // Rain drops with trails\n const dropCount = 150;\n const trailLength = 12;\n\n interface RainDrop {\n x: number; z: number; y: number;\n velocity: number; active: boolean;\n maxHeight: number; trail: number[];\n opacity: number;\n }\n\n const rainDrops: RainDrop[] = [];\n for (let i = 0; i < dropCount; i++) {\n const shouldActivate = Math.random() < 0.1;\n const x = (Math.random() - 0.5) * waveWidth * 0.9;\n const z = (Math.random() - 0.5) * waveDepth * 0.7;\n const waveHeight = Math.sin(x * 0.05) * 8 + Math.sin(z * 0.08) * 5;\n const startHeight = shouldActivate ? waveHeight + Math.random() * 40 : -200;\n rainDrops.push({\n x, z, y: startHeight,\n velocity: shouldActivate ? 0.5 + Math.random() * 0.7 : 0,\n active: shouldActivate,\n maxHeight: waveHeight + 80 + Math.random() * 120,\n trail: new Array(trailLength).fill(startHeight),\n opacity: shouldActivate ? 1.0 : 0,\n });\n }\n\n const trailPointCount = dropCount * trailLength;\n const dropTrailGeometry = new THREE.BufferGeometry();\n const dropTrailPositions = new Float32Array(trailPointCount * 3);\n const dropTrailColors = new Float32Array(trailPointCount * 3);\n const dropTrailSizes = new Float32Array(trailPointCount);\n\n for (let i = 0; i < dropCount; i++) {\n for (let j = 0; j < trailLength; j++) {\n dropTrailSizes[i * trailLength + j] = 4 * (1 - j / trailLength) * 0.5;\n }\n }\n\n dropTrailGeometry.setAttribute('position', new THREE.BufferAttribute(dropTrailPositions, 3));\n dropTrailGeometry.setAttribute('color', new THREE.BufferAttribute(dropTrailColors, 3));\n dropTrailGeometry.setAttribute('size', new THREE.BufferAttribute(dropTrailSizes, 1));\n\n const dropTrailMaterial = new THREE.ShaderMaterial({\n vertexShader,\n fragmentShader: `\n varying vec3 vColor;\n void main() {\n float dist = length(gl_PointCoord - vec2(0.5));\n if (dist > 0.5) discard;\n float alpha = 1.0 - smoothstep(0.0, 0.5, dist);\n gl_FragColor = vec4(vColor, alpha * 0.8);\n }\n `,\n transparent: true, vertexColors: true,\n blending: THREE.AdditiveBlending, depthWrite: false,\n });\n\n const dropTrailParticles = new THREE.Points(dropTrailGeometry, dropTrailMaterial);\n scene.add(dropTrailParticles);\n\n const dropHeadGeometry = new THREE.BufferGeometry();\n const dropHeadPositions = new Float32Array(dropCount * 3);\n const dropHeadColors = new Float32Array(dropCount * 3);\n const dropHeadSizes = new Float32Array(dropCount);\n for (let i = 0; i < dropCount; i++) {\n dropHeadSizes[i] = (6 + Math.random() * 4) * 0.5;\n }\n\n dropHeadGeometry.setAttribute('position', new THREE.BufferAttribute(dropHeadPositions, 3));\n dropHeadGeometry.setAttribute('color', new THREE.BufferAttribute(dropHeadColors, 3));\n dropHeadGeometry.setAttribute('size', new THREE.BufferAttribute(dropHeadSizes, 1));\n\n const dropHeadMaterial = new THREE.ShaderMaterial({\n vertexShader,\n fragmentShader: `\n varying vec3 vColor;\n void main() {\n float dist = length(gl_PointCoord - vec2(0.5));\n if (dist > 0.5) discard;\n float alpha = 1.0 - smoothstep(0.0, 0.5, dist);\n float glow = exp(-dist * 2.0);\n vec3 finalColor = vColor + glow * 0.8;\n gl_FragColor = vec4(finalColor, alpha);\n }\n `,\n transparent: true, vertexColors: true,\n blending: THREE.AdditiveBlending, depthWrite: false,\n });\n\n const dropHeadParticles = new THREE.Points(dropHeadGeometry, dropHeadMaterial);\n scene.add(dropHeadParticles);\n\n let time = 0;\n let lastSpawnTime = 0;\n\n const getWaveHeight = (x: number, z: number, t: number) =>\n Math.sin(x * 0.05 + t) * 8 + Math.sin(z * 0.08 + t * 0.8) * 5 + Math.sin((x + z) * 0.03 + t * 1.2) * 3;\n\n const activateDrop = (drop: RainDrop) => {\n drop.x = (Math.random() - 0.5) * waveWidth * 0.9;\n drop.z = (Math.random() - 0.5) * waveDepth * 0.7;\n const wh = getWaveHeight(drop.x, drop.z, time);\n drop.y = wh;\n drop.velocity = 0.5 + Math.random() * 0.7;\n drop.maxHeight = wh + 80 + Math.random() * 120;\n drop.active = true;\n drop.opacity = 0.5;\n drop.trail.fill(wh);\n };\n\n const animate = () => {\n time += 0.02;\n const wavePos = particles.geometry.attributes.position.array as Float32Array;\n for (let i = 0; i < particleCount; i++) {\n const i3 = i * 3;\n wavePos[i3 + 1] = getWaveHeight(wavePos[i3], wavePos[i3 + 2], time);\n }\n particles.geometry.attributes.position.needsUpdate = true;\n\n const tPos = dropTrailParticles.geometry.attributes.position.array as Float32Array;\n const tCol = dropTrailParticles.geometry.attributes.color.array as Float32Array;\n const hPos = dropHeadParticles.geometry.attributes.position.array as Float32Array;\n const hCol = dropHeadParticles.geometry.attributes.color.array as Float32Array;\n\n let activeCount = 0;\n const inactiveIndices: number[] = [];\n\n for (let i = 0; i < dropCount; i++) {\n const drop = rainDrops[i];\n if (drop.active) {\n activeCount++;\n for (let j = trailLength - 1; j > 0; j--) drop.trail[j] = drop.trail[j - 1];\n drop.trail[0] = drop.y;\n drop.velocity = Math.max(drop.velocity * 0.995, 0.3);\n drop.y += drop.velocity;\n if (drop.opacity < 1) drop.opacity = Math.min(drop.opacity + 0.05, 1);\n if (drop.y > drop.maxHeight) {\n drop.opacity -= 0.03;\n if (drop.opacity <= 0) {\n drop.active = false; drop.y = -200; drop.trail.fill(-200);\n inactiveIndices.push(i);\n }\n }\n } else {\n inactiveIndices.push(i);\n }\n }\n\n if (time - lastSpawnTime >= 0.1 && inactiveIndices.length > 0) {\n const spawnCount = Math.min(2 + Math.floor(Math.random() * 2), inactiveIndices.length);\n const shuffled = [...inactiveIndices].sort(() => Math.random() - 0.5);\n for (let n = 0; n < spawnCount; n++) activateDrop(rainDrops[shuffled[n]]);\n lastSpawnTime = time;\n }\n\n const targetActive = 20;\n const needActivate = Math.max(3, targetActive - activeCount);\n const remaining = inactiveIndices.filter(i => !rainDrops[i].active);\n if (remaining.length > 0) {\n const shuffled = [...remaining].sort(() => Math.random() - 0.5);\n for (let n = 0; n < Math.min(needActivate, shuffled.length); n++) activateDrop(rainDrops[shuffled[n]]);\n }\n\n for (let i = 0; i < dropCount; i++) {\n if (!rainDrops[i].active && Math.random() < 0.25) activateDrop(rainDrops[i]);\n }\n\n for (let i = 0; i < dropCount; i++) {\n const drop = rainDrops[i];\n const hi3 = i * 3;\n hPos[hi3] = drop.x; hPos[hi3 + 1] = drop.y; hPos[hi3 + 2] = drop.z;\n const brightness = drop.active ? (0.8 + Math.sin(time * 5 + i) * 0.2) : 0;\n hCol[hi3] = 0.5 * brightness * drop.opacity;\n hCol[hi3 + 1] = 1.0 * brightness * drop.opacity;\n hCol[hi3 + 2] = 1.0 * brightness * drop.opacity;\n\n for (let j = 0; j < trailLength; j++) {\n const pi = (i * trailLength + j) * 3;\n tPos[pi] = drop.x; tPos[pi + 1] = drop.trail[j]; tPos[pi + 2] = drop.z;\n const fade = 1 - (j / trailLength);\n tCol[pi] = 0.6 * fade * drop.opacity;\n tCol[pi + 1] = 1.0 * fade * drop.opacity;\n tCol[pi + 2] = 1.0 * fade * drop.opacity;\n }\n }\n\n dropTrailParticles.geometry.attributes.position.needsUpdate = true;\n dropTrailParticles.geometry.attributes.color.needsUpdate = true;\n dropHeadParticles.geometry.attributes.position.needsUpdate = true;\n dropHeadParticles.geometry.attributes.color.needsUpdate = true;\n\n camera.position.x = Math.sin(time * 0.3) * 5;\n camera.lookAt(0, 0, 0);\n renderer.render(scene, camera);\n animationRef.current = requestAnimationFrame(animate);\n };\n\n animate();\n\n const handleResize = () => {\n const w = container.clientWidth;\n const h = container.clientHeight;\n camera.aspect = w / h;\n camera.updateProjectionMatrix();\n renderer.setSize(w, h);\n };\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n if (animationRef.current) cancelAnimationFrame(animationRef.current);\n container.removeChild(renderer.domElement);\n geometry.dispose(); material.dispose();\n bokehGeometry.dispose(); bokehMaterial.dispose();\n dropTrailGeometry.dispose(); dropTrailMaterial.dispose();\n dropHeadGeometry.dispose(); dropHeadMaterial.dispose();\n renderer.dispose();\n };\n }, [background]);\n\n return (\n <div\n ref={containerRef}\n className={className}\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: 1,\n pointerEvents: 'none',\n background,\n ...style,\n }}\n />\n );\n};\n\nexport default ParticleWave;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport Particles, { initParticlesEngine } from '@tsparticles/react';\nimport { loadSlim } from '@tsparticles/slim';\nimport type { Container } from '@tsparticles/engine';\nimport { getThemeById, DEFAULT_THEME_ID } from '../themes';\nimport type { ThemeId } from '../themes/types';\nimport { useParticleThemeOptional } from '../context/ParticleContext';\nimport ParticleWave from './ParticleWave';\n\nexport interface ParticlesBackgroundProps {\n /**\n * Theme ID to display. If used inside a `<ParticleProvider>`,\n * this is optional and the provider's theme will be used.\n */\n theme?: ThemeId | string;\n /** Dark mode toggle — affects particle colors for supported themes */\n isDark?: boolean;\n /** Callback when particles finish loading */\n onLoaded?: (container?: Container) => void;\n /** Custom CSS class */\n className?: string;\n /** Custom inline styles */\n style?: React.CSSProperties;\n}\n\n/**\n * Renders a full-screen particle background.\n *\n * Can be used standalone with props:\n * ```tsx\n * <ParticlesBackground theme=\"starline\" isDark />\n * ```\n *\n * Or inside a `<ParticleProvider>` for shared state:\n * ```tsx\n * <ParticleProvider defaultTheme=\"snow\">\n * <ParticlesBackground />\n * </ParticleProvider>\n * ```\n */\nconst ParticlesBackground: React.FC<ParticlesBackgroundProps> = ({\n theme: themeProp,\n isDark: isDarkProp,\n onLoaded,\n className,\n style,\n}) => {\n const [init, setInit] = useState(false);\n const ctx = useParticleThemeOptional();\n\n const themeId = themeProp ?? ctx?.themeId ?? DEFAULT_THEME_ID;\n const isDark = isDarkProp ?? ctx?.isDark ?? true;\n const theme = getThemeById(themeId);\n\n useEffect(() => {\n initParticlesEngine(async (engine) => {\n await loadSlim(engine);\n }).then(() => {\n setInit(true);\n }).catch(() => {\n setInit(true);\n });\n }, []);\n\n const options = useMemo(() => theme.options(isDark), [theme, isDark]);\n\n if (themeId === 'none') return null;\n\n if (theme.isThreeJS) {\n return (\n <ParticleWave\n background={theme.backgroundGradient || theme.backgroundColor}\n className={className}\n style={style}\n />\n );\n }\n\n if (!init) return null;\n\n return (\n <Particles\n id=\"rpb-tsparticles\"\n key={themeId}\n className={className}\n style={style}\n particlesLoaded={async (container) => onLoaded?.(container)}\n options={options}\n />\n );\n};\n\nexport default ParticlesBackground;\n","import React, { useState } from 'react';\nimport { particleThemes, getThemeById } from '../themes';\nimport { useParticleTheme } from '../context/ParticleContext';\n\nexport interface ThemeSelectorProps {\n /** Position on screen */\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n /** Accent color for active states */\n accentColor?: string;\n}\n\n/**\n * A floating theme selector button + drawer panel.\n * Must be used inside a `<ParticleProvider>`.\n *\n * ```tsx\n * <ParticleProvider>\n * <ParticlesBackground />\n * <ThemeSelector />\n * </ParticleProvider>\n * ```\n */\nconst ThemeSelector: React.FC<ThemeSelectorProps> = ({\n position = 'bottom-right',\n accentColor = '#3b82f6',\n}) => {\n const [open, setOpen] = useState(false);\n const { themeId, setTheme } = useParticleTheme();\n const currentTheme = getThemeById(themeId);\n\n const positionStyles: Record<string, React.CSSProperties> = {\n 'bottom-right': { bottom: 80, right: 16 },\n 'bottom-left': { bottom: 80, left: 16 },\n 'top-right': { top: 80, right: 16 },\n 'top-left': { top: 80, left: 16 },\n };\n\n const drawerSide = position.includes('right') ? 'right' : 'left';\n\n return (\n <>\n {/* Floating trigger button */}\n <button\n onClick={() => setOpen(true)}\n title=\"Theme Settings\"\n style={{\n position: 'fixed',\n ...positionStyles[position],\n zIndex: 9999,\n width: 44,\n height: 44,\n borderRadius: 12,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'rgba(255, 255, 255, 0.7)',\n backdropFilter: 'blur(12px)',\n WebkitBackdropFilter: 'blur(12px)',\n border: '1px solid rgba(255, 255, 255, 0.5)',\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.08)',\n cursor: 'pointer',\n fontSize: 20,\n transition: 'transform 0.3s, box-shadow 0.3s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'scale(1.05) translateY(-2px)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = '';\n }}\n >\n {currentTheme.icon}\n </button>\n\n {/* Backdrop */}\n {open && (\n <div\n onClick={() => setOpen(false)}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 10000,\n background: 'rgba(0, 0, 0, 0.3)',\n transition: 'opacity 0.3s',\n }}\n />\n )}\n\n {/* Drawer panel */}\n <div\n style={{\n position: 'fixed',\n top: 0,\n [drawerSide]: 0,\n width: 320,\n maxWidth: '85vw',\n height: '100vh',\n zIndex: 10001,\n background: '#fff',\n boxShadow: '-4px 0 24px rgba(0, 0, 0, 0.12)',\n transform: open ? 'translateX(0)' : `translateX(${drawerSide === 'right' ? '100%' : '-100%'})`,\n transition: 'transform 0.3s ease',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '16px 20px',\n borderBottom: '1px solid #f0f0f0',\n }}\n >\n <span style={{ fontWeight: 600, fontSize: 16 }}>Particle Theme</span>\n <button\n onClick={() => setOpen(false)}\n style={{\n background: 'none',\n border: 'none',\n fontSize: 20,\n cursor: 'pointer',\n color: '#999',\n padding: 4,\n }}\n >\n ×\n </button>\n </div>\n\n {/* Theme list */}\n <div style={{ padding: 16, display: 'flex', flexDirection: 'column', gap: 12 }}>\n {[...particleThemes, {\n id: 'none',\n name: 'None',\n icon: '\\uD83D\\uDEAB',\n description: 'Disable particle effects',\n }].map((theme) => {\n const isActive = theme.id === themeId;\n return (\n <div\n key={theme.id}\n onClick={() => setTheme(theme.id)}\n style={{\n padding: 16,\n borderRadius: 12,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n transition: 'all 0.2s',\n border: `2px solid ${isActive ? accentColor : 'transparent'}`,\n background: isActive ? `${accentColor}10` : '#f5f5f5',\n }}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.borderColor = '#e0e0e0';\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.borderColor = 'transparent';\n }}\n >\n {/* Icon */}\n <div\n style={{\n width: 48,\n height: 48,\n borderRadius: 12,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 24,\n background: isActive ? accentColor : '#e5e5e5',\n flexShrink: 0,\n }}\n >\n {theme.icon}\n </div>\n\n {/* Text */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: 600,\n fontSize: 14,\n color: isActive ? accentColor : '#1f2937',\n }}\n >\n {theme.name}\n </div>\n <div style={{ fontSize: 12, color: '#9ca3af', marginTop: 2 }}>\n {theme.description}\n </div>\n </div>\n\n {/* Check mark */}\n {isActive && (\n <div\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n background: accentColor,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n {/* Tip */}\n <div style={{ padding: '0 16px 16px', marginTop: 'auto' }}>\n <div\n style={{\n padding: 16,\n background: '#f9fafb',\n borderRadius: 12,\n fontSize: 13,\n color: '#6b7280',\n lineHeight: 1.6,\n }}\n >\n Your theme selection is automatically saved and will be remembered on your next visit.\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default ThemeSelector;\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xdy-npm/react-particle-backgrounds",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A React component library providing multiple beautiful particle background themes with tsparticles and Three.js",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsup",
|
|
20
|
+
"dev": "tsup --watch",
|
|
21
|
+
"lint": "tsc --noEmit",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"react": ">=17.0.0",
|
|
26
|
+
"react-dom": ">=17.0.0"
|
|
27
|
+
},
|
|
28
|
+
"peerDependenciesMeta": {
|
|
29
|
+
"three": {
|
|
30
|
+
"optional": true
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@tsparticles/engine": "^3.9.0",
|
|
35
|
+
"@tsparticles/react": "^3.0.0",
|
|
36
|
+
"@tsparticles/slim": "^3.9.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/react": "^18.2.0",
|
|
40
|
+
"@types/react-dom": "^18.2.0",
|
|
41
|
+
"@types/three": "^0.170.0",
|
|
42
|
+
"react": "^18.2.0",
|
|
43
|
+
"react-dom": "^18.2.0",
|
|
44
|
+
"three": "^0.170.0",
|
|
45
|
+
"tsup": "^8.0.0",
|
|
46
|
+
"typescript": "^5.3.0"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"react",
|
|
50
|
+
"particles",
|
|
51
|
+
"background",
|
|
52
|
+
"tsparticles",
|
|
53
|
+
"three.js",
|
|
54
|
+
"animation",
|
|
55
|
+
"theme",
|
|
56
|
+
"particle-effects"
|
|
57
|
+
],
|
|
58
|
+
"license": "MIT",
|
|
59
|
+
"repository": {
|
|
60
|
+
"type": "git",
|
|
61
|
+
"url": "https://github.com/xiaodingyang/react-particle-backgrounds"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/xiaodingyang/react-particle-backgrounds#readme"
|
|
64
|
+
}
|