diff --git a/marketing/package-lock.json b/marketing/package-lock.json
index b8297ad..b11329b 100644
--- a/marketing/package-lock.json
+++ b/marketing/package-lock.json
@@ -14,15 +14,21 @@
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
+ "@tsparticles/engine": "^3.4.0",
+ "@tsparticles/react": "^3.0.0",
+ "@tsparticles/slim": "^3.4.0",
"@types/jest": "^27.5.2",
"@types/node": "^16.18.67",
"@types/react": "^18.2.41",
"@types/react-dom": "^18.2.17",
+ "clsx": "^2.1.1",
+ "framer-motion": "^11.2.6",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.51.0",
"react-router-dom": "^6.22.2",
"react-scripts": "5.0.1",
+ "tailwind-merge": "^2.3.0",
"tailwindcss": "^3.4.1",
"typescript": "^4.9.5",
"web-vitals": "^2.1.4"
@@ -1965,9 +1971,9 @@
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
},
"node_modules/@babel/runtime": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz",
- "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz",
+ "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -3957,6 +3963,365 @@
"node": ">=10.13.0"
}
},
+ "node_modules/@tsparticles/basic": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.4.0.tgz",
+ "integrity": "sha512-a0HxG0GOhXof7NDqcqdyu9XpmCAQ0M402YECz/jsH4CkBpz3ut0BrgnyjT6Xcqna3pR1Kv1m516/sV2fwNnnQw==",
+ "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": "^3.4.0",
+ "@tsparticles/move-base": "^3.4.0",
+ "@tsparticles/shape-circle": "^3.4.0",
+ "@tsparticles/updater-color": "^3.4.0",
+ "@tsparticles/updater-opacity": "^3.4.0",
+ "@tsparticles/updater-out-modes": "^3.4.0",
+ "@tsparticles/updater-size": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/engine": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.4.0.tgz",
+ "integrity": "sha512-OqoMZYJCoiihNnexnnSmInEMNXr0Z8CmE1HSiFVeifgK1qUlonTFe2G09KdvNT8ZdvmIC513yTpFJNDbnMZYRQ==",
+ "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/interaction-external-attract": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.4.0.tgz",
+ "integrity": "sha512-6enSRkoXyK0JvW8bJuj2xAUuu9VzDiFvRCPaL+5dcLcDpjheh8nWpGzrgo8p9VxLL5VRYv7PxnYPMviBMQ7WzA==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-bounce": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.4.0.tgz",
+ "integrity": "sha512-yiTJD8t+Uzpo9lyhHlaC+azu49dJtrFVhbVZdDaiTNm1L1stFQBrc+9NY63BfQDEkDmSz4uWvQXQMru2KY+40g==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-bubble": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.4.0.tgz",
+ "integrity": "sha512-CQ1nC6Or8qAAkH7A2x3FkP473caM7UWQiiN4zR4JtSZu06+2Y0V09LXguQKx1RWDehgRvkylQ4Dgur4a5qNb8w==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-connect": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.4.0.tgz",
+ "integrity": "sha512-UBzs0iV7wLbrL2VIuCT25asUjjXGCiVC/kCM5NtG7+gd6wDB8DbjZPjHviI7AnEnJdBPeZ2eeYIVuLiO1Xpd3A==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-grab": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.4.0.tgz",
+ "integrity": "sha512-BsnwN1x+nYUCD7iSu/wLX//awAka1Vf5gnynBqgmz0odAlN3Wv2i9iR/JkzDQynmGLJPHffYgkXC8LWXgZZznQ==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-pause": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.4.0.tgz",
+ "integrity": "sha512-B6xvHLLktN9BHPcIbAxc7F68aDOnieKAxPwqSuvRtQrEP0Q3xcvTkw1TBwzehr9mZH+0SVGzPfH8BMWI4EP1Xg==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-push": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.4.0.tgz",
+ "integrity": "sha512-SriLK1X45CaLwzxjtDo5nCGtF8lwPwK5zYO6+UU+9djUzbh/dBlXQr63ovm/jYPE+yGPRxAhJLdiHpss6aaavQ==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-remove": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.4.0.tgz",
+ "integrity": "sha512-9W4v8s3J+4l9AXpAvvAMbdG0G6y0HHA+/ZmP/9CtVc1fqVDDrMHL0ojXuVlGMxVjKgwuO28x8+jOAuM7PHiSsQ==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-repulse": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.4.0.tgz",
+ "integrity": "sha512-5tM8uLGsKMUhZ2+Acy8XHrw1MN+apqNBhfVYoZ5UdH2soX1xAicSCrEpSObiS1xjCmkpRlkfls3Ygo4FHz3eSg==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-external-slow": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.4.0.tgz",
+ "integrity": "sha512-bBlKG3VS8g64+HiDlu9RbWt/3bIepEu25w8G2zTB+GQMBqDpKsMioWWKNT66w/661U1BlvUZWHaJE/OdMCZTZw==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-particles-attract": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.4.0.tgz",
+ "integrity": "sha512-Ye6f37AZYaMExjsZSoOEMsTSFIPs3ZZCxiQmiCeH+gNK8yGXJDLkWwZUN0S7S4GJDf24Nt4S+gunKJxO8C3qGQ==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-particles-collisions": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.4.0.tgz",
+ "integrity": "sha512-JmDyXlGS6vSrUxvgMf/t6hsnsAS4YRc9rZM3CcmfyUM9UG9/+vef/cekNDSVRzszk5KcFF70w2FLJ6EhYs0ecA==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/interaction-particles-links": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.4.0.tgz",
+ "integrity": "sha512-2UhzNsZCSF69L0PGwlJARNx3qrMdSrl5p/TgO5Q5w7iwBU1x/W27O+TDQvNdMHsOLPPUomUI+jJfRXY2snqp3Q==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/move-base": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.4.0.tgz",
+ "integrity": "sha512-4P9CzgVN7INogAvqkg/cEA+6WKeGUAtsgljJ2rUADgNBiScW1oJZAw/004AZiOlonLRiUZujUCNS4zlAg62ZvQ==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/move-parallax": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.4.0.tgz",
+ "integrity": "sha512-5GdTxro5y3+GFNabaHPFuJl2zOpiyDZJ0D96QAY/sRnI5NNASj7n9QgUeViPdAsOOIgrHgIMl43MqJSUbuK4tw==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/plugin-easing-quad": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.4.0.tgz",
+ "integrity": "sha512-JgZDeoES8ONrt+pKdDRrUkTKJRfjgRpTlLgr2KqqadI+lSOQIw/QJuXfCu25/47wJLcPUxP1melclp6X/IhNog==",
+ "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": "^3.4.0"
+ }
+ },
+ "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.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.4.0.tgz",
+ "integrity": "sha512-X1ynt8h7bO+xep12Vkxeo2fImbKzLMEZr0qY3vKZzhHcy0/lxoo505pwyVL2+V98eZNOu9fmQM7vlIt/0FGTcg==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/shape-emoji": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.4.0.tgz",
+ "integrity": "sha512-fzuRdwzikhiE7bgagNJVFccvipy7+bcG6PGvfGmJO3FQIwYSTRV2mJVsI/uPQkBUGJyzJPncp7FzEix/D3PDCA==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/shape-image": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.4.0.tgz",
+ "integrity": "sha512-US7MYYFP0iMqWs9JiPNmqFSIxmsqkTF6gW6VvDDGtBEUxw3wubSEln3Gc3PQBpa/Tq0jwkUfd1/zkyahOrycUw==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/shape-line": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.4.0.tgz",
+ "integrity": "sha512-pXItuUBtIatcQQLp+CS1HZjHtpGVqswFxDaFZv0b9Ulx+7I48i4T5r6LCF2ngo+3xcT+rDdAF/Ca/oCunztBBA==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/shape-polygon": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.4.0.tgz",
+ "integrity": "sha512-qA7nXwWufVZLyS1CT9cFNqcjgLRQQnILc3w1gkH7B80uGYg4bLgQcOZiI7OwifOFkgyI6Mvb0XRntl+NQaDDRA==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/shape-square": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.4.0.tgz",
+ "integrity": "sha512-pUXAbSnW5aTMFFjAP3GHMxqbah3ADibuQcEmIgts5tNUKY8Bl0Syx5pllpe81z2AMJCsQncC15/M19DU/H+YXw==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/shape-star": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.4.0.tgz",
+ "integrity": "sha512-Gy4FLvVh0qBTVAZbBeV3MfsofYXycxO60/5HqNePsG3+sO/o5DKGZqf/Fw1Cacrb1QYg5A59P/122MZTMnLqEA==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/slim": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.4.0.tgz",
+ "integrity": "sha512-ukQqSdTzBlZHnD6MwRCdJBWbfgWSRNa4BG+H8IVAU5ggdQ7AbnDsdMG/o49cvstguGsKSbjmHYFNkDYGeKasuw==",
+ "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": "^3.4.0",
+ "@tsparticles/engine": "^3.4.0",
+ "@tsparticles/interaction-external-attract": "^3.4.0",
+ "@tsparticles/interaction-external-bounce": "^3.4.0",
+ "@tsparticles/interaction-external-bubble": "^3.4.0",
+ "@tsparticles/interaction-external-connect": "^3.4.0",
+ "@tsparticles/interaction-external-grab": "^3.4.0",
+ "@tsparticles/interaction-external-pause": "^3.4.0",
+ "@tsparticles/interaction-external-push": "^3.4.0",
+ "@tsparticles/interaction-external-remove": "^3.4.0",
+ "@tsparticles/interaction-external-repulse": "^3.4.0",
+ "@tsparticles/interaction-external-slow": "^3.4.0",
+ "@tsparticles/interaction-particles-attract": "^3.4.0",
+ "@tsparticles/interaction-particles-collisions": "^3.4.0",
+ "@tsparticles/interaction-particles-links": "^3.4.0",
+ "@tsparticles/move-parallax": "^3.4.0",
+ "@tsparticles/plugin-easing-quad": "^3.4.0",
+ "@tsparticles/shape-emoji": "^3.4.0",
+ "@tsparticles/shape-image": "^3.4.0",
+ "@tsparticles/shape-line": "^3.4.0",
+ "@tsparticles/shape-polygon": "^3.4.0",
+ "@tsparticles/shape-square": "^3.4.0",
+ "@tsparticles/shape-star": "^3.4.0",
+ "@tsparticles/updater-life": "^3.4.0",
+ "@tsparticles/updater-rotate": "^3.4.0",
+ "@tsparticles/updater-stroke-color": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-color": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.4.0.tgz",
+ "integrity": "sha512-joT5O/78p7n3jBq1aiFEp4wMevv8WtfjBJnODwEUO7aiHRozs9tA05djVLYZ7kjH0bLymJoPwxM46SEGSTsh+g==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-life": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.4.0.tgz",
+ "integrity": "sha512-bFx/3TTNNnWVmHkrfwXVlLc7R8QfbeX+KQ6dy09n+i2Vs3HnQUF7/VITjt0erNzyHfnqh+q+80gCn6X4brvwEQ==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-opacity": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.4.0.tgz",
+ "integrity": "sha512-OCWbebZykDh8ZbTiTQX+pBRXHfTMMJpNXbFps4lTSHXHMDsbEMl5a3/TEFeUk3rd0wkiRSCjPUSGKupoU5B14w==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-out-modes": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.4.0.tgz",
+ "integrity": "sha512-i80MSXpnfivKlfA0FbAxk2CfZGNG3rPNtx5Pz/ZCDQ71j1YFjztdwfugp9oueu/sLfOSw4hIKfyR062zpgZp6Q==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-rotate": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.4.0.tgz",
+ "integrity": "sha512-BKmzN8YLSUPe6OngmhmjPCBJ2RpBi88nfoNJekZnVJpbRses1pV632EaOIAEVT1xsUrwVhvsXYa9Sv5iZxfIRg==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-size": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.4.0.tgz",
+ "integrity": "sha512-3z7INo2E7HR+ps8V490mOiLcCaFmUJFgObXBO3lF6uZ1xe6SfvVsX2r1HpQLwIpq7Ph2ZqQ4tj8tBPyKtada7g==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "node_modules/@tsparticles/updater-stroke-color": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.4.0.tgz",
+ "integrity": "sha512-5pe/777vPZgzlNBkh8GQ3fjT6273wcwlBeq4UkDA/q6bI867d8W+Fi8yUsqfdiS6B5tKSvVsI8rFrfwjEvW0pg==",
+ "dependencies": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
"node_modules/@types/aria-query": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
@@ -5856,6 +6221,14 @@
"wrap-ansi": "^7.0.0"
}
},
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -8393,6 +8766,30 @@
"url": "https://github.com/sponsors/rawify"
}
},
+ "node_modules/framer-motion": {
+ "version": "11.2.6",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.6.tgz",
+ "integrity": "sha512-XUrjjBt57e5YoHQtjwc3eNchFBuHvIgN/cS8SC4oIaAn2J/0+bLanUxXizidJKZVeHJam/JrmMnPRjYMglVn5g==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
@@ -16178,6 +16575,18 @@
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
+ "node_modules/tailwind-merge": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz",
+ "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==",
+ "dependencies": {
+ "@babel/runtime": "^7.24.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
"node_modules/tailwindcss": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
@@ -19082,9 +19491,9 @@
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
},
"@babel/runtime": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz",
- "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz",
+ "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
"requires": {
"regenerator-runtime": "^0.14.0"
}
@@ -20410,6 +20819,304 @@
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
},
+ "@tsparticles/basic": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.4.0.tgz",
+ "integrity": "sha512-a0HxG0GOhXof7NDqcqdyu9XpmCAQ0M402YECz/jsH4CkBpz3ut0BrgnyjT6Xcqna3pR1Kv1m516/sV2fwNnnQw==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0",
+ "@tsparticles/move-base": "^3.4.0",
+ "@tsparticles/shape-circle": "^3.4.0",
+ "@tsparticles/updater-color": "^3.4.0",
+ "@tsparticles/updater-opacity": "^3.4.0",
+ "@tsparticles/updater-out-modes": "^3.4.0",
+ "@tsparticles/updater-size": "^3.4.0"
+ }
+ },
+ "@tsparticles/engine": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.4.0.tgz",
+ "integrity": "sha512-OqoMZYJCoiihNnexnnSmInEMNXr0Z8CmE1HSiFVeifgK1qUlonTFe2G09KdvNT8ZdvmIC513yTpFJNDbnMZYRQ=="
+ },
+ "@tsparticles/interaction-external-attract": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.4.0.tgz",
+ "integrity": "sha512-6enSRkoXyK0JvW8bJuj2xAUuu9VzDiFvRCPaL+5dcLcDpjheh8nWpGzrgo8p9VxLL5VRYv7PxnYPMviBMQ7WzA==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-bounce": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.4.0.tgz",
+ "integrity": "sha512-yiTJD8t+Uzpo9lyhHlaC+azu49dJtrFVhbVZdDaiTNm1L1stFQBrc+9NY63BfQDEkDmSz4uWvQXQMru2KY+40g==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-bubble": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.4.0.tgz",
+ "integrity": "sha512-CQ1nC6Or8qAAkH7A2x3FkP473caM7UWQiiN4zR4JtSZu06+2Y0V09LXguQKx1RWDehgRvkylQ4Dgur4a5qNb8w==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-connect": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.4.0.tgz",
+ "integrity": "sha512-UBzs0iV7wLbrL2VIuCT25asUjjXGCiVC/kCM5NtG7+gd6wDB8DbjZPjHviI7AnEnJdBPeZ2eeYIVuLiO1Xpd3A==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-grab": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.4.0.tgz",
+ "integrity": "sha512-BsnwN1x+nYUCD7iSu/wLX//awAka1Vf5gnynBqgmz0odAlN3Wv2i9iR/JkzDQynmGLJPHffYgkXC8LWXgZZznQ==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-pause": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.4.0.tgz",
+ "integrity": "sha512-B6xvHLLktN9BHPcIbAxc7F68aDOnieKAxPwqSuvRtQrEP0Q3xcvTkw1TBwzehr9mZH+0SVGzPfH8BMWI4EP1Xg==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-push": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.4.0.tgz",
+ "integrity": "sha512-SriLK1X45CaLwzxjtDo5nCGtF8lwPwK5zYO6+UU+9djUzbh/dBlXQr63ovm/jYPE+yGPRxAhJLdiHpss6aaavQ==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-remove": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.4.0.tgz",
+ "integrity": "sha512-9W4v8s3J+4l9AXpAvvAMbdG0G6y0HHA+/ZmP/9CtVc1fqVDDrMHL0ojXuVlGMxVjKgwuO28x8+jOAuM7PHiSsQ==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-repulse": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.4.0.tgz",
+ "integrity": "sha512-5tM8uLGsKMUhZ2+Acy8XHrw1MN+apqNBhfVYoZ5UdH2soX1xAicSCrEpSObiS1xjCmkpRlkfls3Ygo4FHz3eSg==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-external-slow": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.4.0.tgz",
+ "integrity": "sha512-bBlKG3VS8g64+HiDlu9RbWt/3bIepEu25w8G2zTB+GQMBqDpKsMioWWKNT66w/661U1BlvUZWHaJE/OdMCZTZw==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-particles-attract": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.4.0.tgz",
+ "integrity": "sha512-Ye6f37AZYaMExjsZSoOEMsTSFIPs3ZZCxiQmiCeH+gNK8yGXJDLkWwZUN0S7S4GJDf24Nt4S+gunKJxO8C3qGQ==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-particles-collisions": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.4.0.tgz",
+ "integrity": "sha512-JmDyXlGS6vSrUxvgMf/t6hsnsAS4YRc9rZM3CcmfyUM9UG9/+vef/cekNDSVRzszk5KcFF70w2FLJ6EhYs0ecA==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/interaction-particles-links": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.4.0.tgz",
+ "integrity": "sha512-2UhzNsZCSF69L0PGwlJARNx3qrMdSrl5p/TgO5Q5w7iwBU1x/W27O+TDQvNdMHsOLPPUomUI+jJfRXY2snqp3Q==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/move-base": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.4.0.tgz",
+ "integrity": "sha512-4P9CzgVN7INogAvqkg/cEA+6WKeGUAtsgljJ2rUADgNBiScW1oJZAw/004AZiOlonLRiUZujUCNS4zlAg62ZvQ==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/move-parallax": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.4.0.tgz",
+ "integrity": "sha512-5GdTxro5y3+GFNabaHPFuJl2zOpiyDZJ0D96QAY/sRnI5NNASj7n9QgUeViPdAsOOIgrHgIMl43MqJSUbuK4tw==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/plugin-easing-quad": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.4.0.tgz",
+ "integrity": "sha512-JgZDeoES8ONrt+pKdDRrUkTKJRfjgRpTlLgr2KqqadI+lSOQIw/QJuXfCu25/47wJLcPUxP1melclp6X/IhNog==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@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==",
+ "requires": {}
+ },
+ "@tsparticles/shape-circle": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.4.0.tgz",
+ "integrity": "sha512-X1ynt8h7bO+xep12Vkxeo2fImbKzLMEZr0qY3vKZzhHcy0/lxoo505pwyVL2+V98eZNOu9fmQM7vlIt/0FGTcg==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/shape-emoji": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.4.0.tgz",
+ "integrity": "sha512-fzuRdwzikhiE7bgagNJVFccvipy7+bcG6PGvfGmJO3FQIwYSTRV2mJVsI/uPQkBUGJyzJPncp7FzEix/D3PDCA==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/shape-image": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.4.0.tgz",
+ "integrity": "sha512-US7MYYFP0iMqWs9JiPNmqFSIxmsqkTF6gW6VvDDGtBEUxw3wubSEln3Gc3PQBpa/Tq0jwkUfd1/zkyahOrycUw==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/shape-line": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.4.0.tgz",
+ "integrity": "sha512-pXItuUBtIatcQQLp+CS1HZjHtpGVqswFxDaFZv0b9Ulx+7I48i4T5r6LCF2ngo+3xcT+rDdAF/Ca/oCunztBBA==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/shape-polygon": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.4.0.tgz",
+ "integrity": "sha512-qA7nXwWufVZLyS1CT9cFNqcjgLRQQnILc3w1gkH7B80uGYg4bLgQcOZiI7OwifOFkgyI6Mvb0XRntl+NQaDDRA==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/shape-square": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.4.0.tgz",
+ "integrity": "sha512-pUXAbSnW5aTMFFjAP3GHMxqbah3ADibuQcEmIgts5tNUKY8Bl0Syx5pllpe81z2AMJCsQncC15/M19DU/H+YXw==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/shape-star": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.4.0.tgz",
+ "integrity": "sha512-Gy4FLvVh0qBTVAZbBeV3MfsofYXycxO60/5HqNePsG3+sO/o5DKGZqf/Fw1Cacrb1QYg5A59P/122MZTMnLqEA==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/slim": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.4.0.tgz",
+ "integrity": "sha512-ukQqSdTzBlZHnD6MwRCdJBWbfgWSRNa4BG+H8IVAU5ggdQ7AbnDsdMG/o49cvstguGsKSbjmHYFNkDYGeKasuw==",
+ "requires": {
+ "@tsparticles/basic": "^3.4.0",
+ "@tsparticles/engine": "^3.4.0",
+ "@tsparticles/interaction-external-attract": "^3.4.0",
+ "@tsparticles/interaction-external-bounce": "^3.4.0",
+ "@tsparticles/interaction-external-bubble": "^3.4.0",
+ "@tsparticles/interaction-external-connect": "^3.4.0",
+ "@tsparticles/interaction-external-grab": "^3.4.0",
+ "@tsparticles/interaction-external-pause": "^3.4.0",
+ "@tsparticles/interaction-external-push": "^3.4.0",
+ "@tsparticles/interaction-external-remove": "^3.4.0",
+ "@tsparticles/interaction-external-repulse": "^3.4.0",
+ "@tsparticles/interaction-external-slow": "^3.4.0",
+ "@tsparticles/interaction-particles-attract": "^3.4.0",
+ "@tsparticles/interaction-particles-collisions": "^3.4.0",
+ "@tsparticles/interaction-particles-links": "^3.4.0",
+ "@tsparticles/move-parallax": "^3.4.0",
+ "@tsparticles/plugin-easing-quad": "^3.4.0",
+ "@tsparticles/shape-emoji": "^3.4.0",
+ "@tsparticles/shape-image": "^3.4.0",
+ "@tsparticles/shape-line": "^3.4.0",
+ "@tsparticles/shape-polygon": "^3.4.0",
+ "@tsparticles/shape-square": "^3.4.0",
+ "@tsparticles/shape-star": "^3.4.0",
+ "@tsparticles/updater-life": "^3.4.0",
+ "@tsparticles/updater-rotate": "^3.4.0",
+ "@tsparticles/updater-stroke-color": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-color": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.4.0.tgz",
+ "integrity": "sha512-joT5O/78p7n3jBq1aiFEp4wMevv8WtfjBJnODwEUO7aiHRozs9tA05djVLYZ7kjH0bLymJoPwxM46SEGSTsh+g==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-life": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.4.0.tgz",
+ "integrity": "sha512-bFx/3TTNNnWVmHkrfwXVlLc7R8QfbeX+KQ6dy09n+i2Vs3HnQUF7/VITjt0erNzyHfnqh+q+80gCn6X4brvwEQ==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-opacity": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.4.0.tgz",
+ "integrity": "sha512-OCWbebZykDh8ZbTiTQX+pBRXHfTMMJpNXbFps4lTSHXHMDsbEMl5a3/TEFeUk3rd0wkiRSCjPUSGKupoU5B14w==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-out-modes": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.4.0.tgz",
+ "integrity": "sha512-i80MSXpnfivKlfA0FbAxk2CfZGNG3rPNtx5Pz/ZCDQ71j1YFjztdwfugp9oueu/sLfOSw4hIKfyR062zpgZp6Q==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-rotate": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.4.0.tgz",
+ "integrity": "sha512-BKmzN8YLSUPe6OngmhmjPCBJ2RpBi88nfoNJekZnVJpbRses1pV632EaOIAEVT1xsUrwVhvsXYa9Sv5iZxfIRg==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-size": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.4.0.tgz",
+ "integrity": "sha512-3z7INo2E7HR+ps8V490mOiLcCaFmUJFgObXBO3lF6uZ1xe6SfvVsX2r1HpQLwIpq7Ph2ZqQ4tj8tBPyKtada7g==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
+ "@tsparticles/updater-stroke-color": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.4.0.tgz",
+ "integrity": "sha512-5pe/777vPZgzlNBkh8GQ3fjT6273wcwlBeq4UkDA/q6bI867d8W+Fi8yUsqfdiS6B5tKSvVsI8rFrfwjEvW0pg==",
+ "requires": {
+ "@tsparticles/engine": "^3.4.0"
+ }
+ },
"@types/aria-query": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
@@ -21879,6 +22586,11 @@
"wrap-ansi": "^7.0.0"
}
},
+ "clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="
+ },
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -23731,6 +24443,14 @@
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
},
+ "framer-motion": {
+ "version": "11.2.6",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.6.tgz",
+ "integrity": "sha512-XUrjjBt57e5YoHQtjwc3eNchFBuHvIgN/cS8SC4oIaAn2J/0+bLanUxXizidJKZVeHJam/JrmMnPRjYMglVn5g==",
+ "requires": {
+ "tslib": "^2.4.0"
+ }
+ },
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
@@ -29171,6 +29891,14 @@
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
+ "tailwind-merge": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz",
+ "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==",
+ "requires": {
+ "@babel/runtime": "^7.24.1"
+ }
+ },
"tailwindcss": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
diff --git a/marketing/package.json b/marketing/package.json
index 533cfbd..de45061 100644
--- a/marketing/package.json
+++ b/marketing/package.json
@@ -9,15 +9,21 @@
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
+ "@tsparticles/engine": "^3.4.0",
+ "@tsparticles/react": "^3.0.0",
+ "@tsparticles/slim": "^3.4.0",
"@types/jest": "^27.5.2",
"@types/node": "^16.18.67",
"@types/react": "^18.2.41",
"@types/react-dom": "^18.2.17",
+ "clsx": "^2.1.1",
+ "framer-motion": "^11.2.6",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.51.0",
"react-router-dom": "^6.22.2",
"react-scripts": "5.0.1",
+ "tailwind-merge": "^2.3.0",
"tailwindcss": "^3.4.1",
"typescript": "^4.9.5",
"web-vitals": "^2.1.4"
diff --git a/marketing/src/components/sparkles.tsx b/marketing/src/components/sparkles.tsx
new file mode 100644
index 0000000..ac2e90c
--- /dev/null
+++ b/marketing/src/components/sparkles.tsx
@@ -0,0 +1,434 @@
+"use client";
+import React from "react";
+import { useEffect, useState } from "react";
+import Particles, { initParticlesEngine } from "@tsparticles/react";
+import type { Container, SingleOrMultiple } from "@tsparticles/engine";
+import { loadSlim } from "@tsparticles/slim";
+import { cn } from "../utils/cn";
+import { motion, useAnimation } from "framer-motion";
+
+type ParticlesProps = {
+ id?: string;
+ className?: string;
+ background?: string;
+ particleSize?: number;
+ minSize?: number;
+ maxSize?: number;
+ speed?: number;
+ particleColor?: string;
+ particleDensity?: number;
+};
+export const SparklesCore = (props: ParticlesProps) => {
+ const {
+ id,
+ className,
+ background,
+ minSize,
+ maxSize,
+ speed,
+ particleColor,
+ particleDensity,
+ } = props;
+ const [init, setInit] = useState(false);
+ useEffect(() => {
+ initParticlesEngine(async (engine) => {
+ await loadSlim(engine);
+ }).then(() => {
+ setInit(true);
+ });
+ }, []);
+ const controls = useAnimation();
+
+ const particlesLoaded = async (container?: Container) => {
+ if (container) {
+ console.log(container);
+ controls.start({
+ opacity: 1,
+ transition: {
+ duration: 1,
+ },
+ });
+ }
+ };
+
+ return (
+
+ The team united around a shared frustration: constantly feeling out of the loop about campus events and activities. + We often wanted to participate but missed opportunities because we learned about them too late. +
++ Motivated by this challenge, we aimed to create a solution that keeps students informed and connected. + Our goal was to develop a platform where students could easily find out what’s happening on campus and stay engaged with their community. +
++ This vision led to the creation of... +
+