diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..ec601b2 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,15 @@ +module.exports = { + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + ], + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + settings: { react: { version: '18.2' } }, + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': 'warn', + }, +} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..e6c9d1d --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,78 @@ +name: Deploying to Vercel and Netlify +on: + push: + branches: + - dev + pull_request: + branches: + - dev + + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # Checkout the repository + - name: Checkout + uses: actions/checkout@v3 + with: + ref: dev + + # Install Node.js 16 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + + # Install dependencies + - name: Install Dependencies + run: yarn install + continue-on-error: false + + # Build the app + - name: Build + if: success() || failure() # Run even if tests fail + run: yarn run build + continue-on-error: false + + # Merge to main branch + - name: Merge to dev + if: success() && github.event_name == 'push' && github.ref == 'refs/heads/dev' # Only merge on successful push to main branch + run: git merge origin/dev --no-edit + env: + GITHUB_TOKEN: ${{ secrets.TOKEN_GIT }} + continue-on-error: false + + + +# # Deploy to Vercel +# - name: Deploy to Vercel +# if: success() && github.ref == 'refs/heads/dev' # Only deploy on successful push to main branch +# uses: amondnet/vercel-action@v25 +# with: +# vercel-token: ${{ secrets.VERCEL_TOKEN }} +# vercel-org-id: +# vercel-project-id: +# continue-on-error: false + + - name: Deploy to Netlify + uses: nwtgck/actions-netlify@v2.0 + with: + publish-dir: './dist' + production-branch: dev + github-token: ${{ secrets.TOKEN_GIT }} + deploy-message: "Deploy from GitHub Actions" + enable-pull-request-comment: false + enable-commit-comment: true + overwrites-pull-request-comment: true + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + timeout-minutes: 1 + + + + + + diff --git a/.gitignore b/.gitignore index c6bba59..85c7396 100644 --- a/.gitignore +++ b/.gitignore @@ -4,127 +4,24 @@ logs npm-debug.log* yarn-debug.log* yarn-error.log* +pnpm-debug.log* lerna-debug.log* -.pnpm-debug.log* -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt +node_modules dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +package-lock.json -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..8238b63 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,11 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +tasks: + - init: yarn install && yarn run build + command: yarn run dev + + diff --git a/.yarn/cache/@alloc-quick-lru-npm-5.2.0-eb83517088-bdc35758b5.zip b/.yarn/cache/@alloc-quick-lru-npm-5.2.0-eb83517088-bdc35758b5.zip new file mode 100644 index 0000000..683fd04 Binary files /dev/null and b/.yarn/cache/@alloc-quick-lru-npm-5.2.0-eb83517088-bdc35758b5.zip differ diff --git a/.yarn/cache/@ampproject-remapping-npm-2.2.1-3da3d624be-03c04fd526.zip b/.yarn/cache/@ampproject-remapping-npm-2.2.1-3da3d624be-03c04fd526.zip new file mode 100644 index 0000000..2758853 Binary files /dev/null and b/.yarn/cache/@ampproject-remapping-npm-2.2.1-3da3d624be-03c04fd526.zip differ diff --git a/.yarn/cache/@babel-code-frame-npm-7.21.4-5db83e65be-e5390e6ec1.zip b/.yarn/cache/@babel-code-frame-npm-7.21.4-5db83e65be-e5390e6ec1.zip new file mode 100644 index 0000000..06ffff5 Binary files /dev/null and b/.yarn/cache/@babel-code-frame-npm-7.21.4-5db83e65be-e5390e6ec1.zip differ diff --git a/.yarn/cache/@babel-compat-data-npm-7.22.3-7b67f6cb95-eb001646f4.zip b/.yarn/cache/@babel-compat-data-npm-7.22.3-7b67f6cb95-eb001646f4.zip new file mode 100644 index 0000000..0ba81ba Binary files /dev/null and b/.yarn/cache/@babel-compat-data-npm-7.22.3-7b67f6cb95-eb001646f4.zip differ diff --git a/.yarn/cache/@babel-core-npm-7.22.1-4ec1915241-bbe45e791f.zip b/.yarn/cache/@babel-core-npm-7.22.1-4ec1915241-bbe45e791f.zip new file mode 100644 index 0000000..9bdbedd Binary files /dev/null and b/.yarn/cache/@babel-core-npm-7.22.1-4ec1915241-bbe45e791f.zip differ diff --git a/.yarn/cache/@babel-generator-npm-7.22.3-da14afacf5-ccb6426ca5.zip b/.yarn/cache/@babel-generator-npm-7.22.3-da14afacf5-ccb6426ca5.zip new file mode 100644 index 0000000..083b5fc Binary files /dev/null and b/.yarn/cache/@babel-generator-npm-7.22.3-da14afacf5-ccb6426ca5.zip differ diff --git a/.yarn/cache/@babel-helper-compilation-targets-npm-7.22.1-4f7cfd1a17-a686a01bd3.zip b/.yarn/cache/@babel-helper-compilation-targets-npm-7.22.1-4f7cfd1a17-a686a01bd3.zip new file mode 100644 index 0000000..729f577 Binary files /dev/null and b/.yarn/cache/@babel-helper-compilation-targets-npm-7.22.1-4f7cfd1a17-a686a01bd3.zip differ diff --git a/.yarn/cache/@babel-helper-environment-visitor-npm-7.22.1-e00fbc528d-a6b4bb5505.zip b/.yarn/cache/@babel-helper-environment-visitor-npm-7.22.1-e00fbc528d-a6b4bb5505.zip new file mode 100644 index 0000000..f71a46a Binary files /dev/null and b/.yarn/cache/@babel-helper-environment-visitor-npm-7.22.1-e00fbc528d-a6b4bb5505.zip differ diff --git a/.yarn/cache/@babel-helper-function-name-npm-7.21.0-a17ce5a05a-d63e63c3e0.zip b/.yarn/cache/@babel-helper-function-name-npm-7.21.0-a17ce5a05a-d63e63c3e0.zip new file mode 100644 index 0000000..761dd31 Binary files /dev/null and b/.yarn/cache/@babel-helper-function-name-npm-7.21.0-a17ce5a05a-d63e63c3e0.zip differ diff --git a/.yarn/cache/@babel-helper-hoist-variables-npm-7.18.6-6eb061f405-fd9c35bb43.zip b/.yarn/cache/@babel-helper-hoist-variables-npm-7.18.6-6eb061f405-fd9c35bb43.zip new file mode 100644 index 0000000..888840b Binary files /dev/null and b/.yarn/cache/@babel-helper-hoist-variables-npm-7.18.6-6eb061f405-fd9c35bb43.zip differ diff --git a/.yarn/cache/@babel-helper-module-imports-npm-7.21.4-e4cd6b4e21-bd330a2eda.zip b/.yarn/cache/@babel-helper-module-imports-npm-7.21.4-e4cd6b4e21-bd330a2eda.zip new file mode 100644 index 0000000..97cab93 Binary files /dev/null and b/.yarn/cache/@babel-helper-module-imports-npm-7.21.4-e4cd6b4e21-bd330a2eda.zip differ diff --git a/.yarn/cache/@babel-helper-module-transforms-npm-7.22.1-bd7615b6f7-dfa084211a.zip b/.yarn/cache/@babel-helper-module-transforms-npm-7.22.1-bd7615b6f7-dfa084211a.zip new file mode 100644 index 0000000..175c81c Binary files /dev/null and b/.yarn/cache/@babel-helper-module-transforms-npm-7.22.1-bd7615b6f7-dfa084211a.zip differ diff --git a/.yarn/cache/@babel-helper-plugin-utils-npm-7.21.5-b310faa7aa-6f086e9a84.zip b/.yarn/cache/@babel-helper-plugin-utils-npm-7.21.5-b310faa7aa-6f086e9a84.zip new file mode 100644 index 0000000..5ce614d Binary files /dev/null and b/.yarn/cache/@babel-helper-plugin-utils-npm-7.21.5-b310faa7aa-6f086e9a84.zip differ diff --git a/.yarn/cache/@babel-helper-simple-access-npm-7.21.5-adbdd3a62b-ad212beaa2.zip b/.yarn/cache/@babel-helper-simple-access-npm-7.21.5-adbdd3a62b-ad212beaa2.zip new file mode 100644 index 0000000..e46edf9 Binary files /dev/null and b/.yarn/cache/@babel-helper-simple-access-npm-7.21.5-adbdd3a62b-ad212beaa2.zip differ diff --git a/.yarn/cache/@babel-helper-split-export-declaration-npm-7.18.6-53ebf8ad4c-c6d3dede53.zip b/.yarn/cache/@babel-helper-split-export-declaration-npm-7.18.6-53ebf8ad4c-c6d3dede53.zip new file mode 100644 index 0000000..fc27cef Binary files /dev/null and b/.yarn/cache/@babel-helper-split-export-declaration-npm-7.18.6-53ebf8ad4c-c6d3dede53.zip differ diff --git a/.yarn/cache/@babel-helper-string-parser-npm-7.21.5-9fa0e56f04-36c0ded452.zip b/.yarn/cache/@babel-helper-string-parser-npm-7.21.5-9fa0e56f04-36c0ded452.zip new file mode 100644 index 0000000..ef051ed Binary files /dev/null and b/.yarn/cache/@babel-helper-string-parser-npm-7.21.5-9fa0e56f04-36c0ded452.zip differ diff --git a/.yarn/cache/@babel-helper-string-parser-npm-7.22.5-448ff0e489-836851ca5e.zip b/.yarn/cache/@babel-helper-string-parser-npm-7.22.5-448ff0e489-836851ca5e.zip new file mode 100644 index 0000000..7040849 Binary files /dev/null and b/.yarn/cache/@babel-helper-string-parser-npm-7.22.5-448ff0e489-836851ca5e.zip differ diff --git a/.yarn/cache/@babel-helper-validator-identifier-npm-7.19.1-d84f19e1dc-0eca5e86a7.zip b/.yarn/cache/@babel-helper-validator-identifier-npm-7.19.1-d84f19e1dc-0eca5e86a7.zip new file mode 100644 index 0000000..a76d411 Binary files /dev/null and b/.yarn/cache/@babel-helper-validator-identifier-npm-7.19.1-d84f19e1dc-0eca5e86a7.zip differ diff --git a/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.5-4536624779-7f0f301134.zip b/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.5-4536624779-7f0f301134.zip new file mode 100644 index 0000000..6156061 Binary files /dev/null and b/.yarn/cache/@babel-helper-validator-identifier-npm-7.22.5-4536624779-7f0f301134.zip differ diff --git a/.yarn/cache/@babel-helper-validator-option-npm-7.21.0-fbe86866e3-8ece4c78ff.zip b/.yarn/cache/@babel-helper-validator-option-npm-7.21.0-fbe86866e3-8ece4c78ff.zip new file mode 100644 index 0000000..3a6892b Binary files /dev/null and b/.yarn/cache/@babel-helper-validator-option-npm-7.21.0-fbe86866e3-8ece4c78ff.zip differ diff --git a/.yarn/cache/@babel-helpers-npm-7.22.3-0e890dfceb-385289ee8b.zip b/.yarn/cache/@babel-helpers-npm-7.22.3-0e890dfceb-385289ee8b.zip new file mode 100644 index 0000000..e9a6364 Binary files /dev/null and b/.yarn/cache/@babel-helpers-npm-7.22.3-0e890dfceb-385289ee8b.zip differ diff --git a/.yarn/cache/@babel-highlight-npm-7.18.6-9d35ad2e27-92d8ee6154.zip b/.yarn/cache/@babel-highlight-npm-7.18.6-9d35ad2e27-92d8ee6154.zip new file mode 100644 index 0000000..c3ee71d Binary files /dev/null and b/.yarn/cache/@babel-highlight-npm-7.18.6-9d35ad2e27-92d8ee6154.zip differ diff --git a/.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip b/.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip new file mode 100644 index 0000000..98b1f16 Binary files /dev/null and b/.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip differ diff --git a/.yarn/cache/@babel-plugin-transform-react-jsx-self-npm-7.21.0-9f64a88644-696f74c04a.zip b/.yarn/cache/@babel-plugin-transform-react-jsx-self-npm-7.21.0-9f64a88644-696f74c04a.zip new file mode 100644 index 0000000..6f802b0 Binary files /dev/null and b/.yarn/cache/@babel-plugin-transform-react-jsx-self-npm-7.21.0-9f64a88644-696f74c04a.zip differ diff --git a/.yarn/cache/@babel-plugin-transform-react-jsx-source-npm-7.19.6-f7b8cba2b3-1e9e29a4ef.zip b/.yarn/cache/@babel-plugin-transform-react-jsx-source-npm-7.19.6-f7b8cba2b3-1e9e29a4ef.zip new file mode 100644 index 0000000..475edd3 Binary files /dev/null and b/.yarn/cache/@babel-plugin-transform-react-jsx-source-npm-7.19.6-f7b8cba2b3-1e9e29a4ef.zip differ diff --git a/.yarn/cache/@babel-template-npm-7.21.9-4016aa4c60-6ec2c60d4d.zip b/.yarn/cache/@babel-template-npm-7.21.9-4016aa4c60-6ec2c60d4d.zip new file mode 100644 index 0000000..b0cc89e Binary files /dev/null and b/.yarn/cache/@babel-template-npm-7.21.9-4016aa4c60-6ec2c60d4d.zip differ diff --git a/.yarn/cache/@babel-traverse-npm-7.22.4-7501c8e8f8-9560ae2209.zip b/.yarn/cache/@babel-traverse-npm-7.22.4-7501c8e8f8-9560ae2209.zip new file mode 100644 index 0000000..3f1835e Binary files /dev/null and b/.yarn/cache/@babel-traverse-npm-7.22.4-7501c8e8f8-9560ae2209.zip differ diff --git a/.yarn/cache/@babel-types-npm-7.22.4-7dadf03e9d-ffe36bb4f4.zip b/.yarn/cache/@babel-types-npm-7.22.4-7dadf03e9d-ffe36bb4f4.zip new file mode 100644 index 0000000..68d88d4 Binary files /dev/null and b/.yarn/cache/@babel-types-npm-7.22.4-7dadf03e9d-ffe36bb4f4.zip differ diff --git a/.yarn/cache/@babel-types-npm-7.22.5-d1e4264bef-c13a9c1dc7.zip b/.yarn/cache/@babel-types-npm-7.22.5-d1e4264bef-c13a9c1dc7.zip new file mode 100644 index 0000000..3676b26 Binary files /dev/null and b/.yarn/cache/@babel-types-npm-7.22.5-d1e4264bef-c13a9c1dc7.zip differ diff --git a/.yarn/cache/@esbuild-win32-x64-npm-0.17.19-619fae7839-8.zip b/.yarn/cache/@esbuild-win32-x64-npm-0.17.19-619fae7839-8.zip new file mode 100644 index 0000000..f381b4d Binary files /dev/null and b/.yarn/cache/@esbuild-win32-x64-npm-0.17.19-619fae7839-8.zip differ diff --git a/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip b/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip new file mode 100644 index 0000000..4e48357 Binary files /dev/null and b/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip differ diff --git a/.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip b/.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip new file mode 100644 index 0000000..0f8176b Binary files /dev/null and b/.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip differ diff --git a/.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip b/.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip new file mode 100644 index 0000000..87252c4 Binary files /dev/null and b/.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip differ diff --git a/.yarn/cache/@eslint-js-npm-8.41.0-7597c33d09-af013d70fe.zip b/.yarn/cache/@eslint-js-npm-8.41.0-7597c33d09-af013d70fe.zip new file mode 100644 index 0000000..8bf2b7a Binary files /dev/null and b/.yarn/cache/@eslint-js-npm-8.41.0-7597c33d09-af013d70fe.zip differ diff --git a/.yarn/cache/@ethersproject-abi-npm-5.7.0-fdd80304df-bc6962bb6c.zip b/.yarn/cache/@ethersproject-abi-npm-5.7.0-fdd80304df-bc6962bb6c.zip new file mode 100644 index 0000000..6797a1a Binary files /dev/null and b/.yarn/cache/@ethersproject-abi-npm-5.7.0-fdd80304df-bc6962bb6c.zip differ diff --git a/.yarn/cache/@ethersproject-abstract-provider-npm-5.7.0-f94be4e0b0-74cf469624.zip b/.yarn/cache/@ethersproject-abstract-provider-npm-5.7.0-f94be4e0b0-74cf469624.zip new file mode 100644 index 0000000..5f6e6be Binary files /dev/null and b/.yarn/cache/@ethersproject-abstract-provider-npm-5.7.0-f94be4e0b0-74cf469624.zip differ diff --git a/.yarn/cache/@ethersproject-abstract-signer-npm-5.7.0-f61d0a970e-a823dac9cf.zip b/.yarn/cache/@ethersproject-abstract-signer-npm-5.7.0-f61d0a970e-a823dac9cf.zip new file mode 100644 index 0000000..48d0a63 Binary files /dev/null and b/.yarn/cache/@ethersproject-abstract-signer-npm-5.7.0-f61d0a970e-a823dac9cf.zip differ diff --git a/.yarn/cache/@ethersproject-address-npm-5.7.0-d27f4f2b80-64ea5ebea9.zip b/.yarn/cache/@ethersproject-address-npm-5.7.0-d27f4f2b80-64ea5ebea9.zip new file mode 100644 index 0000000..0c3f884 Binary files /dev/null and b/.yarn/cache/@ethersproject-address-npm-5.7.0-d27f4f2b80-64ea5ebea9.zip differ diff --git a/.yarn/cache/@ethersproject-base64-npm-5.7.0-ddf99521e0-7dd5d734d6.zip b/.yarn/cache/@ethersproject-base64-npm-5.7.0-ddf99521e0-7dd5d734d6.zip new file mode 100644 index 0000000..10333b4 Binary files /dev/null and b/.yarn/cache/@ethersproject-base64-npm-5.7.0-ddf99521e0-7dd5d734d6.zip differ diff --git a/.yarn/cache/@ethersproject-basex-npm-5.7.0-78ae312582-326087b7e1.zip b/.yarn/cache/@ethersproject-basex-npm-5.7.0-78ae312582-326087b7e1.zip new file mode 100644 index 0000000..4347c57 Binary files /dev/null and b/.yarn/cache/@ethersproject-basex-npm-5.7.0-78ae312582-326087b7e1.zip differ diff --git a/.yarn/cache/@ethersproject-bignumber-npm-5.7.0-cd761880ac-8c9a134b76.zip b/.yarn/cache/@ethersproject-bignumber-npm-5.7.0-cd761880ac-8c9a134b76.zip new file mode 100644 index 0000000..e75892d Binary files /dev/null and b/.yarn/cache/@ethersproject-bignumber-npm-5.7.0-cd761880ac-8c9a134b76.zip differ diff --git a/.yarn/cache/@ethersproject-bytes-npm-5.7.0-4454fe4cb0-66ad365cea.zip b/.yarn/cache/@ethersproject-bytes-npm-5.7.0-4454fe4cb0-66ad365cea.zip new file mode 100644 index 0000000..1884b9d Binary files /dev/null and b/.yarn/cache/@ethersproject-bytes-npm-5.7.0-4454fe4cb0-66ad365cea.zip differ diff --git a/.yarn/cache/@ethersproject-constants-npm-5.7.0-24294ccfde-6d4b135574.zip b/.yarn/cache/@ethersproject-constants-npm-5.7.0-24294ccfde-6d4b135574.zip new file mode 100644 index 0000000..353ac43 Binary files /dev/null and b/.yarn/cache/@ethersproject-constants-npm-5.7.0-24294ccfde-6d4b135574.zip differ diff --git a/.yarn/cache/@ethersproject-contracts-npm-5.7.0-4d3730222f-6ccf1121cb.zip b/.yarn/cache/@ethersproject-contracts-npm-5.7.0-4d3730222f-6ccf1121cb.zip new file mode 100644 index 0000000..c6011da Binary files /dev/null and b/.yarn/cache/@ethersproject-contracts-npm-5.7.0-4d3730222f-6ccf1121cb.zip differ diff --git a/.yarn/cache/@ethersproject-hash-npm-5.7.0-7c00366b4e-6e9fa8d14e.zip b/.yarn/cache/@ethersproject-hash-npm-5.7.0-7c00366b4e-6e9fa8d14e.zip new file mode 100644 index 0000000..fc23062 Binary files /dev/null and b/.yarn/cache/@ethersproject-hash-npm-5.7.0-7c00366b4e-6e9fa8d14e.zip differ diff --git a/.yarn/cache/@ethersproject-hdnode-npm-5.7.0-c6d5c6aa1c-bfe5ca2d89.zip b/.yarn/cache/@ethersproject-hdnode-npm-5.7.0-c6d5c6aa1c-bfe5ca2d89.zip new file mode 100644 index 0000000..e07a54f Binary files /dev/null and b/.yarn/cache/@ethersproject-hdnode-npm-5.7.0-c6d5c6aa1c-bfe5ca2d89.zip differ diff --git a/.yarn/cache/@ethersproject-json-wallets-npm-5.7.0-f73c4734e5-f583458d22.zip b/.yarn/cache/@ethersproject-json-wallets-npm-5.7.0-f73c4734e5-f583458d22.zip new file mode 100644 index 0000000..7333ea5 Binary files /dev/null and b/.yarn/cache/@ethersproject-json-wallets-npm-5.7.0-f73c4734e5-f583458d22.zip differ diff --git a/.yarn/cache/@ethersproject-keccak256-npm-5.7.0-be838547c4-ff70950d82.zip b/.yarn/cache/@ethersproject-keccak256-npm-5.7.0-be838547c4-ff70950d82.zip new file mode 100644 index 0000000..6c2ea95 Binary files /dev/null and b/.yarn/cache/@ethersproject-keccak256-npm-5.7.0-be838547c4-ff70950d82.zip differ diff --git a/.yarn/cache/@ethersproject-logger-npm-5.7.0-63fe9c3d29-075ab2f605.zip b/.yarn/cache/@ethersproject-logger-npm-5.7.0-63fe9c3d29-075ab2f605.zip new file mode 100644 index 0000000..40c90b4 Binary files /dev/null and b/.yarn/cache/@ethersproject-logger-npm-5.7.0-63fe9c3d29-075ab2f605.zip differ diff --git a/.yarn/cache/@ethersproject-networks-npm-5.7.1-eb06956095-0339f31230.zip b/.yarn/cache/@ethersproject-networks-npm-5.7.1-eb06956095-0339f31230.zip new file mode 100644 index 0000000..868d79a Binary files /dev/null and b/.yarn/cache/@ethersproject-networks-npm-5.7.1-eb06956095-0339f31230.zip differ diff --git a/.yarn/cache/@ethersproject-pbkdf2-npm-5.7.0-5b8e51d4b9-b895adb9e3.zip b/.yarn/cache/@ethersproject-pbkdf2-npm-5.7.0-5b8e51d4b9-b895adb9e3.zip new file mode 100644 index 0000000..fd74423 Binary files /dev/null and b/.yarn/cache/@ethersproject-pbkdf2-npm-5.7.0-5b8e51d4b9-b895adb9e3.zip differ diff --git a/.yarn/cache/@ethersproject-properties-npm-5.7.0-00a99c747b-6ab0ccf0c3.zip b/.yarn/cache/@ethersproject-properties-npm-5.7.0-00a99c747b-6ab0ccf0c3.zip new file mode 100644 index 0000000..ba17954 Binary files /dev/null and b/.yarn/cache/@ethersproject-properties-npm-5.7.0-00a99c747b-6ab0ccf0c3.zip differ diff --git a/.yarn/cache/@ethersproject-providers-npm-5.7.2-88293ff29f-1754c731a5.zip b/.yarn/cache/@ethersproject-providers-npm-5.7.2-88293ff29f-1754c731a5.zip new file mode 100644 index 0000000..8e20540 Binary files /dev/null and b/.yarn/cache/@ethersproject-providers-npm-5.7.2-88293ff29f-1754c731a5.zip differ diff --git a/.yarn/cache/@ethersproject-random-npm-5.7.0-a0466f53f9-017829c91c.zip b/.yarn/cache/@ethersproject-random-npm-5.7.0-a0466f53f9-017829c91c.zip new file mode 100644 index 0000000..a779af0 Binary files /dev/null and b/.yarn/cache/@ethersproject-random-npm-5.7.0-a0466f53f9-017829c91c.zip differ diff --git a/.yarn/cache/@ethersproject-rlp-npm-5.7.0-a6c9e763ff-bce165b0f7.zip b/.yarn/cache/@ethersproject-rlp-npm-5.7.0-a6c9e763ff-bce165b0f7.zip new file mode 100644 index 0000000..35352b7 Binary files /dev/null and b/.yarn/cache/@ethersproject-rlp-npm-5.7.0-a6c9e763ff-bce165b0f7.zip differ diff --git a/.yarn/cache/@ethersproject-sha2-npm-5.7.0-569c8bdff0-09321057c0.zip b/.yarn/cache/@ethersproject-sha2-npm-5.7.0-569c8bdff0-09321057c0.zip new file mode 100644 index 0000000..a83f557 Binary files /dev/null and b/.yarn/cache/@ethersproject-sha2-npm-5.7.0-569c8bdff0-09321057c0.zip differ diff --git a/.yarn/cache/@ethersproject-signing-key-npm-5.7.0-51cfa7708e-8f8de09b0a.zip b/.yarn/cache/@ethersproject-signing-key-npm-5.7.0-51cfa7708e-8f8de09b0a.zip new file mode 100644 index 0000000..3e17f2e Binary files /dev/null and b/.yarn/cache/@ethersproject-signing-key-npm-5.7.0-51cfa7708e-8f8de09b0a.zip differ diff --git a/.yarn/cache/@ethersproject-solidity-npm-5.7.0-75baa4e133-9a02f37f80.zip b/.yarn/cache/@ethersproject-solidity-npm-5.7.0-75baa4e133-9a02f37f80.zip new file mode 100644 index 0000000..8ec38f5 Binary files /dev/null and b/.yarn/cache/@ethersproject-solidity-npm-5.7.0-75baa4e133-9a02f37f80.zip differ diff --git a/.yarn/cache/@ethersproject-strings-npm-5.7.0-efcb671e56-5ff78693ae.zip b/.yarn/cache/@ethersproject-strings-npm-5.7.0-efcb671e56-5ff78693ae.zip new file mode 100644 index 0000000..e2d4c2f Binary files /dev/null and b/.yarn/cache/@ethersproject-strings-npm-5.7.0-efcb671e56-5ff78693ae.zip differ diff --git a/.yarn/cache/@ethersproject-transactions-npm-5.7.0-9a32c9e61a-a31b71996d.zip b/.yarn/cache/@ethersproject-transactions-npm-5.7.0-9a32c9e61a-a31b71996d.zip new file mode 100644 index 0000000..7104119 Binary files /dev/null and b/.yarn/cache/@ethersproject-transactions-npm-5.7.0-9a32c9e61a-a31b71996d.zip differ diff --git a/.yarn/cache/@ethersproject-units-npm-5.7.0-1c1f5ec7ca-304714f848.zip b/.yarn/cache/@ethersproject-units-npm-5.7.0-1c1f5ec7ca-304714f848.zip new file mode 100644 index 0000000..42736d4 Binary files /dev/null and b/.yarn/cache/@ethersproject-units-npm-5.7.0-1c1f5ec7ca-304714f848.zip differ diff --git a/.yarn/cache/@ethersproject-wallet-npm-5.7.0-f553c726b7-a4009bf733.zip b/.yarn/cache/@ethersproject-wallet-npm-5.7.0-f553c726b7-a4009bf733.zip new file mode 100644 index 0000000..937526b Binary files /dev/null and b/.yarn/cache/@ethersproject-wallet-npm-5.7.0-f553c726b7-a4009bf733.zip differ diff --git a/.yarn/cache/@ethersproject-web-npm-5.7.1-dabb653410-7028c47103.zip b/.yarn/cache/@ethersproject-web-npm-5.7.1-dabb653410-7028c47103.zip new file mode 100644 index 0000000..e15cf65 Binary files /dev/null and b/.yarn/cache/@ethersproject-web-npm-5.7.1-dabb653410-7028c47103.zip differ diff --git a/.yarn/cache/@ethersproject-wordlists-npm-5.7.0-00d314bfdb-30eb6eb073.zip b/.yarn/cache/@ethersproject-wordlists-npm-5.7.0-00d314bfdb-30eb6eb073.zip new file mode 100644 index 0000000..5486cb1 Binary files /dev/null and b/.yarn/cache/@ethersproject-wordlists-npm-5.7.0-00d314bfdb-30eb6eb073.zip differ diff --git a/.yarn/cache/@humanwhocodes-config-array-npm-0.11.9-51a777b6df-8fd460f449.zip b/.yarn/cache/@humanwhocodes-config-array-npm-0.11.9-51a777b6df-8fd460f449.zip new file mode 100644 index 0000000..43fe531 Binary files /dev/null and b/.yarn/cache/@humanwhocodes-config-array-npm-0.11.9-51a777b6df-8fd460f449.zip differ diff --git a/.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-0fd22007db.zip b/.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-0fd22007db.zip new file mode 100644 index 0000000..7adb1e9 Binary files /dev/null and b/.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-0fd22007db.zip differ diff --git a/.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip b/.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip new file mode 100644 index 0000000..2b79104 Binary files /dev/null and b/.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip differ diff --git a/.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip b/.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip new file mode 100644 index 0000000..d19176f Binary files /dev/null and b/.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip differ diff --git a/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-4a74944bd3.zip b/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-4a74944bd3.zip new file mode 100644 index 0000000..5f0aef7 Binary files /dev/null and b/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-4a74944bd3.zip differ diff --git a/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip b/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip new file mode 100644 index 0000000..97e857d Binary files /dev/null and b/.yarn/cache/@jridgewell-resolve-uri-npm-3.1.0-6ff2351e61-b5ceaaf9a1.zip differ diff --git a/.yarn/cache/@jridgewell-set-array-npm-1.1.2-45b82d7fb6-69a84d5980.zip b/.yarn/cache/@jridgewell-set-array-npm-1.1.2-45b82d7fb6-69a84d5980.zip new file mode 100644 index 0000000..3b901fc Binary files /dev/null and b/.yarn/cache/@jridgewell-set-array-npm-1.1.2-45b82d7fb6-69a84d5980.zip differ diff --git a/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.14-f5f0630788-61100637b6.zip b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.14-f5f0630788-61100637b6.zip new file mode 100644 index 0000000..d8703c8 Binary files /dev/null and b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.14-f5f0630788-61100637b6.zip differ diff --git a/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip new file mode 100644 index 0000000..402f52b Binary files /dev/null and b/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip differ diff --git a/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.18-cd96571385-0572669f85.zip b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.18-cd96571385-0572669f85.zip new file mode 100644 index 0000000..0247c80 Binary files /dev/null and b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.18-cd96571385-0572669f85.zip differ diff --git a/.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-a970d595bd.zip b/.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-a970d595bd.zip new file mode 100644 index 0000000..99f6bc1 Binary files /dev/null and b/.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-a970d595bd.zip differ diff --git a/.yarn/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-012480b5ca.zip b/.yarn/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-012480b5ca.zip new file mode 100644 index 0000000..e86d01e Binary files /dev/null and b/.yarn/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-012480b5ca.zip differ diff --git a/.yarn/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-190c643f15.zip b/.yarn/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-190c643f15.zip new file mode 100644 index 0000000..1750003 Binary files /dev/null and b/.yarn/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-190c643f15.zip differ diff --git a/.yarn/cache/@npmcli-fs-npm-3.1.0-0844a57978-a50a6818de.zip b/.yarn/cache/@npmcli-fs-npm-3.1.0-0844a57978-a50a6818de.zip new file mode 100644 index 0000000..2fca778 Binary files /dev/null and b/.yarn/cache/@npmcli-fs-npm-3.1.0-0844a57978-a50a6818de.zip differ diff --git a/.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip b/.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip new file mode 100644 index 0000000..96f576f Binary files /dev/null and b/.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip differ diff --git a/.yarn/cache/@remix-run-router-npm-1.6.2-8dfac997df-5969d313bf.zip b/.yarn/cache/@remix-run-router-npm-1.6.2-8dfac997df-5969d313bf.zip new file mode 100644 index 0000000..a55bbb4 Binary files /dev/null and b/.yarn/cache/@remix-run-router-npm-1.6.2-8dfac997df-5969d313bf.zip differ diff --git a/.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip b/.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip new file mode 100644 index 0000000..d240a82 Binary files /dev/null and b/.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip differ diff --git a/.yarn/cache/@types-prop-types-npm-15.7.5-2aa48aa177-5b43b8b154.zip b/.yarn/cache/@types-prop-types-npm-15.7.5-2aa48aa177-5b43b8b154.zip new file mode 100644 index 0000000..38bb2b4 Binary files /dev/null and b/.yarn/cache/@types-prop-types-npm-15.7.5-2aa48aa177-5b43b8b154.zip differ diff --git a/.yarn/cache/@types-react-dom-npm-18.2.4-5d62ac2096-8301f35cf1.zip b/.yarn/cache/@types-react-dom-npm-18.2.4-5d62ac2096-8301f35cf1.zip new file mode 100644 index 0000000..682bba8 Binary files /dev/null and b/.yarn/cache/@types-react-dom-npm-18.2.4-5d62ac2096-8301f35cf1.zip differ diff --git a/.yarn/cache/@types-react-npm-18.2.7-1d4a6858d6-caa5da4cf9.zip b/.yarn/cache/@types-react-npm-18.2.7-1d4a6858d6-caa5da4cf9.zip new file mode 100644 index 0000000..6ec2f9f Binary files /dev/null and b/.yarn/cache/@types-react-npm-18.2.7-1d4a6858d6-caa5da4cf9.zip differ diff --git a/.yarn/cache/@types-scheduler-npm-0.16.3-887bfc0086-2b0aec39c2.zip b/.yarn/cache/@types-scheduler-npm-0.16.3-887bfc0086-2b0aec39c2.zip new file mode 100644 index 0000000..5f4a303 Binary files /dev/null and b/.yarn/cache/@types-scheduler-npm-0.16.3-887bfc0086-2b0aec39c2.zip differ diff --git a/.yarn/cache/@vitejs-plugin-react-npm-4.0.0-e0a2ed08ce-575298f665.zip b/.yarn/cache/@vitejs-plugin-react-npm-4.0.0-e0a2ed08ce-575298f665.zip new file mode 100644 index 0000000..4357310 Binary files /dev/null and b/.yarn/cache/@vitejs-plugin-react-npm-4.0.0-e0a2ed08ce-575298f665.zip differ diff --git a/.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip b/.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip new file mode 100644 index 0000000..a8b40a5 Binary files /dev/null and b/.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip differ diff --git a/.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip b/.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip new file mode 100644 index 0000000..786b9ec Binary files /dev/null and b/.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip differ diff --git a/.yarn/cache/acorn-npm-8.8.2-9d518fd7d3-f790b99a1b.zip b/.yarn/cache/acorn-npm-8.8.2-9d518fd7d3-f790b99a1b.zip new file mode 100644 index 0000000..c0977ff Binary files /dev/null and b/.yarn/cache/acorn-npm-8.8.2-9d518fd7d3-f790b99a1b.zip differ diff --git a/.yarn/cache/aes-js-npm-3.0.0-fdf135c6be-251e26d533.zip b/.yarn/cache/aes-js-npm-3.0.0-fdf135c6be-251e26d533.zip new file mode 100644 index 0000000..b77d237 Binary files /dev/null and b/.yarn/cache/aes-js-npm-3.0.0-fdf135c6be-251e26d533.zip differ diff --git a/.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip b/.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip new file mode 100644 index 0000000..c7d271a Binary files /dev/null and b/.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip differ diff --git a/.yarn/cache/agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip b/.yarn/cache/agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip new file mode 100644 index 0000000..2a17c8f Binary files /dev/null and b/.yarn/cache/agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip differ diff --git a/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip b/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip new file mode 100644 index 0000000..7db0127 Binary files /dev/null and b/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip differ diff --git a/.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip b/.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip new file mode 100644 index 0000000..16973dd Binary files /dev/null and b/.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip differ diff --git a/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip b/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip new file mode 100644 index 0000000..fffc17a Binary files /dev/null and b/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip differ diff --git a/.yarn/cache/ansi-regex-npm-6.0.1-8d663a607d-1ff8b7667c.zip b/.yarn/cache/ansi-regex-npm-6.0.1-8d663a607d-1ff8b7667c.zip new file mode 100644 index 0000000..088e552 Binary files /dev/null and b/.yarn/cache/ansi-regex-npm-6.0.1-8d663a607d-1ff8b7667c.zip differ diff --git a/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip b/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip new file mode 100644 index 0000000..4ffdcc4 Binary files /dev/null and b/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip differ diff --git a/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip b/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip new file mode 100644 index 0000000..a18e3e6 Binary files /dev/null and b/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip differ diff --git a/.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-ef940f2f0c.zip b/.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-ef940f2f0c.zip new file mode 100644 index 0000000..aa1bdfd Binary files /dev/null and b/.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-ef940f2f0c.zip differ diff --git a/.yarn/cache/any-promise-npm-1.3.0-f34eeaa7e7-0ee8a9bdbe.zip b/.yarn/cache/any-promise-npm-1.3.0-f34eeaa7e7-0ee8a9bdbe.zip new file mode 100644 index 0000000..2f709d5 Binary files /dev/null and b/.yarn/cache/any-promise-npm-1.3.0-f34eeaa7e7-0ee8a9bdbe.zip differ diff --git a/.yarn/cache/anymatch-npm-3.1.3-bc81d103b1-3e044fd6d1.zip b/.yarn/cache/anymatch-npm-3.1.3-bc81d103b1-3e044fd6d1.zip new file mode 100644 index 0000000..095ff20 Binary files /dev/null and b/.yarn/cache/anymatch-npm-3.1.3-bc81d103b1-3e044fd6d1.zip differ diff --git a/.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip b/.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip new file mode 100644 index 0000000..6b14888 Binary files /dev/null and b/.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip differ diff --git a/.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip b/.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip new file mode 100644 index 0000000..1f0af50 Binary files /dev/null and b/.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip differ diff --git a/.yarn/cache/arg-npm-5.0.2-2f5805a547-6c69ada1a9.zip b/.yarn/cache/arg-npm-5.0.2-2f5805a547-6c69ada1a9.zip new file mode 100644 index 0000000..1ffd22e Binary files /dev/null and b/.yarn/cache/arg-npm-5.0.2-2f5805a547-6c69ada1a9.zip differ diff --git a/.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip b/.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip new file mode 100644 index 0000000..26a9ce4 Binary files /dev/null and b/.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip differ diff --git a/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip b/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip new file mode 100644 index 0000000..d2d609a Binary files /dev/null and b/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip differ diff --git a/.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip b/.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip new file mode 100644 index 0000000..a108355 Binary files /dev/null and b/.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip differ diff --git a/.yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip b/.yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip new file mode 100644 index 0000000..a791d28 Binary files /dev/null and b/.yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip differ diff --git a/.yarn/cache/array.prototype.tosorted-npm-1.1.1-1be94ad4a7-7923324a67.zip b/.yarn/cache/array.prototype.tosorted-npm-1.1.1-1be94ad4a7-7923324a67.zip new file mode 100644 index 0000000..00819cb Binary files /dev/null and b/.yarn/cache/array.prototype.tosorted-npm-1.1.1-1be94ad4a7-7923324a67.zip differ diff --git a/.yarn/cache/autoprefixer-npm-10.4.14-1e0b8c34fb-e9f18e664a.zip b/.yarn/cache/autoprefixer-npm-10.4.14-1e0b8c34fb-e9f18e664a.zip new file mode 100644 index 0000000..6acb2be Binary files /dev/null and b/.yarn/cache/autoprefixer-npm-10.4.14-1e0b8c34fb-e9f18e664a.zip differ diff --git a/.yarn/cache/available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip b/.yarn/cache/available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip new file mode 100644 index 0000000..62f8601 Binary files /dev/null and b/.yarn/cache/available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip differ diff --git a/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip b/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip new file mode 100644 index 0000000..0693b6d Binary files /dev/null and b/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip differ diff --git a/.yarn/cache/bech32-npm-1.1.4-87b69922f7-0e98db6191.zip b/.yarn/cache/bech32-npm-1.1.4-87b69922f7-0e98db6191.zip new file mode 100644 index 0000000..833ecc7 Binary files /dev/null and b/.yarn/cache/bech32-npm-1.1.4-87b69922f7-0e98db6191.zip differ diff --git a/.yarn/cache/binary-extensions-npm-2.2.0-180c33fec7-ccd267956c.zip b/.yarn/cache/binary-extensions-npm-2.2.0-180c33fec7-ccd267956c.zip new file mode 100644 index 0000000..2ac750c Binary files /dev/null and b/.yarn/cache/binary-extensions-npm-2.2.0-180c33fec7-ccd267956c.zip differ diff --git a/.yarn/cache/bn.js-npm-4.12.0-3ec6c884f6-39afb4f15f.zip b/.yarn/cache/bn.js-npm-4.12.0-3ec6c884f6-39afb4f15f.zip new file mode 100644 index 0000000..b8e7806 Binary files /dev/null and b/.yarn/cache/bn.js-npm-4.12.0-3ec6c884f6-39afb4f15f.zip differ diff --git a/.yarn/cache/bn.js-npm-5.2.1-dc952b1965-3dd8c8d380.zip b/.yarn/cache/bn.js-npm-5.2.1-dc952b1965-3dd8c8d380.zip new file mode 100644 index 0000000..3a51018 Binary files /dev/null and b/.yarn/cache/bn.js-npm-5.2.1-dc952b1965-3dd8c8d380.zip differ diff --git a/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip b/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip new file mode 100644 index 0000000..9deab64 Binary files /dev/null and b/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip differ diff --git a/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip b/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip new file mode 100644 index 0000000..11d5bd0 Binary files /dev/null and b/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip differ diff --git a/.yarn/cache/braces-npm-3.0.2-782240b28a-e2a8e769a8.zip b/.yarn/cache/braces-npm-3.0.2-782240b28a-e2a8e769a8.zip new file mode 100644 index 0000000..92998e3 Binary files /dev/null and b/.yarn/cache/braces-npm-3.0.2-782240b28a-e2a8e769a8.zip differ diff --git a/.yarn/cache/brorand-npm-1.1.0-ea86634c4b-8a05c9f3c4.zip b/.yarn/cache/brorand-npm-1.1.0-ea86634c4b-8a05c9f3c4.zip new file mode 100644 index 0000000..d238411 Binary files /dev/null and b/.yarn/cache/brorand-npm-1.1.0-ea86634c4b-8a05c9f3c4.zip differ diff --git a/.yarn/cache/browserslist-npm-4.21.7-36caf91554-3d0d025e6d.zip b/.yarn/cache/browserslist-npm-4.21.7-36caf91554-3d0d025e6d.zip new file mode 100644 index 0000000..baf9547 Binary files /dev/null and b/.yarn/cache/browserslist-npm-4.21.7-36caf91554-3d0d025e6d.zip differ diff --git a/.yarn/cache/cacache-npm-17.1.3-f75f768a29-385756781e.zip b/.yarn/cache/cacache-npm-17.1.3-f75f768a29-385756781e.zip new file mode 100644 index 0000000..b4de6cc Binary files /dev/null and b/.yarn/cache/cacache-npm-17.1.3-f75f768a29-385756781e.zip differ diff --git a/.yarn/cache/call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip b/.yarn/cache/call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip new file mode 100644 index 0000000..bff7528 Binary files /dev/null and b/.yarn/cache/call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip differ diff --git a/.yarn/cache/callsites-npm-3.1.0-268f989910-072d17b6ab.zip b/.yarn/cache/callsites-npm-3.1.0-268f989910-072d17b6ab.zip new file mode 100644 index 0000000..be6414c Binary files /dev/null and b/.yarn/cache/callsites-npm-3.1.0-268f989910-072d17b6ab.zip differ diff --git a/.yarn/cache/camelcase-css-npm-2.0.1-90d1b6df08-1cec2b3b3d.zip b/.yarn/cache/camelcase-css-npm-2.0.1-90d1b6df08-1cec2b3b3d.zip new file mode 100644 index 0000000..f2286f3 Binary files /dev/null and b/.yarn/cache/camelcase-css-npm-2.0.1-90d1b6df08-1cec2b3b3d.zip differ diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001492-90c5710f02-261869f910.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001492-90c5710f02-261869f910.zip new file mode 100644 index 0000000..9a5b345 Binary files /dev/null and b/.yarn/cache/caniuse-lite-npm-1.0.30001492-90c5710f02-261869f910.zip differ diff --git a/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip b/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip new file mode 100644 index 0000000..3f58a7b Binary files /dev/null and b/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip differ diff --git a/.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip b/.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip new file mode 100644 index 0000000..03d46b8 Binary files /dev/null and b/.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip differ diff --git a/.yarn/cache/chokidar-npm-3.5.3-c5f9b0a56a-b49fcde401.zip b/.yarn/cache/chokidar-npm-3.5.3-c5f9b0a56a-b49fcde401.zip new file mode 100644 index 0000000..f5261bc Binary files /dev/null and b/.yarn/cache/chokidar-npm-3.5.3-c5f9b0a56a-b49fcde401.zip differ diff --git a/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip b/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip new file mode 100644 index 0000000..e074b2f Binary files /dev/null and b/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip differ diff --git a/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip b/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip new file mode 100644 index 0000000..c510995 Binary files /dev/null and b/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip differ diff --git a/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip b/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip new file mode 100644 index 0000000..1b4c939 Binary files /dev/null and b/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip differ diff --git a/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip b/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip new file mode 100644 index 0000000..b3499ad Binary files /dev/null and b/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip differ diff --git a/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip b/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip new file mode 100644 index 0000000..f158de9 Binary files /dev/null and b/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip differ diff --git a/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip b/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip new file mode 100644 index 0000000..ce1ffc4 Binary files /dev/null and b/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip differ diff --git a/.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip b/.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip new file mode 100644 index 0000000..625a79f Binary files /dev/null and b/.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip differ diff --git a/.yarn/cache/commander-npm-4.1.1-22a0fe921b-d7b9913ff9.zip b/.yarn/cache/commander-npm-4.1.1-22a0fe921b-d7b9913ff9.zip new file mode 100644 index 0000000..0e48a7d Binary files /dev/null and b/.yarn/cache/commander-npm-4.1.1-22a0fe921b-d7b9913ff9.zip differ diff --git a/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip b/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip new file mode 100644 index 0000000..66b4c32 Binary files /dev/null and b/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip differ diff --git a/.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip b/.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip new file mode 100644 index 0000000..a1f2fe6 Binary files /dev/null and b/.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip differ diff --git a/.yarn/cache/convert-source-map-npm-1.9.0-e294555f4b-dc55a1f28d.zip b/.yarn/cache/convert-source-map-npm-1.9.0-e294555f4b-dc55a1f28d.zip new file mode 100644 index 0000000..409c344 Binary files /dev/null and b/.yarn/cache/convert-source-map-npm-1.9.0-e294555f4b-dc55a1f28d.zip differ diff --git a/.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip b/.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip new file mode 100644 index 0000000..9613e38 Binary files /dev/null and b/.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip differ diff --git a/.yarn/cache/cssesc-npm-3.0.0-15ec56f86f-f8c4ababff.zip b/.yarn/cache/cssesc-npm-3.0.0-15ec56f86f-f8c4ababff.zip new file mode 100644 index 0000000..ba053ed Binary files /dev/null and b/.yarn/cache/cssesc-npm-3.0.0-15ec56f86f-f8c4ababff.zip differ diff --git a/.yarn/cache/csstype-npm-3.1.2-cead7d99b2-e1a52e6c25.zip b/.yarn/cache/csstype-npm-3.1.2-cead7d99b2-e1a52e6c25.zip new file mode 100644 index 0000000..740042e Binary files /dev/null and b/.yarn/cache/csstype-npm-3.1.2-cead7d99b2-e1a52e6c25.zip differ diff --git a/.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip b/.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip new file mode 100644 index 0000000..d3a11d8 Binary files /dev/null and b/.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip differ diff --git a/.yarn/cache/deep-is-npm-0.1.4-88938b5a67-edb65dd0d7.zip b/.yarn/cache/deep-is-npm-0.1.4-88938b5a67-edb65dd0d7.zip new file mode 100644 index 0000000..2078a47 Binary files /dev/null and b/.yarn/cache/deep-is-npm-0.1.4-88938b5a67-edb65dd0d7.zip differ diff --git a/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip b/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip new file mode 100644 index 0000000..bcbfcf6 Binary files /dev/null and b/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip differ diff --git a/.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip b/.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip new file mode 100644 index 0000000..9921e5e Binary files /dev/null and b/.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip differ diff --git a/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip b/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip new file mode 100644 index 0000000..30053d1 Binary files /dev/null and b/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip differ diff --git a/.yarn/cache/didyoumean-npm-1.2.2-fd568ec571-d5d98719d5.zip b/.yarn/cache/didyoumean-npm-1.2.2-fd568ec571-d5d98719d5.zip new file mode 100644 index 0000000..c4ed417 Binary files /dev/null and b/.yarn/cache/didyoumean-npm-1.2.2-fd568ec571-d5d98719d5.zip differ diff --git a/.yarn/cache/dlv-npm-1.1.3-187c903a21-d7381bca22.zip b/.yarn/cache/dlv-npm-1.1.3-187c903a21-d7381bca22.zip new file mode 100644 index 0000000..882709b Binary files /dev/null and b/.yarn/cache/dlv-npm-1.1.3-187c903a21-d7381bca22.zip differ diff --git a/.yarn/cache/doctrine-npm-2.1.0-ac15d049b7-a45e277f7f.zip b/.yarn/cache/doctrine-npm-2.1.0-ac15d049b7-a45e277f7f.zip new file mode 100644 index 0000000..b85eaaf Binary files /dev/null and b/.yarn/cache/doctrine-npm-2.1.0-ac15d049b7-a45e277f7f.zip differ diff --git a/.yarn/cache/doctrine-npm-3.0.0-c6f1615f04-fd7673ca77.zip b/.yarn/cache/doctrine-npm-3.0.0-c6f1615f04-fd7673ca77.zip new file mode 100644 index 0000000..25e0903 Binary files /dev/null and b/.yarn/cache/doctrine-npm-3.0.0-c6f1615f04-fd7673ca77.zip differ diff --git a/.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip b/.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip new file mode 100644 index 0000000..1038599 Binary files /dev/null and b/.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip differ diff --git a/.yarn/cache/electron-to-chromium-npm-1.4.417-fc17354c11-a57b8ceee5.zip b/.yarn/cache/electron-to-chromium-npm-1.4.417-fc17354c11-a57b8ceee5.zip new file mode 100644 index 0000000..7cd6c85 Binary files /dev/null and b/.yarn/cache/electron-to-chromium-npm-1.4.417-fc17354c11-a57b8ceee5.zip differ diff --git a/.yarn/cache/elliptic-npm-6.5.4-0ca8204a86-d56d21fd04.zip b/.yarn/cache/elliptic-npm-6.5.4-0ca8204a86-d56d21fd04.zip new file mode 100644 index 0000000..be33454 Binary files /dev/null and b/.yarn/cache/elliptic-npm-6.5.4-0ca8204a86-d56d21fd04.zip differ diff --git a/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip b/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip new file mode 100644 index 0000000..d02d887 Binary files /dev/null and b/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip differ diff --git a/.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip b/.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip new file mode 100644 index 0000000..e6b0ab4 Binary files /dev/null and b/.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip differ diff --git a/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip b/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip new file mode 100644 index 0000000..202e931 Binary files /dev/null and b/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip differ diff --git a/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip b/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip new file mode 100644 index 0000000..5fecf17 Binary files /dev/null and b/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip differ diff --git a/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip b/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip new file mode 100644 index 0000000..3058584 Binary files /dev/null and b/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip differ diff --git a/.yarn/cache/es-abstract-npm-1.21.2-f4ebace1ab-037f55ee5e.zip b/.yarn/cache/es-abstract-npm-1.21.2-f4ebace1ab-037f55ee5e.zip new file mode 100644 index 0000000..c0767dd Binary files /dev/null and b/.yarn/cache/es-abstract-npm-1.21.2-f4ebace1ab-037f55ee5e.zip differ diff --git a/.yarn/cache/es-set-tostringtag-npm-2.0.1-c87b5de872-ec416a1294.zip b/.yarn/cache/es-set-tostringtag-npm-2.0.1-c87b5de872-ec416a1294.zip new file mode 100644 index 0000000..af638f1 Binary files /dev/null and b/.yarn/cache/es-set-tostringtag-npm-2.0.1-c87b5de872-ec416a1294.zip differ diff --git a/.yarn/cache/es-shim-unscopables-npm-1.0.0-06186593f1-83e95cadbb.zip b/.yarn/cache/es-shim-unscopables-npm-1.0.0-06186593f1-83e95cadbb.zip new file mode 100644 index 0000000..87e87a9 Binary files /dev/null and b/.yarn/cache/es-shim-unscopables-npm-1.0.0-06186593f1-83e95cadbb.zip differ diff --git a/.yarn/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip b/.yarn/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip new file mode 100644 index 0000000..c0bb5b0 Binary files /dev/null and b/.yarn/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip differ diff --git a/.yarn/cache/esbuild-npm-0.17.19-f690397756-ac11b1a5a6.zip b/.yarn/cache/esbuild-npm-0.17.19-f690397756-ac11b1a5a6.zip new file mode 100644 index 0000000..581e71a Binary files /dev/null and b/.yarn/cache/esbuild-npm-0.17.19-f690397756-ac11b1a5a6.zip differ diff --git a/.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip b/.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip new file mode 100644 index 0000000..88c57af Binary files /dev/null and b/.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip differ diff --git a/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip b/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip new file mode 100644 index 0000000..b7ea3be Binary files /dev/null and b/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip differ diff --git a/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-98b48897d9.zip b/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-98b48897d9.zip new file mode 100644 index 0000000..c23e416 Binary files /dev/null and b/.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-98b48897d9.zip differ diff --git a/.yarn/cache/eslint-npm-8.41.0-0e83e90d27-09979a6f84.zip b/.yarn/cache/eslint-npm-8.41.0-0e83e90d27-09979a6f84.zip new file mode 100644 index 0000000..dcdecc5 Binary files /dev/null and b/.yarn/cache/eslint-npm-8.41.0-0e83e90d27-09979a6f84.zip differ diff --git a/.yarn/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-23001801f1.zip b/.yarn/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-23001801f1.zip new file mode 100644 index 0000000..9a1a394 Binary files /dev/null and b/.yarn/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-23001801f1.zip differ diff --git a/.yarn/cache/eslint-plugin-react-npm-7.32.2-b8b92d1b99-2232b3b894.zip b/.yarn/cache/eslint-plugin-react-npm-7.32.2-b8b92d1b99-2232b3b894.zip new file mode 100644 index 0000000..3f2d6ff Binary files /dev/null and b/.yarn/cache/eslint-plugin-react-npm-7.32.2-b8b92d1b99-2232b3b894.zip differ diff --git a/.yarn/cache/eslint-plugin-react-refresh-npm-0.3.5-2389cfa4b4-8d44201968.zip b/.yarn/cache/eslint-plugin-react-refresh-npm-0.3.5-2389cfa4b4-8d44201968.zip new file mode 100644 index 0000000..683d6eb Binary files /dev/null and b/.yarn/cache/eslint-plugin-react-refresh-npm-0.3.5-2389cfa4b4-8d44201968.zip differ diff --git a/.yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip b/.yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip new file mode 100644 index 0000000..466323f Binary files /dev/null and b/.yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip differ diff --git a/.yarn/cache/eslint-visitor-keys-npm-3.4.1-a5d0a58208-f05121d868.zip b/.yarn/cache/eslint-visitor-keys-npm-3.4.1-a5d0a58208-f05121d868.zip new file mode 100644 index 0000000..e442ca3 Binary files /dev/null and b/.yarn/cache/eslint-visitor-keys-npm-3.4.1-a5d0a58208-f05121d868.zip differ diff --git a/.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip b/.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip new file mode 100644 index 0000000..4c6380f Binary files /dev/null and b/.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip differ diff --git a/.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip b/.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip new file mode 100644 index 0000000..6006b96 Binary files /dev/null and b/.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip differ diff --git a/.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-ebc17b1a33.zip b/.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-ebc17b1a33.zip new file mode 100644 index 0000000..97e67b4 Binary files /dev/null and b/.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-ebc17b1a33.zip differ diff --git a/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip b/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip new file mode 100644 index 0000000..eb7c3cc Binary files /dev/null and b/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip differ diff --git a/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip b/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip new file mode 100644 index 0000000..c163c32 Binary files /dev/null and b/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip differ diff --git a/.yarn/cache/ethers-npm-5.7.2-eba7d781ee-b7c08cf3e2.zip b/.yarn/cache/ethers-npm-5.7.2-eba7d781ee-b7c08cf3e2.zip new file mode 100644 index 0000000..b53127e Binary files /dev/null and b/.yarn/cache/ethers-npm-5.7.2-eba7d781ee-b7c08cf3e2.zip differ diff --git a/.yarn/cache/exponential-backoff-npm-3.1.1-04df458b30-3d21519a4f.zip b/.yarn/cache/exponential-backoff-npm-3.1.1-04df458b30-3d21519a4f.zip new file mode 100644 index 0000000..ea4828a Binary files /dev/null and b/.yarn/cache/exponential-backoff-npm-3.1.1-04df458b30-3d21519a4f.zip differ diff --git a/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip b/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip new file mode 100644 index 0000000..c060089 Binary files /dev/null and b/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip differ diff --git a/.yarn/cache/fast-glob-npm-3.2.12-162763bbae-0b1990f6ce.zip b/.yarn/cache/fast-glob-npm-3.2.12-162763bbae-0b1990f6ce.zip new file mode 100644 index 0000000..dd13e75 Binary files /dev/null and b/.yarn/cache/fast-glob-npm-3.2.12-162763bbae-0b1990f6ce.zip differ diff --git a/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip b/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip new file mode 100644 index 0000000..737d476 Binary files /dev/null and b/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip differ diff --git a/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-92cfec0a8d.zip b/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-92cfec0a8d.zip new file mode 100644 index 0000000..ffb76eb Binary files /dev/null and b/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-92cfec0a8d.zip differ diff --git a/.yarn/cache/fastq-npm-1.15.0-1013f6514e-0170e6bfcd.zip b/.yarn/cache/fastq-npm-1.15.0-1013f6514e-0170e6bfcd.zip new file mode 100644 index 0000000..fd84f16 Binary files /dev/null and b/.yarn/cache/fastq-npm-1.15.0-1013f6514e-0170e6bfcd.zip differ diff --git a/.yarn/cache/file-entry-cache-npm-6.0.1-31965cf0af-f49701feaa.zip b/.yarn/cache/file-entry-cache-npm-6.0.1-31965cf0af-f49701feaa.zip new file mode 100644 index 0000000..3748d0b Binary files /dev/null and b/.yarn/cache/file-entry-cache-npm-6.0.1-31965cf0af-f49701feaa.zip differ diff --git a/.yarn/cache/fill-range-npm-7.0.1-b8b1817caa-cc283f4e65.zip b/.yarn/cache/fill-range-npm-7.0.1-b8b1817caa-cc283f4e65.zip new file mode 100644 index 0000000..1da4a36 Binary files /dev/null and b/.yarn/cache/fill-range-npm-7.0.1-b8b1817caa-cc283f4e65.zip differ diff --git a/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip b/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip new file mode 100644 index 0000000..034f3a0 Binary files /dev/null and b/.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip differ diff --git a/.yarn/cache/flat-cache-npm-3.0.4-ee77e5911e-4fdd10ecbc.zip b/.yarn/cache/flat-cache-npm-3.0.4-ee77e5911e-4fdd10ecbc.zip new file mode 100644 index 0000000..adabb73 Binary files /dev/null and b/.yarn/cache/flat-cache-npm-3.0.4-ee77e5911e-4fdd10ecbc.zip differ diff --git a/.yarn/cache/flatted-npm-3.2.7-0da10b7c56-427633049d.zip b/.yarn/cache/flatted-npm-3.2.7-0da10b7c56-427633049d.zip new file mode 100644 index 0000000..b5d1ef6 Binary files /dev/null and b/.yarn/cache/flatted-npm-3.2.7-0da10b7c56-427633049d.zip differ diff --git a/.yarn/cache/for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip b/.yarn/cache/for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip new file mode 100644 index 0000000..7ba7b16 Binary files /dev/null and b/.yarn/cache/for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip differ diff --git a/.yarn/cache/foreground-child-npm-3.1.1-77e78ed774-139d270bc8.zip b/.yarn/cache/foreground-child-npm-3.1.1-77e78ed774-139d270bc8.zip new file mode 100644 index 0000000..a288850 Binary files /dev/null and b/.yarn/cache/foreground-child-npm-3.1.1-77e78ed774-139d270bc8.zip differ diff --git a/.yarn/cache/fraction.js-npm-4.2.0-28efe4afc7-8c76a6e21d.zip b/.yarn/cache/fraction.js-npm-4.2.0-28efe4afc7-8c76a6e21d.zip new file mode 100644 index 0000000..ac7ea78 Binary files /dev/null and b/.yarn/cache/fraction.js-npm-4.2.0-28efe4afc7-8c76a6e21d.zip differ diff --git a/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip b/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip new file mode 100644 index 0000000..21a91aa Binary files /dev/null and b/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip differ diff --git a/.yarn/cache/fs-minipass-npm-3.0.2-a27ef235f5-e9cc0e1f2d.zip b/.yarn/cache/fs-minipass-npm-3.0.2-a27ef235f5-e9cc0e1f2d.zip new file mode 100644 index 0000000..a8edf63 Binary files /dev/null and b/.yarn/cache/fs-minipass-npm-3.0.2-a27ef235f5-e9cc0e1f2d.zip differ diff --git a/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip b/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip new file mode 100644 index 0000000..920c4ca Binary files /dev/null and b/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip differ diff --git a/.yarn/cache/fsevents-npm-2.3.2-a881d6ac9f-97ade64e75.zip b/.yarn/cache/fsevents-npm-2.3.2-a881d6ac9f-97ade64e75.zip new file mode 100644 index 0000000..204c8e4 Binary files /dev/null and b/.yarn/cache/fsevents-npm-2.3.2-a881d6ac9f-97ade64e75.zip differ diff --git a/.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip b/.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip new file mode 100644 index 0000000..c22a184 Binary files /dev/null and b/.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip differ diff --git a/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip b/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip new file mode 100644 index 0000000..ac0af53 Binary files /dev/null and b/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip differ diff --git a/.yarn/cache/functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip b/.yarn/cache/functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip new file mode 100644 index 0000000..9316619 Binary files /dev/null and b/.yarn/cache/functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip differ diff --git a/.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip b/.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip new file mode 100644 index 0000000..ef82b87 Binary files /dev/null and b/.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip differ diff --git a/.yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-a7437e58c6.zip b/.yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-a7437e58c6.zip new file mode 100644 index 0000000..75a7ba5 Binary files /dev/null and b/.yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-a7437e58c6.zip differ diff --git a/.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip b/.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip new file mode 100644 index 0000000..687f611 Binary files /dev/null and b/.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip differ diff --git a/.yarn/cache/get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip b/.yarn/cache/get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip new file mode 100644 index 0000000..5cdbc26 Binary files /dev/null and b/.yarn/cache/get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip differ diff --git a/.yarn/cache/glob-npm-10.3.1-100b936079-19c8c28056.zip b/.yarn/cache/glob-npm-10.3.1-100b936079-19c8c28056.zip new file mode 100644 index 0000000..85a20a6 Binary files /dev/null and b/.yarn/cache/glob-npm-10.3.1-100b936079-19c8c28056.zip differ diff --git a/.yarn/cache/glob-npm-7.1.6-1ce3a5189a-351d549dd9.zip b/.yarn/cache/glob-npm-7.1.6-1ce3a5189a-351d549dd9.zip new file mode 100644 index 0000000..a696eeb Binary files /dev/null and b/.yarn/cache/glob-npm-7.1.6-1ce3a5189a-351d549dd9.zip differ diff --git a/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip b/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip new file mode 100644 index 0000000..b2fa0ac Binary files /dev/null and b/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip differ diff --git a/.yarn/cache/glob-parent-npm-5.1.2-021ab32634-f4f2bfe242.zip b/.yarn/cache/glob-parent-npm-5.1.2-021ab32634-f4f2bfe242.zip new file mode 100644 index 0000000..8a94317 Binary files /dev/null and b/.yarn/cache/glob-parent-npm-5.1.2-021ab32634-f4f2bfe242.zip differ diff --git a/.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-c13ee97978.zip b/.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-c13ee97978.zip new file mode 100644 index 0000000..2a4d60d Binary files /dev/null and b/.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-c13ee97978.zip differ diff --git a/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip b/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip new file mode 100644 index 0000000..306b5aa Binary files /dev/null and b/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip differ diff --git a/.yarn/cache/globals-npm-13.20.0-4565a722e7-ad1ecf914b.zip b/.yarn/cache/globals-npm-13.20.0-4565a722e7-ad1ecf914b.zip new file mode 100644 index 0000000..e8add5b Binary files /dev/null and b/.yarn/cache/globals-npm-13.20.0-4565a722e7-ad1ecf914b.zip differ diff --git a/.yarn/cache/globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip b/.yarn/cache/globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip new file mode 100644 index 0000000..b82d79d Binary files /dev/null and b/.yarn/cache/globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip differ diff --git a/.yarn/cache/gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip b/.yarn/cache/gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip new file mode 100644 index 0000000..cafca67 Binary files /dev/null and b/.yarn/cache/gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip differ diff --git a/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip b/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip new file mode 100644 index 0000000..99f412b Binary files /dev/null and b/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip differ diff --git a/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip b/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip new file mode 100644 index 0000000..e04f8d3 Binary files /dev/null and b/.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip differ diff --git a/.yarn/cache/has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip b/.yarn/cache/has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip new file mode 100644 index 0000000..bc0b5ff Binary files /dev/null and b/.yarn/cache/has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip differ diff --git a/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip b/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip new file mode 100644 index 0000000..60eafa6 Binary files /dev/null and b/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip differ diff --git a/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip b/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip new file mode 100644 index 0000000..6f5845d Binary files /dev/null and b/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip differ diff --git a/.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip b/.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip new file mode 100644 index 0000000..f0731c9 Binary files /dev/null and b/.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip differ diff --git a/.yarn/cache/has-property-descriptors-npm-1.0.0-56289b918d-a6d3f0a266.zip b/.yarn/cache/has-property-descriptors-npm-1.0.0-56289b918d-a6d3f0a266.zip new file mode 100644 index 0000000..46eaa4f Binary files /dev/null and b/.yarn/cache/has-property-descriptors-npm-1.0.0-56289b918d-a6d3f0a266.zip differ diff --git a/.yarn/cache/has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip b/.yarn/cache/has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip new file mode 100644 index 0000000..78afc3d Binary files /dev/null and b/.yarn/cache/has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip differ diff --git a/.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip b/.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip new file mode 100644 index 0000000..d07bbd4 Binary files /dev/null and b/.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip differ diff --git a/.yarn/cache/has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip b/.yarn/cache/has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip new file mode 100644 index 0000000..7718fc2 Binary files /dev/null and b/.yarn/cache/has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip differ diff --git a/.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip b/.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip new file mode 100644 index 0000000..5988a7e Binary files /dev/null and b/.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip differ diff --git a/.yarn/cache/hash.js-npm-1.1.7-f1ad187358-e350096e65.zip b/.yarn/cache/hash.js-npm-1.1.7-f1ad187358-e350096e65.zip new file mode 100644 index 0000000..8ec9b47 Binary files /dev/null and b/.yarn/cache/hash.js-npm-1.1.7-f1ad187358-e350096e65.zip differ diff --git a/.yarn/cache/hmac-drbg-npm-1.0.1-3499ad31cd-bd30b6a68d.zip b/.yarn/cache/hmac-drbg-npm-1.0.1-3499ad31cd-bd30b6a68d.zip new file mode 100644 index 0000000..e53988b Binary files /dev/null and b/.yarn/cache/hmac-drbg-npm-1.0.1-3499ad31cd-bd30b6a68d.zip differ diff --git a/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip b/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip new file mode 100644 index 0000000..19f1e0a Binary files /dev/null and b/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip differ diff --git a/.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip b/.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip new file mode 100644 index 0000000..a999ab7 Binary files /dev/null and b/.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip differ diff --git a/.yarn/cache/https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip b/.yarn/cache/https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip new file mode 100644 index 0000000..b8bc994 Binary files /dev/null and b/.yarn/cache/https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip differ diff --git a/.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip b/.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip new file mode 100644 index 0000000..c09856b Binary files /dev/null and b/.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip differ diff --git a/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip b/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip new file mode 100644 index 0000000..f3f767a Binary files /dev/null and b/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip differ diff --git a/.yarn/cache/ignore-npm-5.2.4-fbe6e989e5-3d4c309c60.zip b/.yarn/cache/ignore-npm-5.2.4-fbe6e989e5-3d4c309c60.zip new file mode 100644 index 0000000..50627d8 Binary files /dev/null and b/.yarn/cache/ignore-npm-5.2.4-fbe6e989e5-3d4c309c60.zip differ diff --git a/.yarn/cache/import-fresh-npm-3.3.0-3e34265ca9-2cacfad06e.zip b/.yarn/cache/import-fresh-npm-3.3.0-3e34265ca9-2cacfad06e.zip new file mode 100644 index 0000000..318d7b8 Binary files /dev/null and b/.yarn/cache/import-fresh-npm-3.3.0-3e34265ca9-2cacfad06e.zip differ diff --git a/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip b/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip new file mode 100644 index 0000000..9ddf4f8 Binary files /dev/null and b/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip differ diff --git a/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip b/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip new file mode 100644 index 0000000..eedfdb0 Binary files /dev/null and b/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip differ diff --git a/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip b/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip new file mode 100644 index 0000000..c5a4bb0 Binary files /dev/null and b/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip differ diff --git a/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip b/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip new file mode 100644 index 0000000..62c31cb Binary files /dev/null and b/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip differ diff --git a/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip b/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip new file mode 100644 index 0000000..18fccd3 Binary files /dev/null and b/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip differ diff --git a/.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip b/.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip new file mode 100644 index 0000000..0aad893 Binary files /dev/null and b/.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip differ diff --git a/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip b/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip new file mode 100644 index 0000000..7556381 Binary files /dev/null and b/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip differ diff --git a/.yarn/cache/is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip b/.yarn/cache/is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip new file mode 100644 index 0000000..5282dfa Binary files /dev/null and b/.yarn/cache/is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip differ diff --git a/.yarn/cache/is-binary-path-npm-2.1.0-e61d46f557-84192eb88c.zip b/.yarn/cache/is-binary-path-npm-2.1.0-e61d46f557-84192eb88c.zip new file mode 100644 index 0000000..b509d00 Binary files /dev/null and b/.yarn/cache/is-binary-path-npm-2.1.0-e61d46f557-84192eb88c.zip differ diff --git a/.yarn/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip b/.yarn/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip new file mode 100644 index 0000000..7a1ae53 Binary files /dev/null and b/.yarn/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip differ diff --git a/.yarn/cache/is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip b/.yarn/cache/is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip new file mode 100644 index 0000000..0e383ae Binary files /dev/null and b/.yarn/cache/is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip differ diff --git a/.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip b/.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip new file mode 100644 index 0000000..9512b2e Binary files /dev/null and b/.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip differ diff --git a/.yarn/cache/is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip b/.yarn/cache/is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip new file mode 100644 index 0000000..3dbce36 Binary files /dev/null and b/.yarn/cache/is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip differ diff --git a/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-df033653d0.zip b/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-df033653d0.zip new file mode 100644 index 0000000..0acbc56 Binary files /dev/null and b/.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-df033653d0.zip differ diff --git a/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip b/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip new file mode 100644 index 0000000..dccc80a Binary files /dev/null and b/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip differ diff --git a/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-d381c1319f.zip b/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-d381c1319f.zip new file mode 100644 index 0000000..52274ed Binary files /dev/null and b/.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-d381c1319f.zip differ diff --git a/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip b/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip new file mode 100644 index 0000000..f981b1b Binary files /dev/null and b/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip differ diff --git a/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip b/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip new file mode 100644 index 0000000..06b47fd Binary files /dev/null and b/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip differ diff --git a/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip b/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip new file mode 100644 index 0000000..e4ae048 Binary files /dev/null and b/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip differ diff --git a/.yarn/cache/is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip b/.yarn/cache/is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip new file mode 100644 index 0000000..fac0d67 Binary files /dev/null and b/.yarn/cache/is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip differ diff --git a/.yarn/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-abd50f0618.zip b/.yarn/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-abd50f0618.zip new file mode 100644 index 0000000..27f29d7 Binary files /dev/null and b/.yarn/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-abd50f0618.zip differ diff --git a/.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip b/.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip new file mode 100644 index 0000000..41d26b8 Binary files /dev/null and b/.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip differ diff --git a/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip b/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip new file mode 100644 index 0000000..af3ad4f Binary files /dev/null and b/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip differ diff --git a/.yarn/cache/is-string-npm-1.0.7-9f7066daed-323b3d0462.zip b/.yarn/cache/is-string-npm-1.0.7-9f7066daed-323b3d0462.zip new file mode 100644 index 0000000..21039f9 Binary files /dev/null and b/.yarn/cache/is-string-npm-1.0.7-9f7066daed-323b3d0462.zip differ diff --git a/.yarn/cache/is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip b/.yarn/cache/is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip new file mode 100644 index 0000000..aa6f763 Binary files /dev/null and b/.yarn/cache/is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip differ diff --git a/.yarn/cache/is-typed-array-npm-1.1.10-fe4ef83cdc-aac6ecb59d.zip b/.yarn/cache/is-typed-array-npm-1.1.10-fe4ef83cdc-aac6ecb59d.zip new file mode 100644 index 0000000..b3a4495 Binary files /dev/null and b/.yarn/cache/is-typed-array-npm-1.1.10-fe4ef83cdc-aac6ecb59d.zip differ diff --git a/.yarn/cache/is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip b/.yarn/cache/is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip new file mode 100644 index 0000000..a798b01 Binary files /dev/null and b/.yarn/cache/is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip differ diff --git a/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip b/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip new file mode 100644 index 0000000..077597d Binary files /dev/null and b/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip differ diff --git a/.yarn/cache/jackspeak-npm-2.2.1-0644c98bfe-e29291c0d0.zip b/.yarn/cache/jackspeak-npm-2.2.1-0644c98bfe-e29291c0d0.zip new file mode 100644 index 0000000..b58505c Binary files /dev/null and b/.yarn/cache/jackspeak-npm-2.2.1-0644c98bfe-e29291c0d0.zip differ diff --git a/.yarn/cache/jiti-npm-1.18.2-112a8d9b37-46c41cd82d.zip b/.yarn/cache/jiti-npm-1.18.2-112a8d9b37-46c41cd82d.zip new file mode 100644 index 0000000..1f7841e Binary files /dev/null and b/.yarn/cache/jiti-npm-1.18.2-112a8d9b37-46c41cd82d.zip differ diff --git a/.yarn/cache/js-sha3-npm-0.8.0-decf3ddcfa-75df77c1fc.zip b/.yarn/cache/js-sha3-npm-0.8.0-decf3ddcfa-75df77c1fc.zip new file mode 100644 index 0000000..07be36f Binary files /dev/null and b/.yarn/cache/js-sha3-npm-0.8.0-decf3ddcfa-75df77c1fc.zip differ diff --git a/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip b/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip new file mode 100644 index 0000000..8ffd9d4 Binary files /dev/null and b/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip differ diff --git a/.yarn/cache/js-yaml-npm-4.1.0-3606f32312-c7830dfd45.zip b/.yarn/cache/js-yaml-npm-4.1.0-3606f32312-c7830dfd45.zip new file mode 100644 index 0000000..659c85d Binary files /dev/null and b/.yarn/cache/js-yaml-npm-4.1.0-3606f32312-c7830dfd45.zip differ diff --git a/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-4dc1907711.zip b/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-4dc1907711.zip new file mode 100644 index 0000000..08cc200 Binary files /dev/null and b/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-4dc1907711.zip differ diff --git a/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip b/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip new file mode 100644 index 0000000..54f0a7a Binary files /dev/null and b/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip differ diff --git a/.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cff44156dd.zip b/.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cff44156dd.zip new file mode 100644 index 0000000..47d5852 Binary files /dev/null and b/.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cff44156dd.zip differ diff --git a/.yarn/cache/json5-npm-2.2.3-9962c55073-2a7436a933.zip b/.yarn/cache/json5-npm-2.2.3-9962c55073-2a7436a933.zip new file mode 100644 index 0000000..51d7c3f Binary files /dev/null and b/.yarn/cache/json5-npm-2.2.3-9962c55073-2a7436a933.zip differ diff --git a/.yarn/cache/jsx-ast-utils-npm-3.3.3-3d3171e1e4-a2ed78cac4.zip b/.yarn/cache/jsx-ast-utils-npm-3.3.3-3d3171e1e4-a2ed78cac4.zip new file mode 100644 index 0000000..1a14df0 Binary files /dev/null and b/.yarn/cache/jsx-ast-utils-npm-3.3.3-3d3171e1e4-a2ed78cac4.zip differ diff --git a/.yarn/cache/levn-npm-0.4.1-d183b2d7bb-12c5021c85.zip b/.yarn/cache/levn-npm-0.4.1-d183b2d7bb-12c5021c85.zip new file mode 100644 index 0000000..dda4d01 Binary files /dev/null and b/.yarn/cache/levn-npm-0.4.1-d183b2d7bb-12c5021c85.zip differ diff --git a/.yarn/cache/lilconfig-npm-2.1.0-a179261924-8549bb352b.zip b/.yarn/cache/lilconfig-npm-2.1.0-a179261924-8549bb352b.zip new file mode 100644 index 0000000..44e3230 Binary files /dev/null and b/.yarn/cache/lilconfig-npm-2.1.0-a179261924-8549bb352b.zip differ diff --git a/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-0c37f9f7fa.zip b/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-0c37f9f7fa.zip new file mode 100644 index 0000000..273106a Binary files /dev/null and b/.yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-0c37f9f7fa.zip differ diff --git a/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip b/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip new file mode 100644 index 0000000..b67b774 Binary files /dev/null and b/.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip differ diff --git a/.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip b/.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip new file mode 100644 index 0000000..f6bc72b Binary files /dev/null and b/.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip differ diff --git a/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip b/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip new file mode 100644 index 0000000..ba25b87 Binary files /dev/null and b/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip differ diff --git a/.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip b/.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip new file mode 100644 index 0000000..53a12f8 Binary files /dev/null and b/.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip differ diff --git a/.yarn/cache/lru-cache-npm-5.1.1-f475882a51-c154ae1cbb.zip b/.yarn/cache/lru-cache-npm-5.1.1-f475882a51-c154ae1cbb.zip new file mode 100644 index 0000000..3f6ba11 Binary files /dev/null and b/.yarn/cache/lru-cache-npm-5.1.1-f475882a51-c154ae1cbb.zip differ diff --git a/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip b/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip new file mode 100644 index 0000000..1635dac Binary files /dev/null and b/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip differ diff --git a/.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip b/.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip new file mode 100644 index 0000000..49f2621 Binary files /dev/null and b/.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip differ diff --git a/.yarn/cache/make-fetch-happen-npm-11.1.1-f32b79aaaa-7268bf274a.zip b/.yarn/cache/make-fetch-happen-npm-11.1.1-f32b79aaaa-7268bf274a.zip new file mode 100644 index 0000000..4c30e7f Binary files /dev/null and b/.yarn/cache/make-fetch-happen-npm-11.1.1-f32b79aaaa-7268bf274a.zip differ diff --git a/.yarn/cache/merge2-npm-1.4.1-a2507bd06c-7268db63ed.zip b/.yarn/cache/merge2-npm-1.4.1-a2507bd06c-7268db63ed.zip new file mode 100644 index 0000000..76aa4f0 Binary files /dev/null and b/.yarn/cache/merge2-npm-1.4.1-a2507bd06c-7268db63ed.zip differ diff --git a/.yarn/cache/micromatch-npm-4.0.5-cfab5d7669-02a17b671c.zip b/.yarn/cache/micromatch-npm-4.0.5-cfab5d7669-02a17b671c.zip new file mode 100644 index 0000000..060612a Binary files /dev/null and b/.yarn/cache/micromatch-npm-4.0.5-cfab5d7669-02a17b671c.zip differ diff --git a/.yarn/cache/minimalistic-assert-npm-1.0.1-dc8bb23d29-cc7974a926.zip b/.yarn/cache/minimalistic-assert-npm-1.0.1-dc8bb23d29-cc7974a926.zip new file mode 100644 index 0000000..8c95a3e Binary files /dev/null and b/.yarn/cache/minimalistic-assert-npm-1.0.1-dc8bb23d29-cc7974a926.zip differ diff --git a/.yarn/cache/minimalistic-crypto-utils-npm-1.0.1-e66b10822e-6e8a0422b3.zip b/.yarn/cache/minimalistic-crypto-utils-npm-1.0.1-e66b10822e-6e8a0422b3.zip new file mode 100644 index 0000000..c4225af Binary files /dev/null and b/.yarn/cache/minimalistic-crypto-utils-npm-1.0.1-e66b10822e-6e8a0422b3.zip differ diff --git a/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip b/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip new file mode 100644 index 0000000..ba0c510 Binary files /dev/null and b/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip differ diff --git a/.yarn/cache/minimatch-npm-9.0.2-54f51f778f-2eb12e2047.zip b/.yarn/cache/minimatch-npm-9.0.2-54f51f778f-2eb12e2047.zip new file mode 100644 index 0000000..a38ee1d Binary files /dev/null and b/.yarn/cache/minimatch-npm-9.0.2-54f51f778f-2eb12e2047.zip differ diff --git a/.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip b/.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip new file mode 100644 index 0000000..582f61c Binary files /dev/null and b/.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip differ diff --git a/.yarn/cache/minipass-fetch-npm-3.0.3-2c4966d142-af5ab2552a.zip b/.yarn/cache/minipass-fetch-npm-3.0.3-2c4966d142-af5ab2552a.zip new file mode 100644 index 0000000..f6ea3e0 Binary files /dev/null and b/.yarn/cache/minipass-fetch-npm-3.0.3-2c4966d142-af5ab2552a.zip differ diff --git a/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip b/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip new file mode 100644 index 0000000..913b687 Binary files /dev/null and b/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip differ diff --git a/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip b/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip new file mode 100644 index 0000000..26e006f Binary files /dev/null and b/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip differ diff --git a/.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip b/.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip new file mode 100644 index 0000000..c49ee93 Binary files /dev/null and b/.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip differ diff --git a/.yarn/cache/minipass-npm-6.0.2-a7fca64b94-d140b91f4a.zip b/.yarn/cache/minipass-npm-6.0.2-a7fca64b94-d140b91f4a.zip new file mode 100644 index 0000000..845a9a6 Binary files /dev/null and b/.yarn/cache/minipass-npm-6.0.2-a7fca64b94-d140b91f4a.zip differ diff --git a/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip b/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip new file mode 100644 index 0000000..4deae41 Binary files /dev/null and b/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip differ diff --git a/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip b/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip new file mode 100644 index 0000000..b6f4644 Binary files /dev/null and b/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip differ diff --git a/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip b/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip new file mode 100644 index 0000000..efb1b7f Binary files /dev/null and b/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip differ diff --git a/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip b/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip new file mode 100644 index 0000000..4625e91 Binary files /dev/null and b/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip differ diff --git a/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip b/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip new file mode 100644 index 0000000..725e9b8 Binary files /dev/null and b/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip differ diff --git a/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip b/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip new file mode 100644 index 0000000..2b635f2 Binary files /dev/null and b/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip differ diff --git a/.yarn/cache/mz-npm-2.7.0-ec3cef4ec2-8427de0ece.zip b/.yarn/cache/mz-npm-2.7.0-ec3cef4ec2-8427de0ece.zip new file mode 100644 index 0000000..faf79ca Binary files /dev/null and b/.yarn/cache/mz-npm-2.7.0-ec3cef4ec2-8427de0ece.zip differ diff --git a/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip b/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip new file mode 100644 index 0000000..8526aca Binary files /dev/null and b/.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip differ diff --git a/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-23ad088b08.zip b/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-23ad088b08.zip new file mode 100644 index 0000000..db454c3 Binary files /dev/null and b/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-23ad088b08.zip differ diff --git a/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip b/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip new file mode 100644 index 0000000..e8c5cf4 Binary files /dev/null and b/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip differ diff --git a/.yarn/cache/node-gyp-npm-9.4.0-ebf5f5573e-78b404e2e0.zip b/.yarn/cache/node-gyp-npm-9.4.0-ebf5f5573e-78b404e2e0.zip new file mode 100644 index 0000000..58feae5 Binary files /dev/null and b/.yarn/cache/node-gyp-npm-9.4.0-ebf5f5573e-78b404e2e0.zip differ diff --git a/.yarn/cache/node-releases-npm-2.0.12-888ed1398a-b8c56db82c.zip b/.yarn/cache/node-releases-npm-2.0.12-888ed1398a-b8c56db82c.zip new file mode 100644 index 0000000..96ca378 Binary files /dev/null and b/.yarn/cache/node-releases-npm-2.0.12-888ed1398a-b8c56db82c.zip differ diff --git a/.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip b/.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip new file mode 100644 index 0000000..ce92f86 Binary files /dev/null and b/.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip differ diff --git a/.yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-88eeb4da89.zip b/.yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-88eeb4da89.zip new file mode 100644 index 0000000..855af70 Binary files /dev/null and b/.yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-88eeb4da89.zip differ diff --git a/.yarn/cache/normalize-range-npm-0.1.2-bec5e259e2-9b2f14f093.zip b/.yarn/cache/normalize-range-npm-0.1.2-bec5e259e2-9b2f14f093.zip new file mode 100644 index 0000000..d163f6f Binary files /dev/null and b/.yarn/cache/normalize-range-npm-0.1.2-bec5e259e2-9b2f14f093.zip differ diff --git a/.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip b/.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip new file mode 100644 index 0000000..a7bb4a7 Binary files /dev/null and b/.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip differ diff --git a/.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip b/.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip new file mode 100644 index 0000000..8c8ab03 Binary files /dev/null and b/.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip differ diff --git a/.yarn/cache/object-hash-npm-3.0.0-d941e0cabe-80b4904bb3.zip b/.yarn/cache/object-hash-npm-3.0.0-d941e0cabe-80b4904bb3.zip new file mode 100644 index 0000000..866d803 Binary files /dev/null and b/.yarn/cache/object-hash-npm-3.0.0-d941e0cabe-80b4904bb3.zip differ diff --git a/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip b/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip new file mode 100644 index 0000000..ec58095 Binary files /dev/null and b/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip differ diff --git a/.yarn/cache/object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip b/.yarn/cache/object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip new file mode 100644 index 0000000..3402282 Binary files /dev/null and b/.yarn/cache/object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip differ diff --git a/.yarn/cache/object.assign-npm-4.1.4-fb3deb1c3a-76cab513a5.zip b/.yarn/cache/object.assign-npm-4.1.4-fb3deb1c3a-76cab513a5.zip new file mode 100644 index 0000000..8a1fef0 Binary files /dev/null and b/.yarn/cache/object.assign-npm-4.1.4-fb3deb1c3a-76cab513a5.zip differ diff --git a/.yarn/cache/object.entries-npm-1.1.6-5f9ba14b46-0f8c47517e.zip b/.yarn/cache/object.entries-npm-1.1.6-5f9ba14b46-0f8c47517e.zip new file mode 100644 index 0000000..a0a3207 Binary files /dev/null and b/.yarn/cache/object.entries-npm-1.1.6-5f9ba14b46-0f8c47517e.zip differ diff --git a/.yarn/cache/object.fromentries-npm-2.0.6-424cf4cd3c-453c6d6941.zip b/.yarn/cache/object.fromentries-npm-2.0.6-424cf4cd3c-453c6d6941.zip new file mode 100644 index 0000000..5c9a301 Binary files /dev/null and b/.yarn/cache/object.fromentries-npm-2.0.6-424cf4cd3c-453c6d6941.zip differ diff --git a/.yarn/cache/object.hasown-npm-1.1.2-db9bbc7f97-b936572536.zip b/.yarn/cache/object.hasown-npm-1.1.2-db9bbc7f97-b936572536.zip new file mode 100644 index 0000000..fd49e00 Binary files /dev/null and b/.yarn/cache/object.hasown-npm-1.1.2-db9bbc7f97-b936572536.zip differ diff --git a/.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip b/.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip new file mode 100644 index 0000000..679cbd7 Binary files /dev/null and b/.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip differ diff --git a/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip b/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip new file mode 100644 index 0000000..1b943ee Binary files /dev/null and b/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip differ diff --git a/.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip b/.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip new file mode 100644 index 0000000..6e6efe3 Binary files /dev/null and b/.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip differ diff --git a/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip b/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip new file mode 100644 index 0000000..b87d97c Binary files /dev/null and b/.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip differ diff --git a/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip b/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip new file mode 100644 index 0000000..077f1c6 Binary files /dev/null and b/.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip differ diff --git a/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip b/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip new file mode 100644 index 0000000..092fe42 Binary files /dev/null and b/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip differ diff --git a/.yarn/cache/parent-module-npm-1.0.1-1fae11b095-6ba8b25514.zip b/.yarn/cache/parent-module-npm-1.0.1-1fae11b095-6ba8b25514.zip new file mode 100644 index 0000000..5b900e1 Binary files /dev/null and b/.yarn/cache/parent-module-npm-1.0.1-1fae11b095-6ba8b25514.zip differ diff --git a/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip b/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip new file mode 100644 index 0000000..b504841 Binary files /dev/null and b/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip differ diff --git a/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip b/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip new file mode 100644 index 0000000..ce195de Binary files /dev/null and b/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip differ diff --git a/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip b/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip new file mode 100644 index 0000000..dd7212e Binary files /dev/null and b/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip differ diff --git a/.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip b/.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip new file mode 100644 index 0000000..30362e2 Binary files /dev/null and b/.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip differ diff --git a/.yarn/cache/path-scurry-npm-1.10.0-53ecc28cea-3b66a4a6ab.zip b/.yarn/cache/path-scurry-npm-1.10.0-53ecc28cea-3b66a4a6ab.zip new file mode 100644 index 0000000..aad3eea Binary files /dev/null and b/.yarn/cache/path-scurry-npm-1.10.0-53ecc28cea-3b66a4a6ab.zip differ diff --git a/.yarn/cache/picocolors-npm-1.0.0-d81e0b1927-a2e8092dd8.zip b/.yarn/cache/picocolors-npm-1.0.0-d81e0b1927-a2e8092dd8.zip new file mode 100644 index 0000000..2d7c3d5 Binary files /dev/null and b/.yarn/cache/picocolors-npm-1.0.0-d81e0b1927-a2e8092dd8.zip differ diff --git a/.yarn/cache/picomatch-npm-2.3.1-c782cfd986-050c865ce8.zip b/.yarn/cache/picomatch-npm-2.3.1-c782cfd986-050c865ce8.zip new file mode 100644 index 0000000..3384698 Binary files /dev/null and b/.yarn/cache/picomatch-npm-2.3.1-c782cfd986-050c865ce8.zip differ diff --git a/.yarn/cache/pify-npm-2.3.0-8b63310934-9503aaeaf4.zip b/.yarn/cache/pify-npm-2.3.0-8b63310934-9503aaeaf4.zip new file mode 100644 index 0000000..4cbc70a Binary files /dev/null and b/.yarn/cache/pify-npm-2.3.0-8b63310934-9503aaeaf4.zip differ diff --git a/.yarn/cache/pirates-npm-4.0.5-22f8e827ce-c9994e61b8.zip b/.yarn/cache/pirates-npm-4.0.5-22f8e827ce-c9994e61b8.zip new file mode 100644 index 0000000..f6b2634 Binary files /dev/null and b/.yarn/cache/pirates-npm-4.0.5-22f8e827ce-c9994e61b8.zip differ diff --git a/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip b/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip new file mode 100644 index 0000000..00850ef Binary files /dev/null and b/.yarn/cache/postcss-import-npm-15.1.0-8b9e86f900-7bd04bd8f0.zip differ diff --git a/.yarn/cache/postcss-js-npm-4.0.1-2c4ee70bf3-5c1e83efea.zip b/.yarn/cache/postcss-js-npm-4.0.1-2c4ee70bf3-5c1e83efea.zip new file mode 100644 index 0000000..d9b8602 Binary files /dev/null and b/.yarn/cache/postcss-js-npm-4.0.1-2c4ee70bf3-5c1e83efea.zip differ diff --git a/.yarn/cache/postcss-load-config-npm-4.0.1-351eb776f5-b61f890499.zip b/.yarn/cache/postcss-load-config-npm-4.0.1-351eb776f5-b61f890499.zip new file mode 100644 index 0000000..77a854b Binary files /dev/null and b/.yarn/cache/postcss-load-config-npm-4.0.1-351eb776f5-b61f890499.zip differ diff --git a/.yarn/cache/postcss-nested-npm-6.0.1-5cdc427fe8-7ddb0364cd.zip b/.yarn/cache/postcss-nested-npm-6.0.1-5cdc427fe8-7ddb0364cd.zip new file mode 100644 index 0000000..79b4690 Binary files /dev/null and b/.yarn/cache/postcss-nested-npm-6.0.1-5cdc427fe8-7ddb0364cd.zip differ diff --git a/.yarn/cache/postcss-npm-8.4.24-07c10836e5-814e2126da.zip b/.yarn/cache/postcss-npm-8.4.24-07c10836e5-814e2126da.zip new file mode 100644 index 0000000..4c906e3 Binary files /dev/null and b/.yarn/cache/postcss-npm-8.4.24-07c10836e5-814e2126da.zip differ diff --git a/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip b/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip new file mode 100644 index 0000000..1623d46 Binary files /dev/null and b/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip differ diff --git a/.yarn/cache/postcss-value-parser-npm-4.2.0-3cef602a6a-819ffab0c9.zip b/.yarn/cache/postcss-value-parser-npm-4.2.0-3cef602a6a-819ffab0c9.zip new file mode 100644 index 0000000..8f7cb96 Binary files /dev/null and b/.yarn/cache/postcss-value-parser-npm-4.2.0-3cef602a6a-819ffab0c9.zip differ diff --git a/.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-cd192ec0d0.zip b/.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-cd192ec0d0.zip new file mode 100644 index 0000000..38e7969 Binary files /dev/null and b/.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-cd192ec0d0.zip differ diff --git a/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip b/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip new file mode 100644 index 0000000..9cefe07 Binary files /dev/null and b/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip differ diff --git a/.yarn/cache/prop-types-npm-15.8.1-17c71ee7ee-c056d3f1c0.zip b/.yarn/cache/prop-types-npm-15.8.1-17c71ee7ee-c056d3f1c0.zip new file mode 100644 index 0000000..25ffc5e Binary files /dev/null and b/.yarn/cache/prop-types-npm-15.8.1-17c71ee7ee-c056d3f1c0.zip differ diff --git a/.yarn/cache/punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip b/.yarn/cache/punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip new file mode 100644 index 0000000..0ad5b4f Binary files /dev/null and b/.yarn/cache/punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip differ diff --git a/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip b/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip new file mode 100644 index 0000000..3145328 Binary files /dev/null and b/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip differ diff --git a/.yarn/cache/react-dom-npm-18.2.0-dd675bca1c-7d323310be.zip b/.yarn/cache/react-dom-npm-18.2.0-dd675bca1c-7d323310be.zip new file mode 100644 index 0000000..bbf6e75 Binary files /dev/null and b/.yarn/cache/react-dom-npm-18.2.0-dd675bca1c-7d323310be.zip differ diff --git a/.yarn/cache/react-icons-npm-4.9.0-633c387145-69d1000d02.zip b/.yarn/cache/react-icons-npm-4.9.0-633c387145-69d1000d02.zip new file mode 100644 index 0000000..4fbecaf Binary files /dev/null and b/.yarn/cache/react-icons-npm-4.9.0-633c387145-69d1000d02.zip differ diff --git a/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-f7a19ac349.zip b/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-f7a19ac349.zip new file mode 100644 index 0000000..bb47b50 Binary files /dev/null and b/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-f7a19ac349.zip differ diff --git a/.yarn/cache/react-npm-18.2.0-1eae08fee2-88e38092da.zip b/.yarn/cache/react-npm-18.2.0-1eae08fee2-88e38092da.zip new file mode 100644 index 0000000..392c40e Binary files /dev/null and b/.yarn/cache/react-npm-18.2.0-1eae08fee2-88e38092da.zip differ diff --git a/.yarn/cache/react-refresh-npm-0.14.0-78ef5eeb73-dc69fa8c99.zip b/.yarn/cache/react-refresh-npm-0.14.0-78ef5eeb73-dc69fa8c99.zip new file mode 100644 index 0000000..dc79dbd Binary files /dev/null and b/.yarn/cache/react-refresh-npm-0.14.0-78ef5eeb73-dc69fa8c99.zip differ diff --git a/.yarn/cache/react-router-dom-npm-6.11.2-857d6dd0eb-ba44ff37f2.zip b/.yarn/cache/react-router-dom-npm-6.11.2-857d6dd0eb-ba44ff37f2.zip new file mode 100644 index 0000000..9f43333 Binary files /dev/null and b/.yarn/cache/react-router-dom-npm-6.11.2-857d6dd0eb-ba44ff37f2.zip differ diff --git a/.yarn/cache/react-router-npm-6.11.2-a9226fcbfa-e47f875dca.zip b/.yarn/cache/react-router-npm-6.11.2-a9226fcbfa-e47f875dca.zip new file mode 100644 index 0000000..db23f38 Binary files /dev/null and b/.yarn/cache/react-router-npm-6.11.2-a9226fcbfa-e47f875dca.zip differ diff --git a/.yarn/cache/read-cache-npm-1.0.0-00fa89ed05-cffc728b9e.zip b/.yarn/cache/read-cache-npm-1.0.0-00fa89ed05-cffc728b9e.zip new file mode 100644 index 0000000..f2054c0 Binary files /dev/null and b/.yarn/cache/read-cache-npm-1.0.0-00fa89ed05-cffc728b9e.zip differ diff --git a/.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip b/.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip new file mode 100644 index 0000000..0053b67 Binary files /dev/null and b/.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip differ diff --git a/.yarn/cache/readdirp-npm-3.6.0-f950cc74ab-1ced032e6e.zip b/.yarn/cache/readdirp-npm-3.6.0-f950cc74ab-1ced032e6e.zip new file mode 100644 index 0000000..f368781 Binary files /dev/null and b/.yarn/cache/readdirp-npm-3.6.0-f950cc74ab-1ced032e6e.zip differ diff --git a/.yarn/cache/regexp.prototype.flags-npm-1.5.0-5623b9e07f-c541687cdb.zip b/.yarn/cache/regexp.prototype.flags-npm-1.5.0-5623b9e07f-c541687cdb.zip new file mode 100644 index 0000000..79f001c Binary files /dev/null and b/.yarn/cache/regexp.prototype.flags-npm-1.5.0-5623b9e07f-c541687cdb.zip differ diff --git a/.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-f4ba0b8494.zip b/.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-f4ba0b8494.zip new file mode 100644 index 0000000..86f591e Binary files /dev/null and b/.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-f4ba0b8494.zip differ diff --git a/.yarn/cache/resolve-npm-1.22.2-9d9621a4ae-7e5df75796.zip b/.yarn/cache/resolve-npm-1.22.2-9d9621a4ae-7e5df75796.zip new file mode 100644 index 0000000..59031e7 Binary files /dev/null and b/.yarn/cache/resolve-npm-1.22.2-9d9621a4ae-7e5df75796.zip differ diff --git a/.yarn/cache/resolve-npm-2.0.0-next.4-3d0bd8621e-c438ac9a65.zip b/.yarn/cache/resolve-npm-2.0.0-next.4-3d0bd8621e-c438ac9a65.zip new file mode 100644 index 0000000..fa2c3c6 Binary files /dev/null and b/.yarn/cache/resolve-npm-2.0.0-next.4-3d0bd8621e-c438ac9a65.zip differ diff --git a/.yarn/cache/resolve-patch-34cda421ec-4bf9f4f8a4.zip b/.yarn/cache/resolve-patch-34cda421ec-4bf9f4f8a4.zip new file mode 100644 index 0000000..685f69a Binary files /dev/null and b/.yarn/cache/resolve-patch-34cda421ec-4bf9f4f8a4.zip differ diff --git a/.yarn/cache/resolve-patch-f4c4056507-66cc788f13.zip b/.yarn/cache/resolve-patch-f4c4056507-66cc788f13.zip new file mode 100644 index 0000000..ccc35c1 Binary files /dev/null and b/.yarn/cache/resolve-patch-f4c4056507-66cc788f13.zip differ diff --git a/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip b/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip new file mode 100644 index 0000000..12e25fc Binary files /dev/null and b/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip differ diff --git a/.yarn/cache/reusify-npm-1.0.4-95ac4aec11-c3076ebcc2.zip b/.yarn/cache/reusify-npm-1.0.4-95ac4aec11-c3076ebcc2.zip new file mode 100644 index 0000000..595aa09 Binary files /dev/null and b/.yarn/cache/reusify-npm-1.0.4-95ac4aec11-c3076ebcc2.zip differ diff --git a/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip b/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip new file mode 100644 index 0000000..6d2f541 Binary files /dev/null and b/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip differ diff --git a/.yarn/cache/rollup-npm-3.23.0-8effefb353-0721065cf7.zip b/.yarn/cache/rollup-npm-3.23.0-8effefb353-0721065cf7.zip new file mode 100644 index 0000000..e3e851f Binary files /dev/null and b/.yarn/cache/rollup-npm-3.23.0-8effefb353-0721065cf7.zip differ diff --git a/.yarn/cache/run-parallel-npm-1.2.0-3f47ff2034-cb4f97ad25.zip b/.yarn/cache/run-parallel-npm-1.2.0-3f47ff2034-cb4f97ad25.zip new file mode 100644 index 0000000..fefbad5 Binary files /dev/null and b/.yarn/cache/run-parallel-npm-1.2.0-3f47ff2034-cb4f97ad25.zip differ diff --git a/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip b/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip new file mode 100644 index 0000000..c80798a Binary files /dev/null and b/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip differ diff --git a/.yarn/cache/safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip b/.yarn/cache/safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip new file mode 100644 index 0000000..9e9dbfc Binary files /dev/null and b/.yarn/cache/safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip differ diff --git a/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip b/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip new file mode 100644 index 0000000..1a93be6 Binary files /dev/null and b/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip differ diff --git a/.yarn/cache/scheduler-npm-0.23.0-a379a6bc3b-d79192eeaa.zip b/.yarn/cache/scheduler-npm-0.23.0-a379a6bc3b-d79192eeaa.zip new file mode 100644 index 0000000..77e2bec Binary files /dev/null and b/.yarn/cache/scheduler-npm-0.23.0-a379a6bc3b-d79192eeaa.zip differ diff --git a/.yarn/cache/scrypt-js-npm-3.0.1-fd2d3fa606-b7c7d1a68d.zip b/.yarn/cache/scrypt-js-npm-3.0.1-fd2d3fa606-b7c7d1a68d.zip new file mode 100644 index 0000000..301f74b Binary files /dev/null and b/.yarn/cache/scrypt-js-npm-3.0.1-fd2d3fa606-b7c7d1a68d.zip differ diff --git a/.yarn/cache/semver-npm-6.3.0-b3eace8bfd-1b26ecf6db.zip b/.yarn/cache/semver-npm-6.3.0-b3eace8bfd-1b26ecf6db.zip new file mode 100644 index 0000000..6320ec2 Binary files /dev/null and b/.yarn/cache/semver-npm-6.3.0-b3eace8bfd-1b26ecf6db.zip differ diff --git a/.yarn/cache/semver-npm-7.5.3-275095dbf3-9d58db1652.zip b/.yarn/cache/semver-npm-7.5.3-275095dbf3-9d58db1652.zip new file mode 100644 index 0000000..79b7d47 Binary files /dev/null and b/.yarn/cache/semver-npm-7.5.3-275095dbf3-9d58db1652.zip differ diff --git a/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip b/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip new file mode 100644 index 0000000..fe99c6f Binary files /dev/null and b/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip differ diff --git a/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip b/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip new file mode 100644 index 0000000..727c547 Binary files /dev/null and b/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip differ diff --git a/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip b/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip new file mode 100644 index 0000000..3e891cd Binary files /dev/null and b/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip differ diff --git a/.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip b/.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip new file mode 100644 index 0000000..3761d61 Binary files /dev/null and b/.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip differ diff --git a/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip b/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip new file mode 100644 index 0000000..98720bd Binary files /dev/null and b/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip differ diff --git a/.yarn/cache/signal-exit-npm-4.0.2-e3f0e8ed25-41f5928431.zip b/.yarn/cache/signal-exit-npm-4.0.2-e3f0e8ed25-41f5928431.zip new file mode 100644 index 0000000..60c1f70 Binary files /dev/null and b/.yarn/cache/signal-exit-npm-4.0.2-e3f0e8ed25-41f5928431.zip differ diff --git a/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip b/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip new file mode 100644 index 0000000..d587b3d Binary files /dev/null and b/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip differ diff --git a/.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip b/.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip new file mode 100644 index 0000000..f225cde Binary files /dev/null and b/.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip differ diff --git a/.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip b/.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip new file mode 100644 index 0000000..4be1d89 Binary files /dev/null and b/.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip differ diff --git a/.yarn/cache/source-map-js-npm-1.0.2-ee4f9f9b30-c049a7fc4d.zip b/.yarn/cache/source-map-js-npm-1.0.2-ee4f9f9b30-c049a7fc4d.zip new file mode 100644 index 0000000..061ccc6 Binary files /dev/null and b/.yarn/cache/source-map-js-npm-1.0.2-ee4f9f9b30-c049a7fc4d.zip differ diff --git a/.yarn/cache/ssri-npm-10.0.4-f583dafaf3-fb14da9f8a.zip b/.yarn/cache/ssri-npm-10.0.4-f583dafaf3-fb14da9f8a.zip new file mode 100644 index 0000000..cadf01f Binary files /dev/null and b/.yarn/cache/ssri-npm-10.0.4-f583dafaf3-fb14da9f8a.zip differ diff --git a/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip b/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip new file mode 100644 index 0000000..9b4c088 Binary files /dev/null and b/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip differ diff --git a/.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip b/.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip new file mode 100644 index 0000000..bd88405 Binary files /dev/null and b/.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip differ diff --git a/.yarn/cache/string.prototype.matchall-npm-4.0.8-1feb1531b6-952da3a818.zip b/.yarn/cache/string.prototype.matchall-npm-4.0.8-1feb1531b6-952da3a818.zip new file mode 100644 index 0000000..11a68b4 Binary files /dev/null and b/.yarn/cache/string.prototype.matchall-npm-4.0.8-1feb1531b6-952da3a818.zip differ diff --git a/.yarn/cache/string.prototype.trim-npm-1.2.7-3fbaf3b9d2-05b7b2d6af.zip b/.yarn/cache/string.prototype.trim-npm-1.2.7-3fbaf3b9d2-05b7b2d6af.zip new file mode 100644 index 0000000..ee6a456 Binary files /dev/null and b/.yarn/cache/string.prototype.trim-npm-1.2.7-3fbaf3b9d2-05b7b2d6af.zip differ diff --git a/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip b/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip new file mode 100644 index 0000000..c28cc81 Binary files /dev/null and b/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip differ diff --git a/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip b/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip new file mode 100644 index 0000000..6203bec Binary files /dev/null and b/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip differ diff --git a/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip b/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip new file mode 100644 index 0000000..e12cf75 Binary files /dev/null and b/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip differ diff --git a/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip b/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip new file mode 100644 index 0000000..1a63f3b Binary files /dev/null and b/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip differ diff --git a/.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-859c73fcf2.zip b/.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-859c73fcf2.zip new file mode 100644 index 0000000..2cc856e Binary files /dev/null and b/.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-859c73fcf2.zip differ diff --git a/.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-492f73e272.zip b/.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-492f73e272.zip new file mode 100644 index 0000000..e74ed10 Binary files /dev/null and b/.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-492f73e272.zip differ diff --git a/.yarn/cache/sucrase-npm-3.32.0-77d3fb5106-79f760aef5.zip b/.yarn/cache/sucrase-npm-3.32.0-77d3fb5106-79f760aef5.zip new file mode 100644 index 0000000..f27188b Binary files /dev/null and b/.yarn/cache/sucrase-npm-3.32.0-77d3fb5106-79f760aef5.zip differ diff --git a/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip b/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip new file mode 100644 index 0000000..aa46b98 Binary files /dev/null and b/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip differ diff --git a/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip b/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip new file mode 100644 index 0000000..1fd9e12 Binary files /dev/null and b/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip differ diff --git a/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip b/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip new file mode 100644 index 0000000..07a2c83 Binary files /dev/null and b/.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip differ diff --git a/.yarn/cache/tailwindcss-npm-3.3.2-9311a8c9fc-4897c70e67.zip b/.yarn/cache/tailwindcss-npm-3.3.2-9311a8c9fc-4897c70e67.zip new file mode 100644 index 0000000..e8ab603 Binary files /dev/null and b/.yarn/cache/tailwindcss-npm-3.3.2-9311a8c9fc-4897c70e67.zip differ diff --git a/.yarn/cache/tar-npm-6.1.15-44c3e71720-f23832fcee.zip b/.yarn/cache/tar-npm-6.1.15-44c3e71720-f23832fcee.zip new file mode 100644 index 0000000..9c2411f Binary files /dev/null and b/.yarn/cache/tar-npm-6.1.15-44c3e71720-f23832fcee.zip differ diff --git a/.yarn/cache/text-table-npm-0.2.0-d92a778b59-b6937a38c8.zip b/.yarn/cache/text-table-npm-0.2.0-d92a778b59-b6937a38c8.zip new file mode 100644 index 0000000..08df483 Binary files /dev/null and b/.yarn/cache/text-table-npm-0.2.0-d92a778b59-b6937a38c8.zip differ diff --git a/.yarn/cache/thenify-all-npm-1.6.0-96309bbc8b-dba7cc8a23.zip b/.yarn/cache/thenify-all-npm-1.6.0-96309bbc8b-dba7cc8a23.zip new file mode 100644 index 0000000..59a2bc6 Binary files /dev/null and b/.yarn/cache/thenify-all-npm-1.6.0-96309bbc8b-dba7cc8a23.zip differ diff --git a/.yarn/cache/thenify-npm-3.3.1-030bedb22c-84e1b804bf.zip b/.yarn/cache/thenify-npm-3.3.1-030bedb22c-84e1b804bf.zip new file mode 100644 index 0000000..4710c40 Binary files /dev/null and b/.yarn/cache/thenify-npm-3.3.1-030bedb22c-84e1b804bf.zip differ diff --git a/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip b/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip new file mode 100644 index 0000000..bed5e12 Binary files /dev/null and b/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip differ diff --git a/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip b/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip new file mode 100644 index 0000000..acdc963 Binary files /dev/null and b/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip differ diff --git a/.yarn/cache/ts-interface-checker-npm-0.1.13-0c7b064494-20c29189c2.zip b/.yarn/cache/ts-interface-checker-npm-0.1.13-0c7b064494-20c29189c2.zip new file mode 100644 index 0000000..db41941 Binary files /dev/null and b/.yarn/cache/ts-interface-checker-npm-0.1.13-0c7b064494-20c29189c2.zip differ diff --git a/.yarn/cache/type-check-npm-0.4.0-60565800ce-ec688ebfc9.zip b/.yarn/cache/type-check-npm-0.4.0-60565800ce-ec688ebfc9.zip new file mode 100644 index 0000000..85a0295 Binary files /dev/null and b/.yarn/cache/type-check-npm-0.4.0-60565800ce-ec688ebfc9.zip differ diff --git a/.yarn/cache/type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip b/.yarn/cache/type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip new file mode 100644 index 0000000..8222fdc Binary files /dev/null and b/.yarn/cache/type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip differ diff --git a/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip b/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip new file mode 100644 index 0000000..f68a3c2 Binary files /dev/null and b/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip differ diff --git a/.yarn/cache/unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip b/.yarn/cache/unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip new file mode 100644 index 0000000..7230bc6 Binary files /dev/null and b/.yarn/cache/unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip differ diff --git a/.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip b/.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip new file mode 100644 index 0000000..bb91bbf Binary files /dev/null and b/.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip differ diff --git a/.yarn/cache/unique-slug-npm-4.0.0-e6b08f28aa-0884b58365.zip b/.yarn/cache/unique-slug-npm-4.0.0-e6b08f28aa-0884b58365.zip new file mode 100644 index 0000000..9d1cb9f Binary files /dev/null and b/.yarn/cache/unique-slug-npm-4.0.0-e6b08f28aa-0884b58365.zip differ diff --git a/.yarn/cache/update-browserslist-db-npm-1.0.11-2c8e64258f-b98327518f.zip b/.yarn/cache/update-browserslist-db-npm-1.0.11-2c8e64258f-b98327518f.zip new file mode 100644 index 0000000..afa8836 Binary files /dev/null and b/.yarn/cache/update-browserslist-db-npm-1.0.11-2c8e64258f-b98327518f.zip differ diff --git a/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip b/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip new file mode 100644 index 0000000..bd21deb Binary files /dev/null and b/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip differ diff --git a/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip b/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip new file mode 100644 index 0000000..c2309cf Binary files /dev/null and b/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip differ diff --git a/.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip b/.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip new file mode 100644 index 0000000..3970294 Binary files /dev/null and b/.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip differ diff --git a/.yarn/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip b/.yarn/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip new file mode 100644 index 0000000..fef0ce4 Binary files /dev/null and b/.yarn/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip differ diff --git a/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip b/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip new file mode 100644 index 0000000..389ec5e Binary files /dev/null and b/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip differ diff --git a/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip b/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip new file mode 100644 index 0000000..e7e7d54 Binary files /dev/null and b/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip differ diff --git a/.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip b/.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip new file mode 100644 index 0000000..4dc7fcc Binary files /dev/null and b/.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip differ diff --git a/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip b/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip new file mode 100644 index 0000000..518977e Binary files /dev/null and b/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip differ diff --git a/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip b/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip new file mode 100644 index 0000000..ab6ea6e Binary files /dev/null and b/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip differ diff --git a/.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip b/.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip new file mode 100644 index 0000000..2ee78f3 Binary files /dev/null and b/.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip differ diff --git a/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip b/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip new file mode 100644 index 0000000..6072a9f Binary files /dev/null and b/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip differ diff --git a/.yarn/cache/ws-npm-7.4.6-9c9a725604-3a990b32ed.zip b/.yarn/cache/ws-npm-7.4.6-9c9a725604-3a990b32ed.zip new file mode 100644 index 0000000..944e92b Binary files /dev/null and b/.yarn/cache/ws-npm-7.4.6-9c9a725604-3a990b32ed.zip differ diff --git a/.yarn/cache/yallist-npm-3.1.1-a568a556b4-48f7bb00dc.zip b/.yarn/cache/yallist-npm-3.1.1-a568a556b4-48f7bb00dc.zip new file mode 100644 index 0000000..04dc748 Binary files /dev/null and b/.yarn/cache/yallist-npm-3.1.1-a568a556b4-48f7bb00dc.zip differ diff --git a/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip b/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip new file mode 100644 index 0000000..f2d3306 Binary files /dev/null and b/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip differ diff --git a/.yarn/cache/yaml-npm-2.3.1-743f5688d1-2c7bc9a7cd.zip b/.yarn/cache/yaml-npm-2.3.1-743f5688d1-2c7bc9a7cd.zip new file mode 100644 index 0000000..abc6f7c Binary files /dev/null and b/.yarn/cache/yaml-npm-2.3.1-743f5688d1-2c7bc9a7cd.zip differ diff --git a/.yarn/cache/yarn-npm-1.22.19-6ba13b96dc-b43d2cc5fe.zip b/.yarn/cache/yarn-npm-1.22.19-6ba13b96dc-b43d2cc5fe.zip new file mode 100644 index 0000000..b91e6d6 Binary files /dev/null and b/.yarn/cache/yarn-npm-1.22.19-6ba13b96dc-b43d2cc5fe.zip differ diff --git a/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip b/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip new file mode 100644 index 0000000..f56730d Binary files /dev/null and b/.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip differ diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 0000000..a2d926b Binary files /dev/null and b/.yarn/install-state.gz differ diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..3186f3f --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/README.md b/README.md index 0a95675..3456b1b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,139 @@ -# recCoin-frontend -Frontend Folder for the reccoin platform +## Recoin +Website: http://url.netlify.com +
+Smart Contract: https://github.com/ -# Link to recCoin frontend sitemap -[https://octopus.do/o8eges8bxgc](https://octopus.do/o8eges8bxgc) +## Stacks: +Solidity, React, bootstrap & Third-web -# Link to recCoin Whitepaper -[https://local-tellurium-76a.notion.site/THE-RECCOIN-WHITEPAPER-70d3ed1358c1466b82666ca07f1976a1](https://local-tellurium-76a.notion.site/THE-RECCOIN-WHITEPAPER-70d3ed1358c1466b82666ca07f1976a1) +## NOTE: Use Goerli Network to test & Pinata for image url -# Link to Product Requirements Document -[https://local-tellurium-76a.notion.site/Product-Requirements-Document-PRD-for-the-RecCoin-Platform-efbd17cefb294761b676f977bdeb2b05](https://local-tellurium-76a.notion.site/Product-Requirements-Document-PRD-for-the-RecCoin-Platform-efbd17cefb294761b676f977bdeb2b05) +## Building the project -# Link to description of available positions -[https://local-tellurium-76a.notion.site/Job-Descriptions-for-the-RecCoin-Platform-Project-684b47082d84450489363722984b1463](https://local-tellurium-76a.notion.site/Job-Descriptions-for-the-RecCoin-Platform-Project-684b47082d84450489363722984b1463) +After any changes to the contract, run: + +```bash +#For testing +yarn run dev + +# production +yarn run build +# or +yarn build +``` + +to compile your contracts. This will also detect the [Contracts Extensions Docs](https://portal.thirdweb.com/contractkit) detected on your contract. + +## Deploying Contracts + +When you're ready to deploy your contracts, just run one of the following command to deploy you're contracts: + + +### Ether.js Documentation + +**Introduction** + +Ether.js is a JavaScript library that provides a easy and simple way to interact with the Ethereum blockchain. The ethers.js library aims to be a complete and compact library for interacting with the Ethereum Blockchain and its ecosystem. It allows developers to build decentralized applications (DApps) and integrate Ethereum functionality into their projects. This documentation will provide the necessary details on the installation, setup, and usage of Ether.js in RecCoin Platform Project. + +**Table of Contents** +- Installation +- Setup +- Key Concepts +- Usage Examples +- API Reference +- Resources + +**Installation** + +To install Ether.js, you can use npm (Node Package Manager). Open your project directory and run the following command: +`npm install ethers@beta-exports` +This will download and install the Ether.js package along with its dependencies. + +**Setup** +Once Ether.js is installed, you need to set it up in your project. Here are the steps: + +Import Ether.js into your JavaScript file: +_node.js require_ +`import { ethers } from "ethers";` + +**Common Terminology** + +- Provide: A [Provider](https://docs.ethers.org/v6/api/providers/#Provider) is a read-only connection to the blockchain, which allows querying the blockchain state, such as account, block or transaction details, querying event logs or evaluating read-only code using call. +- Signer: A [Signer](https://docs.ethers.org/v6/api/providers/#Signer) wraps all operations that interact with an account. A Signer is a class which (usually) in some way directly or indirectly has access to a private key, which can sign messages and transactions to authorize the network to charge your account ether to perform operations. +- Contract: A [Contract](https://docs.ethers.org/v6/api/contract/#Contract) is a program that has been deployed to the blockchain, which includes some code and has allocated storage which it can read from and write to. +- Wallets: Wallets in Ether.js represent Ethereum accounts. They allow you to sign and send transactions, interact with smart contracts, and manage your account's balance and transactions. +- Transactions: Transactions in Ether.js represent actions performed on the Ethereum network, such as sending Ether or interacting with a smart contract. You can create, sign, and send transactions using Ether.js. + +**Connect to an Ethereum provider:** +_Connecting to MetaMask_ +``` +let signer = null; + +let provider; +if (window.ethereum == null) { + console.log("MetaMask not installed; using read-only defaults") + provider = ethers.getDefaultProvider() +} else { + provider = new ethers.BrowserProvider(window.ethereum) + signer = await provider.getSigner(); +} +``` +_Connecting to an RPC client_ +``` +const provider = new ethers.JsonRpcProvider(url) +const signer = await provider.getSigner() +``` + +_Basic Queries_ +``` +await provider.getBlockNumber() + +balance = await provider.getBalance("ethers.eth") +ethers.utils.formatEther(balance) + +ethers.utils.parseEther("1.0") + +``` +You're ready to start using Ether.js in your project! + + +**Usage Examples** + +_Sending Ether:_ +``` +const sendEther = async (to, amount) => { + const transaction = { + to: to, + value: ether.utils.parseEther(amount.toString()) + }; + const signedTransaction = await signer.sendTransaction(transaction); + console.log('Transaction hash:', signedTransaction.hash); +}; +``` +_Deploying a smart contract:_ +``` +const deployContract = async () => { + const contract = new ether.ContractFactory(contractAbi, contractBytecode, signer); + const deployContract = await contract.deploy(); + console.log('Contract address:', deployContract.address); +}; +``` + +**API Reference** +For detailed information about the available classes, methods, and properties in Ether.js, refer to the official API reference: [Ether.js API Reference](https://docs.ethers.org/v6/api/) + + +**Resources** +Here are some additional resources that you may find helpful for working with Ether.js: + +[Ether.js Documentation](https://docs.ethers.org/v6/) +[Ether.js GitHub Repository](https://github.com/ethers-io/ethers.js/) +[Ethereum Official Website](https://ethereum.org/) + +These resources provide further information, examples, and references to help you explore and utilize Ether.js effectively. + +```bash +npm run deploy +# or +yarn deploy +``` \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..d27b5d2 --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + + + + + + Recylox + + + + + +
+ + + diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..262b25f --- /dev/null +++ b/netlify.toml @@ -0,0 +1,4 @@ +[[redirects]] +from = "/*" +to = "/" +status = 200 \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..cd4ac5c --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "reccoin-frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@rainbow-me/rainbowkit": "^1.0.3", + "ethers": "5.7.2", + "file-saver": "^2.0.5", + "html2canvas": "^1.4.1", + "jspdf": "^2.5.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-icons": "^4.8.0", + "react-router-dom": "^6.11.1", + "sweetalert2": "^11.7.12", + "wagmi": "^1.3.0", + "yarn": "^1.22.19" + }, + "devDependencies": { + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@vitejs/plugin-react": "^4.0.0", + "autoprefixer": "^10.4.14", + "eslint": "^8.38.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.3.4", + "postcss": "^8.4.23", + "tailwindcss": "^3.3.2", + "vite": "^4.3.2" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/1.png b/public/1.png new file mode 100644 index 0000000..428f988 Binary files /dev/null and b/public/1.png differ diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..f824337 --- /dev/null +++ b/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 \ No newline at end of file diff --git a/public/mark.png b/public/mark.png new file mode 100644 index 0000000..d80c624 Binary files /dev/null and b/public/mark.png differ diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/.env b/src/.env new file mode 100644 index 0000000..cbe3a15 --- /dev/null +++ b/src/.env @@ -0,0 +1 @@ +VITE_ADMIN_ADDRESS=0x1928062edfAFbCCb7D1C788B24F6aCdE80869048 diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..3fb3548 --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +/* #root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} */ diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..80d5021 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,20 @@ +// import { useState } from 'react' +import { MainRoutes } from './routes/index'; +import { UserDashboardRoutes } from './routes/dashboard/user.jsx'; +import { CompanyDashboardRoutes } from './routes/dashboard/company.jsx'; +import { AdminDashboardRoutes } from "./routes/dashboard/admin.jsx"; + +function App() { + return ( + <> + + + + + + ) +} + + + +export default App; diff --git a/src/assets/AttachmentIcon.png b/src/assets/AttachmentIcon.png new file mode 100644 index 0000000..1cbd0b1 Binary files /dev/null and b/src/assets/AttachmentIcon.png differ diff --git a/src/assets/DollarSVG.svg b/src/assets/DollarSVG.svg new file mode 100644 index 0000000..4f0116d --- /dev/null +++ b/src/assets/DollarSVG.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/EllipseAboutUS.svg b/src/assets/EllipseAboutUS.svg new file mode 100644 index 0000000..3bbf2b6 --- /dev/null +++ b/src/assets/EllipseAboutUS.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/Empowering_image_bg.png b/src/assets/Empowering_image_bg.png new file mode 100644 index 0000000..fbbebda Binary files /dev/null and b/src/assets/Empowering_image_bg.png differ diff --git a/src/assets/HandSVG.svg b/src/assets/HandSVG.svg new file mode 100644 index 0000000..31fa566 --- /dev/null +++ b/src/assets/HandSVG.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/PolygonSVG.svg b/src/assets/PolygonSVG.svg new file mode 100644 index 0000000..3d8f9d5 --- /dev/null +++ b/src/assets/PolygonSVG.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/Smiley.png b/src/assets/Smiley.png new file mode 100644 index 0000000..70f3f40 Binary files /dev/null and b/src/assets/Smiley.png differ diff --git a/src/assets/Vector.png b/src/assets/Vector.png new file mode 100644 index 0000000..4bc1571 Binary files /dev/null and b/src/assets/Vector.png differ diff --git a/src/assets/aboutUs.svg b/src/assets/aboutUs.svg new file mode 100644 index 0000000..fba7442 --- /dev/null +++ b/src/assets/aboutUs.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/aboutUsBg.png b/src/assets/aboutUsBg.png new file mode 100644 index 0000000..e334f83 Binary files /dev/null and b/src/assets/aboutUsBg.png differ diff --git a/src/assets/aboutUsBlackIcon.svg b/src/assets/aboutUsBlackIcon.svg new file mode 100644 index 0000000..8458b6e --- /dev/null +++ b/src/assets/aboutUsBlackIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/aboutUsWhiteIcon.svg b/src/assets/aboutUsWhiteIcon.svg new file mode 100644 index 0000000..d71af9c --- /dev/null +++ b/src/assets/aboutUsWhiteIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/addUserIcon.svg b/src/assets/addUserIcon.svg new file mode 100644 index 0000000..b16f99b --- /dev/null +++ b/src/assets/addUserIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/approveIcon.svg b/src/assets/approveIcon.svg new file mode 100644 index 0000000..89895cd --- /dev/null +++ b/src/assets/approveIcon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/approved.png b/src/assets/approved.png new file mode 100644 index 0000000..a888e25 Binary files /dev/null and b/src/assets/approved.png differ diff --git a/src/assets/arrowDown.svg b/src/assets/arrowDown.svg new file mode 100644 index 0000000..b6c4d64 --- /dev/null +++ b/src/assets/arrowDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/arrowRight.svg b/src/assets/arrowRight.svg new file mode 100644 index 0000000..88ae4de --- /dev/null +++ b/src/assets/arrowRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/arrowUp.png b/src/assets/arrowUp.png new file mode 100644 index 0000000..4080031 Binary files /dev/null and b/src/assets/arrowUp.png differ diff --git a/src/assets/bag.png b/src/assets/bag.png new file mode 100644 index 0000000..8332e07 Binary files /dev/null and b/src/assets/bag.png differ diff --git a/src/assets/battery.svg b/src/assets/battery.svg new file mode 100644 index 0000000..1f678ff --- /dev/null +++ b/src/assets/battery.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/blogImage1.png b/src/assets/blogImage1.png new file mode 100644 index 0000000..34e10da Binary files /dev/null and b/src/assets/blogImage1.png differ diff --git a/src/assets/blogPost.png b/src/assets/blogPost.png new file mode 100644 index 0000000..d32a322 Binary files /dev/null and b/src/assets/blogPost.png differ diff --git a/src/assets/burnIcon.svg b/src/assets/burnIcon.svg new file mode 100644 index 0000000..6dddb5d --- /dev/null +++ b/src/assets/burnIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/careers_img.svg b/src/assets/careers_img.svg new file mode 100644 index 0000000..9558fa6 --- /dev/null +++ b/src/assets/careers_img.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/chatGreen.svg b/src/assets/chatGreen.svg new file mode 100644 index 0000000..2c2a2dc --- /dev/null +++ b/src/assets/chatGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/chatWhite.svg b/src/assets/chatWhite.svg new file mode 100644 index 0000000..b51e6e8 --- /dev/null +++ b/src/assets/chatWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/check.png b/src/assets/check.png new file mode 100644 index 0000000..27ff27e Binary files /dev/null and b/src/assets/check.png differ diff --git a/src/assets/clean-image-1.svg b/src/assets/clean-image-1.svg new file mode 100644 index 0000000..f2005f6 --- /dev/null +++ b/src/assets/clean-image-1.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/close.svg b/src/assets/close.svg new file mode 100644 index 0000000..4c21280 --- /dev/null +++ b/src/assets/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/company-bg.svg b/src/assets/company-bg.svg new file mode 100644 index 0000000..f30569c --- /dev/null +++ b/src/assets/company-bg.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/companyGreen.svg b/src/assets/companyGreen.svg new file mode 100644 index 0000000..953a47b --- /dev/null +++ b/src/assets/companyGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/companyWhite.svg b/src/assets/companyWhite.svg new file mode 100644 index 0000000..29143d5 --- /dev/null +++ b/src/assets/companyWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/contest.png b/src/assets/contest.png new file mode 100644 index 0000000..2e65e9c Binary files /dev/null and b/src/assets/contest.png differ diff --git a/src/assets/copyIcon.svg b/src/assets/copyIcon.svg new file mode 100644 index 0000000..1faa23b --- /dev/null +++ b/src/assets/copyIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/dashboardGreen.svg b/src/assets/dashboardGreen.svg new file mode 100644 index 0000000..89aed90 --- /dev/null +++ b/src/assets/dashboardGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/dashboardWhite.svg b/src/assets/dashboardWhite.svg new file mode 100644 index 0000000..00f33a8 --- /dev/null +++ b/src/assets/dashboardWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/deposit-ic.svg b/src/assets/deposit-ic.svg new file mode 100644 index 0000000..701e9f7 --- /dev/null +++ b/src/assets/deposit-ic.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/deposit.png b/src/assets/deposit.png new file mode 100644 index 0000000..4d9e19b Binary files /dev/null and b/src/assets/deposit.png differ diff --git a/src/assets/depositGreenICon.svg b/src/assets/depositGreenICon.svg new file mode 100644 index 0000000..28f10d6 --- /dev/null +++ b/src/assets/depositGreenICon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/dot.svg b/src/assets/dot.svg new file mode 100644 index 0000000..cfdcf5f --- /dev/null +++ b/src/assets/dot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/downloadIcon.svg b/src/assets/downloadIcon.svg new file mode 100644 index 0000000..cd7600c --- /dev/null +++ b/src/assets/downloadIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/dropdown.svg b/src/assets/dropdown.svg new file mode 100644 index 0000000..8b62170 --- /dev/null +++ b/src/assets/dropdown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/earnReccoinBlackIcon.svg b/src/assets/earnReccoinBlackIcon.svg new file mode 100644 index 0000000..72a20c5 --- /dev/null +++ b/src/assets/earnReccoinBlackIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/earnReccoinWhiteIcon.svg b/src/assets/earnReccoinWhiteIcon.svg new file mode 100644 index 0000000..c7b2b45 --- /dev/null +++ b/src/assets/earnReccoinWhiteIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/ellipse-bg.svg b/src/assets/ellipse-bg.svg new file mode 100644 index 0000000..d5b7c34 --- /dev/null +++ b/src/assets/ellipse-bg.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/email.svg b/src/assets/email.svg new file mode 100644 index 0000000..9169703 --- /dev/null +++ b/src/assets/email.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/emailBlackIcon.svg b/src/assets/emailBlackIcon.svg new file mode 100644 index 0000000..cf0e58e --- /dev/null +++ b/src/assets/emailBlackIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/environmentIc.svg b/src/assets/environmentIc.svg new file mode 100644 index 0000000..c498ff6 --- /dev/null +++ b/src/assets/environmentIc.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/ewaste.svg b/src/assets/ewaste.svg new file mode 100644 index 0000000..0a6bdc6 --- /dev/null +++ b/src/assets/ewaste.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/eyeOpenIcon.svg b/src/assets/eyeOpenIcon.svg new file mode 100644 index 0000000..c3f11ff --- /dev/null +++ b/src/assets/eyeOpenIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/eyesIcon.svg b/src/assets/eyesIcon.svg new file mode 100644 index 0000000..92a1a5c --- /dev/null +++ b/src/assets/eyesIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/faq.png b/src/assets/faq.png new file mode 100644 index 0000000..70659a7 Binary files /dev/null and b/src/assets/faq.png differ diff --git a/src/assets/faq.svg b/src/assets/faq.svg new file mode 100644 index 0000000..7c0fbab --- /dev/null +++ b/src/assets/faq.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/favicon-16.svg b/src/assets/favicon-16.svg new file mode 100644 index 0000000..0e1b048 --- /dev/null +++ b/src/assets/favicon-16.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/favicon-32.svg b/src/assets/favicon-32.svg new file mode 100644 index 0000000..8bc8fa3 --- /dev/null +++ b/src/assets/favicon-32.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/favicon-64.svg b/src/assets/favicon-64.svg new file mode 100644 index 0000000..59bd5b4 --- /dev/null +++ b/src/assets/favicon-64.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/filter.png b/src/assets/filter.png new file mode 100644 index 0000000..273ca29 Binary files /dev/null and b/src/assets/filter.png differ diff --git a/src/assets/handInAboutPage.png b/src/assets/handInAboutPage.png new file mode 100644 index 0000000..0eb8203 Binary files /dev/null and b/src/assets/handInAboutPage.png differ diff --git a/src/assets/hero-bg.svg b/src/assets/hero-bg.svg new file mode 100644 index 0000000..5507f90 --- /dev/null +++ b/src/assets/hero-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/hero-img-bg.png b/src/assets/hero-img-bg.png new file mode 100644 index 0000000..f9f9e76 Binary files /dev/null and b/src/assets/hero-img-bg.png differ diff --git a/src/assets/heyYou.png b/src/assets/heyYou.png new file mode 100644 index 0000000..b27e990 Binary files /dev/null and b/src/assets/heyYou.png differ diff --git a/src/assets/historyGreen.svg b/src/assets/historyGreen.svg new file mode 100644 index 0000000..d5c81ce --- /dev/null +++ b/src/assets/historyGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/historyWhite.svg b/src/assets/historyWhite.svg new file mode 100644 index 0000000..a510668 --- /dev/null +++ b/src/assets/historyWhite.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/home-bgg.png b/src/assets/home-bgg.png new file mode 100644 index 0000000..e5dec87 Binary files /dev/null and b/src/assets/home-bgg.png differ diff --git a/src/assets/how_it_works.png b/src/assets/how_it_works.png new file mode 100644 index 0000000..2d0f632 Binary files /dev/null and b/src/assets/how_it_works.png differ diff --git a/src/assets/how_it_works_bg.png b/src/assets/how_it_works_bg.png new file mode 100644 index 0000000..c778161 Binary files /dev/null and b/src/assets/how_it_works_bg.png differ diff --git a/src/assets/image-2.png b/src/assets/image-2.png new file mode 100644 index 0000000..3e79bbe Binary files /dev/null and b/src/assets/image-2.png differ diff --git a/src/assets/innovationIc.svg b/src/assets/innovationIc.svg new file mode 100644 index 0000000..21768af --- /dev/null +++ b/src/assets/innovationIc.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/lightSVG.svg b/src/assets/lightSVG.svg new file mode 100644 index 0000000..0fb95c8 --- /dev/null +++ b/src/assets/lightSVG.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..1628ccc --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/menu-ic.svg b/src/assets/menu-ic.svg new file mode 100644 index 0000000..d43d2b3 --- /dev/null +++ b/src/assets/menu-ic.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/menuGreen.svg b/src/assets/menuGreen.svg new file mode 100644 index 0000000..0a69b3f --- /dev/null +++ b/src/assets/menuGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/merchant.svg b/src/assets/merchant.svg new file mode 100644 index 0000000..b654f24 --- /dev/null +++ b/src/assets/merchant.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/metal.svg b/src/assets/metal.svg new file mode 100644 index 0000000..8471044 --- /dev/null +++ b/src/assets/metal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/mintIcon.svg b/src/assets/mintIcon.svg new file mode 100644 index 0000000..42536b0 --- /dev/null +++ b/src/assets/mintIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/news-2.svg b/src/assets/news-2.svg new file mode 100644 index 0000000..a19febc --- /dev/null +++ b/src/assets/news-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/news-3.svg b/src/assets/news-3.svg new file mode 100644 index 0000000..0862d06 --- /dev/null +++ b/src/assets/news-3.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/news.png b/src/assets/news.png new file mode 100644 index 0000000..2f33f4c Binary files /dev/null and b/src/assets/news.png differ diff --git a/src/assets/news.svg b/src/assets/news.svg new file mode 100644 index 0000000..3ea3f94 --- /dev/null +++ b/src/assets/news.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/notification.svg b/src/assets/notification.svg new file mode 100644 index 0000000..0b4ca12 --- /dev/null +++ b/src/assets/notification.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/notificationGreen.svg b/src/assets/notificationGreen.svg new file mode 100644 index 0000000..6a72bb9 --- /dev/null +++ b/src/assets/notificationGreen.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/notificationWhite.svg b/src/assets/notificationWhite.svg new file mode 100644 index 0000000..d145c4b --- /dev/null +++ b/src/assets/notificationWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/notifications.png b/src/assets/notifications.png new file mode 100644 index 0000000..71026ec Binary files /dev/null and b/src/assets/notifications.png differ diff --git a/src/assets/offersGreen.svg b/src/assets/offersGreen.svg new file mode 100644 index 0000000..5fd56dd --- /dev/null +++ b/src/assets/offersGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/offersWhite.svg b/src/assets/offersWhite.svg new file mode 100644 index 0000000..8c2131e --- /dev/null +++ b/src/assets/offersWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/paper.svg b/src/assets/paper.svg new file mode 100644 index 0000000..082f437 --- /dev/null +++ b/src/assets/paper.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/pending.png b/src/assets/pending.png new file mode 100644 index 0000000..ddd64f1 Binary files /dev/null and b/src/assets/pending.png differ diff --git a/src/assets/plastic.svg b/src/assets/plastic.svg new file mode 100644 index 0000000..ea3731d --- /dev/null +++ b/src/assets/plastic.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/privacyPolicyBg.png b/src/assets/privacyPolicyBg.png new file mode 100644 index 0000000..2ffe1df Binary files /dev/null and b/src/assets/privacyPolicyBg.png differ diff --git a/src/assets/profile.png b/src/assets/profile.png new file mode 100644 index 0000000..50da2a0 Binary files /dev/null and b/src/assets/profile.png differ diff --git a/src/assets/profile.svg b/src/assets/profile.svg new file mode 100644 index 0000000..53f723e --- /dev/null +++ b/src/assets/profile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/reccoin.png b/src/assets/reccoin.png new file mode 100644 index 0000000..e89f283 Binary files /dev/null and b/src/assets/reccoin.png differ diff --git a/src/assets/reccoin_reward.png b/src/assets/reccoin_reward.png new file mode 100644 index 0000000..a0d48ac Binary files /dev/null and b/src/assets/reccoin_reward.png differ diff --git a/src/assets/recycleSVG.svg b/src/assets/recycleSVG.svg new file mode 100644 index 0000000..090806b --- /dev/null +++ b/src/assets/recycleSVG.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/recyclingBg.png b/src/assets/recyclingBg.png new file mode 100644 index 0000000..4d06ae7 Binary files /dev/null and b/src/assets/recyclingBg.png differ diff --git a/src/assets/rewardIc.svg b/src/assets/rewardIc.svg new file mode 100644 index 0000000..35e1dc5 --- /dev/null +++ b/src/assets/rewardIc.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/rubber.svg b/src/assets/rubber.svg new file mode 100644 index 0000000..63ed854 --- /dev/null +++ b/src/assets/rubber.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/saferu.svg b/src/assets/saferu.svg new file mode 100644 index 0000000..fbf5532 --- /dev/null +++ b/src/assets/saferu.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/search.png b/src/assets/search.png new file mode 100644 index 0000000..3018375 Binary files /dev/null and b/src/assets/search.png differ diff --git a/src/assets/search.svg b/src/assets/search.svg new file mode 100644 index 0000000..f02412e --- /dev/null +++ b/src/assets/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/sendIcon.svg b/src/assets/sendIcon.svg new file mode 100644 index 0000000..37b50b0 --- /dev/null +++ b/src/assets/sendIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/settingSVG.svg b/src/assets/settingSVG.svg new file mode 100644 index 0000000..0375876 --- /dev/null +++ b/src/assets/settingSVG.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/settings.png b/src/assets/settings.png new file mode 100644 index 0000000..4aafac4 Binary files /dev/null and b/src/assets/settings.png differ diff --git a/src/assets/settingsGreen.svg b/src/assets/settingsGreen.svg new file mode 100644 index 0000000..8594f6b --- /dev/null +++ b/src/assets/settingsGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/settingsIc.svg b/src/assets/settingsIc.svg new file mode 100644 index 0000000..f88f58c --- /dev/null +++ b/src/assets/settingsIc.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/settingsWhite.svg b/src/assets/settingsWhite.svg new file mode 100644 index 0000000..fbae386 --- /dev/null +++ b/src/assets/settingsWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/stateGreen.svg b/src/assets/stateGreen.svg new file mode 100644 index 0000000..e025b77 --- /dev/null +++ b/src/assets/stateGreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/stateRed.svg b/src/assets/stateRed.svg new file mode 100644 index 0000000..5ea72d5 --- /dev/null +++ b/src/assets/stateRed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/subscribeBg.png b/src/assets/subscribeBg.png new file mode 100644 index 0000000..8c0d2c2 Binary files /dev/null and b/src/assets/subscribeBg.png differ diff --git a/src/assets/support.png b/src/assets/support.png new file mode 100644 index 0000000..441a3b1 Binary files /dev/null and b/src/assets/support.png differ diff --git a/src/assets/support.svg b/src/assets/support.svg new file mode 100644 index 0000000..507970f --- /dev/null +++ b/src/assets/support.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/tickGreenIcon.svg b/src/assets/tickGreenIcon.svg new file mode 100644 index 0000000..6084af1 --- /dev/null +++ b/src/assets/tickGreenIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/tickIcon.svg b/src/assets/tickIcon.svg new file mode 100644 index 0000000..763634c --- /dev/null +++ b/src/assets/tickIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/trustIc.svg b/src/assets/trustIc.svg new file mode 100644 index 0000000..ac47172 --- /dev/null +++ b/src/assets/trustIc.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/unifiedPlanet.svg b/src/assets/unifiedPlanet.svg new file mode 100644 index 0000000..42f2c9c --- /dev/null +++ b/src/assets/unifiedPlanet.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/user-icon.svg b/src/assets/user-icon.svg new file mode 100644 index 0000000..b8788ab --- /dev/null +++ b/src/assets/user-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/user.svg b/src/assets/user.svg new file mode 100644 index 0000000..688b343 --- /dev/null +++ b/src/assets/user.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/src/assets/users.svg b/src/assets/users.svg new file mode 100644 index 0000000..c7a5346 --- /dev/null +++ b/src/assets/users.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/whitePaperHeroBg.png b/src/assets/whitePaperHeroBg.png new file mode 100644 index 0000000..2874bcb Binary files /dev/null and b/src/assets/whitePaperHeroBg.png differ diff --git a/src/assets/xtraGreen.svg b/src/assets/xtraGreen.svg new file mode 100644 index 0000000..6932414 --- /dev/null +++ b/src/assets/xtraGreen.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/SweetAlert/SuccessAlert.jsx b/src/components/SweetAlert/SuccessAlert.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/about_us_components/AboutUsAndEarnRecoin.jsx b/src/components/about_us_components/AboutUsAndEarnRecoin.jsx new file mode 100644 index 0000000..a9080d5 --- /dev/null +++ b/src/components/about_us_components/AboutUsAndEarnRecoin.jsx @@ -0,0 +1,35 @@ +import { useState } from "react" +import About from "../homepage_components/about"; +import { EarnReccoinReward } from "../homepage_components/earnReccoin"; +import aboutUsWhiteIcon from '../../assets/aboutUsWhiteIcon.svg' +import aboutUsBlackIcon from '../../assets/aboutUsBlackIcon.svg' +import earnReccoinWhiteIcon from '../../assets/earnReccoinWhiteIcon.svg' +import earnReccoinBlackIcon from '../../assets/earnReccoinBlackIcon.svg' + +const AboutUsAndEarnRecoin = () => { + + + return
+ +
+
+ + < About/> +
+
+ + +
+
+ + + +
+ +} + +export default AboutUsAndEarnRecoin \ No newline at end of file diff --git a/src/components/about_us_components/AboutUsHero.jsx b/src/components/about_us_components/AboutUsHero.jsx new file mode 100644 index 0000000..4485ad7 --- /dev/null +++ b/src/components/about_us_components/AboutUsHero.jsx @@ -0,0 +1,13 @@ +const AboutUsHero = () => { + return ( +
+
+

ABOUT RECYLOX

+
+

We Safeguard The Environment

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean feugiat dictum lacus, ut hendrerit mi pulvinar vel.

+
+ ); +}; + +export default AboutUsHero; diff --git a/src/components/about_us_components/Empowering.jsx b/src/components/about_us_components/Empowering.jsx new file mode 100644 index 0000000..19ba9d3 --- /dev/null +++ b/src/components/about_us_components/Empowering.jsx @@ -0,0 +1,101 @@ +import React from "react"; +import EmpoweringImageBg from "../../assets/Empowering_image_bg.png"; +import settingSVG from "../../assets/settingSVG.svg"; +import lightSVG from "../../assets/lightSVG.svg"; +import recycleSVG from "../../assets/recycleSVG.svg"; +import DollarSVG from "../../assets/DollarSVG.svg"; +import HandSVG from "../../assets/HandSVG.svg"; +import Polygon_about from "../../assets/PolygonSVG.svg"; + +const Empowering = () => { + const data = [ + { + vector: settingSVG, + topic: "Our Expertise", + content: + "With years of experience in the recycling industry, our team at Recylox possesses a deep understanding of waste management practices, recycling techniques, and market dynamics. We leverage this expertise to develop solutions that streamline recycling processes, improve efficiency, and maximize the impact of recycling efforts.", + }, + { + vector: lightSVG, + topic: "I.R.A", + content: + "(Innovative Recycling Approach) We take a fresh approach to recycling by integrating technology and cryptocurrency into the traditional recycling ecosystem. Our platform provides users with a seamless and convenient way to recycle various materials, transforming it into a rewarding experience. Through our user-friendly mobile application, individuals can track their recycling progress, earn RECYLOX tokens, and contribute to a sustainable future.", + }, + { + vector: recycleSVG, + topic: ( +
+

Environmental

+

Impact

+
+ ), + content: + "By recycling with RECYLOX, you become an active participant in reducing waste and preserving our environment. Each item you recycle translates into reduced landfill waste, decreased pollution, and conservation of natural resources. Through our advanced waste management techniques and partnerships with recycling facilities, we ensure that your efforts have a significant and measurable impact on our planet.", + }, + { + vector: DollarSVG, + topic: ( +
+

Rewards &

+

Incentives

+
+ ), + content: + "At RECYLOX, we believe in recognizing and incentivizing individuals for their recycling efforts. Every time you recycle, you earn RECYLOX tokens, our exclusive cryptocurrency. These tokens can be redeemed for various rewards, including discounts at partner stores, exclusive merchandise, and even charitable donations. By aligning economic benefits with environmental action, we motivate individuals to embrace recycling as a rewarding habit.", + }, + { + vector: HandSVG, + topic: ( +
+

Trust &

+

Transparency

+
+ ), + content: + "At RECYLOX, we prioritize trust and transparency in all our operations. We adhere to strict ethical and environmental standards, ensuring that your recyclables are processed responsibly and efficiently. Our blockchain-based system provides immutable records, guaranteeing the integrity of transactions and reinforcing trust between our users, partners, and our company.", + }, + ]; + + return ( +
+

+ Empowering Change through Recycling: +

+
+ {data.map((item, index) => ( +
+
+
+ Vector +
{item.topic}
+
+ polygonAboutUs +
+ +
    +
  • +
+ +
+
{item.content}
+
+
+ ))} +
+
+ ); +}; + +export default Empowering; diff --git a/src/components/about_us_components/JoinUs.jsx b/src/components/about_us_components/JoinUs.jsx new file mode 100644 index 0000000..be0e260 --- /dev/null +++ b/src/components/about_us_components/JoinUs.jsx @@ -0,0 +1,24 @@ + +const JoinUs = () => { + return ( +
+
+

Join Us in Making a Difference!

+

+ Together, we can transform the way we think about waste and create a + more sustainable future. By participating in our platform, you + contribute to the global effort to reduce plastic pollution while + also benefiting from the rewards and opportunities offered by + blockchain technology. +

+ +
+
+ ) +} + +export default JoinUs \ No newline at end of file diff --git a/src/components/about_us_components/Purpose.jsx b/src/components/about_us_components/Purpose.jsx new file mode 100644 index 0000000..f128a19 --- /dev/null +++ b/src/components/about_us_components/Purpose.jsx @@ -0,0 +1,64 @@ +// import React from 'react' +import handInAboutPage from './../../assets/handInAboutPage.png'; + +const Purpose = () => { + return ( +
+

