partycles 1.1.4 → 1.1.5

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils.ts","../src/animations/confetti.tsx","../src/animations/sparkles.tsx","../src/animations/hearts.tsx","../src/animations/fireworks.tsx","../src/animations/bubbles.tsx","../src/animations/stars.tsx","../src/animations/snow.tsx","../src/animations/emoji.tsx","../src/animations/coins.tsx","../src/animations/petals.tsx","../src/animations/aurora.tsx","../src/animations/fireflies.tsx","../src/animations/paint.tsx","../src/animations/balloons.tsx","../src/animations/galaxy.tsx","../src/animations/glitch.tsx","../src/animations/magicdust.tsx","../src/animations/crystals.tsx","../src/animations/leaves.tsx","../src/animations/index.ts","../src/mobileOptimizations.ts","../src/useReward.tsx"],"sourcesContent":["import { Particle } from './types';\n\nexport const randomInRange = (min: number, max: number): number => {\n return Math.random() * (max - min) + min;\n};\n\nexport const degreesToRadians = (degrees: number): number => {\n return (degrees * Math.PI) / 180;\n};\n\nexport const generateId = (): string => {\n return Math.random().toString(36).substring(2, 9);\n};\n\nexport const getRandomColor = (colors: string[]): string => {\n return (\n colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#ffffff'\n );\n};\n\nexport const createParticleStyle = (\n particle: Particle,\n containerRect: DOMRect\n): React.CSSProperties => {\n return {\n position: 'absolute',\n left: `${particle.x - containerRect.left}px`,\n top: `${particle.y - containerRect.top}px`,\n transform: `rotate(${particle.rotation}deg)`,\n opacity: particle.opacity,\n pointerEvents: 'none',\n transition: 'none',\n willChange: 'transform, opacity',\n };\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst defaultColors = [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722',\n];\n\nexport const createConfettiParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 50,\n startVelocity = 20,\n colors = defaultColors,\n elementSize = 20,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const color = getRandomColor(colors);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 30,\n life: config.lifetime || 150,\n opacity: 1,\n size: randomInRange(elementSize * 0.7, elementSize * 1.5),\n rotation: randomInRange(0, 360),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderConfettiParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 0.6}px`,\n backgroundColor: particle.color,\n borderRadius: '3px',\n boxShadow: '0 2px 4px rgba(0,0,0,0.2)',\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nexport const createSparkleParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 35,\n spread = 120,\n startVelocity = 15,\n elementSize = 25,\n colors = ['#FFD700', '#FFFFFF'],\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const velocityScale = startVelocity / 45; // Scale based on default\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread, spread),\n y: origin.y + randomInRange(-spread, spread),\n vx: randomInRange(-3, 3) * velocityScale,\n vy: randomInRange(-3, 3) * velocityScale,\n life: config.lifetime || 120,\n opacity: 0,\n size: randomInRange(elementSize * 0.4, elementSize * 1.2),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderSparkleParticle = (particle: Particle): React.ReactNode => {\n const scale = particle.opacity;\n\n return (\n <svg\n key={particle.id}\n width={particle.size}\n height={particle.size}\n viewBox=\"0 0 24 24\"\n style={{\n transform: `scale(${scale}) rotate(${particle.rotation}deg)`,\n filter: 'drop-shadow(0 0 6px rgba(255, 215, 0, 0.8))',\n }}\n >\n <path\n d=\"M12 0L14.59 8.41L23 11L14.59 13.59L12 22L9.41 13.59L1 11L9.41 8.41L12 0Z\"\n fill={particle.color}\n />\n </svg>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst heartColors = ['#ff1744', '#e91e63', '#ff4569', '#ff6b6b', '#ee5a70'];\n\nexport const createHeartParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 25,\n startVelocity = 12,\n colors = heartColors,\n elementSize = 30,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-45, -135);\n const velocity = randomInRange(startVelocity * 0.7, startVelocity * 1.3);\n const horizontalDrift = randomInRange(-2, 2);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-10, 10),\n y: origin.y,\n vx: Math.cos((angle * Math.PI) / 180) * velocity + horizontalDrift,\n vy: Math.sin((angle * Math.PI) / 180) * velocity,\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize * 1.2),\n rotation: randomInRange(-20, 20),\n color: getRandomColor(colors),\n });\n }\n\n return particles;\n};\n\nexport const renderHeartParticle = (particle: Particle): React.ReactNode => {\n return (\n <svg\n key={particle.id}\n width={particle.size}\n height={particle.size}\n viewBox=\"0 0 24 24\"\n fill={particle.color}\n style={{\n filter: `drop-shadow(0 0 ${particle.size * 0.15}px ${particle.color})`,\n }}\n >\n <path d=\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\" />\n </svg>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst fireworkColors = [\n '#ff0000',\n '#00ff00',\n '#0000ff',\n '#ffff00',\n '#ff00ff',\n '#00ffff',\n '#ffffff',\n];\n\nexport const createFireworkParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 60,\n startVelocity = 25,\n colors = fireworkColors,\n elementSize = 8,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (360 / particleCount) * i + randomInRange(-5, 5);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity * 1.2);\n const color = getRandomColor(colors);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 10,\n life: config.lifetime || 140,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize * 1.4),\n rotation: 0,\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderFireworkParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n backgroundColor: '#ffffff',\n borderRadius: '50%',\n boxShadow: `\n 0 0 ${particle.size}px ${particle.color},\n 0 0 ${particle.size * 2}px ${particle.color},\n 0 0 ${particle.size * 3}px ${particle.color},\n 0 0 ${particle.size * 4}px ${particle.color}\n `,\n background: `radial-gradient(circle, #ffffff 0%, ${particle.color} 40%, transparent 70%)`,\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst bubbleColors = [\n 'rgba(66, 165, 245, 0.4)',\n 'rgba(41, 182, 246, 0.4)',\n 'rgba(38, 198, 218, 0.4)',\n 'rgba(129, 212, 250, 0.4)',\n];\n\nexport const createBubbleParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n spread = 80,\n startVelocity = 8,\n colors = bubbleColors,\n elementSize = 40,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread, spread),\n y: origin.y,\n vx: randomInRange(-3, 3),\n vy: -randomInRange(startVelocity * 0.7, startVelocity * 1.2),\n life: config.lifetime || 160,\n opacity: 0.7,\n size: randomInRange(elementSize * 0.4, elementSize * 1.2),\n rotation: 0,\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderBubbleParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n backgroundColor: particle.color,\n borderRadius: '50%',\n border: '2px solid rgba(255, 255, 255, 0.6)',\n backgroundImage:\n 'radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.8), transparent)',\n boxShadow: `\n inset 0 0 ${particle.size * 0.3}px rgba(255, 255, 255, 0.4),\n 0 0 ${particle.size * 0.5}px ${particle.color}\n `,\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst starColors = ['#FFD700', '#FFA500', '#FF6347', '#FFE4B5'];\n\nexport const createStarParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n startVelocity = 18,\n colors = starColors,\n elementSize = 30,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos((angle * Math.PI) / 180) * velocity,\n vy: Math.sin((angle * Math.PI) / 180) * velocity - 15,\n life: config.lifetime || 150,\n opacity: 1,\n size: randomInRange(elementSize * 0.5, elementSize * 1.3),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderStarParticle = (particle: Particle): React.ReactNode => {\n return (\n <svg\n key={particle.id}\n width={particle.size}\n height={particle.size}\n viewBox=\"0 0 24 24\"\n fill={particle.color}\n style={{\n filter: `drop-shadow(0 0 ${particle.size * 0.2}px ${particle.color})`,\n }}\n >\n <path d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" />\n </svg>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst snowColors = ['#FFFFFF', '#F0F8FF', '#F5F5F5', '#FAFAFA'];\n\nexport const createSnowParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 50,\n spread = 200,\n startVelocity = 3,\n colors = snowColors,\n elementSize = 15,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Spread particles across the width, starting from above viewport\n const x = origin.x + randomInRange(-spread * 2, spread * 2);\n const y = origin.y - randomInRange(100, 300); // Start above the trigger point\n\n particles.push({\n id: generateId(),\n x,\n y,\n vx: randomInRange(-0.5, 0.5), // Gentle horizontal drift\n vy: randomInRange(startVelocity * 0.5, startVelocity * 1.2),\n life: config.lifetime || 300, // Longer lifetime for snow\n opacity: randomInRange(0.4, 0.9),\n size: randomInRange(elementSize * 0.3, elementSize),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderSnowParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n backgroundColor: particle.color,\n borderRadius: '50%',\n boxShadow: `\n 0 0 ${particle.size * 0.5}px rgba(255, 255, 255, 0.8),\n inset 0 0 ${particle.size * 0.3}px rgba(255, 255, 255, 0.5)\n `,\n filter: 'blur(0.5px)',\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\n// Default emoji sets for different moods\nconst defaultEmojis = ['🎉', '🎊', '🎈', '🎁', '✨', '🌟', '💫', '🎯'];\nconst celebrationEmojis = ['🎉', '🎊', '🥳', '🎈', '🎁', '🍾', '🥂', '🎆'];\nconst loveEmojis = ['❤️', '💕', '💖', '💝', '💗', '💓', '💞', '💘'];\nconst happyEmojis = ['😊', '😄', '🥰', '😍', '🤗', '😘', '😁', '🤩'];\nconst natureEmojis = ['🌸', '🌺', '🌻', '🌹', '🌷', '🌼', '🍀', '🌿'];\nconst foodEmojis = ['🍕', '🍔', '🍟', '🌮', '🍿', '🍩', '🍪', '🧁'];\n\nexport interface EmojiAnimationConfig extends AnimationConfig {\n emojis?: string[];\n}\n\nexport const createEmojiParticles = (\n origin: { x: number; y: number },\n config: EmojiAnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n spread = 100,\n startVelocity = 15,\n elementSize = 35,\n emojis = defaultEmojis,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-45, -135);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity * 1.2);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread, spread),\n y: origin.y,\n vx: Math.cos((angle * Math.PI) / 180) * velocity,\n vy: Math.sin((angle * Math.PI) / 180) * velocity,\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.7, elementSize * 1.3),\n rotation: randomInRange(-45, 45),\n color: '', // Not used for emojis\n element: emojis[Math.floor(Math.random() * emojis.length)],\n });\n }\n\n return particles;\n};\n\nexport const renderEmojiParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n lineHeight: 1,\n userSelect: 'none',\n filter: particle.opacity < 0.5 ? 'blur(1px)' : undefined,\n }}\n >\n {particle.element}\n </div>\n );\n};\n\n// Export preset emoji sets for easy use\nexport const emojiPresets = {\n celebration: celebrationEmojis,\n love: loveEmojis,\n happy: happyEmojis,\n nature: natureEmojis,\n food: foodEmojis,\n default: defaultEmojis,\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst coinColors = ['#FFD700', '#FFA500', '#FFB300', '#FFC700'];\n\nexport const createCoinParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n spread = 70,\n startVelocity = 25,\n colors = coinColors,\n elementSize = 25,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.sin(angle) * velocity,\n vy: -Math.cos(angle) * velocity,\n life: config.lifetime || 120,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderCoinParticle = (particle: Particle): React.ReactNode => {\n const spinSpeed = 8; // Degrees per frame\n const currentRotation = particle.rotation + (120 - particle.life) * spinSpeed;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n background: `radial-gradient(ellipse at 30% 30%, ${particle.color}, #B8860B)`,\n borderRadius: '50%',\n transform: `rotateY(${currentRotation}deg)`,\n transformStyle: 'preserve-3d',\n boxShadow: `\n inset -2px -2px 4px rgba(0, 0, 0, 0.3),\n inset 2px 2px 4px rgba(255, 255, 255, 0.5),\n 0 2px 4px rgba(0, 0, 0, 0.3)\n `,\n border: `1px solid ${particle.color}`,\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {/* Dollar sign */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: `${particle.size * 0.5}px`,\n fontWeight: 'bold',\n color: '#B8860B',\n textShadow: '1px 1px 1px rgba(0, 0, 0, 0.3)',\n fontFamily: 'Arial, sans-serif',\n }}\n >\n $\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst petalColors = ['#FFB6C1', '#FFC0CB', '#FF69B4', '#FF1493', '#FFF0F5'];\n\nexport const createPetalParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n spread = 100,\n startVelocity = 8,\n colors = petalColors,\n elementSize = 20,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.3, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-20, 20),\n y: origin.y - randomInRange(0, 30),\n vx: Math.sin(angle) * velocity,\n vy: randomInRange(2, 5), // Gentle fall\n life: config.lifetime || 200,\n opacity: randomInRange(0.7, 1),\n size: randomInRange(elementSize * 0.7, elementSize * 1.3),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderPetalParticle = (particle: Particle): React.ReactNode => {\n // Create spiral motion\n const spiralPhase = (200 - particle.life) * 0.1;\n const spiralX = Math.sin(spiralPhase) * 15;\n const wobble = Math.sin(particle.life * 0.1) * 10;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.2}px`,\n position: 'relative',\n transform: `translateX(${spiralX}px) rotate(${particle.rotation + wobble}deg)`,\n transformStyle: 'preserve-3d',\n }}\n >\n {/* Petal shape */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `radial-gradient(ellipse at 50% 30%, ${particle.color}, ${particle.color}DD)`,\n borderRadius: '0% 100% 0% 100%',\n position: 'absolute',\n boxShadow: `\n inset 1px 1px 3px rgba(255, 255, 255, 0.5),\n 0 2px 4px rgba(0, 0, 0, 0.1)\n `,\n border: `1px solid ${particle.color}CC`,\n transform: 'rotateY(45deg)',\n }}\n />\n {/* Second petal for depth */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `radial-gradient(ellipse at 50% 30%, ${particle.color}EE, ${particle.color}BB)`,\n borderRadius: '0% 100% 0% 100%',\n position: 'absolute',\n transform: 'rotate(45deg) scale(0.9)',\n opacity: 0.8,\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst auroraColors = [\n '#00ff88',\n '#00ffaa',\n '#00ddff',\n '#0099ff',\n '#0066ff',\n '#9933ff',\n '#ff00ff',\n];\n\nexport const createAuroraParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n spread = 200,\n startVelocity = 3,\n colors = auroraColors,\n elementSize = 100,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (i / particleCount) * spread - spread / 2;\n const offset = randomInRange(-30, 30);\n\n particles.push({\n id: generateId(),\n x: origin.x + angle + offset,\n y: origin.y,\n vx: randomInRange(-1, 1),\n vy: -startVelocity,\n life: config.lifetime || 250,\n opacity: 0,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(-15, 15),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderAuroraParticle = (particle: Particle): React.ReactNode => {\n // Create flowing wave motion\n const wave = Math.sin(particle.life * 0.05) * 20;\n const fadeIn = Math.min(1, (250 - particle.life) / 50);\n const fadeOut = particle.life / 250;\n const opacity = Math.min(fadeIn, fadeOut) * 0.4;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 0.3}px`,\n position: 'relative',\n transform: `translateX(${wave}px) rotate(${particle.rotation}deg)`,\n filter: 'blur(2px)',\n }}\n >\n {/* Aurora ribbon */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `linear-gradient(90deg, transparent, ${particle.color}, transparent)`,\n borderRadius: '50%',\n opacity,\n boxShadow: `0 0 ${particle.size * 0.5}px ${particle.color}`,\n animation: 'shimmer 2s infinite',\n }}\n />\n {/* Secondary layer for depth */}\n <div\n style={{\n position: 'absolute',\n top: '20%',\n left: '10%',\n width: '80%',\n height: '60%',\n background: `radial-gradient(ellipse at center, ${particle.color}44, transparent)`,\n borderRadius: '50%',\n opacity: opacity * 0.5,\n filter: 'blur(4px)',\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst fireflyColors = ['#FFFF99', '#FFFFCC', '#FFFF66', '#FFFFAA'];\n\nexport const createFireflyParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 20,\n spread = 150,\n startVelocity = 2,\n colors = fireflyColors,\n elementSize = 8,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, 360) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.3, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread / 2, spread / 2),\n y: origin.y + randomInRange(-20, 20),\n vx: Math.cos(angle) * velocity,\n vy: Math.sin(angle) * velocity * 0.5, // More horizontal movement\n life: config.lifetime || 300,\n opacity: 0,\n size: randomInRange(elementSize * 0.6, elementSize),\n rotation: randomInRange(0, 360), // Used for blink timing\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderFireflyParticle = (particle: Particle): React.ReactNode => {\n // Create organic floating motion\n const floatX = Math.sin(particle.life * 0.02 + particle.rotation) * 15;\n const floatY = Math.cos(particle.life * 0.03 + particle.rotation) * 10;\n\n // Blinking effect - each firefly has its own rhythm based on rotation\n const blinkCycle = Math.sin(particle.life * 0.1 + particle.rotation * 0.1);\n const isBlinking = blinkCycle > 0.3;\n const glowIntensity = isBlinking ? 1 : 0.1;\n\n // Fade in/out\n const fadeIn = Math.min(1, (300 - particle.life) / 30);\n const fadeOut = particle.life / 300;\n const baseFade = Math.min(fadeIn, fadeOut);\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `translate(${floatX}px, ${floatY}px)`,\n }}\n >\n {/* Firefly body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: particle.color,\n borderRadius: '50%',\n opacity: baseFade * glowIntensity,\n boxShadow: `\n 0 0 ${particle.size}px ${particle.color},\n 0 0 ${particle.size * 2}px ${particle.color},\n 0 0 ${particle.size * 3}px ${particle.color}88\n `,\n transition: 'opacity 0.3s ease',\n }}\n />\n {/* Glow aura */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${particle.size * 4}px`,\n height: `${particle.size * 4}px`,\n background: `radial-gradient(circle, ${particle.color}44 0%, transparent 70%)`,\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n opacity: baseFade * glowIntensity * 0.5,\n transition: 'opacity 0.3s ease',\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst paintColors = [\n '#FF006E',\n '#FB5607',\n '#FFBE0B',\n '#8338EC',\n '#3A86FF',\n '#06FFB4',\n];\n\nexport const createPaintParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 25,\n spread = 120,\n startVelocity = 35,\n colors = paintColors,\n elementSize = 30,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const isMainSplat = i < 5; // First few particles are bigger splats\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.sin(angle) * velocity * (isMainSplat ? 0.3 : 1),\n vy: -Math.cos(angle) * velocity * 0.7 + (isMainSplat ? 5 : 0),\n life: config.lifetime || 150,\n opacity: 1,\n size: isMainSplat\n ? randomInRange(elementSize * 1.5, elementSize * 2.5)\n : randomInRange(elementSize * 0.3, elementSize),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderPaintParticle = (particle: Particle): React.ReactNode => {\n // Paint splatter gets more stretched as it flies\n const stretch = 1 + (Math.abs(particle.vx) + Math.abs(particle.vy)) * 0.01;\n const squish = 1 / stretch;\n\n // Drip effect for some particles\n const isDripping = particle.size > 15 && particle.rotation > 180;\n const dripLength = isDripping ? particle.size * 0.5 : 0;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `\n scaleX(${stretch}) \n scaleY(${squish}) \n rotate(${(Math.atan2(particle.vy, particle.vx) * 180) / Math.PI}deg)\n `,\n }}\n >\n {/* Main paint splat */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: particle.color,\n borderRadius: '50%',\n position: 'relative',\n boxShadow: `inset -2px -2px 4px rgba(0,0,0,0.2)`,\n }}\n >\n {/* Splatter details */}\n <div\n style={{\n position: 'absolute',\n top: '20%',\n left: '20%',\n width: '30%',\n height: '30%',\n background: particle.color,\n borderRadius: '50%',\n opacity: 0.8,\n transform: `translate(${randomInRange(-5, 5)}px, ${randomInRange(-5, 5)}px)`,\n }}\n />\n <div\n style={{\n position: 'absolute',\n bottom: '15%',\n right: '15%',\n width: '25%',\n height: '25%',\n background: particle.color,\n borderRadius: '50%',\n opacity: 0.7,\n }}\n />\n </div>\n\n {/* Paint drip */}\n {isDripping && (\n <div\n style={{\n position: 'absolute',\n bottom: `-${dripLength}px`,\n left: '40%',\n width: '20%',\n height: `${dripLength}px`,\n background: particle.color,\n borderRadius: '0 0 50% 50%',\n opacity: 0.9,\n }}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst balloonColors = [\n '#FF006E',\n '#FB5607',\n '#FFBE0B',\n '#8338EC',\n '#3A86FF',\n '#06FFB4',\n '#FF4081',\n];\n\nexport const createBalloonParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n spread = 80,\n startVelocity = 10,\n colors = balloonColors,\n elementSize = 35,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.7, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread * 0.8, spread * 0.8), // Spread balloons out more\n y: origin.y + randomInRange(-10, 30),\n vx: Math.sin(angle) * velocity * 0.3 + randomInRange(-1, 1), // Add horizontal drift\n vy: -velocity * 0.4, // Balloons float up slowly\n life: config.lifetime || 250,\n opacity: 0.9,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(-10, 10),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderBalloonParticle = (particle: Particle): React.ReactNode => {\n // Gentle swaying motion\n const sway = Math.sin(particle.life * 0.03) * 15;\n const bob = Math.sin(particle.life * 0.05) * 5;\n\n // Fade out near the end\n const fadeOut = particle.life > 50 ? 1 : particle.life / 50;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.2}px`,\n position: 'relative',\n transform: `\n translateX(${sway}px) \n translateY(${bob}px)\n rotate(${particle.rotation + sway * 0.2}deg)\n `,\n opacity: particle.opacity * fadeOut,\n }}\n >\n {/* Balloon body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `radial-gradient(circle at 30% 30%, ${particle.color}ee, ${particle.color})`,\n borderRadius: '50% 50% 50% 50% / 60% 60% 40% 40%',\n position: 'relative',\n boxShadow: `\n inset -5px -5px 10px rgba(0,0,0,0.2),\n 0 4px 8px rgba(0,0,0,0.2)\n `,\n }}\n >\n {/* Highlight */}\n <div\n style={{\n position: 'absolute',\n top: '15%',\n left: '20%',\n width: '25%',\n height: '30%',\n background:\n 'radial-gradient(circle, rgba(255,255,255,0.8) 0%, transparent 70%)',\n borderRadius: '50%',\n transform: 'rotate(-20deg)',\n }}\n />\n\n {/* Balloon knot */}\n <div\n style={{\n position: 'absolute',\n bottom: '-5px',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '0',\n height: '0',\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: `8px solid ${particle.color}`,\n }}\n />\n </div>\n\n {/* String */}\n <svg\n style={{\n position: 'absolute',\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '2px',\n height: `${particle.size * 2}px`,\n opacity: 0.6,\n }}\n >\n <path\n d={`M1 0 Q ${1 + Math.sin(particle.life * 0.1) * 3} ${particle.size} 1 ${particle.size * 2}`}\n stroke={particle.color}\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity=\"0.4\"\n />\n </svg>\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst galaxyColors = [\n '#FFFFFF',\n '#FFF9C4',\n '#BBDEFB',\n '#C5CAE9',\n '#D1C4E9',\n '#FFE082',\n '#FFCCBC',\n];\n\nexport const createGalaxyParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 60,\n spread = 200,\n startVelocity = 15,\n colors = galaxyColors,\n elementSize = 8,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Create spiral distribution\n const progress = i / particleCount;\n const spiralAngle = progress * Math.PI * 4; // 2 full rotations\n const radius = progress * spread;\n\n // Add some randomness to make it look natural\n const angleOffset = randomInRange(-0.3, 0.3);\n const radiusOffset = randomInRange(-10, 10);\n\n const finalAngle = spiralAngle + angleOffset;\n const finalRadius = radius + radiusOffset;\n\n // Position based on spiral\n const offsetX = Math.cos(finalAngle) * finalRadius;\n const offsetY = Math.sin(finalAngle) * finalRadius;\n\n // Velocity follows the spiral tangent\n const tangentAngle = finalAngle + Math.PI / 2;\n const speed = startVelocity * (1 - progress * 0.5); // Outer stars move slower\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(tangentAngle) * speed * 0.3 + offsetX * 0.02,\n vy: Math.sin(tangentAngle) * speed * 0.3 + offsetY * 0.02,\n life: config.lifetime || 250,\n opacity: 0,\n size:\n randomInRange(elementSize * 0.3, elementSize) * (1 - progress * 0.5), // Smaller at edges\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderGalaxyParticle = (particle: Particle): React.ReactNode => {\n // Particles slowly rotate around center while expanding\n const age = (250 - particle.life) / 250;\n const expansionRate = 1 + age * 0.5;\n\n // Fade in quickly, fade out slowly\n const fadeIn = Math.min(1, (250 - particle.life) / 30);\n const fadeOut = particle.life / 250;\n const opacity = Math.min(fadeIn, fadeOut);\n\n // Twinkle effect\n const twinkle = Math.sin(particle.life * 0.2 + particle.rotation) * 0.3 + 0.7;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `scale(${expansionRate})`,\n opacity: opacity * twinkle,\n }}\n >\n {/* Star core */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: particle.color,\n borderRadius: '50%',\n boxShadow: `\n 0 0 ${particle.size}px ${particle.color},\n 0 0 ${particle.size * 2}px ${particle.color}88,\n 0 0 ${particle.size * 3}px ${particle.color}44\n `,\n position: 'relative',\n }}\n >\n {/* Star spikes */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${particle.size * 3}px`,\n height: '1px',\n background: `linear-gradient(90deg, transparent, ${particle.color}, transparent)`,\n transform: `translate(-50%, -50%) rotate(${particle.rotation}deg)`,\n opacity: twinkle,\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: '1px',\n height: `${particle.size * 3}px`,\n background: `linear-gradient(180deg, transparent, ${particle.color}, transparent)`,\n transform: `translate(-50%, -50%) rotate(${particle.rotation}deg)`,\n opacity: twinkle,\n }}\n />\n </div>\n\n {/* Nebula dust for larger stars */}\n {particle.size > 5 && (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${particle.size * 6}px`,\n height: `${particle.size * 6}px`,\n background: `radial-gradient(circle, ${particle.color}22 0%, transparent 70%)`,\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n opacity: opacity * 0.3,\n filter: 'blur(3px)',\n }}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nexport const createGlitchParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const { particleCount = 20, elementSize = 200 } = config;\n\n const particles: Particle[] = [];\n const channels = ['r', 'g', 'b'];\n\n for (let i = 0; i < particleCount; i++) {\n const isHorizontal = Math.random() > 0.3;\n const channelIndex = i % 3;\n const channel = channels[channelIndex];\n\n // Encode all data in rotation:\n // bits 0-1: channel (0=r, 1=g, 2=b)\n // bit 2: isHorizontal (0=false, 1=true)\n // bits 3-10: width (0-255)\n // bits 11-18: height (0-255)\n // bits 19-24: glitchOffset + 32 (to make positive)\n const width = isHorizontal ? randomInRange(50, 200) : randomInRange(2, 8);\n const height = isHorizontal ? randomInRange(2, 8) : randomInRange(50, 200);\n const glitchOffset = randomInRange(-20, 20);\n\n const encodedData =\n channelIndex +\n (isHorizontal ? 4 : 0) +\n (Math.floor(width) << 3) +\n (Math.floor(height) << 11) +\n ((glitchOffset + 32) << 19);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-elementSize / 2, elementSize / 2),\n y: origin.y + randomInRange(-elementSize / 2, elementSize / 2),\n vx: randomInRange(-50, 50),\n vy: randomInRange(-30, 30),\n life: config.lifetime || 150,\n opacity: randomInRange(0.3, 1),\n size: randomInRange(5, 20), // Store distortionAmount\n rotation: encodedData,\n color:\n channel === 'r' ? '#ff0000' : channel === 'g' ? '#00ff00' : '#0000ff',\n });\n }\n\n return particles;\n};\n\nexport const renderGlitchParticle = (particle: Particle): React.ReactNode => {\n // Decode data from rotation\n const channelIndex = particle.rotation & 3;\n const width = (particle.rotation >> 3) & 255;\n const height = (particle.rotation >> 11) & 255;\n const glitchOffset = ((particle.rotation >> 19) & 63) - 32;\n\n const channel = ['r', 'g', 'b'][channelIndex];\n const distortionAmount = particle.size;\n\n const colors = {\n r: channel === 'r' ? 255 : 0,\n g: channel === 'g' ? 255 : 0,\n b: channel === 'b' ? 255 : 0,\n };\n\n const mixBlendMode =\n channel === 'r' ? 'screen' : channel === 'g' ? 'multiply' : 'difference';\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${width}px`,\n height: `${height}px`,\n backgroundColor: `rgba(${colors.r}, ${colors.g}, ${colors.b}, ${particle.opacity})`,\n mixBlendMode,\n filter: `blur(${randomInRange(0, 2)}px)`,\n boxShadow: `${glitchOffset}px 0 ${distortionAmount}px rgba(${colors.r}, ${colors.g}, ${colors.b}, ${particle.opacity * 0.5})`,\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst defaultColors = [\n '#9C27B0',\n '#E91E63',\n '#FF00FF',\n '#00FFFF',\n '#FFD700',\n '#FF69B4',\n '#DA70D6',\n '#9370DB',\n];\n\nexport const createMagicDustParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n startVelocity = 8,\n colors = defaultColors,\n elementSize = 12,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Create particles in a circular pattern with some randomness\n const angle = (i / particleCount) * 360 + randomInRange(-30, 30);\n const velocity = randomInRange(startVelocity * 0.3, startVelocity);\n const color = getRandomColor(colors);\n\n // Add some particles that trail behind cursor movement\n const offsetAngle = randomInRange(0, 360);\n const offsetDistance = randomInRange(0, 30);\n\n particles.push({\n id: generateId(),\n x: origin.x + Math.cos(degreesToRadians(offsetAngle)) * offsetDistance,\n y: origin.y + Math.sin(degreesToRadians(offsetAngle)) * offsetDistance,\n vx: Math.cos(degreesToRadians(angle)) * velocity + randomInRange(-2, 2),\n vy: Math.sin(degreesToRadians(angle)) * velocity + randomInRange(-2, 2),\n life: config.lifetime || 120,\n opacity: randomInRange(0.4, 1),\n size: randomInRange(elementSize * 0.3, elementSize),\n rotation: randomInRange(0, 360),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderMagicDustParticle = (\n particle: Particle\n): React.ReactNode => {\n const sparkleSize = particle.size * 0.7;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n }}\n >\n {/* Central glow */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n backgroundColor: particle.color,\n borderRadius: '50%',\n boxShadow: `0 0 ${particle.size}px ${particle.color}, 0 0 ${particle.size * 2}px ${particle.color}`,\n filter: 'blur(1px)',\n }}\n />\n {/* Sparkle effect */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${sparkleSize}px`,\n height: `${sparkleSize}px`,\n transform: `translate(-50%, -50%) rotate(${particle.rotation}deg)`,\n }}\n >\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '2px',\n backgroundColor: 'white',\n top: '50%',\n left: '0',\n transform: 'translateY(-50%)',\n boxShadow: '0 0 4px white',\n }}\n />\n <div\n style={{\n position: 'absolute',\n width: '2px',\n height: '100%',\n backgroundColor: 'white',\n left: '50%',\n top: '0',\n transform: 'translateX(-50%)',\n boxShadow: '0 0 4px white',\n }}\n />\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst defaultColors = [\n '#FF1493',\n '#00CED1',\n '#FFD700',\n '#FF69B4',\n '#7B68EE',\n '#00FA9A',\n '#FF6347',\n '#4169E1',\n];\n\nexport const createCrystalParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n startVelocity = 15,\n colors = defaultColors,\n elementSize = 25,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Crystals explode outward and fall with gravity\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const color = getRandomColor(colors);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 10,\n life: config.lifetime || 150,\n opacity: randomInRange(0.7, 1),\n size: randomInRange(elementSize * 0.6, elementSize),\n rotation: randomInRange(0, 360),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderCrystalParticle = (particle: Particle): React.ReactNode => {\n // Create rainbow refraction effect\n const hue = (Date.now() * 0.5 + particle.x + particle.y) % 360;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.5}px`,\n position: 'relative',\n transform: `rotate(${particle.rotation}deg)`,\n }}\n >\n {/* Crystal shape with gradient */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: `linear-gradient(135deg, ${particle.color}, ${particle.color}88, transparent)`,\n clipPath: 'polygon(50% 0%, 100% 40%, 75% 100%, 25% 100%, 0% 40%)',\n boxShadow: `0 0 ${particle.size}px ${particle.color}44`,\n }}\n />\n\n {/* Inner facets */}\n <div\n style={{\n position: 'absolute',\n width: '80%',\n height: '80%',\n top: '10%',\n left: '10%',\n background: `linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.4), transparent)`,\n clipPath: 'polygon(50% 10%, 90% 45%, 65% 90%, 35% 90%, 10% 45%)',\n }}\n />\n\n {/* Rainbow refraction overlay */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: `linear-gradient(${hue}deg, \n hsla(${hue}, 100%, 50%, 0.3),\n hsla(${(hue + 60) % 360}, 100%, 50%, 0.3),\n hsla(${(hue + 120) % 360}, 100%, 50%, 0.3)\n )`,\n clipPath: 'polygon(50% 0%, 100% 40%, 75% 100%, 25% 100%, 0% 40%)',\n mixBlendMode: 'screen',\n }}\n />\n\n {/* Shine effect */}\n <div\n style={{\n position: 'absolute',\n width: '30%',\n height: '30%',\n top: '20%',\n left: '35%',\n background:\n 'radial-gradient(circle, rgba(255, 255, 255, 0.8), transparent)',\n borderRadius: '50%',\n filter: 'blur(2px)',\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = [\n '#D2691E',\n '#CD853F',\n '#8B4513',\n '#A0522D',\n '#FF8C00',\n '#FF6347',\n];\n\nexport const createLeafParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 10,\n colors = defaultColors,\n elementSize = 25,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-100, 100),\n y: origin.y + randomInRange(-50, 0),\n vx: randomInRange(-1, 1),\n vy: randomInRange(0.5, 2),\n life: config.lifetime || 300,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize),\n // Encode tumble phase (0-360), sway phase (0-360), and sway amount (20-40) + rotation speed (-3 to 3)\n rotation:\n Math.floor(randomInRange(0, 360)) +\n Math.floor(randomInRange(0, 360)) * 1000 +\n Math.floor(randomInRange(20, 40)) * 1000000 +\n (Math.floor(randomInRange(-3, 3)) + 3) * 100000000,\n color: getRandomColor(colors),\n });\n }\n\n return particles;\n};\n\nexport const renderLeafParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const tumblePhase = particle.rotation % 1000;\n const swayPhase = Math.floor((particle.rotation % 1000000) / 1000);\n const swayAmount = Math.floor((particle.rotation % 100000000) / 1000000);\n const rotationSpeed = Math.floor(particle.rotation / 100000000) - 3;\n\n // Calculate tumbling and swaying\n const tumble =\n Math.sin(((Date.now() * 0.002 + tumblePhase) * Math.PI) / 180) * 30;\n const swayX =\n Math.sin(((Date.now() * 0.001 + swayPhase) * Math.PI) / 180) * swayAmount;\n const rotation = (Date.now() * rotationSpeed * 0.01 + tumble) % 360;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `translateX(${swayX}px) rotate(${rotation}deg)`,\n }}\n >\n <svg\n width={particle.size}\n height={particle.size}\n viewBox={`-${particle.size / 2} -${particle.size / 2} ${particle.size} ${particle.size}`}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n {/* Leaf shape */}\n <path\n d={`\n M 0,-${particle.size / 2}\n C -${particle.size / 3},-${particle.size / 3} -${particle.size / 3},${particle.size / 3} 0,${particle.size / 2}\n C ${particle.size / 3},${particle.size / 3} ${particle.size / 3},-${particle.size / 3} 0,-${particle.size / 2}\n `}\n fill={particle.color}\n opacity=\"0.9\"\n />\n\n {/* Leaf vein */}\n <line\n x1=\"0\"\n y1={-particle.size / 2}\n x2=\"0\"\n y2={particle.size / 2}\n stroke=\"#8B4513\"\n strokeWidth=\"1\"\n opacity=\"0.5\"\n />\n\n {/* Side veins */}\n <line\n x1=\"0\"\n y1={-particle.size / 4}\n x2={-particle.size / 4}\n y2={-particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n <line\n x1=\"0\"\n y1={-particle.size / 4}\n x2={particle.size / 4}\n y2={-particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n <line\n x1=\"0\"\n y1={particle.size / 4}\n x2={-particle.size / 4}\n y2={particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n <line\n x1=\"0\"\n y1={particle.size / 4}\n x2={particle.size / 4}\n y2={particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n </svg>\n </div>\n );\n};\n","import { AnimationType, AnimationConfig, Particle } from '../types';\nimport { createConfettiParticles, renderConfettiParticle } from './confetti';\nimport { createSparkleParticles, renderSparkleParticle } from './sparkles';\nimport { createHeartParticles, renderHeartParticle } from './hearts';\nimport { createFireworkParticles, renderFireworkParticle } from './fireworks';\nimport { createBubbleParticles, renderBubbleParticle } from './bubbles';\nimport { createStarParticles, renderStarParticle } from './stars';\nimport { createSnowParticles, renderSnowParticle } from './snow';\nimport { createEmojiParticles, renderEmojiParticle } from './emoji';\nimport { createCoinParticles, renderCoinParticle } from './coins';\nimport { createPetalParticles, renderPetalParticle } from './petals';\nimport { createAuroraParticles, renderAuroraParticle } from './aurora';\nimport { createFireflyParticles, renderFireflyParticle } from './fireflies';\nimport { createPaintParticles, renderPaintParticle } from './paint';\nimport { createBalloonParticles, renderBalloonParticle } from './balloons';\nimport { createGalaxyParticles, renderGalaxyParticle } from './galaxy';\nimport { createGlitchParticles, renderGlitchParticle } from './glitch';\nimport { createMagicDustParticles, renderMagicDustParticle } from './magicdust';\nimport { createCrystalParticles, renderCrystalParticle } from './crystals';\nimport { createLeafParticles, renderLeafParticle } from './leaves';\n\n\nexport type ParticleCreator = (\n origin: { x: number; y: number },\n config: AnimationConfig\n) => Particle[];\nexport type ParticleRenderer = (particle: Particle) => React.ReactNode;\n\ninterface AnimationHandler {\n createParticles: ParticleCreator;\n renderParticle: ParticleRenderer;\n}\n\nexport const animations: Record<AnimationType, AnimationHandler> = {\n confetti: {\n createParticles: createConfettiParticles,\n renderParticle: renderConfettiParticle,\n },\n sparkles: {\n createParticles: createSparkleParticles,\n renderParticle: renderSparkleParticle,\n },\n hearts: {\n createParticles: createHeartParticles,\n renderParticle: renderHeartParticle,\n },\n fireworks: {\n createParticles: createFireworkParticles,\n renderParticle: renderFireworkParticle,\n },\n bubbles: {\n createParticles: createBubbleParticles,\n renderParticle: renderBubbleParticle,\n },\n stars: {\n createParticles: createStarParticles,\n renderParticle: renderStarParticle,\n },\n snow: {\n createParticles: createSnowParticles,\n renderParticle: renderSnowParticle,\n },\n emoji: {\n createParticles: createEmojiParticles,\n renderParticle: renderEmojiParticle,\n },\n coins: {\n createParticles: createCoinParticles,\n renderParticle: renderCoinParticle,\n },\n petals: {\n createParticles: createPetalParticles,\n renderParticle: renderPetalParticle,\n },\n aurora: {\n createParticles: createAuroraParticles,\n renderParticle: renderAuroraParticle,\n },\n fireflies: {\n createParticles: createFireflyParticles,\n renderParticle: renderFireflyParticle,\n },\n paint: {\n createParticles: createPaintParticles,\n renderParticle: renderPaintParticle,\n },\n balloons: {\n createParticles: createBalloonParticles,\n renderParticle: renderBalloonParticle,\n },\n galaxy: {\n createParticles: createGalaxyParticles,\n renderParticle: renderGalaxyParticle,\n },\n glitch: {\n createParticles: createGlitchParticles,\n renderParticle: renderGlitchParticle,\n },\n magicdust: {\n createParticles: createMagicDustParticles,\n renderParticle: renderMagicDustParticle,\n },\n crystals: {\n createParticles: createCrystalParticles,\n renderParticle: renderCrystalParticle,\n },\n leaves: {\n createParticles: createLeafParticles,\n renderParticle: renderLeafParticle,\n },\n};\n","import { AnimationConfig } from './types';\n\nexport const isMobileDevice = (): boolean => {\n if (typeof window === 'undefined') return false;\n\n // Check user agent\n const userAgent =\n navigator.userAgent ||\n navigator.vendor ||\n (window as Window & { opera?: string }).opera ||\n '';\n const isMobileUA =\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n userAgent\n );\n\n // Check viewport width\n const isMobileWidth = window.innerWidth <= 768;\n\n // Check touch support\n const hasTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\n return isMobileUA || (isMobileWidth && hasTouch);\n};\n\nexport const optimizeConfigForMobile = (\n config: AnimationConfig\n): AnimationConfig => {\n if (!isMobileDevice()) return config;\n\n return {\n ...config,\n // Reduce particle count by 40%\n particleCount: Math.floor((config.particleCount || 50) * 0.6),\n // Reduce element size by 20%\n elementSize: Math.floor((config.elementSize || 20) * 0.8),\n // Reduce lifetime by 20%\n lifetime: Math.floor((config.lifetime || 150) * 0.8),\n // Simplify physics\n physics: {\n ...config.physics,\n // Reduce precision for mobile\n gravity: Math.round((config.physics?.gravity || 0) * 100) / 100,\n wind: Math.round((config.physics?.wind || 0) * 100) / 100,\n friction: Math.round((config.physics?.friction || 0.98) * 100) / 100,\n },\n };\n};\n\n// Frame skipping for mobile\nexport const shouldSkipFrame = (frameCount: number): boolean => {\n if (!isMobileDevice()) return false;\n // Skip every 3rd frame on mobile\n return frameCount % 3 === 0;\n};\n\n// Reduce visual complexity for mobile\nexport const simplifyVisualEffects = (animationType: string): boolean => {\n if (!isMobileDevice()) return false;\n // These animations have heavy visual effects\n const heavyAnimations = [\n 'fireflies',\n 'galaxy',\n 'aurora',\n 'crystals',\n 'glitch',\n ];\n return heavyAnimations.includes(animationType);\n};\n","import { useCallback, useRef, useState, useEffect } from 'react';\nimport React from 'react';\nimport { createRoot, Root } from 'react-dom/client';\nimport { AnimationType, AnimationConfig, Particle } from './types';\nimport { animations } from './animations';\nimport { createParticleStyle } from './utils';\nimport {\n optimizeConfigForMobile,\n shouldSkipFrame,\n} from './mobileOptimizations';\n\ninterface UseRewardReturn {\n reward: () => void;\n isAnimating: boolean;\n}\n\nexport const useReward = (\n elementId: string,\n animationType: AnimationType,\n config?: AnimationConfig\n): UseRewardReturn => {\n const [isAnimating, setIsAnimating] = useState(false);\n const animationFrameRef = useRef<number>();\n const particlesRef = useRef<Particle[]>([]);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const rootRef = useRef<Root | null>(null);\n const isTabVisible = useRef(true);\n\n // Monitor tab visibility\n useEffect(() => {\n const handleVisibilityChange = () => {\n isTabVisible.current = !document.hidden;\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n return () =>\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n }, []);\n\n const animate = useCallback(() => {\n const element = document.getElementById(elementId);\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n const origin = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n };\n\n const animationHandler = animations[animationType];\n if (!animationHandler) {\n console.error(`Animation type \"${animationType}\" not found`);\n return;\n }\n\n // Apply mobile performance optimizations\n const optimizedConfig = config\n ? optimizeConfigForMobile(config)\n : undefined;\n\n // Create particles\n particlesRef.current = animationHandler.createParticles(\n origin,\n optimizedConfig || {}\n );\n\n // Create container\n const container = document.createElement('div');\n container.style.position = 'fixed';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.pointerEvents = 'none';\n container.style.zIndex = '9999';\n document.body.appendChild(container);\n containerRef.current = container;\n\n // Create React root\n const root = createRoot(container);\n rootRef.current = root;\n\n const containerRect = container.getBoundingClientRect();\n // Default gravity varies by animation type\n const defaultGravity =\n animationType === 'bubbles'\n ? -0.1\n : animationType === 'snow'\n ? 0.05\n : 0.35;\n const gravity = config?.physics?.gravity ?? defaultGravity;\n const friction = config?.physics?.friction ?? 0.98;\n const wind = config?.physics?.wind ?? 0;\n\n // Track frame count for mobile optimization\n let frameCount = 0;\n\n const updateParticles = () => {\n let activeParticles = 0;\n frameCount++;\n\n // Skip frame rendering on mobile to improve performance\n const skipFrame = shouldSkipFrame(frameCount);\n\n particlesRef.current = particlesRef.current.map((particle) => {\n if (particle.life <= 0) return particle;\n\n activeParticles++;\n\n // Update physics\n particle.x += particle.vx;\n particle.y += particle.vy;\n particle.vy += gravity;\n particle.vx += wind;\n particle.vx *= friction;\n particle.vy *= friction;\n particle.rotation += particle.vx * 2;\n particle.life -= 1.2;\n\n // Special opacity handling for sparkles\n if (animationType === 'sparkles') {\n if (particle.life > 70) {\n particle.opacity = (100 - particle.life) / 30;\n } else if (particle.life < 30) {\n particle.opacity = particle.life / 30;\n }\n } else {\n particle.opacity = particle.life / 100;\n }\n\n return particle;\n });\n\n // Render particles (skip rendering on mobile for some frames)\n if (rootRef.current && !skipFrame) {\n rootRef.current.render(\n <React.Fragment>\n {particlesRef.current\n .filter((p) => p.life > 0)\n .map((particle) => (\n <div\n key={particle.id}\n style={createParticleStyle(particle, containerRect)}\n >\n {animationHandler.renderParticle(particle)}\n </div>\n ))}\n </React.Fragment>\n );\n }\n\n if (activeParticles > 0 && isTabVisible.current) {\n animationFrameRef.current = requestAnimationFrame(updateParticles);\n } else {\n // Cleanup\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n if (rootRef.current) {\n rootRef.current.unmount();\n rootRef.current = null;\n }\n if (\n containerRef.current &&\n document.body.contains(containerRef.current)\n ) {\n document.body.removeChild(containerRef.current);\n containerRef.current = null;\n }\n setIsAnimating(false);\n }\n };\n\n setIsAnimating(true);\n updateParticles();\n }, [elementId, animationType, config]);\n\n const reward = useCallback(() => {\n if (!isAnimating) {\n animate();\n }\n }, [animate, isAnimating]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n if (rootRef.current) {\n rootRef.current.unmount();\n rootRef.current = null;\n }\n if (\n containerRef.current &&\n document.body.contains(containerRef.current)\n ) {\n document.body.removeChild(containerRef.current);\n containerRef.current = null;\n }\n };\n }, []);\n\n return { reward, isAnimating };\n};\n"],"names":["defaultColors","useState","useRef","useEffect","useCallback","createRoot"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils.ts","../src/animations/confetti.tsx","../src/animations/sparkles.tsx","../src/animations/hearts.tsx","../src/animations/fireworks.tsx","../src/animations/bubbles.tsx","../src/animations/stars.tsx","../src/animations/snow.tsx","../src/animations/emoji.tsx","../src/animations/coins.tsx","../src/animations/petals.tsx","../src/animations/aurora.tsx","../src/animations/fireflies.tsx","../src/animations/paint.tsx","../src/animations/balloons.tsx","../src/animations/galaxy.tsx","../src/animations/glitch.tsx","../src/animations/magicdust.tsx","../src/animations/crystals.tsx","../src/animations/leaves.tsx","../src/animations/index.ts","../src/mobileOptimizations.ts","../src/useReward.tsx"],"sourcesContent":["import { Particle } from './types';\n\nexport const randomInRange = (min: number, max: number): number => {\n return Math.random() * (max - min) + min;\n};\n\nexport const degreesToRadians = (degrees: number): number => {\n return (degrees * Math.PI) / 180;\n};\n\nexport const generateId = (): string => {\n return Math.random().toString(36).substring(2, 9);\n};\n\nexport const getRandomColor = (colors: string[]): string => {\n return (\n colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#ffffff'\n );\n};\n\nexport const createParticleStyle = (\n particle: Particle,\n containerRect: DOMRect\n): React.CSSProperties => {\n return {\n position: 'absolute',\n left: `${particle.x - containerRect.left}px`,\n top: `${particle.y - containerRect.top}px`,\n transform: `rotate(${particle.rotation}deg)`,\n opacity: particle.opacity,\n pointerEvents: 'none',\n transition: 'none',\n willChange: 'transform, opacity',\n };\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst defaultColors = [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722',\n];\n\nexport const createConfettiParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 50,\n startVelocity = 20,\n colors = defaultColors,\n elementSize = 20,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const color = getRandomColor(colors);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 30,\n life: config.lifetime || 150,\n opacity: 1,\n size: randomInRange(elementSize * 0.7, elementSize * 1.5),\n rotation: randomInRange(0, 360),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderConfettiParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 0.6}px`,\n backgroundColor: particle.color,\n borderRadius: '3px',\n boxShadow: '0 2px 4px rgba(0,0,0,0.2)',\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nexport const createSparkleParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 35,\n spread = 120,\n startVelocity = 15,\n elementSize = 25,\n colors = ['#FFD700', '#FFFFFF'],\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const velocityScale = startVelocity / 45; // Scale based on default\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread, spread),\n y: origin.y + randomInRange(-spread, spread),\n vx: randomInRange(-3, 3) * velocityScale,\n vy: randomInRange(-3, 3) * velocityScale,\n life: config.lifetime || 120,\n opacity: 0,\n size: randomInRange(elementSize * 0.4, elementSize * 1.2),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderSparkleParticle = (particle: Particle): React.ReactNode => {\n const scale = particle.opacity;\n\n return (\n <svg\n key={particle.id}\n width={particle.size}\n height={particle.size}\n viewBox=\"0 0 24 24\"\n style={{\n transform: `scale(${scale}) rotate(${particle.rotation}deg)`,\n filter: 'drop-shadow(0 0 6px rgba(255, 215, 0, 0.8))',\n }}\n >\n <path\n d=\"M12 0L14.59 8.41L23 11L14.59 13.59L12 22L9.41 13.59L1 11L9.41 8.41L12 0Z\"\n fill={particle.color}\n />\n </svg>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst heartColors = ['#ff1744', '#e91e63', '#ff4569', '#ff6b6b', '#ee5a70'];\n\nexport const createHeartParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 25,\n startVelocity = 12,\n colors = heartColors,\n elementSize = 30,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-45, -135);\n const velocity = randomInRange(startVelocity * 0.7, startVelocity * 1.3);\n const horizontalDrift = randomInRange(-2, 2);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-10, 10),\n y: origin.y,\n vx: Math.cos((angle * Math.PI) / 180) * velocity + horizontalDrift,\n vy: Math.sin((angle * Math.PI) / 180) * velocity,\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize * 1.2),\n rotation: randomInRange(-20, 20),\n color: getRandomColor(colors),\n });\n }\n\n return particles;\n};\n\nexport const renderHeartParticle = (particle: Particle & { config?: AnimationConfig }): React.ReactNode => {\n // Calculate pulse effect if enabled\n const pulse = particle.config?.effects?.pulse \n ? 1 + Math.sin(particle.life * 0.2) * 0.1 \n : 1;\n \n return (\n <svg\n key={particle.id}\n width={particle.size * pulse}\n height={particle.size * pulse}\n viewBox=\"0 0 24 24\"\n fill={particle.color}\n style={{\n filter: `drop-shadow(0 0 ${particle.size * 0.15}px ${particle.color})`,\n transition: 'width 0.1s ease-out, height 0.1s ease-out',\n }}\n >\n <path d=\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\" />\n </svg>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst fireworkColors = [\n '#ff0000',\n '#00ff00',\n '#0000ff',\n '#ffff00',\n '#ff00ff',\n '#00ffff',\n '#ffffff',\n];\n\nexport const createFireworkParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 60,\n startVelocity = 25,\n colors = fireworkColors,\n elementSize = 8,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (360 / particleCount) * i + randomInRange(-5, 5);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity * 1.2);\n const color = getRandomColor(colors);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 10,\n life: config.lifetime || 140,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize * 1.4),\n rotation: 0,\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderFireworkParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n backgroundColor: '#ffffff',\n borderRadius: '50%',\n boxShadow: `\n 0 0 ${particle.size}px ${particle.color},\n 0 0 ${particle.size * 2}px ${particle.color},\n 0 0 ${particle.size * 3}px ${particle.color},\n 0 0 ${particle.size * 4}px ${particle.color}\n `,\n background: `radial-gradient(circle, #ffffff 0%, ${particle.color} 40%, transparent 70%)`,\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst bubbleColors = [\n 'rgba(66, 165, 245, 0.4)',\n 'rgba(41, 182, 246, 0.4)',\n 'rgba(38, 198, 218, 0.4)',\n 'rgba(129, 212, 250, 0.4)',\n];\n\nexport const createBubbleParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n spread = 80,\n startVelocity = 8,\n colors = bubbleColors,\n elementSize = 40,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread, spread),\n y: origin.y,\n vx: randomInRange(-3, 3),\n vy: -randomInRange(startVelocity * 0.7, startVelocity * 1.2),\n life: config.lifetime || 160,\n opacity: 0.7,\n size: randomInRange(elementSize * 0.4, elementSize * 1.2),\n rotation: 0,\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderBubbleParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n backgroundColor: particle.color,\n borderRadius: '50%',\n border: '2px solid rgba(255, 255, 255, 0.6)',\n backgroundImage:\n 'radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.8), transparent)',\n boxShadow: `\n inset 0 0 ${particle.size * 0.3}px rgba(255, 255, 255, 0.4),\n 0 0 ${particle.size * 0.5}px ${particle.color}\n `,\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst starColors = ['#FFD700', '#FFA500', '#FF6347', '#FFE4B5'];\n\nexport const createStarParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n startVelocity = 18,\n colors = starColors,\n elementSize = 30,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos((angle * Math.PI) / 180) * velocity,\n vy: Math.sin((angle * Math.PI) / 180) * velocity - 15,\n life: config.lifetime || 150,\n opacity: 1,\n size: randomInRange(elementSize * 0.5, elementSize * 1.3),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderStarParticle = (particle: Particle): React.ReactNode => {\n return (\n <svg\n key={particle.id}\n width={particle.size}\n height={particle.size}\n viewBox=\"0 0 24 24\"\n fill={particle.color}\n style={{\n filter: `drop-shadow(0 0 ${particle.size * 0.2}px ${particle.color})`,\n }}\n >\n <path d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" />\n </svg>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst snowColors = ['#FFFFFF', '#F0F8FF', '#F5F5F5', '#FAFAFA'];\n\nexport const createSnowParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 50,\n spread = 200,\n startVelocity = 3,\n colors = snowColors,\n elementSize = 15,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Spread particles across the width, starting from above viewport\n const x = origin.x + randomInRange(-spread * 2, spread * 2);\n const y = origin.y - randomInRange(100, 300); // Start above the trigger point\n\n particles.push({\n id: generateId(),\n x,\n y,\n vx: randomInRange(-0.5, 0.5), // Gentle horizontal drift\n vy: randomInRange(startVelocity * 0.5, startVelocity * 1.2),\n life: config.lifetime || 300, // Longer lifetime for snow\n opacity: randomInRange(0.4, 0.9),\n size: randomInRange(elementSize * 0.3, elementSize),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderSnowParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n backgroundColor: particle.color,\n borderRadius: '50%',\n boxShadow: `\n 0 0 ${particle.size * 0.5}px rgba(255, 255, 255, 0.8),\n inset 0 0 ${particle.size * 0.3}px rgba(255, 255, 255, 0.5)\n `,\n filter: 'blur(0.5px)',\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\n// Default emoji sets for different moods\nconst defaultEmojis = ['🎉', '🎊', '🎈', '🎁', '✨', '🌟', '💫', '🎯'];\nconst celebrationEmojis = ['🎉', '🎊', '🥳', '🎈', '🎁', '🍾', '🥂', '🎆'];\nconst loveEmojis = ['❤️', '💕', '💖', '💝', '💗', '💓', '💞', '💘'];\nconst happyEmojis = ['😊', '😄', '🥰', '😍', '🤗', '😘', '😁', '🤩'];\nconst natureEmojis = ['🌸', '🌺', '🌻', '🌹', '🌷', '🌼', '🍀', '🌿'];\nconst foodEmojis = ['🍕', '🍔', '🍟', '🌮', '🍿', '🍩', '🍪', '🧁'];\n\nexport interface EmojiAnimationConfig extends AnimationConfig {\n emojis?: string[];\n}\n\nexport const createEmojiParticles = (\n origin: { x: number; y: number },\n config: EmojiAnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n spread = 100,\n startVelocity = 15,\n elementSize = 35,\n emojis = defaultEmojis,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-45, -135);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity * 1.2);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread, spread),\n y: origin.y,\n vx: Math.cos((angle * Math.PI) / 180) * velocity,\n vy: Math.sin((angle * Math.PI) / 180) * velocity,\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.7, elementSize * 1.3),\n rotation: randomInRange(-45, 45),\n color: '', // Not used for emojis\n element: emojis[Math.floor(Math.random() * emojis.length)],\n });\n }\n\n return particles;\n};\n\nexport const renderEmojiParticle = (particle: Particle): React.ReactNode => {\n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n lineHeight: 1,\n userSelect: 'none',\n filter: particle.opacity < 0.5 ? 'blur(1px)' : undefined,\n }}\n >\n {particle.element}\n </div>\n );\n};\n\n// Export preset emoji sets for easy use\nexport const emojiPresets = {\n celebration: celebrationEmojis,\n love: loveEmojis,\n happy: happyEmojis,\n nature: natureEmojis,\n food: foodEmojis,\n default: defaultEmojis,\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst coinColors = ['#FFD700', '#FFA500', '#FFB300', '#FFC700'];\n\nexport const createCoinParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n spread = 70,\n startVelocity = 25,\n colors = coinColors,\n elementSize = 25,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.sin(angle) * velocity,\n vy: -Math.cos(angle) * velocity,\n life: config.lifetime || 120,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderCoinParticle = (particle: Particle & { config?: AnimationConfig }): React.ReactNode => {\n const spinSpeed = particle.config?.effects?.spin3D ? 8 : 2; // Faster spin with 3D effect\n const currentRotation = particle.rotation + (120 - particle.life) * spinSpeed;\n \n // 3D effect: scale X based on rotation to simulate perspective\n const scaleX = particle.config?.effects?.spin3D \n ? Math.abs(Math.cos((currentRotation * Math.PI) / 180))\n : 1;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n background: `radial-gradient(ellipse at 30% 30%, ${particle.color}, #B8860B)`,\n borderRadius: '50%',\n transform: particle.config?.effects?.spin3D \n ? `rotateY(${currentRotation}deg) scaleX(${scaleX})`\n : `rotate(${currentRotation}deg)`,\n transformStyle: 'preserve-3d',\n boxShadow: `\n inset -2px -2px 4px rgba(0, 0, 0, 0.3),\n inset 2px 2px 4px rgba(255, 255, 255, 0.5),\n 0 2px 4px rgba(0, 0, 0, 0.3)\n `,\n border: `1px solid ${particle.color}`,\n position: 'relative',\n overflow: 'hidden',\n backfaceVisibility: 'hidden',\n }}\n >\n {/* Dollar sign - hide when flipped */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: `${particle.size * 0.5}px`,\n fontWeight: 'bold',\n color: '#B8860B',\n textShadow: '1px 1px 1px rgba(0, 0, 0, 0.3)',\n fontFamily: 'Arial, sans-serif',\n opacity: particle.config?.effects?.spin3D && scaleX < 0.3 ? 0 : 1,\n transition: 'opacity 0.1s',\n }}\n >\n $\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst petalColors = ['#FFB6C1', '#FFC0CB', '#FF69B4', '#FF1493', '#FFF0F5'];\n\nexport const createPetalParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n spread = 100,\n startVelocity = 8,\n colors = petalColors,\n elementSize = 20,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.3, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-20, 20),\n y: origin.y - randomInRange(0, 30),\n vx: Math.sin(angle) * velocity,\n vy: randomInRange(2, 5), // Gentle fall\n life: config.lifetime || 200,\n opacity: randomInRange(0.7, 1),\n size: randomInRange(elementSize * 0.7, elementSize * 1.3),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderPetalParticle = (particle: Particle): React.ReactNode => {\n // Create spiral motion\n const spiralPhase = (200 - particle.life) * 0.1;\n const spiralX = Math.sin(spiralPhase) * 15;\n const wobble = Math.sin(particle.life * 0.1) * 10;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.2}px`,\n position: 'relative',\n transform: `translateX(${spiralX}px) rotate(${particle.rotation + wobble}deg)`,\n transformStyle: 'preserve-3d',\n }}\n >\n {/* Petal shape */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `radial-gradient(ellipse at 50% 30%, ${particle.color}, ${particle.color}DD)`,\n borderRadius: '0% 100% 0% 100%',\n position: 'absolute',\n boxShadow: `\n inset 1px 1px 3px rgba(255, 255, 255, 0.5),\n 0 2px 4px rgba(0, 0, 0, 0.1)\n `,\n border: `1px solid ${particle.color}CC`,\n transform: 'rotateY(45deg)',\n }}\n />\n {/* Second petal for depth */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `radial-gradient(ellipse at 50% 30%, ${particle.color}EE, ${particle.color}BB)`,\n borderRadius: '0% 100% 0% 100%',\n position: 'absolute',\n transform: 'rotate(45deg) scale(0.9)',\n opacity: 0.8,\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst auroraColors = [\n '#00ff88',\n '#00ffaa',\n '#00ddff',\n '#0099ff',\n '#0066ff',\n '#9933ff',\n '#ff00ff',\n];\n\nexport const createAuroraParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n spread = 200,\n startVelocity = 3,\n colors = auroraColors,\n elementSize = 100,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (i / particleCount) * spread - spread / 2;\n const offset = randomInRange(-30, 30);\n\n particles.push({\n id: generateId(),\n x: origin.x + angle + offset,\n y: origin.y,\n vx: randomInRange(-1, 1),\n vy: -startVelocity,\n life: config.lifetime || 250,\n opacity: 0,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(-15, 15),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderAuroraParticle = (particle: Particle): React.ReactNode => {\n // Create flowing wave motion\n const wave = Math.sin(particle.life * 0.05) * 20;\n const fadeIn = Math.min(1, (250 - particle.life) / 50);\n const fadeOut = particle.life / 250;\n const opacity = Math.min(fadeIn, fadeOut) * 0.4;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 0.3}px`,\n position: 'relative',\n transform: `translateX(${wave}px) rotate(${particle.rotation}deg)`,\n filter: 'blur(2px)',\n }}\n >\n {/* Aurora ribbon */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `linear-gradient(90deg, transparent, ${particle.color}, transparent)`,\n borderRadius: '50%',\n opacity,\n boxShadow: `0 0 ${particle.size * 0.5}px ${particle.color}`,\n animation: 'shimmer 2s infinite',\n }}\n />\n {/* Secondary layer for depth */}\n <div\n style={{\n position: 'absolute',\n top: '20%',\n left: '10%',\n width: '80%',\n height: '60%',\n background: `radial-gradient(ellipse at center, ${particle.color}44, transparent)`,\n borderRadius: '50%',\n opacity: opacity * 0.5,\n filter: 'blur(4px)',\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst fireflyColors = ['#FFFF99', '#FFFFCC', '#FFFF66', '#FFFFAA'];\n\nexport const createFireflyParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 20,\n spread = 150,\n startVelocity = 2,\n colors = fireflyColors,\n elementSize = 8,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, 360) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.3, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread / 2, spread / 2),\n y: origin.y + randomInRange(-20, 20),\n vx: Math.cos(angle) * velocity,\n vy: Math.sin(angle) * velocity * 0.5, // More horizontal movement\n life: config.lifetime || 300,\n opacity: 0,\n size: randomInRange(elementSize * 0.6, elementSize),\n rotation: randomInRange(0, 360), // Used for blink timing\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderFireflyParticle = (particle: Particle): React.ReactNode => {\n // Create organic floating motion\n const floatX = Math.sin(particle.life * 0.02 + particle.rotation) * 15;\n const floatY = Math.cos(particle.life * 0.03 + particle.rotation) * 10;\n\n // Blinking effect - each firefly has its own rhythm based on rotation\n const blinkCycle = Math.sin(particle.life * 0.1 + particle.rotation * 0.1);\n const isBlinking = blinkCycle > 0.3;\n const glowIntensity = isBlinking ? 1 : 0.1;\n\n // Fade in/out\n const fadeIn = Math.min(1, (300 - particle.life) / 30);\n const fadeOut = particle.life / 300;\n const baseFade = Math.min(fadeIn, fadeOut);\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `translate(${floatX}px, ${floatY}px)`,\n }}\n >\n {/* Firefly body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: particle.color,\n borderRadius: '50%',\n opacity: baseFade * glowIntensity,\n boxShadow: `\n 0 0 ${particle.size}px ${particle.color},\n 0 0 ${particle.size * 2}px ${particle.color},\n 0 0 ${particle.size * 3}px ${particle.color}88\n `,\n transition: 'opacity 0.3s ease',\n }}\n />\n {/* Glow aura */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${particle.size * 4}px`,\n height: `${particle.size * 4}px`,\n background: `radial-gradient(circle, ${particle.color}44 0%, transparent 70%)`,\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n opacity: baseFade * glowIntensity * 0.5,\n transition: 'opacity 0.3s ease',\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst paintColors = [\n '#FF006E',\n '#FB5607',\n '#FFBE0B',\n '#8338EC',\n '#3A86FF',\n '#06FFB4',\n];\n\nexport const createPaintParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 25,\n spread = 120,\n startVelocity = 35,\n colors = paintColors,\n elementSize = 30,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const isMainSplat = i < 5; // First few particles are bigger splats\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.sin(angle) * velocity * (isMainSplat ? 0.3 : 1),\n vy: -Math.cos(angle) * velocity * 0.7 + (isMainSplat ? 5 : 0),\n life: config.lifetime || 150,\n opacity: 1,\n size: isMainSplat\n ? randomInRange(elementSize * 1.5, elementSize * 2.5)\n : randomInRange(elementSize * 0.3, elementSize),\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderPaintParticle = (particle: Particle): React.ReactNode => {\n // Paint splatter gets more stretched as it flies\n const stretch = 1 + (Math.abs(particle.vx) + Math.abs(particle.vy)) * 0.01;\n const squish = 1 / stretch;\n\n // Drip effect for some particles\n const isDripping = particle.size > 15 && particle.rotation > 180;\n const dripLength = isDripping ? particle.size * 0.5 : 0;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `\n scaleX(${stretch}) \n scaleY(${squish}) \n rotate(${(Math.atan2(particle.vy, particle.vx) * 180) / Math.PI}deg)\n `,\n }}\n >\n {/* Main paint splat */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: particle.color,\n borderRadius: '50%',\n position: 'relative',\n boxShadow: `inset -2px -2px 4px rgba(0,0,0,0.2)`,\n }}\n >\n {/* Splatter details */}\n <div\n style={{\n position: 'absolute',\n top: '20%',\n left: '20%',\n width: '30%',\n height: '30%',\n background: particle.color,\n borderRadius: '50%',\n opacity: 0.8,\n transform: `translate(${randomInRange(-5, 5)}px, ${randomInRange(-5, 5)}px)`,\n }}\n />\n <div\n style={{\n position: 'absolute',\n bottom: '15%',\n right: '15%',\n width: '25%',\n height: '25%',\n background: particle.color,\n borderRadius: '50%',\n opacity: 0.7,\n }}\n />\n </div>\n\n {/* Paint drip */}\n {isDripping && (\n <div\n style={{\n position: 'absolute',\n bottom: `-${dripLength}px`,\n left: '40%',\n width: '20%',\n height: `${dripLength}px`,\n background: particle.color,\n borderRadius: '0 0 50% 50%',\n opacity: 0.9,\n }}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst balloonColors = [\n '#FF006E',\n '#FB5607',\n '#FFBE0B',\n '#8338EC',\n '#3A86FF',\n '#06FFB4',\n '#FF4081',\n];\n\nexport const createBalloonParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n spread = 80,\n startVelocity = 10,\n colors = balloonColors,\n elementSize = 35,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.7, startVelocity);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-spread * 0.8, spread * 0.8), // Spread balloons out more\n y: origin.y + randomInRange(-10, 30),\n vx: Math.sin(angle) * velocity * 0.3 + randomInRange(-1, 1), // Add horizontal drift\n vy: -velocity * 0.4, // Balloons float up slowly\n life: config.lifetime || 250,\n opacity: 0.9,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(-10, 10),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderBalloonParticle = (particle: Particle): React.ReactNode => {\n // Gentle swaying motion\n const sway = Math.sin(particle.life * 0.03) * 15;\n const bob = Math.sin(particle.life * 0.05) * 5;\n\n // Fade out near the end\n const fadeOut = particle.life > 50 ? 1 : particle.life / 50;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.2}px`,\n position: 'relative',\n transform: `\n translateX(${sway}px) \n translateY(${bob}px)\n rotate(${particle.rotation + sway * 0.2}deg)\n `,\n opacity: particle.opacity * fadeOut,\n }}\n >\n {/* Balloon body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: `radial-gradient(circle at 30% 30%, ${particle.color}ee, ${particle.color})`,\n borderRadius: '50% 50% 50% 50% / 60% 60% 40% 40%',\n position: 'relative',\n boxShadow: `\n inset -5px -5px 10px rgba(0,0,0,0.2),\n 0 4px 8px rgba(0,0,0,0.2)\n `,\n }}\n >\n {/* Highlight */}\n <div\n style={{\n position: 'absolute',\n top: '15%',\n left: '20%',\n width: '25%',\n height: '30%',\n background:\n 'radial-gradient(circle, rgba(255,255,255,0.8) 0%, transparent 70%)',\n borderRadius: '50%',\n transform: 'rotate(-20deg)',\n }}\n />\n\n {/* Balloon knot */}\n <div\n style={{\n position: 'absolute',\n bottom: '-5px',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '0',\n height: '0',\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: `8px solid ${particle.color}`,\n }}\n />\n </div>\n\n {/* String */}\n <svg\n style={{\n position: 'absolute',\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '2px',\n height: `${particle.size * 2}px`,\n opacity: 0.6,\n }}\n >\n <path\n d={`M1 0 Q ${1 + Math.sin(particle.life * 0.1) * 3} ${particle.size} 1 ${particle.size * 2}`}\n stroke={particle.color}\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity=\"0.4\"\n />\n </svg>\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst galaxyColors = [\n '#FFFFFF',\n '#FFF9C4',\n '#BBDEFB',\n '#C5CAE9',\n '#D1C4E9',\n '#FFE082',\n '#FFCCBC',\n];\n\nexport const createGalaxyParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 60,\n spread = 200,\n startVelocity = 15,\n colors = galaxyColors,\n elementSize = 8,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Create spiral distribution\n const progress = i / particleCount;\n const spiralAngle = progress * Math.PI * 4; // 2 full rotations\n const radius = progress * spread;\n\n // Add some randomness to make it look natural\n const angleOffset = randomInRange(-0.3, 0.3);\n const radiusOffset = randomInRange(-10, 10);\n\n const finalAngle = spiralAngle + angleOffset;\n const finalRadius = radius + radiusOffset;\n\n // Position based on spiral\n const offsetX = Math.cos(finalAngle) * finalRadius;\n const offsetY = Math.sin(finalAngle) * finalRadius;\n\n // Velocity follows the spiral tangent\n const tangentAngle = finalAngle + Math.PI / 2;\n const speed = startVelocity * (1 - progress * 0.5); // Outer stars move slower\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(tangentAngle) * speed * 0.3 + offsetX * 0.02,\n vy: Math.sin(tangentAngle) * speed * 0.3 + offsetY * 0.02,\n life: config.lifetime || 250,\n opacity: 0,\n size:\n randomInRange(elementSize * 0.3, elementSize) * (1 - progress * 0.5), // Smaller at edges\n rotation: randomInRange(0, 360),\n color:\n colors[Math.floor(Math.random() * colors.length)] ||\n colors[0] ||\n '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderGalaxyParticle = (particle: Particle): React.ReactNode => {\n // Particles slowly rotate around center while expanding\n const age = (250 - particle.life) / 250;\n const expansionRate = 1 + age * 0.5;\n\n // Fade in quickly, fade out slowly\n const fadeIn = Math.min(1, (250 - particle.life) / 30);\n const fadeOut = particle.life / 250;\n const opacity = Math.min(fadeIn, fadeOut);\n\n // Twinkle effect\n const twinkle = Math.sin(particle.life * 0.2 + particle.rotation) * 0.3 + 0.7;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `scale(${expansionRate})`,\n opacity: opacity * twinkle,\n }}\n >\n {/* Star core */}\n <div\n style={{\n width: '100%',\n height: '100%',\n background: particle.color,\n borderRadius: '50%',\n boxShadow: `\n 0 0 ${particle.size}px ${particle.color},\n 0 0 ${particle.size * 2}px ${particle.color}88,\n 0 0 ${particle.size * 3}px ${particle.color}44\n `,\n position: 'relative',\n }}\n >\n {/* Star spikes */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${particle.size * 3}px`,\n height: '1px',\n background: `linear-gradient(90deg, transparent, ${particle.color}, transparent)`,\n transform: `translate(-50%, -50%) rotate(${particle.rotation}deg)`,\n opacity: twinkle,\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: '1px',\n height: `${particle.size * 3}px`,\n background: `linear-gradient(180deg, transparent, ${particle.color}, transparent)`,\n transform: `translate(-50%, -50%) rotate(${particle.rotation}deg)`,\n opacity: twinkle,\n }}\n />\n </div>\n\n {/* Nebula dust for larger stars */}\n {particle.size > 5 && (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${particle.size * 6}px`,\n height: `${particle.size * 6}px`,\n background: `radial-gradient(circle, ${particle.color}22 0%, transparent 70%)`,\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n opacity: opacity * 0.3,\n filter: 'blur(3px)',\n }}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nexport const createGlitchParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const { particleCount = 20, elementSize = 200 } = config;\n\n const particles: Particle[] = [];\n const channels = ['r', 'g', 'b'];\n\n for (let i = 0; i < particleCount; i++) {\n const isHorizontal = Math.random() > 0.3;\n const channelIndex = i % 3;\n const channel = channels[channelIndex];\n\n // Encode all data in rotation:\n // bits 0-1: channel (0=r, 1=g, 2=b)\n // bit 2: isHorizontal (0=false, 1=true)\n // bits 3-10: width (0-255)\n // bits 11-18: height (0-255)\n // bits 19-24: glitchOffset + 32 (to make positive)\n const width = isHorizontal ? randomInRange(50, 200) : randomInRange(2, 8);\n const height = isHorizontal ? randomInRange(2, 8) : randomInRange(50, 200);\n const glitchOffset = randomInRange(-20, 20);\n\n const encodedData =\n channelIndex +\n (isHorizontal ? 4 : 0) +\n (Math.floor(width) << 3) +\n (Math.floor(height) << 11) +\n ((glitchOffset + 32) << 19);\n\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-elementSize / 2, elementSize / 2),\n y: origin.y + randomInRange(-elementSize / 2, elementSize / 2),\n vx: randomInRange(-50, 50),\n vy: randomInRange(-30, 30),\n life: config.lifetime || 150,\n opacity: randomInRange(0.3, 1),\n size: randomInRange(5, 20), // Store distortionAmount\n rotation: encodedData,\n color:\n channel === 'r' ? '#ff0000' : channel === 'g' ? '#00ff00' : '#0000ff',\n });\n }\n\n return particles;\n};\n\nexport const renderGlitchParticle = (particle: Particle): React.ReactNode => {\n // Decode data from rotation\n const channelIndex = particle.rotation & 3;\n const width = (particle.rotation >> 3) & 255;\n const height = (particle.rotation >> 11) & 255;\n const glitchOffset = ((particle.rotation >> 19) & 63) - 32;\n\n const channel = ['r', 'g', 'b'][channelIndex];\n const distortionAmount = particle.size;\n\n const colors = {\n r: channel === 'r' ? 255 : 0,\n g: channel === 'g' ? 255 : 0,\n b: channel === 'b' ? 255 : 0,\n };\n\n const mixBlendMode =\n channel === 'r' ? 'screen' : channel === 'g' ? 'multiply' : 'difference';\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${width}px`,\n height: `${height}px`,\n backgroundColor: `rgba(${colors.r}, ${colors.g}, ${colors.b}, ${particle.opacity})`,\n mixBlendMode,\n filter: `blur(${randomInRange(0, 2)}px)`,\n boxShadow: `${glitchOffset}px 0 ${distortionAmount}px rgba(${colors.r}, ${colors.g}, ${colors.b}, ${particle.opacity * 0.5})`,\n }}\n />\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst defaultColors = [\n '#9C27B0',\n '#E91E63',\n '#FF00FF',\n '#00FFFF',\n '#FFD700',\n '#FF69B4',\n '#DA70D6',\n '#9370DB',\n];\n\nexport const createMagicDustParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n startVelocity = 8,\n colors = defaultColors,\n elementSize = 12,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Create particles in a circular pattern with some randomness\n const angle = (i / particleCount) * 360 + randomInRange(-30, 30);\n const velocity = randomInRange(startVelocity * 0.3, startVelocity);\n const color = getRandomColor(colors);\n\n // Add some particles that trail behind cursor movement\n const offsetAngle = randomInRange(0, 360);\n const offsetDistance = randomInRange(0, 30);\n\n particles.push({\n id: generateId(),\n x: origin.x + Math.cos(degreesToRadians(offsetAngle)) * offsetDistance,\n y: origin.y + Math.sin(degreesToRadians(offsetAngle)) * offsetDistance,\n vx: Math.cos(degreesToRadians(angle)) * velocity + randomInRange(-2, 2),\n vy: Math.sin(degreesToRadians(angle)) * velocity + randomInRange(-2, 2),\n life: config.lifetime || 120,\n opacity: randomInRange(0.4, 1),\n size: randomInRange(elementSize * 0.3, elementSize),\n rotation: randomInRange(0, 360),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderMagicDustParticle = (\n particle: Particle\n): React.ReactNode => {\n const sparkleSize = particle.size * 0.7;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n }}\n >\n {/* Central glow */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n backgroundColor: particle.color,\n borderRadius: '50%',\n boxShadow: `0 0 ${particle.size}px ${particle.color}, 0 0 ${particle.size * 2}px ${particle.color}`,\n filter: 'blur(1px)',\n }}\n />\n {/* Sparkle effect */}\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: `${sparkleSize}px`,\n height: `${sparkleSize}px`,\n transform: `translate(-50%, -50%) rotate(${particle.rotation}deg)`,\n }}\n >\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '2px',\n backgroundColor: 'white',\n top: '50%',\n left: '0',\n transform: 'translateY(-50%)',\n boxShadow: '0 0 4px white',\n }}\n />\n <div\n style={{\n position: 'absolute',\n width: '2px',\n height: '100%',\n backgroundColor: 'white',\n left: '50%',\n top: '0',\n transform: 'translateX(-50%)',\n boxShadow: '0 0 4px white',\n }}\n />\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport {\n randomInRange,\n degreesToRadians,\n generateId,\n getRandomColor,\n} from '../utils';\n\nconst defaultColors = [\n '#FF1493',\n '#00CED1',\n '#FFD700',\n '#FF69B4',\n '#7B68EE',\n '#00FA9A',\n '#FF6347',\n '#4169E1',\n];\n\nexport const createCrystalParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n startVelocity = 15,\n colors = defaultColors,\n elementSize = 25,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Crystals explode outward and fall with gravity\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const color = getRandomColor(colors);\n\n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 10,\n life: config.lifetime || 150,\n opacity: randomInRange(0.7, 1),\n size: randomInRange(elementSize * 0.6, elementSize),\n rotation: randomInRange(0, 360),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderCrystalParticle = (particle: Particle): React.ReactNode => {\n // Create rainbow refraction effect\n const hue = (Date.now() * 0.5 + particle.x + particle.y) % 360;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.5}px`,\n position: 'relative',\n transform: `rotate(${particle.rotation}deg)`,\n }}\n >\n {/* Crystal shape with gradient */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: `linear-gradient(135deg, ${particle.color}, ${particle.color}88, transparent)`,\n clipPath: 'polygon(50% 0%, 100% 40%, 75% 100%, 25% 100%, 0% 40%)',\n boxShadow: `0 0 ${particle.size}px ${particle.color}44`,\n }}\n />\n\n {/* Inner facets */}\n <div\n style={{\n position: 'absolute',\n width: '80%',\n height: '80%',\n top: '10%',\n left: '10%',\n background: `linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.4), transparent)`,\n clipPath: 'polygon(50% 10%, 90% 45%, 65% 90%, 35% 90%, 10% 45%)',\n }}\n />\n\n {/* Rainbow refraction overlay */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: `linear-gradient(${hue}deg, \n hsla(${hue}, 100%, 50%, 0.3),\n hsla(${(hue + 60) % 360}, 100%, 50%, 0.3),\n hsla(${(hue + 120) % 360}, 100%, 50%, 0.3)\n )`,\n clipPath: 'polygon(50% 0%, 100% 40%, 75% 100%, 25% 100%, 0% 40%)',\n mixBlendMode: 'screen',\n }}\n />\n\n {/* Shine effect */}\n <div\n style={{\n position: 'absolute',\n width: '30%',\n height: '30%',\n top: '20%',\n left: '35%',\n background:\n 'radial-gradient(circle, rgba(255, 255, 255, 0.8), transparent)',\n borderRadius: '50%',\n filter: 'blur(2px)',\n }}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = [\n '#D2691E',\n '#CD853F',\n '#8B4513',\n '#A0522D',\n '#FF8C00',\n '#FF6347',\n];\n\nexport const createLeafParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 10,\n colors = defaultColors,\n elementSize = 25,\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-100, 100),\n y: origin.y + randomInRange(-50, 0),\n vx: randomInRange(-1, 1),\n vy: randomInRange(0.5, 2),\n life: config.lifetime || 300,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize),\n // Encode tumble phase (0-360), sway phase (0-360), and sway amount (20-40) + rotation speed (-3 to 3)\n rotation:\n Math.floor(randomInRange(0, 360)) +\n Math.floor(randomInRange(0, 360)) * 1000 +\n Math.floor(randomInRange(20, 40)) * 1000000 +\n (Math.floor(randomInRange(-3, 3)) + 3) * 100000000,\n color: getRandomColor(colors),\n });\n }\n\n return particles;\n};\n\nexport const renderLeafParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const tumblePhase = particle.rotation % 1000;\n const swayPhase = Math.floor((particle.rotation % 1000000) / 1000);\n const swayAmount = Math.floor((particle.rotation % 100000000) / 1000000);\n const rotationSpeed = Math.floor(particle.rotation / 100000000) - 3;\n\n // Calculate tumbling and swaying\n const tumble =\n Math.sin(((Date.now() * 0.002 + tumblePhase) * Math.PI) / 180) * 30;\n const swayX =\n Math.sin(((Date.now() * 0.001 + swayPhase) * Math.PI) / 180) * swayAmount;\n const rotation = (Date.now() * rotationSpeed * 0.01 + tumble) % 360;\n\n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n position: 'relative',\n transform: `translateX(${swayX}px) rotate(${rotation}deg)`,\n }}\n >\n <svg\n width={particle.size}\n height={particle.size}\n viewBox={`-${particle.size / 2} -${particle.size / 2} ${particle.size} ${particle.size}`}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n {/* Leaf shape */}\n <path\n d={`\n M 0,-${particle.size / 2}\n C -${particle.size / 3},-${particle.size / 3} -${particle.size / 3},${particle.size / 3} 0,${particle.size / 2}\n C ${particle.size / 3},${particle.size / 3} ${particle.size / 3},-${particle.size / 3} 0,-${particle.size / 2}\n `}\n fill={particle.color}\n opacity=\"0.9\"\n />\n\n {/* Leaf vein */}\n <line\n x1=\"0\"\n y1={-particle.size / 2}\n x2=\"0\"\n y2={particle.size / 2}\n stroke=\"#8B4513\"\n strokeWidth=\"1\"\n opacity=\"0.5\"\n />\n\n {/* Side veins */}\n <line\n x1=\"0\"\n y1={-particle.size / 4}\n x2={-particle.size / 4}\n y2={-particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n <line\n x1=\"0\"\n y1={-particle.size / 4}\n x2={particle.size / 4}\n y2={-particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n <line\n x1=\"0\"\n y1={particle.size / 4}\n x2={-particle.size / 4}\n y2={particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n <line\n x1=\"0\"\n y1={particle.size / 4}\n x2={particle.size / 4}\n y2={particle.size / 8}\n stroke=\"#8B4513\"\n strokeWidth=\"0.5\"\n opacity=\"0.5\"\n />\n </svg>\n </div>\n );\n};\n","import { AnimationType, AnimationConfig, Particle } from '../types';\nimport { createConfettiParticles, renderConfettiParticle } from './confetti';\nimport { createSparkleParticles, renderSparkleParticle } from './sparkles';\nimport { createHeartParticles, renderHeartParticle } from './hearts';\nimport { createFireworkParticles, renderFireworkParticle } from './fireworks';\nimport { createBubbleParticles, renderBubbleParticle } from './bubbles';\nimport { createStarParticles, renderStarParticle } from './stars';\nimport { createSnowParticles, renderSnowParticle } from './snow';\nimport { createEmojiParticles, renderEmojiParticle } from './emoji';\nimport { createCoinParticles, renderCoinParticle } from './coins';\nimport { createPetalParticles, renderPetalParticle } from './petals';\nimport { createAuroraParticles, renderAuroraParticle } from './aurora';\nimport { createFireflyParticles, renderFireflyParticle } from './fireflies';\nimport { createPaintParticles, renderPaintParticle } from './paint';\nimport { createBalloonParticles, renderBalloonParticle } from './balloons';\nimport { createGalaxyParticles, renderGalaxyParticle } from './galaxy';\nimport { createGlitchParticles, renderGlitchParticle } from './glitch';\nimport { createMagicDustParticles, renderMagicDustParticle } from './magicdust';\nimport { createCrystalParticles, renderCrystalParticle } from './crystals';\nimport { createLeafParticles, renderLeafParticle } from './leaves';\n\n\nexport type ParticleCreator = (\n origin: { x: number; y: number },\n config: AnimationConfig\n) => Particle[];\nexport type ParticleRenderer = (particle: Particle) => React.ReactNode;\n\ninterface AnimationHandler {\n createParticles: ParticleCreator;\n renderParticle: ParticleRenderer;\n}\n\nexport const animations: Record<AnimationType, AnimationHandler> = {\n confetti: {\n createParticles: createConfettiParticles,\n renderParticle: renderConfettiParticle,\n },\n sparkles: {\n createParticles: createSparkleParticles,\n renderParticle: renderSparkleParticle,\n },\n hearts: {\n createParticles: createHeartParticles,\n renderParticle: renderHeartParticle,\n },\n fireworks: {\n createParticles: createFireworkParticles,\n renderParticle: renderFireworkParticle,\n },\n bubbles: {\n createParticles: createBubbleParticles,\n renderParticle: renderBubbleParticle,\n },\n stars: {\n createParticles: createStarParticles,\n renderParticle: renderStarParticle,\n },\n snow: {\n createParticles: createSnowParticles,\n renderParticle: renderSnowParticle,\n },\n emoji: {\n createParticles: createEmojiParticles,\n renderParticle: renderEmojiParticle,\n },\n coins: {\n createParticles: createCoinParticles,\n renderParticle: renderCoinParticle,\n },\n petals: {\n createParticles: createPetalParticles,\n renderParticle: renderPetalParticle,\n },\n aurora: {\n createParticles: createAuroraParticles,\n renderParticle: renderAuroraParticle,\n },\n fireflies: {\n createParticles: createFireflyParticles,\n renderParticle: renderFireflyParticle,\n },\n paint: {\n createParticles: createPaintParticles,\n renderParticle: renderPaintParticle,\n },\n balloons: {\n createParticles: createBalloonParticles,\n renderParticle: renderBalloonParticle,\n },\n galaxy: {\n createParticles: createGalaxyParticles,\n renderParticle: renderGalaxyParticle,\n },\n glitch: {\n createParticles: createGlitchParticles,\n renderParticle: renderGlitchParticle,\n },\n magicdust: {\n createParticles: createMagicDustParticles,\n renderParticle: renderMagicDustParticle,\n },\n crystals: {\n createParticles: createCrystalParticles,\n renderParticle: renderCrystalParticle,\n },\n leaves: {\n createParticles: createLeafParticles,\n renderParticle: renderLeafParticle,\n },\n};\n","import { AnimationConfig } from './types';\n\nexport const isMobileDevice = (): boolean => {\n if (typeof window === 'undefined') return false;\n\n // Check user agent\n const userAgent =\n navigator.userAgent ||\n navigator.vendor ||\n (window as Window & { opera?: string }).opera ||\n '';\n const isMobileUA =\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n userAgent\n );\n\n // Check viewport width\n const isMobileWidth = window.innerWidth <= 768;\n\n // Check touch support\n const hasTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\n return isMobileUA || (isMobileWidth && hasTouch);\n};\n\nexport const optimizeConfigForMobile = (\n config: AnimationConfig\n): AnimationConfig => {\n if (!isMobileDevice()) return config;\n\n return {\n ...config,\n // Reduce particle count by 40%\n particleCount: Math.floor((config.particleCount || 50) * 0.6),\n // Reduce element size by 20%\n elementSize: Math.floor((config.elementSize || 20) * 0.8),\n // Reduce lifetime by 20%\n lifetime: Math.floor((config.lifetime || 150) * 0.8),\n // Simplify physics\n physics: {\n ...config.physics,\n // Reduce precision for mobile\n gravity: Math.round((config.physics?.gravity || 0) * 100) / 100,\n wind: Math.round((config.physics?.wind || 0) * 100) / 100,\n friction: Math.round((config.physics?.friction || 0.98) * 100) / 100,\n },\n };\n};\n\n// Frame skipping for mobile\nexport const shouldSkipFrame = (frameCount: number): boolean => {\n if (!isMobileDevice()) return false;\n // Skip every 3rd frame on mobile\n return frameCount % 3 === 0;\n};\n\n// Reduce visual complexity for mobile\nexport const simplifyVisualEffects = (animationType: string): boolean => {\n if (!isMobileDevice()) return false;\n // These animations have heavy visual effects\n const heavyAnimations = [\n 'fireflies',\n 'galaxy',\n 'aurora',\n 'crystals',\n 'glitch',\n ];\n return heavyAnimations.includes(animationType);\n};\n","import { useCallback, useRef, useState, useEffect } from 'react';\nimport React from 'react';\nimport { createRoot, Root } from 'react-dom/client';\nimport { AnimationType, AnimationConfig, Particle } from './types';\nimport { animations } from './animations';\nimport { createParticleStyle } from './utils';\nimport {\n optimizeConfigForMobile,\n shouldSkipFrame,\n} from './mobileOptimizations';\n\ninterface UseRewardReturn {\n reward: () => void;\n isAnimating: boolean;\n}\n\nexport const useReward = (\n elementId: string,\n animationType: AnimationType,\n config?: AnimationConfig\n): UseRewardReturn => {\n const [isAnimating, setIsAnimating] = useState(false);\n const animationFrameRef = useRef<number>();\n const particlesRef = useRef<Particle[]>([]);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const rootRef = useRef<Root | null>(null);\n const isTabVisible = useRef(true);\n\n // Monitor tab visibility\n useEffect(() => {\n const handleVisibilityChange = () => {\n isTabVisible.current = !document.hidden;\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n return () =>\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n }, []);\n\n const animate = useCallback(() => {\n const element = document.getElementById(elementId);\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n const origin = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n };\n\n const animationHandler = animations[animationType];\n if (!animationHandler) {\n console.error(`Animation type \"${animationType}\" not found`);\n return;\n }\n\n // Apply mobile performance optimizations\n const optimizedConfig = config\n ? optimizeConfigForMobile(config)\n : undefined;\n\n // Create particles\n particlesRef.current = animationHandler.createParticles(\n origin,\n optimizedConfig || {}\n ).map(particle => ({\n ...particle,\n config: optimizedConfig || config // Store config in particle for render functions\n }));\n\n // Create container\n const container = document.createElement('div');\n container.style.position = 'fixed';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.pointerEvents = 'none';\n container.style.zIndex = '9999';\n document.body.appendChild(container);\n containerRef.current = container;\n\n // Create React root\n const root = createRoot(container);\n rootRef.current = root;\n\n const containerRect = container.getBoundingClientRect();\n // Default gravity varies by animation type\n const defaultGravity =\n animationType === 'bubbles'\n ? -0.1\n : animationType === 'snow'\n ? 0.05\n : 0.35;\n const gravity = config?.physics?.gravity ?? defaultGravity;\n const friction = config?.physics?.friction ?? 0.98;\n const wind = config?.physics?.wind ?? 0;\n\n // Track frame count for mobile optimization\n let frameCount = 0;\n\n const updateParticles = () => {\n let activeParticles = 0;\n frameCount++;\n\n // Skip frame rendering on mobile to improve performance\n const skipFrame = shouldSkipFrame(frameCount);\n\n particlesRef.current = particlesRef.current.map((particle) => {\n if (particle.life <= 0) return particle;\n\n activeParticles++;\n\n // Update physics\n particle.x += particle.vx;\n particle.y += particle.vy;\n particle.vy += gravity;\n particle.vx += wind;\n particle.vx *= friction;\n particle.vy *= friction;\n particle.rotation += particle.vx * 2;\n particle.life -= 1.2;\n\n // Apply optional effects\n const effects = config?.effects;\n \n // Flutter effect for confetti\n if (effects?.flutter && animationType === 'confetti') {\n particle.x += Math.sin(particle.life * 0.1) * 0.5;\n particle.rotation += Math.sin(particle.life * 0.05) * 2;\n }\n \n // Wind drift for snow/leaves\n if (effects?.windDrift && (animationType === 'snow' || animationType === 'leaves')) {\n particle.x += Math.sin(particle.life * 0.05 + particle.id.charCodeAt(0)) * 0.8;\n }\n \n // Wobble effect for bubbles\n if (effects?.wobble && animationType === 'bubbles') {\n particle.x += Math.sin(particle.life * 0.08) * 0.3;\n particle.y += Math.cos(particle.life * 0.08) * 0.2;\n }\n\n // Special opacity handling for sparkles\n if (animationType === 'sparkles') {\n if (particle.life > 70) {\n particle.opacity = (100 - particle.life) / 30;\n } else if (particle.life < 30) {\n particle.opacity = particle.life / 30;\n }\n // Twinkle effect\n if (effects?.twinkle) {\n particle.opacity *= 0.5 + Math.sin(particle.life * 0.3) * 0.5;\n }\n } else if (animationType === 'stars' && effects?.twinkle) {\n // Twinkle effect for stars\n particle.opacity = (particle.life / 100) * (0.5 + Math.sin(particle.life * 0.3) * 0.5);\n } else {\n particle.opacity = particle.life / 100;\n }\n\n return particle;\n });\n\n // Render particles (skip rendering on mobile for some frames)\n if (rootRef.current && !skipFrame) {\n rootRef.current.render(\n <React.Fragment>\n {particlesRef.current\n .filter((p) => p.life > 0)\n .map((particle) => (\n <div\n key={particle.id}\n style={createParticleStyle(particle, containerRect)}\n >\n {animationHandler.renderParticle(particle)}\n </div>\n ))}\n </React.Fragment>\n );\n }\n\n if (activeParticles > 0 && isTabVisible.current) {\n animationFrameRef.current = requestAnimationFrame(updateParticles);\n } else {\n // Cleanup\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n if (rootRef.current) {\n rootRef.current.unmount();\n rootRef.current = null;\n }\n if (\n containerRef.current &&\n document.body.contains(containerRef.current)\n ) {\n document.body.removeChild(containerRef.current);\n containerRef.current = null;\n }\n setIsAnimating(false);\n }\n };\n\n setIsAnimating(true);\n updateParticles();\n }, [elementId, animationType, config]);\n\n const reward = useCallback(() => {\n if (!isAnimating) {\n animate();\n }\n }, [animate, isAnimating]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n if (rootRef.current) {\n rootRef.current.unmount();\n rootRef.current = null;\n }\n if (\n containerRef.current &&\n document.body.contains(containerRef.current)\n ) {\n document.body.removeChild(containerRef.current);\n containerRef.current = null;\n }\n };\n }, []);\n\n return { reward, isAnimating };\n};\n"],"names":["defaultColors","useState","useRef","useEffect","useCallback","createRoot"],"mappings":"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"}