From 4cc1d909a536d29ef688f323a8a047c103d45c9b Mon Sep 17 00:00:00 2001 From: Tamanna Date: Sun, 20 Oct 2024 16:43:23 +0530 Subject: [PATCH 1/2] Added ChaosMania and ButtonCollection --- chaosweb-v@2/package-lock.json | 1353 +++++++++++++++++- chaosweb-v@2/package.json | 7 + chaosweb-v@2/postcss.config.js | 6 + chaosweb-v@2/src/App.jsx | 4 + chaosweb-v@2/src/assets/snowstruct.png | Bin 0 -> 78496 bytes chaosweb-v@2/src/components/FireRain.css | 36 + chaosweb-v@2/src/components/FireRain.jsx | 33 + chaosweb-v@2/src/components/Firework.css | 34 + chaosweb-v@2/src/components/Firework.jsx | 42 + chaosweb-v@2/src/components/FloatingRain.css | 47 + chaosweb-v@2/src/components/FloatingRain.jsx | 40 + chaosweb-v@2/src/components/Snowfall.css | 33 + chaosweb-v@2/src/components/Snowfall.jsx | 35 + chaosweb-v@2/src/components/Starfield.css | 100 ++ chaosweb-v@2/src/components/Starfield.jsx | 48 + chaosweb-v@2/src/components/navbar.jsx | 606 +------- chaosweb-v@2/src/index.css | 4 + chaosweb-v@2/src/pages/ButtonCollection.css | 98 ++ chaosweb-v@2/src/pages/ButtonCollection.jsx | 100 ++ chaosweb-v@2/src/pages/ChaosMania.css | 146 ++ chaosweb-v@2/src/pages/ChaosMania.jsx | 83 ++ chaosweb-v@2/tailwind.config.js | 11 + 22 files changed, 2267 insertions(+), 599 deletions(-) create mode 100644 chaosweb-v@2/postcss.config.js create mode 100644 chaosweb-v@2/src/assets/snowstruct.png create mode 100644 chaosweb-v@2/src/components/FireRain.css create mode 100644 chaosweb-v@2/src/components/FireRain.jsx create mode 100644 chaosweb-v@2/src/components/Firework.css create mode 100644 chaosweb-v@2/src/components/Firework.jsx create mode 100644 chaosweb-v@2/src/components/FloatingRain.css create mode 100644 chaosweb-v@2/src/components/FloatingRain.jsx create mode 100644 chaosweb-v@2/src/components/Snowfall.css create mode 100644 chaosweb-v@2/src/components/Snowfall.jsx create mode 100644 chaosweb-v@2/src/components/Starfield.css create mode 100644 chaosweb-v@2/src/components/Starfield.jsx create mode 100644 chaosweb-v@2/src/pages/ButtonCollection.css create mode 100644 chaosweb-v@2/src/pages/ButtonCollection.jsx create mode 100644 chaosweb-v@2/src/pages/ChaosMania.css create mode 100644 chaosweb-v@2/src/pages/ChaosMania.jsx create mode 100644 chaosweb-v@2/tailwind.config.js diff --git a/chaosweb-v@2/package-lock.json b/chaosweb-v@2/package-lock.json index dbff3df..0498159 100644 --- a/chaosweb-v@2/package-lock.json +++ b/chaosweb-v@2/package-lock.json @@ -8,10 +8,14 @@ "name": "chaosweb-v-2", "version": "0.0.0", "dependencies": { + "fireworks-js": "^2.10.8", "react": "^18.3.1", + "react-confetti": "^6.1.0", "react-dom": "^18.3.1", + "react-fireworks": "^1.0.4", "react-router-dom": "^6.26.2", "react-slick": "^0.30.2", + "react-tsparticles": "^2.12.2", "slick-carousel": "^1.8.1" }, "devDependencies": { @@ -19,14 +23,30 @@ "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.2", + "autoprefixer": "^10.4.20", "eslint": "^9.11.1", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.1.0-rc.0", "eslint-plugin-react-refresh": "^0.4.12", "globals": "^15.9.0", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.14", "vite": "^5.4.8" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -871,6 +891,24 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -919,6 +957,55 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@remix-run/router": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", @@ -1269,6 +1356,19 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1281,6 +1381,34 @@ "node": ">=4" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1417,6 +1545,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1438,6 +1604,19 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1448,6 +1627,19 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/browserslist": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", @@ -1508,6 +1700,16 @@ "node": ">=6" } }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001667", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", @@ -1542,6 +1744,44 @@ "node": ">=4" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -1563,6 +1803,16 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1589,6 +1839,19 @@ "node": ">= 8" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -1703,6 +1966,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -1715,12 +1992,26 @@ "node": ">=0.10.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.35", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.35.tgz", "integrity": "sha512-hOSRInrIDm0Brzp4IHW2F/VM+638qOL2CzE0DgpnGzKW27C95IqqeqgKz/hxHGnvPxvQGpHUGD5qRVC9EZY2+A==", "dev": true }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, "node_modules/enquire.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", @@ -2229,6 +2520,36 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2241,6 +2562,16 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -2253,6 +2584,19 @@ "node": ">=16.0.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2269,6 +2613,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fireworks-js": { + "version": "2.10.8", + "resolved": "https://registry.npmjs.org/fireworks-js/-/fireworks-js-2.10.8.tgz", + "integrity": "sha512-UZNxeJvRmQzLisN4iriWXqKojG9TDJqc0dPmkUw0/+AEQQ3w8z1Jx2YdFSiBGSVb/u4dPTQXU109GMVblzhfpg==", + "license": "MIT" + }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -2297,6 +2647,37 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2392,6 +2773,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2404,6 +2806,32 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "15.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", @@ -2616,6 +3044,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -2710,6 +3151,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -2761,6 +3212,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -2932,10 +3393,36 @@ "node": ">= 0.4" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", "license": "MIT", "peer": true }, @@ -3044,6 +3531,23 @@ "node": ">= 0.8.0" } }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3091,6 +3595,30 @@ "yallist": "^3.0.2" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3103,12 +3631,34 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -3139,6 +3689,26 @@ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3148,6 +3718,16 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", @@ -3283,6 +3863,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3319,12 +3906,69 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/picocolors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -3353,6 +3997,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -3362,6 +4007,158 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-import/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3391,6 +4188,27 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -3402,6 +4220,21 @@ "node": ">=0.10.0" } }, + "node_modules/react-confetti": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz", + "integrity": "sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==", + "license": "MIT", + "dependencies": { + "tween-functions": "^1.2.0" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.1 || ^18.0.0" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -3414,6 +4247,12 @@ "react": "^18.3.1" } }, + "node_modules/react-fireworks": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-fireworks/-/react-fireworks-1.0.4.tgz", + "integrity": "sha512-jj1a+HTicB4pR6g2lqhVyAox0GTE0TOrZK2XaJFRYOwltgQWeYErZxnvU9+zH/blY+Hpmu9IKyb39OD3KcCMJw==", + "license": "ISC" + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -3476,6 +4315,57 @@ "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-tsparticles": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/react-tsparticles/-/react-tsparticles-2.12.2.tgz", + "integrity": "sha512-/nrEbyL8UROXKIMXe+f+LZN2ckvkwV2Qa+GGe/H26oEIc+wq/ybSG9REDwQiSt2OaDQGu0MwmA4BKmkL6wAWcA==", + "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, + "license": "MIT", + "dependencies": { + "tsparticles-engine": "^2.12.0" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -3544,7 +4434,18 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, "node_modules/rollup": { @@ -3582,6 +4483,30 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -3705,6 +4630,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/slick-carousel": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", @@ -3729,6 +4667,70 @@ "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", "license": "MIT" }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -3814,6 +4816,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3826,6 +4868,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -3850,12 +4915,91 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwindcss": { + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -3865,6 +5009,54 @@ "node": ">=4" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.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, + "license": "MIT" + }, + "node_modules/tween-functions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", + "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==", + "license": "BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4004,6 +5196,13 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, "node_modules/vite": { "version": "5.4.8", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", @@ -4166,12 +5365,156 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/chaosweb-v@2/package.json b/chaosweb-v@2/package.json index 2fb66b8..0b5b570 100644 --- a/chaosweb-v@2/package.json +++ b/chaosweb-v@2/package.json @@ -10,10 +10,14 @@ "preview": "vite preview" }, "dependencies": { + "fireworks-js": "^2.10.8", "react": "^18.3.1", + "react-confetti": "^6.1.0", "react-dom": "^18.3.1", + "react-fireworks": "^1.0.4", "react-router-dom": "^6.26.2", "react-slick": "^0.30.2", + "react-tsparticles": "^2.12.2", "slick-carousel": "^1.8.1" }, "devDependencies": { @@ -21,11 +25,14 @@ "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.2", + "autoprefixer": "^10.4.20", "eslint": "^9.11.1", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.1.0-rc.0", "eslint-plugin-react-refresh": "^0.4.12", "globals": "^15.9.0", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.14", "vite": "^5.4.8" } } diff --git a/chaosweb-v@2/postcss.config.js b/chaosweb-v@2/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/chaosweb-v@2/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/chaosweb-v@2/src/App.jsx b/chaosweb-v@2/src/App.jsx index 8ee2129..0822bc6 100644 --- a/chaosweb-v@2/src/App.jsx +++ b/chaosweb-v@2/src/App.jsx @@ -8,6 +8,8 @@ import MazeGame from './components/MazeGame'; import './index.css' import Review from "./pages/Review"; import Contributors from "./pages/Contributors"; +import ChaosMania from "./pages/ChaosMania"; +import ButtonCollection from "./pages/ButtonCollection"; function App() { @@ -23,6 +25,8 @@ function App() { } /> } /> } /> + } /> + } /> diff --git a/chaosweb-v@2/src/assets/snowstruct.png b/chaosweb-v@2/src/assets/snowstruct.png new file mode 100644 index 0000000000000000000000000000000000000000..44d13695608ae7cc288453f55bf8c96825c990da GIT binary patch literal 78496 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