+ At Recylox, we are revolutionizing the way we address the global plastic + incentivizes individuals to take action by collecting waste plastics and + rewards them with tokens. By partnering with leading plastic recycling + companies, we ensure that these collected plastics are repurposed and + recycled, contributing to a sustainable future. + Our mission is to + create a cleaner and greener future by encouraging individuals to + recycle through our innovative platform and rewarding them with our + exclusive cryptocurrency token, Recylox. +

+
+
+ +

+ Purpose & Values +

+ +
+
    + + At the core of our company are the following values: + +
  1. + + Environmental Stewardship: + + We are committed to protecting our planet and conserving its + resources. By promoting recycling and reducing waste, we aim to + minimize our ecological footprint and contribute to a sustainable + future. +
  2. +
  3. + Innovation: We + embrace innovation as a driving force behind our operations. By + leveraging advanced technologies, we continuously seek new and + efficient ways to enhance the recycling process and make it more + accessible to everyone. +
  4. +
  5. + Community Focus: We + believe in the power of communities to create lasting change. + Through collaboration and engagement, we strive to build a strong + network of individuals and organizations dedicated to recycling + and environmental preservation. +
  6. +
+
+
+
+ hand +
+
+
+ ); +}; + +export default Purpose; diff --git a/src/components/about_us_components/SweetAlert.jsx b/src/components/about_us_components/SweetAlert.jsx new file mode 100644 index 0000000..30801aa --- /dev/null +++ b/src/components/about_us_components/SweetAlert.jsx @@ -0,0 +1,17 @@ +import Swal from "sweetalert2" + +export const SweetAlert = ({icon, title, text}) => { + return ( + Swal.fire({ + icon: icon, + title: title, + text: text, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + ) +} diff --git a/src/components/about_us_components/Values.jsx b/src/components/about_us_components/Values.jsx new file mode 100644 index 0000000..2a0dec9 --- /dev/null +++ b/src/components/about_us_components/Values.jsx @@ -0,0 +1,8 @@ + +const Values = () => { + return ( +
Values
+ ) +} + +export default Values \ No newline at end of file diff --git a/src/components/about_us_components/Vision.jsx b/src/components/about_us_components/Vision.jsx new file mode 100644 index 0000000..833f3a6 --- /dev/null +++ b/src/components/about_us_components/Vision.jsx @@ -0,0 +1,32 @@ + +const Vision = () => { + return ( +
+

+ OUR VISION +

+

+ We envision a world where waste plastics are no longer seen as a problem + but rather as a valuable resource. Our goal is to empower individuals to + actively participate in the recycling process, creating a positive + impact on the environment while also benefiting from their efforts. By + utilizing blockchain technology, we provide a transparent and secure + platform that connects waste collectors with recycling companies, + creating a circular economy that promotes sustainability. +

+

+ Our Commitment to Sustainability +

+

+ We are deeply committed to fostering sustainability and reducing plastic + pollution. By incentivizing waste collection and recycling through our + platform, we aim to Promote the responsible disposal of waste plastics, + preventing them from polluting the environment and also ncourage the + adoption of sustainable practices and reduce reliance on virgin + plastics. +

+
+ ); +}; + +export default Vision; \ No newline at end of file diff --git a/src/components/blog/index.jsx b/src/components/blog/index.jsx new file mode 100644 index 0000000..7574588 --- /dev/null +++ b/src/components/blog/index.jsx @@ -0,0 +1,138 @@ +import { useState } from "react" +import { MdOutlineCalendarMonth, MdSchedule, MdOutlineArrowForward } from "react-icons/md"; +import { PropTypes } from "prop-types"; + + +export const BlogSection1 = () => { + return ( +
+

Re:Cycle: Transforming Waste into a Sustainable Future

+
+
+
+

'Sustainable' condenser tumble dryers create hundreds of tons of waterborne microfiber pollution

+

A new study has revealed that drying laundry using a condenser tumble dryer leads to hundreds of tons of potentially harmful microfibers being released into waterways and oceans across the UK and Europe.

+
+
+
+

Recent blog posts

+
+ {/* main */} +
+ blog thumbnail +

Plastics recycling market set to grow big

+

According to recent market research data, the plastics recycling market industry, is poised for major growth within the next decade.

+
+
+ +

May 20, 2023

+
+
+ +

Reading time: about 3 minutes

+
+
+
+ {/* aside */} +
+
+ blog thumbnail +

The Winners of the Plastics Recycling Awards Europe 2023

+
+
+ blog thumbnail +

The Winners of the Plastics Recycling Awards Europe 2023

+
+
+
+
+
+ ); +}; + +export const TitleBar = () => { + return ( +
+

All blog posts

+
+ ); +}; + +export const BlogSection2 = () => { + return ( +
+
+ + + + + + + + + + + + +
+
+ ); +}; + +const BlogCard = ({ img, alt, date, estimatedReadTime, title, desc }) => { + return ( +
+ {alt} +
+
+ +

{date}

+
+
+ +

Reading time: {estimatedReadTime}

+
+
+

{title}

+

{desc}

+
+ ); +}; + +export const BlogPagination = () => { + const [page, setPage] = useState(1) + + return ( +
+
+ +
+ setPage(1)} /> + setPage(2)} /> + setPage(3)} /> +

...

+
+ +
+
+ ); +}; + +const Number = ({ index,page }) => { + + return
{index}
; +}; + +// prototypes +BlogCard.propTypes = { + img: PropTypes.string.isRequired, + alt: PropTypes.string.isRequired, + date: PropTypes.string.isRequired, + estimatedReadTime: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + desc: PropTypes.string.isRequired, +}; + diff --git a/src/components/blog/newsletter.jsx b/src/components/blog/newsletter.jsx new file mode 100644 index 0000000..29a1e05 --- /dev/null +++ b/src/components/blog/newsletter.jsx @@ -0,0 +1,18 @@ +import {MdOutlineEmail} from "react-icons/md" + +const Newsletter = () => { + return ( +
+

