diff --git a/components/fireworks.js b/components/fireworks.js index 0a4080ecc..2132aa726 100644 --- a/components/fireworks.js +++ b/components/fireworks.js @@ -1,12 +1,7 @@ -import { useCallback, createContext, useContext, useState, useEffect } from 'react' -import Particles from 'react-particles' -import { loadFireworksPreset } from 'tsparticles-preset-fireworks' +import { createContext, useContext, useState, useEffect, useMemo, useCallback, useRef } from 'react' +import Particles, { initParticlesEngine } from '@tsparticles/react' +import { loadFireworksPreset } from '@tsparticles/preset-fireworks' import styles from './fireworks.module.css' -import { - rgbToHsl, - setRangeValue, - stringToRgb -} from 'tsparticles-engine' import useDarkMode from './dark-mode' export const FireworksContext = createContext({ @@ -20,14 +15,14 @@ export function useFireworks () { } export function FireworksProvider ({ children }) { - const [cont, setCont] = useState() + const containerRef = useRef() const [context, setContext] = useState({ strike: () => {} }) const [darkMode] = useDarkMode() useEffect(() => { setContext({ strike: () => { - cont?.addEmitter( + containerRef.current?.addEmitter( { direction: 'top', life: { @@ -51,223 +46,100 @@ export function FireworksProvider ({ children }) { return true } }) - }, [cont]) + }, []) - const particlesLoaded = useCallback((container) => { - setCont(container) + useEffect(() => { + initParticlesEngine(async (engine) => { + await loadFireworksPreset(engine) + }) }, []) - const particlesInit = useCallback(async engine => { - // you can initiate the tsParticles instance (engine) here, adding custom shapes or presets - // this loads the tsparticles package bundle, it's the easiest method for getting everything ready - // starting from v2 you can add only the features you need reducing the bundle size - await loadFireworksPreset(engine) + const particlesLoaded = useCallback(async (container) => { + containerRef.current = container }, []) + const options = useMemo( + () => (darkMode ? darkOptions : lightOptions), + [darkMode] + ) + return ( {children} ) } -const fixRange = (value, min, max) => { - const diffSMax = value.max > max ? value.max - max : 0 - let res = setRangeValue(value) - - if (diffSMax) { - res = setRangeValue(value.min - diffSMax, max) - } - - const diffSMin = value.min < min ? value.min : 0 - - if (diffSMin) { - res = setRangeValue(0, value.max + diffSMin) - } - - return res +const options = { + fullScreen: { enable: true, zIndex: -1 }, + detectRetina: true, + background: { + color: 'transparent' + }, + backgroundMask: { + enable: true, + composite: 'source-over' + }, + fpsLimit: 120, + emitters: [], + sounds: { + enable: false + }, + preset: 'fireworks' } -const fireworksOptions = ['#ff595e', '#ffca3a', '#8ac926', '#1982c4', '#6a4c93'] - .map((color) => { - const rgb = stringToRgb(color) - - if (!rgb) { - return undefined - } - - const hsl = rgbToHsl(rgb) - const sRange = fixRange({ min: hsl.s - 30, max: hsl.s + 30 }, 0, 100) - const lRange = fixRange({ min: hsl.l - 30, max: hsl.l + 30 }, 0, 100) - - return { +const darkOptions = { + ...options, + particles: { + stroke: { color: { - value: { - h: hsl.h, - s: sRange, - l: lRange - } - }, - stroke: { - width: 0 - }, - number: { - value: 0 - }, - opacity: { - value: { - min: 0.1, - max: 1 - }, - animation: { - enable: true, - speed: 0.7, - sync: false, - startValue: 'max', - destroy: 'min' - } - }, - shape: { - type: 'circle' - }, - size: { - value: { min: 1, max: 2 }, - animation: { - enable: true, - speed: 5, - count: 1, - sync: false, - startValue: 'min', - destroy: 'none' - } + value: '#fff' }, - life: { - count: 1, - duration: { - value: { - min: 1, - max: 2 - } - } + width: 1 + }, + move: { + outModes: { + default: 'split', + top: 'none' }, - move: { - decay: { min: 0.075, max: 0.1 }, + trail: { enable: true, - gravity: { - enable: true, - inverse: false, - acceleration: 5 + fill: { + color: '#000' }, - speed: { min: 5, max: 15 }, - direction: 'none', - outMode: { - top: 'destroy', - default: 'bounce' - } + length: 10 } } - }) - .filter((t) => t !== undefined) + } +} -const particlesOptions = (theme) => ({ - number: { - value: 0 - }, - destroy: { - mode: 'split', - bounds: { - top: { min: 5, max: 40 } - }, - split: { - sizeOffset: false, - count: 1, - factor: { - value: 0.333333 - }, - rate: { - value: { min: 75, max: 150 } +const lightOptions = { + ...options, + particles: { + stroke: { + color: { + value: '#aaa' }, - particles: fireworksOptions - } - }, - life: { - count: 1 - }, - shape: { - type: 'line' - }, - size: { - value: { - min: 0.1, - max: 50 - }, - animation: { - enable: true, - sync: true, - speed: 90, - startValue: 'max', - destroy: 'min' - } - }, - rotate: { - path: true - }, - stroke: { - color: { - value: theme === 'dark' ? '#fff' : '#aaa' + width: 1 }, - width: 1 - }, - move: { - enable: true, - gravity: { - acceleration: 15, - enable: true, - inverse: true, - maxSpeed: 100 - }, - speed: { - min: 10, - max: 20 - }, - outModes: { - default: 'split', - top: 'none' - }, - trail: { - fillColor: theme === 'dark' ? '#000' : '#f5f5f7', - enable: true, - length: 10 + move: { + outModes: { + default: 'split', + top: 'none' + }, + trail: { + fill: { + color: '#f5f5f7' + }, + enable: true, + length: 10 + } } } -}) - -const darkOptions = { - fullScreen: { enable: true, zIndex: -1 }, - detectRetina: true, - background: { - color: '#000', - opacity: 0 - }, - fpsLimit: 120, - emitters: [], - particles: particlesOptions('dark') -} - -const lightOptions = { - fullScreen: { enable: true, zIndex: -1 }, - detectRetina: true, - background: { - color: '#fff', - opacity: 0 - }, - fpsLimit: 120, - emitters: [], - particles: particlesOptions('light') } diff --git a/components/fireworks.module.css b/components/fireworks.module.css index b3bdb3540..d092a12aa 100644 --- a/components/fireworks.module.css +++ b/components/fireworks.module.css @@ -1,8 +1,9 @@ .fireworks { - z-index: 0; + z-index: 100; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; + pointer-events: none; } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 10912eb4b..4e9079249 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,10 @@ "@prisma/client": "^5.20.0", "@slack/web-api": "^7.6.0", "@svgr/webpack": "^8.1.0", + "@tsparticles/engine": "^3.8.1", + "@tsparticles/preset-fireworks": "^3.2.0", + "@tsparticles/react": "^3.0.0", + "@tsparticles/slim": "^3.8.1", "@yudiel/react-qr-scanner": "^2.0.8", "acorn": "^8.12.1", "ajv": "^8.17.1", @@ -77,7 +81,6 @@ "react-dom": "^18.3.1", "react-ios-pwa-prompt": "^1.8.4", "react-markdown": "^9.0.1", - "react-particles": "^2.12.2", "react-string-replace": "^1.1.1", "react-syntax-highlighter": "^15.5.0", "react-textarea-autosize": "^8.5.4", @@ -93,8 +96,6 @@ "source-map": "^0.8.0-beta.0", "textarea-caret": "^3.1.0", "tldts": "^6.1.51", - "tsparticles-engine": "^2.12.0", - "tsparticles-preset-fireworks": "^2.12.0", "tsx": "^4.19.1", "twitter-api-v2": "^1.22.0", "unist-util-visit": "^5.0.0", @@ -5736,6 +5737,553 @@ "node": ">=10.13.0" } }, + "node_modules/@tsparticles/basic": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.8.1.tgz", + "integrity": "sha512-my114zRmekT/+I2cGuEnHxlX5G/jO0iVtNnsxxlsgspXUTSY+fDixmrNF4UgFkuaIwd9Bv/yH+7S/4HE4qte7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1", + "@tsparticles/move-base": "3.8.1", + "@tsparticles/plugin-hex-color": "3.8.1", + "@tsparticles/plugin-hsl-color": "3.8.1", + "@tsparticles/plugin-rgb-color": "3.8.1", + "@tsparticles/shape-circle": "3.8.1", + "@tsparticles/updater-color": "3.8.1", + "@tsparticles/updater-opacity": "3.8.1", + "@tsparticles/updater-out-modes": "3.8.1", + "@tsparticles/updater-size": "3.8.1" + } + }, + "node_modules/@tsparticles/engine": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.8.1.tgz", + "integrity": "sha512-S8h10nuZfElY7oih//NUHnT5qf4v3/dnsU8CMs7dz5lBEGr3amrYrXk0V+YKPTIQwfdmJHUaSBoAqFiv4aEGIA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/@tsparticles/interaction-external-attract": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.8.1.tgz", + "integrity": "sha512-GWzyj5MOzjb5pNWuqAueNZS2ilPcZ0isiqwcb0BjjpwfiGfL72UyIbNUDMLncsW+4jcwB4WyMsv/qOGDmAwVfQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-bounce": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.8.1.tgz", + "integrity": "sha512-tgVzsE3orneSeSUc1XhRD6Iqs8Rkm11iRdkncKSpNx4SI2eJWFPhwit2wIiHQ+IuvgCmM2DXRtLgEVeaux71zg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-bubble": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.8.1.tgz", + "integrity": "sha512-edRVFybiVFd5vEjfEkHgrBTXfPTKc05EqCmRuOEd5gOll1ui0nPtknzj9JiLrPacQAJ7OgZKlHWYQb1u5Yy5Tw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-connect": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.8.1.tgz", + "integrity": "sha512-DQ0nNB0VDSxFxeaJQvm91NDUU/UPoiHE+uUzyw5qSoWJEGTUOj/QkW0GuBinCo99i8MH/wLDqMS9nb+7ZejpUw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-grab": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.8.1.tgz", + "integrity": "sha512-nPaHrazEr14CGokGGkFHYXZJTN3Inshe04uQNj+Rj4Lz9dAIqq8EFuSejp0g9lk2cTHWfVf4SK4r8+aJz9Ow4Q==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-pause": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.8.1.tgz", + "integrity": "sha512-W+6bjNDddtzlikwnfmk2G/GJsz4ZnoqvK0c63earvnPNUAJmkzrvmLS52JoaIOSyclOIeD4LmubT6IsQDv5ohA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-push": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.8.1.tgz", + "integrity": "sha512-LgaXaBM5QXRCeYt3DzphEhE/OirEGnV4iJrXKGJ/FrYMH7kOao85rPmCtYQNYzIy6K0XstmATmTvFRziZ/M4VQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-remove": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.8.1.tgz", + "integrity": "sha512-mwo1DRJPIqzrWfs2G+kfQ5/HyM5j/soIj11zur3BkIlm9vdYIxUpA+hvO734oekSjJxY7YFmYUaqc4vC5TFE5w==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-repulse": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.8.1.tgz", + "integrity": "sha512-r0E828zrKIRHA27daItHtI9QEp1tO8d8dmF8Ld8+orn7q0+BKG+uGvNTYJFZ+hqR+lp5AkLOiThf7L2wLS9M1A==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-external-slow": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.8.1.tgz", + "integrity": "sha512-U4P6c9V6/fSDsWchD4oAYAIPHA/203LzQ7+792cMxa7YThza0VS7YyJUQ1PACjGMmfeKbE34/eoGPqESKakeLw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-particles-attract": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.8.1.tgz", + "integrity": "sha512-lo5JAVdeh1tQq/7SDsIllNdyIJgF3hSquWLARUIwGolezD91bEmHp/rlhTscX5NrqiM3y7z3inJPhR0nP5kGeg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-particles-collisions": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.8.1.tgz", + "integrity": "sha512-teqn1CZVoJkT/ubhkb4R/H1rnx7DoIeerHXS5uME+vrLIqzkn8QlWdEdTJ7PhdB+Ct2iYAeXCrJWwIqnKaAL3w==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/interaction-particles-links": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.8.1.tgz", + "integrity": "sha512-D+X7wEWyhfV7J0uDWf5vWDhxjfaNovNZW0BWscR9qSy8pl3hjRpv0sJ/QaQFscmK5SzVz28tUFDRLbH1aV5v/Q==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/move-base": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.8.1.tgz", + "integrity": "sha512-DNFRL1QT8ZQYLg3fIk74EbHJq5HGOq9CM2bCci9dDcdymvN4L7aWVFQavRiWDbi3y1EUW3+jeHSMbD3qHAfOeA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/move-parallax": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.8.1.tgz", + "integrity": "sha512-umrIttaJGUgfxpnolbMU2BekoN4gw0RgcfVsWR7jzHErA7eTzdJ2mikbQFD+3/1DfTDgJOjWx+dy8a3G/bSsZg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-easing-quad": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.8.1.tgz", + "integrity": "sha512-+BiPNHgsNbbh0AhWKjrmJaAu5c37naqjbME8ZYl0BClI0AC5AzBUaezYRxECaLrdtHJvKrZXFMr6Q0sxjDc6QQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-emitters": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters/-/plugin-emitters-3.8.1.tgz", + "integrity": "sha512-PGldE3OHs1hsZM6a8qHpXvKIMhaWAqZNwq8v7FwgJGxikXVvYtkKSaWslTpID3hYvtB6+whKig2uWURmq2TUsg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-square": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-square/-/plugin-emitters-shape-square-3.8.1.tgz", + "integrity": "sha512-hg8a9ZD3PPRuNW8y/jqrRS2J153DkVvAfSdsO+l2PASG8vYVaxzUD1kqAUknUhNZmhg3BvtwQp+ojCNaat5/Lg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1", + "@tsparticles/plugin-emitters": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-hex-color": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-hex-color/-/plugin-hex-color-3.8.1.tgz", + "integrity": "sha512-AmgB7XIYBCvg5HcqYb19YpcjEx2k4DpU2e24n0rradDDeqKKcz7EWI/08FlAnDb5HUs1em63vaAanl1vdm3+OA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-hsl-color": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-hsl-color/-/plugin-hsl-color-3.8.1.tgz", + "integrity": "sha512-Ja6oEX6yu0064e4a+Fv1TBJiG5y0hqWwoOKSqf/Ra/zo01ageOEvDVX70FOVSrP+iEPGPznKVNcZs1tEOOvO0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-rgb-color": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-rgb-color/-/plugin-rgb-color-3.8.1.tgz", + "integrity": "sha512-xNLqnaFUYjU+7dCHQXjZdM4UojUAVorPVmXlYmkh1xmujLljEaFTwCg1UJVlNq+fXENIFkeaf3/XT0U/q0ZBTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/plugin-sounds": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-sounds/-/plugin-sounds-3.8.1.tgz", + "integrity": "sha512-cBcT0vPvq1uR3pJolj/tm+/VgCnvCoXvTZCRRazCKdXL6GqzmbINil5M/kdmQfPyzh+X8OT5Qi3JEOdlUF4KCQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/preset-fireworks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@tsparticles/preset-fireworks/-/preset-fireworks-3.2.0.tgz", + "integrity": "sha512-weLfPAxhL5CC1SkOeE0UXyWzsQyO8ggLe0LFTJ/J0+m6U9DB6PX0lvvdDf3Jh31pwGzj4QwkGIQ2FcgoUrWc2w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/basic": "^3.7.1", + "@tsparticles/engine": "^3.7.1", + "@tsparticles/plugin-emitters": "^3.7.1", + "@tsparticles/plugin-emitters-shape-square": "^3.7.1", + "@tsparticles/plugin-sounds": "^3.7.1", + "@tsparticles/shape-line": "^3.7.1", + "@tsparticles/updater-destroy": "^3.7.1", + "@tsparticles/updater-life": "^3.7.1", + "@tsparticles/updater-rotate": "^3.7.1", + "@tsparticles/updater-stroke-color": "^3.7.1" + } + }, + "node_modules/@tsparticles/react": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tsparticles/react/-/react-3.0.0.tgz", + "integrity": "sha512-hjGEtTT1cwv6BcjL+GcVgH++KYs52bIuQGW3PWv7z3tMa8g0bd6RI/vWSLj7p//NZ3uTjEIeilYIUPBh7Jfq/Q==", + "peerDependencies": { + "@tsparticles/engine": "^3.0.2", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@tsparticles/shape-circle": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.8.1.tgz", + "integrity": "sha512-dM/f+qcpd8/KfviuVuKiTS8KLDE/T7xxHK7EI2S49yPW6yrJJBXdL7T4N9/n/6PF+Wslcl+kf/eTDjEAI3WjNQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/shape-emoji": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.8.1.tgz", + "integrity": "sha512-xiXNZ/afdecengUXhOqgUwR+vysgaseVpzEjoGoliOMWq4WHWv+S6ujNfes2oz3x736mTlvKdXcEWRncSXaKWw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/shape-image": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.8.1.tgz", + "integrity": "sha512-7Yi25uLXvcY5A6TzyVBjYPsTmeTrE+0a2YO8kdp3O7V9NRGCSfXKnPRFp+lNOTiQRRvOG+SSzx2G18dfc/jwQg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/shape-line": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.8.1.tgz", + "integrity": "sha512-aXVKkpGLgi1hbU/JO+opzy3OTt6PfxWrhGZyI0ms3vdcRX9uYlq4GoNUoKPVfntjWzhecF+FNNZ9gqUG/+WZLQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/shape-polygon": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.8.1.tgz", + "integrity": "sha512-1pAx85NJbgmsOngl+ZAYH8vxwPJmoddjWCbWTD0wlp/x+2NRjn1iaGBKObPKLgwVzsAXb9qNHMsUX/x0C54svw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/shape-square": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.8.1.tgz", + "integrity": "sha512-4cjDt6542dkc15zxG1VYT7ScgPXM3+5VGtwMfh5CYNBx+GZZ3R+XUo1Q66JadcqKcNdHXfMWbXCMxs0GaiTtSw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/shape-star": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.8.1.tgz", + "integrity": "sha512-wBxnawqan/ocguNxY6cOEXF+YVnLIUmGBlnVGYx/7U9E2UHuHEKkoumob4fUflKISjvj5eQLpm/E1eUfYMd6RA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/slim": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.8.1.tgz", + "integrity": "sha512-b6JV8MrxMz0XYn0eBCI/Mq8VCRyeaWfUyQaQyxLiRd96xpBXCeULooJF+Eaz9it1sUI898a5QfvY8djNXs4OJw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/basic": "3.8.1", + "@tsparticles/engine": "3.8.1", + "@tsparticles/interaction-external-attract": "3.8.1", + "@tsparticles/interaction-external-bounce": "3.8.1", + "@tsparticles/interaction-external-bubble": "3.8.1", + "@tsparticles/interaction-external-connect": "3.8.1", + "@tsparticles/interaction-external-grab": "3.8.1", + "@tsparticles/interaction-external-pause": "3.8.1", + "@tsparticles/interaction-external-push": "3.8.1", + "@tsparticles/interaction-external-remove": "3.8.1", + "@tsparticles/interaction-external-repulse": "3.8.1", + "@tsparticles/interaction-external-slow": "3.8.1", + "@tsparticles/interaction-particles-attract": "3.8.1", + "@tsparticles/interaction-particles-collisions": "3.8.1", + "@tsparticles/interaction-particles-links": "3.8.1", + "@tsparticles/move-parallax": "3.8.1", + "@tsparticles/plugin-easing-quad": "3.8.1", + "@tsparticles/shape-emoji": "3.8.1", + "@tsparticles/shape-image": "3.8.1", + "@tsparticles/shape-line": "3.8.1", + "@tsparticles/shape-polygon": "3.8.1", + "@tsparticles/shape-square": "3.8.1", + "@tsparticles/shape-star": "3.8.1", + "@tsparticles/updater-life": "3.8.1", + "@tsparticles/updater-rotate": "3.8.1", + "@tsparticles/updater-stroke-color": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-color": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.8.1.tgz", + "integrity": "sha512-HKrZzrF8YJ+TD+FdIwaWOPV565bkBhe+Ewj7CwKblG7H/SG+C6n1xIYobXkGP5pYkkQ+Cm1UV/Aq0Ih7sa+rJg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-destroy": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-destroy/-/updater-destroy-3.8.1.tgz", + "integrity": "sha512-OMy8zZv3ujiaLw1i2BNWOhDgBPNnDiKlTwIP1mK0N9cYOplJkgaxmHOc7NhCndnLvZaYHqfN2bujLK2iBgNdbw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-life": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.8.1.tgz", + "integrity": "sha512-5rCFFKD7js1lKgTpKOLo2OfmisWp4qqMVUVR4bNPeR0Ne/dcwDbKDzWyYS2AMsvWv/gcTTtWiarRfAiVQ5HtNg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-opacity": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.8.1.tgz", + "integrity": "sha512-41dJ0T7df7AUFFkV9yU0buUfUwh+hLYcViXxkDy+6CJiiNCNZ4H404w1DTpBQLL4fbxUcDk9BXZLV7gkE2OfAw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-out-modes": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.8.1.tgz", + "integrity": "sha512-BY8WqQwoDFpgPybwTzBU2GnxtRkjWnGStqBnR53x5+f1j7geTSY6WjcOvl1W+IkjtwtjiifriwBl41EbqMrjdQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-rotate": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.8.1.tgz", + "integrity": "sha512-gpI07H1+diuuUdhJsQ1RlfHSD3fzBJrjyuwGuoXgHmvKzak6EWKpYfUMOraH4Dm41m/4kJZelle4nST+NpIuoA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-size": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.8.1.tgz", + "integrity": "sha512-SC2ZxewtpwKadCalotK6x2YanxRO3hTMW1Rxzx9V2rcjAIgh/Nw49Vuithy2TDq8RtTc9rHDAPic2vMQ/lYQwA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, + "node_modules/@tsparticles/updater-stroke-color": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.8.1.tgz", + "integrity": "sha512-rofHCf5oRHP2H+BTJ4D3r4mTqZtre3c8bsdJHATle26+gLpzbt6I1a83wAY8xnsQa1BNnRAfEsnb7GpdZ1vYaw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.8.1" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -17564,33 +18112,6 @@ "@types/unist": "*" } }, - "node_modules/react-particles": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/react-particles/-/react-particles-2.12.2.tgz", - "integrity": "sha512-Bo9DdrBRPFy8uiT7BA8P36Rdmz6GhB/RG9kkWUyZGIsS8AxWyuUjpVxw9Lr23K0LVE2aenAJ0vnqEbbLDpBgQw==", - "deprecated": "@tsparticles/react is the new version, please use that", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "hasInstallScript": true, - "dependencies": { - "tsparticles-engine": "^2.12.0" - }, - "peerDependencies": { - "react": ">=16" - } - }, "node_modules/react-smooth": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", @@ -19814,204 +20335,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" }, - "node_modules/tsparticles-basic": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-basic/-/tsparticles-basic-2.12.0.tgz", - "integrity": "sha512-pN6FBpL0UsIUXjYbiui5+IVsbIItbQGOlwyGV55g6IYJBgdTNXgFX0HRYZGE9ZZ9psEXqzqwLM37zvWnb5AG9g==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "dependencies": { - "tsparticles-engine": "^2.12.0", - "tsparticles-move-base": "^2.12.0", - "tsparticles-shape-circle": "^2.12.0", - "tsparticles-updater-color": "^2.12.0", - "tsparticles-updater-opacity": "^2.12.0", - "tsparticles-updater-out-modes": "^2.12.0", - "tsparticles-updater-size": "^2.12.0" - } - }, - "node_modules/tsparticles-engine": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz", - "integrity": "sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "hasInstallScript": true - }, - "node_modules/tsparticles-move-base": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-move-base/-/tsparticles-move-base-2.12.0.tgz", - "integrity": "sha512-oSogCDougIImq+iRtIFJD0YFArlorSi8IW3HD2gO3USkH+aNn3ZqZNTqp321uB08K34HpS263DTbhLHa/D6BWw==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-plugin-emitters": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-plugin-emitters/-/tsparticles-plugin-emitters-2.12.0.tgz", - "integrity": "sha512-fbskYnaXWXivBh9KFReVCfqHdhbNQSK2T+fq2qcGEWpwtDdgujcaS1k2Q/xjZnWNMfVesik4IrqspcL51gNdSA==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-plugin-sounds": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-plugin-sounds/-/tsparticles-plugin-sounds-2.12.0.tgz", - "integrity": "sha512-Jm/Mdddq9E9VdHtAbYmv3pgtHQ3nBSbXN+n2axqm6vACgrE/JA4tgLZyuknns0scxibvqh/7zFxkOSa+4ucYuQ==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-preset-fireworks": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-preset-fireworks/-/tsparticles-preset-fireworks-2.12.0.tgz", - "integrity": "sha512-8Y1F2YZH/LkqPVniEmfArHe2qyuJwzTiWmX1of9bClyA+Xz7p219JRednNp0QaAiZeJ+GS9X7hlBa4r3m1kPiw==", - "deprecated": "@tsparticles/preset-fireworks is the new package, please use that", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/matteobruni" - }, - { - "type": "github", - "url": "https://github.com/sponsors/tsparticles" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/matteobruni" - } - ], - "dependencies": { - "tsparticles-basic": "^2.12.0", - "tsparticles-engine": "^2.12.0", - "tsparticles-plugin-emitters": "^2.12.0", - "tsparticles-plugin-sounds": "^2.12.0", - "tsparticles-shape-line": "^2.12.0", - "tsparticles-updater-destroy": "^2.12.0", - "tsparticles-updater-life": "^2.12.0", - "tsparticles-updater-rotate": "^2.12.0", - "tsparticles-updater-stroke-color": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-circle": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-circle/-/tsparticles-shape-circle-2.12.0.tgz", - "integrity": "sha512-L6OngbAlbadG7b783x16ns3+SZ7i0SSB66M8xGa5/k+YcY7zm8zG0uPt1Hd+xQDR2aNA3RngVM10O23/Lwk65Q==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-shape-line": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-shape-line/-/tsparticles-shape-line-2.12.0.tgz", - "integrity": "sha512-RcpKmmpKlk+R8mM5wA2v64Lv1jvXtU4SrBDv3vbdRodKbKaWGGzymzav1Q0hYyDyUZgplEK/a5ZwrfrOwmgYGA==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-color": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-color/-/tsparticles-updater-color-2.12.0.tgz", - "integrity": "sha512-KcG3a8zd0f8CTiOrylXGChBrjhKcchvDJjx9sp5qpwQK61JlNojNCU35xoaSk2eEHeOvFjh0o3CXWUmYPUcBTQ==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-destroy": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-destroy/-/tsparticles-updater-destroy-2.12.0.tgz", - "integrity": "sha512-6NN3dJhxACvzbIGL4dADbYQSZJmdHfwjujj1uvnxdMbb2x8C/AZzGxiN33smo4jkrZ5VLEWZWCJPJ8aOKjQ2Sg==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-life": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-life/-/tsparticles-updater-life-2.12.0.tgz", - "integrity": "sha512-J7RWGHAZkowBHpcLpmjKsxwnZZJ94oGEL2w+wvW1/+ZLmAiFFF6UgU0rHMC5CbHJT4IPx9cbkYMEHsBkcRJ0Bw==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-opacity": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.12.0.tgz", - "integrity": "sha512-YUjMsgHdaYi4HN89LLogboYcCi1o9VGo21upoqxq19yRy0hRCtx2NhH22iHF/i5WrX6jqshN0iuiiNefC53CsA==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-out-modes": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.12.0.tgz", - "integrity": "sha512-owBp4Gk0JNlSrmp12XVEeBroDhLZU+Uq3szbWlHGSfcR88W4c/0bt0FiH5bHUqORIkw+m8O56hCjbqwj69kpOQ==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-rotate": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-rotate/-/tsparticles-updater-rotate-2.12.0.tgz", - "integrity": "sha512-waOFlGFmEZOzsQg4C4VSejNVXGf4dMf3fsnQrEROASGf1FCd8B6WcZau7JtXSTFw0OUGuk8UGz36ETWN72DkCw==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-size": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-size/-/tsparticles-updater-size-2.12.0.tgz", - "integrity": "sha512-B0yRdEDd/qZXCGDL/ussHfx5YJ9UhTqNvmS5X2rR2hiZhBAE2fmsXLeWkdtF2QusjPeEqFDxrkGiLOsh6poqRA==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, - "node_modules/tsparticles-updater-stroke-color": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.12.0.tgz", - "integrity": "sha512-MPou1ZDxsuVq6SN1fbX+aI5yrs6FyP2iPCqqttpNbWyL+R6fik1rL0ab/x02B57liDXqGKYomIbBQVP3zUTW1A==", - "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", - "dependencies": { - "tsparticles-engine": "^2.12.0" - } - }, "node_modules/tstl": { "version": "2.5.16", "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.16.tgz", diff --git a/package.json b/package.json index 3472faa91..3dde17337 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,10 @@ "@prisma/client": "^5.20.0", "@slack/web-api": "^7.6.0", "@svgr/webpack": "^8.1.0", + "@tsparticles/engine": "^3.8.1", + "@tsparticles/preset-fireworks": "^3.2.0", + "@tsparticles/react": "^3.0.0", + "@tsparticles/slim": "^3.8.1", "@yudiel/react-qr-scanner": "^2.0.8", "acorn": "^8.12.1", "ajv": "^8.17.1", @@ -82,7 +86,6 @@ "react-dom": "^18.3.1", "react-ios-pwa-prompt": "^1.8.4", "react-markdown": "^9.0.1", - "react-particles": "^2.12.2", "react-string-replace": "^1.1.1", "react-syntax-highlighter": "^15.5.0", "react-textarea-autosize": "^8.5.4", @@ -98,8 +101,6 @@ "source-map": "^0.8.0-beta.0", "textarea-caret": "^3.1.0", "tldts": "^6.1.51", - "tsparticles-engine": "^2.12.0", - "tsparticles-preset-fireworks": "^2.12.0", "tsx": "^4.19.1", "twitter-api-v2": "^1.22.0", "unist-util-visit": "^5.0.0",