diff --git a/package-lock.json b/package-lock.json index 96a962d4..2db3c75d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,12 @@ "name": "e-commerce-ninjas-frontend", "version": "0.0.1", "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.5", + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", "@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/react-fontawesome": "^0.2.2", "@mui/icons-material": "^5.16.4", + "@mui/joy": "^5.0.0-beta.48", "@mui/material": "^5.16.4", "@reduxjs/toolkit": "^2.2.5", "antd": "^5.19.2", @@ -26,12 +27,15 @@ "jwt-decode": "^4.0.0", "mini-css-extract-plugin": "^2.9.0", "papaparse": "^5.4.1", + "pdfjs-dist": "^4.5.136", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-fast-marquee": "^1.6.5", "react-helmet": "^6.1.0", "react-icons": "^5.2.1", "react-input-emoji": "^5.9.0", "react-loader-spinner": "^6.1.6", + "react-pdf": "^9.1.0", "react-redux": "^9.1.2", "react-router-dom": "^6.24.0", "react-spinners": "^0.14.1", @@ -39,6 +43,7 @@ "recharts": "^2.12.7", "save-dev": "0.0.1-security", "socket.io-client": "^4.7.5", + "ts-loader": "^9.5.1", "xlsx": "^0.18.5", "yup": "^1.4.0" }, @@ -2271,6 +2276,8 @@ }, "node_modules/@emotion/react": { "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz", + "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -2308,6 +2315,8 @@ }, "node_modules/@emotion/styled": { "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -2809,6 +2818,44 @@ "dev": true, "license": "MIT" }, + "node_modules/@floating-ui/core": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==", + "license": "MIT" + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.5.2", "hasInstallScript": true, @@ -3801,6 +3848,83 @@ "dev": true, "license": "MIT" }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@mdx-js/react": { "version": "3.0.1", "dev": true, @@ -3817,6 +3941,38 @@ "react": ">=16" } }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/core-downloads-tracker": { "version": "5.16.5", "license": "MIT", @@ -3849,22 +4005,20 @@ } } }, - "node_modules/@mui/material": { - "version": "5.16.5", + "node_modules/@mui/joy": { + "version": "5.0.0-beta.48", + "resolved": "https://registry.npmjs.org/@mui/joy/-/joy-5.0.0-beta.48.tgz", + "integrity": "sha512-OhTvjuGl9I5IvpBr0BQyDehIW/xb2yteW6YglHJMdOb/279nItn76X1NBtPV9ImldNlBjReGwvpOXmBTTGER9w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.5", - "@mui/system": "^5.16.5", + "@mui/base": "5.0.0-beta.40", + "@mui/core-downloads-tracker": "^5.16.1", + "@mui/system": "^5.16.1", "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.5", - "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.10", + "@mui/utils": "^5.16.1", "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1", - "react-is": "^18.3.1", - "react-transition-group": "^4.4.5" + "prop-types": "^15.8.1" }, "engines": { "node": ">=12.0.0" @@ -3892,18 +4046,22 @@ } } }, - "node_modules/@mui/material/node_modules/@mui/system": { + "node_modules/@mui/material": { "version": "5.16.5", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.5", - "@mui/styled-engine": "^5.16.4", + "@mui/core-downloads-tracker": "^5.16.5", + "@mui/system": "^5.16.5", "@mui/types": "^7.2.15", "@mui/utils": "^5.16.5", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "csstype": "^3.1.3", - "prop-types": "^15.8.1" + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "react-transition-group": "^4.4.5" }, "engines": { "node": ">=12.0.0" @@ -3916,7 +4074,8 @@ "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -3930,44 +4089,18 @@ } } }, - "node_modules/@mui/material/node_modules/@mui/utils": { - "version": "5.16.5", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/types": "^7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@mui/material/node_modules/react-is": { "version": "18.3.1", "license": "MIT" }, "node_modules/@mui/private-theming": { - "version": "5.16.5", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.5", + "@mui/utils": "^5.16.6", "prop-types": "^15.8.1" }, "engines": { @@ -3987,16 +4120,16 @@ } } }, - "node_modules/@mui/private-theming/node_modules/@mui/utils": { - "version": "5.16.5", + "node_modules/@mui/styled-engine": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/types": "^7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" }, "engines": { "node": ">=12.0.0" @@ -4006,25 +4139,31 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "@types/react": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { "optional": true } } }, - "node_modules/@mui/private-theming/node_modules/react-is": { - "version": "18.3.1", - "license": "MIT" - }, - "node_modules/@mui/styled-engine": { - "version": "5.16.4", + "node_modules/@mui/system": { + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, @@ -4036,8 +4175,9 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@emotion/react": "^11.4.1", + "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { @@ -4046,6 +4186,9 @@ }, "@emotion/styled": { "optional": true + }, + "@types/react": { + "optional": true } } }, @@ -4061,6 +4204,42 @@ } } }, + "node_modules/@mui/utils": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/@ndelangen/get-tarball": { "version": "3.0.9", "dev": true, @@ -8630,6 +8809,13 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC", + "optional": true + }, "node_modules/accepts": { "version": "1.3.8", "dev": true, @@ -8706,7 +8892,7 @@ }, "node_modules/agent-base": { "version": "6.0.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "debug": "4" @@ -8912,6 +9098,13 @@ "dev": true, "license": "MIT" }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC", + "optional": true + }, "node_modules/arch": { "version": "2.2.0", "dev": true, @@ -8953,6 +9146,21 @@ "node": ">=4" } }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/arg": { "version": "4.1.3", "dev": true, @@ -9527,7 +9735,7 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/base64-js": { @@ -10333,7 +10541,6 @@ }, "node_modules/braces": { "version": "3.0.3", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -10598,6 +10805,22 @@ ], "license": "CC-BY-4.0" }, + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "dev": true, @@ -10723,7 +10946,7 @@ }, "node_modules/chownr": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=10" @@ -11021,6 +11244,16 @@ "version": "1.1.3", "license": "MIT" }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorette": { "version": "2.0.20", "dev": true, @@ -11105,7 +11338,7 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/config-chain": { @@ -11139,6 +11372,13 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC", + "optional": true + }, "node_modules/constants-browserify": { "version": "1.0.0", "dev": true, @@ -12407,6 +12647,13 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT", + "optional": true + }, "node_modules/depd": { "version": "2.0.0", "dev": true, @@ -12417,7 +12664,6 @@ }, "node_modules/dequal": { "version": "2.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12440,6 +12686,16 @@ "node": ">=8" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "dev": true, @@ -14911,7 +15167,6 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -15380,7 +15635,7 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -15391,7 +15646,7 @@ }, "node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15402,7 +15657,7 @@ }, "node_modules/fs-minipass/node_modules/yallist": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/fs-monkey": { @@ -15412,7 +15667,7 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/fsevents": { @@ -15461,6 +15716,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/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==", + "license": "MIT", + "optional": true + }, + "node_modules/gauge/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==", + "license": "MIT", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "dev": true, @@ -15631,7 +15930,7 @@ }, "node_modules/glob": { "version": "7.2.3", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -15665,7 +15964,7 @@ }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -15674,7 +15973,7 @@ }, "node_modules/glob/node_modules/minimatch": { "version": "3.1.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -15940,6 +16239,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC", + "optional": true + }, "node_modules/hasown": { "version": "2.0.2", "license": "MIT", @@ -16247,7 +16553,7 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "agent-base": "6", @@ -16841,7 +17147,7 @@ }, "node_modules/inflight": { "version": "1.0.6", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -16850,7 +17156,7 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/ini": { @@ -17124,7 +17430,7 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -17282,7 +17588,6 @@ }, "node_modules/is-number": { "version": "7.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -20306,6 +20611,15 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, + "node_modules/make-cancellable-promise": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz", + "integrity": "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" + } + }, "node_modules/make-dir": { "version": "2.1.0", "dev": true, @@ -20331,6 +20645,15 @@ "dev": true, "license": "ISC" }, + "node_modules/make-event-props": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + } + }, "node_modules/makeerror": { "version": "1.0.12", "dev": true, @@ -20393,6 +20716,23 @@ "dev": true, "license": "MIT" }, + "node_modules/merge-refs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.3.0.tgz", + "integrity": "sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/merge-stream": { "version": "2.0.0", "license": "MIT" @@ -20415,7 +20755,6 @@ }, "node_modules/micromatch": { "version": "4.0.7", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -20533,7 +20872,7 @@ }, "node_modules/minizlib": { "version": "2.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "minipass": "^3.0.0", @@ -20545,7 +20884,7 @@ }, "node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -20556,12 +20895,12 @@ }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/mkdirp": { "version": "1.0.4", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -20608,6 +20947,13 @@ "multicast-dns": "cli.js" } }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "license": "MIT", + "optional": true + }, "node_modules/nanoid": { "version": "3.3.7", "funding": [ @@ -20693,7 +21039,7 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -20732,6 +21078,22 @@ "version": "2.0.14", "license": "MIT" }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/normalize-package-data": { "version": "2.5.0", "dev": true, @@ -20836,6 +21198,20 @@ "node": ">=8" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/nth-check": { "version": "2.1.1", "license": "BSD-2-Clause", @@ -21170,7 +21546,7 @@ }, "node_modules/once": { "version": "1.4.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -21612,7 +21988,7 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -21670,6 +22046,16 @@ "node": ">=8" } }, + "node_modules/path2d": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.1.tgz", + "integrity": "sha512-Fl2z/BHvkTNvkuBzYTpTuirHZg6wW9z8+4SND/3mDTEcYbbNKWAy21dz9D3ePNNwrrK8pqZO5vLPZ1hLF6T7XA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pathe": { "version": "1.1.2", "dev": true, @@ -21683,6 +22069,19 @@ "node": "*" } }, + "node_modules/pdfjs-dist": { + "version": "4.5.136", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.5.136.tgz", + "integrity": "sha512-V1BALcAN/FmxBEShLxoP73PlQZAZtzlaNfRbRhJrKvXzjLC5VaIlBAQUJuWP8iaYUmIdmdLHmt3E2TBglxOm3w==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d": "^0.2.1" + } + }, "node_modules/peek-stream": { "version": "1.1.3", "dev": true, @@ -21710,7 +22109,6 @@ }, "node_modules/picomatch": { "version": "2.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -23012,6 +23410,16 @@ "version": "3.2.2", "license": "MIT" }, + "node_modules/react-fast-marquee": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/react-fast-marquee/-/react-fast-marquee-1.6.5.tgz", + "integrity": "sha512-swDnPqrT2XISAih0o74zQVE2wQJFMvkx+9VZXYYNSLb/CUcAzU9pNj637Ar2+hyRw6b4tP6xh4GQZip2ZCpQpg==", + "license": "MIT", + "peerDependencies": { + "react": ">= 16.8.0 || ^18.0.0", + "react-dom": ">= 16.8.0 || ^18.0.0" + } + }, "node_modules/react-helmet": { "version": "6.1.0", "license": "MIT", @@ -23077,6 +23485,48 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, + "node_modules/react-pdf": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.0.tgz", + "integrity": "sha512-KhPDQE3QshkLdS3b48S5Bldv0N5flob6qwvsiADWdZOS5TMDaIrkRtEs+Dyl6ubRf2jTf9jWmFb6RjWu46lSSg==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "dequal": "^2.0.3", + "make-cancellable-promise": "^1.3.1", + "make-event-props": "^1.6.0", + "merge-refs": "^1.3.0", + "pdfjs-dist": "4.4.168", + "tiny-invariant": "^1.0.0", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-pdf/node_modules/pdfjs-dist": { + "version": "4.4.168", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.4.168.tgz", + "integrity": "sha512-MbkAjpwka/dMHaCfQ75RY1FXX3IewBVu6NGZOcxerRFlaBiIkZmUoR0jotX5VUzYZEXAGzSFtknWs5xRKliXPA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d": "^0.2.0" + } + }, "node_modules/react-redux": { "version": "9.1.2", "license": "MIT", @@ -23382,7 +23832,7 @@ }, "node_modules/readable-stream": { "version": "3.6.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -24318,6 +24768,13 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC", + "optional": true + }, "node_modules/set-function-length": { "version": "1.2.2", "dev": true, @@ -24415,9 +24872,68 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "dev": true, + "devOptional": true, "license": "ISC" }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "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", + "optional": true + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-get/node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/simple-get/node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "dev": true, @@ -24707,7 +25223,7 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -25124,7 +25640,7 @@ }, "node_modules/tar": { "version": "6.2.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "chownr": "^2.0.0", @@ -25171,7 +25687,7 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=8" @@ -25179,7 +25695,7 @@ }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/telejson": { @@ -25511,7 +26027,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -25555,7 +26070,7 @@ }, "node_modules/tr46": { "version": "0.0.3", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/tree-dump": { @@ -25661,6 +26176,117 @@ "node": ">=10" } }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/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==", + "license": "MIT" + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ts-node": { "version": "10.9.2", "dev": true, @@ -25883,8 +26509,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "dev": true, + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -26280,7 +26907,7 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/utila": { @@ -26533,6 +27160,15 @@ "makeerror": "1.0.12" } }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/watchpack": { "version": "2.4.1", "license": "MIT", @@ -26562,7 +27198,7 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause" }, "node_modules/webpack": { @@ -26928,7 +27564,7 @@ }, "node_modules/whatwg-url": { "version": "5.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -27029,6 +27665,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/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==", + "license": "MIT", + "optional": true + }, + "node_modules/wide-align/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==", + "license": "MIT", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wildcard": { "version": "2.0.1", "dev": true, @@ -27185,7 +27853,7 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/write-file-atomic": { diff --git a/package.json b/package.json index fee28865..5da1ee17 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,12 @@ "build-storybook": "storybook build" }, "dependencies": { - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.5", + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", "@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/react-fontawesome": "^0.2.2", "@mui/icons-material": "^5.16.4", + "@mui/joy": "^5.0.0-beta.48", "@mui/material": "^5.16.4", "@reduxjs/toolkit": "^2.2.5", "antd": "^5.19.2", @@ -27,13 +28,16 @@ "html-webpack-plugin": "^5.6.0", "jwt-decode": "^4.0.0", "mini-css-extract-plugin": "^2.9.0", + "pdfjs-dist": "^4.5.136", "papaparse": "^5.4.1", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-fast-marquee": "^1.6.5", "react-helmet": "^6.1.0", "react-icons": "^5.2.1", "react-input-emoji": "^5.9.0", "react-loader-spinner": "^6.1.6", + "react-pdf": "^9.1.0", "react-redux": "^9.1.2", "react-router-dom": "^6.24.0", "react-spinners": "^0.14.1", @@ -41,6 +45,7 @@ "recharts": "^2.12.7", "save-dev": "0.0.1-security", "socket.io-client": "^4.7.5", + "ts-loader": "^9.5.1", "xlsx": "^0.18.5", "yup": "^1.4.0" }, diff --git a/public/assets/images/Na_Dec_44.jpg b/public/assets/images/Na_Dec_44.jpg new file mode 100644 index 00000000..77909099 Binary files /dev/null and b/public/assets/images/Na_Dec_44.jpg differ diff --git a/public/assets/images/rejected.png b/public/assets/images/rejected.png new file mode 100644 index 00000000..4c8ba3ed Binary files /dev/null and b/public/assets/images/rejected.png differ diff --git a/src/App.scss b/src/App.scss index c0ab4765..c415562e 100644 --- a/src/App.scss +++ b/src/App.scss @@ -44,5 +44,11 @@ @import "./assets//styles/UserProfile.scss"; @import "./assets/styles/SellerSideProduct.scss"; @import "./assets/styles/SellerDeleteItem.scss"; +@import "./assets/styles/verticalStepper.scss"; +@import "./assets/styles/requests.scss"; +@import "./assets/styles/AboutUs.scss"; +@import "./assets/styles/UserDetails.scss"; +@import "./assets/styles/SellerRegistration.scss"; @import "./assets/styles/ServicesPage.scss"; -@import "./assets/styles/Settings.scss"; \ No newline at end of file +@import "./assets/styles/Settings.scss"; +@import "./assets/styles/HomePage.scss"; \ No newline at end of file diff --git a/src/assets/styles/AboutUs.scss b/src/assets/styles/AboutUs.scss new file mode 100644 index 00000000..45c29166 --- /dev/null +++ b/src/assets/styles/AboutUs.scss @@ -0,0 +1,187 @@ +.about { + background-color: $container-color; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + &__container { + background-color: $white-color; + width: 80%; + padding: 4rem 0; + + h1 { + color: $text-color; + font-family: $text-family; + font-size: 4rem; + text-align: center; + padding-bottom: 1.5rem; + } + + .welcome { + display: flex; + flex-direction: column; + align-items: center; + + h2 { + color: $text2-color; + font-family: $text-family; + font-size: 2.4rem; + text-align: center; + } + + .paragraph { + color: $text2-color; + font-family: $text-family; + font-size: 1.8rem; + text-align: center; + margin-top: 2rem; + line-height: 1.5; + margin-bottom: 4rem; + width: 50%; + } + } + + .mission { + display: flex; + flex-direction: column; + align-items: center; + + h2 { + color: $text2-color; + font-family: $text-family; + font-size: 2.4rem; + text-align: center; + margin-bottom: 1rem; + } + + .paragraph { + color: $text2-color; + font-family: $text-family; + font-size: 1.8rem; + text-align: center; + margin-top: 2rem; + line-height: 1.5; + margin-bottom: 4rem; + width: 50%; + } + } + + .team { + display: flex; + flex-direction: column; + align-items: center; + + h2 { + color: $text2-color; + font-family: $text-family; + font-size: 2.4rem; + text-align: center; + margin-bottom: 1rem; + } + + .team__members { + display: flex; + flex-wrap: wrap; + justify-content: center; + margin-top: 2rem; + overflow: hidden; + gap: 2rem; + // position: absolute; + + .team__member { + position: relative; + overflow: hidden; + img { + width: 25rem; + height: 25rem; + object-fit: cover; + display: block; + } + + &__desc { + position: absolute; + bottom: -100%; + left: 0; + width: 100%; + background-color: rgba(0, 0, 0, 0.7); + padding: 10px; + box-sizing: border-box; + transition: bottom 0.3s ease-in-out; + + h3 { + color: $white-color; + font-family: $text-family; + font-size: 1.8rem; + text-align: center; + margin-bottom: 0.5rem; + } + + p { + color: $white-color; + font-family: $text-family; + font-size: 1.6rem; + text-align: center; + margin-top: 1rem; + } + + &__icon { + font-size: 3rem; + display: flex; + justify-content: center; + gap: 1rem; + + a { + color: $primary-color; + + &:hover { + transition: all 0.5s ease-in-out; + animation: bounce 1s backwards; + } + } + + @keyframes bounce { + + 0%, + 100% { + transform: translateY(0); + } + + 50% { + transform: translateY(-10px); + } + } + } + } + + } + .team__member:hover .team__member__desc{ + bottom: 0; + } + } + } + + .get-in-touch { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 4rem; + + button { + padding: 2rem; + background-color: $primary-color; + color: $white-color; + border: none; + border-radius: 1rem; + font-size: 2rem; + cursor: pointer; + transition: all 0.3s ease-in-out; + + &:hover { + background-color: $primary-color-dark; + } + } + } + } + +} \ No newline at end of file diff --git a/src/assets/styles/Colors.scss b/src/assets/styles/Colors.scss index 6aba0de3..36c32005 100644 --- a/src/assets/styles/Colors.scss +++ b/src/assets/styles/Colors.scss @@ -29,12 +29,13 @@ $border-color: #D9D9D9; $red-color:red; $grayColor:gray; $primary-color-half: rgb(248,244,244); -$red-color:red; +$red-color-light:rgb(250, 169, 169); +$red-color-dark:rgb(59, 1, 1); $menu-hover: #FE975B; -$green-color: rgb(3, 216, 3); +$green-color: rgb(15, 145, 3); $green-middle-color: rgba(3, 216, 3, 0.3); $red-middle-color: rgba(216, 8, 3, 0.3); - +$green-color-light:#97fa97; $toastify-color-light: #fff; $toastify-color-dark: #121212; diff --git a/src/assets/styles/HomePage.scss b/src/assets/styles/HomePage.scss new file mode 100644 index 00000000..fb8676ad --- /dev/null +++ b/src/assets/styles/HomePage.scss @@ -0,0 +1,28 @@ +.banner { + background-color: $primary-color; + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; + color: $white; + font-size: 2rem; + padding: 1rem; + + .btn-link { + background-color: $primary-color-light; + border: none; + padding: 1rem 2rem; + border-radius: 5px; + cursor: pointer; + color: $white; + transition: all 0.5s ease-in-out; + + &:hover { + background-color: $menu-hover; + transition: all 0.5s ease-in-out; + color: $text2-color; + + } + } + +} \ No newline at end of file diff --git a/src/assets/styles/SellerRegistration.scss b/src/assets/styles/SellerRegistration.scss new file mode 100644 index 00000000..38d5206d --- /dev/null +++ b/src/assets/styles/SellerRegistration.scss @@ -0,0 +1,358 @@ +.seller-registration { + display: flex; + width: 90%; + height: 100vh; + background: white; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + + .seller-sidebar { + width: 35%; + background:$login-bg-color; + padding: 20px; + color: $white-color; + display: flex; + flex-direction: column; + justify-content: space-between; + + + .review-card { + background-color: $white-color; + padding: 20px; + border-radius: 8px; + + .reviewer { + display: flex; + align-items: center; + justify-content: center; + + img { + width: 5rem; + } + p{ + margin-left: 10px; + font-size: 16px; + color: $text-color; + + span{ + font-size: 16px; + color: $primary-color; + font-weight: 600; + } + } + } + } + + .delivery-info { + h1{ + font-size: 1.6rem; + margin-bottom: 2rem; + } + p{ + font-size: 1.2rem; + + } + } + + .logo { + width: 45rem; + img { + width: 100%; + border-radius: .5rem; + + } + + p { + font-size: 1.5rem; + align-items: center; + } + } + } + + .registration-container { + padding: 2rem; + + h2 { + margin-bottom: 20px; + font-weight: bold; + font-size: 2.5rem; + color: $primary-color; + } + + .step-indicators { + display: flex; + margin-bottom: 20px; + + span { + padding: 2rem 4rem; + font-size: 18px; + cursor: pointer; + border: 1px solid $border-color; + } + + .active { + border-bottom: 3px solid $primary-color; + color: $primary-color; + } + } + + + .business-details { + label { + font-size: 14px; + color: $text-color; + margin-bottom: 5px; + display: block; + + span { + color: $red-color; + } + } + + input[type="text"], + input[type="number"], + input[type="tel"], + textarea { + width: 50%; + padding: 10px; + font-size: 1.6rem; + border-bottom: 2px solid $border-color; + margin-bottom: 10px; + box-sizing: border-box; + color: $text-color; + font-weight: 400; + } + + textarea { + resize: vertical; + max-height: 200px; + + } + + input:focus, + textarea:focus { + border-bottom: 2px solid $primary-color; + } + + + .upload-section { + display: flex; + flex-direction: column; + } + + .check-group{ + display: flex; + flex-direction: row; + + input[type="checkbox"] { + appearance: none; + width: 1.7rem; + height: 1.7rem; + -webkit-appearance: none; + -moz-appearance: none; + background-color: #fff; + border: 1px solid $border-color; + border-radius: 4px; + cursor: pointer; + position: relative; + + &:checked { + background-color: $primary-color; + border-color: $primary-color; + + &::before { + content: ''; + position: absolute; + top: 1px; + left: 4px; + width: 3px; + height: 6px; + border: solid white; + border-width: 0 2px 2px 0; + transform: rotate(45deg); + } + } + } + label { + margin-left: .2rem; + font-size: 1.5rem; + } + } + .form-control { + button { + padding: 10px 20px; + font-size: 16px; + border-radius: 4px; + border: none; + cursor: pointer; + } + + .continue { + background-color: $primary-color; + color: $white-color; + } + } + } + } + + .seller-details { + form { + div:not(div:last-child) { + display: flex; + flex-direction: column; + + label { + font-size: 14px; + margin-bottom: 8px; + display: block; + + span { + color: $red-color; + } + } + + input { + width: 70%; + padding: 10px 0; + font-size: 1.4rem; + border-bottom: 2px solid $border-color; + margin-bottom: 15px; + box-sizing: border-box; + + &:focus { + border-bottom: 2px solid $primary-color; + } + } + } + + div:last-child { + display: flex; + justify-content: space-between; + + button { + padding: 10px 20px; + font-size: 16px; + border-radius: 4px; + border: none; + cursor: pointer; + background-color: $primary-color; + color: $white-color; + + &:hover { + background-color: $primary-color-dark; + } + } + + button:first-child { + background-color: #ccc; + color: #333; + + &:hover { + background-color: #aaa; + } + } + } + } + } + + .payment-details { + form { + .check-form { + display: flex; + flex-direction: column; + gap: 1rem; + div { + display: flex; + + input[type="checkbox"] { + appearance: none; + width: 1.5rem; + height: 1.5rem; + -webkit-appearance: none; + -moz-appearance: none; + background-color: #fff; + border: 1px solid $border-color; + border-radius: 4px; + cursor: pointer; + position: relative; + + &:checked { + background-color: $primary-color; + border-color: $primary-color; + + &::before { + content: ''; + position: absolute; + top: 1px; + left: 3px; + width: 3px; + height: 6px; + border: solid white; + border-width: 0 2px 2px 0; + transform: rotate(45deg); + } + } + &:disabled{ + background-color: #edeaea; + color: #706f6f; + } + } + + label { + margin-top: .1rem; + margin-left: .2rem; + font-size: 1.5rem; + } + } + } + + div:not(div:last-child, div:first-child) { + display: flex; + flex-direction: column; + + label { + font-size: 14px; + margin-bottom: 8px; + display: block; + + span { + color: $red-color; + } + } + + input { + width: 70%; + padding: 10px 0; + font-size: 1.4rem; + border-bottom: 2px solid $border-color; + margin-bottom: 15px; + box-sizing: border-box; + + &:focus { + border-bottom: 2px solid $primary-color; + transition: border-bottom .3s ease-in-out; + } + } + } + + .groupe-form { + display: flex; + justify-content: space-between; + + button { + padding: 10px 20px; + font-size: 16px; + border-radius: 4px; + border: none; + cursor: pointer; + background-color: $primary-color; + color: $white-color; + + &:first-child { + background-color: #ccc; + color: $text-color; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/assets/styles/Settings.scss b/src/assets/styles/Settings.scss index a34b2589..68352bca 100644 --- a/src/assets/styles/Settings.scss +++ b/src/assets/styles/Settings.scss @@ -21,9 +21,11 @@ .menu-item { cursor: pointer; font-size: 1.3rem; - p{ + + p { margin-right: 1rem; padding: 1rem; + &.active { background-color: $primary-color-light; color: $primary-color; @@ -40,7 +42,8 @@ .section_container { flex-grow: 1; padding: 0 2.5rem; - .loading__spinner{ + + .loading__spinner { display: flex; justify-content: center; align-items: center; @@ -51,23 +54,29 @@ .section-content { background-color: white; - padding: 20px; + overflow-y: auto; + padding: 10px; + height: 70vh; + - .password_exp{ - background-color: $border-color; + label { + font-size: 2.5rem; + font-weight: bold; + } + + .password_exp { + background-color: $secondary-color-light; padding: 2rem 5rem; border-radius: .5rem; + margin-bottom: 2rem; - .form-group{ + .form-group { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; - label{ - font-size: 2.5rem; - font-weight: bold; - } - input{ + + input { padding: 10px; border: 1px solid #ddd; border-radius: 5px; @@ -75,7 +84,8 @@ width: 30%; } } - .btn{ + + .btn { padding: 10px 20px; background-color: $primary-color; color: $white-color; @@ -86,13 +96,105 @@ cursor: pointer; transition: width 0.5s linear; - &:hover{ + &:hover { background-color: $primary-color-dark; width: 10rem; transition: width 0.5s linear; } } } + + .terms { + background-color: $secondary-color-light; + padding: 2rem 5rem; + border-radius: .5rem; + margin-bottom: 2rem; + + .nav__terms { + padding-bottom: 1rem; + + .terms__link { + padding: 1rem; + + &.active { + background-color: $primary-color-light; + border-bottom: 1px solid $primary-color; + color: $primary-color; + } + } + + ul { + display: flex; + list-style: none; + margin: 0; + padding: 0; + cursor: pointer; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + + li { + font-size: 1.5rem; + } + } + } + + form { + padding: 0; + margin: 2rem 0; + + div:first-child { + margin: 20px 0; + display: flex; + flex-direction: column; + justify-content: space-between; + + textarea { + padding: 10px; + border: 1px solid #ddd; + border-radius: 5px; + font-size: 1.4rem; + width: 50%; + height: 100px; + + &:hover { + border-color: $primary-color; + } + } + + select { + border: 1px solid #ddd; + border-radius: 5px; + font-size: 1.4rem; + height: 30%; + width: 20%; + margin: 2rem 0; + + &:hover { + border-color: $primary-color; + } + } + } + + .form-group { + .btn { + padding: 10px 20px; + background-color: $primary-color; + color: $white-color; + border: none; + border-radius: 5px; + font-size: 1.6rem; + width: 8rem; + cursor: pointer; + transition: width 0.5s linear; + + &:hover { + background-color: $primary-color-dark; + width: 10rem; + transition: width 0.5s linear; + } + } + } + } + } } } diff --git a/src/assets/styles/Sidebar.scss b/src/assets/styles/Sidebar.scss index 2e01d1a0..4478f249 100644 --- a/src/assets/styles/Sidebar.scss +++ b/src/assets/styles/Sidebar.scss @@ -1,5 +1,3 @@ -@import "./Colors"; - .sidebar { display: inline-block; height: 100vh; diff --git a/src/assets/styles/UserDetails.scss b/src/assets/styles/UserDetails.scss new file mode 100644 index 00000000..735e9ed9 --- /dev/null +++ b/src/assets/styles/UserDetails.scss @@ -0,0 +1,216 @@ +.user-details { + height: 50rem; + width: 100%; + display: flex; + gap: 2rem; + padding: 2rem; + border-radius: 10px; + + .user-image { + width: 40%; + height: 60%; + img { + width: 100%; + height: 100%; + border-radius: 10px; + // object-fit: cover; + margin-bottom: 1rem; + } + .payment-info { + display: flex; + justify-content: space-between; + flex-direction: column; + // align-items: center; + background-color: #efefef; + padding: 2rem; + border-radius: 10px; + + h4 { + font-size: 16px; + margin-bottom: 8px; + color: $primary-color; + } + strong{ + font-size: 1.4rem; + font-weight: 500; + } + p{ + font-size: 1.4rem; + } + table{ + width: 100%; + height: 100%; + border-collapse: collapse; + + th:first-child{ + text-align: left; + } + } + + .pdf-icon { + display: flex; + flex-direction: column; + font-size: 16px; + color: $primary-color; + margin-top: -1.5rem; + align-items: center; + .pdf{ + margin-top: 1rem; + font-size: 50px; + margin-left: -1rem; + } + } + + } + } + + .user-info { + width: 50%; + background-color: #efefef; + padding: 2rem; + border-radius: 1rem; + position: relative; + strong{ + font-size: 1.4rem; + font-weight: 500; + padding-bottom: 1rem; + } + p{ + font-size: 1.4rem; + } + h2{ + font-size: 2rem; + color: $primary-color; + margin-bottom: 1rem; + text-align: left; + } + table{ + width: 100%; + border-collapse: collapse; + th:first-child{ + width: 30%; + } + td{ + padding: .5rem 0; + } + } + &__table{ + margin-bottom: 1rem; + } + .shop__info{ + margin-bottom: 1rem; + } + .contact-info { + margin-bottom: 1rem; + } + .buttons{ + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + padding: 1.5rem 0 1.5rem 0; + + button{ + background-color: #fff; + color: $primary-color; + padding: 1rem 2rem; + border: none; + border-radius: 5px; + font-size: 1.4rem; + cursor: pointer; + transform: none; + box-shadow: .3rem .3rem .3rem rgba(0, 0, 0, 0.217); + transition: all 0.5s ease-in-out; + + } + .btn-delete:hover{ + background-color: $red-color; + color: $white-color; + box-shadow: 1rem 1rem 1rem rgba(0, 0, 0, 0.3); + transform: scale(1.1); + transition: all 0.5s ease-in-out; + } + div{ + display: flex; + align-items: center; + justify-content: space-between; + width: 50%; + .btn-cancel:hover{ + background-color: $fifth-color; + color: $white-color; + box-shadow: 1rem 1rem 1rem rgba(0, 0, 0, 0.3); + transform: scale(1.1); + transition: all 0.5s ease-in-out; + } + .btn-approve:hover{ + background-color: $green-color; + color: $white-color; + box-shadow: 1rem 1rem 1rem rgba(0, 0, 0, 0.3); + transform: scale(1.1); + transition: all 0.5s ease-in-out; + } + } + } + .approval__badge{ + position: absolute; + top: 2rem; + right: 2rem; + font-size: 8rem; + } + .reject-badge{ + position: absolute; + top: 2rem; + right: 2rem; + width: 8rem; + height: 8rem; + } + } + .view__pdf{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.453); + z-index: 1000; + + .close__icon{ + position: absolute; + top: 2rem; + right: 2rem; + font-size: 3rem; + cursor: pointer; + color: $white-color; + &:hover{ + color: $red-color; + transform: scale(1.1); + transition: all 0.5s ease-in-out; + } + } + } + } + .pageNumber{ + display: flex; + justify-content: center; + align-items: center; + + button{ + background-color: transparent; + width: 6rem; + height: 6rem; + .pageNumber__icon{ + font-size: 6rem; + cursor: pointer; + &:hover{ + transform: scale(1.1); + transition: all 0.5s ease-in-out; + } + } + &:first-child{ + margin-right: 1rem; + } + &:last-child{ + margin-left: 1rem; + } + } + } diff --git a/src/assets/styles/requests.scss b/src/assets/styles/requests.scss new file mode 100644 index 00000000..c7e8d7d3 --- /dev/null +++ b/src/assets/styles/requests.scss @@ -0,0 +1,54 @@ +.requests { + &__user{ + &__role{ + color: $green-color; + background-color: $green-color-light; + padding: .5rem 1rem; + border-radius: 2rem; + } + } + &__status { + padding: .5rem 1rem; + background-color: $primary-color-light; + border-radius: 2rem; + color: $primary-color; + + &__rejected { + padding: .5rem 1rem; + border-radius: 2rem; + background-color: $red-color-light; + color: $red-color; + } + + &__accepted { + padding: .5rem 1rem; + border-radius: 2rem; + background-color: $green-color-light; + color: $green-color; + } + } + &__view{ + display: flex; + gap: 1rem; + &__icon{ + padding: .5rem; + border-radius: 2rem; + color: $primary-color; + cursor: pointer; + } + &__icon:nth-child(2){ + color: $red-color; + &:hover{ + cursor: pointer; + background-color: $red-color-light; + } + } + } +} +.main{ + &__request{ + background-color: $white-color; + border-radius: 2rem; + width: 90%; + } +} \ No newline at end of file diff --git a/src/assets/styles/verticalStepper.scss b/src/assets/styles/verticalStepper.scss new file mode 100644 index 00000000..b7d24439 --- /dev/null +++ b/src/assets/styles/verticalStepper.scss @@ -0,0 +1,104 @@ + +.become-seller-container{ + display: flex; + align-items: center; + flex-direction: column; + height: 100vh; + background-color: $container-color; + padding: 20px; + + .horizontalStepper{ + padding: 1.5rem 0; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + background-color: $white-color; + border-radius: 1rem; + border: 1px solid $white-color; + box-shadow: 0 0 1rem rgba(0, 0, 0, 0.1); + transition: height 0.5s ease-in-out; + .MuiStepIcon-root.Mui-active{ + color: $primary-color; + } + .MuiStepIcon-root.Mui-completed{ + color: $primary-color; + } + .MuiButton-containedPrimary{ + background-color: $primary-color; + font-size: 1.5rem; + } + .MuiButton-textPrimary{ + color: $primary-color; + &:hover{ + background-color: $secondary-color-light; + } + } + .MuiStepLabel-label{ + font-size: 1.8rem; + color: $text-color; + margin-bottom: 1rem; + font-weight: bold; + + &.Mui-active{ + color: $primary-color; + } + &.Mui-completed{ + color: $primary-color; + } + } + .MuiFormControlLabel-label{ + font-size: 1.8rem; + font-weight: bold; + } + .MuiSvgIcon-root{ + color: $primary-color; + } + .MuiDialogTitle-root{ + font-size: 2.4rem !important; + font-weight: bold; + } + } + + .eligibility-form{ + padding-left: 0; + padding-right: 1rem; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + // flex: 1; + // flex-wrap: wrap; + + .eligibility-class-div{ + width: 100%; + display: flex; + gap: .5rem; + flex-direction: column; + label{ + font-size: 1.6rem; + color: $text-color; + } + input{ + width: 100%; + height: 3rem; + border: 1px solid $primary-color; + border-radius: 5px; + padding-left: 1rem; + font-size: 1.5rem; + color: $text-color; + } + + } + .desc{ + font-size: 1.5rem; + color: $text-color; + border: 1px solid $primary-color; + width: 100%; + height: 100%; + padding-left: 1rem; + border-radius: .5rem; + } + } + +} \ No newline at end of file diff --git a/src/components/FullScreenPdfView/FullScreenPdfView.tsx b/src/components/FullScreenPdfView/FullScreenPdfView.tsx new file mode 100644 index 00000000..75241a23 --- /dev/null +++ b/src/components/FullScreenPdfView/FullScreenPdfView.tsx @@ -0,0 +1,53 @@ +/* eslint-disable */ + +import React, { useRef, useState } from "react"; +import { Document, Page, pdfjs } from "react-pdf"; +import { IoIosArrowBack, IoIosArrowForward } from "react-icons/io"; +import 'react-pdf/dist/Page/TextLayer.css'; +import 'react-pdf/dist/Page/AnnotationLayer.css'; + +pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`; + +export const FullScreenPdfView = ({ pdfUrl }) => { + const pdfContainerRef = useRef(null); + + const [numPages, setNumPages] = useState(0); + const [pageNumber, setPageNumber] = useState(1); + const [scale, setScale] = useState(1); + + function onDocumentLoadSuccess({ numPages }: { numPages: number }): void { + setNumPages(numPages); + // adjustScale(); + } + + const adjustScale = () => { + if (pdfContainerRef.current) { + const containerWidth = pdfContainerRef.current.clientWidth; + setScale(containerWidth / 600); + } + }; + + const goToPrevPage = () => { + setPageNumber((prevPage) => Math.max(prevPage - 1, 1)); + }; + + const goToNextPage = () => { + setPageNumber((prevPage) => Math.min(prevPage + 1, numPages)); + }; + + return ( +
+
+ + + + + +
+
+ ); +}; diff --git a/src/components/ResendEmail.tsx b/src/components/ResendEmail.tsx index ab221e61..42ad6b92 100644 --- a/src/components/ResendEmail.tsx +++ b/src/components/ResendEmail.tsx @@ -14,7 +14,7 @@ const validationSchema = yup.object({ }) export const ResendEmail = () => { const dispatch = useAppDispatch(); - const { isSuccess, isError, isLoading, message } = useAppSelector((state) => state.auth) + const { isSuccess, isEmailResend, isLoading, message } = useAppSelector((state) => state?.auth) const initialValues = { email: "", }; @@ -22,20 +22,18 @@ export const ResendEmail = () => { initialValues, validationSchema, onSubmit: (values) => { - dispatch(resendVerificationEmail(values)).then(() => { - if(isSuccess) { - toast.success(message); - } - if (isError) { - toast.error(message) - } - }) + dispatch(resendVerificationEmail(values)) }, }) useEffect(() => { - dispatch(resetAuth()); - }, [dispatch]); - + dispatch(resetAuth()); + if(isSuccess) { + toast.success(message); + } + if (isEmailResend) { + toast.error(message) + } + }, [dispatch,isSuccess,isEmailResend,message]); return ( <> diff --git a/src/components/TermsAndCondition/EditTerms.tsx b/src/components/TermsAndCondition/EditTerms.tsx new file mode 100644 index 00000000..ab007891 --- /dev/null +++ b/src/components/TermsAndCondition/EditTerms.tsx @@ -0,0 +1,121 @@ +/* eslint-disable */ +import React, { useEffect, useState } from "react"; +import PropTypes from "prop-types"; +import { useAppDispatch, useAppSelector } from "../../store/store"; +import { getTerm, updateTerm } from "../../store/features/admin/adminSlice"; +import { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions,Button } from "@mui/material"; + +export const EditTerms = ({ id }) => { + const [isDisabled, setIsDisabled] = useState(true); + const [isEdit, setIsEdit] = useState(true); + const [termType, setTermType] = useState(""); + const [termContent, setTermContent] = useState(""); + const [localState, setLocalState] = useState(); + const dispatch = useAppDispatch(); + + const term = useAppSelector((state) => state?.admin?.term); + + useEffect(() => { + const fetchTerm = async () => { + await dispatch(getTerm(id)); + }; + + fetchTerm(); + }, [dispatch, id]); + + useEffect(()=>{ + if (term) { + setIsDisabled(false); + setIsEdit(false); + setLocalState({ + type: term.type, + content: term.content, + }); + } + },[term]) + const handleSaveTerms = async (e) => { + e.preventDefault(); + const termData = { + id, + termType: localState.type, + termContent: localState.content, + }; + console.log("Saving Term: ", termData); + await dispatch(updateTerm(termData)); + setIsDisabled(true); + setIsEdit(true); + }; + + const handleTypeChange = (e) => { + const updatedType = e.target.value; + setLocalState((prevState) => ({ + ...prevState, + type: updatedType, + })); + setIsEdit(false); + }; + + const handleContentChange = (e) => { + const updatedContent = e.target.value; + setLocalState((prevState) => ({ + ...prevState, + content: updatedContent, + })); + setIsEdit(false); + }; + + + return ( + <> + +
+
+
+ {localState && ( + <> + + +
+
+ + +
+
+ {term ? (
+ + +
) : (
+ + +
)} + + + setOpen(false)} + aria-labelledby="terms-and-conditions-title" + aria-describedby="terms-and-conditions-description" + > + + Terms and Conditions + + + {term ? ( + + {/* Display the term content */} + {term.content} + + ) : ( + + No terms available for your role. + + )} + + + + + + +
+
+ +
+
+
+ ); +}; diff --git a/src/components/seller/Form.tsx b/src/components/seller/Form.tsx new file mode 100644 index 00000000..c4ec2220 --- /dev/null +++ b/src/components/seller/Form.tsx @@ -0,0 +1,84 @@ +/* eslint-disable */ +import React, { useState } from 'react' + +export const Form = () => { + const [idType, setIdType] = useState('NID'); + + return ( +
+

Merchant Registration

+
+ + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ ) +} diff --git a/src/components/seller/PaymentDetails.tsx b/src/components/seller/PaymentDetails.tsx new file mode 100644 index 00000000..c18a1076 --- /dev/null +++ b/src/components/seller/PaymentDetails.tsx @@ -0,0 +1,106 @@ +/* eslint-disable */ +import React, { useState } from "react"; + +interface Props { + prevStep: () => void; + formData: any; + updateFormData: (data: any) => void; + handleSubmit: () => void; +} + +export const PaymentDetails: React.FC = ({ prevStep, formData, updateFormData, handleSubmit }) => { + const [localData, setLocalData] = useState(formData); + + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + updateFormData({ [name]: value }); + }; + + const handleCheckboxChange = (e: React.ChangeEvent) => { + const { name, checked } = e.target; + updateFormData({ [name]: checked }); + }; + + const handleFinalSubmit = (e: React.FormEvent) => { + e.preventDefault(); + handleSubmit(); + }; + return ( +
+
+
+
+ + +
+
+ + +
+
+ {formData.bankPayment && ( + <> +
+ + +
+
+ + +
+ + )} + {formData.mobilePayment && ( +
+ + +
+ )} +
+ + +
+
+
+ ); +}; diff --git a/src/components/seller/SellerDetails.tsx b/src/components/seller/SellerDetails.tsx new file mode 100644 index 00000000..cf2537bc --- /dev/null +++ b/src/components/seller/SellerDetails.tsx @@ -0,0 +1,109 @@ +/* eslint-disable */ +import React, { useEffect, useState } from "react"; +import { useAppDispatch, useAppSelector } from "../../store/store"; +import { getAllTerms } from "../../store/features/admin/adminSlice"; + +interface Props { + nextStep: () => void; + prevStep: () => void; + formData: any; + updateFormData: (data: any) => void; +} + +export const SellerDetails: React.FC = ({ + nextStep, + prevStep, + formData, + updateFormData, +}) => { + const [localData, setLocalData] = useState(formData); + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setLocalData({ ...localData, [name]: value }); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + updateFormData(localData); + nextStep(); + }; + + + return ( +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ ); +}; diff --git a/src/components/seller/Sidebar.tsx b/src/components/seller/Sidebar.tsx new file mode 100644 index 00000000..681e7365 --- /dev/null +++ b/src/components/seller/Sidebar.tsx @@ -0,0 +1,37 @@ +/* eslint-disable */ +import React from "react"; +import seller_pic from "../../../public/assets/images/Na_Dec_44.jpg"; +import logo from "../../../public/assets/images/logo.png"; +export const Sidebar = () => { + return ( +
+
+
+ logo +

+ e-CommerceNinjas +

+
+
+
+

+ Unlock New Opportunities with e-CommerceNinjas: The Ultimate + Marketplace for Growing Your Business! +

+

+ Join a thriving community of sellers on e-CommerceNinjas and tap + into a vast network of potential customers. With our easy-to-use tools + and dedicated support, you can streamline your operations and maximize + your sales. Whether you're looking to expand your reach, increase your + revenue, or connect with more customers, e-CommerceNinjas is the + perfect partner for your business success. + Sign up today and start transforming your + entrepreneurial dreams into reality! +

+
+
+ Delivery Logo +
+
+ ); +}; diff --git a/src/components/settings/GeneralSettings.tsx b/src/components/settings/GeneralSettings.tsx index 4f2ab620..1bf2be3b 100644 --- a/src/components/settings/GeneralSettings.tsx +++ b/src/components/settings/GeneralSettings.tsx @@ -2,29 +2,55 @@ import React, { useEffect, useState } from "react"; import { useAppDispatch, useAppSelector } from "../../store/store"; import { + deleteTerm, fetchPasswordExpiration, + getAllTerms, + setTerms, updateUserPasswordExpiration, } from "../../store/features/admin/adminSlice"; -import CircularProgress from "@mui/material/CircularProgress"; -import Typography from "@mui/material/Typography"; import Box from "@mui/material/Box"; -import { Bars } from "react-loader-spinner"; -import { LinearProgress } from "@mui/material"; +import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, IconButton, LinearProgress, Tooltip, Zoom } from "@mui/material"; +import Table from "../table/Table"; +import { Delete, Edit } from "@mui/icons-material"; +import { EditTerms } from "../TermsAndCondition/EditTerms"; export const GeneralSettings = () => { const dispatch = useAppDispatch(); - const { users, isLoading, passwordExpiration } = useAppSelector( + const { users, isLoading, passwordExpiration, terms } = useAppSelector( (state) => state?.admin ); const [minutes, setMinutes] = useState(passwordExpiration); const [isDisabled, setIsDisabled] = useState(true); const [isEdit, setIsEdit] = useState(true); + const [selected, setSelected] = useState("Terms & Conditions list"); + const [termType, setTermType] = useState(""); + const [termContent, setTermContent] = useState(""); + const [isEditTerms, setIsEditTerms] = useState(""); + const [termToDelete, setTermToDelete] = useState(null); + const [id, setId] = useState(); + const [open, setOpen] = useState(false); + const [localState, setLocalState] = useState([]) useEffect(() => { - dispatch(fetchPasswordExpiration()); - setMinutes(passwordExpiration); + const fun = async () => { + await dispatch(fetchPasswordExpiration()); + await dispatch(getAllTerms()); + setMinutes(passwordExpiration); + }; + fun(); }, [dispatch, passwordExpiration]); + useEffect(() => { + if (Array.isArray(terms)) { + setLocalState(terms); + } + }, [terms]); + + useEffect(() => { + if (selected === "Terms & Conditions list") { + dispatch(getAllTerms()); + } + }, [selected, dispatch]); const handleMinutesChange = (e: React.ChangeEvent) => { setMinutes(Number(e.target.value)); }; @@ -37,9 +63,189 @@ export const GeneralSettings = () => { setIsEdit(true); }; + const handleDeleteTerm = (id: string) => { + setTermToDelete(id); + setOpen(true); + setIsDisabled(true); + setIsEdit(true); + }; + + const handleConfirmDelete = async () => { + if (termToDelete) { + await dispatch(deleteTerm(termToDelete)); + setLocalState(localState?.filter((item) => item.id!== termToDelete)); + setOpen(false); + setTermToDelete(null); + } + }; + + const handleSaveTerms = async (e) => { + e.preventDefault(); + const termData = { + termType, + termContent, + }; + await dispatch(setTerms(termData)); + setIsDisabled(true); + setIsEdit(true); + setTermType(""); + setTermContent(""); + }; + + const headers = ["N0", "type", "content", "createdAt", "action"]; + + const rows = localState?.map((item, index) => { + return [ + index + 1, + item.type, + item.content, + new Date(item.createdAt).toLocaleDateString(), +
+ + { + setIsEditTerms("Edit Terms"), + setId(item.id), + setSelected("Edit Terms"); + }} + > + + + + + {handleDeleteTerm(item.id)}}> + + + +
, + ]; + }); + + const termLinks = [ + "Terms & Conditions list", + "Create New Terms", + `${isEditTerms}`, + ]; + const renderSection = () => { + switch (selected) { + case "Terms & Conditions list": + return ( + <> + + setOpen(false)} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description" + > + + {"Confirm Role Change"} + + + + Are you sure you want to change this user's role to Admin? + + + + + + + + + ); + case "Create New Terms": + return ( + <> + +
+
+
+ +