Join Our Mailing List for Updates and Discounts!

+
+
+ + +
+ +
+
+ ); +} + +export default Newsletter \ No newline at end of file diff --git a/src/components/buttons/mediumButton.jsx b/src/components/buttons/mediumButton.jsx new file mode 100644 index 0000000..2063180 --- /dev/null +++ b/src/components/buttons/mediumButton.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import { Link } from 'react-router-dom' + +const MediumButton = ({text, linkto}) => { + return ( + {text} + ) +} + +export default MediumButton diff --git a/src/components/company_transactions/index.jsx b/src/components/company_transactions/index.jsx new file mode 100644 index 0000000..d6f2fdd --- /dev/null +++ b/src/components/company_transactions/index.jsx @@ -0,0 +1,98 @@ +/* eslint-disable react/prop-types */ +import { TbArrowsRightLeft } from "react-icons/tb"; +import { CgSearch } from "react-icons/cg"; +import { TiArrowSortedDown } from "react-icons/ti"; +import { MdCheck, MdClose } from "react-icons/md"; + +const CompanyTransactions = () => { + return ( +
+
+ +

Transactions

+
+

Welcome back. You have 1 transaction to verify.

+ +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + + + + + + {/* pagination */} +
+

2 out of 34

+
+

Previous

+
+

1

+

2

+

3

+

...

+
+

Next

+
+
+
+ ); +}; + +const Transaction = ({ date, refNum, origin, totalWeight, totalVal, status }) => { + return ( +
+
+

DATE AND TIME

+

{date}

+
+
+

REFERENCE NUMBER

+

{refNum}

+
+
+

ORIGIN

+

{origin}

+
+
+

TOTAL WEIGHT

+

{totalWeight}

+
+
+

TOTAL VALUE

+

{totalVal}

+
+ {status !== "pending" ? ( +
+

STATUS

+

{status.toUpperCase()}

+
+ ) : ( +
+
+ +
+
+ +
+
+ )} +
+ ); +}; + +export default CompanyTransactions; diff --git a/src/components/dashboard_components/AdminDashboardLayout.jsx b/src/components/dashboard_components/AdminDashboardLayout.jsx new file mode 100644 index 0000000..6f1087d --- /dev/null +++ b/src/components/dashboard_components/AdminDashboardLayout.jsx @@ -0,0 +1,154 @@ +import Logo from '../logo'; +import menuIcon from '../../assets/menu-ic.svg' +import { Link } from 'react-router-dom'; +import { DashboardFooterData } from '../../data/DashboardFooterData'; +import searchIcon from '../../assets/search.svg' +import { routes } from '../../routes/dashboard/admin.jsx' +import { useRecycle } from '../../context/recycle'; +import { useToken } from '../../context/recylox'; +import Header from '../navigation/Header'; + +const AdminDashboardLayout = ({dashboard_content, active_link}) => { + + const {connectedAccount} = useToken(); + const admin_address = '0x1928062edfAFbCCb7D1C788B24F6aCdE80869048'; + const connected_account = connectedAccount.toLowerCase(); + const adm_address = admin_address.toLowerCase(); + + if (connected_account == adm_address) { + return ( +
+ {/* toggle menu button */} + + + {/* left sidebar */} + + + {/* card component: header and content of dashboard */} +
+ + {/* dash board header */} +
+
+ +
+
+

+ ADMIN DASHBOARD +

+
+ {/* search box */} +
+ search-icon + +
+
+ + {/* dashboard content */} +
+ {dashboard_content} +
+
+ {/* dashboard footer */} +
+
+
+ {/* enter to earn a reccoin */} +

Enter to Earn a Recylox

+ {/* learn more button*/} + LEARN MORE +
+ + {/* other links */} +
+ {DashboardFooterData.map((footeritem, footerindex) => ( + + {`${footeritem.title} +

{footeritem.title}

+ + ))} +
+ {/*
*/} +
+
+ +
+ ); + } else { + + return
+
+
+

Unauthorized access!

+

+ Only Recylox admin are allowed access to this page. +

+
+
+ } + + + +}; + +export default AdminDashboardLayout; diff --git a/src/components/dashboard_components/CompanyDashboardLayout.jsx b/src/components/dashboard_components/CompanyDashboardLayout.jsx new file mode 100644 index 0000000..d32f0f1 --- /dev/null +++ b/src/components/dashboard_components/CompanyDashboardLayout.jsx @@ -0,0 +1,321 @@ +import Logo from "../logo"; +import menuIcon from "../../assets/menu-ic.svg"; +import { Link } from "react-router-dom"; +import { DashboardFooterData } from "../../data/DashboardFooterData"; +import searchIcon from "../../assets/search.svg"; +import { routes } from "../../routes/dashboard/company"; +import { useToken } from "../../context/recylox"; +import Header from "../navigation/Header"; + +const CompanyDashboardLayout = ({ dashboard_content, active_link }) => { + + const {connectedAccount, account_category} = useToken(); + + if (account_category === "company") { + return ( +
+ {/* toggle menu button */} + + + {/* left sidebar */} + + + {/* card component: header and content of dashboard4 */} +
+ {/* dash board header */} +
+
+ +
+
+

COMPANY DASHBOARD

+
+ {/* search box */} +
+ search-icon + +
+
+ + {/* dashboard content */} +
{dashboard_content}
+
+ + {/* dashboard footer */} +
+
+
+ {/* enter to earn a reccoin */} +

Enter to Earn a Recylox

+ {/* learn more button*/} + LEARN MORE +
+ + {/* other links */} +
+ {DashboardFooterData.map((footeritem, footerindex) => ( + + {`${footeritem.title} +

{footeritem.title}

+ + ))} +
+ {/*
*/} +
+
+
+ ); + } + else { + return
+
+
+

Unauthorized access!

+

+ Only registered users are allowed access to this page. Register + here to continue. +

+
+
+ } + +}; + +export default CompanyDashboardLayout; diff --git a/src/components/dashboard_components/UserDashboardLayout.jsx b/src/components/dashboard_components/UserDashboardLayout.jsx new file mode 100644 index 0000000..9248d1f --- /dev/null +++ b/src/components/dashboard_components/UserDashboardLayout.jsx @@ -0,0 +1,162 @@ +import { useRef, useState } from 'react'; +import Logo from '../logo'; +import menuIcon from '../../assets/menu-ic.svg' +import { Link } from 'react-router-dom'; +import { UserDashboardNavData } from '../../data/DashboardData'; +import { DashboardFooterData } from '../../data/DashboardFooterData'; +import searchIcon from '../../assets/search.svg' +import Deposit from '../../pages/company_dashboard/Deposit'; +import { routes } from '../../routes/dashboard/user.jsx' +import { useToken } from '../../context/recylox'; +import Header from '../navigation/Header'; + +const UserDashboardLayout = ({dashboard_content, active_link}) => { + + const {account_category, connectedAccount} = useToken() + + if (account_category === "picker") { + return ( +
+ + {/* toggle menu button */} + + + {/* left sidebar */} + + + {/* card component: header and content of dashboard */} +
+ + {/* dash board header */} +
+
+ +
+
+

+ USER DASHBOARD +

+
+ {/* search box */} +
+ search-icon + +
+
+ + {/* dashboard content */} +
+ {dashboard_content} +
+
+ + {/* dashboard footer */} +
+ +
+ +
+ {/* enter to earn a reccoin */} +

+ Enter to Earn a Recylox +

+ {/* learn more button*/} + + LEARN MORE + + +
+ + {/* other links */} +
+ { + DashboardFooterData.map((footeritem, footerindex) => + + {`${footeritem.title} +

{footeritem.title}

+ + ) + } + +
+ {/*
*/} +
+
+ +
+ ); + } else { + return
+
+
+

Unauthorized access!

+

+ Only registered users are allowed access to this page. Register + here to continue. +

+
+
+ } +}; + +export default UserDashboardLayout; diff --git a/src/components/footer.jsx b/src/components/footer.jsx new file mode 100644 index 0000000..b9a1a3b --- /dev/null +++ b/src/components/footer.jsx @@ -0,0 +1,25 @@ +import { Link } from "react-router-dom"; + +const Footer = () => { + return ( +
+ + {/* border text content */} +
+

+ Copyright 2023 RECYLOX | All Rights Reserved +

+
+ + {/* absolute left-[53%] -translate-x-1/2 md:left-[85%] */} + Privacy Policy + +
+ +
+
+ ); +}; + +export default Footer; diff --git a/src/components/homepage_components/HeroSection.jsx b/src/components/homepage_components/HeroSection.jsx new file mode 100644 index 0000000..33cac54 --- /dev/null +++ b/src/components/homepage_components/HeroSection.jsx @@ -0,0 +1,47 @@ +import React from "react"; +import heroImage from "../../assets/home-bgg.png"; +import MediumButton from "../buttons/mediumButton"; + +const Hero = () => { + return ( + <> +
+
+
+
+

+ RECYCLING +

+

+ WASTE +

+

+ Turn Trash into Treasure: Recycle, Earn Rewards, and Save the + Planet +

+

+ Recylox is a groundbreaking digital currency specifically + designed to revolutionize the world of recycling. Built on the + principles of blockchain technology. +

+

+ With Recylox, every time you recycle, you earn tokens that hold + real-world value. These tokens can be redeemed for a variety of + rewards, including discounts on eco-friendly products, access to + exclusive events, or even exchanged for other cryptocurrencies + or fiat currency. +

+ +
+ +
+ home-img +
+
+
+
+ + ); +}; + +export default Hero; diff --git a/src/components/homepage_components/HomeFooter.jsx b/src/components/homepage_components/HomeFooter.jsx new file mode 100644 index 0000000..0a63fe2 --- /dev/null +++ b/src/components/homepage_components/HomeFooter.jsx @@ -0,0 +1,72 @@ +import Logo from "../logo"; +import { Link } from "react-router-dom"; +import emailIcon from "../../assets/email.svg"; + +const HomeFooter = () => { + return ( +
+
+ {/* footer logo */} +
+ + + +
+ +
+ {/* footer Links */} +
+

Links

+ + Home + + + About Us + + + How it works + +
+ + {/* resources */} +
+

Resources

+ + Blog + + + White Paper + + + Privacy Policy + +
+
+ + {/* contact us */} +
+

Contact Us

+

1881 SW 164th Avenue

+

Miramar, FL 33027, USA.

+

info@grandida.com

+
+ + {/* subscribe */} +
+

Subscribe

+

Subscribe to our mailing list

+ {/* subscribe input box */} +
+
+ email-icon + +
+ +
+
+
+
+ ); +}; + +export default HomeFooter; diff --git a/src/components/homepage_components/LatestNews.jsx b/src/components/homepage_components/LatestNews.jsx new file mode 100644 index 0000000..c5f3096 --- /dev/null +++ b/src/components/homepage_components/LatestNews.jsx @@ -0,0 +1,59 @@ +import React from 'react' + +// Import images +import clean_image from "../../assets/clean-image-1.svg"; +import news_2 from "../../assets/news-2.svg"; +import news_3 from "../../assets/news-3.svg"; + +const LatestNews = () => { + const newsData = [ + { + title: 'Plastics recycling market set to grow big', + summary: 'According to recent market research data, the plastics recycling market \n' + + 'industry, is poised for major growth within the next decade.', + imageUrl: clean_image, + }, + { + title: 'The Winners of the Plastics Recycling Awards Europe 2023', + imageUrl: news_2, + }, + { + title: 'Germany will force companies to pay for cleaning up single use plastic', + imageUrl: news_3, + }, + ]; + return <> + {/* Start Latest News.. */} +
+ {/* Section: Design Block */} +
+

+ Latest News +

+
+
+ {`News +

{newsData[0].title}

+

{newsData[0].summary}

+

+ May 20, 2023 + Reading Time: about 3 minutes +

+
+
+ {newsData.slice(1).map((news, index) => ( +
+ {`News +

{news.title}

+
+ ))} +
+
+
+ {/* Section: Design Block */} +
+ {/* End latest News */} + +} + +export default LatestNews \ No newline at end of file diff --git a/src/components/homepage_components/PlasticImpact.jsx b/src/components/homepage_components/PlasticImpact.jsx new file mode 100644 index 0000000..17a4d0a --- /dev/null +++ b/src/components/homepage_components/PlasticImpact.jsx @@ -0,0 +1,156 @@ +import image from '../../assets/image-2.png'; + +const PlasticImpact = () => { + return ( +
+
+
+
+
+

+ The Impact of Plastic +

+

+ Recycling in our Environment +

+ + - Balogun Ademola, May, 2023 + +

+ Plastic pollution has become a pressing environmental issue, + with millions of tons of plastic waste ending up in landfills + and oceans each year. However, plastic recycling offers a + sustainable solution that not only mitigates the detrimental + impact of plastic waste but also helps conserve valuable natural + resources. At Recylox, we believe in the power of collective + action, and by participating in our platform, you can contribute + to the positive change our planet desperately needs. +

+
+
+ image-2 +
+
+
+
    +
  1. +

    + Environmental Benefits of Plastic Recycling: +

    +

    + Plastic recycling has far-reaching environmental benefits that + go beyond waste reduction. By recycling plastics, we can: +

    +
      +
    1. + Reduce Landfill Waste: Plastics can take hundreds of years + to decompose, occupying valuable landfill space. Recycling + allows us to divert plastics from landfills, alleviating the + strain on our limited waste disposal capacity. +
    2. +
    3. + Conserve Natural Resources: Plastic recycling helps conserve + precious natural resources like fossil fuels and water. By + reprocessing plastic waste, we reduce the need for + extracting new raw materials, which saves energy and reduces + greenhouse gas emissions. +
    4. +
    5. + Prevent Ocean Pollution: Plastics that end up in our oceans + pose a severe threat to marine life and ecosystems. By + recycling plastics, we minimize the amount of plastic waste + that finds its way into our oceans, safeguarding marine + biodiversity. +
    6. +
    +
  2. +
  3. +

    + Economic Benefits of Plastic Recycling: +

    +

    + In addition to its environmental advantages, plastic recycling + also offers economic benefits: +

    +
      +
    1. + Job Creation: The recycling industry creates numerous + employment opportunities, from waste collection to + processing and manufacturing. By supporting plastic + recycling, we contribute to local economies and job growth. +
    2. + +
    3. + Resource Efficiency: Recycling plastic waste reduces the + reliance on virgin materials for manufacturing. This not + only saves costs but also promotes resource efficiency, + making industries more sustainable in the long run. +
    4. +
    +
  4. +
  5. +

    + How [Platform Name] Makes a Difference: +

    +

    + Our Web3 platform takes plastic recycling to the next level by + incentivizing individuals to actively participate in waste + collection. By depositing waste plastics through our platform, + you not only contribute to a cleaner environment but also earn + tokens as a reward for your efforts. +

    +
      +
    1. + Transparent and Secure: Powered by blockchain technology, + our platform ensures transparency and security throughout + the recycling process. You can have confidence in the + integrity of the transactions and the traceability of your + contributions. +
    2. + +
    3. + Recycling Partnerships: We have established partnerships + with reputable plastic recycling companies. When you deposit + waste plastics on our platform, these companies purchase + them for recycling, ensuring that your efforts have a direct + impact on the circular economy. +
    4. +
    5. + Token Rewards: As a token of appreciation for your + contributions, we reward you with tokens based on the weight + and type of plastics you deposit. These tokens can be + redeemed for various benefits within our platform ecosystem + or even exchanged for other cryptocurrencies. +
    6. +
    +
  6. +
+
+
+

+ Conclusion: +

+

+ Plastic recycling is a vital component of our journey towards a + cleaner and more sustainable planet. By joining our platform, you + become part of a global movement that recognizes the importance of + recycling and rewards individuals for their contributions. + Together, we can make a significant difference in reducing plastic + pollution, conserving resources, and creating a brighter future + for generations to come. +

+

+ Start making an impact today with Recylox! +

+
+
+
+
+ ); +}; + +export default PlasticImpact; diff --git a/src/components/homepage_components/ReccoinAsaService.jsx b/src/components/homepage_components/ReccoinAsaService.jsx new file mode 100644 index 0000000..c41fc75 --- /dev/null +++ b/src/components/homepage_components/ReccoinAsaService.jsx @@ -0,0 +1,29 @@ +import React from 'react' + +const ReccoinAsaService = () => { + return
+

INTRODUCING RECYLOX AS A SERVICE

+
+

+ Welcome to Recylox, the cutting-edge waste management system + that not only transforms the way we dispose waste but also + empowers you to earn while making a difference. Get ready to + embark on an exciting journey where sustainability meets financial rewards +

+ +

+ {/* At Recylox, we believe that taking care of our environment should be rewarded. + That's why we've created a revolutionary platform that not only streamlines + waste management but also incentivizes eco-friendly behaviors. Say goodbye to + the mundane routines of waste disposal and hello to a thrilling new era of sustainability. */} + With Recylox, every responsible action you take, from recycling to proper waste + separation, is recognized and rewarded with our exclusive cryptocurrency, + Recylox. Watch your token balance grow as you contribute to a cleaner, greener world. +

+
+ +
+ +} + +export default ReccoinAsaService \ No newline at end of file diff --git a/src/components/homepage_components/Recycling.jsx b/src/components/homepage_components/Recycling.jsx new file mode 100644 index 0000000..cfcdbdd --- /dev/null +++ b/src/components/homepage_components/Recycling.jsx @@ -0,0 +1,56 @@ +import { RecyclingData } from "../../data/RecyclingData" + +const Recycling = () => { + + + return
+ {/* title of section */} +

Recycling (Almost All Kinds of) Scrap

+ + {/* card container 1 */} +
+ + {/* map card */} + { + RecyclingData.slice(0,3).map((item, index) => + // card component +
+ {/* icon */} +
+ {`${item.title} +
+ {/* title of card component and description */} +

{item.title}

+

{item.descr}

+
+ ) + } +
+ + {/* card container 2 */} +
+ + {/* map card */} + { + RecyclingData.slice(3,6).map((item, index) => + // card component +
+ {/* icon */} +
+ {`${item.title} +
+ {/* title of card component and description */} +

{item.title}

+

{item.descr}

+
+ ) + } +
+ +
+ +} + +export default Recycling \ No newline at end of file diff --git a/src/components/homepage_components/Subcribe.jsx b/src/components/homepage_components/Subcribe.jsx new file mode 100644 index 0000000..eebb79b --- /dev/null +++ b/src/components/homepage_components/Subcribe.jsx @@ -0,0 +1,24 @@ +import emailBlackIcon from '../../assets/emailBlackIcon.svg' + +const Subscribe = () => { + return ( +
+

Join Our Mailing List for Updates and Discounts!

+
+ + +
+

+ By subscribing, you'll receive regular updates on innovative waste recycling and + management solutions, industry news, and helpful resources straight to your inbox. + Be first to know about our special promotions and discounts on eco-friendly + products and services. +

+
+ ); +} + +export default Subscribe; \ No newline at end of file diff --git a/src/components/homepage_components/about.jsx b/src/components/homepage_components/about.jsx new file mode 100644 index 0000000..d054fde --- /dev/null +++ b/src/components/homepage_components/about.jsx @@ -0,0 +1,70 @@ +// import aboutUsImage from '../../assets/aboutUs.svg' +import settingsIcon from '../../assets/settingsIc.svg' +import innovationIcon from '../../assets/innovationIc.svg' +import environmentIcon from '../../assets/environmentIc.svg' +import rewardIcon from '../../assets/rewardIc.svg' +import trustIcon from '../../assets/trustIc.svg' +import { Link } from 'react-router-dom' + +const About = () => { + + const aboutData = [ + { + 'title': "Our Expertise", + 'icon': settingsIcon + }, + { + 'title': "Innovative Recycling Approach", + 'icon': innovationIcon + }, + { + 'title': "Environmental Impact", + 'icon': environmentIcon + }, + { + 'title': "Rewards & Incentives", + 'icon': rewardIcon + }, + { + 'title': "Trust & Transparency", + 'icon': trustIcon + } + ] + + return
+ + {/* title */} + {/*

Empowering Change through Recycling:

*/} + + {/* description and image */} +
+ {/*
*/} + {/* description */} + {/* { + aboutData.map((item, index) => +

{`${item.title} {item.title}

+ ) + } */} +

We are passionate about making a difference in + the world by revolutionizing waste management and + promoting sustainability. Our mission is to empower + individuals to turn their waste into wealth while making + a positive impact on the planet. +

+ +

Through innovative solutions and cutting-edge technology, + we have developed a comprehensive rewards-based system that + incentivizes recycling and encourages responsible waste disposal. + By participating in our program, individuals can earn valuable + rewards for their recycling efforts, ranging from discounts at + local businesses to vouchers for eco-friendly products. +

+ +
+ {/* learn more button */} + Learn More +
+ //
+} + +export default About \ No newline at end of file diff --git a/src/components/homepage_components/earnReccoin.jsx b/src/components/homepage_components/earnReccoin.jsx new file mode 100644 index 0000000..678fd83 --- /dev/null +++ b/src/components/homepage_components/earnReccoin.jsx @@ -0,0 +1,38 @@ +import { Link } from "react-router-dom"; +import reccoinBox from "../../assets/reccoin.png"; +import reccoin_reward from "../../assets/reccoin_reward.png"; + +export default function EarnReccoin() { + return
+

+ Earn
Recylox +

+ reccoin box +
+} + +export function EarnReccoinReward() { + return
+ + {/* bg-earnRecyloxBg bg-contain bg-no-repeat bg-right-bottom -scale-x-100 */} + +

+ Earn Recylox tokens for every item you recycle through
+ our waste management system. From plastic bottles to
+ paper and rubber, each contribution counts towards
+ building a more sustainable future.
+ The more you recycle, the more Recylox you earn! +

+ + + Earn Now! + + +
+ + + // +} + diff --git a/src/components/homepage_components/faq.jsx b/src/components/homepage_components/faq.jsx new file mode 100644 index 0000000..35de577 --- /dev/null +++ b/src/components/homepage_components/faq.jsx @@ -0,0 +1,48 @@ +import faqImage from '../../assets/faq.svg' +import { Link } from 'react-router-dom' +import arrowRight from '../../assets/arrowRight.svg' + +const faqData = [ + { + 'title': "What are the rewards for earning Recylox?" + }, + { + 'title': "Is Recylox a secure and reliable platform?" + }, + { + 'title': "How does Recylox work?" + } +] + +const Faq = () => { + return
+ {/* titles */} +

FAQ

+

You’ve Got Questions? We’ve Got Answers

+ + {/* buttons and image */} +
+
+ { + faqData.map((item, index) => + +

{item.title}

+ arrow right + + ) + } +

+ Can't find your answers? + Contact Us +

+
+ + {/* image */} + faq image +
+
+ +} + +export default Faq \ No newline at end of file diff --git a/src/components/homepage_components/howItWorks.jsx b/src/components/homepage_components/howItWorks.jsx new file mode 100644 index 0000000..3964a53 --- /dev/null +++ b/src/components/homepage_components/howItWorks.jsx @@ -0,0 +1,29 @@ +import React from 'react' +import { howItworks } from '../../data/howItWorksData' + +const HowItWorks = () => { + return ( +
+ {/* section title */} +

HOW IT WORKS

+ { + howItworks.map((item, index) => +
+
+

{index+1}

+
+
+

{item.title}

+ {item.desc.map((listItem, listIndex) => +
  • {listItem}
  • + + )} +
    +
    + ) + } +
    + ) + } + +export default HowItWorks diff --git a/src/components/logo.jsx b/src/components/logo.jsx new file mode 100644 index 0000000..ce70960 --- /dev/null +++ b/src/components/logo.jsx @@ -0,0 +1,21 @@ + +function Logo(props) { + return ( + + + + + + + + + + ); +} + +export default Logo; \ No newline at end of file diff --git a/src/components/navigation/Header.jsx b/src/components/navigation/Header.jsx new file mode 100644 index 0000000..c001b56 --- /dev/null +++ b/src/components/navigation/Header.jsx @@ -0,0 +1,185 @@ +import { useContext, useState, useEffect } from "react"; +import { Link, useLocation } from "react-router-dom"; +import dropdown from '../../assets/dropdown.svg' +import Logo from '../logo' +import { TokenContext } from '../../context/recylox' +import menuIcon from '../../assets/menuGreen.svg' +import { HeaderData } from '../../data/HeaderData' +import { MdClose } from "react-icons/md" + +const Header = () => { + + const {connectedAccount, adminAddress, initializeContract, account_category} = useContext(TokenContext) + // const {account_category} = useRecycle(); + const {pathname} = useLocation(); + + // const [selectedOption, setSelectedOption] = useState(''); + const [toggle_menu, setToggleMenu] = useState(false); + const [showRegisterDropdown, setShowRegisterDropdown] = useState(false); + const [showHomeDropDown, setShowHomeDropDown] = useState(false); + + + // toggle menu + const toggleMenu =() => { + setToggleMenu(!toggle_menu) + } + + // show register drop down when user hover over the "Register" link + const registerDropdown = () => { + setShowRegisterDropdown(!showRegisterDropdown); + } + + // show home drop down when user hover over the "Home" link + const homeDropdown = () => { + setShowHomeDropDown(!showHomeDropDown); + } + + useEffect(() => { + + window.onresize = () => { + if(window.innerWidth > 768){ + setToggleMenu(false) + } + } + return () => {}; + }, []) + + return ( +
    +
    + {/* logo */} +
    + + {" "} + + +
    + +
    +
    + {/* header links */} +
      +
    • + Home dropdown icon + { + showHomeDropDown ? +
      +
      + About Us + + Blog + + How It Works + + Privacy Policy + +
      +
      + : "" + } + +
    • + + {HeaderData.map((item, index) => ( +
    • + {item.title} +
    • + ))} + + { + connectedAccount && account_category === "picker" ? +
    • + Dashboard +
    • + : + connectedAccount && account_category === "company" ? +
    • + Dashboard +
    • + : + connectedAccount && connectedAccount === adminAddress ? +
    • + Dashboard +
    • + : "" + } + {/* register link */} + {!account_category ? +
    • Registerdropdown icon + { + showRegisterDropdown ? +
      +
      + User + + Company + +
      +
      + : "" + } + +
    • + : + + } + +
    + + + + {/* toggle menu */} + +
    +
    +
    +
    + ); +} + +export default Header \ No newline at end of file diff --git a/src/components/navigation/RegistrationHeader.jsx b/src/components/navigation/RegistrationHeader.jsx new file mode 100644 index 0000000..c6dbe9e --- /dev/null +++ b/src/components/navigation/RegistrationHeader.jsx @@ -0,0 +1,242 @@ +import { useContext, useState, useEffect } from "react"; +import { Link, useLocation } from "react-router-dom"; +import dropdown from '../../assets/dropdown.svg' +import Logo from '../logo' +import { TokenContext, useToken } from '../../context/recylox' +import menuIcon from '../../assets/menuGreen.svg' +import { HeaderData } from '../../data/HeaderData' +import { MdClose } from "react-icons/md" +import { useRecycle } from "../../context/recycle"; + +const Header = () => { + + const adminAddress = '0x509D44Bf4E1E5E696eA288eC4fF1114f79a09AC9'; + + // recylox context + const {connectedAccount, initializeContract, account_category} = useToken(); + // recycle context + // const {account_category, initializeRecycleContract } = useRecycle(); + + const {pathname} = useLocation(); + + // console.log('pickerStruct => ', pickerStruct); + + // const [selectedOption, setSelectedOption] = useState(''); + const [toggle_menu, setToggleMenu] = useState(false); + const [showRegisterDropdown, setShowRegisterDropdown] = useState(false); + const [showHomeDropDown, setShowHomeDropDown] = useState(false); + const [showDashboardDropDown, setDashboardDropDown] = useState(false); + + // toggle menu + const toggleMenu =() => { + setToggleMenu(!toggle_menu) + } + + // show register drop down when user hover over the "Register" link + const registerDropdown = () => { + setShowRegisterDropdown(!showRegisterDropdown); + } + + // show home drop down when user hover over the "Home" link + const homeDropdown = () => { + setShowHomeDropDown(!showHomeDropDown); + } + + // show home drop down when user hover over the "Home" link + const dashboardDropdown = () => { + setDashboardDropDown(!showDashboardDropDown); + } + + // connect wallet + const ConnectWallet = async () => { + initializeContract(); + // initializeRecycleContract(); + } + useEffect(() => { + + window.onresize = () => { + if(window.innerWidth > 768){ + setToggleMenu(false) + } + } + return () => {}; + + }, []) + + return ( +
    +
    + {/* logo */} +
    + + {" "} + + +
    + +
    +
    + {/* header links */} +
      +
    • + Home dropdown icon + { + showHomeDropDown ? +
      +
      + About Us + + Blog + + How It Works + + Privacy Policy + +
      +
      + : "" + } + +
    • + + { HeaderData.map((item, index) => ( +
    • + {item.title} +
    • + ))} + + {/* register link */} + {!account_category ? +
    • Registerdropdown icon + { + showRegisterDropdown ? +
      +
      + User + + Company + +
      +
      + : "" + } + +
    • + : + connectedAccount && account_category === "picker" ? +
    • + Dashboard +
    • + : + connectedAccount && account_category === "company" ? +
    • + Dashboard +
    • + : + connectedAccount && connectedAccount === adminAddress ? +
    • + Dashboard +
    • + : "" + + //
    • Dashboarddropdown icon + // { + // showDashboardDropDown ? + //
      + //
      + // User + // + // Company + // + // Admin + // + //
      + //
      + // : "" + // } + + //
    • + } + + + + +
    + + + + + + + {/* toggle menu */} + +
    +
    +
    +
    + ); +} + +export default Header \ No newline at end of file diff --git a/src/context/co.js b/src/context/co.js new file mode 100644 index 0000000..e7b9f6a --- /dev/null +++ b/src/context/co.js @@ -0,0 +1,24 @@ +const WalletConnection = ({ onConnect }) => { + const [walletConnected, setWalletConnected] = useState(false); + const navigate = useNavigate(); + + const connectWallet = async () => { + if (window.ethereum) { + try { + await window.ethereum.request({ method: 'eth_requestAccounts' }); + setWalletConnected(true); + onConnect(); + } catch (error) { + console.log('Error connecting wallet:', error); + } + } else { + console.log('No Ethereum wallet found'); + } + }; + + +const [wallet, setWallet] = useState(null); + + const handleWalletConnect = () => { + setWallet(window.ethereum); + }; \ No newline at end of file diff --git a/src/context/recycle-abi.js b/src/context/recycle-abi.js new file mode 100644 index 0000000..3c5b239 --- /dev/null +++ b/src/context/recycle-abi.js @@ -0,0 +1,924 @@ +/* eslint-disable no-mixed-spaces-and-tabs */ +export const recycleABI = [ + { + "type": "constructor", + "name": "", + "inputs": [ + { + "type": "address", + "name": "_recyloxAddress", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "CompanyActiveStatusUpdated", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "bool", + "name": "newActiveStatus", + "indexed": false, + "internalType": "bool" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "CompanyEdited", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "name", + "indexed": false, + "internalType": "string" + }, + { + "type": "uint256", + "name": "minWeightRequirement", + "indexed": false, + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "maxPricePerKg", + "indexed": false, + "internalType": "uint256" + }, + { + "type": "bool", + "name": "active", + "indexed": false, + "internalType": "bool" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "CompanyMaxPricePerKgUpdated", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "uint256", + "name": "newMaxPricePerKg", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "CompanyMinWeightRequirementUpdated", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "uint256", + "name": "newMinWeightRequirement", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "CompanyNameUpdated", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "newName", + "indexed": false, + "internalType": "string" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "CompanyRegistered", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "name", + "indexed": false, + "internalType": "string" + }, + { + "type": "uint256", + "name": "minWeightRequirement", + "indexed": false, + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "maxPricePerKg", + "indexed": false, + "internalType": "uint256" + }, + { + "type": "bool", + "name": "active", + "indexed": false, + "internalType": "bool" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "type": "address", + "name": "previousOwner", + "indexed": true, + "internalType": "address" + }, + { + "type": "address", + "name": "newOwner", + "indexed": true, + "internalType": "address" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PickerEdited", + "inputs": [ + { + "type": "address", + "name": "pickerAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "name", + "indexed": false, + "internalType": "string" + }, + { + "type": "string", + "name": "email", + "indexed": false, + "internalType": "string" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PickerEmailUpdated", + "inputs": [ + { + "type": "address", + "name": "pickerAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "newEmail", + "indexed": false, + "internalType": "string" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PickerNameUpdated", + "inputs": [ + { + "type": "address", + "name": "pickerAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "newName", + "indexed": false, + "internalType": "string" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PickerPaid", + "inputs": [ + { + "type": "address", + "name": "sender", + "indexed": false, + "internalType": "address" + }, + { + "type": "address", + "name": "recipient", + "indexed": false, + "internalType": "address" + }, + { + "type": "uint256", + "name": "amount", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PickerRegistered", + "inputs": [ + { + "type": "address", + "name": "pickerAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "string", + "name": "name", + "indexed": false, + "internalType": "string" + }, + { + "type": "string", + "name": "email", + "indexed": false, + "internalType": "string" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PlasticDeposited", + "inputs": [ + { + "type": "address", + "name": "pickerAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "uint256", + "name": "weight", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "PlasticValidated", + "inputs": [ + { + "type": "address", + "name": "companyAddress", + "indexed": true, + "internalType": "address" + }, + { + "type": "uint256", + "name": "transactionId", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [], + "outputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "companies", + "inputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "outputs": [ + { + "type": "string", + "name": "name", + "internalType": "string" + }, + { + "type": "uint256", + "name": "minWeightRequirement", + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "maxPricePerKg", + "internalType": "uint256" + }, + { + "type": "bool", + "name": "active", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "companyAddresses", + "inputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositPlastic", + "inputs": [ + { + "type": "address", + "name": "_companyAddress", + "internalType": "address" + }, + { + "type": "uint256", + "name": "_weight", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "uint256", + "name": "transactionId", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editCompany", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + }, + { + "type": "uint256", + "name": "_minWeightRequirement", + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "_maxPricePerKg", + "internalType": "uint256" + }, + { + "type": "bool", + "name": "_active", + "internalType": "bool" + } + ], + "outputs": [ + { + "type": "bool", + "name": "success", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editPicker", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + }, + { + "type": "string", + "name": "_email", + "internalType": "string" + } + ], + "outputs": [ + { + "type": "bool", + "name": "success", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCompany", + "inputs": [ + { + "type": "address", + "name": "_address", + "internalType": "address" + } + ], + "outputs": [ + { + "type": "tuple", + "name": "", + "components": [ + { + "type": "string", + "name": "name", + "internalType": "string" + }, + { + "type": "uint256", + "name": "minWeightRequirement", + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "maxPricePerKg", + "internalType": "uint256" + }, + { + "type": "bool", + "name": "active", + "internalType": "bool" + } + ], + "internalType": "struct Recycle.Company" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getPicker", + "inputs": [ + { + "type": "address", + "name": "_address", + "internalType": "address" + } + ], + "outputs": [ + { + "type": "tuple", + "name": "", + "components": [ + { + "type": "string", + "name": "name", + "internalType": "string" + }, + { + "type": "string", + "name": "email", + "internalType": "string" + }, + { + "type": "uint256", + "name": "weightDeposited", + "internalType": "uint256" + }, + { + "type": "uint256[]", + "name": "transactions", + "internalType": "uint256[]" + } + ], + "internalType": "struct Recycle.Picker" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRegisteredCompanyCount", + "inputs": [], + "outputs": [ + { + "type": "uint256", + "name": "count", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRegisteredPickerCount", + "inputs": [], + "outputs": [ + { + "type": "uint256", + "name": "count", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "payPicker", + "inputs": [ + { + "type": "uint256", + "name": "_transactionId", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "bool", + "name": "", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "pickerAddresses", + "inputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pickers", + "inputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "outputs": [ + { + "type": "string", + "name": "name", + "internalType": "string" + }, + { + "type": "string", + "name": "email", + "internalType": "string" + }, + { + "type": "uint256", + "name": "weightDeposited", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerCompany", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + }, + { + "type": "uint256", + "name": "_minWeightRequirement", + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "_maxPricePerKg", + "internalType": "uint256" + }, + { + "type": "bool", + "name": "_active", + "internalType": "bool" + } + ], + "outputs": [ + { + "type": "bool", + "name": "success", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registerPicker", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + }, + { + "type": "string", + "name": "_email", + "internalType": "string" + } + ], + "outputs": [ + { + "type": "bool", + "name": "success", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "totalTransactions", + "inputs": [], + "outputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transactions", + "inputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "uint256", + "name": "id", + "internalType": "uint256" + }, + { + "type": "address", + "name": "companyAddress", + "internalType": "address" + }, + { + "type": "address", + "name": "pickerAddress", + "internalType": "address" + }, + { + "type": "uint256", + "name": "weight", + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "price", + "internalType": "uint256" + }, + { + "type": "bool", + "name": "isApproved", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "type": "address", + "name": "newOwner", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateCompanyActiveStatus", + "inputs": [ + { + "type": "bool", + "name": "_active", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateCompanyMaxPricePerKg", + "inputs": [ + { + "type": "uint256", + "name": "_maxPricePerKg", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateCompanyMinWeightRequirement", + "inputs": [ + { + "type": "uint256", + "name": "_minWeightRequirement", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateCompanyName", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updatePickerEmail", + "inputs": [ + { + "type": "string", + "name": "_email", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updatePickerName", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "validatePlastic", + "inputs": [ + { + "type": "uint256", + "name": "_transactionId", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "bool", + "name": "success", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + } + ] \ No newline at end of file diff --git a/src/context/recycle.jsx b/src/context/recycle.jsx new file mode 100644 index 0000000..03c0417 --- /dev/null +++ b/src/context/recycle.jsx @@ -0,0 +1,680 @@ +// recycle.jsx +import { createContext, useContext, useState, useEffect } from 'react'; +import { ethers } from 'ethers'; +import { recycleABI } from './recycle-abi'; +import PropTypes from 'prop-types'; +import Swal from 'sweetalert2'; +import { useToken } from './recylox'; + +export const RecycleContext = createContext(); + +export const useRecycle = () => useContext(RecycleContext); + +export const RecycleProvider = ({ children }) => { + + const {recycleContract, connectedAccount} = useToken(); + + const [companies, setCompanies] = useState([]); + const [pickers, setPickers] = useState([]); + const [loading, setLoading] = useState(false); + const [provider, setProvider] = useState(null); + const [contract, setContract] = useState(null); + // const [connectedAccount, setConnectedAccount] = useState(''); + const [isMethodCallLoading, setIsMethodCallLoading] = useState(false); + const [isMethodCallSuccessful, setIsMethodCallSuccessful] = useState(false); + const [totalTransaction, setTotalTransaction] = useState(0) + + // added variables + const [picker_count, set_Picker_Count] = useState(0); + const [company_count, set_Company_Count] = useState(0); + const [account_category, set_account_category] = useState(''); + const [companyAddresses, setCompanyAddresses] = useState([]); + const [pickerStruct, setPickerStruct] = useState({}); + const [companyStruct, setCompanyStruct] = useState({}); + const [tokenHolderBalance, setTokenHolderBalance] = useState(0); + + useEffect(() => { + const recycle_status = localStorage.getItem("connectRecycle"); + console.log(recycle_status); + + // if (recycle_status == 'true') { + // initializeRecycleContract() + // } + + },[]) + + const initializeRecycleContract = async () => { + try { + setLoading(true); + if (window.ethereum) { + const getAccounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); + // save connected wallet address + const _connectedAccount = getAccounts[0]; + setConnectedAccount(getAccounts[0]); + const ethereumProvider = new ethers.providers.Web3Provider(window.ethereum); + // MetaMask requires requesting permission to connect users accounts + setProvider(ethereumProvider); + const signer = ethereumProvider.getSigner(); + const contractAddress = '0x96843178AEf01A428798177F45E809Dc6F7b76f2'; // Replace with the actual contract address + const contract = new ethers.Contract(contractAddress, recycleABI, signer); + console.log('contract =>', contract); + setContract(contract); + console.log("recycle contract =>", contract); + + localStorage.setItem("connectRecycle", true); + + // get no of pickers + const no_of_registered_pickers = await contract.getRegisteredPickerCount(); + console.log('Registered picker count:', no_of_registered_pickers); + set_Picker_Count(no_of_registered_pickers); + console.log("no_of_registered_pickers =>", no_of_registered_pickers); + + // get no of companies + const no_of_registered_companies = await contract.getRegisteredCompanyCount(); + console.log('Registered company count:', no_of_registered_companies); + set_Company_Count(no_of_registered_companies); + console.log("no_of_registered_companies =>", no_of_registered_companies); + + // get tokenholder balance + const balance = await contract.balanceOf(); + console.log("token balance", balance); + setTokenHolderBalance(balance); + + // get total transaction + const totalTransactions = await contract.totalTransactions(); + setTotalTransaction(totalTransactions) + console.log("totalTransaction => ", totalTransactions); + + try { + const transaction = await contract.transactions(0); + console.log("transaction structs =>", transaction); + + } catch (error) { + + console.log("transactions struct =>", error.reason); + + } + + try { + const picker = await contract.getPicker(_connectedAccount); + console.log("picker array", picker); + console.log("picker name => ", picker[0]); + if (picker[0]) { + set_account_category("picker"); + } + } catch (error) { + console.log("picker array => ", error); + } //ends getPicker + + // get company + try { + const company = await contract.getCompany(_connectedAccount); + console.log("company array", company); + if (company[0]) { + set_account_category("company"); + + } + } catch (error) { + console.log("company array => ", error); + } //ends getCompany + + + // Fetch companies and pickers from the contract + /* + const companies = await contract.getCompanyAddresses(); + const pickers = await contract.getPickerAddresses(); + console.log("companies =>", companies); + console.log("pickers =>", pickers); + setCompanies(companies); + setPickers(pickers); + + */ + + /* + get picker struct. Also use this to cartegorize address. + direct users to their respective dashboard based on this + */ + // getPicker + + + } else { + setLoading(false); + // throw new Error('Please install MetaMask or any other Ethereum wallet extension.'); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: 'Please install MetaMask or any other Ethereum wallet extension.', + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.log('Please install MetaMask or any other Ethereum wallet extension.'); + } + } catch (error) { + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error initializing contract: ${error.message}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + setLoading(false); + } +}; //ends initializeRecycleContract() + + +/********************************** pickers functionalities ************************************ */ + const registerPicker = async (name, email) => { + try { + setIsMethodCallLoading(true); + const tx = await recycleContract.registerPicker(name, email); + await tx.wait(); + const newPicker = await recycleContract.getPicker(connectedAccount); + setPickers([...pickers, newPicker]); + setIsMethodCallLoading(false); + Swal.fire({ + icon: 'success', + title: 'Success!', + text: 'Picker created successfully!', + confirmButtonColor:"#006D44", + // preConfirm: () => {window.location.reload()}, + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Error registering user:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error registering user: ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } + }; + + const editPicker = async (name, email) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).editPicker(name, email); + await transaction.wait(); + console.log('Picker edited successfully!'); + // Additional logic or UI updates after successful edit + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to edit picker:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const updatePickerName = async (name) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).updatePickerName(name); + await transaction.wait(); + console.log('Picker name updated successfully!'); + // Additional logic or UI updates after successful update + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to update picker name:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const updatePickerEmail = async (email) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).updatePickerEmail(email); + await transaction.wait(); + console.log('Picker email updated successfully!'); + // Additional logic or UI updates after successful update + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to update picker email:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + } + + const getPicker = async (address) => { + try { + const picker = await contract.getPicker(address); + + console.log('Picker details:', picker); + // Additional logic or UI updates with the picker data + } catch (error) { + console.error('Failed to fetch picker details:', error); + // Handle error scenario + } + }; + + const getRegisteredPickerCount = async () => { + try { + const count = await contract.getRegisteredPickerCount(); + console.log('Registered picker count:', count); + set_Picker_Count(count); + console.log("picker count =>", count); + // Additional logic or UI updates with the count data + } catch (error) { + console.error('Failed to fetch registered picker count:', error); + // Handle error scenario + } + }; + + const payPicker = async (transactionId) => { + try { + setIsMethodCallLoading(true); + // const transaction = await contract.connect(signer).payPicker(transactionId); + const transaction = await recycleContract.payPicker(transactionId); + await transaction.wait(); + console.log('Picker paid successfully!'); + // Additional logic or UI updates after successful payment + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + Swal.fire({ + icon: 'success', + title: 'Success!', + text: 'Payment successful!', + confirmButtonColor:"#006D44", + // preConfirm: () => {window.location.reload()}, + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } catch (error) { + console.error('Failed to pay picker:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + const payError = error.reason.split(':'); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Failed to pay picker: ${payError[2]}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } + }; + + const removePicker = async (pickerAddress) => { + try { + setIsMethodCallLoading(true); + const tx = await contract.removePicker(pickerAddress); + await tx.wait(); + setPickers(pickers.filter((address) => address !== pickerAddress)); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Error removing picker:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + +/********************************** Company functionalities ************************************ */ + const registerCompany = async (name, minWeightRequirement, maxPricePerKg, active) => { + try { + setIsMethodCallLoading(true); + const tx = await recycleContract.registerCompany(name, minWeightRequirement, maxPricePerKg, active); + await tx.wait(); + const newCompany = await recycleContract.getCompany(connectedAccount); + setCompanies([...companies, newCompany]); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + Swal.fire({ + icon: 'success', + title: 'Success!', + text: 'Company created successfully!', + confirmButtonColor:"#006D44", + // preConfirm: () => {window.location.reload()}, + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } catch (error) { + console.error('Error registering company:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error registering company: ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } + }; + + const editCompany = async (name, minWeightRequirement, maxPricePerKg, active) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).editCompany( + name, + minWeightRequirement, + maxPricePerKg, + active + ); + await transaction.wait(); + console.log('Company edited successfully!'); + // Additional logic or UI updates after successful edit + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to edit company:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const updateCompanyName = async (name) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).updateCompanyName(name); + await transaction.wait(); + console.log('Company name updated successfully!'); + // Additional logic or UI updates after successful update + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to update company name:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const updateCompanyMinWeightRequirement = async (minWeightRequirement) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).updateCompanyMinWeightRequirement(minWeightRequirement); + await transaction.wait(); + console.log('Company minimum weight requirement updated successfully!'); + // Additional logic or UI updates after successful update + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to update company minimum weight requirement:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const updateCompanyMaxPricePerKg = async (maxPricePerKg) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).updateCompanyMaxPricePerKg(maxPricePerKg); + await transaction.wait(); + console.log('Company maximum price per kg updated successfully!'); + // Additional logic or UI updates after successful update + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to update company maximum price per kg:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const updateCompanyActiveStatus = async (active) => { + try { + setIsMethodCallLoading(true); + const transaction = await contract.connect(signer).updateCompanyActiveStatus(active); + await transaction.wait(); + console.log('Company active status updated successfully!'); + // Additional logic or UI updates after successful update + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Failed to update company active status:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const removeCompany = async (companyAddress) => { + try { + setIsMethodCallLoading(true); + const tx = await contract.removeCompany(companyAddress); + await tx.wait(); + setCompanies(companies.filter((address) => address !== companyAddress)); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Error removing company:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const depositPlastic = async (companyAddress, weight) => { + try { + setIsMethodCallLoading(true); + // const transaction = await contract.connect(signer).depositPlastic(companyAddress, weight); + const transaction = await recycleContract.depositPlastic(companyAddress, weight); + await transaction.wait(); + + console.log('Plastic deposited successfully!'); + // Additional logic or UI updates after successful deposit + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + Swal.fire({ + icon: 'success', + title: 'Success!', + text: 'Plastic deposited successfully!', + confirmButtonColor:"#006D44", + // preConfirm: () => {window.location.reload()}, + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } catch (error) { + console.error('Failed to deposit plastic:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + const _error = error.reason.split(':'); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Failed to validate plastic: ${_error[2]}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } + }; + + const validatePlastic = async (transactionId) => { + try { + setIsMethodCallLoading(true); + // const transaction = await contract.connect(signer).validatePlastic(transactionId); + const transaction = await recycleContract.validatePlastic(transactionId); + await transaction.wait(); + console.log('Plastic validated successfully!'); + // Additional logic or UI updates after successful validation + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + Swal.fire({ + icon: 'success', + title: 'Success!', + text: 'Picker validated successfully!', + confirmButtonColor:"#006D44", + // preConfirm: () => {window.location.reload()}, + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } catch (error) { + console.error('Failed to validate plastic:', error); + // Handle error scenario + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + const validateError = error.reason.split(':'); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Failed to validate plastic: ${validateError[2]}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } + }; + + const createRequest = async (companyId, material, quantity) => { + try { + setIsMethodCallLoading(true); + const tx = await contract.createRequest(companyId, material, quantity); + await tx.wait(); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Error creating request:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const approveRequest = async (requestId) => { + try { + setIsMethodCallLoading(true); + const tx = await contract.approveRequest(requestId); + await tx.wait(); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Error approving request:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const rejectRequest = async (requestId) => { + try { + setIsMethodCallLoading(true); + const tx = await contract.rejectRequest(requestId); + await tx.wait(); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(true); + } catch (error) { + console.error('Error rejecting request:', error); + setIsMethodCallLoading(false); + setIsMethodCallSuccessful(false); + } + }; + + const GetCompany = async() => { + const company = await contract.getCompany(connectedAccount); + if (company.name) { + setCompanyStruct({ + name: company.name, + minWeightRequirement: company.minWeightRequirement, + maxPricePerKg: company.maxPricePerKg + }) + } + } + + console.log("recycle account categor =>", account_category ); + return ( + + {children} + + ); +}; + +RecycleProvider.propTypes = { + children: PropTypes.node.isRequired, +}; + diff --git a/src/context/recylox-abi.js b/src/context/recylox-abi.js new file mode 100644 index 0000000..e343c08 --- /dev/null +++ b/src/context/recylox-abi.js @@ -0,0 +1,333 @@ +export const recyloxABI = [ + { + "type": "constructor", + "name": "", + "inputs": [ + { + "type": "string", + "name": "_name", + "internalType": "string" + }, + { + "type": "string", + "name": "_symbol", + "internalType": "string" + }, + { + "type": "uint256", + "name": "initialSupply", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "type": "address", + "name": "owner", + "indexed": true, + "internalType": "address" + }, + { + "type": "address", + "name": "spender", + "indexed": true, + "internalType": "address" + }, + { + "type": "uint256", + "name": "value", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "type": "address", + "name": "previousOwner", + "indexed": true, + "internalType": "address" + }, + { + "type": "address", + "name": "newOwner", + "indexed": true, + "internalType": "address" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "type": "address", + "name": "from", + "indexed": true, + "internalType": "address" + }, + { + "type": "address", + "name": "to", + "indexed": true, + "internalType": "address" + }, + { + "type": "uint256", + "name": "value", + "indexed": false, + "internalType": "uint256" + } + ], + "outputs": [], + "anonymous": false + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + }, + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "outputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "type": "address", + "name": "spender", + "internalType": "address" + }, + { + "type": "uint256", + "name": "amount", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "bool", + "name": "", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "outputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "burn", + "inputs": [ + { + "type": "uint256", + "name": "amount", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "type": "uint8", + "name": "", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "mint", + "inputs": [ + { + "type": "address", + "name": "account", + "internalType": "address" + }, + { + "type": "uint256", + "name": "amount", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "string", + "name": "", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "type": "address", + "name": "", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "type": "string", + "name": "", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "type": "uint256", + "name": "", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "type": "address", + "name": "recipient", + "internalType": "address" + }, + { + "type": "uint256", + "name": "amount", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "bool", + "name": "", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "type": "address", + "name": "sender", + "internalType": "address" + }, + { + "type": "address", + "name": "recipient", + "internalType": "address" + }, + { + "type": "uint256", + "name": "amount", + "internalType": "uint256" + } + ], + "outputs": [ + { + "type": "bool", + "name": "", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "type": "address", + "name": "newOwner", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] \ No newline at end of file diff --git a/src/context/recylox.jsx b/src/context/recylox.jsx new file mode 100644 index 0000000..3260fc7 --- /dev/null +++ b/src/context/recylox.jsx @@ -0,0 +1,511 @@ +/* eslint-disable react-refresh/only-export-components */ +import { createContext, useContext, useEffect, useState } from 'react'; +import { ethers } from 'ethers'; +import { recyloxABI } from './recylox-abi'; +import PropTypes from 'prop-types'; +import Swal from 'sweetalert2'; +import { recycleABI } from './recycle-abi'; + +export const TokenContext = createContext(); + +export const useToken = () => useContext(TokenContext); + +export const TokenProvider = ({ children }) => { + + + const [name, setName] = useState(''); + const [symbol, setSymbol] = useState(''); + const [decimals, setDecimals] = useState(0); + const [totalSupply, setTotalSupply] = useState(0); + const [accountBalance, setAccountBalance] = useState(null); + const [loading, setLoading] = useState(false); + const [provider, setProvider] = useState(null); + const [contract, setContract] = useState(null); + const [connectedAccount, setConnectedAccount] = useState('') + const [adminAddress, setAdminAddress] = useState(''); + + +/******************************* recylox method call loading and success states *********************************/ + +/**loading**/ +const [mintLoading, setMintLoading] = useState(false); +const [transferTokensLoading, setTransferTokensLoading] = useState(false); +const [transferFromLoading, setTransferFromLoading] = useState(false); +const [burnLoading, setBurnLoading] = useState(false); +const [approveLoading, setApproveLoading] = useState(false); + +/**success*/ +const [mintSuccessful, setMintSuccessful] = useState(false); +const [transferTokensSuccessful, setTransferTokensSuccessful] = useState(false); +const [transferFromSuccessful, setTransferFromSuccessful] = useState(false); +const [burnSuccessful, setBurnSuccessful] = useState(false); +const [approveSuccessful, setApproveSuccessful] = useState(false); + + + +/******************************* recycle state variables *********************************/ + const [companyStruct, setCompanyStruct] = useState([]); + const [recycleContract, setRecycleContract] = useState(null); + const [picker_count, set_Picker_Count] = useState(0); + const [company_count, set_Company_Count] = useState(0); + const [account_category, set_account_category] = useState(''); + const [tokenHolderBalance, setTokenHolderBalance] = useState(0); + const [totalTransaction, setTotalTransaction] = useState(0); + const [companyTransactionHistory, setCompanyTransactionHistory] = useState([]); + const [pickerTransactionHistory, setPickerTransactionHistory] = useState([]); + + + useEffect (() => { + try { + if (window.ethereum.selectedAddress) { + initializeContract(); + } + } catch (error) { + console.log(error); + } + + }, []) + + const initializeContract = async () => { + try { + setLoading(true) + if (window.ethereum) { + const getAccounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); + // save connected wallet address + const _connectedAccount = getAccounts[0]; + setConnectedAccount(_connectedAccount); + console.log("account ", getAccounts[0]); + const ethereumProvider = new ethers.providers.Web3Provider(window.ethereum); + // MetaMask requires requesting permission to connect users accounts + setProvider(ethereumProvider); + const signer = ethereumProvider.getSigner(); + + /* recylox contract */ + const contractAddress = '0x509D44Bf4E1E5E696eA288eC4fF1114f79a09AC9'; // Replace with the actual contract address + const contract = new ethers.Contract(contractAddress, recyloxABI, signer); + console.log('contract =>', contract); + setContract(contract); + +/******************************* get recycle contract *********************************/ + const recycleContractAddress = '0x96843178AEf01A428798177F45E809Dc6F7b76f2'; // Replace with the actual contract address + const recycleContract = new ethers.Contract(recycleContractAddress, recycleABI, signer); + console.log('recycle contract =>', recycleContract); + setRecycleContract(recycleContract); + +/******************************* recylox functionalities *********************************/ + + const name = await contract.name(); + const symbol = await contract.symbol(); + const decimals = await contract.decimals(); + const totalSupply = await contract.totalSupply(); + const yourAccountAddress = '0x1928062edfAFbCCb7D1C788B24F6aCdE80869048';// Replace with your actual Ethereum address + setAdminAddress(yourAccountAddress); + const accountBalance = await contract.balanceOf(yourAccountAddress); + + console.log("account balance", accountBalance); + setName(name); + setSymbol(symbol); + setDecimals(decimals); + setTotalSupply(totalSupply); + setAccountBalance(accountBalance); + setLoading(false); + + console.log(accountBalance); + console.log("name", name); + console.log("symbol", symbol); + + +/******************************* recycle functionalities *********************************/ + // get no of pickers + const no_of_registered_pickers = await recycleContract.getRegisteredPickerCount(); + console.log('Registered picker count:', no_of_registered_pickers); + set_Picker_Count(no_of_registered_pickers); + console.log("no_of_registered_pickers =>", no_of_registered_pickers); + + // get no of companies + const no_of_registered_companies = await recycleContract.getRegisteredCompanyCount(); + console.log('Registered company count:', no_of_registered_companies); + set_Company_Count(no_of_registered_companies); + console.log("no_of_registered_companies =>", no_of_registered_companies); + + // get tokenholder balance + const balance = await recycleContract.balanceOf(); + console.log("token balance", balance); + setTokenHolderBalance(balance); + + // get total transaction in recycle smart contract + const totalTransaction = await recycleContract.totalTransactions(); + setTotalTransaction(totalTransaction) + const transactionCount = parseInt(totalTransaction.toString()); + console.log("totalTransaction => ", totalTransaction.toString()); + + // array to store company or picker transaction history based on the connected account + const companyTransactionHistory = [] + const pickerTransactionHistory = [] + + // loop through the transactions mapping to get a particular transaction struct + for (let index = 0; index < transactionCount; index++) { + const transaction = await recycleContract.transactions(index); + console.log(`transaction struct ${index} => `, transaction); + + const company_address = transaction[1].toLowerCase(); + const picker_address = transaction[2].toLowerCase(); + const connected_account = _connectedAccount.toLowerCase(); + + console.log("addresses to lower case => ", company_address, picker_address, connected_account); + + // check if connected address matches any of the companies address + if (company_address === connected_account ) { + companyTransactionHistory.push(transaction); + } + + // check if connected address matches any of the companies address + if (picker_address === connected_account) { + pickerTransactionHistory.push(transaction); + } + } // ends transaction loop + + // save company and picker transaction history as state variables + setCompanyTransactionHistory(companyTransactionHistory); + setPickerTransactionHistory(pickerTransactionHistory); + + try { + const picker = await recycleContract.getPicker(_connectedAccount); + console.log("picker array", picker); + console.log("picker name => ", picker[0]); + if (picker[0]) { + set_account_category("picker"); + } + } catch (error) { + console.log("picker array => ", error); + } //ends getPicker + + // get company + try { + + const companyStruct = await recycleContract.getCompany(_connectedAccount); + console.log("company array", companyStruct); + setCompanyStruct(companyStruct); + + if (companyStruct[0]) { + set_account_category("company"); + + } + } catch (error) { + console.log("company array => ", error); + } //ends getCompany + + + } else { + setLoading(false) + // throw new Error('Please install MetaMask or any other Ethereum wallet extension.'); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: 'Please install MetaMask or any other Ethereum wallet extension.', + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.log('Please install MetaMask or any other Ethereum wallet extension.') + } + } catch (error) { + setLoading(false); + + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error initializing contract: ${error.message}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }); + console.error('Error initializing contract:', error); + } + }; // ends initializeContract + + const transferTokens = async (recipient, amount) => { + setTransferTokensLoading(true) + setTransferTokensSuccessful(false) + try { + if (contract) { + const transaction = await contract.transfer(recipient, amount); + await transaction.wait(); + // Perform any additional actions or update state as needed + setTransferTokensSuccessful(true) + setTransferTokensLoading(false) + Swal.fire({ + icon: 'success', + title: 'Success!', + text: `Transfer ${ethers.utils.formatEther(amount)} REC to ${recipient} successful!`, + confirmButtonColor:"#006D44", + preConfirm: () => {window.location.reload()}, + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + } else { + setTransferTokensLoading(false) + setTransferTokensSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Contract is not initialized. Connect wallet to get started`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + throw new Error('Contract is not initialized.'); + } + } catch (error) { + setTransferTokensLoading(false) + setTransferTokensSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error transferring tokens: ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.error('Error transferring tokens:', error); + } + }; + + // Add the mintTokens function + const mintTokens = async (account, amount) => { + try { + setMintLoading(true) + if (contract) { + const transaction = await contract.mint(account, amount); + await transaction.wait(); + // Perform any additional actions or update state as needed + setMintLoading(false) + setMintSuccessful(true) + } else { + setMintLoading(false) + setMintSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: 'Contract is not initialized. Connect wallet to get started', + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + throw new Error('Contract is not initialized.'); + + } + } catch (error) { + setMintLoading(false) + setMintSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error transferring tokens: ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.error('Error transferring tokens:', error); + } + }; + + // add burnTokens function + const burnTokens = async (amount) => { + setBurnLoading(true) + setBurnSuccessful(false) + try { + if (contract) { + const transaction = await contract.burn(amount); + await transaction.wait(); + // Perform any additional actions or update state as needed + setBurnSuccessful(true); + setBurnLoading(false); + } else { + setBurnLoading(false); + setBurnSuccessful(false); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: 'Contract is not initialized. Connect wallet to get started', + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + throw new Error('Contract is not initialized.'); + } + } catch (error) { + setBurnLoading(false) + setBurnSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error burning tokens: ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.error('Error burning tokens:', error); + } + }; + + const approveTokens = async (spender, amount) => { + setApproveLoading(true) + setApproveSuccessful(false) + try { + if (contract) { + const transaction = await contract.approve(spender, amount); + await transaction.wait(); + // Perform any additional actions or update state as needed + setApproveSuccessful(true) + setApproveLoading(false) + } else { + setApproveLoading(false) + setApproveSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: 'Contract is not initialized. Connect wallet to get started', + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + throw new Error('Contract is not initialized.'); + } + } catch (error) { + setApproveLoading(false) + setApproveSuccessful(false); + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error approving tokens:', ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.error('Error approving tokens:', error); + } + }; + + const transferFrom = async (sender, recipient, amount) => { + try { + setTransferFromLoading(true) + setTransferFromSuccessful(false) + if (contract) { + const transaction = await contract.transferFrom(sender, recipient, amount); + await transaction.wait(); + // Perform any additional actions or update state as needed + // Perform any additional actions or update state as needed + setTransferFromSuccessful(true) + setTransferFromLoading(false) + } else { + setTransferFromLoading(false) + setTransferFromSuccessful(false) + Swal.fire({ + icon: 'error', + title: 'Error!', + text: 'Contract is not initialized. Connect wallet to get started', + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + throw new Error('Contract is not initialized.'); + } + } catch (error) { + setTransferFromLoading(false) + setTransferFromSuccessful(false); + + Swal.fire({ + icon: 'error', + title: 'Error!', + text: `Error transferring tokens: ${error.reason}`, + confirmButtonColor:"#006D44", + customClass: { + icon: "font-montserrat", + title: " font-montserrat text-[20px] text-[#000] font-[600]", + text: "font-montserrat, text-[16px] text-[#000] font-[600]", + } + }) + console.error('Error transferring tokens from:', error); + } + }; + + + return ( + + {children} + + ); +}; + +TokenProvider.propTypes = { + children: PropTypes.node.isRequired, +}; + diff --git a/src/data/AdminDashboardData.js b/src/data/AdminDashboardData.js new file mode 100644 index 0000000..ab4c0de --- /dev/null +++ b/src/data/AdminDashboardData.js @@ -0,0 +1,24 @@ + +import sendIcon from '../assets/sendIcon.svg' +import mintTokenIcon from '../assets/mintIcon.svg' +import addUserIcon from '../assets/addUserIcon.svg' +import burnTokenIcon from '../assets/burnIcon.svg' + +export const AdminDashboardData = [ + { + "title": "Mint Token", + "icon": mintTokenIcon + }, + { + "title": "Transfer Token", + "icon": sendIcon + }, + { + "title": "Transfer From", + "icon": addUserIcon + }, + { + "title": "Burn Token", + "icon": burnTokenIcon + } +] \ No newline at end of file diff --git a/src/data/CompanyData.js b/src/data/CompanyData.js new file mode 100644 index 0000000..d0a9c4f --- /dev/null +++ b/src/data/CompanyData.js @@ -0,0 +1,184 @@ +export const CompanyData = [ + { + "title": "Safe.ru", + "status": "active", + "link": "www.google.com" + }, + { + "title": "UnifiedPlanet", + "status": "inactive", + "link": "" + }, + { + "title": "XtraGreen", + "status": "active", + "link": "" + }, + { + "title": "ReUse", + "status": "active", + "link": "" + }, + { + "title": "GreenWealth", + "status": "inactive", + "link": "" + }, + { + "title": "Grandida", + "status": "active", + "link": "" + }, + { + "title": "Cleanaway", + "status": "active", + "link": "" + }, + { + "title": "Covanta", + "status": "active", + "link": "" + }, + { + "title": "Renewi", + "status": "active", + "link": "" + }, + { + "title": "Stericycle, PLC", + "status": "active", + "link": "" + }, + { + "title": "Republic Services Inc.", + "status": "active", + "link": "" + }, + { + "title": "Stericycle Inc.", + "status": "active", + "link": "" + }, + { + "title": "Safe.ru", + "status": "active", + "link": "www.google.com" + }, + { + "title": "UnifiedPlanet", + "status": "inactive", + "link": "" + }, + { + "title": "XtraGreen", + "status": "active", + "link": "" + }, + { + "title": "ReUse", + "status": "active", + "link": "" + }, + { + "title": "GreenWealth", + "status": "inactive", + "link": "" + }, + { + "title": "Grandida", + "status": "active", + "link": "" + }, + { + "title": "Cleanaway", + "status": "active", + "link": "" + }, + { + "title": "Covanta", + "status": "active", + "link": "" + }, + { + "title": "Renewi", + "status": "active", + "link": "" + }, + { + "title": "Stericycle, PLC", + "status": "active", + "link": "" + }, + { + "title": "Republic Services Inc.", + "status": "active", + "link": "" + }, + { + "title": "Stericycle Inc.", + "status": "active", + "link": "" + }, + { + "title": "Safe.ru", + "status": "active", + "link": "www.google.com" + }, + { + "title": "UnifiedPlanet", + "status": "inactive", + "link": "" + }, + { + "title": "XtraGreen", + "status": "active", + "link": "" + }, + { + "title": "ReUse", + "status": "active", + "link": "" + }, + { + "title": "GreenWealth", + "status": "inactive", + "link": "" + }, + { + "title": "Grandida", + "status": "active", + "link": "" + }, + { + "title": "Cleanaway", + "status": "active", + "link": "" + }, + { + "title": "Covanta", + "status": "active", + "link": "" + }, + { + "title": "Renewi", + "status": "active", + "link": "" + }, + { + "title": "Stericycle, PLC", + "status": "active", + "link": "" + }, + { + "title": "Republic Services Inc.", + "status": "active", + "link": "" + }, + { + "title": "Stericycle Inc.", + "status": "active", + "link": "" + } + + +] \ No newline at end of file diff --git a/src/data/DashboardData.js b/src/data/DashboardData.js new file mode 100644 index 0000000..b825cd8 --- /dev/null +++ b/src/data/DashboardData.js @@ -0,0 +1,125 @@ +import settingsWhiteIcon from '../assets/settingsWhite.svg' +import settingsGreenIcon from '../assets/settingsGreen.svg' +// import depositIcon from '../assets/deposit-ic.svg' +import companyIcon from '../assets/companyWhite.svg' +import chatWhiteIcon from '../assets/chatWhite.svg' +import chatGreenIcon from '../assets/chatGreen.svg' +import offersWhiteIcon from '../assets/offersWhite.svg' +import offersGreenIcon from '../assets/offersGreen.svg' +import notificationWhiteIcon from "../assets/notificationWhite.svg"; +import notificationGreenIcon from "../assets/notificationGreen.svg"; +import historyWhiteIcon from '../assets/historyWhite.svg' +import historyGreenIcon from '../assets/historyGreen.svg' +import dashboardWhiteIcon from '../assets/dashboardWhite.svg' +import dashboardGreenIcon from '../assets/dashboardGreen.svg' + +export const UserDashboardNavData = [ + { + 'title': "Dashboard", + 'white_icon': dashboardWhiteIcon, + 'green_icon': dashboardGreenIcon, + 'id': "dashboard-deposit", + 'link': '/user-dashboard' + + }, + { + 'white_icon': companyIcon, + 'green_icon': companyIcon, + 'title': "Companies", + 'id': 'dashboard-companies', + 'link': '' + }, + { + 'white_icon': notificationWhiteIcon, + 'green_icon': notificationGreenIcon, + 'title': "Notifications", + 'id': 'dashboard-notifications', + 'link': '' + }, + { + 'white_icon': settingsWhiteIcon, + 'green_icon': settingsGreenIcon, + 'title': "Settings", + 'id': 'dashboard-settings', + 'link': '/user-dashboard/settings', + }, + { + 'white_icon': historyWhiteIcon, + 'green_icon': historyGreenIcon, + 'title': "History", + 'id': 'dashboard-history', + 'link': '/user-dashboard/history', + + }, + { + 'white_icon': offersWhiteIcon, + 'green_icon': offersGreenIcon, + 'title': "Offers and Contest", + 'id': 'dashboard-offers', + 'link': '/user-dashboard/offers', + }, + { + 'white_icon': chatWhiteIcon, + 'green_icon': chatGreenIcon, + 'title': "Chat", + 'id': 'dashboard-chat', + 'link': '', + } +] + +export const CompanyDashboardNavData = [ + { + 'title': "Dashboard", + 'white_icon': dashboardWhiteIcon, + 'green_icon': dashboardGreenIcon, + 'id': "dashboard-deposit", + 'link': '/company-dashboard' + }, + { + 'icon': companyIcon, + 'title': "Transactions", + 'id': 'dashboard-transactions', + 'link': '' + }, + { + 'white_icon': notificationWhiteIcon, + 'green_icon': notificationGreenIcon, + 'title': "Notifications", + 'id': 'dashboard-notifications', + 'link': '' + + }, + { + 'white_icon': settingsWhiteIcon, + 'green_icon': settingsGreenIcon, + 'title': "Settings", + 'id': 'dashboard-settings', + 'link': '/company-dashboard/settings', + }, + { + 'white_icon': historyWhiteIcon, + 'green_icon': historyGreenIcon, + 'title': "Hstory", + 'id': 'dashboard-history', + 'link': '/company-dashboard/history', + }, + { + 'white_icon': offersWhiteIcon, + 'green_icon': offersGreenIcon, + 'title': "Offers and Contest", + 'id': 'dashboard-offers', + 'link': '/company-dashboard/offers', + }, + { + 'white_icon': chatWhiteIcon, + 'green_icon': chatGreenIcon, + 'title': "Chat", + 'id': 'dashboard-chat', + 'link': '', + } + +] + + + + diff --git a/src/data/DashboardFooterData.js b/src/data/DashboardFooterData.js new file mode 100644 index 0000000..350c240 --- /dev/null +++ b/src/data/DashboardFooterData.js @@ -0,0 +1,18 @@ +import xtraGreenIcon from '../assets/xtraGreen.svg' +import unifiedPlanetIcon from '../assets/unifiedPlanet.svg' +import saferuIcon from '../assets/saferu.svg' + +export const DashboardFooterData = [ + { + title: "Safe.ru", + icon: saferuIcon + }, + { + title: "UnifiedPlanet", + icon: unifiedPlanetIcon + }, + { + title: "XtraGreen", + icon: xtraGreenIcon + } + ] \ No newline at end of file diff --git a/src/data/DepositTransactionData.js b/src/data/DepositTransactionData.js new file mode 100644 index 0000000..9c58f4d --- /dev/null +++ b/src/data/DepositTransactionData.js @@ -0,0 +1,35 @@ +import profileIcon from '../assets/profile.svg'; +import notificationIcon from '../assets/notification.svg'; +import sendIcon from '../assets/sendIcon.svg'; +import depositIcon from '../assets/depositGreenICon.svg'; +import approveIcon from '../assets/approveIcon.svg'; + +export const DepositTransaction = [ + { + "title": "Deposit Plastic", + "icon": profileIcon + }, + { + "title": "Transactions", + "icon": notificationIcon + }, + { + "title": "Transfer Recylox", + "icon": sendIcon + } +] + +export const CompanyDashboardData = [ + { + "title": "Validate Plastic", + "icon": approveIcon + }, + { + "title":"Pay Picker", + "icon": depositIcon + }, + { + "title": "Transfer Recylox", + "icon": sendIcon + } +] \ No newline at end of file diff --git a/src/data/HeaderData.js b/src/data/HeaderData.js new file mode 100644 index 0000000..2c873da --- /dev/null +++ b/src/data/HeaderData.js @@ -0,0 +1,14 @@ +export const HeaderData = [ + { + title:"Contact Us", + link: "/contact-us" + }, + { + title:"White Paper", + link: "/white-paper" + }, + // { + // title:"Dashboard", + // link: "/user-dashboard" + // }, +] \ No newline at end of file diff --git a/src/data/PRCdata.js b/src/data/PRCdata.js new file mode 100644 index 0000000..e38eced --- /dev/null +++ b/src/data/PRCdata.js @@ -0,0 +1,36 @@ +export const PRCData = [ + { + title: "How to Participate...", + list: [ + "Submit your collected plastics to any of our collection sites ", + "Sign-up on our platform by connecting to your wallet", + "Get rewarded instantly with RECCOINS worth the amount of plastics that was weighed" + ], + "descr": "", + buttonText: "" + }, + { + title: "Your Plastic Deposit Options...", + list: [""], + "descr": "Get your collected plastics weighed at any of our collection centers in exchange for Reccoins to be transferred to your wallet instantly.", + buttonText: "MAKE DEPOSIT" + }, + { + title: "Our Incentives Program...", + list: [ + "Get rewarded by depositing your collected plastics at any of our collection sites!", + "Invite a friend to get more incentives!", + "Get more rewards by depositing over 20kg of Plastics" + ], + "descr": "", + buttonText: "", + linkto: "/" + }, + { + title: "Our Partner Companies....", + list: [""], + "descr": "By teaming up with our trusted partners in the industry, we aim to enhance the scope and effectiveness of our platform, providing you with even more comprehensive recycling solutions.", + buttonText: "VIEW OUR PARTNERS", + linkto: "/partners" + } +] \ No newline at end of file diff --git a/src/data/RecyclingData.js b/src/data/RecyclingData.js new file mode 100644 index 0000000..d0f5fd9 --- /dev/null +++ b/src/data/RecyclingData.js @@ -0,0 +1,40 @@ +import batteryIcon from '../assets/battery.svg' +import paperIcon from "../assets/paper.svg" +import plasticIcon from "../assets/plastic.svg" +import ewasteIcon from "../assets/ewaste.svg" +import metalIcon from "../assets/metal.svg" +import rubberIcon from "../assets/rubber.svg" + +export const RecyclingData = [ + { + 'title': "Battery", + 'descr': "The battery recycling industry is functioning at less than 60% efficiency, whereas overall efficiency can be 98%.", + 'icon': batteryIcon + }, + { + "title": "Paper", + "descr": "Only 9% of plastic produced worldwide has been recycled till date", + "icon": paperIcon + }, + { + "title": "Plastics", + "descr": "only 9% of plastic waste is recycled? It's time to change that!", + "icon": plasticIcon + }, + { + "title": "eWaste", + "descr": "78% of eWaste is not being collected, dismantled and recycled.", + "icon": ewasteIcon + }, + { + "title": "Metal", + "descr": "Only 35% of the world’s metal scrap is recycled every year.", + "icon": metalIcon + }, + { + "title": "Rubber", + "descr": "Turning Rubber Waste into a Sustainable Future", + "icon": rubberIcon + } +] + \ No newline at end of file diff --git a/src/data/SettingsData.js b/src/data/SettingsData.js new file mode 100644 index 0000000..5501352 --- /dev/null +++ b/src/data/SettingsData.js @@ -0,0 +1,47 @@ +import profileIcon from '../assets/profile.svg' +import notificationIcon from '../assets/notification.svg' +import supportIcon from '../assets/support.svg' +import newsIcon from '../assets/news.svg' + +export const SettingsData = [ + { + "title": "Profile Settings", + "user_profile_link": "", + "user_a_link": "", + "user_b_link": "", + "company_profile_link": "", + "company_a_link": "", + "company_b_link": "", + "icon": profileIcon + }, + { + "title": "Notification Settings", + "user_profile_link": "", + "user_a_link": "", + "user_b_link": "", + "company_profile_link": "", + "company_a_link": "", + "company_b_link": "", + "icon": notificationIcon + }, + { + "title": "News and Updates", + "user_profile_link": "", + "user_a_link": "", + "user_b_link": "", + "company_profile_link": "", + "company_a_link": "", + "company_b_link": "", + "icon": newsIcon + }, + { + "title": "Support", + "user_profile_link": "", + "user_a_link": "", + "user_b_link": "", + "company_profile_link": "", + "company_a_link": "", + "company_b_link": "", + "icon": supportIcon + } +] \ No newline at end of file diff --git a/src/data/howItWorksData.js b/src/data/howItWorksData.js new file mode 100644 index 0000000..5d4866f --- /dev/null +++ b/src/data/howItWorksData.js @@ -0,0 +1,30 @@ +export const howItworks = +[ + { + title: 'Users Participate in Waste Recycling:', + desc: ['Individuals and companies actively participate in waste recycling activities.', 'They collect and separate recyclable materials such as plastics, paper, glass, and metal.'] + }, + + { + title: 'Collection Centers:', + desc: ['Users bring their collected recyclable materials to designated collection ', 'These centers serve as drop-off points for the collected waste. '] + }, + + { + title: 'Verification and Weighing:', + desc: ['At the collection centers, the recyclable materials are verified and weighed.', 'rained staff or automated systems ensure the accuracy of the collected materials.'] + }, + + + { + title: 'Recylox Rewards Calculation:', + desc: ['Based on the weight and type of recyclable materials, Recylox rewards are calculated.', 'A predetermined conversion rate is applied to determine the number of Recyloxs earned.'] + }, + + { + title: 'Recylox Distribution:', + desc: ['The earned Recyloxs are credited to the user', 'Users can access their Recylox balance and track their earnings.'] + }, + + +] \ No newline at end of file diff --git a/src/data/plastic_deposit_data.js b/src/data/plastic_deposit_data.js new file mode 100644 index 0000000..357bf1c --- /dev/null +++ b/src/data/plastic_deposit_data.js @@ -0,0 +1,6 @@ +export const plasticDeposit = [ + "Plastic Type", + "Plastic Weight", + "Collection Center", + "Center Code", +]; diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..c11c8c4 --- /dev/null +++ b/src/index.css @@ -0,0 +1,46 @@ +@import 'tailwindcss/base'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; + +* { + margin: 0; + padding: 0; + text-decoration: none; +} +body { + box-sizing: border-box; + font-family: 'montserrat', sans-serif; + width: '100%'; + margin: 0; + padding: 0; + scrollbar-width: 10px; + scrollbar-color: gray; +} +.bottom-border { + border-width: 0 0 2px 0; + border-color: gray; +} +.clip { + contain: content; +} +::-webkit-scrollbar { + width: 7px; +} + +::-webkit-scrollbar-track { + background-color: gray; + border-radius: 5px; +} + +::-webkit-scrollbar-thumb { + background-color: #a9ce98; + border-radius: 5px; + /* #006D44; */ +} +@layer utilities { + .conic-gradient-background { + background: conic-gradient(from 180deg at 50% 50%, rgba(137, 162, 154, 0) -93.68deg, rgba(242, 250, 247, 0.76) 92.47deg, rgba(137, 162, 154, 0) 266.32deg, rgba(242, 250, 247, 0.76) 452.47deg); + } +} + + diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 0000000..9afdacb --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,22 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import './index.css' +import {BrowserRouter} from "react-router-dom"; +import { TokenProvider } from './context/recylox.jsx'; +import { RecycleProvider } from './context/recycle.jsx'; + + +ReactDOM.createRoot(document.getElementById('root')).render( + + + + + + + + + + +) + diff --git a/src/pages/AboutUs.jsx b/src/pages/AboutUs.jsx new file mode 100644 index 0000000..f175b6f --- /dev/null +++ b/src/pages/AboutUs.jsx @@ -0,0 +1,32 @@ +// import React from 'react'; + +import AboutUsHero from "../components/about_us_components/AboutUsHero"; +import Empowering from "../components/about_us_components/Empowering"; +import JoinUs from "../components/about_us_components/JoinUs"; +import Purpose from "../components/about_us_components/Purpose"; +import Values from "../components/about_us_components/Values"; +import Vision from "../components/about_us_components/Vision"; +import Footer from "../components/footer"; +import HomeFooter from "../components/homepage_components/HomeFooter"; +import Header from "../components/navigation/Header"; + +const AboutUs = () => { + return( +
    +
    + + {/* */} + + + + + +
    +
    + ) + + + }; + +export default AboutUs; + diff --git a/src/pages/Blog.jsx b/src/pages/Blog.jsx new file mode 100644 index 0000000..0e22205 --- /dev/null +++ b/src/pages/Blog.jsx @@ -0,0 +1,34 @@ +import { useEffect } from 'react'; +import Header from './../components/navigation/Header'; +import { BlogSection1, TitleBar, BlogSection2, BlogPagination } from "./../components/blog/index"; +import Newsletter from './../components/blog/newsletter'; +import HomeFooter from './../components/homepage_components/HomeFooter'; +import Footer from './../components/footer'; + + +const Blog = () => { + useEffect(() => { + window.scrollTo({ + top: 0, + }); + }, []); + + return ( +
    +
    +
    +
    +
    + +
    + + + + + +
    +
    + ); +} + +export default Blog \ No newline at end of file diff --git a/src/pages/Contact.jsx b/src/pages/Contact.jsx new file mode 100644 index 0000000..0222c60 --- /dev/null +++ b/src/pages/Contact.jsx @@ -0,0 +1,24 @@ +import Footer from "../components/footer" +import HomeFooter from "../components/homepage_components/HomeFooter" +import Header from "../components/navigation/Header" + +const Contact = () => { + return
    +
    + +
    +

    Contact Us

    + + + + + + + +
    + +
    +
    +} + +export default Contact \ No newline at end of file diff --git a/src/pages/ErrorPage.jsx b/src/pages/ErrorPage.jsx new file mode 100644 index 0000000..037b383 --- /dev/null +++ b/src/pages/ErrorPage.jsx @@ -0,0 +1,20 @@ +import Footer from "../components/footer" +import HomeFooter from "../components/homepage_components/HomeFooter" +import Header from "../components/navigation/Header" + +const ErrorPage = () => { + return ( +
    +
    +
    +

    404 Error!

    +

    Page not found

    +
    + +
    +
    + + ) +} + +export default ErrorPage \ No newline at end of file diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx new file mode 100644 index 0000000..9c5a6a0 --- /dev/null +++ b/src/pages/Home.jsx @@ -0,0 +1,30 @@ +import Hero from '../components/homepage_components/HeroSection'; +import LatestNews from '../components/homepage_components/LatestNews.jsx'; +import Faq from '../components/homepage_components/faq'; +import Recycling from '../components/homepage_components/Recycling'; +import HowItWorks from '../components/homepage_components/howItWorks'; +import ReccoinAsaService from '../components/homepage_components/ReccoinAsaService'; +import HomeFooter from '../components/homepage_components/HomeFooter'; +import Header from '../components/navigation/Header'; +import Footer from '../components/footer'; +import Subscribe from '../components/homepage_components/Subcribe'; +import AboutUsAndEarnRecoin from '../components/about_us_components/AboutUsAndEarnRecoin'; + +const Home = () => { + return ( +
    +
    + + + + + + + + + +
    +
    + ); +}; +export default Home; diff --git a/src/pages/HowItWorks.jsx b/src/pages/HowItWorks.jsx new file mode 100644 index 0000000..01e5745 --- /dev/null +++ b/src/pages/HowItWorks.jsx @@ -0,0 +1,66 @@ +import Header from "../components/navigation/Header" +import howItWorksImage from '../assets/how_it_works.png'; +import HomeFooter from "../components/homepage_components/HomeFooter"; +import Footer from "../components/footer"; + + +const HowItWorks = () => { + return ( + <> +
    +
    + {/* header */} +
    +

    HOW IT WORKS

    +

    RECYCLING AND EARNING WITH RECYLOX

    +
    + how-it-works image +
    +

    + Our organization promotes flexible and stress free process + for participants to get entitled to token rewards while they + participate in our program. All you need to to follow the + steps outlined below: +

      +
    • + Collect Waste Plastics: Anyone can participate by + collecting waste plastics from their surroundings. + This can include household plastics, packaging materials, + and other plastic waste that would otherwise end up in + landfills or pollute our oceans. +
    • +
    • + Deposit and Verify: Once you've collected a + sufficient amount of waste plastics, you can + deposit them through our platform. Our + verification process ensures the authenticity + and quality of the plastics collected, guaranteeing + fair compensation +
    • +
    • + Earn Tokens: Upon successful verification, + you will be rewarded with tokens based on the + weight and type of plastics deposited. These + tokens can be used within our platform ecosystem, + offering various benefits such as discounts on sustainable + products or even exchanged for other cryptocurrencies. +
    • +
    • + Recycling Partnerships: We have partnered with renowned plastic + recycling companies that purchase the deposited plastics + from our platform. These companies utilize advanced + recycling technologies to transform waste plastics + into new materials, reducing the need for virgin plastics + and minimizing environmental impact. +
    • +
    +

    + +