partycles 0.4.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -1
- package/dist/animations/animations/index.d.ts.map +1 -1
- package/dist/animations/index.d.ts +1 -0
- package/dist/animations/index.d.ts.map +1 -1
- package/dist/animations/mobileOptimizations.d.ts +6 -0
- package/dist/animations/mobileOptimizations.d.ts.map +1 -0
- package/dist/animations/types.d.ts +1 -1
- package/dist/animations/types.d.ts.map +1 -1
- package/dist/animations/useReward.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +103 -1237
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +103 -1235
- package/dist/index.js.map +1 -1
- package/dist/mobileOptimizations.d.ts +6 -0
- package/dist/mobileOptimizations.d.ts.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/useReward.d.ts.map +1 -1
- package/package.json +14 -3
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/lightning.tsx","../src/animations/petals.tsx","../src/animations/aurora.tsx","../src/animations/fireflies.tsx","../src/animations/paint.tsx","../src/animations/music.tsx","../src/animations/balloons.tsx","../src/animations/galaxy.tsx","../src/animations/matrix.tsx","../src/animations/pixels.tsx","../src/animations/glitch.tsx","../src/animations/dice.tsx","../src/animations/levelup.tsx","../src/animations/magicdust.tsx","../src/animations/ghosts.tsx","../src/animations/crystals.tsx","../src/animations/dragons.tsx","../src/animations/runes.tsx","../src/animations/butterflies.tsx","../src/animations/leaves.tsx","../src/animations/rain.tsx","../src/animations/dandelion.tsx","../src/animations/bees.tsx","../src/animations/popcorn.tsx","../src/animations/champagne.tsx","../src/animations/candy.tsx","../src/animations/donuts.tsx","../src/animations/pizza.tsx","../src/animations/index.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 colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#ffffff';\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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722'];\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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst fireworkColors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff', '#ffffff'];\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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst bubbleColors = ['rgba(66, 165, 245, 0.4)', 'rgba(41, 182, 246, 0.4)', 'rgba(38, 198, 218, 0.4)', 'rgba(129, 212, 250, 0.4)'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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: '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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst lightningColors = ['#FFFF00', '#FFFFFF', '#00FFFF', '#FF00FF'];\n\nexport const createLightningParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 20,\n spread = 360,\n startVelocity = 50,\n colors = lightningColors,\n elementSize = 30\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(0, spread) * (Math.PI / 180);\n const velocity = randomInRange(startVelocity * 0.7, startVelocity * 1.3);\n \n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.sin(angle) * velocity,\n vy: -Math.abs(Math.cos(angle) * velocity * 0.5), // Mostly horizontal movement\n life: config.lifetime || 60, // Quick flashes\n opacity: 1,\n size: randomInRange(elementSize * 0.5, elementSize * 1.5),\n rotation: randomInRange(0, 360),\n color: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderLightningParticle = (particle: Particle): React.ReactNode => {\n // Create zigzag pattern based on particle life\n const zigzagOffset = Math.sin(particle.life * 0.5) * 10;\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 filter: `blur(0.5px) brightness(2)`,\n transform: `translateX(${zigzagOffset}px) rotate(${particle.rotation}deg)`,\n }}\n >\n {/* Lightning bolt shape using CSS */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n background: particle.color,\n clipPath: 'polygon(0% 0%, 60% 0%, 40% 45%, 100% 45%, 0% 100%, 40% 55%, 20% 55%, 35% 100%)',\n boxShadow: `\n 0 0 10px ${particle.color},\n 0 0 20px ${particle.color},\n 0 0 30px ${particle.color}\n `,\n }}\n />\n {/* Electric glow effect */}\n <div\n style={{\n position: 'absolute',\n top: '-50%',\n left: '-50%',\n width: '200%',\n height: '200%',\n background: `radial-gradient(circle, ${particle.color}88 0%, transparent 70%)`,\n animation: `electricPulse ${randomInRange(100, 200)}ms infinite`,\n }}\n />\n </div>\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst auroraColors = ['#00ff88', '#00ffaa', '#00ddff', '#0099ff', '#0066ff', '#9933ff', '#ff00ff'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst paintColors = ['#FF006E', '#FB5607', '#FFBE0B', '#8338EC', '#3A86FF', '#06FFB4'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst musicColors = ['#FF006E', '#8338EC', '#3A86FF', '#FB5607', '#FFBE0B'];\n\nexport const createMusicParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 20,\n spread = 100,\n startVelocity = 8,\n colors = musicColors,\n elementSize = 25\n } = config;\n\n const particles: Particle[] = [];\n const notes = ['♪', '♫', '♬', '♩', '♭', '♯'];\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 + randomInRange(-20, 20),\n y: origin.y,\n vx: Math.sin(angle) * velocity * 0.3,\n vy: -Math.abs(Math.cos(angle)) * velocity * 0.5, // Always go up slowly\n life: config.lifetime || 200,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: i % notes.length, // Store which note to use\n color: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#ffffff',\n });\n }\n\n return particles;\n};\n\nexport const renderMusicParticle = (particle: Particle): React.ReactNode => {\n const notes = ['♪', '♫', '♬', '♩', '♭', '♯'];\n const note = notes[Math.floor(particle.rotation)];\n \n // Wave motion as notes float up\n const waveX = Math.sin(particle.life * 0.05) * 20;\n const wobble = Math.sin(particle.life * 0.1) * 10;\n \n // Simple fade based on particle life\n // Assume default lifetime of 300 if not set\n const totalLife = 300;\n const age = totalLife - particle.life; // How old the particle is\n \n // Fade in during first 20 frames\n const fadeIn = age < 20 ? age / 20 : 1;\n // Fade out during last 50 frames\n const fadeOut = particle.life < 50 ? particle.life / 50 : 1;\n const opacity = Math.min(fadeIn, fadeOut) * particle.opacity;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n fontWeight: 'bold',\n position: 'relative',\n transform: `\n translateX(${waveX}px) \n rotate(${wobble}deg)\n scale(${0.8 + opacity * 0.2})\n `,\n color: particle.color,\n opacity,\n textShadow: `\n 0 0 10px ${particle.color}88,\n 0 0 20px ${particle.color}44,\n 2px 2px 3px rgba(0,0,0,0.3)\n `,\n transition: 'transform 0.3s ease',\n userSelect: 'none',\n }}\n >\n {note}\n \n {/* Musical staff lines effect */}\n <div\n style={{\n position: 'absolute',\n top: '40%',\n left: '-20%',\n width: '140%',\n height: '1px',\n background: `linear-gradient(90deg, transparent, ${particle.color}33, transparent)`,\n opacity: opacity * 0.5,\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '60%',\n left: '-20%',\n width: '140%',\n height: '1px',\n background: `linear-gradient(90deg, transparent, ${particle.color}33, transparent)`,\n opacity: opacity * 0.3,\n }}\n />\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst balloonColors = ['#FF006E', '#FB5607', '#FFBE0B', '#8338EC', '#3A86FF', '#06FFB4', '#FF4081'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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: '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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst galaxyColors = ['#FFFFFF', '#FFF9C4', '#BBDEFB', '#C5CAE9', '#D1C4E9', '#FFE082', '#FFCCBC'];\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: randomInRange(elementSize * 0.3, elementSize) * (1 - progress * 0.5), // Smaller at edges\n rotation: randomInRange(0, 360),\n color: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst matrixChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン';\n\nexport const createMatrixParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 50,\n elementSize = 300\n } = config;\n\n const particles: Particle[] = [];\n const columns = Math.floor(elementSize / 20);\n \n for (let i = 0; i < columns; i++) {\n const columnX = origin.x - elementSize / 2 + (i / columns) * elementSize;\n const columnParticles = Math.floor(Math.random() * 15) + 10;\n \n for (let j = 0; j < columnParticles; j++) {\n const charIndex = Math.floor(Math.random() * matrixChars.length);\n const speed = randomInRange(80, 120);\n \n particles.push({\n id: generateId(),\n x: columnX + randomInRange(-10, 10),\n y: origin.y - elementSize / 2 - j * 25 - randomInRange(0, 100),\n vx: columnParticles, // Store columnHeight in vx (since we don't use horizontal movement)\n vy: speed,\n life: config.lifetime || 150,\n opacity: 1,\n size: 20 + (j * 0.1), // Store fadeDelay as decimal part\n rotation: charIndex + (columnParticles * 1000), // Store charIndex and columnHeight\n color: '#00ff00',\n });\n }\n }\n \n return particles.slice(0, particleCount);\n};\n\nexport const renderMatrixParticle = (particle: Particle): React.ReactNode => {\n // Extract stored values\n const charIndex = Math.floor(particle.rotation % 1000);\n const columnHeight = Math.floor(particle.rotation / 1000);\n const fadeDelay = (particle.size - Math.floor(particle.size));\n const character = matrixChars[charIndex] || matrixChars[0];\n \n const brightness = 1 - (fadeDelay / columnHeight) * 0.5;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: '20px',\n fontFamily: 'monospace',\n fontWeight: 'bold',\n color: `rgba(${0}, ${255 * brightness}, ${0}, ${particle.opacity})`,\n textShadow: `0 0 10px rgba(0, ${255 * brightness}, 0, ${particle.opacity * 0.8})`,\n userSelect: 'none',\n }}\n >\n {character}\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor, degreesToRadians } from '../utils';\n\nconst pixelColors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#FFA500', '#FF1493'];\n\nexport const createPixelParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 30,\n colors = pixelColors,\n elementSize = 20\n } = config;\n\n const particles: Particle[] = [];\n const gridSize = Math.floor(Math.sqrt(particleCount));\n const spacing = 30;\n \n for (let i = 0; i < gridSize; i++) {\n for (let j = 0; j < gridSize; j++) {\n const targetX = origin.x + (i - gridSize / 2) * spacing;\n const targetY = origin.y + (j - gridSize / 2) * spacing;\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(150, 300);\n \n particles.push({\n id: generateId(),\n x: targetX,\n y: targetY,\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity,\n life: config.lifetime || 150,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize),\n // Store targetX offset in rotation (from -500 to 500, add 1000 to make positive)\n rotation: ((targetX - origin.x) + 500) + ((targetY - origin.y) + 500) * 1000,\n color: getRandomColor(colors),\n });\n }\n }\n \n return particles.slice(0, particleCount);\n};\n\nexport const renderPixelParticle = (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 boxShadow: `0 0 ${particle.size / 2}px ${particle.color}`,\n }}\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 {\n particleCount = 20,\n elementSize = 200\n } = 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 = 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: 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 = channel === 'r' ? 'screen' : \n 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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, degreesToRadians } from '../utils';\n\nconst getDiceFace = (value: number): string => {\n const faces = ['⚀', '⚁', '⚂', '⚃', '⚄', '⚅'];\n return faces[value - 1] || '⚀';\n};\n\nexport const createDiceParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 8,\n startVelocity = 25,\n elementSize = 40\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 diceValue = Math.floor(randomInRange(1, 7));\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.8, elementSize * 1.2),\n // Store dice value (1-6) in lower bits, and rotation angles in upper bits\n rotation: diceValue + (Math.floor(randomInRange(0, 360)) * 10),\n color: '#ffffff',\n });\n }\n \n return particles;\n};\n\nexport const renderDiceParticle = (particle: Particle): React.ReactNode => {\n const diceValue = particle.rotation % 10;\n const rotationAngle = Math.floor(particle.rotation / 10);\n \n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n fontSize: `${particle.size * 0.8}px`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fff',\n color: '#000',\n borderRadius: `${particle.size * 0.2}px`,\n transform: `rotate(${rotationAngle}deg)`,\n transformStyle: 'preserve-3d',\n boxShadow: '0 4px 8px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.5)',\n border: '2px solid #333',\n fontWeight: 'bold',\n }}\n >\n {getDiceFace(diceValue)}\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, degreesToRadians } from '../utils';\n\nconst levelUpTexts = ['+1', '+10', '+100', 'XP', '+XP', 'LEVEL UP!', 'CRITICAL!', 'COMBO!', 'PERFECT!'];\nconst levelUpColors = [\n { text: '#FFD700', glow: '#FFA500' }, // Gold\n { text: '#00FF00', glow: '#00AA00' }, // Green\n { text: '#00FFFF', glow: '#0088FF' }, // Cyan\n { text: '#FF00FF', glow: '#AA00AA' }, // Magenta\n { text: '#FFFF00', glow: '#FFAA00' }, // Yellow\n];\n\nexport const createLevelUpParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 10,\n startVelocity = 20,\n elementSize = 30\n } = config;\n\n const particles: Particle[] = [];\n \n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-45, 45);\n const velocity = randomInRange(startVelocity * 0.5, startVelocity * 1.5);\n const colorSetIndex = Math.floor(Math.random() * levelUpColors.length);\n const colorSet = levelUpColors[colorSetIndex] || levelUpColors[0];\n const textIndex = Math.floor(Math.random() * levelUpTexts.length);\n const text = levelUpTexts[textIndex];\n const isMainText = text === 'LEVEL UP!' || text === 'CRITICAL!';\n const fontSize = isMainText ? randomInRange(elementSize * 1.3, elementSize * 2) : randomInRange(elementSize * 0.7, elementSize * 1.2);\n \n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y,\n vx: Math.sin(degreesToRadians(angle)) * velocity,\n vy: -Math.cos(degreesToRadians(angle)) * velocity - 10,\n life: config.lifetime || 150,\n opacity: 1,\n size: fontSize, // Store fontSize in size\n // Store textIndex (0-8) + colorSetIndex (0-4) * 10 + delay (0-50) * 100\n rotation: textIndex + (colorSetIndex * 10) + (Math.floor(i * 5) * 100),\n color: colorSet!.text,\n });\n }\n \n return particles;\n};\n\nexport const renderLevelUpParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const textIndex = particle.rotation % 10;\n const colorSetIndex = Math.floor((particle.rotation % 100) / 10);\n const delay = Math.floor(particle.rotation / 100) / 100;\n \n const text = levelUpTexts[textIndex] || levelUpTexts[0];\n const colorSet = levelUpColors[colorSetIndex] || levelUpColors[0];\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n fontWeight: 'bold',\n fontFamily: 'Arial, sans-serif',\n color: particle.color,\n textShadow: `\n 0 0 10px ${colorSet!.glow},\n 0 0 20px ${colorSet!.glow},\n 0 0 30px ${particle.color},\n 0 2px 4px rgba(0,0,0,0.5)\n `,\n letterSpacing: '2px',\n textTransform: 'uppercase',\n whiteSpace: 'nowrap',\n userSelect: 'none',\n animationDelay: `${delay}s`,\n }}\n >\n {text}\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#9C27B0', '#E91E63', '#FF00FF', '#00FFFF', '#FFD700', '#FF69B4', '#DA70D6', '#9370DB'];\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 = (particle: Particle): 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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FFFFFF', '#F0F0F0', '#E8E8E8', '#F5F5F5', '#FAFAFA'];\n\nexport const createGhostParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 8,\n startVelocity = 5,\n colors = defaultColors,\n elementSize = 30\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Ghosts float upward with slight horizontal movement\n const angle = randomInRange(250, 290); // Mostly upward\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n const color = getRandomColor(colors);\n \n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-50, 50),\n y: origin.y + randomInRange(-20, 20),\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity,\n life: config.lifetime || 200,\n opacity: randomInRange(0.5, 0.8),\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(-15, 15),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderGhostParticle = (particle: Particle): React.ReactNode => {\n // Calculate wave effect for tail\n const waveOffset = Math.sin(Date.now() * 0.003 + particle.x * 0.01) * 3;\n \n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size * 1.4}px`,\n position: 'relative',\n transform: `rotate(${particle.rotation}deg)`,\n }}\n >\n {/* Ghost body */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '70%',\n backgroundColor: particle.color,\n borderRadius: '50% 50% 0 0',\n boxShadow: `0 0 20px rgba(255, 255, 255, 0.5), inset 0 0 10px rgba(0, 0, 0, 0.1)`,\n }}\n />\n \n {/* Ghost tail with wavy effect */}\n <div\n style={{\n position: 'absolute',\n bottom: 0,\n width: '100%',\n height: '40%',\n backgroundColor: particle.color,\n clipPath: `polygon(\n 0 0,\n 100% 0,\n 100% 60%,\n ${75 + waveOffset}% 80%,\n ${50 - waveOffset}% 100%,\n ${25 + waveOffset}% 80%,\n 0 60%\n )`,\n }}\n />\n \n {/* Eyes */}\n <div\n style={{\n position: 'absolute',\n top: '30%',\n left: '25%',\n width: '15%',\n height: '15%',\n backgroundColor: '#000',\n borderRadius: '50%',\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '30%',\n right: '25%',\n width: '15%',\n height: '15%',\n backgroundColor: '#000',\n borderRadius: '50%',\n }}\n />\n \n {/* Mouth */}\n <div\n style={{\n position: 'absolute',\n top: '45%',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '25%',\n height: '15%',\n border: '2px solid #000',\n borderTop: 'none',\n borderRadius: '0 0 50% 50%',\n }}\n />\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FF1493', '#00CED1', '#FFD700', '#FF69B4', '#7B68EE', '#00FA9A', '#FF6347', '#4169E1'];\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: 'radial-gradient(circle, rgba(255, 255, 255, 0.8), transparent)',\n borderRadius: '50%',\n filter: 'blur(2px)',\n }}\n />\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FF4500', '#DC143C', '#B22222', '#8B0000', '#FF6347', '#FF8C00'];\n\nexport const createDragonParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 6,\n startVelocity = 12,\n colors = defaultColors,\n elementSize = 40\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Dragons fly in various directions with swooping motion\n const angle = randomInRange(0, 360);\n const velocity = randomInRange(startVelocity * 0.7, startVelocity);\n const color = getRandomColor(colors);\n \n particles.push({\n id: generateId(),\n x: origin.x + randomInRange(-30, 30),\n y: origin.y + randomInRange(-30, 30),\n vx: Math.cos(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity,\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize),\n rotation: angle,\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderDragonParticle = (particle: Particle): React.ReactNode => {\n // Calculate wing flap animation\n const wingFlap = Math.sin(Date.now() * 0.01 + particle.x) * 10;\n // Calculate fire breath pulse\n const firePulse = (Math.sin(Date.now() * 0.005 + particle.y) + 1) / 2;\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: `rotate(${particle.rotation}deg)`,\n }}\n >\n {/* Dragon body */}\n <div\n style={{\n position: 'absolute',\n width: '60%',\n height: '40%',\n top: '30%',\n left: '20%',\n backgroundColor: particle.color,\n borderRadius: '50% 40% 40% 50%',\n boxShadow: `0 2px 10px rgba(0, 0, 0, 0.3)`,\n }}\n />\n \n {/* Dragon head */}\n <div\n style={{\n position: 'absolute',\n width: '35%',\n height: '35%',\n top: '25%',\n right: '15%',\n backgroundColor: particle.color,\n borderRadius: '40% 50% 50% 40%',\n transform: 'rotate(-10deg)',\n }}\n >\n {/* Eye */}\n <div\n style={{\n position: 'absolute',\n width: '20%',\n height: '20%',\n top: '30%',\n right: '25%',\n backgroundColor: '#FFD700',\n borderRadius: '50%',\n boxShadow: '0 0 4px #FFD700',\n }}\n />\n </div>\n \n {/* Wings */}\n <div\n style={{\n position: 'absolute',\n width: '40%',\n height: '50%',\n top: '15%',\n left: '30%',\n backgroundColor: `${particle.color}CC`,\n clipPath: 'polygon(0% 100%, 50% 0%, 100% 30%, 90% 60%, 100% 90%, 50% 100%)',\n transform: `rotateX(${wingFlap}deg)`,\n transformOrigin: 'bottom center',\n }}\n />\n <div\n style={{\n position: 'absolute',\n width: '40%',\n height: '50%',\n top: '35%',\n left: '30%',\n backgroundColor: `${particle.color}AA`,\n clipPath: 'polygon(0% 0%, 50% 0%, 100% 30%, 90% 60%, 100% 90%, 50% 100%)',\n transform: `rotateX(${-wingFlap}deg)`,\n transformOrigin: 'top center',\n }}\n />\n \n {/* Tail */}\n <div\n style={{\n position: 'absolute',\n width: '40%',\n height: '15%',\n top: '35%',\n left: '5%',\n backgroundColor: particle.color,\n clipPath: 'polygon(0% 50%, 70% 0%, 100% 20%, 100% 80%, 70% 100%, 0% 50%)',\n }}\n />\n \n {/* Fire breath */}\n <div\n style={{\n position: 'absolute',\n width: '30%',\n height: '20%',\n top: '35%',\n right: '5%',\n background: `radial-gradient(ellipse, #FFD700 0%, #FF4500 50%, transparent 100%)`,\n transform: `scale(${0.8 + firePulse * 0.4})`,\n opacity: 0.8 + firePulse * 0.2,\n filter: 'blur(1px)',\n }}\n />\n <div\n style={{\n position: 'absolute',\n width: '25%',\n height: '15%',\n top: '37%',\n right: '0%',\n background: `radial-gradient(ellipse, #FFA500 0%, #FF6347 50%, transparent 100%)`,\n transform: `scale(${0.6 + firePulse * 0.6})`,\n opacity: 0.6 + firePulse * 0.4,\n filter: 'blur(2px)',\n }}\n />\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#9C27B0', '#673AB7', '#3F51B5', '#00BCD4', '#4CAF50', '#FFEB3B', '#FF9800'];\n\n// Ancient rune symbols\nconst runeSymbols = [\n 'ᚠ', 'ᚢ', 'ᚦ', 'ᚨ', 'ᚱ', 'ᚲ', 'ᚷ', 'ᚹ', 'ᚺ', 'ᚾ', 'ᛁ', 'ᛃ', 'ᛇ', 'ᛈ', 'ᛉ', 'ᛋ', 'ᛏ', 'ᛒ', 'ᛖ', 'ᛗ', 'ᛚ', 'ᛜ', 'ᛞ', 'ᛟ'\n];\n\nexport const createRuneParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 12,\n startVelocity = 6,\n colors = defaultColors,\n elementSize = 35\n } = config;\n\n const particles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n // Runes float upward in a mystical pattern\n const angle = randomInRange(250, 290); // Mostly upward\n const velocity = randomInRange(startVelocity * 0.3, startVelocity * 0.7);\n const color = getRandomColor(colors);\n \n // Create circular spawn pattern\n const spawnAngle = (i / particleCount) * 360;\n const spawnRadius = randomInRange(20, 60);\n \n const runeIndex = Math.floor(Math.random() * runeSymbols.length);\n \n particles.push({\n id: generateId(),\n x: origin.x + Math.cos(degreesToRadians(spawnAngle)) * spawnRadius,\n y: origin.y + Math.sin(degreesToRadians(spawnAngle)) * spawnRadius,\n vx: Math.cos(degreesToRadians(angle)) * velocity + randomInRange(-1, 1),\n vy: Math.sin(degreesToRadians(angle)) * velocity,\n life: config.lifetime || 160,\n opacity: 0,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n // Store runeIndex in lower bits of rotation, keep rotation angle in upper bits\n rotation: runeIndex + (Math.floor(randomInRange(0, 360)) * 100),\n color,\n });\n }\n\n return particles;\n};\n\nexport const renderRuneParticle = (particle: Particle): React.ReactNode => {\n // Extract rune index and rotation from encoded value\n const runeIndex = particle.rotation % 100;\n const rotationAngle = Math.floor(particle.rotation / 100);\n const runeSymbol = runeSymbols[runeIndex] || runeSymbols[0];\n \n // Calculate pulsing glow effect\n const glowIntensity = (Math.sin(Date.now() * 0.003 + particle.x * 0.01) + 1) / 2;\n // Fade in and out based on life\n const fadeProgress = particle.life > 120 ? (160 - particle.life) / 40 : particle.life < 40 ? particle.life / 40 : 1;\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: `rotate(${rotationAngle}deg)`,\n opacity: fadeProgress,\n }}\n >\n {/* Outer glow circle */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n background: `radial-gradient(circle, ${particle.color}44 0%, transparent 70%)`,\n transform: `scale(${1.5 + glowIntensity * 0.5})`,\n filter: 'blur(4px)',\n }}\n />\n \n {/* Inner glow */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n background: `radial-gradient(circle, ${particle.color}88 0%, ${particle.color}44 50%, transparent 100%)`,\n transform: `scale(${1.2 + glowIntensity * 0.3})`,\n }}\n />\n \n {/* Rune symbol */}\n <div\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: `${particle.size * 0.7}px`,\n fontWeight: 'bold',\n color: '#FFFFFF',\n textShadow: `\n 0 0 10px ${particle.color},\n 0 0 20px ${particle.color},\n 0 0 30px ${particle.color},\n 0 0 40px ${particle.color}\n `,\n filter: `brightness(${1.5 + glowIntensity * 0.5})`,\n }}\n >\n {runeSymbol}\n </div>\n \n {/* Magical sparkles around the rune */}\n {[0, 72, 144, 216, 288].map((angle, index) => (\n <div\n key={index}\n style={{\n position: 'absolute',\n width: '4px',\n height: '4px',\n backgroundColor: '#FFFFFF',\n borderRadius: '50%',\n top: '50%',\n left: '50%',\n transform: `\n translate(-50%, -50%) \n rotate(${angle + rotationAngle}deg) \n translateY(-${particle.size * 0.6}px)\n scale(${0.5 + glowIntensity})\n `,\n boxShadow: '0 0 6px #FFFFFF',\n opacity: glowIntensity,\n }}\n />\n ))}\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#F7DC6F', '#BB8FCE'];\n\nexport const createButterflyParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 6,\n startVelocity = 3,\n colors = defaultColors,\n elementSize = 40\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 + randomInRange(-50, 50),\n y: origin.y + randomInRange(-30, 30),\n vx: Math.cos(angle * Math.PI / 180) * velocity,\n vy: -Math.abs(Math.sin(angle * Math.PI / 180) * velocity * 0.5), // Float upward\n life: config.lifetime || 200,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n // Encode wing phase (0-360), wobble phase (0-360), and rotation speed (-10 to 10)\n rotation: Math.floor(randomInRange(0, 360)) + (Math.floor(randomInRange(0, 360)) * 1000) + ((Math.floor(randomInRange(-10, 10)) + 10) * 1000000),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderButterflyParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const wingPhase = (particle.rotation % 1000);\n const wobblePhase = Math.floor((particle.rotation % 1000000) / 1000);\n const rotationSpeed = (Math.floor(particle.rotation / 1000000) - 10) / 10;\n \n // Calculate wing flapping and wobble\n const wingAngle = Math.sin((Date.now() * 0.01 + wingPhase) * Math.PI / 180) * 30;\n const wobbleX = Math.sin((Date.now() * 0.003 + wobblePhase) * Math.PI / 180) * 10;\n const rotation = (Date.now() * rotationSpeed * 0.01) % 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(${wobbleX}px) rotate(${rotation}deg)`,\n }}\n >\n <svg\n width={particle.size}\n height={particle.size}\n viewBox=\"-25 -25 50 50\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n {/* Left wing */}\n <ellipse\n cx=\"-8\"\n cy=\"0\"\n rx=\"12\"\n ry=\"18\"\n fill={particle.color}\n opacity=\"0.8\"\n transform={`rotate(${-wingAngle} 0 0)`}\n />\n <ellipse\n cx=\"-6\"\n cy=\"-10\"\n rx=\"8\"\n ry=\"12\"\n fill={particle.color}\n opacity=\"0.6\"\n transform={`rotate(${-wingAngle - 15} 0 0)`}\n />\n \n {/* Right wing */}\n <ellipse\n cx=\"8\"\n cy=\"0\"\n rx=\"12\"\n ry=\"18\"\n fill={particle.color}\n opacity=\"0.8\"\n transform={`rotate(${wingAngle} 0 0)`}\n />\n <ellipse\n cx=\"6\"\n cy=\"-10\"\n rx=\"8\"\n ry=\"12\"\n fill={particle.color}\n opacity=\"0.6\"\n transform={`rotate(${wingAngle + 15} 0 0)`}\n />\n \n {/* Body */}\n <ellipse\n cx=\"0\"\n cy=\"0\"\n rx=\"3\"\n ry=\"15\"\n fill=\"#333\"\n />\n \n {/* Antennae */}\n <line\n x1=\"0\"\n y1=\"-12\"\n x2=\"-3\"\n y2=\"-18\"\n stroke=\"#333\"\n strokeWidth=\"1\"\n />\n <line\n x1=\"0\"\n y1=\"-12\"\n x2=\"3\"\n y2=\"-18\"\n stroke=\"#333\"\n strokeWidth=\"1\"\n />\n \n {/* Wing patterns */}\n <circle cx=\"-8\" cy=\"0\" r=\"3\" fill=\"white\" opacity=\"0.4\" />\n <circle cx=\"8\" cy=\"0\" r=\"3\" fill=\"white\" opacity=\"0.4\" />\n <circle cx=\"-6\" cy=\"-8\" r=\"2\" fill=\"black\" opacity=\"0.3\" />\n <circle cx=\"6\" cy=\"-8\" r=\"2\" fill=\"black\" opacity=\"0.3\" />\n </svg>\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#D2691E', '#CD853F', '#8B4513', '#A0522D', '#FF8C00', '#FF6347'];\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: 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 = Math.sin((Date.now() * 0.002 + tumblePhase) * Math.PI / 180) * 30;\n const swayX = 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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#4A90E2', '#5BA0F2', '#6BB0FF', '#3A80D2'];\n\nexport const createRainParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 50,\n colors = defaultColors,\n elementSize = 300\n } = config;\n\n const particles: Particle[] = [];\n \n for (let i = 0; i < particleCount; i++) {\n particles.push({\n id: generateId(),\n x: randomInRange(origin.x - elementSize/2, origin.x + elementSize/2),\n y: origin.y - randomInRange(0, elementSize),\n vx: randomInRange(-0.5, 0.5),\n vy: randomInRange(8, 12),\n life: config.lifetime || 150,\n opacity: randomInRange(0.3, 0.7),\n size: randomInRange(2, 4),\n // Encode: length (15-25) + splashing state (0 or 1) * 100 + splash frame (0-15) * 1000\n rotation: Math.floor(randomInRange(15, 25)),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderRainParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const length = particle.rotation % 100;\n const isSplashing = Math.floor((particle.rotation % 1000) / 100) === 1;\n const splashFrame = Math.floor(particle.rotation / 1000);\n \n // Render splash effect\n if (isSplashing && splashFrame < 15) {\n const splashRadius = splashFrame * 2;\n const splashOpacity = Math.max(0, 1 - splashFrame / 15) * 0.5;\n \n return (\n <div key={particle.id} style={{ position: 'relative' }}>\n <svg\n width={splashRadius * 4}\n height={splashRadius * 2}\n style={{\n position: 'absolute',\n left: -splashRadius * 2,\n top: -splashRadius,\n }}\n >\n {/* Splash ripples */}\n <ellipse\n cx={splashRadius * 2}\n cy={splashRadius}\n rx={splashRadius}\n ry={splashRadius / 3}\n fill=\"none\"\n stroke={particle.color}\n strokeWidth=\"1\"\n opacity={splashOpacity}\n />\n \n {/* Splash droplets */}\n {[0, 1, 2, 3].map((i) => {\n const angle = (i * 90 + 45) * Math.PI / 180;\n const distance = splashFrame * 1.5;\n const dropX = splashRadius * 2 + Math.cos(angle) * distance;\n const dropY = splashRadius - Math.sin(angle) * distance + splashFrame * 0.5;\n \n return (\n <circle\n key={i}\n cx={dropX}\n cy={dropY}\n r=\"1.5\"\n fill={particle.color}\n opacity={splashOpacity}\n />\n );\n })}\n </svg>\n </div>\n );\n }\n \n // Render falling raindrop\n return (\n <div key={particle.id} style={{ position: 'relative' }}>\n <svg\n width={particle.size * 2}\n height={length + particle.size * 3}\n style={{\n position: 'absolute',\n left: -particle.size,\n top: -length,\n }}\n >\n {/* Raindrop trail */}\n <line\n x1={particle.size}\n y1={0}\n x2={particle.size}\n y2={length}\n stroke={particle.color}\n strokeWidth={particle.size}\n strokeLinecap=\"round\"\n opacity={particle.opacity * 0.3}\n />\n \n {/* Raindrop head */}\n <ellipse\n cx={particle.size}\n cy={length + particle.size * 1.5}\n rx={particle.size}\n ry={particle.size * 1.5}\n fill={particle.color}\n opacity={particle.opacity}\n />\n </svg>\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FFFFFF', '#F5F5F5', '#FAFAFA'];\n\nexport const createDandelionParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n colors = defaultColors,\n elementSize = 15\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(-20, 20),\n y: origin.y + randomInRange(-20, 20),\n vx: randomInRange(-2, 2),\n vy: randomInRange(-1, -0.3),\n life: config.lifetime || 200,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n // Encode: rotation angle + float phase * 1000 + drift phase * 1000000\n rotation: Math.floor(randomInRange(0, 360)) + \n (Math.floor(randomInRange(0, 360)) * 1000) +\n (Math.floor(randomInRange(0, 360)) * 1000000),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderDandelionParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const rotationAngle = particle.rotation % 1000;\n const floatPhase = Math.floor((particle.rotation % 1000000) / 1000);\n const driftPhase = Math.floor(particle.rotation / 1000000);\n \n // Calculate floating effects\n const floatY = Math.sin((Date.now() * 0.002 + floatPhase) * Math.PI / 180) * 5;\n const driftX = Math.sin((Date.now() * 0.001 + driftPhase) * Math.PI / 180) * 3;\n const rotation = (Date.now() * 0.01 + rotationAngle) % 360;\n \n const seedCount = 7;\n \n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size * 2}px`,\n height: `${particle.size * 2}px`,\n position: 'relative',\n transform: `translate(${driftX}px, ${floatY}px) rotate(${rotation}deg)`,\n opacity: particle.opacity,\n }}\n >\n <svg\n width={particle.size * 2}\n height={particle.size * 2}\n viewBox={`-${particle.size} -${particle.size} ${particle.size * 2} ${particle.size * 2}`}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n {/* Center */}\n <circle\n cx=\"0\"\n cy=\"0\"\n r=\"2\"\n fill=\"#F5F5DC\"\n />\n \n {/* Seed strands radiating from center */}\n {Array.from({ length: seedCount }).map((_, i) => {\n const angle = (i * 360 / seedCount) * Math.PI / 180;\n const endX = Math.cos(angle) * particle.size;\n const endY = Math.sin(angle) * particle.size;\n const midX = Math.cos(angle) * particle.size * 0.7;\n const midY = Math.sin(angle) * particle.size * 0.7;\n \n return (\n <g key={i}>\n {/* Strand */}\n <line\n x1=\"0\"\n y1=\"0\"\n x2={endX}\n y2={endY}\n stroke=\"#E5E5E5\"\n strokeWidth=\"0.5\"\n opacity=\"0.8\"\n />\n \n {/* Fluffy part */}\n <circle\n cx={endX}\n cy={endY}\n r=\"3\"\n fill={particle.color}\n opacity=\"0.6\"\n />\n <circle\n cx={midX}\n cy={midY}\n r=\"2\"\n fill={particle.color}\n opacity=\"0.4\"\n />\n \n {/* Small filaments */}\n {[0, 1, 2].map((j) => {\n const filamentAngle = angle + (j - 1) * 0.1;\n const filamentX = endX + Math.cos(filamentAngle) * 2;\n const filamentY = endY + Math.sin(filamentAngle) * 2;\n \n return (\n <line\n key={j}\n x1={endX}\n y1={endY}\n x2={filamentX}\n y2={filamentY}\n stroke=\"#E5E5E5\"\n strokeWidth=\"0.3\"\n opacity=\"0.6\"\n />\n );\n })}\n </g>\n );\n })}\n </svg>\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FFD700', '#FFA500'];\n\nexport const createBeeParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 5,\n colors = defaultColors,\n elementSize = 18\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(-50, 50),\n y: origin.y + randomInRange(-50, 50),\n vx: randomInRange(2, 4),\n vy: randomInRange(-1, 1),\n life: config.lifetime || 300,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.1),\n // Encode: zigzag phase (0-360) + wing phase (0-360) * 1000 + buzz phase (0-360) * 1000000\n rotation: Math.floor(randomInRange(0, 360)) + \n (Math.floor(randomInRange(0, 360)) * 1000) +\n (Math.floor(randomInRange(0, 360)) * 1000000),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderBeeParticle = (particle: Particle): React.ReactNode => {\n // Extract encoded values\n const zigzagPhase = particle.rotation % 1000;\n const wingPhase = Math.floor((particle.rotation % 1000000) / 1000);\n const buzzPhase = Math.floor(particle.rotation / 1000000);\n \n // Calculate animations\n const zigzagY = Math.sin((Date.now() * 0.005 + zigzagPhase) * Math.PI / 180) * 15;\n const wingAngle = Math.sin((Date.now() * 0.02 + wingPhase) * Math.PI / 180) * 20;\n const buzzOffset = Math.sin((Date.now() * 0.015 + buzzPhase) * Math.PI / 180) * 2;\n \n // Calculate rotation based on movement direction\n const movementAngle = Math.atan2(particle.vy, particle.vx) * 180 / Math.PI;\n \n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size * 2}px`,\n height: `${particle.size * 2}px`,\n position: 'relative',\n transform: `translate(${buzzOffset}px, ${zigzagY}px) rotate(${movementAngle}deg)`,\n }}\n >\n <svg\n width={particle.size * 2}\n height={particle.size * 2}\n viewBox=\"-15 -10 30 20\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n }}\n >\n {/* Left wing */}\n <ellipse\n cx=\"-2\"\n cy=\"-3\"\n rx=\"8\"\n ry=\"4\"\n fill=\"#E5E5E5\"\n opacity=\"0.7\"\n transform={`rotate(${-wingAngle - 20} -2 -3)`}\n />\n \n {/* Right wing */}\n <ellipse\n cx=\"-2\"\n cy=\"3\"\n rx=\"8\"\n ry=\"4\"\n fill=\"#E5E5E5\"\n opacity=\"0.7\"\n transform={`rotate(${wingAngle + 20} -2 3)`}\n />\n \n {/* Body segments */}\n <ellipse\n cx=\"0\"\n cy=\"0\"\n rx=\"8\"\n ry=\"6\"\n fill={particle.color}\n />\n <ellipse\n cx=\"-6\"\n cy=\"0\"\n rx=\"6\"\n ry=\"5\"\n fill=\"#333\"\n />\n \n {/* Stripes */}\n <rect\n x=\"-3\"\n y=\"-6\"\n width=\"2\"\n height=\"12\"\n fill=\"#333\"\n />\n <rect\n x=\"1\"\n y=\"-6\"\n width=\"2\"\n height=\"12\"\n fill=\"#333\"\n />\n <rect\n x=\"5\"\n y=\"-5\"\n width=\"2\"\n height=\"10\"\n fill=\"#333\"\n />\n \n {/* Head */}\n <circle\n cx=\"8\"\n cy=\"0\"\n r=\"4\"\n fill=\"#333\"\n />\n \n {/* Eyes */}\n <circle\n cx=\"9\"\n cy=\"-1.5\"\n r=\"1\"\n fill=\"#FFF\"\n />\n <circle\n cx=\"9\"\n cy=\"1.5\"\n r=\"1\"\n fill=\"#FFF\"\n />\n \n {/* Antennae */}\n <line\n x1=\"10\"\n y1=\"-2\"\n x2=\"12\"\n y2=\"-4\"\n stroke=\"#333\"\n strokeWidth=\"0.5\"\n />\n <line\n x1=\"10\"\n y1=\"2\"\n x2=\"12\"\n y2=\"4\"\n stroke=\"#333\"\n strokeWidth=\"0.5\"\n />\n \n {/* Stinger */}\n <polygon\n points=\"-10,0 -12,1 -12,-1\"\n fill=\"#333\"\n />\n </svg>\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor, degreesToRadians } from '../utils';\n\nconst defaultColors = ['#FFE5B4', '#FFF8DC', '#FFFACD', '#FFF5EE'];\n\nexport const createPopcornParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 20,\n startVelocity = 25,\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 \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, // Initial upward boost\n life: config.lifetime || 150,\n opacity: 1,\n size: randomInRange(elementSize * 0.8, elementSize * 1.2),\n rotation: randomInRange(0, 360),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderPopcornParticle = (particle: Particle): React.ReactNode => {\n // Add some rotation animation\n const rotation = particle.rotation + (150 - particle.life) * 3;\n \n // Add bounce effect\n const bounceProgress = (150 - particle.life) / 150;\n const scale = 0.5 + Math.sin(bounceProgress * Math.PI) * 0.5;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n transform: `rotate(${rotation}deg) scale(${scale})`,\n opacity: particle.opacity,\n userSelect: 'none',\n }}\n >\n 🍿\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor, degreesToRadians } from '../utils';\n\nconst defaultColors = ['#F0E68C', '#FFD700', '#FFF8DC', '#FFFACD', '#F5DEB3'];\n\nexport const createChampagneParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 40,\n startVelocity = 30,\n colors = defaultColors,\n elementSize = 12\n } = config;\n\n const particles: Particle[] = [];\n \n for (let i = 0; i < particleCount; i++) {\n const isBubble = i < particleCount * 0.7;\n const angle = isBubble \n ? randomInRange(60, 120) // Mostly upward for bubbles\n : randomInRange(0, 360); // Any direction for cork\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(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity * (isBubble ? -1 : 1),\n life: config.lifetime || 200,\n opacity: isBubble ? 0.6 : 1,\n size: isBubble ? randomInRange(4, 8) : elementSize,\n // Encode: isBubble (0 or 1) + wobble phase * 10\n rotation: (isBubble ? 0 : 1) + Math.floor(randomInRange(0, 360)) * 10,\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderChampagneParticle = (particle: Particle): React.ReactNode => {\n const isBubble = (particle.rotation % 10) === 0;\n const wobblePhase = Math.floor(particle.rotation / 10);\n \n if (isBubble) {\n // Render bubble\n const wobble = Math.sin((Date.now() * 0.003 + wobblePhase) * Math.PI / 180) * 10;\n \n return (\n <div\n key={particle.id}\n style={{\n width: `${particle.size}px`,\n height: `${particle.size}px`,\n borderRadius: '50%',\n backgroundColor: particle.color,\n opacity: particle.opacity,\n border: `1px solid ${particle.color}`,\n transform: `translateX(${wobble}px)`,\n boxShadow: `inset -2px -2px 4px rgba(0,0,0,0.1), inset 2px 2px 4px rgba(255,255,255,0.5)`,\n }}\n />\n );\n }\n \n // Render cork (champagne bottle)\n const rotation = (Date.now() * 0.2 + wobblePhase) % 360;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n transform: `rotate(${rotation}deg)`,\n opacity: particle.opacity,\n userSelect: 'none',\n }}\n >\n 🍾\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FF69B4', '#FF1493', '#FFB6C1', '#FFC0CB', '#FF6347', '#FFA500', '#FFD700', '#98FB98', '#87CEEB', '#DDA0DD'];\nconst candyEmojis = ['🍬', '🍭', '🍮', '🍯'];\n\nexport const createCandyParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 20,\n startVelocity = 20,\n colors = defaultColors,\n elementSize = 25\n } = config;\n\n const particles: Particle[] = [];\n \n for (let i = 0; i < particleCount; i++) {\n const angle = randomInRange(-30, 30); // Mostly falling down\n const velocity = randomInRange(startVelocity * 0.5, startVelocity);\n \n particles.push({\n id: generateId(),\n x: origin.x,\n y: origin.y - 50, // Start above origin\n vx: Math.sin(angle * Math.PI / 180) * velocity * 0.5,\n vy: randomInRange(3, 6), // Fall down\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.7, elementSize * 1.3),\n // Encode candy type (0-3) + initial rotation * 10\n rotation: Math.floor(Math.random() * candyEmojis.length) + (Math.floor(randomInRange(0, 360)) * 10),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderCandyParticle = (particle: Particle): React.ReactNode => {\n const candyIndex = particle.rotation % 10;\n const initialRotation = Math.floor(particle.rotation / 10);\n const candy = candyEmojis[candyIndex] || candyEmojis[0];\n \n // Add tumbling rotation\n const tumbleSpeed = 5;\n const rotation = initialRotation + (180 - particle.life) * tumbleSpeed;\n \n // Add sway effect\n const swayAmount = Math.sin((180 - particle.life) * 0.05) * 20;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n transform: `translateX(${swayAmount}px) rotate(${rotation}deg)`,\n opacity: particle.opacity,\n userSelect: 'none',\n }}\n >\n {candy}\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor, degreesToRadians } from '../utils';\n\nconst defaultColors = ['#FFB6C1', '#FF69B4', '#FFD700', '#FF6347', '#98D8C8', '#F7DC6F', '#BB8FCE', '#85C1E2'];\n\nexport const createDonutParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 15,\n startVelocity = 25,\n colors = defaultColors,\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(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 10, // Initial upward boost\n life: config.lifetime || 200,\n opacity: 1,\n size: randomInRange(elementSize * 0.6, elementSize * 1.4),\n rotation: randomInRange(0, 360),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderDonutParticle = (particle: Particle): React.ReactNode => {\n // Add spinning animation\n const spinSpeed = 8;\n const rotation = particle.rotation + (200 - particle.life) * spinSpeed;\n \n // Add bounce effect\n const bounceProgress = (200 - particle.life) / 200;\n const scale = 0.9 + Math.sin(bounceProgress * Math.PI * 2) * 0.1;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n transform: `rotate(${rotation}deg) scale(${scale})`,\n opacity: particle.opacity,\n userSelect: 'none',\n position: 'relative',\n }}\n >\n 🍩\n {/* Add sprinkles effect */}\n {[0, 120, 240].map((angle, i) => (\n <div\n key={i}\n style={{\n position: 'absolute',\n width: '3px',\n height: '8px',\n backgroundColor: particle.color,\n borderRadius: '40%',\n top: '50%',\n left: '50%',\n transform: `\n translate(-50%, -50%) \n rotate(${angle + rotation}deg) \n translateY(${particle.size * 0.3}px)\n scale(${scale})\n `,\n opacity: particle.opacity * 0.8,\n }}\n />\n ))}\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor, degreesToRadians } from '../utils';\n\nconst defaultColors = ['#FF6347', '#FFD700', '#98D8C8', '#FF8C00', '#DC143C'];\n\nexport const createPizzaParticles = (\n origin: { x: number; y: number },\n config: AnimationConfig\n): Particle[] => {\n const {\n particleCount = 12,\n startVelocity = 30,\n colors = defaultColors,\n elementSize = 35\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(degreesToRadians(angle)) * velocity,\n vy: Math.sin(degreesToRadians(angle)) * velocity - 15, // Initial upward boost\n life: config.lifetime || 180,\n opacity: 1,\n size: randomInRange(elementSize * 0.5, elementSize * 1.2),\n rotation: randomInRange(0, 360),\n color: getRandomColor(colors),\n });\n }\n \n return particles;\n};\n\nexport const renderPizzaParticle = (particle: Particle): React.ReactNode => {\n // Add spinning and flipping animation\n const spinSpeed = 10;\n const rotation = particle.rotation + (180 - particle.life) * spinSpeed;\n const flipAngle = (180 - particle.life) * 2;\n \n // Add wobble effect\n const wobble = Math.sin((180 - particle.life) * 0.1) * 10;\n \n // Scale animation\n const progress = (180 - particle.life) / 180;\n const scale = 0.8 + Math.sin(progress * Math.PI) * 0.2;\n \n return (\n <div\n key={particle.id}\n style={{\n fontSize: `${particle.size}px`,\n transform: `\n translateX(${wobble}px) \n rotate(${rotation}deg) \n rotateX(${flipAngle}deg)\n scale(${scale})\n `,\n transformStyle: 'preserve-3d',\n opacity: particle.opacity,\n userSelect: 'none',\n position: 'relative',\n }}\n >\n 🍕\n {/* Add topping effects */}\n {Math.random() > 0.5 && (\n <div\n style={{\n position: 'absolute',\n fontSize: `${particle.size * 0.4}px`,\n top: `${10 + Math.random() * 30}%`,\n left: `${10 + Math.random() * 30}%`,\n transform: `rotate(${Math.random() * 360}deg)`,\n opacity: particle.opacity * 0.8,\n }}\n >\n {['🍅', '🧀', '🌶️'][Math.floor(Math.random() * 3)]}\n </div>\n )}\n </div>\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 { createLightningParticles, renderLightningParticle } from './lightning';\nimport { createPetalParticles, renderPetalParticle } from './petals';\nimport { createAuroraParticles, renderAuroraParticle } from './aurora';\nimport { createFireflyParticles, renderFireflyParticle } from './fireflies';\nimport { createPaintParticles, renderPaintParticle } from './paint';\nimport { createMusicParticles, renderMusicParticle } from './music';\nimport { createBalloonParticles, renderBalloonParticle } from './balloons';\nimport { createGalaxyParticles, renderGalaxyParticle } from './galaxy';\nimport { createMatrixParticles, renderMatrixParticle } from './matrix';\nimport { createPixelParticles, renderPixelParticle } from './pixels';\nimport { createGlitchParticles, renderGlitchParticle } from './glitch';\nimport { createDiceParticles, renderDiceParticle } from './dice';\nimport { createLevelUpParticles, renderLevelUpParticle } from './levelup';\nimport { createMagicDustParticles, renderMagicDustParticle } from './magicdust';\nimport { createGhostParticles, renderGhostParticle } from './ghosts';\nimport { createCrystalParticles, renderCrystalParticle } from './crystals';\nimport { createDragonParticles, renderDragonParticle } from './dragons';\nimport { createRuneParticles, renderRuneParticle } from './runes';\nimport { createButterflyParticles, renderButterflyParticle } from './butterflies';\nimport { createLeafParticles, renderLeafParticle } from './leaves';\nimport { createRainParticles, renderRainParticle } from './rain';\nimport { createDandelionParticles, renderDandelionParticle } from './dandelion';\nimport { createBeeParticles, renderBeeParticle } from './bees';\nimport { createPopcornParticles, renderPopcornParticle } from './popcorn';\nimport { createChampagneParticles, renderChampagneParticle } from './champagne';\nimport { createCandyParticles, renderCandyParticle } from './candy';\nimport { createDonutParticles, renderDonutParticle } from './donuts';\nimport { createPizzaParticles, renderPizzaParticle } from './pizza';\n\n// React component animations\n// These don't exist in the demo\n// export { default as Confetti } from './confetti';\n// export { default as Sparkles } from './sparkles';\n// export { default as Hearts } from './hearts';\n// export { default as Fireworks } from './fireworks';\n// export { default as Bubbles } from './bubbles';\n// export { default as Stars } from './stars';\n// export { default as Popcorn } from './popcorn';\n// export { default as Champagne } from './champagne';\n// export { default as Candy } from './candy';\n// export { default as Donuts } from './donuts';\n// export { default as Pizza } from './pizza';\n\nexport type ParticleCreator = (origin: { x: number; y: number }, config: AnimationConfig) => 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 lightning: {\n createParticles: createLightningParticles,\n renderParticle: renderLightningParticle,\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 music: {\n createParticles: createMusicParticles,\n renderParticle: renderMusicParticle,\n },\n balloons: {\n createParticles: createBalloonParticles,\n renderParticle: renderBalloonParticle,\n },\n galaxy: {\n createParticles: createGalaxyParticles,\n renderParticle: renderGalaxyParticle,\n },\n matrix: {\n createParticles: createMatrixParticles,\n renderParticle: renderMatrixParticle,\n },\n pixels: {\n createParticles: createPixelParticles,\n renderParticle: renderPixelParticle,\n },\n glitch: {\n createParticles: createGlitchParticles,\n renderParticle: renderGlitchParticle,\n },\n dice: {\n createParticles: createDiceParticles,\n renderParticle: renderDiceParticle,\n },\n levelup: {\n createParticles: createLevelUpParticles,\n renderParticle: renderLevelUpParticle,\n },\n magicdust: {\n createParticles: createMagicDustParticles,\n renderParticle: renderMagicDustParticle,\n },\n ghosts: {\n createParticles: createGhostParticles,\n renderParticle: renderGhostParticle,\n },\n crystals: {\n createParticles: createCrystalParticles,\n renderParticle: renderCrystalParticle,\n },\n dragons: {\n createParticles: createDragonParticles,\n renderParticle: renderDragonParticle,\n },\n runes: {\n createParticles: createRuneParticles,\n renderParticle: renderRuneParticle,\n },\n butterflies: {\n createParticles: createButterflyParticles,\n renderParticle: renderButterflyParticle,\n },\n leaves: {\n createParticles: createLeafParticles,\n renderParticle: renderLeafParticle,\n },\n rain: {\n createParticles: createRainParticles,\n renderParticle: renderRainParticle,\n },\n dandelion: {\n createParticles: createDandelionParticles,\n renderParticle: renderDandelionParticle,\n },\n bees: {\n createParticles: createBeeParticles,\n renderParticle: renderBeeParticle,\n },\n popcorn: {\n createParticles: createPopcornParticles,\n renderParticle: renderPopcornParticle,\n },\n champagne: {\n createParticles: createChampagneParticles,\n renderParticle: renderChampagneParticle,\n },\n candy: {\n createParticles: createCandyParticles,\n renderParticle: renderCandyParticle,\n },\n donuts: {\n createParticles: createDonutParticles,\n renderParticle: renderDonutParticle,\n },\n pizza: {\n createParticles: createPizzaParticles,\n renderParticle: renderPizzaParticle,\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';\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\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 // Create particles\n particlesRef.current = animationHandler.createParticles(origin, config || {});\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 = animationType === 'bubbles' ? -0.1 : animationType === 'snow' ? 0.05 : 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 const updateParticles = () => {\n let activeParticles = 0;\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\n if (rootRef.current) {\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) {\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 (containerRef.current && document.body.contains(containerRef.current)) {\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 (containerRef.current && document.body.contains(containerRef.current)) {\n document.body.removeChild(containerRef.current);\n containerRef.current = null;\n }\n };\n }, []);\n\n return { reward, isAnimating };\n};"],"names":["defaultColors","useState","useRef","useCallback","createRoot","useEffect"],"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 colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#ffffff';\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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722'];\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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst fireworkColors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff', '#ffffff'];\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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst bubbleColors = ['rgba(66, 165, 245, 0.4)', 'rgba(41, 182, 246, 0.4)', 'rgba(38, 198, 218, 0.4)', 'rgba(129, 212, 250, 0.4)'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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: '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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst auroraColors = ['#00ff88', '#00ffaa', '#00ddff', '#0099ff', '#0066ff', '#9933ff', '#ff00ff'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst paintColors = ['#FF006E', '#FB5607', '#FFBE0B', '#8338EC', '#3A86FF', '#06FFB4'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst balloonColors = ['#FF006E', '#FB5607', '#FFBE0B', '#8338EC', '#3A86FF', '#06FFB4', '#FF4081'];\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: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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: '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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId } from '../utils';\n\nconst galaxyColors = ['#FFFFFF', '#FFF9C4', '#BBDEFB', '#C5CAE9', '#D1C4E9', '#FFE082', '#FFCCBC'];\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: randomInRange(elementSize * 0.3, elementSize) * (1 - progress * 0.5), // Smaller at edges\n rotation: randomInRange(0, 360),\n color: colors[Math.floor(Math.random() * colors.length)] || colors[0] || '#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};","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 {\n particleCount = 20,\n elementSize = 200\n } = 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 = 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: 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 = channel === 'r' ? 'screen' : \n 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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#9C27B0', '#E91E63', '#FF00FF', '#00FFFF', '#FFD700', '#FF69B4', '#DA70D6', '#9370DB'];\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 = (particle: Particle): 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};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, degreesToRadians, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#FF1493', '#00CED1', '#FFD700', '#FF69B4', '#7B68EE', '#00FA9A', '#FF6347', '#4169E1'];\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: 'radial-gradient(circle, rgba(255, 255, 255, 0.8), transparent)',\n borderRadius: '50%',\n filter: 'blur(2px)',\n }}\n />\n </div>\n );\n};","import React from 'react';\nimport { AnimationConfig, Particle } from '../types';\nimport { randomInRange, generateId, getRandomColor } from '../utils';\n\nconst defaultColors = ['#D2691E', '#CD853F', '#8B4513', '#A0522D', '#FF8C00', '#FF6347'];\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: 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 = Math.sin((Date.now() * 0.002 + tumblePhase) * Math.PI / 180) * 30;\n const swayX = 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};","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// React component animations\n// These don't exist in the demo\n// export { default as Confetti } from './confetti';\n// export { default as Sparkles } from './sparkles';\n// export { default as Hearts } from './hearts';\n// export { default as Fireworks } from './fireworks';\n// export { default as Bubbles } from './bubbles';\n// export { default as Stars } from './stars';\n// export { default as Popcorn } from './popcorn';\n// export { default as Champagne } from './champagne';\n// export { default as Candy } from './candy';\n// export { default as Donuts } from './donuts';\n// export { default as Pizza } from './pizza';\n\nexport type ParticleCreator = (origin: { x: number; y: number }, config: AnimationConfig) => 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};","import { AnimationConfig } from './types';\n\nexport const isMobileDevice = (): boolean => {\n if (typeof window === 'undefined') return false;\n \n // Check user agent\n const userAgent = navigator.userAgent || navigator.vendor || (window as any).opera;\n const isMobileUA = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);\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 = (config: AnimationConfig): 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 = ['fireflies', 'galaxy', 'aurora', 'crystals', 'glitch'];\n return heavyAnimations.includes(animationType);\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 { isMobileDevice, optimizeConfigForMobile, shouldSkipFrame } 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 () => 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 ? optimizeConfigForMobile(config) : undefined;\n \n // Create particles\n particlesRef.current = animationHandler.createParticles(origin, optimizedConfig || {});\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 = animationType === 'bubbles' ? -0.1 : animationType === 'snow' ? 0.05 : 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 (containerRef.current && document.body.contains(containerRef.current)) {\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 (containerRef.current && document.body.contains(containerRef.current)) {\n document.body.removeChild(containerRef.current);\n containerRef.current = null;\n }\n };\n }, []);\n\n return { reward, isAnimating };\n};"],"names":["defaultColors","useState","useRef","useEffect","useCallback","createRoot"],"mappings":"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"}
|