diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..ea9a206 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +node_modules +build +public diff --git a/.prettierrc b/.prettierrc index 222861c..859b8b6 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,7 @@ { + "plugins": ["prettier-plugin-tailwindcss"], "tabWidth": 2, - "useTabs": false + "semi": false, + "singleQuote": true, + "trailingComma": "none" } diff --git a/eslint.config.js b/eslint.config.js index 238d2e4..8581daf 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,14 +14,14 @@ export default [ parserOptions: { ecmaVersion: 'latest', ecmaFeatures: { jsx: true }, - sourceType: 'module', - }, + sourceType: 'module' + } }, settings: { react: { version: '18.3' } }, plugins: { react, 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, + 'react-refresh': reactRefresh }, rules: { ...js.configs.recommended.rules, @@ -31,8 +31,8 @@ export default [ 'react/jsx-no-target-blank': 'off', 'react-refresh/only-export-components': [ 'warn', - { allowConstantExport: true }, - ], - }, - }, + { allowConstantExport: true } + ] + } + } ] diff --git a/index.html b/index.html index 6f8428d..8d594bf 100644 --- a/index.html +++ b/index.html @@ -1,11 +1,15 @@ + - + ENIGMA | A LUGVITC CTF EVENT - +
diff --git a/package-lock.json b/package-lock.json index 6a49a1f..bf5ef08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,10 @@ "@gsap/react": "^2.1.1", "@react-three/drei": "^9.120.5", "@react-three/fiber": "^8.17.10", + "eslint-plugin-react-hooks": "^5.1.0", "gsap": "^3.12.7", "lenis": "^1.1.20", + "lucide-react": "^0.475.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^7.1.1", @@ -22,18 +24,20 @@ }, "devDependencies": { "@eslint/js": "^9.15.0", + "@types/node": "^22.13.4", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", - "eslint": "^9.15.0", + "eslint": "^9.20.1", "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.14", + "eslint-plugin-react-refresh": "^0.4.19", "fluid-tailwind": "^1.0.4", "gh-pages": "^6.2.0", "globals": "^15.12.0", "postcss": "^8.4.49", + "prettier": "^3.5.0", + "prettier-plugin-tailwindcss": "^0.6.11", "tailwindcss": "^3.4.15", "vite": "^6.0.1" } @@ -725,7 +729,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -743,7 +746,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -755,7 +757,6 @@ "version": "4.12.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -764,7 +765,6 @@ "version": "0.19.0", "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", - "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", @@ -775,10 +775,12 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", - "dev": true, + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -787,7 +789,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", - "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -810,7 +811,6 @@ "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, "engines": { "node": ">=18" }, @@ -819,10 +819,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", - "dev": true, + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -831,23 +830,33 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", - "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", - "dev": true, + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@gsap/react": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@gsap/react/-/react-2.1.1.tgz", @@ -861,7 +870,6 @@ "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, "engines": { "node": ">=18.18.0" } @@ -870,7 +878,6 @@ "version": "0.16.6", "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" @@ -883,7 +890,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, "engines": { "node": ">=18.18" }, @@ -896,7 +902,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "engines": { "node": ">=12.22" }, @@ -909,7 +914,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", - "dev": true, "engines": { "node": ">=18.18" }, @@ -1523,14 +1527,22 @@ "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/node": { + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } }, "node_modules/@types/offscreencanvas": { "version": "2019.7.3", @@ -1635,7 +1647,6 @@ "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1647,7 +1658,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1656,7 +1666,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1684,7 +1693,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1723,8 +1731,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", @@ -1926,8 +1933,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -1972,7 +1978,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2068,7 +2073,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -2114,7 +2118,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2166,7 +2169,6 @@ "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, "dependencies": { "color-name": "~1.1.4" }, @@ -2177,8 +2179,7 @@ "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 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/commander": { "version": "4.1.1", @@ -2198,8 +2199,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -2322,7 +2322,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -2338,8 +2337,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/define-data-property": { "version": "1.1.4", @@ -2668,7 +2666,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -2677,18 +2674,17 @@ } }, "node_modules/eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", - "dev": true, + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.11.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.20.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", @@ -2696,7 +2692,7 @@ "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -2712,6 +2708,7 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" @@ -2767,10 +2764,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", - "dev": true, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "engines": { "node": ">=10" }, @@ -2779,19 +2775,18 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", - "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz", + "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==", "dev": true, "peerDependencies": { - "eslint": ">=7" + "eslint": ">=8.40" } }, "node_modules/eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -2807,7 +2802,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -2819,7 +2813,6 @@ "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", @@ -2836,7 +2829,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -2848,7 +2840,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -2860,7 +2851,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -2869,7 +2859,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2877,8 +2866,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { "version": "3.3.2", @@ -2911,14 +2899,12 @@ "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", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { "version": "1.17.1", @@ -2938,7 +2924,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, "dependencies": { "flat-cache": "^4.0.0" }, @@ -3017,7 +3002,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3033,7 +3017,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -3045,14 +3028,14 @@ "node_modules/flatted": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==" }, "node_modules/fluid-tailwind": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fluid-tailwind/-/fluid-tailwind-1.0.4.tgz", "integrity": "sha512-jO1+4l4r3kE/5We3kYRl3o4JsbFA2zoluEwJG3VrytlKuCfK4aTv5QHqXgOaw0YQd9HKjOVIFYsVvhG8sxIh5w==", "dev": true, + "license": "MIT", "dependencies": { "filter-obj": "^5.1.0", "map-obj": "^5.0.2", @@ -3264,7 +3247,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -3386,7 +3368,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3482,7 +3463,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, "engines": { "node": ">= 4" } @@ -3496,7 +3476,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3512,7 +3491,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -3663,7 +3641,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3711,7 +3688,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -3965,7 +3941,7 @@ "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, + "devOptional": true, "bin": { "jiti": "bin/jiti.js" } @@ -3979,7 +3955,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -4002,20 +3977,17 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/json5": { "version": "2.2.3", @@ -4060,7 +4032,6 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, "dependencies": { "json-buffer": "3.0.1" } @@ -4090,7 +4061,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4126,7 +4096,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -4137,6 +4106,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "node_modules/lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -4162,6 +4136,15 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.475.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.475.0.tgz", + "integrity": "sha512-NJzvVu1HwFVeZ+Gwq2q00KygM1aBhy/ZrhY9FsAgJtpB+E4R7uxRk9M2iKvHa6/vNxZydIB59htha4c2vvwvVg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/maath": { "version": "0.10.8", "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz", @@ -4237,7 +4220,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4257,8 +4239,7 @@ "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 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mz": { "version": "2.7.0", @@ -4292,8 +4273,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/node-releases": { "version": "2.0.18", @@ -4428,7 +4408,6 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4445,7 +4424,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -4460,7 +4438,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -4490,7 +4467,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -4502,7 +4478,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -4842,11 +4817,103 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", + "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", + "dev": true, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, "node_modules/promise-worker-transferable": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", @@ -4870,7 +4937,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "engines": { "node": ">=6" } @@ -5126,7 +5192,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -5570,7 +5635,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -5625,7 +5689,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5874,7 +5937,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -5971,6 +6033,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -6014,7 +6083,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -6232,7 +6300,6 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6347,7 +6414,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 59f3af6..8b44ae7 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,13 @@ "name": "enigma", "private": true, "version": "0.0.0", - "homepage": "https://ppmpreetham.github.io/enigma25", + "homepage": ".", "type": "module", "scripts": { "predeploy": "npm run build", "deploy": "gh-pages -d build", "dev": "vite", + "format": "prettier --write .", "build": "vite build", "lint": "eslint .", "preview": "vite preview" @@ -16,8 +17,10 @@ "@gsap/react": "^2.1.1", "@react-three/drei": "^9.120.5", "@react-three/fiber": "^8.17.10", + "eslint-plugin-react-hooks": "^5.1.0", "gsap": "^3.12.7", "lenis": "^1.1.20", + "lucide-react": "^0.475.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^7.1.1", @@ -27,18 +30,20 @@ }, "devDependencies": { "@eslint/js": "^9.15.0", + "@types/node": "^22.13.4", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", - "eslint": "^9.15.0", + "eslint": "^9.20.1", "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.14", + "eslint-plugin-react-refresh": "^0.4.19", "fluid-tailwind": "^1.0.4", "gh-pages": "^6.2.0", "globals": "^15.12.0", "postcss": "^8.4.49", + "prettier": "^3.5.0", + "prettier-plugin-tailwindcss": "^0.6.11", "tailwindcss": "^3.4.15", "vite": "^6.0.1" } diff --git a/postcss.config.js b/postcss.config.js index 2e7af2b..2b75bd8 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,6 @@ export default { plugins: { tailwindcss: {}, - autoprefixer: {}, - }, + autoprefixer: {} + } } diff --git a/public/3D/prize.blend b/public/3D/prize.blend new file mode 100644 index 0000000..882a6e9 Binary files /dev/null and b/public/3D/prize.blend differ diff --git a/public/3D/prize.glb b/public/3D/prize.glb new file mode 100644 index 0000000..508d696 Binary files /dev/null and b/public/3D/prize.glb differ diff --git a/public/UI/psd-files/ctf-questions.psd b/public/UI/psd-files/ctf-questions.psd index 8320d67..aec6dfb 100644 Binary files a/public/UI/psd-files/ctf-questions.psd and b/public/UI/psd-files/ctf-questions.psd differ diff --git a/public/UI/psd-files/team-page.psd b/public/UI/psd-files/team-page.psd new file mode 100644 index 0000000..ecd6f07 Binary files /dev/null and b/public/UI/psd-files/team-page.psd differ diff --git a/public/UI/team-page.png b/public/UI/team-page.png new file mode 100644 index 0000000..e547cbb Binary files /dev/null and b/public/UI/team-page.png differ diff --git a/public/cool-peeps/goutham.jpg b/public/cool-peeps/goutham.jpg new file mode 100644 index 0000000..122fe1e Binary files /dev/null and b/public/cool-peeps/goutham.jpg differ diff --git a/public/cool-peeps/goutham.psd b/public/cool-peeps/goutham.psd new file mode 100644 index 0000000..e0eeb1f Binary files /dev/null and b/public/cool-peeps/goutham.psd differ diff --git a/public/cool-peeps/preetham.jpg b/public/cool-peeps/preetham.jpg new file mode 100644 index 0000000..e382142 Binary files /dev/null and b/public/cool-peeps/preetham.jpg differ diff --git a/public/cool-peeps/preetham.psd b/public/cool-peeps/preetham.psd new file mode 100644 index 0000000..e0d23e8 Binary files /dev/null and b/public/cool-peeps/preetham.psd differ diff --git a/public/cool-peeps/sid.jpg b/public/cool-peeps/sid.jpg new file mode 100644 index 0000000..8bc4ec4 Binary files /dev/null and b/public/cool-peeps/sid.jpg differ diff --git a/public/cool-peeps/sid.psd b/public/cool-peeps/sid.psd new file mode 100644 index 0000000..8e6dc4f Binary files /dev/null and b/public/cool-peeps/sid.psd differ diff --git a/public/cool-peeps/yeyati.jpg b/public/cool-peeps/yeyati.jpg new file mode 100644 index 0000000..34df411 Binary files /dev/null and b/public/cool-peeps/yeyati.jpg differ diff --git a/public/cool-peeps/yeyati.png b/public/cool-peeps/yeyati.png new file mode 100644 index 0000000..5bda8cd Binary files /dev/null and b/public/cool-peeps/yeyati.png differ diff --git a/public/cool-peeps/yeyati.psd b/public/cool-peeps/yeyati.psd new file mode 100644 index 0000000..627c2a1 Binary files /dev/null and b/public/cool-peeps/yeyati.psd differ diff --git a/public/icons/hud left.png b/public/icons/hud left.png new file mode 100644 index 0000000..e5b3c82 Binary files /dev/null and b/public/icons/hud left.png differ diff --git a/public/icons/hud right.png b/public/icons/hud right.png new file mode 100644 index 0000000..499e7d3 Binary files /dev/null and b/public/icons/hud right.png differ diff --git a/public/images/enigma market-2.png b/public/images/enigma market-2.png new file mode 100644 index 0000000..844eece Binary files /dev/null and b/public/images/enigma market-2.png differ diff --git a/public/images/enigma market-4.png b/public/images/enigma market-4.png new file mode 100644 index 0000000..9723375 Binary files /dev/null and b/public/images/enigma market-4.png differ diff --git a/public/images/enigma market.png b/public/images/enigma market.png new file mode 100644 index 0000000..38cb372 Binary files /dev/null and b/public/images/enigma market.png differ diff --git a/public/images/market.psd b/public/images/market.psd new file mode 100644 index 0000000..e62fa5c Binary files /dev/null and b/public/images/market.psd differ diff --git a/public/images/qr-better.png b/public/images/qr-better.png new file mode 100644 index 0000000..e0ae489 Binary files /dev/null and b/public/images/qr-better.png differ diff --git a/public/images/qr.png b/public/images/qr.png new file mode 100644 index 0000000..90cb5a1 Binary files /dev/null and b/public/images/qr.png differ diff --git a/public/sfx/parrots.mp3 b/public/sfx/parrots.mp3 new file mode 100644 index 0000000..6a301b8 Binary files /dev/null and b/public/sfx/parrots.mp3 differ diff --git a/public/sfx/parrots.wav b/public/sfx/parrots.wav new file mode 100644 index 0000000..104560b Binary files /dev/null and b/public/sfx/parrots.wav differ diff --git a/public/videos/0001-0301.mkv b/public/videos/0001-0301.mkv new file mode 100644 index 0000000..3f5b901 Binary files /dev/null and b/public/videos/0001-0301.mkv differ diff --git a/src/404.jsx b/src/404.jsx index d3cffd8..f45e3ab 100644 --- a/src/404.jsx +++ b/src/404.jsx @@ -1,66 +1,132 @@ -import React, { useEffect } from 'react'; -import ErtdfgcvbBG from './components/ertdfgcvb game of life'; -import { gsap } from 'gsap'; -import ChevronSvg from '/icons/chevron.svg'; -import { Link } from 'react-router-dom'; +import React, { useEffect } from 'react' +import ErtdfgcvbBG from './components/ertdfgcvb game of life' +import { gsap } from 'gsap' +import ChevronSvg from '/icons/chevron.svg' +import { Link } from 'react-router-dom' const PageNotFound = () => { - useEffect(() => { - window.scrollBy(10000, -100); - document.body.style.overflow = "hidden"; - return () => { - document.body.style.overflow = "scroll" - }; - }, []); + useEffect(() => { + window.scrollBy(10000, -100) + document.body.style.overflow = 'hidden' + return () => { + document.body.style.overflow = 'scroll' + } + }, []) - const rows = 8; - const cols = 19; + const rows = 8 + const cols = 19 - const whiteCells = [[1,5],[1,6],[2,4],[2,6],[3,3],[3,6],[4,2],[4,6],[5,1],[5,2],[5,3],[5,4],[5,5],[5,6],[5,7],[5,8],[6,6],[8,2],[8,3],[8,4],[8,5],[8,6],[8,7],[9,1],[9,8],[10,1],[10,8],[11,1],[11,8],[12,2],[12,3],[12,4],[12,5],[12,6],[12,7],[1+13,5],[1+13,6],[2+13,4],[2+13,6],[3+13,3],[3+13,6],[4+13,2],[4+13,6],[5+13,1],[5+13,2],[5+13,3],[5+13,4],[5+13,5],[5+13,6],[5+13,7],[5+13,8],[6+13,6],]; + const whiteCells = [ + [1, 5], + [1, 6], + [2, 4], + [2, 6], + [3, 3], + [3, 6], + [4, 2], + [4, 6], + [5, 1], + [5, 2], + [5, 3], + [5, 4], + [5, 5], + [5, 6], + [5, 7], + [5, 8], + [6, 6], + [8, 2], + [8, 3], + [8, 4], + [8, 5], + [8, 6], + [8, 7], + [9, 1], + [9, 8], + [10, 1], + [10, 8], + [11, 1], + [11, 8], + [12, 2], + [12, 3], + [12, 4], + [12, 5], + [12, 6], + [12, 7], + [1 + 13, 5], + [1 + 13, 6], + [2 + 13, 4], + [2 + 13, 6], + [3 + 13, 3], + [3 + 13, 6], + [4 + 13, 2], + [4 + 13, 6], + [5 + 13, 1], + [5 + 13, 2], + [5 + 13, 3], + [5 + 13, 4], + [5 + 13, 5], + [5 + 13, 6], + [5 + 13, 7], + [5 + 13, 8], + [6 + 13, 6] + ] - const handleMouseEnter = (e) => { - gsap.to(e.target, { duration: 0.5, backgroundColor: 'rgba(0, 0, 0, 0)', className: 'bg-enigma-green', ease: 'power2.inOut' }); - }; + const handleMouseEnter = (e) => { + gsap.to(e.target, { + duration: 0.5, + backgroundColor: 'rgba(0, 0, 0, 0)', + className: 'bg-enigma-green', + ease: 'power2.inOut' + }) + } - const handleMouseLeave = (e) => { - gsap.to(e.target, { duration: 0.5, backgroundColor: 'rgba(0, 128, 0, 1)', ease: 'power2.inOut' }); - }; + const handleMouseLeave = (e) => { + gsap.to(e.target, { + duration: 0.5, + backgroundColor: 'rgba(0, 128, 0, 1)', + ease: 'power2.inOut' + }) + } - const createGrid = () => { - let grid = []; - for (let i = 0; i < rows; i++) { - let row = []; - for (let j = 0; j < cols; j++) { - const isWhiteCell = whiteCells.some(cell => cell[0]-1 === j && cell[1]-1 === i); - row.push( -
- ); - } - grid.push(
{row}
); - } - return grid; - }; + const createGrid = () => { + let grid = [] + for (let i = 0; i < rows; i++) { + let row = [] + for (let j = 0; j < cols; j++) { + const isWhiteCell = whiteCells.some( + (cell) => cell[0] - 1 === j && cell[1] - 1 === i + ) + row.push( +
+ ) + } + grid.push( +
+ {row} +
+ ) + } + return grid + } - return ( -
- -
- mySvgImage -
- - -
-
- {createGrid()} -
-
+ return ( +
+ +
+ mySvgImage
- ); -}; + + +
+
{createGrid()}
+
+
+ ) +} -export default PageNotFound; \ No newline at end of file +export default PageNotFound diff --git a/src/About.jsx b/src/About.jsx index 09390d5..5dccd95 100644 --- a/src/About.jsx +++ b/src/About.jsx @@ -1,11 +1,22 @@ -import React from 'react'; +import React, { useEffect } from 'react' +import Speakers from './components/Speakers' const About = () => { - return ( -
-

About

-
- ); -}; + useEffect(() => { + const hasReloaded = localStorage.getItem('hasReloaded') + if (!hasReloaded) { + localStorage.setItem('hasReloaded', 'true') + setTimeout(() => { + window.location.reload() + }, 1000) + } + }, []) -export default About; \ No newline at end of file + return ( +
+ +
+ ) +} + +export default About diff --git a/src/App.css b/src/App.css index 6d2abf9..f127a7b 100644 --- a/src/App.css +++ b/src/App.css @@ -2,9 +2,9 @@ @tailwind components; @tailwind utilities; -*{ - -ms-overflow-style: none; /* IE and Edge */ - scrollbar-width: none; /* Firefox */ +* { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ } *::-webkit-scrollbar { display: none; /* Chrome, Safari and Opera */ @@ -12,11 +12,16 @@ #root { max-width: 100%; + overflow-x: hidden; margin: 0 auto; padding: 0rem; text-align: center; } +body { + position: relative +} + @font-face { font-family: 'Calcio'; @@ -58,9 +63,9 @@ src: url(/fonts/Montreal-Medium.otf); } -*{ +* { cursor: url('/cursors/normal.cur'), auto; } -.pointy{ +.pointy { cursor: url('/cursors/pointer.cur'), pointer; -} \ No newline at end of file +} diff --git a/src/App.jsx b/src/App.jsx index ffe5a5e..9dc56ea 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,59 +1,77 @@ -import React, { useState } from "react"; -import { - Route, - Routes, - useLocation -} from "react-router-dom"; -import { TransitionGroup, CSSTransition } from "react-transition-group"; -import Home from "./Home"; -import About from "./About"; -import Leaderboard from "./Leaderboard"; -import SignUp from "./SignUp"; -import PageNotFound from "./404"; -import PageTransition from "./components/PageTransition"; -import { gsap } from "gsap"; -import './App.css'; -import ChallengePage from "./ChallengePage"; +import React, { useState } from 'react' +import { Route, Routes, useLocation } from 'react-router-dom' +import { TransitionGroup, CSSTransition } from 'react-transition-group' +import Home from './Home' +import About from './About' +import Leaderboard from './Leaderboard' +import SignUp from './SignUp' +import PageNotFound from './404' +import PageTransition from './components/PageTransition' +import { gsap } from 'gsap' +import './App.css' +import ChallengePage from './ChallengePage' +import Rules from './components/Rules' +import CTFs from './questions/page' +import PowerPage from './powerups/Page' +import TeamPage from './components/team/TeamPage' +import TeamCreation from './components/team/TeamCreation' + // import ErtdfgcvbBGprivacy from "./components/ertdfgcvbprivacy"; function App() { - const location = useLocation(); - const [showTransition, setShowTransition] = useState(false); + const location = useLocation() + const [showTransition, setShowTransition] = useState(false) + + const handleEnter = (node, done) => { + setShowTransition(true) + gsap.fromTo( + node, + { opacity: 0 }, + { opacity: 1, duration: 0.5, onComplete: done } + ) + } - const handleEnter = (node, done) => { - setShowTransition(true); - gsap.fromTo(node, { opacity: 0 }, { opacity: 1, duration: 0.5, onComplete: done }); - }; + const handleExit = (node, done) => { + setShowTransition(true) + gsap.fromTo( + node, + { opacity: 1 }, + { opacity: 0, duration: 0.5, onComplete: done } + ) + } - const handleExit = (node, done) => { - setShowTransition(true); - gsap.fromTo(node, { opacity: 1 }, { opacity: 0, duration: 0.5, onComplete: done }); - }; + return ( + <> + {showTransition && ( + setShowTransition(false)} /> + )} + + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> - return ( - <> - {showTransition && setShowTransition(false)} />} - - - - } /> - } /> - } /> - } /> - } /> - {/* } /> */} - } /> - - - - - ); + {/* } /> */} + } /> + + + + + ) } -export default App; \ No newline at end of file +export default App diff --git a/src/ChallengePage.jsx b/src/ChallengePage.jsx index b6de824..24428d4 100644 --- a/src/ChallengePage.jsx +++ b/src/ChallengePage.jsx @@ -1,43 +1,76 @@ -import SpecialDiv from "./components/borderDiv"; -import AnimatedText from "./components/text"; +import SpecialDiv from './components/borderDiv' +import AnimatedText from './components/text' -const ChallengePage = ({ ctfName = "CTF NAME", ctfDescription = "" }) => { - - return ( -
- - - - - - - - - - - - - - - - {ctfDescription} - -
- - - -
- - - - -
-
-
-
+const ChallengePage = ({ ctfName = 'CTF NAME', ctfDescription = '' }) => { + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {ctfDescription} + + +
+ + + + -
- ); -}; +
+ + + + + + + + + + +
+ + + {' '} + +
+
+ {' '} + + + +
+
+
+ +
+ ) +} -export default ChallengePage; +export default ChallengePage diff --git a/src/Home.jsx b/src/Home.jsx index 887422c..925d3a5 100644 --- a/src/Home.jsx +++ b/src/Home.jsx @@ -1,53 +1,68 @@ -import { useEffect } from 'react'; -import './App.css'; -import Hamburger from './components/hamburger'; -import Footer from './components/footer'; -import Join from './components/join'; -import Scene from './components/timelinetest'; -import ErtdfgcvbBG from './components/enigmatextbg'; -import HeroSection from './components/HeroSection'; -import Content from "./components/content.jsx"; -import Lenis from 'lenis'; -import Speakers from './components/Speakers.jsx'; - +import { useEffect } from 'react' +import './App.css' +import Hamburger from './components/hamburger' +import Footer from './components/footer' +import Join from './components/join' +import Scene from './components/timelinetest' +import ErtdfgcvbBG from './components/enigmatextbg' +import HeroSection from './components/HeroSection' +import Content from './components/content.jsx' +import Lenis from 'lenis' +import Speakers from './components/Speakers.jsx' +import Rules from './components/Rules.jsx' +import { Canvas } from '@react-three/fiber' +import Prize from './components/Prize.jsx' function Home() { useEffect(() => { const lenis = new Lenis({ duration: 1.2, easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)), - smooth: true, - }); + smooth: true + }) function raf(time) { - lenis.raf(time); - requestAnimationFrame(raf); + lenis.raf(time) + requestAnimationFrame(raf) } - requestAnimationFrame(raf); + requestAnimationFrame(raf) return () => { - lenis.destroy(); - }; - }, []); + lenis.destroy() + } + }, []) return ( -
- - -