partycles 0.1.0 → 0.2.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.
Files changed (69) hide show
  1. package/README.md +83 -5
  2. package/dist/animations/animations/coins.d.ts +8 -0
  3. package/dist/animations/animations/coins.d.ts.map +1 -0
  4. package/dist/animations/animations/emoji.d.ts +19 -0
  5. package/dist/animations/animations/emoji.d.ts.map +1 -0
  6. package/dist/animations/animations/index.d.ts.map +1 -1
  7. package/dist/animations/animations/lightning.d.ts +8 -0
  8. package/dist/animations/animations/lightning.d.ts.map +1 -0
  9. package/dist/animations/animations/petals.d.ts +8 -0
  10. package/dist/animations/animations/petals.d.ts.map +1 -0
  11. package/dist/animations/animations/snow.d.ts +8 -0
  12. package/dist/animations/animations/snow.d.ts.map +1 -0
  13. package/dist/animations/bubbles.esm.js +1 -1
  14. package/dist/animations/bubbles.esm.js.map +1 -1
  15. package/dist/animations/bubbles.js +1 -1
  16. package/dist/animations/bubbles.js.map +1 -1
  17. package/dist/animations/coins.d.ts +8 -0
  18. package/dist/animations/coins.d.ts.map +1 -0
  19. package/dist/animations/confetti.esm.js +1 -1
  20. package/dist/animations/confetti.esm.js.map +1 -1
  21. package/dist/animations/confetti.js +1 -1
  22. package/dist/animations/confetti.js.map +1 -1
  23. package/dist/animations/emoji.d.ts +19 -0
  24. package/dist/animations/emoji.d.ts.map +1 -0
  25. package/dist/animations/emoji.esm.js +58 -0
  26. package/dist/animations/emoji.esm.js.map +1 -0
  27. package/dist/animations/emoji.js +62 -0
  28. package/dist/animations/emoji.js.map +1 -0
  29. package/dist/animations/fireworks.esm.js +1 -1
  30. package/dist/animations/fireworks.esm.js.map +1 -1
  31. package/dist/animations/fireworks.js +1 -1
  32. package/dist/animations/fireworks.js.map +1 -1
  33. package/dist/animations/hearts.esm.js +1 -1
  34. package/dist/animations/hearts.esm.js.map +1 -1
  35. package/dist/animations/hearts.js +1 -1
  36. package/dist/animations/hearts.js.map +1 -1
  37. package/dist/animations/index.d.ts +1 -0
  38. package/dist/animations/index.d.ts.map +1 -1
  39. package/dist/animations/lightning.d.ts +8 -0
  40. package/dist/animations/lightning.d.ts.map +1 -0
  41. package/dist/animations/petals.d.ts +8 -0
  42. package/dist/animations/petals.d.ts.map +1 -0
  43. package/dist/animations/snow.d.ts +8 -0
  44. package/dist/animations/snow.d.ts.map +1 -0
  45. package/dist/animations/snow.esm.js +48 -0
  46. package/dist/animations/snow.esm.js.map +1 -0
  47. package/dist/animations/snow.js +51 -0
  48. package/dist/animations/snow.js.map +1 -0
  49. package/dist/animations/sparkles.esm.js +1 -1
  50. package/dist/animations/sparkles.esm.js.map +1 -1
  51. package/dist/animations/sparkles.js +1 -1
  52. package/dist/animations/sparkles.js.map +1 -1
  53. package/dist/animations/stars.esm.js +1 -1
  54. package/dist/animations/stars.esm.js.map +1 -1
  55. package/dist/animations/stars.js +1 -1
  56. package/dist/animations/stars.js.map +1 -1
  57. package/dist/animations/types.d.ts +1 -1
  58. package/dist/animations/types.d.ts.map +1 -1
  59. package/dist/animations/useReward.d.ts.map +1 -1
  60. package/dist/index.d.ts +1 -0
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.esm.js +281 -8
  63. package/dist/index.esm.js.map +1 -1
  64. package/dist/index.js +281 -7
  65. package/dist/index.js.map +1 -1
  66. package/dist/types.d.ts +1 -1
  67. package/dist/types.d.ts.map +1 -1
  68. package/dist/useReward.d.ts.map +1 -1
  69. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -30,7 +30,7 @@ const createParticleStyle = (particle, containerRect) => {
30
30
 
31
31
  const defaultColors = ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722'];
32
32
  const createConfettiParticles = (origin, config) => {
33
- const { particleCount = 50, startVelocity = 55, colors = defaultColors, elementSize = 20 } = config;
33
+ const { particleCount = 50, startVelocity = 20, colors = defaultColors, elementSize = 20 } = config;
34
34
  const particles = [];
35
35
  for (let i = 0; i < particleCount; i++) {
36
36
  const angle = randomInRange(0, 360);
@@ -62,7 +62,7 @@ const renderConfettiParticle = (particle) => {
62
62
  };
63
63
 
64
64
  const createSparkleParticles = (origin, config) => {
65
- const { particleCount = 35, spread = 120, startVelocity = 45, elementSize = 25, colors = ['#FFD700', '#FFFFFF'] } = config;
65
+ const { particleCount = 35, spread = 120, startVelocity = 15, elementSize = 25, colors = ['#FFD700', '#FFFFFF'] } = config;
66
66
  const particles = [];
67
67
  for (let i = 0; i < particleCount; i++) {
68
68
  const velocityScale = startVelocity / 45; // Scale based on default
@@ -92,7 +92,7 @@ const renderSparkleParticle = (particle) => {
92
92
 
93
93
  const heartColors = ['#ff1744', '#e91e63', '#ff4569', '#ff6b6b', '#ee5a70'];
94
94
  const createHeartParticles = (origin, config) => {
95
- const { particleCount = 25, startVelocity = 30, colors = heartColors, elementSize = 30 } = config;
95
+ const { particleCount = 25, startVelocity = 12, colors = heartColors, elementSize = 30 } = config;
96
96
  const particles = [];
97
97
  for (let i = 0; i < particleCount; i++) {
98
98
  const angle = randomInRange(-45, -135);
@@ -122,7 +122,7 @@ const renderHeartParticle = (particle) => {
122
122
 
123
123
  const fireworkColors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff', '#ffffff'];
124
124
  const createFireworkParticles = (origin, config) => {
125
- const { particleCount = 60, startVelocity = 50, colors = fireworkColors, elementSize = 8 } = config;
125
+ const { particleCount = 60, startVelocity = 25, colors = fireworkColors, elementSize = 8 } = config;
126
126
  const particles = [];
127
127
  for (let i = 0; i < particleCount; i++) {
128
128
  const angle = (360 / particleCount) * i + randomInRange(-5, 5);
@@ -161,7 +161,7 @@ const renderFireworkParticle = (particle) => {
161
161
 
162
162
  const 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)'];
163
163
  const createBubbleParticles = (origin, config) => {
164
- const { particleCount = 30, spread = 80, startVelocity = 30, colors = bubbleColors, elementSize = 40 } = config;
164
+ const { particleCount = 30, spread = 80, startVelocity = 8, colors = bubbleColors, elementSize = 40 } = config;
165
165
  const particles = [];
166
166
  for (let i = 0; i < particleCount; i++) {
167
167
  particles.push({
@@ -196,7 +196,7 @@ const renderBubbleParticle = (particle) => {
196
196
 
197
197
  const starColors = ['#FFD700', '#FFA500', '#FF6347', '#FFE4B5'];
198
198
  const createStarParticles = (origin, config) => {
199
- const { particleCount = 40, startVelocity = 35, colors = starColors, elementSize = 30 } = config;
199
+ const { particleCount = 40, startVelocity = 18, colors = starColors, elementSize = 30 } = config;
200
200
  const particles = [];
201
201
  for (let i = 0; i < particleCount; i++) {
202
202
  const angle = randomInRange(0, 360);
@@ -223,6 +223,257 @@ const renderStarParticle = (particle) => {
223
223
  React.createElement("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" })));
224
224
  };
225
225
 
226
+ const snowColors = ['#FFFFFF', '#F0F8FF', '#F5F5F5', '#FAFAFA'];
227
+ const createSnowParticles = (origin, config) => {
228
+ const { particleCount = 50, spread = 200, startVelocity = 3, colors = snowColors, elementSize = 15 } = config;
229
+ const particles = [];
230
+ for (let i = 0; i < particleCount; i++) {
231
+ // Spread particles across the width, starting from above viewport
232
+ const x = origin.x + randomInRange(-spread * 2, spread * 2);
233
+ const y = origin.y - randomInRange(100, 300); // Start above the trigger point
234
+ particles.push({
235
+ id: generateId(),
236
+ x,
237
+ y,
238
+ vx: randomInRange(-0.5, 0.5), // Gentle horizontal drift
239
+ vy: randomInRange(startVelocity * 0.5, startVelocity * 1.2),
240
+ life: config.lifetime || 300, // Longer lifetime for snow
241
+ opacity: randomInRange(0.4, 0.9),
242
+ size: randomInRange(elementSize * 0.3, elementSize),
243
+ rotation: randomInRange(0, 360),
244
+ color: colors[Math.floor(Math.random() * colors.length)] || colors[0],
245
+ });
246
+ }
247
+ return particles;
248
+ };
249
+ const renderSnowParticle = (particle) => {
250
+ return (React.createElement("div", { key: particle.id, style: {
251
+ width: `${particle.size}px`,
252
+ height: `${particle.size}px`,
253
+ backgroundColor: particle.color,
254
+ borderRadius: '50%',
255
+ boxShadow: `
256
+ 0 0 ${particle.size * 0.5}px rgba(255, 255, 255, 0.8),
257
+ inset 0 0 ${particle.size * 0.3}px rgba(255, 255, 255, 0.5)
258
+ `,
259
+ filter: 'blur(0.5px)',
260
+ } }));
261
+ };
262
+
263
+ // Default emoji sets for different moods
264
+ const defaultEmojis = ['🎉', '🎊', '🎈', '🎁', '✨', '🌟', '💫', '🎯'];
265
+ const celebrationEmojis = ['🎉', '🎊', '🥳', '🎈', '🎁', '🍾', '🥂', '🎆'];
266
+ const loveEmojis = ['❤️', '💕', '💖', '💝', '💗', '💓', '💞', '💘'];
267
+ const happyEmojis = ['😊', '😄', '🥰', '😍', '🤗', '😘', '😁', '🤩'];
268
+ const natureEmojis = ['🌸', '🌺', '🌻', '🌹', '🌷', '🌼', '🍀', '🌿'];
269
+ const foodEmojis = ['🍕', '🍔', '🍟', '🌮', '🍿', '🍩', '🍪', '🧁'];
270
+ const createEmojiParticles = (origin, config) => {
271
+ const { particleCount = 30, spread = 100, startVelocity = 15, elementSize = 35, emojis = defaultEmojis } = config;
272
+ const particles = [];
273
+ for (let i = 0; i < particleCount; i++) {
274
+ const angle = randomInRange(-45, -135);
275
+ const velocity = randomInRange(startVelocity * 0.5, startVelocity * 1.2);
276
+ particles.push({
277
+ id: generateId(),
278
+ x: origin.x + randomInRange(-spread, spread),
279
+ y: origin.y,
280
+ vx: Math.cos((angle * Math.PI) / 180) * velocity,
281
+ vy: Math.sin((angle * Math.PI) / 180) * velocity,
282
+ life: config.lifetime || 180,
283
+ opacity: 1,
284
+ size: randomInRange(elementSize * 0.7, elementSize * 1.3),
285
+ rotation: randomInRange(-45, 45),
286
+ color: '', // Not used for emojis
287
+ element: emojis[Math.floor(Math.random() * emojis.length)]
288
+ });
289
+ }
290
+ return particles;
291
+ };
292
+ const renderEmojiParticle = (particle) => {
293
+ return (React.createElement("div", { key: particle.id, style: {
294
+ fontSize: `${particle.size}px`,
295
+ lineHeight: 1,
296
+ userSelect: 'none',
297
+ filter: particle.opacity < 0.5 ? 'blur(1px)' : undefined,
298
+ } }, particle.element));
299
+ };
300
+ // Export preset emoji sets for easy use
301
+ const emojiPresets = {
302
+ celebration: celebrationEmojis,
303
+ love: loveEmojis,
304
+ happy: happyEmojis,
305
+ nature: natureEmojis,
306
+ food: foodEmojis,
307
+ default: defaultEmojis
308
+ };
309
+
310
+ const coinColors = ['#FFD700', '#FFA500', '#FFB300', '#FFC700'];
311
+ const createCoinParticles = (origin, config) => {
312
+ const { particleCount = 30, spread = 70, startVelocity = 25, colors = coinColors, elementSize = 25 } = config;
313
+ const particles = [];
314
+ for (let i = 0; i < particleCount; i++) {
315
+ const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);
316
+ const velocity = randomInRange(startVelocity * 0.5, startVelocity);
317
+ particles.push({
318
+ id: generateId(),
319
+ x: origin.x,
320
+ y: origin.y,
321
+ vx: Math.sin(angle) * velocity,
322
+ vy: -Math.cos(angle) * velocity,
323
+ life: config.lifetime || 120,
324
+ opacity: 1,
325
+ size: randomInRange(elementSize * 0.8, elementSize * 1.2),
326
+ rotation: randomInRange(0, 360),
327
+ color: colors[Math.floor(Math.random() * colors.length)] || colors[0],
328
+ });
329
+ }
330
+ return particles;
331
+ };
332
+ const renderCoinParticle = (particle) => {
333
+ const spinSpeed = 8; // Degrees per frame
334
+ const currentRotation = particle.rotation + (120 - particle.life) * spinSpeed;
335
+ return (React.createElement("div", { key: particle.id, style: {
336
+ width: `${particle.size}px`,
337
+ height: `${particle.size}px`,
338
+ background: `radial-gradient(ellipse at 30% 30%, ${particle.color}, #B8860B)`,
339
+ borderRadius: '50%',
340
+ transform: `rotateY(${currentRotation}deg)`,
341
+ transformStyle: 'preserve-3d',
342
+ boxShadow: `
343
+ inset -2px -2px 4px rgba(0, 0, 0, 0.3),
344
+ inset 2px 2px 4px rgba(255, 255, 255, 0.5),
345
+ 0 2px 4px rgba(0, 0, 0, 0.3)
346
+ `,
347
+ border: `1px solid ${particle.color}`,
348
+ position: 'relative',
349
+ overflow: 'hidden',
350
+ } },
351
+ React.createElement("div", { style: {
352
+ position: 'absolute',
353
+ top: '50%',
354
+ left: '50%',
355
+ transform: 'translate(-50%, -50%)',
356
+ fontSize: `${particle.size * 0.5}px`,
357
+ fontWeight: 'bold',
358
+ color: '#B8860B',
359
+ textShadow: '1px 1px 1px rgba(0, 0, 0, 0.3)',
360
+ fontFamily: 'Arial, sans-serif',
361
+ } }, "$")));
362
+ };
363
+
364
+ const lightningColors = ['#FFFF00', '#FFFFFF', '#00FFFF', '#FF00FF'];
365
+ const createLightningParticles = (origin, config) => {
366
+ const { particleCount = 20, spread = 360, startVelocity = 50, colors = lightningColors, elementSize = 30 } = config;
367
+ const particles = [];
368
+ for (let i = 0; i < particleCount; i++) {
369
+ const angle = randomInRange(0, spread) * (Math.PI / 180);
370
+ const velocity = randomInRange(startVelocity * 0.7, startVelocity * 1.3);
371
+ particles.push({
372
+ id: generateId(),
373
+ x: origin.x,
374
+ y: origin.y,
375
+ vx: Math.sin(angle) * velocity,
376
+ vy: -Math.abs(Math.cos(angle) * velocity * 0.5), // Mostly horizontal movement
377
+ life: config.lifetime || 60, // Quick flashes
378
+ opacity: 1,
379
+ size: randomInRange(elementSize * 0.5, elementSize * 1.5),
380
+ rotation: randomInRange(0, 360),
381
+ color: colors[Math.floor(Math.random() * colors.length)] || colors[0],
382
+ });
383
+ }
384
+ return particles;
385
+ };
386
+ const renderLightningParticle = (particle) => {
387
+ // Create zigzag pattern based on particle life
388
+ const zigzagOffset = Math.sin(particle.life * 0.5) * 10;
389
+ return (React.createElement("div", { key: particle.id, style: {
390
+ width: `${particle.size}px`,
391
+ height: `${particle.size * 0.3}px`,
392
+ position: 'relative',
393
+ filter: `blur(0.5px) brightness(2)`,
394
+ transform: `translateX(${zigzagOffset}px) rotate(${particle.rotation}deg)`,
395
+ } },
396
+ React.createElement("div", { style: {
397
+ position: 'absolute',
398
+ width: '100%',
399
+ height: '100%',
400
+ background: particle.color,
401
+ clipPath: 'polygon(0% 0%, 60% 0%, 40% 45%, 100% 45%, 0% 100%, 40% 55%, 20% 55%, 35% 100%)',
402
+ boxShadow: `
403
+ 0 0 10px ${particle.color},
404
+ 0 0 20px ${particle.color},
405
+ 0 0 30px ${particle.color}
406
+ `,
407
+ } }),
408
+ React.createElement("div", { style: {
409
+ position: 'absolute',
410
+ top: '-50%',
411
+ left: '-50%',
412
+ width: '200%',
413
+ height: '200%',
414
+ background: `radial-gradient(circle, ${particle.color}88 0%, transparent 70%)`,
415
+ animation: `electricPulse ${randomInRange(100, 200)}ms infinite`,
416
+ } })));
417
+ };
418
+
419
+ const petalColors = ['#FFB6C1', '#FFC0CB', '#FF69B4', '#FF1493', '#FFF0F5'];
420
+ const createPetalParticles = (origin, config) => {
421
+ const { particleCount = 40, spread = 100, startVelocity = 8, colors = petalColors, elementSize = 20 } = config;
422
+ const particles = [];
423
+ for (let i = 0; i < particleCount; i++) {
424
+ const angle = randomInRange(-spread / 2, spread / 2) * (Math.PI / 180);
425
+ const velocity = randomInRange(startVelocity * 0.3, startVelocity);
426
+ particles.push({
427
+ id: generateId(),
428
+ x: origin.x + randomInRange(-20, 20),
429
+ y: origin.y - randomInRange(0, 30),
430
+ vx: Math.sin(angle) * velocity,
431
+ vy: randomInRange(2, 5), // Gentle fall
432
+ life: config.lifetime || 200,
433
+ opacity: randomInRange(0.7, 1),
434
+ size: randomInRange(elementSize * 0.7, elementSize * 1.3),
435
+ rotation: randomInRange(0, 360),
436
+ color: colors[Math.floor(Math.random() * colors.length)] || colors[0],
437
+ });
438
+ }
439
+ return particles;
440
+ };
441
+ const renderPetalParticle = (particle) => {
442
+ // Create spiral motion
443
+ const spiralPhase = (200 - particle.life) * 0.1;
444
+ const spiralX = Math.sin(spiralPhase) * 15;
445
+ const wobble = Math.sin(particle.life * 0.1) * 10;
446
+ return (React.createElement("div", { key: particle.id, style: {
447
+ width: `${particle.size}px`,
448
+ height: `${particle.size * 1.2}px`,
449
+ position: 'relative',
450
+ transform: `translateX(${spiralX}px) rotate(${particle.rotation + wobble}deg)`,
451
+ transformStyle: 'preserve-3d',
452
+ } },
453
+ React.createElement("div", { style: {
454
+ width: '100%',
455
+ height: '100%',
456
+ background: `radial-gradient(ellipse at 50% 30%, ${particle.color}, ${particle.color}DD)`,
457
+ borderRadius: '0% 100% 0% 100%',
458
+ position: 'absolute',
459
+ boxShadow: `
460
+ inset 1px 1px 3px rgba(255, 255, 255, 0.5),
461
+ 0 2px 4px rgba(0, 0, 0, 0.1)
462
+ `,
463
+ border: `1px solid ${particle.color}CC`,
464
+ transform: 'rotateY(45deg)',
465
+ } }),
466
+ React.createElement("div", { style: {
467
+ width: '100%',
468
+ height: '100%',
469
+ background: `radial-gradient(ellipse at 50% 30%, ${particle.color}EE, ${particle.color}BB)`,
470
+ borderRadius: '0% 100% 0% 100%',
471
+ position: 'absolute',
472
+ transform: 'rotate(45deg) scale(0.9)',
473
+ opacity: 0.8,
474
+ } })));
475
+ };
476
+
226
477
  const animations = {
227
478
  confetti: {
228
479
  createParticles: createConfettiParticles,
@@ -248,6 +499,26 @@ const animations = {
248
499
  createParticles: createStarParticles,
249
500
  renderParticle: renderStarParticle,
250
501
  },
502
+ snow: {
503
+ createParticles: createSnowParticles,
504
+ renderParticle: renderSnowParticle,
505
+ },
506
+ emoji: {
507
+ createParticles: createEmojiParticles,
508
+ renderParticle: renderEmojiParticle,
509
+ },
510
+ coins: {
511
+ createParticles: createCoinParticles,
512
+ renderParticle: renderCoinParticle,
513
+ },
514
+ lightning: {
515
+ createParticles: createLightningParticles,
516
+ renderParticle: renderLightningParticle,
517
+ },
518
+ petals: {
519
+ createParticles: createPetalParticles,
520
+ renderParticle: renderPetalParticle,
521
+ },
251
522
  };
252
523
 
253
524
  const useReward = (elementId, animationType, config) => {
@@ -288,7 +559,9 @@ const useReward = (elementId, animationType, config) => {
288
559
  const root = client.createRoot(container);
289
560
  rootRef.current = root;
290
561
  const containerRect = container.getBoundingClientRect();
291
- const gravity = (_b = (_a = config === null || config === void 0 ? void 0 : config.physics) === null || _a === void 0 ? void 0 : _a.gravity) !== null && _b !== void 0 ? _b : 0.35;
562
+ // Default gravity varies by animation type
563
+ const defaultGravity = animationType === 'bubbles' ? -0.1 : animationType === 'snow' ? 0.05 : 0.35;
564
+ const gravity = (_b = (_a = config === null || config === void 0 ? void 0 : config.physics) === null || _a === void 0 ? void 0 : _a.gravity) !== null && _b !== void 0 ? _b : defaultGravity;
292
565
  const friction = (_d = (_c = config === null || config === void 0 ? void 0 : config.physics) === null || _c === void 0 ? void 0 : _c.friction) !== null && _d !== void 0 ? _d : 0.98;
293
566
  const wind = (_f = (_e = config === null || config === void 0 ? void 0 : config.physics) === null || _e === void 0 ? void 0 : _e.wind) !== null && _f !== void 0 ? _f : 0;
294
567
  const updateParticles = () => {
@@ -372,5 +645,6 @@ const useReward = (elementId, animationType, config) => {
372
645
  return { reward, isAnimating };
373
646
  };
374
647
 
648
+ exports.emojiPresets = emojiPresets;
375
649
  exports.useReward = useReward;
376
650
  //# sourceMappingURL=index.js.map
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/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];\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 = 55,\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 = 45,\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],\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 = 30,\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 = 50,\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 = 30,\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],\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 = 35,\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],\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 { 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';\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};","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 const gravity = config?.physics?.gravity ?? 0.35;\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":["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/lightning.tsx","../src/animations/petals.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];\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],\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],\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],\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],\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],\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],\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],\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 { 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';\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};","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":["useState","useRef","useCallback","createRoot","useEffect"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -26,7 +26,7 @@ export interface AnimationConfig {
26
26
  friction?: number;
27
27
  };
28
28
  }
29
- export type AnimationType = 'confetti' | 'sparkles' | 'fireworks' | 'hearts' | 'stars' | 'bubbles';
29
+ export type AnimationType = 'confetti' | 'sparkles' | 'fireworks' | 'hearts' | 'stars' | 'bubbles' | 'snow' | 'emoji' | 'coins' | 'lightning' | 'petals';
30
30
  export interface UseRewardConfig extends AnimationConfig {
31
31
  animationType: AnimationType;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,UAAU,GACV,WAAW,GACX,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,aAAa,EAAE,aAAa,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,UAAU,GACV,WAAW,GACX,QAAQ,GACR,OAAO,GACP,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,aAAa,EAAE,aAAa,CAAC;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useReward.d.ts","sourceRoot":"","sources":["../src/useReward.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAY,MAAM,SAAS,CAAC;AAInE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,GACpB,WAAW,MAAM,EACjB,eAAe,aAAa,EAC5B,SAAS,eAAe,KACvB,eAgJF,CAAC"}
1
+ {"version":3,"file":"useReward.d.ts","sourceRoot":"","sources":["../src/useReward.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAY,MAAM,SAAS,CAAC;AAInE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,GACpB,WAAW,MAAM,EACjB,eAAe,aAAa,EAC5B,SAAS,eAAe,KACvB,eAkJF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "partycles",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "🎉 Delightful particle animations for React",
5
5
  "repository": {
6
6
  "type": "git",