{"_id":"partycles","_rev":"16-91bdcf2dbeb26874688284df616da0fc","name":"partycles","dist-tags":{"latest":"1.2.6"},"versions":{"0.1.0":{"name":"partycles","version":"0.1.0","keywords":["react","animations","effects","rewards","confetti","sparkles"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@0.1.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"357893e09e052b2ab988b008d5794a81d0f0e456","tarball":"https://registry.npmjs.org/partycles/-/partycles-0.1.0.tgz","fileCount":73,"integrity":"sha512-4JTKAWm04mQ1ZFWkDFOQU9jcw5LCRi3dbGG6qPDhr0wvEBLWi7aOVdoQwYEdAjPFOLkbVChNPhmHldq0VY7pNA==","signatures":[{"sig":"MEUCIQDnU6rzjscj+RAXn1plzaGr/sce/E5q1GBldTooQbHR1wIgF4UMT++Ld33K1sOBRLRGgzLXfeP9hCr9T6T0zEc5xRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207690},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"22ed17aadd372e1f362df02fd30dff9a4300dca8","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_0.1.0_1749125170898_0.3510904767836165","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"partycles","version":"0.2.0","keywords":["react","animations","effects","rewards","confetti","sparkles"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@0.2.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"23b3e999fb433c0c103127f72b471e85fff97e5e","tarball":"https://registry.npmjs.org/partycles/-/partycles-0.2.0.tgz","fileCount":101,"integrity":"sha512-3kYdus6t9qPkrKwNBpUKNYhfYraPGfPEnyO/iEUXz3mfWa3kbwGQwuKL1LrKmp1MH7HZygsVVQbRIq9yF+m+fQ==","signatures":[{"sig":"MEYCIQClHwem6Dp5IWAxHqLAKR/kNMI76TMGADrmvnUbZenwmQIhAJGNDWDFNymi3TCXGuBKVvovehuZRgE3Q7FOgzB/48Zd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321268},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"e8333c65d2c88143aa0c6163eff6c04e62dc9ae4","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_0.2.0_1749204784827_0.819288815384053","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"partycles","version":"0.3.0","keywords":["react","animations","effects","rewards","confetti","sparkles"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@0.3.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"a4db329dc6773d0a654ba367715f1745731dddc3","tarball":"https://registry.npmjs.org/partycles/-/partycles-0.3.0.tgz","fileCount":125,"integrity":"sha512-fPevAI+rzQPA3IeKVswDkYXMOWhDIDgsbcuS4mYBVynY0ZS11mz2qDxcfcoxWbz/9GQXTOEvF/ubH4SzQqDYtg==","signatures":[{"sig":"MEUCIFWUFjYKe83+1PhhGJzGw2oLQE6tbgtYrwyHmH+DfLzFAiEAoLFHkdYXcZek7kU0I42f0mSwggpd6Os9iLDjwChITuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459391},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"819ffb80cb579c5708c45bf3c6732d5e72f53bd2","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_0.3.0_1749208311991_0.8247323480495854","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"partycles","version":"0.4.0","keywords":["react","animations","effects","rewards","confetti","sparkles"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@0.4.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"d6cf881da18e0d4404ed4f267576682fd9b7d551","tarball":"https://registry.npmjs.org/partycles/-/partycles-0.4.0.tgz","fileCount":205,"integrity":"sha512-s3phe9whJd9u3daSPUm1M3VpCGpBXTWEWq52XClUyzF1zCctUXOrnKfbhjbE7HUq7mmp6nQaibRiPeQDUU38sw==","signatures":[{"sig":"MEYCIQCAsSwI81EpdNPLl+NJySlqXGBo0jf12KXrDTUhtN4n6AIhAMfT7gZnB4jl9p00ZM1xkS5Lfy/6P1Rli/B+HxQ9WfOr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":882668},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"c2596d3ddcddbe8f0d2531bf343d6d7f2d90ed00","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_0.4.0_1749289413926_0.9816802509775184","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"partycles","version":"1.0.0","keywords":["react","animations","effects","rewards","confetti","sparkles"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.0.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"b959779e5364fca0e64620fe004665b8a0f9610c","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.0.0.tgz","fileCount":205,"integrity":"sha512-mTuOl1cJjsQBZY19MF8xKbEBSoQJ4lsBiEn8jYNXoMgiKVKm3J5XZxmcwPdw1CowkuHD5OdvjsLYGDI3Qg1qLw==","signatures":[{"sig":"MEUCIBl/FrbIOrki5I8BwRogESj+Sjtshj9ER3q9gKwUqXt8AiEAi80LLgkoLSqSEs+SnVLrFRJIBjbGa8QnQMcrF4xaNQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":539183},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"a654f96756c8300ed6fb0fda5eb457a29825d304","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.0.0_1749291829582_0.029020514623918636","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"partycles","version":"1.1.0","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","react-component","typescript","hooks","react-hooks"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.1.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"68d6dcfb07902ff105d7b2c0b4300c417fc8db5f","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.1.0.tgz","fileCount":209,"integrity":"sha512-LuIoUgM9UO9NCF+9G6LJSLqYEkm5Nrgv39fyys7Ug+1SbAuDq1rIQ4ahO5jZtpZq/ctBA59/2aBhWxBlscioSg==","signatures":[{"sig":"MEYCIQCB/pJU5HboU86rirDtcGMRDG9VHFuyTEzYjV2VFF59QgIhAKqjJznfS/Y8yDHnKT1QPTcwUkGueHQknPEKexPl6k/u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556952},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"d4fe60004f32808967d91d40f18f1c71a8d48994","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.1.0_1749293528871_0.20360229116148099","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"partycles","version":"1.1.3","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","react-component","typescript","hooks","react-hooks"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.1.3","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"c953b655bd982e4d31edc4eb818101ef62fb0522","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.1.3.tgz","fileCount":137,"integrity":"sha512-PV1GbEqe8F9rA2V0NGXs4fgfwkV4YF+0aCkaYuMWRZOaiJrrxDppmEw2ahBfPTsCSslNRbVb552a02femSET+w==","signatures":[{"sig":"MEYCIQD3jnvDzVwZkijDwTTwwAbW7kTGje4tvnt9Cq1YUB/vMgIhAKw3j6N+eddXyGpCMSM4pPlYmtEtxV/MjtekBZp8FB0o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":535609},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"e91d0edc82366c4d2345118eb78509017f2eac54","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"10.8.2","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.1.3_1749296271578_0.5235222141839508","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"partycles","version":"1.1.4","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.1.4","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"3096d8b657fb4966aa4fc72006cf405634a1428d","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.1.4.tgz","fileCount":137,"integrity":"sha512-SW2R1pCEX0dtaP8fXHij5Y8M6BtvLbXR0Cd0+LQMkg19+8JWf1B34UmZkTMVTKiPtWHcHmbM64kKMsRbdtO3lw==","signatures":[{"sig":"MEYCIQDdD0Ly631x4yi9paxCghcyU5wZ+g7SbgEBE1BBsBuyGAIhANRKJuIaPVaVTt/Pvqnpmg6eVpaiyVAVoGvKkr4YctNz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":535386},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"7e94419bdf0231e260349bbc3c73b72e8f1ce477","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"echo \"No tests yet\" && exit 0","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"10.8.2","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.1.4_1749297296178_0.7039527612711696","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"partycles","version":"1.1.5","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.1.5","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"4109c404404929fd82b1aed78a12d5afb0da64fe","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.1.5.tgz","fileCount":137,"integrity":"sha512-hmE0GmiIdcHvZhApA589VPzH/LYEZJTGnGifuNqAx/r/s/jUYBwiWus5PItfbuQvq6LwM0zUXNU7EyjY8H+zpA==","signatures":[{"sig":"MEYCIQDp/tdBIgyhjf/eBlexjL49MABdqW4s7HLi6b4jWZ8bMAIhAMVtldZoAHS1n0xgoQJGj3TL4FzWh4CEQ5zGKeYFNcry","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556217},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.esm.js","require":"./dist/animations/*.js"}},"gitHead":"87c7b8ff642558d783d946ed7c4807870747dc3b","scripts":{"dev":"rollup -c rollup.config.mjs -w","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"echo \"No tests yet\" && exit 0","build":"rollup -c rollup.config.mjs","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"10.8.2","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"20.19.1","_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","eslint-plugin-react":"^7.33.0","eslint-config-prettier":"^9.0.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.1.5_1749298780002_0.1262512220076557","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"partycles","version":"1.2.0","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.2.0","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"d34a3c9aeb6c4dd9a74cf1bb0fab23fd6311fe26","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.0.tgz","fileCount":9,"integrity":"sha512-oBmBsuQ5BFHinCKeFZOIE22vMfV2aeK2xjlcbRTQYdQLIby0T1JHKr+L/8Y6TJFRrTsWahpfKBuv6RRJGbZJxg==","signatures":[{"sig":"MEYCIQDoxamd1FTpqTVxXx+EHWYspnU2+Hk61zqOu/nNwNL0ugIhAMvFZ+MGSesY+jw4x/rOmWauBgOkG2qugK8IX3dlRW3j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383055},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"gitHead":"75e411984360f4f523a4fd1cd718bca0d1a9a58e","scripts":{"dev":"tsup --watch","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","build:rollup":"rollup -c rollup.config.mjs","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","ts-jest":"^29.4.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.33.0","@testing-library/react":"^16.3.0","eslint-config-prettier":"^9.0.0","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.2.0_1749729426316_0.0044375523599202715","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"partycles","version":"1.2.1","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.2.1","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"56c877906cdb99ae858eeaeefc7f3a43f3d181db","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.1.tgz","fileCount":9,"integrity":"sha512-oJxwG0ODlweTU+idtMKgfgod8bnNtGWnZ+JGfV3Buaf/pwJGmoY3Ui4TEmfg+1ZGDfKGyXpmAzwJ8TltrE08Gg==","signatures":[{"sig":"MEYCIQDmKKEzbyUnVPIZXsUy/3ZzjcvAfxl281T4giwxb/IyWAIhAJ3Qv55ygxo8ErOfhc8aE2WsQdud+kvJtNUdkswD3QQV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":446479},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"gitHead":"2cd3620ed6da40e0e127933a9f39c602b76cb619","scripts":{"dev":"tsup --watch","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","build:rollup":"rollup -c rollup.config.mjs","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"jonathanleane","actor":{"name":"jonathanleane","type":"user","email":"hello@jonathanleane.com"},"email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","ts-jest":"^29.4.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.33.0","@testing-library/react":"^16.3.0","eslint-config-prettier":"^9.0.0","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.2.1_1750218020336_0.19911726068920088","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"partycles","version":"1.2.2","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.2.2","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"3a1077b425ac681168961cc91d95ce0d7646cb35","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.2.tgz","fileCount":9,"integrity":"sha512-df0G5lvYZDdWFYJTirLokbBEKD4nPG4TyOf/tgsgSUtz3rF3sXkj0/y7ljMHshS0UQc555XDe4DUBDd7S+0Oaw==","signatures":[{"sig":"MEYCIQCmo9OFFkBJzr7kyiBx7kyHYj7QGTWTJyZR6a09kI81NAIhALjhxPXi1mAZZVe7gkSQAhJq1aaZe1QEcis7NEoyJTH6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463760},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"gitHead":"ef0ca5ca9455fac841a5bee54f1632d70e944fe7","scripts":{"dev":"tsup --watch","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","build:rollup":"rollup -c rollup.config.mjs","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"jonathanleane","actor":{"name":"jonathanleane","type":"user","email":"hello@jonathanleane.com"},"email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","ts-jest":"^29.4.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.33.0","@testing-library/react":"^16.3.0","eslint-config-prettier":"^9.0.0","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.2.2_1750219202047_0.19258799103035007","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"partycles","version":"1.2.3","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.2.3","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"827970ec5898bcdc9a6961102fa1eab360a18ea2","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.3.tgz","fileCount":9,"integrity":"sha512-4i8RJZBcQqfNrFMaBOPWq29khayk69QRoglQ2nj9a21F7a+347qKkfjJrGgUl8C0LuIHJ2dvzTCBUcPYfOQcUw==","signatures":[{"sig":"MEYCIQDJbu04deXaIqH35varAFgUosSoQc2MTzThdMFXgqxTnAIhANGhDebY/86q40fuLFkssKXVlqzFGFyk+6TLb/0vQnQ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463760},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"gitHead":"9a6eab1a1ef32d981836bf5562021bbbe01de192","scripts":{"dev":"tsup --watch","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","build:rollup":"rollup -c rollup.config.mjs","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"jonathanleane","actor":{"name":"jonathanleane","type":"user","email":"hello@jonathanleane.com"},"email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","ts-jest":"^29.4.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.33.0","@testing-library/react":"^16.3.0","eslint-config-prettier":"^9.0.0","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.2.3_1750224532289_0.3178495286786167","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"partycles","version":"1.2.4","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.2.4","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"81c8dc966b5a0c65803430947f3f88860028cd36","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.4.tgz","fileCount":9,"integrity":"sha512-bGu7cv5BLo8jquXoLM2444jU0FTl+7N3VpyoeJaLfFytilPPZ+B3rgkE5Fzsoi0z4mpNsCGx7SwUbGzkCnUgsg==","signatures":[{"sig":"MEUCIQDZDWa0l38jUCRWIIGu9SRuzX5DcBpHVRMIE5AnTjc4igIgfOpTQQpeEhJJuBmPcc7leqgtNkw/XCBPHkHZOfgmT2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464109},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"gitHead":"6db92f795e117e6b863b53e4ec7a0e64b778e201","scripts":{"dev":"tsup --watch","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","build:rollup":"rollup -c rollup.config.mjs","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"jonathanleane","actor":{"name":"jonathanleane","type":"user","email":"hello@jonathanleane.com"},"email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","ts-jest":"^29.4.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.33.0","@testing-library/react":"^16.3.0","eslint-config-prettier":"^9.0.0","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.2.4_1750225147514_0.297988568904884","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"partycles","version":"1.2.5","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","_id":"partycles@1.2.5","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"dist":{"shasum":"1e9d310223d9d38d03e36d8bb6ad16522f1965a0","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.5.tgz","fileCount":9,"integrity":"sha512-mHIGfJVXpzYZFTzwloEQSvmGjiz5VMOv08TdpXj+iXE+Gdn52CubIqf3iRezjJmPEL9a1PHa8eyM7Uf59yYlVQ==","signatures":[{"sig":"MEUCIQDeV7Qa2aScCA1LoTsMQW86u5s/oCq9RtGs9mttg6Q5jgIgNJhXSJEXpAChVEwZLlTY/sqkgCXlVx7zAimih3FIwvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":492303},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"gitHead":"7c3c40d9b1095e9df17d6f8f75d02aa6fec4e3ba","scripts":{"dev":"tsup --watch","demo":"cd demo && npm start","lint":"eslint src --ext .ts,.tsx","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepare":"npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","build:rollup":"rollup -c rollup.config.mjs","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"jonathanleane","actor":{"name":"jonathanleane","type":"user","email":"hello@jonathanleane.com"},"email":"hello@jonathanleane.com"},"repository":{"url":"git+https://github.com/jonathanleane/partycles.git","type":"git"},"_npmVersion":"11.3.0","description":"🎉 Delightful particle animations for React","directories":{},"sideEffects":false,"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","react":"^18.2.0","tslib":"^2.6.2","eslint":"^8.0.0","rollup":"^4.9.0","ts-jest":"^29.4.0","prettier":"^3.0.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","identity-obj-proxy":"^3.0.0","eslint-plugin-react":"^7.33.0","@testing-library/react":"^16.3.0","eslint-config-prettier":"^9.0.0","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/partycles_1.2.5_1750233751526_0.5512555455772814","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"partycles","version":"1.2.6","description":"🎉 Delightful particle animations for React","repository":{"type":"git","url":"git+https://github.com/jonathanleane/partycles.git"},"homepage":"https://github.com/jonathanleane/partycles#readme","bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./animations/*":{"import":"./dist/animations/*.mjs","require":"./dist/animations/*.js"}},"sideEffects":false,"scripts":{"build":"tsup","dev":"tsup --watch","build:rollup":"rollup -c rollup.config.mjs","demo":"cd demo && npm start","prepare":"npm run build","lint":"eslint src --ext .ts,.tsx","lint:fix":"eslint src --ext .ts,.tsx --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","format:check":"prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"","type-check":"tsc --noEmit","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"author":{"name":"Jonathan Leane"},"license":"MIT","peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.5","@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.3.0","@types/jest":"^29.5.14","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-react":"^7.33.0","eslint-plugin-react-hooks":"^4.6.0","identity-obj-proxy":"^3.0.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"^3.0.0","react":"^18.2.0","react-dom":"^18.2.0","rollup":"^4.9.0","rollup-plugin-peer-deps-external":"^2.2.4","ts-jest":"^29.4.0","tslib":"^2.6.2","tsup":"^8.5.0","typescript":"^5.3.0"},"_id":"partycles@1.2.6","gitHead":"5cc72fb93f55f5b343bddf03886d7095b9813ed5","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-2KvS5gASMN7iB4g36UWKSexcGLC1IIjTMyR+XvyY+HVT+iz59u036qtj6mfv8fA3v9Ug9RFEt3vT6IP97lzlkA==","shasum":"d3b471f065b02b038fe16957d00973e4116ffa19","tarball":"https://registry.npmjs.org/partycles/-/partycles-1.2.6.tgz","fileCount":9,"unpackedSize":492589,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICBcQidvN//4AwnyIIKmV8IJwwmKO6dY5QkoL2yJ3/ZmAiAJbwGiKvHLFfcv2TXyrMEhBgu+c7eZt/6dCbiC/elbGg=="}]},"_npmUser":{"name":"jonathanleane","email":"hello@jonathanleane.com","actor":{"name":"jonathanleane","email":"hello@jonathanleane.com","type":"user"}},"directories":{},"maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/partycles_1.2.6_1750235500480_0.5105267050738449"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-05T12:06:10.896Z","modified":"2025-06-18T08:31:40.809Z","0.1.0":"2025-06-05T12:06:11.076Z","0.2.0":"2025-06-06T10:13:05.004Z","0.3.0":"2025-06-06T11:11:52.224Z","0.4.0":"2025-06-07T09:43:34.151Z","1.0.0":"2025-06-07T10:23:49.797Z","1.1.0":"2025-06-07T10:52:09.041Z","1.1.3":"2025-06-07T11:37:51.827Z","1.1.4":"2025-06-07T11:54:56.364Z","1.1.5":"2025-06-07T12:19:40.216Z","1.2.0":"2025-06-12T11:57:06.500Z","1.2.1":"2025-06-18T03:40:20.510Z","1.2.2":"2025-06-18T04:00:02.282Z","1.2.3":"2025-06-18T05:28:52.479Z","1.2.4":"2025-06-18T05:39:07.694Z","1.2.5":"2025-06-18T08:02:31.691Z","1.2.6":"2025-06-18T08:31:40.656Z"},"bugs":{"url":"https://github.com/jonathanleane/partycles/issues"},"author":{"name":"Jonathan Leane"},"license":"MIT","homepage":"https://github.com/jonathanleane/partycles#readme","keywords":["react","animations","effects","rewards","confetti","sparkles","particles","celebration","fireworks","hearts","bubbles","snow","emoji","coins","petals","aurora","fireflies","galaxy","glitch","crystals","react-component","typescript","hooks","react-hooks","particle-effects","reward-animation","celebration-effects"],"repository":{"type":"git","url":"git+https://github.com/jonathanleane/partycles.git"},"description":"🎉 Delightful particle animations for React","maintainers":[{"name":"jonathanleane","email":"hello@jonathanleane.com"}],"readme":"# Partycles 🎉\n\nA lightweight, performant React library for adding delightful animation effects to your applications. Perfect for celebrating user achievements, form submissions, or any moment worth highlighting.\n\n[**→ Try the Live Demo**](https://jonathanleane.github.io/partycles)\n\n[![npm version](https://img.shields.io/npm/v/partycles.svg)](https://www.npmjs.com/package/partycles)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/partycles)](https://bundlephobia.com/package/partycles)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## ✨ Features\n\n- 🎯 **Simple API** - Just one hook to rule them all\n- 🎨 **23 Beautiful Animations** - Confetti, sparkles, hearts, stars, fireworks, bubbles, snow, emoji, coins, petals, aurora, fireflies, paint, balloons, galaxy, glitch, magicdust, crystals, leaves, mortar, bokeh, ribbons, and geometric\n- 📦 **Tiny Bundle** - Zero dependencies, optimized for performance\n- 🚀 **Performant** - Optimized animations using requestAnimationFrame\n- 🎮 **Full Control** - Customize colors, particle count, physics, and more\n- 📱 **Mobile Optimized** - Automatic performance optimizations for mobile devices\n- 🔧 **TypeScript Support** - Fully typed for excellent DX\n- ⚡ **React 18 Ready** - Built with the latest React features\n\n## 📦 Installation\n\n```bash\nnpm install partycles\n# or\nyarn add partycles\n# or\npnpm add partycles\n```\n\n## 🚀 Quick Start\n\n```tsx\nimport { useRef } from 'react';\nimport { useReward } from 'partycles';\n\nfunction App() {\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const { reward, isAnimating } = useReward(buttonRef, 'confetti');\n\n  return (\n    <button ref={buttonRef} onClick={reward} disabled={isAnimating}>\n      Click me for a surprise! 🎉\n    </button>\n  );\n}\n```\n\nThat's it! No configuration needed - it just works. 🎊\n\n### Using String IDs (Legacy)\n\nFor backward compatibility, you can still use element IDs:\n\n```tsx\nconst { reward, isAnimating } = useReward('my-button', 'confetti');\n\n<button id=\"my-button\" onClick={reward}>\n  Click me! 🎉\n</button>\n```\n\n## 🤔 Why Partycles?\n\n- **Zero Dependencies** - No bloat, just pure React code\n- **One Hook** - Simple `useReward` hook handles everything  \n- **23 Animations** - From confetti to modern geometric bursts, we've got you covered\n- **Fully Typed** - Great TypeScript support out of the box\n- **Customizable** - Tweak colors, physics, particle count, and more\n- **Performant** - Optimized animations that won't slow down your app\n\n## 📖 API Reference\n\n### `useReward(targetRef, animationType, config?)` (Recommended)\n### `useReward(elementId, animationType, config?)` (Legacy)\n\nThe main hook for creating reward animations.\n\n#### Parameters\n\n- `targetRef` (RefObject<HTMLElement>): A React ref to the element to animate from (recommended)\n- `elementId` (string): The ID of the element to animate from (legacy, for backward compatibility)\n- `animationType` (string): One of: `'confetti'`, `'sparkles'`, `'hearts'`, `'stars'`, `'fireworks'`, `'bubbles'`, `'snow'`, `'emoji'`, `'coins'`, `'petals'`, `'aurora'`, `'fireflies'`, `'paint'`, `'balloons'`, `'galaxy'`, `'glitch'`, `'magicdust'`, `'crystals'`, `'leaves'`, `'mortar'`, `'bokeh'`, `'ribbons'`, `'geometric'`\n- `config` (optional): Animation configuration object\n\n#### Returns\n\n- `reward` (function): Triggers the animation, returns a Promise that resolves when complete\n- `isAnimating` (boolean): Whether the animation is currently running\n- `pause` (function): Pauses the current animation\n- `resume` (function): Resumes a paused animation\n- `replay` (function): Stops current animation and starts a new one\n- `isPaused` (boolean): Whether the animation is currently paused\n- `targetRef` (RefObject<HTMLElement>): The ref object (only returned when using ref-based API)\n\n### Configuration Options\n\n```typescript\ninterface AnimationConfig {\n  particleCount?: number;      // Number of particles (default: varies by animation)\n  spread?: number;             // Spread angle in degrees (default: 50)\n  startVelocity?: number;      // Initial velocity (default: 45)\n  decay?: number;              // Velocity decay rate (default: 0.9)\n  lifetime?: number;           // Particle lifetime (default: 100)\n  colors?: string[];           // Array of colors (or emojis for 'emoji' type)\n  elementSize?: number;        // Size of particles in pixels\n  duration?: number;           // Total animation duration\n  physics?: {\n    gravity?: number;          // Gravity force (default: 0.5)\n    wind?: number;             // Horizontal wind force (default: 0)\n    friction?: number;         // Air friction (default: 0.99)\n  };\n  // NEW: Optional enhanced effects\n  effects?: {\n    flutter?: boolean;         // Paper-like floating for confetti\n    twinkle?: boolean;         // Brightness variation for stars/sparkles\n    pulse?: boolean;           // Heartbeat effect for hearts\n    spin3D?: boolean;          // 3D rotation for coins\n    wobble?: boolean;          // Realistic wobble for bubbles\n    windDrift?: boolean;       // Horizontal drift for snow/leaves\n  };\n}\n```\n\n## 🎨 Animation Types\n\n### Confetti 🎊\nClassic celebration effect with colorful paper pieces.\n\n```tsx\nconst buttonRef = useRef<HTMLButtonElement>(null);\nconst { reward } = useReward(buttonRef, 'confetti', {\n  particleCount: 30,\n  spread: 60,\n  colors: ['#ff0000', '#00ff00', '#0000ff'],\n  // NEW: Enable paper flutter effect\n  effects: { flutter: true }\n});\n```\n\n### Sparkles ✨\nTwinkling star effect perfect for magical moments.\n\n```tsx\nconst { reward } = useReward('buttonId', 'sparkles', {\n  particleCount: 20,\n  elementSize: 15\n});\n```\n\n### Hearts 💕\nFloating hearts for likes, favorites, or love actions.\n\n```tsx\nconst { reward } = useReward('buttonId', 'hearts', {\n  particleCount: 15,\n  colors: ['#ff1744', '#e91e63', '#ff4569']\n});\n```\n\n### Stars ⭐\nShooting stars effect for achievements and ratings.\n\n```tsx\nconst { reward } = useReward('buttonId', 'stars', {\n  particleCount: 25,\n  physics: { gravity: 0.3 }\n});\n```\n\n### Fireworks 🎆\nExplosive celebration for major milestones.\n\n```tsx\nconst { reward } = useReward('buttonId', 'fireworks', {\n  particleCount: 40,\n  spread: 180\n});\n```\n\n### Bubbles 🫧\nGentle floating bubbles for calm, playful effects.\n\n```tsx\nconst { reward } = useReward('buttonId', 'bubbles', {\n  particleCount: 20,\n  physics: { gravity: -0.1 }\n});\n```\n\n### Snow ❄️\nPeaceful falling snowflakes for winter themes.\n\n```tsx\nconst { reward } = useReward('buttonId', 'snow', {\n  particleCount: 50,\n  physics: { gravity: 0.05, wind: 0.1 }\n});\n```\n\n### Emoji 🎉\nCustomizable emoji explosions for any mood.\n\n```tsx\nimport { useReward, emojiPresets } from 'partycles';\n\n// Use built-in presets\nconst { reward } = useReward('buttonId', 'emoji', {\n  colors: emojiPresets.celebration  // 🎉🎊🥳🎈🎁🍾🥂🎆\n});\n\n// Or custom emojis\nconst { reward } = useReward('buttonId', 'emoji', {\n  particleCount: 30,\n  colors: ['🎉', '🎊', '🎈', '🎁', '✨']\n});\n```\n\n**Available emoji presets:**\n- `emojiPresets.celebration` - Party emojis\n- `emojiPresets.love` - Heart emojis\n- `emojiPresets.happy` - Happy face emojis\n- `emojiPresets.nature` - Nature emojis\n- `emojiPresets.food` - Food emojis\n\n### Coins 💰\nFalling coins for rewards and achievements.\n\n```tsx\nconst { reward } = useReward('buttonId', 'coins', {\n  particleCount: 25,\n  physics: { gravity: 0.5 }\n});\n```\n\n### Petals 🌸\nDelicate flower petals floating in the wind.\n\n```tsx\nconst { reward } = useReward('buttonId', 'petals', {\n  particleCount: 40,\n  physics: { gravity: 0.08, wind: 0.15 }\n});\n```\n\n### Aurora 🌌\nNorthern lights effect with flowing ribbons.\n\n```tsx\nconst { reward } = useReward('buttonId', 'aurora', {\n  particleCount: 15,\n  elementSize: 100\n});\n```\n\n### Fireflies ✨\nGlowing fireflies with organic movement.\n\n```tsx\nconst { reward } = useReward('buttonId', 'fireflies', {\n  particleCount: 20,\n  lifetime: 300\n});\n```\n\n### Paint 🎨\nPaint splatter effect for creative actions.\n\n```tsx\nconst { reward } = useReward('buttonId', 'paint', {\n  particleCount: 25,\n  startVelocity: 35\n});\n```\n\n### Balloons 🎈\nFloating balloons with realistic physics.\n\n```tsx\nconst { reward } = useReward('buttonId', 'balloons', {\n  particleCount: 15,\n  lifetime: 400\n});\n```\n\n### Galaxy 🌟\nSpiral star formation with twinkling effects.\n\n```tsx\nconst { reward } = useReward('buttonId', 'galaxy', {\n  particleCount: 60,\n  spread: 200\n});\n```\n\n### Glitch 📺\nDigital glitch effect for tech themes.\n\n```tsx\nconst { reward } = useReward('buttonId', 'glitch', {\n  particleCount: 30,\n  elementSize: 40\n});\n```\n\n### Magic Dust ✨\nMagical sparkling dust particles.\n\n```tsx\nconst { reward } = useReward('buttonId', 'magicdust', {\n  particleCount: 35,\n  colors: ['#9c27b0', '#673ab7', '#3f51b5']\n});\n```\n\n### Crystals 💎\nShimmering crystal fragments.\n\n```tsx\nconst { reward } = useReward('buttonId', 'crystals', {\n  particleCount: 20,\n  elementSize: 25\n});\n```\n\n### Leaves 🍃\nFalling autumn leaves with natural movement.\n\n```tsx\nconst { reward } = useReward('buttonId', 'leaves', {\n  particleCount: 30,\n  physics: { gravity: 0.05, wind: 0.2 }\n});\n```\n\n### Mortar 💥\nExplosive mortar-style bursts with galaxy-like explosions.\n\n```tsx\nconst { reward } = useReward('buttonId', 'mortar', {\n  particleCount: 2,\n  spread: 45,\n  physics: { gravity: 0.35 }\n});\n```\n\n### Bokeh 🔮\nSoft, dreamy light orbs with depth-of-field effect. Inspired by photography bokeh.\n\n```tsx\nconst { reward } = useReward('buttonId', 'bokeh', {\n  particleCount: 25,\n  elementSize: 40,\n  lifetime: 400,\n  physics: { gravity: -0.02 }\n});\n```\n\n## 💡 Examples\n\n### Animation Controls\n\nControl your animations with pause, resume, and replay:\n\n```tsx\nimport { useRef } from 'react';\nimport { useReward } from 'partycles';\n\nfunction ControlledAnimation() {\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const { reward, isAnimating, pause, resume, replay, isPaused } = useReward(\n    buttonRef,\n    'confetti',\n    { particleCount: 50 }\n  );\n\n  return (\n    <div>\n      <button ref={buttonRef} onClick={reward}>\n        Start Animation\n      </button>\n      \n      <button onClick={pause} disabled={!isAnimating || isPaused}>\n        Pause\n      </button>\n      \n      <button onClick={resume} disabled={!isAnimating || !isPaused}>\n        Resume\n      </button>\n      \n      <button onClick={replay}>\n        Replay\n      </button>\n      \n      <p>Status: {isAnimating ? (isPaused ? 'Paused' : 'Playing') : 'Idle'}</p>\n    </div>\n  );\n}\n```\n\n### Promise-based Completion\n\nChain actions after animations complete:\n\n```tsx\nconst { reward } = useReward(buttonRef, 'confetti');\n\nconst handleSuccess = async () => {\n  await reward(); // Wait for animation to complete\n  console.log('Animation finished!');\n  // Navigate, show message, etc.\n};\n\n### Form Submission Success\n```tsx\nfunction ContactForm() {\n  const { reward } = useReward('submit-btn', 'confetti');\n\n  const handleSubmit = async (e) => {\n    e.preventDefault();\n    const success = await submitForm();\n    if (success) {\n      reward();\n    }\n  };\n\n  return (\n    <form onSubmit={handleSubmit}>\n      {/* form fields */}\n      <button id=\"submit-btn\" type=\"submit\">\n        Send Message\n      </button>\n    </form>\n  );\n}\n```\n\n### Like Button with Hearts\n```tsx\nfunction LikeButton() {\n  const [liked, setLiked] = useState(false);\n  const { reward } = useReward('like-btn', 'hearts', {\n    particleCount: 10,\n    elementSize: 20\n  });\n\n  const handleLike = () => {\n    setLiked(!liked);\n    if (!liked) {\n      reward();\n    }\n  };\n\n  return (\n    <button id=\"like-btn\" onClick={handleLike}>\n      {liked ? '❤️' : '🤍'} Like\n    </button>\n  );\n}\n```\n\n### Achievement Unlocked\n```tsx\nfunction Achievement({ unlocked, name }) {\n  const { reward } = useReward('achievement', 'fireworks', {\n    particleCount: 50,\n    spread: 120\n  });\n\n  useEffect(() => {\n    if (unlocked) {\n      reward();\n    }\n  }, [unlocked, reward]);\n\n  return (\n    <div id=\"achievement\" className=\"achievement-badge\">\n      🏆 {name}\n    </div>\n  );\n}\n```\n\n## ✨ Enhanced Effects (v1.1.5+)\n\nMake animations more realistic with optional effects:\n\n```tsx\n// Confetti with paper flutter\nconst { reward } = useReward('confetti-btn', 'confetti', {\n  effects: { flutter: true }\n});\n\n// Stars with twinkling\nconst { reward } = useReward('star-btn', 'stars', {\n  effects: { twinkle: true }\n});\n\n// Hearts with pulse/heartbeat\nconst { reward } = useReward('heart-btn', 'hearts', {\n  effects: { pulse: true }\n});\n\n// Coins with 3D spin\nconst { reward } = useReward('coin-btn', 'coins', {\n  effects: { spin3D: true }\n});\n\n// Snow with wind drift\nconst { reward } = useReward('snow-btn', 'snow', {\n  effects: { windDrift: true }\n});\n\n// Bubbles with wobble\nconst { reward } = useReward('bubble-btn', 'bubbles', {\n  effects: { wobble: true }\n});\n\n// Combine multiple effects\nconst { reward } = useReward('magic-btn', 'sparkles', {\n  effects: { \n    twinkle: true,\n    // Other effects work too!\n  },\n  physics: {\n    gravity: 0.2,\n    wind: 0.1\n  }\n});\n```\n\n## 🎯 Best Practices\n\n1. **Unique IDs**: Ensure each animated element has a unique ID\n2. **Performance**: Avoid triggering multiple animations simultaneously\n3. **Accessibility**: Provide alternative feedback for users who prefer reduced motion\n4. **Mobile**: Partycles automatically optimizes for mobile devices\n\n```tsx\n// Respect user preferences\nconst prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\nconst { reward } = useReward('buttonId', 'confetti', {\n  particleCount: prefersReducedMotion ? 0 : 30\n});\n```\n\n## 📱 Mobile Optimization\n\nPartycles automatically detects mobile devices and optimizes performance:\n\n- **Reduced particle counts** (60% of desktop)\n- **Smaller particle sizes** (80% of desktop)\n- **Shorter lifetimes** (80% of desktop)\n- **Frame skipping** for smoother performance\n- **Tab visibility detection** to pause when inactive\n\nYou can also manually check for mobile devices:\n\n```tsx\nimport { isMobileDevice, optimizeConfigForMobile } from 'partycles';\n\nif (isMobileDevice()) {\n  // Custom mobile logic\n}\n\n// Or manually optimize a config\nconst mobileConfig = optimizeConfigForMobile({\n  particleCount: 100,\n  elementSize: 30\n});\n```\n\n## 🔧 Advanced Usage\n\n### Custom Physics\n```tsx\nconst { reward } = useReward('buttonId', 'confetti', {\n  physics: {\n    gravity: 0.2,     // Lower gravity = floatier particles\n    wind: 0.1,        // Positive = blow right, negative = blow left\n    friction: 0.95    // Higher = more air resistance\n  }\n});\n```\n\n### Dynamic Configuration\n```tsx\nfunction DynamicReward() {\n  const [intensity, setIntensity] = useState(1);\n  \n  const { reward } = useReward('buttonId', 'confetti', {\n    particleCount: 30 * intensity,\n    spread: 50 + (20 * intensity),\n    startVelocity: 45 * intensity\n  });\n\n  return (\n    <>\n      <input\n        type=\"range\"\n        min=\"0.5\"\n        max=\"2\"\n        step=\"0.1\"\n        value={intensity}\n        onChange={(e) => setIntensity(parseFloat(e.target.value))}\n      />\n      <button id=\"buttonId\" onClick={reward}>\n        Celebrate!\n      </button>\n    </>\n  );\n}\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📈 Changelog\n\n### v1.2.6 (Latest)\n- 🎀 Added new `ribbons` animation with wavy streamers and gradient effects\n- 🔷 Added new `geometric` animation with modern shapes (triangles, squares, diamonds, hexagons, stars)\n- ✨ Both animations feature satisfying physics inspired by the popular confetti effect\n- 🗑️ Removed fire animation as it didn't work well as a burst effect\n\n### v1.2.3\n- 🔮 Updated bokeh animation defaults for better visual impact\n- 📊 Increased default particle count from 25 to 50\n- ⏱️ Reduced lifetime from 400 to 200 for snappier animations\n- 🎯 Adjusted physics for more natural movement\n\n### v1.2.2\n- 🔮 Added new `bokeh` animation with soft, dreamy light orbs\n- 🙏 Added credits section to acknowledge contributors\n- 📱 Optimized bokeh effect for smooth performance\n\n### v1.2.1\n- 🎆 Added new `mortar` animation with galaxy-style explosions\n- 🐛 Fixed particle rendering issues with dynamic particle creation\n- 🎨 Updated emoji assignments for better consistency (fireflies: 🌟, coins: 💰)\n- ⚡ Optimized mortar explosion performance for mobile devices\n- 🔧 Improved animation manager to handle particles created during updates\n\n### v1.1.5\n- ✨ Added optional enhanced effects (flutter, twinkle, pulse, spin3D, wobble, windDrift)\n- 📱 Improved mobile performance with automatic optimizations\n\n### v1.1.3\n- 🚀 Added automatic mobile performance optimizations\n- 🐛 Fixed Safari compatibility issues\n- 📦 Streamlined bundle size by removing 7 animations\n- 🔧 Fixed CI/CD pipeline and npm publishing\n\n### v1.0.0\n- 🎉 Initial release with 26 animations\n\n## 🙏 Credits\n\n- **Bokeh effect** inspired by [Sergio A. Carrasco Chavez](https://codepen.io/sergio-carrasco)'s beautiful bokeh implementation\n\n## 📄 License\n\nMIT © Jonathan Leane\n\n---\n\n<p align=\"center\">\n  Made with ❤️ by developers, for developers\n</p>","readmeFilename":"README.md"}