aLf{*4uTayW8Tc4&#^{<&ZmD@ z3FBXrb=_~ivo3`MbGgDfrae!RSSG{c%0RHLW5r}D`feT5>)um%CYgOH%wMj{y_f1G z9Z|hE^3@Yx0D_>L=1W#{ko(IjxU(OxOnhc74UJyPjgii|0(c>J_Xc~LcHW+wM^Nl6 zb^HAK2phrP$_(Yy8mRT2(gY~NtR(sV>1(ZaJkO^!1K%*T(M9rBZ<&h<$ot_MC&ll# zleO4gDFiQcB+5JL`4A7gyVX0a?Lc=dc(ow%F$=7-aXc(K#ZWFK{9C}{I&TsRwx^{8 zP@=E}w3##U5)IYyzh$~?oc3QdFXHw#605rPUausRM=H5jWQYkB-CN_~*$?=S$LhU8ImPFjv3M%`yXQGJ~+LT=qq18tK)ae81W5NLcJNFd_U^)-{>5Sto{i zKKn$^i58qmT@7Tj=)L-Y-)!?7DGFCeoA?_VC}4H-JKnR)`fppeP`G$3qP&9PJewb( zI2wz<-ad1H9mU}{W~}`?ch&N4xa17n zGaL3G>U2x+O<~Q`)4SJm3dQY1it0=Oky0Rc4gNXOyDv?DVw0l%?7HmZ`kz)h=3%;( zG#WIV--J;X7{$XTh{6g;4C?x*s~9G=vNfBBKZt30zLx(;sduB$z+Lm5H#g<3MRoZqT zdKKfI-N&TO_&<1v%{&?*Oqp`P0_)$W8rMq=lZ;wt>Z1G1-vC0sUtZt6|7Mmq+wk_^ zzy#@f%R_qL;~%088n~k7OL^Xqu74pmYU(~U2gcS0+dN;4?U+L&?*gO@&S~Lpi~)Tz zu;oT*Zp$MZK+aSS3bETyAvaWy0r?BXb36nYcw{#D)J2qewRZvERCW3-+P#gJhP@a6 z<`jN758vZa(ooO04hYfFPC|<k40OYz@pr_()fj8rw19lC{#J?f_WiS)G^|j- zjPYC^>(q2vZh!+tJ#=uk!Zc!r7Y+*I!zp$8MxakZo3Yb>#>kjDpZbN=5_;J-U>XhU zCI=A^8|T{kNe|&O2|@v1Viku+GitufQP$?=dAyceNqeCn_F3FyI?L}#r+j3mO6xlj z6_yk`$r@c_4uV)Y4h6tn{A$*h^)mWEP9a^ zEXlzp04>t8-Rl%u9uqnzP7DO1Z1<|qU|Z4Mw1C%T14t!~LE+N=={3SGeX$Amz)J6j z??+$^9=O0XKhv0!!_%0vT?TvjOZt4%-u0=|6GJerM+?j=6`?H2<_dc3i5_~dZk&Vj4q2`4-`W+2S!<<2_Hm5Dqhv2fTCn_QMsvBi`oUaQ!Q#vMh= z=kHd(>3is`j*3;xHThG{u9~|?o6j}b&d(m3 zxx<_5<>aqiD?X+3koONVvrKFOhiU?AOLgw2#hn7|U+>y#bLHVQGp=#Qwook2af1DE z_)|RETvc3xKv`+xn>n6?$97M^d%pmy2P3EB { + const fireContainer = useRef(null); + + useEffect(() => { + const createFireDrop = () => { + const fireDrop = document.createElement('div'); + fireDrop.classList.add('fire-drop'); + fireDrop.style.left = `${Math.random() * 100}vw`; + fireDrop.style.animationDuration = `${Math.random() * 3 + 2}s`; + fireDrop.style.opacity = `${Math.random() * 0.5 + 0.5}`; + + fireContainer.current.appendChild(fireDrop); + + // Remove fire drop after animation ends to avoid memory leaks + setTimeout(() => { + fireDrop.remove(); + }, (Math.random() * 3 + 2) * 1000); + }; + + // Create a fire drop at intervals + const interval = setInterval(createFireDrop, 200); + + // Cleanup interval on component unmount + return () => clearInterval(interval); + }, []); + + return
; +}; + +export default FireRain; diff --git a/chaosweb-v@2/src/components/Firework.css b/chaosweb-v@2/src/components/Firework.css new file mode 100644 index 0000000..d7b6277 --- /dev/null +++ b/chaosweb-v@2/src/components/Firework.css @@ -0,0 +1,34 @@ +.firework-container { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + pointer-events: none; + } + + .firework { + position: absolute; + width: 10px; + height: 10px; + background-color: transparent; + border-radius: 50%; + box-shadow: 0 0 10px 10px rgba(255, 255, 255, 1); + animation: explode 1.5s ease-out forwards; + } + + @keyframes explode { + 0% { + transform: scale(0); + opacity: 1; + } + 50% { + transform: scale(5); + opacity: 0.8; + } + 100% { + transform: scale(10); + opacity: 0; + } + } + \ No newline at end of file diff --git a/chaosweb-v@2/src/components/Firework.jsx b/chaosweb-v@2/src/components/Firework.jsx new file mode 100644 index 0000000..d0a6938 --- /dev/null +++ b/chaosweb-v@2/src/components/Firework.jsx @@ -0,0 +1,42 @@ +import React, { useEffect, useRef } from 'react'; +import { Fireworks } from 'fireworks-js'; + +const Firework = () => { + const canvasRef = useRef(null); + + useEffect(() => { + const fireworks = new Fireworks(canvasRef.current, { + speed: 1, // Speed of fireworks + acceleration: 1.05, // Acceleration of the fireworks + friction: 0.95, // Friction applied to the fireworks + gravity: 1, // Gravity applied to the fireworks + particles: 100, // Number of particles in each firework + explosion: 5, // Number of explosions per firework + sound: false, // Enable or disable sound + colors: ['#ff0000', '#00ff00', '#0000ff'], // Colors of fireworks + }); + + fireworks.start(); + + return () => { + fireworks.stop(); // Cleanup on component unmount + }; + }, []); + + return ( + + ); +}; + +export default Firework; diff --git a/chaosweb-v@2/src/components/FloatingRain.css b/chaosweb-v@2/src/components/FloatingRain.css new file mode 100644 index 0000000..1b6ddce --- /dev/null +++ b/chaosweb-v@2/src/components/FloatingRain.css @@ -0,0 +1,47 @@ +/* FloatingRain.css */ +.rain-container { + position: fixed; /* Fixed positioning to overlay over other components */ + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; /* Prevent interaction with the shapes */ + } + + .shape { + position: absolute; + bottom: -50px; /* Start below the view */ + animation-name: float; + animation-timing-function: linear; + animation-fill-mode: forwards; + } + + @keyframes float { + to { + transform: translateY(-100vh); /* Move to the top of the viewport */ + } + } + + /* Shape styles */ + .cuboid { + width: 30px; + height: 30px; + background-color: #ff4136; /* Red */ + transform: rotate(45deg); /* Rotate to look like a cuboid */ + } + + .sphere { + width: 30px; + height: 30px; + background-color: #ffdc00; /* Yellow */ + border-radius: 50%; /* Make it round */ + } + + .pyramid { + width: 0; + height: 0; + border-left: 15px solid transparent; + border-right: 15px solid transparent; + border-bottom: 30px solid #2ecc40; /* Green */ + } + \ No newline at end of file diff --git a/chaosweb-v@2/src/components/FloatingRain.jsx b/chaosweb-v@2/src/components/FloatingRain.jsx new file mode 100644 index 0000000..7c811f3 --- /dev/null +++ b/chaosweb-v@2/src/components/FloatingRain.jsx @@ -0,0 +1,40 @@ +import React, { useEffect, useRef } from 'react'; +import './FloatingRain.css'; // Ensure to import the CSS file + +const shapes = ['cuboid', 'sphere', 'pyramid']; + +const getRandomShape = () => { + return shapes[Math.floor(Math.random() * shapes.length)]; +}; + +const FloatingRain = () => { + const rainContainer = useRef(null); + + useEffect(() => { + const createShape = () => { + const shape = document.createElement('div'); + shape.classList.add('shape', getRandomShape()); // Add a random shape class + shape.style.left = `${Math.random() * 100}vw`; // Random horizontal position + shape.style.animationDuration = `${Math.random() * 3 + 2}s`; // Random animation duration + shape.style.fontSize = `${Math.random() * 20 + 10}px`; // Random size + shape.style.opacity = `${Math.random() * 0.5 + 0.5}`; // Random opacity + + rainContainer.current.appendChild(shape); + + // Remove shape after animation ends to avoid memory leaks + setTimeout(() => { + shape.remove(); + }, (parseFloat(shape.style.animationDuration) * 1000)); + }; + + // Create a shape at intervals + const interval = setInterval(createShape, 500); // Adjust the interval for more or fewer shapes + + // Cleanup interval on component unmount + return () => clearInterval(interval); + }, []); + + return
; +}; + +export default FloatingRain; diff --git a/chaosweb-v@2/src/components/Snowfall.css b/chaosweb-v@2/src/components/Snowfall.css new file mode 100644 index 0000000..dee09b7 --- /dev/null +++ b/chaosweb-v@2/src/components/Snowfall.css @@ -0,0 +1,33 @@ +/* Snowfall.css */ +.snowfall-container { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + pointer-events: none; + z-index: -1; /* Set behind other content */ + } + + .snowflake { + position: absolute; + top: -10px; + color: #fff; + user-select: none; + pointer-events: none; + animation: fall linear infinite; + opacity: 0.8; + } + + @keyframes fall { + 0% { + transform: translateY(0); + opacity: 1; + } + 100% { + transform: translateY(100vh); + opacity: 0; + } + } + \ No newline at end of file diff --git a/chaosweb-v@2/src/components/Snowfall.jsx b/chaosweb-v@2/src/components/Snowfall.jsx new file mode 100644 index 0000000..f4ebd77 --- /dev/null +++ b/chaosweb-v@2/src/components/Snowfall.jsx @@ -0,0 +1,35 @@ +import React, { useEffect, useRef } from 'react'; +import './Snowfall.css'; // Make sure to import the CSS file + +const Snowfall = () => { + const snowContainer = useRef(null); + + useEffect(() => { + const createSnowflake = () => { + const snowflake = document.createElement('div'); + snowflake.classList.add('snowflake'); + snowflake.textContent = '❄'; // Unicode character for snowflake + snowflake.style.left = `${Math.random() * 100}vw`; + snowflake.style.animationDuration = `${Math.random() * 3 + 2}s`; + snowflake.style.fontSize = `${Math.random() * 20 + 10}px`; + snowflake.style.opacity = `${Math.random() * 0.5 + 0.5}`; + + snowContainer.current.appendChild(snowflake); + + // Remove snowflake after animation ends to avoid memory leaks + setTimeout(() => { + snowflake.remove(); + }, (Math.random() * 3 + 2) * 1000); + }; + + // Create a snowflake at intervals + const interval = setInterval(createSnowflake, 200); + + // Cleanup interval on component unmount + return () => clearInterval(interval); + }, []); + + return
; +}; + +export default Snowfall; diff --git a/chaosweb-v@2/src/components/Starfield.css b/chaosweb-v@2/src/components/Starfield.css new file mode 100644 index 0000000..05c02f5 --- /dev/null +++ b/chaosweb-v@2/src/components/Starfield.css @@ -0,0 +1,100 @@ +/* Starfield background and elements */ +.starfield { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + overflow: hidden; + z-index: -1; + background: linear-gradient(to top, #0d0d25, #1a1a2e); /* Dark sky gradient */ + overflow: auto; + } + + /* Star styles */ + .star { + position: absolute; + width: 2px; + height: 2px; + background-color: white; + opacity: 0.75; + border-radius: 50%; + animation: twinkle infinite; + } + + @keyframes twinkle { + 0%, 100% { + opacity: 0; + } + 50% { + opacity: 1; + } + } + + /* Moon styles */ + + + /* Cloud styles + .cloud { + position: absolute; + width: 300px; + height: 100px; + background: #ffffff; + background: linear-gradient(180deg, #ffffff 70%, #d4d4d4); + border-radius: 50%; + opacity: 0.3; + z-index: 9; + animation: moveClouds 40s linear infinite; + filter: blur(15px); + + } + + .cloud::before, .cloud::after { + content: ''; + position: absolute; + width: 200px; + height: 100px; + background: inherit; + border-radius: 50%; + + } + + .cloud::before { + top: -40px; + left: 50px; + } + + .cloud::after { + top: -20px; + left: 150px; + } + */ + /* Cloud animation for movement */ + @keyframes moveClouds { + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(150%); + } + } + + /* Individual cloud positions */ + /* .cloud-1 { + top: 20%; + animation-duration: 60s; + animation-delay: 0s; + } + + .cloud-2 { + top: 50%; + animation-duration: 30s; + animation-delay: 10s; + } + + .cloud-3 { + top: 75%; + animation-duration: 10s; + animation-delay: 20s; + } + */ \ No newline at end of file diff --git a/chaosweb-v@2/src/components/Starfield.jsx b/chaosweb-v@2/src/components/Starfield.jsx new file mode 100644 index 0000000..75bacad --- /dev/null +++ b/chaosweb-v@2/src/components/Starfield.jsx @@ -0,0 +1,48 @@ +import React, { useEffect, useState } from 'react'; +import './Starfield.css'; // Import CSS for star, moon, and cloud animations + +const Starfield = () => { + const [stars, setStars] = useState([]); + + // Function to generate random star positions + const generateStars = () => { + const starArray = Array.from({ length: 100 }).map(() => ({ + x: Math.random() * window.innerWidth, + y: Math.random() * window.innerHeight, + })); + setStars(starArray); + }; + + useEffect(() => { + generateStars(); + window.addEventListener('resize', generateStars); + return () => window.removeEventListener('resize', generateStars); + }, []); + + return ( +
+ {/* Moon */} +
+ + {/* Clouds */} +
+
+
+ + {/* Stars */} + {stars.map((star, index) => ( +
+ ))} +
+ ); +}; + +export default Starfield; diff --git a/chaosweb-v@2/src/components/navbar.jsx b/chaosweb-v@2/src/components/navbar.jsx index 8a6cb21..d9b7808 100644 --- a/chaosweb-v@2/src/components/navbar.jsx +++ b/chaosweb-v@2/src/components/navbar.jsx @@ -1,16 +1,12 @@ -import { useEffect, useState } from "react"; +import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; // Import useNavigate for navigation import "./navbar.css"; // import logo from "../assets/logo/ChaosWeb.svg"; - import InvertColorToggle from "./InvertColorToggle"; -// import MazeGame from "./MazeGame"; -import Popup from "/src/components/popup"; // Import Popup component -import logo from "../assets/logo/logo.png"; import Popup from "/src/components/popup"; // Import Popup component import logo from "../assets/logo/logo.png"; -import appPages from "../utils/pages.js"; +import appPages from "../utils/pages.js"; const Navbar = () => { const [showPopup, setShowPopup] = useState(false); // State to control popup visibility @@ -180,13 +176,6 @@ const Navbar = () => { Home
-
handleNavigate("/maze")}> - - Maze Game -
- - - {/* Treasure Button start */}
{
{/* Treasure Button end */} -
handleNavigate("/about")} > - - - team work - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - About Us -
-
- {/* This will render the button */} -
- { About Us -
handleNavigate("/contact")} > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { fill="#ffb6b6" /> - Contact
{ id="signin" onClick={() => handleNavigate("/signin")} > - - - - - - - - - - - - - - - - - - - - - - - - - - { fill="#cbcbcb" /> - Sign In
handleNavigate("/testing")} - > - - - - - - - - - - - - - - - - - - - - - - - - - Testing -
- - id="review" onClick={() => handleNavigate("/review")} > @@ -1668,121 +1190,11 @@ const Navbar = () => { Testing -
handleNavigate("/timeline")} > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { fill="#1894cb" /> - Timeline
{ Hypnotic Chaos
- - +
+ {/* This will render the button */} +
+
handleNavigate("/maze")}> + Maze Game +
+
handleNavigate("/chaosmania")}> + ChaosMania +
{/* Render the Popup component conditionally */} diff --git a/chaosweb-v@2/src/index.css b/chaosweb-v@2/src/index.css index c141cb1..8e15506 100644 --- a/chaosweb-v@2/src/index.css +++ b/chaosweb-v@2/src/index.css @@ -1,4 +1,8 @@ /* Inverted body style */ +@tailwind base; +@tailwind components; +@tailwind utilities; + body.inverted { filter: invert(1) diff --git a/chaosweb-v@2/src/pages/ButtonCollection.css b/chaosweb-v@2/src/pages/ButtonCollection.css new file mode 100644 index 0000000..9fde24c --- /dev/null +++ b/chaosweb-v@2/src/pages/ButtonCollection.css @@ -0,0 +1,98 @@ +@keyframes burst { + 0% { + transform: scale(0); + opacity: 1; + } + 100% { + transform: translate(var(--x), var(--y)) scale(1.5); + opacity: 0; + } + } + + .particle { + position: absolute; + width: 10px; + height: 10px; + border-radius: 50%; + background-color: white; + opacity: 0; + pointer-events: none; + animation: burst 0.8s ease-out forwards; + animation-play-state: paused; /* Ensure animation doesn't play by default */ + } + + .particle-1 { + --x: -50px; + --y: -50px; + } + .particle-2 { + --x: 50px; + --y: -50px; + } + .particle-3 { + --x: -50px; + --y: 50px; + } + .particle-4 { + --x: 50px; + --y: 50px; + } + .particle-5 { + --x: -70px; + --y: 0px; + } + .particle-6 { + --x: 70px; + --y: 0px; + } + .particle-7 { + --x: 0px; + --y: -70px; + } + .particle-8 { + --x: 0px; + --y: 70px; + } + + /* When hovering over the div, trigger the burst animation */ + #hover-me:hover .particle { + opacity: 1; + animation-play-state: running; + } + + @keyframes shrink { + 0% { + transform: scale(1); + } + 50% { + transform: scale(0.1); + } + 100% { + transform: scale(1); + } + } + @keyframes subtle-shake { + 0% { + transform: rotate(0deg); + } + 25% { + transform: rotate(-5deg); + } + 50% { + transform: rotate(5deg); + } + 75% { + transform: rotate(-5deg); + } + 100% { + transform: rotate(0deg); + } + } + + .shake-slow { + animation: subtle-shake 4s ease-in-out infinite; + } + + .animate-shrink { + animation: shrink 2s infinite; + } \ No newline at end of file diff --git a/chaosweb-v@2/src/pages/ButtonCollection.jsx b/chaosweb-v@2/src/pages/ButtonCollection.jsx new file mode 100644 index 0000000..586b522 --- /dev/null +++ b/chaosweb-v@2/src/pages/ButtonCollection.jsx @@ -0,0 +1,100 @@ +import React, { useState } from 'react'; +import './ButtonCollection.css'; +import Popup from "../components/popup"; + + +const ButtonCollection = () => { + const [explodedIndex, setExplodedIndex] = useState(null); + const [showPopup, setShowPopup] = useState(false); + const handleClickMe = () => { + setShowPopup(true); // Show popup + }; + + const handleMouseEnter = (index) => { + setExplodedIndex(index); + setTimeout(() => setExplodedIndex(null), 1000); + }; + + const handleMouseLeave = () => { + setExplodedIndex(null); + }; + + return ( +
+
+

+ Button Mania +

+

Explre the Unknown with our buttons

+
+ +
+ {/* Game Card with Explosion Effect */} +
handleMouseEnter(1)} + className={`relative bg-[#27293d] p-8 rounded-3xl shadow-lg transition-transform duration-500 ${ + explodedIndex === 1 ? 'scale-0' : 'scale-100' + }`} + > +
+

Click Me!

+

Lets see if U can Click ME!

+ +
+ {explodedIndex === 1 && ( +
+ {Array.from({ length: 12 }).map((_, index) => ( +
+ ))} +
+ )} +
+ + {/* Shrinking Text Effect */} +
handleMouseEnter(2)} + className={`relative bg-[#27293d] p-8 rounded-3xl shadow-lg transition-transform duration-500 ${ + explodedIndex === 2 ? 'scale-0' : 'scale-100' + }`} + > +
+

Broken Button!

+

I am Broken! Click to know How?

+ +
+ {explodedIndex === 2 && ( +
+ {Array.from({ length: 12 }).map((_, index) => ( +
+ ))} +
+ )} +
+
+ + +
+ ); +}; + +export default ButtonCollection; diff --git a/chaosweb-v@2/src/pages/ChaosMania.css b/chaosweb-v@2/src/pages/ChaosMania.css new file mode 100644 index 0000000..fccce2d --- /dev/null +++ b/chaosweb-v@2/src/pages/ChaosMania.css @@ -0,0 +1,146 @@ + + + + +.snowy-heading { + font-size: 3em; /* Size of the heading */ + text-align: center; /* Center the heading */ + position: relative; /* Relative positioning for the snow effect */ + color: #6b4ded; /* White text color */ + margin-bottom: 40px; +} +.imaging { + position: fixed; /* Fixed positioning */ + bottom: 0; /* Position it at the bottom */ + left: 0; /* Align to the left */ + width: 100%; /* Full width */ +} +.imaging img { + width: 100%; /* Full width of the container */ + object-fit: cover; /* Maintain aspect ratio and cover */ + margin: 0; /* Remove any default margin */ + padding: 0; /* Remove any default padding */ + display: block; /* Remove bottom space typically caused by inline elements */ + height: 200px; +} + +.snowy-heading::before, +.snowy-heading::after { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 100%; + background: rgba(255, 255, 255, 0.6); + filter: blur(8px); + z-index: -1; /* Position behind the text */ +} + +.snowy-heading::before { + transform: translateY(-5px); /* Slight offset for a layered look */ +} + +.snowy-heading::after { + transform: translateY(5px); /* Slight offset for a layered look */ +} + +/* Optional: Add a glowing effect */ +.snowy-heading { + text-shadow: + 0 0 5px rgba(255, 255, 255, 0.6), + 0 0 10px rgba(255, 255, 255, 0.6), + 0 0 15px rgba(255, 255, 255, 0.6); +} + +.cube-text{ + color: rgb(255, 255, 255); + font-size: 20px; + font-family: 'Oswald', sans-serif; + font-weight: 600; + text-align: center; + margin-top: 20px; + margin-bottom: 20px; +} + +.cube-container { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + gap: 200px; + padding: 40px; +} + +.cube { + position: relative; + width: 100px; + height: 100px; + transform-style: preserve-3d; + transform: rotateX(-30deg) rotateY(35deg) translate(-50%, -50%); +} + +.cube > div { + position: absolute; + left: 50%; + top: 50%; + transform-style: preserve-3d; +} +.cube:hover > div { + animation: melt 6s ease-in both; +} + +.cube-face { + position: absolute; + left: 50%; + top: 50%; + width: 100px; + height: 100px; + border-radius: 8px; + background: linear-gradient(rgba(237, 237, 237, 0.2), rgba(153, 153, 153, 0.1)); + box-shadow: 0 0 4px rgba(255, 255, 255, 0.2), inset 0 0 4px rgba(255, 255, 255, 0.2); + transform-origin: center center; +} + +.cube > div > div:nth-child(1) { + transform: translate3d(0, 0, 50px); +} +.cube > div > div:nth-child(2) { + transform: rotateX(90deg) translate3d(0, 0, 50px); +} +.cube > div > div:nth-child(3) { + transform: rotateX(180deg) translate3d(0, 0, 50px); +} +.cube > div > div:nth-child(4) { + transform: rotateX(270deg) translate3d(0, 0, 50px); +} +.cube:hover > div > div:nth-child(4) { + animation: puddle 6s ease-in both; + + } + +.cube > div > div:nth-child(5) { + transform: rotateY(90deg) translate3d(0, 0, 50px); +} +.cube > div > div:nth-child(6) { + transform: rotateY(-90deg) translate3d(0, 0, 50px); +} + +@keyframes melt { + 0% { + transform: translate3d(0, 0, 0) scaleY(1); + } + 90% { + transform: translate3d(0, 50px, 0) scaleY(0.01); + } + 100% { + transform: translate3d(0, 50px, 0) scaleY(0); + } +} + +@keyframes puddle { + 100% { + box-shadow: 0px 0px 0 75px rgba(255, 255, 255, 0.2); + } +} + diff --git a/chaosweb-v@2/src/pages/ChaosMania.jsx b/chaosweb-v@2/src/pages/ChaosMania.jsx new file mode 100644 index 0000000..73457a3 --- /dev/null +++ b/chaosweb-v@2/src/pages/ChaosMania.jsx @@ -0,0 +1,83 @@ +import React, {useState} from "react"; +import './ChaosMania.css'; // Importing the CSS for cube styles +import Snowfall from "../components/Snowfall"; +import snowyImage from "../assets/snowstruct.png"; +import FireRain from "../components/FireRain"; +import Starfield from "../components/Starfield"; +import FloatingRain from "../components/FloatingRain"; +import Firework from "../components/Firework"; +const games = [ + { name: "Hyptonic Chaos", link: "/hypnotic" }, + { name: "Button Collection", link: "/ButtonCollection" }, + { name: "Maze", link: "/maze" }, + { name: "Simon Game", link: "/#" }, + { name: "Sample", link: "/#" }, +]; + +const ChaosMania = () => { + const [issnowing, setsnowing] = useState(true); + const handleCubeClick = (link) => { + window.location.href = link; + }; + + return ( +
+ + + + {issnowing ? ( + <> + + + + + ) : ( + <> + + + )} + + +

+ ChaosMania +

+
+ {games.map((game, index) => ( +
handleCubeClick(game.link)} + onMouseOver={() => setsnowing(false)} + onMouseLeave={() => setsnowing(true)} + > +
+
+ {game.name} +
+
+
+
+
+
+
+
+
+
+
+
+ + ))} + +
+
+
+ ChaosMania +
+
+ ); +}; + +export default ChaosMania; diff --git a/chaosweb-v@2/tailwind.config.js b/chaosweb-v@2/tailwind.config.js new file mode 100644 index 0000000..0404c25 --- /dev/null +++ b/chaosweb-v@2/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + './src/**/*.{js,jsx,ts,tsx}', + ], + theme: { + extend: {}, + }, + plugins: [], +} + From d3e37e63209501ff19ccc05fe76aaffa7413936a Mon Sep 17 00:00:00 2001 From: Tamanna Date: Sun, 20 Oct 2024 17:51:47 +0530 Subject: [PATCH 2/2] Correct few Lexical Errors in ButtonCollecion.jsx --- chaosweb-v@2/src/pages/ButtonCollection.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chaosweb-v@2/src/pages/ButtonCollection.jsx b/chaosweb-v@2/src/pages/ButtonCollection.jsx index 586b522..5b1a7f9 100644 --- a/chaosweb-v@2/src/pages/ButtonCollection.jsx +++ b/chaosweb-v@2/src/pages/ButtonCollection.jsx @@ -25,7 +25,7 @@ const ButtonCollection = () => {

Button Mania

-

Explre the Unknown with our buttons

+

Explore the Unknown with our buttons