├── .env ├── .github └── workflows │ └── main.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public ├── assets │ └── perview.gif ├── images │ └── footer-hero.webp └── videos │ └── background.mp4 ├── src ├── App.tsx ├── components │ ├── cards │ │ └── index.tsx │ ├── detailCard │ │ └── index.tsx │ ├── footer │ │ ├── banner.tsx │ │ ├── categorylink.tsx │ │ ├── copyright.tsx │ │ └── index.tsx │ ├── header │ │ ├── Navbar.tsx │ │ ├── TabsMenu.tsx │ │ └── index.tsx │ ├── index.ts │ ├── layout │ │ ├── Dilog.tsx │ │ └── index.tsx │ └── pagination │ │ └── index.tsx ├── data │ └── header.ts ├── main.tsx ├── pages │ ├── 404 │ │ └── index.tsx │ ├── followers │ │ └── index.tsx │ ├── following │ │ └── index.tsx │ ├── home │ │ └── index.tsx │ ├── index.ts │ └── repo │ │ └── index.tsx ├── routes │ └── Routes.tsx ├── services │ └── index.ts ├── state │ ├── index.ts │ └── repo.ts ├── utils │ ├── http-comman.ts │ ├── index.ts │ ├── interface.ts │ └── theme.ts └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.env: -------------------------------------------------------------------------------- 1 | VITE_BASE_URL=https://api.github.com/users/ 2 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Netlify Deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - master # Replace with your branch name if different 7 | 8 | jobs: 9 | build-and-deploy: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v3 15 | 16 | - name: Install dependencies 17 | run: npm install 18 | 19 | - name: Build 20 | run: npm run build 21 | 22 | - name: Deploy to Netlify 23 | uses: nwtgck/actions-netlify@v2.0 24 | with: 25 | publish-dir: dist 26 | production-branch: master # Replace with your branch name if different 27 | deploy-message: Deploy from GitHub Actions 28 | env: 29 | NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # IDEs and editors 15 | /.idea 16 | /.vscode 17 | 18 | # misc 19 | .DS_Store 20 | .env.local 21 | .env.development.local 22 | .env.test.local 23 | .env.production.local 24 | 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | sahup3296@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Welcome to GitHub docs contributing guide 2 | 3 | Thank you for investing your time in contributing to our project! Any contribution you make will be reflected on [docs.github.com](https://docs.github.com/en) :sparkles:. 4 | 5 | Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. 6 | 7 | In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. 8 | 9 | Use the table of contents icon on the top left corner of this document to get to a specific section of this guide quickly. 10 | 11 | ## New contributor guide 12 | 13 | To get an overview of the project, read the [README](README.md). Here are some resources to help you get started with open source contributions: 14 | 15 | - [Finding ways to contribute to open source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github) 16 | - [Set up Git](https://docs.github.com/en/get-started/quickstart/set-up-git) 17 | - [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow) 18 | - [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests) 19 | 20 | 21 | ## Getting started 22 | 23 | To navigate our codebase with confidence, see [the introduction to working in the docs repository](/contributing/working-in-docs-repository.md) :confetti_ball:. For more information on how we write our markdown files, see [the GitHub Markdown reference](contributing/content-markup-reference.md). 24 | 25 | Check to see what [types of contributions](/contributing/types-of-contributions.md) we accept before making changes. Some of them don't even require writing a single line of code :sparkles:. 26 | 27 | ### Issues 28 | 29 | #### Create a new issue 30 | 31 | If you spot a problem with the docs, [search if an issue already exists](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/github/docs/issues/new/choose). 32 | 33 | #### Solve an issue 34 | 35 | Scan through our [existing issues](https://github.com/github/docs/issues) to find one that interests you. You can narrow down the search using `labels` as filters. See [Labels](/contributing/how-to-use-labels.md) for more information. As a general rule, we don’t assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix. 36 | 37 | ### Make Changes 38 | 39 | #### Make changes in the UI 40 | 41 | Click **Make a contribution** at the bottom of any docs page to make small changes such as a typo, sentence fix, or a broken link. This takes you to the `.md` file where you can make your changes and [create a pull request](#pull-request) for a review. 42 | 43 | 44 | 45 | #### Make changes in a codespace 46 | 47 | For more information about using a codespace for working on GitHub documentation, see "[Working in a codespace](https://github.com/github/docs/blob/main/contributing/codespace.md)." 48 | 49 | #### Make changes locally 50 | 51 | 1. [Install Git LFS](https://docs.github.com/en/github/managing-large-files/versioning-large-files/installing-git-large-file-storage). 52 | 53 | 2. Fork the repository. 54 | - Using GitHub Desktop: 55 | - [Getting started with GitHub Desktop](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/getting-started-with-github-desktop) will guide you through setting up Desktop. 56 | - Once Desktop is set up, you can use it to [fork the repo](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/cloning-and-forking-repositories-from-github-desktop)! 57 | 58 | - Using the command line: 59 | - [Fork the repo](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo#fork-an-example-repository) so that you can make your changes without affecting the original project until you're ready to merge them. 60 | 61 | 3. Install or update to **Node.js v16**. For more information, see [the development guide](contributing/development.md). 62 | 63 | 4. Create a working branch and start with your changes! 64 | 65 | ### Commit your update 66 | 67 | Commit the changes once you are happy with them. Don't forget to [self-review](/contributing/self-review.md) to speed up the review process:zap:. 68 | 69 | ### Pull Request 70 | 71 | When you're finished with the changes, create a pull request, also known as a PR. 72 | - Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request. 73 | - Don't forget to [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are solving one. 74 | - Enable the checkbox to [allow maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork) so the branch can be updated for a merge. 75 | Once you submit your PR, a Docs team member will review your proposal. We may ask questions or request additional information. 76 | - We may ask for changes to be made before a PR can be merged, either using [suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request) or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch. 77 | - As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). 78 | - If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues. 79 | 80 | ### Your PR is merged! 81 | 82 | Congratulations :tada::tada: The GitHub team thanks you :sparkles:. 83 | 84 | Once your PR is merged, your contributions will be publicly visible on the [GitHub docs](https://docs.github.com/en). 85 | 86 | Now that you are part of the GitHub docs community, see how else you can [contribute to the docs](/contributing/types-of-contributions.md). 87 | 88 | ## Windows 89 | 90 | This site can be developed on Windows, however a few potential gotchas need to be kept in mind: 91 | 92 | 1. Regular Expressions: Windows uses `\r\n` for line endings, while Unix-based systems use `\n`. Therefore, when working on Regular Expressions, use `\r?\n` instead of `\n` in order to support both environments. The Node.js [`os.EOL`](https://nodejs.org/api/os.html#os_os_eol) property can be used to get an OS-specific end-of-line marker. 93 | 2. Paths: Windows systems use `\` for the path separator, which would be returned by `path.join` and others. You could use `path.posix`, `path.posix.join` etc and the [slash](https://ghub.io/slash) module, if you need forward slashes - like for constructing URLs - or ensure your code works with either. 94 | 3. Bash: Not every Windows developer has a terminal that fully supports Bash, so it's generally preferred to write [scripts](/script) in JavaScript instead of Bash. 95 | 4. Filename too long error: There is a 260 character limit for a filename when Git is compiled with `msys`. While the suggestions below are not guaranteed to work and could cause other issues, a few workarounds include: 96 | - Update Git configuration: `git config --system core.longpaths true` 97 | - Consider using a different Git client on Windows 98 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Sanskar Sahu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # SimpleWeb 💤 4 | 5 | ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/DSDmark/SimpleWeb) 6 | ![GitHub](https://img.shields.io/github/license/DSDmark/SimpleWeb) 7 | ![GitHub language count](https://img.shields.io/github/languages/count/DSDmark/SimpleWeb) 8 | ![GitHub last commit](https://img.shields.io/github/last-commit/DSDmark/SimpleWeb) 9 | [![Netlify Deploy](https://github.com/DSDmark/SimpleWeb/actions/workflows/main.yml/badge.svg)](https://github.com/DSDmark/SimpleWeb/actions/workflows/main.yml) 10 | 11 | ## Apis integration example with Vitets, Redux toolkit, Material-ui 🚀 with GitHub-APIs. 12 | 13 |
14 | 15 | ## Purpose 😑 16 | 17 | > The **SimpleWeb** web app serves as an example of how to Build Vitets App with Includes [**@mui/Material**](mui.com/) and **Redux toolkit** its peer dependencies, which include emotion, the built-in style engine in **MUI v5**. Moreover, it is employed by **RESTful APIs** and It works with the `Docker` platform. 18 | 19 |
20 | 21 |
22 | 23 | ### How to install 😒 24 | 25 | You can utilise that software in two different ways. 26 | 27 | - Using **Nodejs**. 28 | - Using **Docker**. 29 | 30 | #### Frist, here is by using **Nodejs**. 31 | 32 | 1. Click on the green **Clone or download** button and choose Download ZIP. 33 | 2. Find the downloaded zipped file on your pc and **extract it**. 34 | 3. Install `nodejs` and `NPM` in your local system. 35 | 4. Open the Root Directory, navigate to SimpleWeb using the command `cd SimpleWeb` and use either `npm install` or `pnpm install` to install all dependencies. 36 | 5. Run `pnpm dev` or `npm start`. 37 | 38 | #### Second, here is by using **Docker**. 39 | 40 | 1. Click on the green **Clone or download** button and choose Download ZIP. 41 | 2. Find the downloaded zipped file on your pc and **extract it**. 42 | 3. Then install `Docker` in your local system. 43 | 4. Run that command. 44 | `docker-compose up -d`. 45 | 5. You can now open the **frontend** at `localhost:3000`. 46 | 47 | Once you are done you can close 🔒 the application in your terminal to quit the application. 48 | 49 |
50 | 51 | --- 52 | 53 |
54 | 55 | ### Here you can quickly start with that repo 👼 56 | 57 |
58 | 59 | [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://githubbox.com/DSDmark/SimpleWeb/tree/master) 60 | 61 |
62 | 63 | ## Try Out SimpleCURD Demo 🚀 64 | 65 | SimpleWeb 66 | 67 |
68 | 69 | ### SimpleWeb 70 | 71 | ![SimpleWeb perview](./public/assets/perview.gif 'SimpleWeb') 72 | 73 | > If you have any issues with that Application feel free to let me know 🙃! 74 | 75 | > If you are more interested, check out 🥺 the collection of [ **DSDmark**](https://github.com/DSDmark"DSDmark"). 76 | 77 | --- 78 | 79 |
80 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | SimpleWeb 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simpleweb", 3 | "private": true, 4 | "version": "0.0.0", 5 | "homepage": "https://DSDmark.github.io/SimpleWeb", 6 | "type": "module", 7 | "scripts": { 8 | "dev": "vite", 9 | "predeploy": "npm run build", 10 | "deploy": "gh-pages -d dist", 11 | "build": "tsc && vite build", 12 | "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", 13 | "preview": "vite preview" 14 | }, 15 | "dependencies": { 16 | "@emotion/react": "^11.10.6", 17 | "@emotion/styled": "^11.10.6", 18 | "@mui/icons-material": "^5.11.16", 19 | "@mui/material": "^5.12.1", 20 | "@reduxjs/toolkit": "^1.9.5", 21 | "@types/react-router-dom": "^5.3.3", 22 | "axios": "^1.3.6", 23 | "react": "^18.2.0", 24 | "react-dom": "^18.2.0", 25 | "react-redux": "^8.0.5", 26 | "react-router-dom": "^6.10.0", 27 | "typewriter-effect": "^2.19.0" 28 | }, 29 | "devDependencies": { 30 | "@types/node": "^18.16.0", 31 | "@types/react": "^18.0.28", 32 | "@types/react-dom": "^18.0.11", 33 | "@typescript-eslint/eslint-plugin": "^5.57.1", 34 | "@typescript-eslint/parser": "^5.57.1", 35 | "@vitejs/plugin-react-swc": "^3.0.0", 36 | "eslint": "^8.38.0", 37 | "eslint-plugin-react-hooks": "^4.6.0", 38 | "eslint-plugin-react-refresh": "^0.3.4", 39 | "typescript": "^5.0.2", 40 | "vite": "^4.3.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@emotion/react': ^11.10.6 5 | '@emotion/styled': ^11.10.6 6 | '@mui/icons-material': ^5.11.16 7 | '@mui/material': ^5.12.1 8 | '@reduxjs/toolkit': ^1.9.5 9 | '@types/node': ^18.16.0 10 | '@types/react': ^18.0.28 11 | '@types/react-dom': ^18.0.11 12 | '@types/react-router-dom': ^5.3.3 13 | '@typescript-eslint/eslint-plugin': ^5.57.1 14 | '@typescript-eslint/parser': ^5.57.1 15 | '@vitejs/plugin-react-swc': ^3.0.0 16 | axios: ^1.3.6 17 | eslint: ^8.38.0 18 | eslint-plugin-react-hooks: ^4.6.0 19 | eslint-plugin-react-refresh: ^0.3.4 20 | react: ^18.2.0 21 | react-dom: ^18.2.0 22 | react-redux: ^8.0.5 23 | react-router-dom: ^6.10.0 24 | typescript: ^5.0.2 25 | typewriter-effect: ^2.19.0 26 | vite: ^4.3.0 27 | 28 | dependencies: 29 | '@emotion/react': 11.10.6_mj3jo2baq3jslihcop7oivercy 30 | '@emotion/styled': 11.10.6_vh4sscningxoupn6etopfj4xpy 31 | '@mui/icons-material': 5.11.16_xihlc4duomgd36w7ufdz6gz4km 32 | '@mui/material': 5.12.1_3xalaetzz5kb6sfo4xsrfwwhbe 33 | '@reduxjs/toolkit': 1.9.5_k4ae6lp43ej6mezo3ztvx6pykq 34 | '@types/react-router-dom': 5.3.3 35 | axios: 1.3.6 36 | react: 18.2.0 37 | react-dom: 18.2.0_react@18.2.0 38 | react-redux: 8.0.5_rzyliz2j3ixzcs72aaxsyibazq 39 | react-router-dom: 6.10.0_biqbaboplfbrettd7655fr4n2y 40 | typewriter-effect: 2.19.0_biqbaboplfbrettd7655fr4n2y 41 | 42 | devDependencies: 43 | '@types/node': 18.16.0 44 | '@types/react': 18.0.38 45 | '@types/react-dom': 18.0.11 46 | '@typescript-eslint/eslint-plugin': 5.59.0_chh3ljgpke5ydgcjpmkmu4hz5q 47 | '@typescript-eslint/parser': 5.59.0_iacogk7kkaymxepzhgcbytyi7q 48 | '@vitejs/plugin-react-swc': 3.3.0_vite@4.3.1 49 | eslint: 8.39.0 50 | eslint-plugin-react-hooks: 4.6.0_eslint@8.39.0 51 | eslint-plugin-react-refresh: 0.3.4_eslint@8.39.0 52 | typescript: 5.0.4 53 | vite: 4.3.1_@types+node@18.16.0 54 | 55 | packages: 56 | 57 | /@babel/code-frame/7.21.4: 58 | resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} 59 | engines: {node: '>=6.9.0'} 60 | dependencies: 61 | '@babel/highlight': 7.18.6 62 | dev: false 63 | 64 | /@babel/helper-module-imports/7.21.4: 65 | resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} 66 | engines: {node: '>=6.9.0'} 67 | dependencies: 68 | '@babel/types': 7.21.4 69 | dev: false 70 | 71 | /@babel/helper-string-parser/7.19.4: 72 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 73 | engines: {node: '>=6.9.0'} 74 | dev: false 75 | 76 | /@babel/helper-validator-identifier/7.19.1: 77 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 78 | engines: {node: '>=6.9.0'} 79 | dev: false 80 | 81 | /@babel/highlight/7.18.6: 82 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 83 | engines: {node: '>=6.9.0'} 84 | dependencies: 85 | '@babel/helper-validator-identifier': 7.19.1 86 | chalk: 2.4.2 87 | js-tokens: 4.0.0 88 | dev: false 89 | 90 | /@babel/runtime/7.21.0: 91 | resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} 92 | engines: {node: '>=6.9.0'} 93 | dependencies: 94 | regenerator-runtime: 0.13.11 95 | dev: false 96 | 97 | /@babel/types/7.21.4: 98 | resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} 99 | engines: {node: '>=6.9.0'} 100 | dependencies: 101 | '@babel/helper-string-parser': 7.19.4 102 | '@babel/helper-validator-identifier': 7.19.1 103 | to-fast-properties: 2.0.0 104 | dev: false 105 | 106 | /@emotion/babel-plugin/11.10.6: 107 | resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} 108 | dependencies: 109 | '@babel/helper-module-imports': 7.21.4 110 | '@babel/runtime': 7.21.0 111 | '@emotion/hash': 0.9.0 112 | '@emotion/memoize': 0.8.0 113 | '@emotion/serialize': 1.1.1 114 | babel-plugin-macros: 3.1.0 115 | convert-source-map: 1.9.0 116 | escape-string-regexp: 4.0.0 117 | find-root: 1.1.0 118 | source-map: 0.5.7 119 | stylis: 4.1.3 120 | dev: false 121 | 122 | /@emotion/cache/11.10.7: 123 | resolution: {integrity: sha512-VLl1/2D6LOjH57Y8Vem1RoZ9haWF4jesHDGiHtKozDQuBIkJm2gimVo0I02sWCuzZtVACeixTVB4jeE8qvCBoQ==} 124 | dependencies: 125 | '@emotion/memoize': 0.8.0 126 | '@emotion/sheet': 1.2.1 127 | '@emotion/utils': 1.2.0 128 | '@emotion/weak-memoize': 0.3.0 129 | stylis: 4.1.3 130 | dev: false 131 | 132 | /@emotion/hash/0.9.0: 133 | resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} 134 | dev: false 135 | 136 | /@emotion/is-prop-valid/1.2.0: 137 | resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} 138 | dependencies: 139 | '@emotion/memoize': 0.8.0 140 | dev: false 141 | 142 | /@emotion/memoize/0.8.0: 143 | resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} 144 | dev: false 145 | 146 | /@emotion/react/11.10.6_mj3jo2baq3jslihcop7oivercy: 147 | resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} 148 | peerDependencies: 149 | '@types/react': '*' 150 | react: '>=16.8.0' 151 | peerDependenciesMeta: 152 | '@types/react': 153 | optional: true 154 | dependencies: 155 | '@babel/runtime': 7.21.0 156 | '@emotion/babel-plugin': 11.10.6 157 | '@emotion/cache': 11.10.7 158 | '@emotion/serialize': 1.1.1 159 | '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 160 | '@emotion/utils': 1.2.0 161 | '@emotion/weak-memoize': 0.3.0 162 | '@types/react': 18.0.38 163 | hoist-non-react-statics: 3.3.2 164 | react: 18.2.0 165 | dev: false 166 | 167 | /@emotion/serialize/1.1.1: 168 | resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} 169 | dependencies: 170 | '@emotion/hash': 0.9.0 171 | '@emotion/memoize': 0.8.0 172 | '@emotion/unitless': 0.8.0 173 | '@emotion/utils': 1.2.0 174 | csstype: 3.1.2 175 | dev: false 176 | 177 | /@emotion/sheet/1.2.1: 178 | resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} 179 | dev: false 180 | 181 | /@emotion/styled/11.10.6_vh4sscningxoupn6etopfj4xpy: 182 | resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} 183 | peerDependencies: 184 | '@emotion/react': ^11.0.0-rc.0 185 | '@types/react': '*' 186 | react: '>=16.8.0' 187 | peerDependenciesMeta: 188 | '@types/react': 189 | optional: true 190 | dependencies: 191 | '@babel/runtime': 7.21.0 192 | '@emotion/babel-plugin': 11.10.6 193 | '@emotion/is-prop-valid': 1.2.0 194 | '@emotion/react': 11.10.6_mj3jo2baq3jslihcop7oivercy 195 | '@emotion/serialize': 1.1.1 196 | '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 197 | '@emotion/utils': 1.2.0 198 | '@types/react': 18.0.38 199 | react: 18.2.0 200 | dev: false 201 | 202 | /@emotion/unitless/0.8.0: 203 | resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} 204 | dev: false 205 | 206 | /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: 207 | resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} 208 | peerDependencies: 209 | react: '>=16.8.0' 210 | dependencies: 211 | react: 18.2.0 212 | dev: false 213 | 214 | /@emotion/utils/1.2.0: 215 | resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} 216 | dev: false 217 | 218 | /@emotion/weak-memoize/0.3.0: 219 | resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} 220 | dev: false 221 | 222 | /@esbuild/android-arm/0.17.18: 223 | resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} 224 | engines: {node: '>=12'} 225 | cpu: [arm] 226 | os: [android] 227 | requiresBuild: true 228 | dev: true 229 | optional: true 230 | 231 | /@esbuild/android-arm64/0.17.18: 232 | resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} 233 | engines: {node: '>=12'} 234 | cpu: [arm64] 235 | os: [android] 236 | requiresBuild: true 237 | dev: true 238 | optional: true 239 | 240 | /@esbuild/android-x64/0.17.18: 241 | resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} 242 | engines: {node: '>=12'} 243 | cpu: [x64] 244 | os: [android] 245 | requiresBuild: true 246 | dev: true 247 | optional: true 248 | 249 | /@esbuild/darwin-arm64/0.17.18: 250 | resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} 251 | engines: {node: '>=12'} 252 | cpu: [arm64] 253 | os: [darwin] 254 | requiresBuild: true 255 | dev: true 256 | optional: true 257 | 258 | /@esbuild/darwin-x64/0.17.18: 259 | resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} 260 | engines: {node: '>=12'} 261 | cpu: [x64] 262 | os: [darwin] 263 | requiresBuild: true 264 | dev: true 265 | optional: true 266 | 267 | /@esbuild/freebsd-arm64/0.17.18: 268 | resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} 269 | engines: {node: '>=12'} 270 | cpu: [arm64] 271 | os: [freebsd] 272 | requiresBuild: true 273 | dev: true 274 | optional: true 275 | 276 | /@esbuild/freebsd-x64/0.17.18: 277 | resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} 278 | engines: {node: '>=12'} 279 | cpu: [x64] 280 | os: [freebsd] 281 | requiresBuild: true 282 | dev: true 283 | optional: true 284 | 285 | /@esbuild/linux-arm/0.17.18: 286 | resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} 287 | engines: {node: '>=12'} 288 | cpu: [arm] 289 | os: [linux] 290 | requiresBuild: true 291 | dev: true 292 | optional: true 293 | 294 | /@esbuild/linux-arm64/0.17.18: 295 | resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} 296 | engines: {node: '>=12'} 297 | cpu: [arm64] 298 | os: [linux] 299 | requiresBuild: true 300 | dev: true 301 | optional: true 302 | 303 | /@esbuild/linux-ia32/0.17.18: 304 | resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} 305 | engines: {node: '>=12'} 306 | cpu: [ia32] 307 | os: [linux] 308 | requiresBuild: true 309 | dev: true 310 | optional: true 311 | 312 | /@esbuild/linux-loong64/0.17.18: 313 | resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} 314 | engines: {node: '>=12'} 315 | cpu: [loong64] 316 | os: [linux] 317 | requiresBuild: true 318 | dev: true 319 | optional: true 320 | 321 | /@esbuild/linux-mips64el/0.17.18: 322 | resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} 323 | engines: {node: '>=12'} 324 | cpu: [mips64el] 325 | os: [linux] 326 | requiresBuild: true 327 | dev: true 328 | optional: true 329 | 330 | /@esbuild/linux-ppc64/0.17.18: 331 | resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} 332 | engines: {node: '>=12'} 333 | cpu: [ppc64] 334 | os: [linux] 335 | requiresBuild: true 336 | dev: true 337 | optional: true 338 | 339 | /@esbuild/linux-riscv64/0.17.18: 340 | resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} 341 | engines: {node: '>=12'} 342 | cpu: [riscv64] 343 | os: [linux] 344 | requiresBuild: true 345 | dev: true 346 | optional: true 347 | 348 | /@esbuild/linux-s390x/0.17.18: 349 | resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} 350 | engines: {node: '>=12'} 351 | cpu: [s390x] 352 | os: [linux] 353 | requiresBuild: true 354 | dev: true 355 | optional: true 356 | 357 | /@esbuild/linux-x64/0.17.18: 358 | resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} 359 | engines: {node: '>=12'} 360 | cpu: [x64] 361 | os: [linux] 362 | requiresBuild: true 363 | dev: true 364 | optional: true 365 | 366 | /@esbuild/netbsd-x64/0.17.18: 367 | resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} 368 | engines: {node: '>=12'} 369 | cpu: [x64] 370 | os: [netbsd] 371 | requiresBuild: true 372 | dev: true 373 | optional: true 374 | 375 | /@esbuild/openbsd-x64/0.17.18: 376 | resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} 377 | engines: {node: '>=12'} 378 | cpu: [x64] 379 | os: [openbsd] 380 | requiresBuild: true 381 | dev: true 382 | optional: true 383 | 384 | /@esbuild/sunos-x64/0.17.18: 385 | resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} 386 | engines: {node: '>=12'} 387 | cpu: [x64] 388 | os: [sunos] 389 | requiresBuild: true 390 | dev: true 391 | optional: true 392 | 393 | /@esbuild/win32-arm64/0.17.18: 394 | resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} 395 | engines: {node: '>=12'} 396 | cpu: [arm64] 397 | os: [win32] 398 | requiresBuild: true 399 | dev: true 400 | optional: true 401 | 402 | /@esbuild/win32-ia32/0.17.18: 403 | resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} 404 | engines: {node: '>=12'} 405 | cpu: [ia32] 406 | os: [win32] 407 | requiresBuild: true 408 | dev: true 409 | optional: true 410 | 411 | /@esbuild/win32-x64/0.17.18: 412 | resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} 413 | engines: {node: '>=12'} 414 | cpu: [x64] 415 | os: [win32] 416 | requiresBuild: true 417 | dev: true 418 | optional: true 419 | 420 | /@eslint-community/eslint-utils/4.4.0_eslint@8.39.0: 421 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 422 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 423 | peerDependencies: 424 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 425 | dependencies: 426 | eslint: 8.39.0 427 | eslint-visitor-keys: 3.4.0 428 | dev: true 429 | 430 | /@eslint-community/regexpp/4.5.0: 431 | resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} 432 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 433 | dev: true 434 | 435 | /@eslint/eslintrc/2.0.2: 436 | resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} 437 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 438 | dependencies: 439 | ajv: 6.12.6 440 | debug: 4.3.4 441 | espree: 9.5.1 442 | globals: 13.20.0 443 | ignore: 5.2.4 444 | import-fresh: 3.3.0 445 | js-yaml: 4.1.0 446 | minimatch: 3.1.2 447 | strip-json-comments: 3.1.1 448 | transitivePeerDependencies: 449 | - supports-color 450 | dev: true 451 | 452 | /@eslint/js/8.39.0: 453 | resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} 454 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 455 | dev: true 456 | 457 | /@humanwhocodes/config-array/0.11.8: 458 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 459 | engines: {node: '>=10.10.0'} 460 | dependencies: 461 | '@humanwhocodes/object-schema': 1.2.1 462 | debug: 4.3.4 463 | minimatch: 3.1.2 464 | transitivePeerDependencies: 465 | - supports-color 466 | dev: true 467 | 468 | /@humanwhocodes/module-importer/1.0.1: 469 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 470 | engines: {node: '>=12.22'} 471 | dev: true 472 | 473 | /@humanwhocodes/object-schema/1.2.1: 474 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 475 | dev: true 476 | 477 | /@mui/base/5.0.0-alpha.126_g6eqzmexmujy3zvaqhkicj5z64: 478 | resolution: {integrity: sha512-I5e52A0Muv9Gaoy2GcqbYrQ6dpRyC2UXeA00brT3HuW0nF0E4fiTOIqdNTN+N5gyaYK0z3O6jtLt/97CCrIxVA==} 479 | engines: {node: '>=12.0.0'} 480 | peerDependencies: 481 | '@types/react': ^17.0.0 || ^18.0.0 482 | react: ^17.0.0 || ^18.0.0 483 | react-dom: ^17.0.0 || ^18.0.0 484 | peerDependenciesMeta: 485 | '@types/react': 486 | optional: true 487 | dependencies: 488 | '@babel/runtime': 7.21.0 489 | '@emotion/is-prop-valid': 1.2.0 490 | '@mui/types': 7.2.4_@types+react@18.0.38 491 | '@mui/utils': 5.12.0_react@18.2.0 492 | '@popperjs/core': 2.11.7 493 | '@types/react': 18.0.38 494 | clsx: 1.2.1 495 | prop-types: 15.8.1 496 | react: 18.2.0 497 | react-dom: 18.2.0_react@18.2.0 498 | react-is: 18.2.0 499 | dev: false 500 | 501 | /@mui/core-downloads-tracker/5.12.1: 502 | resolution: {integrity: sha512-rNiQYHtkXljcvCEnhWrJzie1ifff5O98j3uW7ZlchFgD8HWxEcz/QoxZvo+sCKC9aayAgxi9RsVn2VjCyp5CrA==} 503 | dev: false 504 | 505 | /@mui/icons-material/5.11.16_xihlc4duomgd36w7ufdz6gz4km: 506 | resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} 507 | engines: {node: '>=12.0.0'} 508 | peerDependencies: 509 | '@mui/material': ^5.0.0 510 | '@types/react': ^17.0.0 || ^18.0.0 511 | react: ^17.0.0 || ^18.0.0 512 | peerDependenciesMeta: 513 | '@types/react': 514 | optional: true 515 | dependencies: 516 | '@babel/runtime': 7.21.0 517 | '@mui/material': 5.12.1_3xalaetzz5kb6sfo4xsrfwwhbe 518 | '@types/react': 18.0.38 519 | react: 18.2.0 520 | dev: false 521 | 522 | /@mui/material/5.12.1_3xalaetzz5kb6sfo4xsrfwwhbe: 523 | resolution: {integrity: sha512-m+G9J6+FzIMhRqKV2y30yONH97wX107z9EWgiNCeS1/+y1CnytFZNG1ENdOuaJo1NimCRnmB/iXPvoOaSo6dOg==} 524 | engines: {node: '>=12.0.0'} 525 | peerDependencies: 526 | '@emotion/react': ^11.5.0 527 | '@emotion/styled': ^11.3.0 528 | '@types/react': ^17.0.0 || ^18.0.0 529 | react: ^17.0.0 || ^18.0.0 530 | react-dom: ^17.0.0 || ^18.0.0 531 | peerDependenciesMeta: 532 | '@emotion/react': 533 | optional: true 534 | '@emotion/styled': 535 | optional: true 536 | '@types/react': 537 | optional: true 538 | dependencies: 539 | '@babel/runtime': 7.21.0 540 | '@emotion/react': 11.10.6_mj3jo2baq3jslihcop7oivercy 541 | '@emotion/styled': 11.10.6_vh4sscningxoupn6etopfj4xpy 542 | '@mui/base': 5.0.0-alpha.126_g6eqzmexmujy3zvaqhkicj5z64 543 | '@mui/core-downloads-tracker': 5.12.1 544 | '@mui/system': 5.12.1_wdpjoxvnwxmfxsstl2rvqqgmhu 545 | '@mui/types': 7.2.4_@types+react@18.0.38 546 | '@mui/utils': 5.12.0_react@18.2.0 547 | '@types/react': 18.0.38 548 | '@types/react-transition-group': 4.4.5 549 | clsx: 1.2.1 550 | csstype: 3.1.2 551 | prop-types: 15.8.1 552 | react: 18.2.0 553 | react-dom: 18.2.0_react@18.2.0 554 | react-is: 18.2.0 555 | react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y 556 | dev: false 557 | 558 | /@mui/private-theming/5.12.0_mj3jo2baq3jslihcop7oivercy: 559 | resolution: {integrity: sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==} 560 | engines: {node: '>=12.0.0'} 561 | peerDependencies: 562 | '@types/react': ^17.0.0 || ^18.0.0 563 | react: ^17.0.0 || ^18.0.0 564 | peerDependenciesMeta: 565 | '@types/react': 566 | optional: true 567 | dependencies: 568 | '@babel/runtime': 7.21.0 569 | '@mui/utils': 5.12.0_react@18.2.0 570 | '@types/react': 18.0.38 571 | prop-types: 15.8.1 572 | react: 18.2.0 573 | dev: false 574 | 575 | /@mui/styled-engine/5.12.0_xqp3pgpqjlfxxa3zxu4zoc4fba: 576 | resolution: {integrity: sha512-frh8L7CRnvD0RDmIqEv6jFeKQUIXqW90BaZ6OrxJ2j4kIsiVLu29Gss4SbBvvrWwwatR72sBmC3w1aG4fjp9mQ==} 577 | engines: {node: '>=12.0.0'} 578 | peerDependencies: 579 | '@emotion/react': ^11.4.1 580 | '@emotion/styled': ^11.3.0 581 | react: ^17.0.0 || ^18.0.0 582 | peerDependenciesMeta: 583 | '@emotion/react': 584 | optional: true 585 | '@emotion/styled': 586 | optional: true 587 | dependencies: 588 | '@babel/runtime': 7.21.0 589 | '@emotion/cache': 11.10.7 590 | '@emotion/react': 11.10.6_mj3jo2baq3jslihcop7oivercy 591 | '@emotion/styled': 11.10.6_vh4sscningxoupn6etopfj4xpy 592 | csstype: 3.1.2 593 | prop-types: 15.8.1 594 | react: 18.2.0 595 | dev: false 596 | 597 | /@mui/system/5.12.1_wdpjoxvnwxmfxsstl2rvqqgmhu: 598 | resolution: {integrity: sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==} 599 | engines: {node: '>=12.0.0'} 600 | peerDependencies: 601 | '@emotion/react': ^11.5.0 602 | '@emotion/styled': ^11.3.0 603 | '@types/react': ^17.0.0 || ^18.0.0 604 | react: ^17.0.0 || ^18.0.0 605 | peerDependenciesMeta: 606 | '@emotion/react': 607 | optional: true 608 | '@emotion/styled': 609 | optional: true 610 | '@types/react': 611 | optional: true 612 | dependencies: 613 | '@babel/runtime': 7.21.0 614 | '@emotion/react': 11.10.6_mj3jo2baq3jslihcop7oivercy 615 | '@emotion/styled': 11.10.6_vh4sscningxoupn6etopfj4xpy 616 | '@mui/private-theming': 5.12.0_mj3jo2baq3jslihcop7oivercy 617 | '@mui/styled-engine': 5.12.0_xqp3pgpqjlfxxa3zxu4zoc4fba 618 | '@mui/types': 7.2.4_@types+react@18.0.38 619 | '@mui/utils': 5.12.0_react@18.2.0 620 | '@types/react': 18.0.38 621 | clsx: 1.2.1 622 | csstype: 3.1.2 623 | prop-types: 15.8.1 624 | react: 18.2.0 625 | dev: false 626 | 627 | /@mui/types/7.2.4_@types+react@18.0.38: 628 | resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} 629 | peerDependencies: 630 | '@types/react': '*' 631 | peerDependenciesMeta: 632 | '@types/react': 633 | optional: true 634 | dependencies: 635 | '@types/react': 18.0.38 636 | dev: false 637 | 638 | /@mui/utils/5.12.0_react@18.2.0: 639 | resolution: {integrity: sha512-RmQwgzF72p7Yr4+AAUO6j1v2uzt6wr7SWXn68KBsnfVpdOHyclCzH2lr/Xu6YOw9su4JRtdAIYfJFXsS6Cjkmw==} 640 | engines: {node: '>=12.0.0'} 641 | peerDependencies: 642 | react: ^17.0.0 || ^18.0.0 643 | dependencies: 644 | '@babel/runtime': 7.21.0 645 | '@types/prop-types': 15.7.5 646 | '@types/react-is': 17.0.3 647 | prop-types: 15.8.1 648 | react: 18.2.0 649 | react-is: 18.2.0 650 | dev: false 651 | 652 | /@nodelib/fs.scandir/2.1.5: 653 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 654 | engines: {node: '>= 8'} 655 | dependencies: 656 | '@nodelib/fs.stat': 2.0.5 657 | run-parallel: 1.2.0 658 | dev: true 659 | 660 | /@nodelib/fs.stat/2.0.5: 661 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 662 | engines: {node: '>= 8'} 663 | dev: true 664 | 665 | /@nodelib/fs.walk/1.2.8: 666 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 667 | engines: {node: '>= 8'} 668 | dependencies: 669 | '@nodelib/fs.scandir': 2.1.5 670 | fastq: 1.15.0 671 | dev: true 672 | 673 | /@popperjs/core/2.11.7: 674 | resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==} 675 | dev: false 676 | 677 | /@reduxjs/toolkit/1.9.5_k4ae6lp43ej6mezo3ztvx6pykq: 678 | resolution: {integrity: sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==} 679 | peerDependencies: 680 | react: ^16.9.0 || ^17.0.0 || ^18 681 | react-redux: ^7.2.1 || ^8.0.2 682 | peerDependenciesMeta: 683 | react: 684 | optional: true 685 | react-redux: 686 | optional: true 687 | dependencies: 688 | immer: 9.0.21 689 | react: 18.2.0 690 | react-redux: 8.0.5_rzyliz2j3ixzcs72aaxsyibazq 691 | redux: 4.2.1 692 | redux-thunk: 2.4.2_redux@4.2.1 693 | reselect: 4.1.8 694 | dev: false 695 | 696 | /@remix-run/router/1.5.0: 697 | resolution: {integrity: sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==} 698 | engines: {node: '>=14'} 699 | dev: false 700 | 701 | /@swc/core-darwin-arm64/1.3.53: 702 | resolution: {integrity: sha512-JvWwV/duzdQ60iwWYceDhDk75LmdrLoPC7myX3Src3gl/bJtETMq7uHS9uY8m0GQOqbct7XGR3q5Ff21YxkSzg==} 703 | engines: {node: '>=10'} 704 | cpu: [arm64] 705 | os: [darwin] 706 | requiresBuild: true 707 | dev: true 708 | optional: true 709 | 710 | /@swc/core-darwin-x64/1.3.53: 711 | resolution: {integrity: sha512-UuIGZtCfUPJM2Q01bRIFzmucOMg8UZ+mY3kh5xB8kl/VrLltBlraSWGjjJzYmUeUxiF8+CtMfeSYav5QfU2v3g==} 712 | engines: {node: '>=10'} 713 | cpu: [x64] 714 | os: [darwin] 715 | requiresBuild: true 716 | dev: true 717 | optional: true 718 | 719 | /@swc/core-linux-arm-gnueabihf/1.3.53: 720 | resolution: {integrity: sha512-LupAjTErteyLmowYIfiQeTz3uVh7/SPYv/EuG1PYrajNoUYomt7WA0rQUoyglF9VtwVyNqxptWEO5So32ApTHA==} 721 | engines: {node: '>=10'} 722 | cpu: [arm] 723 | os: [linux] 724 | requiresBuild: true 725 | dev: true 726 | optional: true 727 | 728 | /@swc/core-linux-arm64-gnu/1.3.53: 729 | resolution: {integrity: sha512-kREfZdiJH/O8GtJJ22wVN9DVzz/+CPAkw5Mn5te2KQg0xJHMWaESU5XeYMWvtwyOQVmb31b6zCGFy3pnBWWfGw==} 730 | engines: {node: '>=10'} 731 | cpu: [arm64] 732 | os: [linux] 733 | requiresBuild: true 734 | dev: true 735 | optional: true 736 | 737 | /@swc/core-linux-arm64-musl/1.3.53: 738 | resolution: {integrity: sha512-VeAgomBr6BVuBRjZjRHmvp5gKp1nZgbbd441ca1AvsPd2c+ZyhyHLxTWeHOzBDa/vYnmi9BCwx3QJzFqbAFPVw==} 739 | engines: {node: '>=10'} 740 | cpu: [arm64] 741 | os: [linux] 742 | requiresBuild: true 743 | dev: true 744 | optional: true 745 | 746 | /@swc/core-linux-x64-gnu/1.3.53: 747 | resolution: {integrity: sha512-LFX5+QpQkESPkmx860C40pIiYf1utEqoA+WDtmKnUz3DucYvw3eGlXCBdyklP7UBWwJktKIcPlIqr7yROY5VlQ==} 748 | engines: {node: '>=10'} 749 | cpu: [x64] 750 | os: [linux] 751 | requiresBuild: true 752 | dev: true 753 | optional: true 754 | 755 | /@swc/core-linux-x64-musl/1.3.53: 756 | resolution: {integrity: sha512-O0lbJgeaM0VEsG8wFYvpF+Iuf0IENv+LnXHoygkAsv67sVW54+gFxav2sEdkftD5qYe9ku4tmtTVYRZlFgC84Q==} 757 | engines: {node: '>=10'} 758 | cpu: [x64] 759 | os: [linux] 760 | requiresBuild: true 761 | dev: true 762 | optional: true 763 | 764 | /@swc/core-win32-arm64-msvc/1.3.53: 765 | resolution: {integrity: sha512-7PgvPl0aNLaFZSK+rIi4DB1g0aW2qOsTIJQSJGRszsCP8pze/traXymyuSG2I3y9Hx7Z+bP5ycJydyAgCw88WA==} 766 | engines: {node: '>=10'} 767 | cpu: [arm64] 768 | os: [win32] 769 | requiresBuild: true 770 | dev: true 771 | optional: true 772 | 773 | /@swc/core-win32-ia32-msvc/1.3.53: 774 | resolution: {integrity: sha512-T+OacGm69t8+1mt1sHlwhREiFiFgSeIGL3h11FIs8o2zKnOr5z2H9myzR432X8WuHGVQAOCMvDu53LCMBD0ZzQ==} 775 | engines: {node: '>=10'} 776 | cpu: [ia32] 777 | os: [win32] 778 | requiresBuild: true 779 | dev: true 780 | optional: true 781 | 782 | /@swc/core-win32-x64-msvc/1.3.53: 783 | resolution: {integrity: sha512-uV1/GhROJ/SXzj+f+kKcVtR2GuAiggvbqepzZS46+G47okf6229hr2T1fjmiwYyA75w9R3Bj/wil4UhodohOLg==} 784 | engines: {node: '>=10'} 785 | cpu: [x64] 786 | os: [win32] 787 | requiresBuild: true 788 | dev: true 789 | optional: true 790 | 791 | /@swc/core/1.3.53: 792 | resolution: {integrity: sha512-OM5nCfKDZXr1HjxD072Jlx5463tPX7xeY7NDSRE3X4KFlkRDFdyMWAyV3pet1oouOfUNrzzoVTAR4XSU8ytO6Q==} 793 | engines: {node: '>=10'} 794 | requiresBuild: true 795 | peerDependencies: 796 | '@swc/helpers': ^0.5.0 797 | peerDependenciesMeta: 798 | '@swc/helpers': 799 | optional: true 800 | optionalDependencies: 801 | '@swc/core-darwin-arm64': 1.3.53 802 | '@swc/core-darwin-x64': 1.3.53 803 | '@swc/core-linux-arm-gnueabihf': 1.3.53 804 | '@swc/core-linux-arm64-gnu': 1.3.53 805 | '@swc/core-linux-arm64-musl': 1.3.53 806 | '@swc/core-linux-x64-gnu': 1.3.53 807 | '@swc/core-linux-x64-musl': 1.3.53 808 | '@swc/core-win32-arm64-msvc': 1.3.53 809 | '@swc/core-win32-ia32-msvc': 1.3.53 810 | '@swc/core-win32-x64-msvc': 1.3.53 811 | dev: true 812 | 813 | /@types/history/4.7.11: 814 | resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} 815 | dev: false 816 | 817 | /@types/hoist-non-react-statics/3.3.1: 818 | resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} 819 | dependencies: 820 | '@types/react': 18.0.38 821 | hoist-non-react-statics: 3.3.2 822 | dev: false 823 | 824 | /@types/json-schema/7.0.11: 825 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 826 | dev: true 827 | 828 | /@types/node/18.16.0: 829 | resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} 830 | dev: true 831 | 832 | /@types/parse-json/4.0.0: 833 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} 834 | dev: false 835 | 836 | /@types/prop-types/15.7.5: 837 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 838 | 839 | /@types/react-dom/18.0.11: 840 | resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} 841 | dependencies: 842 | '@types/react': 18.0.38 843 | 844 | /@types/react-is/17.0.3: 845 | resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} 846 | dependencies: 847 | '@types/react': 18.0.38 848 | dev: false 849 | 850 | /@types/react-router-dom/5.3.3: 851 | resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} 852 | dependencies: 853 | '@types/history': 4.7.11 854 | '@types/react': 18.0.38 855 | '@types/react-router': 5.1.20 856 | dev: false 857 | 858 | /@types/react-router/5.1.20: 859 | resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} 860 | dependencies: 861 | '@types/history': 4.7.11 862 | '@types/react': 18.0.38 863 | dev: false 864 | 865 | /@types/react-transition-group/4.4.5: 866 | resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} 867 | dependencies: 868 | '@types/react': 18.0.38 869 | dev: false 870 | 871 | /@types/react/18.0.38: 872 | resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} 873 | dependencies: 874 | '@types/prop-types': 15.7.5 875 | '@types/scheduler': 0.16.3 876 | csstype: 3.1.2 877 | 878 | /@types/scheduler/0.16.3: 879 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 880 | 881 | /@types/semver/7.3.13: 882 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 883 | dev: true 884 | 885 | /@types/use-sync-external-store/0.0.3: 886 | resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} 887 | dev: false 888 | 889 | /@typescript-eslint/eslint-plugin/5.59.0_chh3ljgpke5ydgcjpmkmu4hz5q: 890 | resolution: {integrity: sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==} 891 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 892 | peerDependencies: 893 | '@typescript-eslint/parser': ^5.0.0 894 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 895 | typescript: '*' 896 | peerDependenciesMeta: 897 | typescript: 898 | optional: true 899 | dependencies: 900 | '@eslint-community/regexpp': 4.5.0 901 | '@typescript-eslint/parser': 5.59.0_iacogk7kkaymxepzhgcbytyi7q 902 | '@typescript-eslint/scope-manager': 5.59.0 903 | '@typescript-eslint/type-utils': 5.59.0_iacogk7kkaymxepzhgcbytyi7q 904 | '@typescript-eslint/utils': 5.59.0_iacogk7kkaymxepzhgcbytyi7q 905 | debug: 4.3.4 906 | eslint: 8.39.0 907 | grapheme-splitter: 1.0.4 908 | ignore: 5.2.4 909 | natural-compare-lite: 1.4.0 910 | semver: 7.5.0 911 | tsutils: 3.21.0_typescript@5.0.4 912 | typescript: 5.0.4 913 | transitivePeerDependencies: 914 | - supports-color 915 | dev: true 916 | 917 | /@typescript-eslint/parser/5.59.0_iacogk7kkaymxepzhgcbytyi7q: 918 | resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} 919 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 920 | peerDependencies: 921 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 922 | typescript: '*' 923 | peerDependenciesMeta: 924 | typescript: 925 | optional: true 926 | dependencies: 927 | '@typescript-eslint/scope-manager': 5.59.0 928 | '@typescript-eslint/types': 5.59.0 929 | '@typescript-eslint/typescript-estree': 5.59.0_typescript@5.0.4 930 | debug: 4.3.4 931 | eslint: 8.39.0 932 | typescript: 5.0.4 933 | transitivePeerDependencies: 934 | - supports-color 935 | dev: true 936 | 937 | /@typescript-eslint/scope-manager/5.59.0: 938 | resolution: {integrity: sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==} 939 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 940 | dependencies: 941 | '@typescript-eslint/types': 5.59.0 942 | '@typescript-eslint/visitor-keys': 5.59.0 943 | dev: true 944 | 945 | /@typescript-eslint/type-utils/5.59.0_iacogk7kkaymxepzhgcbytyi7q: 946 | resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} 947 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 948 | peerDependencies: 949 | eslint: '*' 950 | typescript: '*' 951 | peerDependenciesMeta: 952 | typescript: 953 | optional: true 954 | dependencies: 955 | '@typescript-eslint/typescript-estree': 5.59.0_typescript@5.0.4 956 | '@typescript-eslint/utils': 5.59.0_iacogk7kkaymxepzhgcbytyi7q 957 | debug: 4.3.4 958 | eslint: 8.39.0 959 | tsutils: 3.21.0_typescript@5.0.4 960 | typescript: 5.0.4 961 | transitivePeerDependencies: 962 | - supports-color 963 | dev: true 964 | 965 | /@typescript-eslint/types/5.59.0: 966 | resolution: {integrity: sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==} 967 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 968 | dev: true 969 | 970 | /@typescript-eslint/typescript-estree/5.59.0_typescript@5.0.4: 971 | resolution: {integrity: sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==} 972 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 973 | peerDependencies: 974 | typescript: '*' 975 | peerDependenciesMeta: 976 | typescript: 977 | optional: true 978 | dependencies: 979 | '@typescript-eslint/types': 5.59.0 980 | '@typescript-eslint/visitor-keys': 5.59.0 981 | debug: 4.3.4 982 | globby: 11.1.0 983 | is-glob: 4.0.3 984 | semver: 7.5.0 985 | tsutils: 3.21.0_typescript@5.0.4 986 | typescript: 5.0.4 987 | transitivePeerDependencies: 988 | - supports-color 989 | dev: true 990 | 991 | /@typescript-eslint/utils/5.59.0_iacogk7kkaymxepzhgcbytyi7q: 992 | resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} 993 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 994 | peerDependencies: 995 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 996 | dependencies: 997 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.39.0 998 | '@types/json-schema': 7.0.11 999 | '@types/semver': 7.3.13 1000 | '@typescript-eslint/scope-manager': 5.59.0 1001 | '@typescript-eslint/types': 5.59.0 1002 | '@typescript-eslint/typescript-estree': 5.59.0_typescript@5.0.4 1003 | eslint: 8.39.0 1004 | eslint-scope: 5.1.1 1005 | semver: 7.5.0 1006 | transitivePeerDependencies: 1007 | - supports-color 1008 | - typescript 1009 | dev: true 1010 | 1011 | /@typescript-eslint/visitor-keys/5.59.0: 1012 | resolution: {integrity: sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==} 1013 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1014 | dependencies: 1015 | '@typescript-eslint/types': 5.59.0 1016 | eslint-visitor-keys: 3.4.0 1017 | dev: true 1018 | 1019 | /@vitejs/plugin-react-swc/3.3.0_vite@4.3.1: 1020 | resolution: {integrity: sha512-Ycg+n2eyCOTpn/wRy+evVo859+hw7qCj9iaX5CMny6x1fx1Uoq0xBG+a98lFtwLNGfGEnpI0F26YigRuxCRkwg==} 1021 | peerDependencies: 1022 | vite: ^4 1023 | dependencies: 1024 | '@swc/core': 1.3.53 1025 | vite: 4.3.1_@types+node@18.16.0 1026 | transitivePeerDependencies: 1027 | - '@swc/helpers' 1028 | dev: true 1029 | 1030 | /acorn-jsx/5.3.2_acorn@8.8.2: 1031 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1032 | peerDependencies: 1033 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1034 | dependencies: 1035 | acorn: 8.8.2 1036 | dev: true 1037 | 1038 | /acorn/8.8.2: 1039 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 1040 | engines: {node: '>=0.4.0'} 1041 | hasBin: true 1042 | dev: true 1043 | 1044 | /ajv/6.12.6: 1045 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1046 | dependencies: 1047 | fast-deep-equal: 3.1.3 1048 | fast-json-stable-stringify: 2.1.0 1049 | json-schema-traverse: 0.4.1 1050 | uri-js: 4.4.1 1051 | dev: true 1052 | 1053 | /ansi-regex/5.0.1: 1054 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1055 | engines: {node: '>=8'} 1056 | dev: true 1057 | 1058 | /ansi-styles/3.2.1: 1059 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1060 | engines: {node: '>=4'} 1061 | dependencies: 1062 | color-convert: 1.9.3 1063 | dev: false 1064 | 1065 | /ansi-styles/4.3.0: 1066 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1067 | engines: {node: '>=8'} 1068 | dependencies: 1069 | color-convert: 2.0.1 1070 | dev: true 1071 | 1072 | /argparse/2.0.1: 1073 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1074 | dev: true 1075 | 1076 | /array-union/2.1.0: 1077 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 1078 | engines: {node: '>=8'} 1079 | dev: true 1080 | 1081 | /asynckit/0.4.0: 1082 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 1083 | dev: false 1084 | 1085 | /axios/1.3.6: 1086 | resolution: {integrity: sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==} 1087 | dependencies: 1088 | follow-redirects: 1.15.2 1089 | form-data: 4.0.0 1090 | proxy-from-env: 1.1.0 1091 | transitivePeerDependencies: 1092 | - debug 1093 | dev: false 1094 | 1095 | /babel-plugin-macros/3.1.0: 1096 | resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} 1097 | engines: {node: '>=10', npm: '>=6'} 1098 | dependencies: 1099 | '@babel/runtime': 7.21.0 1100 | cosmiconfig: 7.1.0 1101 | resolve: 1.22.2 1102 | dev: false 1103 | 1104 | /balanced-match/1.0.2: 1105 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1106 | dev: true 1107 | 1108 | /brace-expansion/1.1.11: 1109 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1110 | dependencies: 1111 | balanced-match: 1.0.2 1112 | concat-map: 0.0.1 1113 | dev: true 1114 | 1115 | /braces/3.0.2: 1116 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1117 | engines: {node: '>=8'} 1118 | dependencies: 1119 | fill-range: 7.0.1 1120 | dev: true 1121 | 1122 | /callsites/3.1.0: 1123 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1124 | engines: {node: '>=6'} 1125 | 1126 | /chalk/2.4.2: 1127 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1128 | engines: {node: '>=4'} 1129 | dependencies: 1130 | ansi-styles: 3.2.1 1131 | escape-string-regexp: 1.0.5 1132 | supports-color: 5.5.0 1133 | dev: false 1134 | 1135 | /chalk/4.1.2: 1136 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1137 | engines: {node: '>=10'} 1138 | dependencies: 1139 | ansi-styles: 4.3.0 1140 | supports-color: 7.2.0 1141 | dev: true 1142 | 1143 | /clsx/1.2.1: 1144 | resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} 1145 | engines: {node: '>=6'} 1146 | dev: false 1147 | 1148 | /color-convert/1.9.3: 1149 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1150 | dependencies: 1151 | color-name: 1.1.3 1152 | dev: false 1153 | 1154 | /color-convert/2.0.1: 1155 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1156 | engines: {node: '>=7.0.0'} 1157 | dependencies: 1158 | color-name: 1.1.4 1159 | dev: true 1160 | 1161 | /color-name/1.1.3: 1162 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1163 | dev: false 1164 | 1165 | /color-name/1.1.4: 1166 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1167 | dev: true 1168 | 1169 | /combined-stream/1.0.8: 1170 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1171 | engines: {node: '>= 0.8'} 1172 | dependencies: 1173 | delayed-stream: 1.0.0 1174 | dev: false 1175 | 1176 | /concat-map/0.0.1: 1177 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1178 | dev: true 1179 | 1180 | /convert-source-map/1.9.0: 1181 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1182 | dev: false 1183 | 1184 | /cosmiconfig/7.1.0: 1185 | resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} 1186 | engines: {node: '>=10'} 1187 | dependencies: 1188 | '@types/parse-json': 4.0.0 1189 | import-fresh: 3.3.0 1190 | parse-json: 5.2.0 1191 | path-type: 4.0.0 1192 | yaml: 1.10.2 1193 | dev: false 1194 | 1195 | /cross-spawn/7.0.3: 1196 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1197 | engines: {node: '>= 8'} 1198 | dependencies: 1199 | path-key: 3.1.1 1200 | shebang-command: 2.0.0 1201 | which: 2.0.2 1202 | dev: true 1203 | 1204 | /csstype/3.1.2: 1205 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 1206 | 1207 | /debug/4.3.4: 1208 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1209 | engines: {node: '>=6.0'} 1210 | peerDependencies: 1211 | supports-color: '*' 1212 | peerDependenciesMeta: 1213 | supports-color: 1214 | optional: true 1215 | dependencies: 1216 | ms: 2.1.2 1217 | dev: true 1218 | 1219 | /deep-is/0.1.4: 1220 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1221 | dev: true 1222 | 1223 | /delayed-stream/1.0.0: 1224 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1225 | engines: {node: '>=0.4.0'} 1226 | dev: false 1227 | 1228 | /dir-glob/3.0.1: 1229 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1230 | engines: {node: '>=8'} 1231 | dependencies: 1232 | path-type: 4.0.0 1233 | dev: true 1234 | 1235 | /doctrine/3.0.0: 1236 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1237 | engines: {node: '>=6.0.0'} 1238 | dependencies: 1239 | esutils: 2.0.3 1240 | dev: true 1241 | 1242 | /dom-helpers/5.2.1: 1243 | resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} 1244 | dependencies: 1245 | '@babel/runtime': 7.21.0 1246 | csstype: 3.1.2 1247 | dev: false 1248 | 1249 | /error-ex/1.3.2: 1250 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1251 | dependencies: 1252 | is-arrayish: 0.2.1 1253 | dev: false 1254 | 1255 | /esbuild/0.17.18: 1256 | resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} 1257 | engines: {node: '>=12'} 1258 | hasBin: true 1259 | requiresBuild: true 1260 | optionalDependencies: 1261 | '@esbuild/android-arm': 0.17.18 1262 | '@esbuild/android-arm64': 0.17.18 1263 | '@esbuild/android-x64': 0.17.18 1264 | '@esbuild/darwin-arm64': 0.17.18 1265 | '@esbuild/darwin-x64': 0.17.18 1266 | '@esbuild/freebsd-arm64': 0.17.18 1267 | '@esbuild/freebsd-x64': 0.17.18 1268 | '@esbuild/linux-arm': 0.17.18 1269 | '@esbuild/linux-arm64': 0.17.18 1270 | '@esbuild/linux-ia32': 0.17.18 1271 | '@esbuild/linux-loong64': 0.17.18 1272 | '@esbuild/linux-mips64el': 0.17.18 1273 | '@esbuild/linux-ppc64': 0.17.18 1274 | '@esbuild/linux-riscv64': 0.17.18 1275 | '@esbuild/linux-s390x': 0.17.18 1276 | '@esbuild/linux-x64': 0.17.18 1277 | '@esbuild/netbsd-x64': 0.17.18 1278 | '@esbuild/openbsd-x64': 0.17.18 1279 | '@esbuild/sunos-x64': 0.17.18 1280 | '@esbuild/win32-arm64': 0.17.18 1281 | '@esbuild/win32-ia32': 0.17.18 1282 | '@esbuild/win32-x64': 0.17.18 1283 | dev: true 1284 | 1285 | /escape-string-regexp/1.0.5: 1286 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1287 | engines: {node: '>=0.8.0'} 1288 | dev: false 1289 | 1290 | /escape-string-regexp/4.0.0: 1291 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1292 | engines: {node: '>=10'} 1293 | 1294 | /eslint-plugin-react-hooks/4.6.0_eslint@8.39.0: 1295 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1296 | engines: {node: '>=10'} 1297 | peerDependencies: 1298 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1299 | dependencies: 1300 | eslint: 8.39.0 1301 | dev: true 1302 | 1303 | /eslint-plugin-react-refresh/0.3.4_eslint@8.39.0: 1304 | resolution: {integrity: sha512-E0ViBglxSQAERBp6eTj5fPgtCRtDonnbCFiVQBhf4Dto2blJRxg1dFUMdMh7N6ljTI4UwPhHwYDQ3Dyo4m6bwA==} 1305 | peerDependencies: 1306 | eslint: '>=7' 1307 | dependencies: 1308 | eslint: 8.39.0 1309 | dev: true 1310 | 1311 | /eslint-scope/5.1.1: 1312 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1313 | engines: {node: '>=8.0.0'} 1314 | dependencies: 1315 | esrecurse: 4.3.0 1316 | estraverse: 4.3.0 1317 | dev: true 1318 | 1319 | /eslint-scope/7.2.0: 1320 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 1321 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1322 | dependencies: 1323 | esrecurse: 4.3.0 1324 | estraverse: 5.3.0 1325 | dev: true 1326 | 1327 | /eslint-visitor-keys/3.4.0: 1328 | resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} 1329 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1330 | dev: true 1331 | 1332 | /eslint/8.39.0: 1333 | resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} 1334 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1335 | hasBin: true 1336 | dependencies: 1337 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.39.0 1338 | '@eslint-community/regexpp': 4.5.0 1339 | '@eslint/eslintrc': 2.0.2 1340 | '@eslint/js': 8.39.0 1341 | '@humanwhocodes/config-array': 0.11.8 1342 | '@humanwhocodes/module-importer': 1.0.1 1343 | '@nodelib/fs.walk': 1.2.8 1344 | ajv: 6.12.6 1345 | chalk: 4.1.2 1346 | cross-spawn: 7.0.3 1347 | debug: 4.3.4 1348 | doctrine: 3.0.0 1349 | escape-string-regexp: 4.0.0 1350 | eslint-scope: 7.2.0 1351 | eslint-visitor-keys: 3.4.0 1352 | espree: 9.5.1 1353 | esquery: 1.5.0 1354 | esutils: 2.0.3 1355 | fast-deep-equal: 3.1.3 1356 | file-entry-cache: 6.0.1 1357 | find-up: 5.0.0 1358 | glob-parent: 6.0.2 1359 | globals: 13.20.0 1360 | grapheme-splitter: 1.0.4 1361 | ignore: 5.2.4 1362 | import-fresh: 3.3.0 1363 | imurmurhash: 0.1.4 1364 | is-glob: 4.0.3 1365 | is-path-inside: 3.0.3 1366 | js-sdsl: 4.4.0 1367 | js-yaml: 4.1.0 1368 | json-stable-stringify-without-jsonify: 1.0.1 1369 | levn: 0.4.1 1370 | lodash.merge: 4.6.2 1371 | minimatch: 3.1.2 1372 | natural-compare: 1.4.0 1373 | optionator: 0.9.1 1374 | strip-ansi: 6.0.1 1375 | strip-json-comments: 3.1.1 1376 | text-table: 0.2.0 1377 | transitivePeerDependencies: 1378 | - supports-color 1379 | dev: true 1380 | 1381 | /espree/9.5.1: 1382 | resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} 1383 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1384 | dependencies: 1385 | acorn: 8.8.2 1386 | acorn-jsx: 5.3.2_acorn@8.8.2 1387 | eslint-visitor-keys: 3.4.0 1388 | dev: true 1389 | 1390 | /esquery/1.5.0: 1391 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1392 | engines: {node: '>=0.10'} 1393 | dependencies: 1394 | estraverse: 5.3.0 1395 | dev: true 1396 | 1397 | /esrecurse/4.3.0: 1398 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1399 | engines: {node: '>=4.0'} 1400 | dependencies: 1401 | estraverse: 5.3.0 1402 | dev: true 1403 | 1404 | /estraverse/4.3.0: 1405 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1406 | engines: {node: '>=4.0'} 1407 | dev: true 1408 | 1409 | /estraverse/5.3.0: 1410 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1411 | engines: {node: '>=4.0'} 1412 | dev: true 1413 | 1414 | /esutils/2.0.3: 1415 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1416 | engines: {node: '>=0.10.0'} 1417 | dev: true 1418 | 1419 | /fast-deep-equal/3.1.3: 1420 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1421 | dev: true 1422 | 1423 | /fast-glob/3.2.12: 1424 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1425 | engines: {node: '>=8.6.0'} 1426 | dependencies: 1427 | '@nodelib/fs.stat': 2.0.5 1428 | '@nodelib/fs.walk': 1.2.8 1429 | glob-parent: 5.1.2 1430 | merge2: 1.4.1 1431 | micromatch: 4.0.5 1432 | dev: true 1433 | 1434 | /fast-json-stable-stringify/2.1.0: 1435 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1436 | dev: true 1437 | 1438 | /fast-levenshtein/2.0.6: 1439 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1440 | dev: true 1441 | 1442 | /fastq/1.15.0: 1443 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1444 | dependencies: 1445 | reusify: 1.0.4 1446 | dev: true 1447 | 1448 | /file-entry-cache/6.0.1: 1449 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1450 | engines: {node: ^10.12.0 || >=12.0.0} 1451 | dependencies: 1452 | flat-cache: 3.0.4 1453 | dev: true 1454 | 1455 | /fill-range/7.0.1: 1456 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1457 | engines: {node: '>=8'} 1458 | dependencies: 1459 | to-regex-range: 5.0.1 1460 | dev: true 1461 | 1462 | /find-root/1.1.0: 1463 | resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} 1464 | dev: false 1465 | 1466 | /find-up/5.0.0: 1467 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1468 | engines: {node: '>=10'} 1469 | dependencies: 1470 | locate-path: 6.0.0 1471 | path-exists: 4.0.0 1472 | dev: true 1473 | 1474 | /flat-cache/3.0.4: 1475 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1476 | engines: {node: ^10.12.0 || >=12.0.0} 1477 | dependencies: 1478 | flatted: 3.2.7 1479 | rimraf: 3.0.2 1480 | dev: true 1481 | 1482 | /flatted/3.2.7: 1483 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1484 | dev: true 1485 | 1486 | /follow-redirects/1.15.2: 1487 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 1488 | engines: {node: '>=4.0'} 1489 | peerDependencies: 1490 | debug: '*' 1491 | peerDependenciesMeta: 1492 | debug: 1493 | optional: true 1494 | dev: false 1495 | 1496 | /form-data/4.0.0: 1497 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1498 | engines: {node: '>= 6'} 1499 | dependencies: 1500 | asynckit: 0.4.0 1501 | combined-stream: 1.0.8 1502 | mime-types: 2.1.35 1503 | dev: false 1504 | 1505 | /fs.realpath/1.0.0: 1506 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1507 | dev: true 1508 | 1509 | /fsevents/2.3.2: 1510 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1511 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1512 | os: [darwin] 1513 | requiresBuild: true 1514 | dev: true 1515 | optional: true 1516 | 1517 | /function-bind/1.1.1: 1518 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1519 | dev: false 1520 | 1521 | /glob-parent/5.1.2: 1522 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1523 | engines: {node: '>= 6'} 1524 | dependencies: 1525 | is-glob: 4.0.3 1526 | dev: true 1527 | 1528 | /glob-parent/6.0.2: 1529 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1530 | engines: {node: '>=10.13.0'} 1531 | dependencies: 1532 | is-glob: 4.0.3 1533 | dev: true 1534 | 1535 | /glob/7.2.3: 1536 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1537 | dependencies: 1538 | fs.realpath: 1.0.0 1539 | inflight: 1.0.6 1540 | inherits: 2.0.4 1541 | minimatch: 3.1.2 1542 | once: 1.4.0 1543 | path-is-absolute: 1.0.1 1544 | dev: true 1545 | 1546 | /globals/13.20.0: 1547 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1548 | engines: {node: '>=8'} 1549 | dependencies: 1550 | type-fest: 0.20.2 1551 | dev: true 1552 | 1553 | /globby/11.1.0: 1554 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1555 | engines: {node: '>=10'} 1556 | dependencies: 1557 | array-union: 2.1.0 1558 | dir-glob: 3.0.1 1559 | fast-glob: 3.2.12 1560 | ignore: 5.2.4 1561 | merge2: 1.4.1 1562 | slash: 3.0.0 1563 | dev: true 1564 | 1565 | /grapheme-splitter/1.0.4: 1566 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1567 | dev: true 1568 | 1569 | /has-flag/3.0.0: 1570 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1571 | engines: {node: '>=4'} 1572 | dev: false 1573 | 1574 | /has-flag/4.0.0: 1575 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1576 | engines: {node: '>=8'} 1577 | dev: true 1578 | 1579 | /has/1.0.3: 1580 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1581 | engines: {node: '>= 0.4.0'} 1582 | dependencies: 1583 | function-bind: 1.1.1 1584 | dev: false 1585 | 1586 | /hoist-non-react-statics/3.3.2: 1587 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} 1588 | dependencies: 1589 | react-is: 16.13.1 1590 | dev: false 1591 | 1592 | /ignore/5.2.4: 1593 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1594 | engines: {node: '>= 4'} 1595 | dev: true 1596 | 1597 | /immer/9.0.21: 1598 | resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} 1599 | dev: false 1600 | 1601 | /import-fresh/3.3.0: 1602 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1603 | engines: {node: '>=6'} 1604 | dependencies: 1605 | parent-module: 1.0.1 1606 | resolve-from: 4.0.0 1607 | 1608 | /imurmurhash/0.1.4: 1609 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1610 | engines: {node: '>=0.8.19'} 1611 | dev: true 1612 | 1613 | /inflight/1.0.6: 1614 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1615 | dependencies: 1616 | once: 1.4.0 1617 | wrappy: 1.0.2 1618 | dev: true 1619 | 1620 | /inherits/2.0.4: 1621 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1622 | dev: true 1623 | 1624 | /is-arrayish/0.2.1: 1625 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1626 | dev: false 1627 | 1628 | /is-core-module/2.12.0: 1629 | resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} 1630 | dependencies: 1631 | has: 1.0.3 1632 | dev: false 1633 | 1634 | /is-extglob/2.1.1: 1635 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1636 | engines: {node: '>=0.10.0'} 1637 | dev: true 1638 | 1639 | /is-glob/4.0.3: 1640 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1641 | engines: {node: '>=0.10.0'} 1642 | dependencies: 1643 | is-extglob: 2.1.1 1644 | dev: true 1645 | 1646 | /is-number/7.0.0: 1647 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1648 | engines: {node: '>=0.12.0'} 1649 | dev: true 1650 | 1651 | /is-path-inside/3.0.3: 1652 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1653 | engines: {node: '>=8'} 1654 | dev: true 1655 | 1656 | /isexe/2.0.0: 1657 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1658 | dev: true 1659 | 1660 | /js-sdsl/4.4.0: 1661 | resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} 1662 | dev: true 1663 | 1664 | /js-tokens/4.0.0: 1665 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1666 | dev: false 1667 | 1668 | /js-yaml/4.1.0: 1669 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1670 | hasBin: true 1671 | dependencies: 1672 | argparse: 2.0.1 1673 | dev: true 1674 | 1675 | /json-parse-even-better-errors/2.3.1: 1676 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1677 | dev: false 1678 | 1679 | /json-schema-traverse/0.4.1: 1680 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1681 | dev: true 1682 | 1683 | /json-stable-stringify-without-jsonify/1.0.1: 1684 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1685 | dev: true 1686 | 1687 | /levn/0.4.1: 1688 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1689 | engines: {node: '>= 0.8.0'} 1690 | dependencies: 1691 | prelude-ls: 1.2.1 1692 | type-check: 0.4.0 1693 | dev: true 1694 | 1695 | /lines-and-columns/1.2.4: 1696 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1697 | dev: false 1698 | 1699 | /locate-path/6.0.0: 1700 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1701 | engines: {node: '>=10'} 1702 | dependencies: 1703 | p-locate: 5.0.0 1704 | dev: true 1705 | 1706 | /lodash.merge/4.6.2: 1707 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1708 | dev: true 1709 | 1710 | /loose-envify/1.4.0: 1711 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1712 | hasBin: true 1713 | dependencies: 1714 | js-tokens: 4.0.0 1715 | dev: false 1716 | 1717 | /lru-cache/6.0.0: 1718 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1719 | engines: {node: '>=10'} 1720 | dependencies: 1721 | yallist: 4.0.0 1722 | dev: true 1723 | 1724 | /merge2/1.4.1: 1725 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1726 | engines: {node: '>= 8'} 1727 | dev: true 1728 | 1729 | /micromatch/4.0.5: 1730 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1731 | engines: {node: '>=8.6'} 1732 | dependencies: 1733 | braces: 3.0.2 1734 | picomatch: 2.3.1 1735 | dev: true 1736 | 1737 | /mime-db/1.52.0: 1738 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1739 | engines: {node: '>= 0.6'} 1740 | dev: false 1741 | 1742 | /mime-types/2.1.35: 1743 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1744 | engines: {node: '>= 0.6'} 1745 | dependencies: 1746 | mime-db: 1.52.0 1747 | dev: false 1748 | 1749 | /minimatch/3.1.2: 1750 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1751 | dependencies: 1752 | brace-expansion: 1.1.11 1753 | dev: true 1754 | 1755 | /ms/2.1.2: 1756 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1757 | dev: true 1758 | 1759 | /nanoid/3.3.6: 1760 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1761 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1762 | hasBin: true 1763 | dev: true 1764 | 1765 | /natural-compare-lite/1.4.0: 1766 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 1767 | dev: true 1768 | 1769 | /natural-compare/1.4.0: 1770 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1771 | dev: true 1772 | 1773 | /object-assign/4.1.1: 1774 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1775 | engines: {node: '>=0.10.0'} 1776 | dev: false 1777 | 1778 | /once/1.4.0: 1779 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1780 | dependencies: 1781 | wrappy: 1.0.2 1782 | dev: true 1783 | 1784 | /optionator/0.9.1: 1785 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1786 | engines: {node: '>= 0.8.0'} 1787 | dependencies: 1788 | deep-is: 0.1.4 1789 | fast-levenshtein: 2.0.6 1790 | levn: 0.4.1 1791 | prelude-ls: 1.2.1 1792 | type-check: 0.4.0 1793 | word-wrap: 1.2.3 1794 | dev: true 1795 | 1796 | /p-limit/3.1.0: 1797 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1798 | engines: {node: '>=10'} 1799 | dependencies: 1800 | yocto-queue: 0.1.0 1801 | dev: true 1802 | 1803 | /p-locate/5.0.0: 1804 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1805 | engines: {node: '>=10'} 1806 | dependencies: 1807 | p-limit: 3.1.0 1808 | dev: true 1809 | 1810 | /parent-module/1.0.1: 1811 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1812 | engines: {node: '>=6'} 1813 | dependencies: 1814 | callsites: 3.1.0 1815 | 1816 | /parse-json/5.2.0: 1817 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1818 | engines: {node: '>=8'} 1819 | dependencies: 1820 | '@babel/code-frame': 7.21.4 1821 | error-ex: 1.3.2 1822 | json-parse-even-better-errors: 2.3.1 1823 | lines-and-columns: 1.2.4 1824 | dev: false 1825 | 1826 | /path-exists/4.0.0: 1827 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1828 | engines: {node: '>=8'} 1829 | dev: true 1830 | 1831 | /path-is-absolute/1.0.1: 1832 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1833 | engines: {node: '>=0.10.0'} 1834 | dev: true 1835 | 1836 | /path-key/3.1.1: 1837 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1838 | engines: {node: '>=8'} 1839 | dev: true 1840 | 1841 | /path-parse/1.0.7: 1842 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1843 | dev: false 1844 | 1845 | /path-type/4.0.0: 1846 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1847 | engines: {node: '>=8'} 1848 | 1849 | /performance-now/2.1.0: 1850 | resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} 1851 | dev: false 1852 | 1853 | /picocolors/1.0.0: 1854 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1855 | dev: true 1856 | 1857 | /picomatch/2.3.1: 1858 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1859 | engines: {node: '>=8.6'} 1860 | dev: true 1861 | 1862 | /postcss/8.4.23: 1863 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} 1864 | engines: {node: ^10 || ^12 || >=14} 1865 | dependencies: 1866 | nanoid: 3.3.6 1867 | picocolors: 1.0.0 1868 | source-map-js: 1.0.2 1869 | dev: true 1870 | 1871 | /prelude-ls/1.2.1: 1872 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1873 | engines: {node: '>= 0.8.0'} 1874 | dev: true 1875 | 1876 | /prop-types/15.8.1: 1877 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1878 | dependencies: 1879 | loose-envify: 1.4.0 1880 | object-assign: 4.1.1 1881 | react-is: 16.13.1 1882 | dev: false 1883 | 1884 | /proxy-from-env/1.1.0: 1885 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 1886 | dev: false 1887 | 1888 | /punycode/2.3.0: 1889 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1890 | engines: {node: '>=6'} 1891 | dev: true 1892 | 1893 | /queue-microtask/1.2.3: 1894 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1895 | dev: true 1896 | 1897 | /raf/3.4.1: 1898 | resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} 1899 | dependencies: 1900 | performance-now: 2.1.0 1901 | dev: false 1902 | 1903 | /react-dom/18.2.0_react@18.2.0: 1904 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1905 | peerDependencies: 1906 | react: ^18.2.0 1907 | dependencies: 1908 | loose-envify: 1.4.0 1909 | react: 18.2.0 1910 | scheduler: 0.23.0 1911 | dev: false 1912 | 1913 | /react-is/16.13.1: 1914 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1915 | dev: false 1916 | 1917 | /react-is/18.2.0: 1918 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 1919 | dev: false 1920 | 1921 | /react-redux/8.0.5_rzyliz2j3ixzcs72aaxsyibazq: 1922 | resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} 1923 | peerDependencies: 1924 | '@types/react': ^16.8 || ^17.0 || ^18.0 1925 | '@types/react-dom': ^16.8 || ^17.0 || ^18.0 1926 | react: ^16.8 || ^17.0 || ^18.0 1927 | react-dom: ^16.8 || ^17.0 || ^18.0 1928 | react-native: '>=0.59' 1929 | redux: ^4 1930 | peerDependenciesMeta: 1931 | '@types/react': 1932 | optional: true 1933 | '@types/react-dom': 1934 | optional: true 1935 | react-dom: 1936 | optional: true 1937 | react-native: 1938 | optional: true 1939 | redux: 1940 | optional: true 1941 | dependencies: 1942 | '@babel/runtime': 7.21.0 1943 | '@types/hoist-non-react-statics': 3.3.1 1944 | '@types/react': 18.0.38 1945 | '@types/react-dom': 18.0.11 1946 | '@types/use-sync-external-store': 0.0.3 1947 | hoist-non-react-statics: 3.3.2 1948 | react: 18.2.0 1949 | react-dom: 18.2.0_react@18.2.0 1950 | react-is: 18.2.0 1951 | use-sync-external-store: 1.2.0_react@18.2.0 1952 | dev: false 1953 | 1954 | /react-router-dom/6.10.0_biqbaboplfbrettd7655fr4n2y: 1955 | resolution: {integrity: sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==} 1956 | engines: {node: '>=14'} 1957 | peerDependencies: 1958 | react: '>=16.8' 1959 | react-dom: '>=16.8' 1960 | dependencies: 1961 | '@remix-run/router': 1.5.0 1962 | react: 18.2.0 1963 | react-dom: 18.2.0_react@18.2.0 1964 | react-router: 6.10.0_react@18.2.0 1965 | dev: false 1966 | 1967 | /react-router/6.10.0_react@18.2.0: 1968 | resolution: {integrity: sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==} 1969 | engines: {node: '>=14'} 1970 | peerDependencies: 1971 | react: '>=16.8' 1972 | dependencies: 1973 | '@remix-run/router': 1.5.0 1974 | react: 18.2.0 1975 | dev: false 1976 | 1977 | /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: 1978 | resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} 1979 | peerDependencies: 1980 | react: '>=16.6.0' 1981 | react-dom: '>=16.6.0' 1982 | dependencies: 1983 | '@babel/runtime': 7.21.0 1984 | dom-helpers: 5.2.1 1985 | loose-envify: 1.4.0 1986 | prop-types: 15.8.1 1987 | react: 18.2.0 1988 | react-dom: 18.2.0_react@18.2.0 1989 | dev: false 1990 | 1991 | /react/18.2.0: 1992 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1993 | engines: {node: '>=0.10.0'} 1994 | dependencies: 1995 | loose-envify: 1.4.0 1996 | dev: false 1997 | 1998 | /redux-thunk/2.4.2_redux@4.2.1: 1999 | resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} 2000 | peerDependencies: 2001 | redux: ^4 2002 | dependencies: 2003 | redux: 4.2.1 2004 | dev: false 2005 | 2006 | /redux/4.2.1: 2007 | resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} 2008 | dependencies: 2009 | '@babel/runtime': 7.21.0 2010 | dev: false 2011 | 2012 | /regenerator-runtime/0.13.11: 2013 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2014 | dev: false 2015 | 2016 | /reselect/4.1.8: 2017 | resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} 2018 | dev: false 2019 | 2020 | /resolve-from/4.0.0: 2021 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2022 | engines: {node: '>=4'} 2023 | 2024 | /resolve/1.22.2: 2025 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 2026 | hasBin: true 2027 | dependencies: 2028 | is-core-module: 2.12.0 2029 | path-parse: 1.0.7 2030 | supports-preserve-symlinks-flag: 1.0.0 2031 | dev: false 2032 | 2033 | /reusify/1.0.4: 2034 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2035 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2036 | dev: true 2037 | 2038 | /rimraf/3.0.2: 2039 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2040 | hasBin: true 2041 | dependencies: 2042 | glob: 7.2.3 2043 | dev: true 2044 | 2045 | /rollup/3.20.7: 2046 | resolution: {integrity: sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==} 2047 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 2048 | hasBin: true 2049 | optionalDependencies: 2050 | fsevents: 2.3.2 2051 | dev: true 2052 | 2053 | /run-parallel/1.2.0: 2054 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2055 | dependencies: 2056 | queue-microtask: 1.2.3 2057 | dev: true 2058 | 2059 | /scheduler/0.23.0: 2060 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2061 | dependencies: 2062 | loose-envify: 1.4.0 2063 | dev: false 2064 | 2065 | /semver/7.5.0: 2066 | resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} 2067 | engines: {node: '>=10'} 2068 | hasBin: true 2069 | dependencies: 2070 | lru-cache: 6.0.0 2071 | dev: true 2072 | 2073 | /shebang-command/2.0.0: 2074 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2075 | engines: {node: '>=8'} 2076 | dependencies: 2077 | shebang-regex: 3.0.0 2078 | dev: true 2079 | 2080 | /shebang-regex/3.0.0: 2081 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2082 | engines: {node: '>=8'} 2083 | dev: true 2084 | 2085 | /slash/3.0.0: 2086 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2087 | engines: {node: '>=8'} 2088 | dev: true 2089 | 2090 | /source-map-js/1.0.2: 2091 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2092 | engines: {node: '>=0.10.0'} 2093 | dev: true 2094 | 2095 | /source-map/0.5.7: 2096 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} 2097 | engines: {node: '>=0.10.0'} 2098 | dev: false 2099 | 2100 | /strip-ansi/6.0.1: 2101 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2102 | engines: {node: '>=8'} 2103 | dependencies: 2104 | ansi-regex: 5.0.1 2105 | dev: true 2106 | 2107 | /strip-json-comments/3.1.1: 2108 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2109 | engines: {node: '>=8'} 2110 | dev: true 2111 | 2112 | /stylis/4.1.3: 2113 | resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} 2114 | dev: false 2115 | 2116 | /supports-color/5.5.0: 2117 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2118 | engines: {node: '>=4'} 2119 | dependencies: 2120 | has-flag: 3.0.0 2121 | dev: false 2122 | 2123 | /supports-color/7.2.0: 2124 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2125 | engines: {node: '>=8'} 2126 | dependencies: 2127 | has-flag: 4.0.0 2128 | dev: true 2129 | 2130 | /supports-preserve-symlinks-flag/1.0.0: 2131 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2132 | engines: {node: '>= 0.4'} 2133 | dev: false 2134 | 2135 | /text-table/0.2.0: 2136 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2137 | dev: true 2138 | 2139 | /to-fast-properties/2.0.0: 2140 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2141 | engines: {node: '>=4'} 2142 | dev: false 2143 | 2144 | /to-regex-range/5.0.1: 2145 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2146 | engines: {node: '>=8.0'} 2147 | dependencies: 2148 | is-number: 7.0.0 2149 | dev: true 2150 | 2151 | /tslib/1.14.1: 2152 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2153 | dev: true 2154 | 2155 | /tsutils/3.21.0_typescript@5.0.4: 2156 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2157 | engines: {node: '>= 6'} 2158 | peerDependencies: 2159 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2160 | dependencies: 2161 | tslib: 1.14.1 2162 | typescript: 5.0.4 2163 | dev: true 2164 | 2165 | /type-check/0.4.0: 2166 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2167 | engines: {node: '>= 0.8.0'} 2168 | dependencies: 2169 | prelude-ls: 1.2.1 2170 | dev: true 2171 | 2172 | /type-fest/0.20.2: 2173 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2174 | engines: {node: '>=10'} 2175 | dev: true 2176 | 2177 | /typescript/5.0.4: 2178 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 2179 | engines: {node: '>=12.20'} 2180 | hasBin: true 2181 | dev: true 2182 | 2183 | /typewriter-effect/2.19.0_biqbaboplfbrettd7655fr4n2y: 2184 | resolution: {integrity: sha512-rhUX1ukmAXNFWUnMFx8CDU1uLWJQ7pRYzDU7WfHJRq43i6SmWSP9vFiUsOGfXINodUAgZiJ5xnzwLciHxZDGDg==} 2185 | peerDependencies: 2186 | react: ^17.x || ^18.x 2187 | react-dom: ^17.x || ^18.x 2188 | dependencies: 2189 | prop-types: 15.8.1 2190 | raf: 3.4.1 2191 | react: 18.2.0 2192 | react-dom: 18.2.0_react@18.2.0 2193 | dev: false 2194 | 2195 | /uri-js/4.4.1: 2196 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2197 | dependencies: 2198 | punycode: 2.3.0 2199 | dev: true 2200 | 2201 | /use-sync-external-store/1.2.0_react@18.2.0: 2202 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 2203 | peerDependencies: 2204 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 2205 | dependencies: 2206 | react: 18.2.0 2207 | dev: false 2208 | 2209 | /vite/4.3.1_@types+node@18.16.0: 2210 | resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} 2211 | engines: {node: ^14.18.0 || >=16.0.0} 2212 | hasBin: true 2213 | peerDependencies: 2214 | '@types/node': '>= 14' 2215 | less: '*' 2216 | sass: '*' 2217 | stylus: '*' 2218 | sugarss: '*' 2219 | terser: ^5.4.0 2220 | peerDependenciesMeta: 2221 | '@types/node': 2222 | optional: true 2223 | less: 2224 | optional: true 2225 | sass: 2226 | optional: true 2227 | stylus: 2228 | optional: true 2229 | sugarss: 2230 | optional: true 2231 | terser: 2232 | optional: true 2233 | dependencies: 2234 | '@types/node': 18.16.0 2235 | esbuild: 0.17.18 2236 | postcss: 8.4.23 2237 | rollup: 3.20.7 2238 | optionalDependencies: 2239 | fsevents: 2.3.2 2240 | dev: true 2241 | 2242 | /which/2.0.2: 2243 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2244 | engines: {node: '>= 8'} 2245 | hasBin: true 2246 | dependencies: 2247 | isexe: 2.0.0 2248 | dev: true 2249 | 2250 | /word-wrap/1.2.3: 2251 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2252 | engines: {node: '>=0.10.0'} 2253 | dev: true 2254 | 2255 | /wrappy/1.0.2: 2256 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2257 | dev: true 2258 | 2259 | /yallist/4.0.0: 2260 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2261 | dev: true 2262 | 2263 | /yaml/1.10.2: 2264 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2265 | engines: {node: '>= 6'} 2266 | dev: false 2267 | 2268 | /yocto-queue/0.1.0: 2269 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2270 | engines: {node: '>=10'} 2271 | dev: true 2272 | -------------------------------------------------------------------------------- /public/assets/perview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DSDmark/SimpleWeb/72e4a3be5a124b071a0f216750a50b5f7945bf5e/public/assets/perview.gif -------------------------------------------------------------------------------- /public/images/footer-hero.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DSDmark/SimpleWeb/72e4a3be5a124b071a0f216750a50b5f7945bf5e/public/images/footer-hero.webp -------------------------------------------------------------------------------- /public/videos/background.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DSDmark/SimpleWeb/72e4a3be5a124b071a0f216750a50b5f7945bf5e/public/videos/background.mp4 -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { MainLayout } from "./components/" 2 | import { Provider } from "react-redux" 3 | import { store } from "./state"; 4 | import RoutesLayout from "@/routes/Routes" 5 | 6 | function App() { 7 | 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ) 15 | } 16 | 17 | export default App 18 | -------------------------------------------------------------------------------- /src/components/cards/index.tsx: -------------------------------------------------------------------------------- 1 | import { Container, Paper, Card, CardMedia, CardActions, CardContent, IconButton, Typography, CardHeader, Avatar, Grid, Stack, Chip, Skeleton } from "@mui/material" 2 | import timg from "/images/footer-hero.webp" 3 | import { ArrowForwardOutlined, DownloadOutlined, GitHub } from "@mui/icons-material" 4 | import { useSelector } from "react-redux" 5 | import { RootState } from "@/state" 6 | 7 | const Cards = () => { 8 | const { repoInfo, userInfo: { data: { avatar_url } } } = useSelector((state: RootState) => state.repo) 9 | return ( 10 | 11 | {repoInfo.isLoading ? ( 12 | 13 | {Object.values(repoInfo.data).map((items: any) => { 14 | const { topics, language, url, default_branch, forks_count, html_url, id, name, description, open_issues_count, stargazers_count } = items; 15 | return ( 16 | 17 | 18 | } title={name} subheader={`issue:${open_issues_count} | fork:${forks_count} | stars:${stargazers_count}`} /> 19 | 20 | 21 | 22 | {description} 23 | 24 | 25 | 26 | 27 | 28 | {topics?.map((topic: string) => ( 29 | 30 | ))} 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | ) 47 | })} 48 | 49 | 50 | ) : } 51 | 52 | ) 53 | } 54 | 55 | export default Cards 56 | -------------------------------------------------------------------------------- /src/components/detailCard/index.tsx: -------------------------------------------------------------------------------- 1 | import { Container, Paper, Card, CardMedia, CardActions, IconButton, CardHeader, Avatar, Grid, Skeleton } from "@mui/material" 2 | import { GitHub } from "@mui/icons-material" 3 | 4 | const DetailCard = ({ login_data }: any) => { 5 | const { isLoading, data } = login_data; 6 | 7 | console.log(login_data) 8 | return ( 9 | 10 | {isLoading ? ( 11 | 12 | {Object.values(data).map((items: any) => { 13 | const { id, html_url, avatar_url, login } = items 14 | return ( 15 | 16 | 17 | } title={login} /> 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | ) 27 | })} 28 | 29 | ) : } 30 | 31 | ) 32 | } 33 | 34 | export default DetailCard 35 | 36 | -------------------------------------------------------------------------------- /src/components/footer/banner.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from "react"; 2 | import { Box, Grid, Skeleton, Typography, styled } from "@mui/material"; 3 | import { blueGrey } from "@mui/material/colors"; 4 | import bannerImg from "/images/footer-hero.webp"; 5 | 6 | interface IData { 7 | data: { 8 | bio: string; 9 | isLoading: boolean; 10 | } 11 | } 12 | 13 | const FooterImgText = styled(Typography)(({ theme }) => ({ 14 | position: "absolute", 15 | color: blueGrey[300], 16 | top: "50%", 17 | left: "50%", 18 | transform: "translate(-50%, -50%)", 19 | [theme.breakpoints.down("md")]: { 20 | letterSpacing: theme.spacing(1), 21 | width: "90%", 22 | }, 23 | letterSpacing: theme.spacing(2), 24 | fontWeight: 800, 25 | display: "flex", 26 | justifyContent: "center", 27 | alignItems: "center", 28 | flexDirection: "column", 29 | gap: "1rem", 30 | textTransform: "uppercase", 31 | })) 32 | 33 | const MuiImg = styled("img")({ 34 | position: "relative", 35 | width: "100%", 36 | height: "500px", 37 | '&::before &::after': { 38 | content: `" "`, 39 | position: 'absolute', 40 | top: 0, 41 | width: '100%', 42 | height: ' 100%', 43 | background: ' linear-gradient(to top, transparent, #ffffff)', 44 | transformOrigin: 'bottom left', 45 | zIndex: 1, 46 | }, 47 | 48 | '&:: before': { 49 | left: 0, 50 | transform: 'skewY(3deg)', 51 | }, 52 | ' &:: after': { 53 | right: 0, 54 | transform: ' skewY(-3deg)', 55 | }, 56 | clipPath: ' polygon(0 0, 100% 0, 100% 80%, 50% 100%, 0 80%)', 57 | }) 58 | 59 | const Banner: FC = ({ data }) => { 60 | const { bio, isLoading } = data; 61 | return ( 62 | <> 63 | 64 | 65 | 66 | 67 | 68 | {isLoading ? 69 | bio : 70 | } 71 | 72 | 73 | 74 | 75 | 76 | ) 77 | } 78 | 79 | export default Banner 80 | -------------------------------------------------------------------------------- /src/components/footer/categorylink.tsx: -------------------------------------------------------------------------------- 1 | import { Stack, Link as MuiLink, List, ListItemText, ListItem } from "@mui/material"; 2 | 3 | const Categorylink = () => { 4 | return ( 5 | 6 | 7 | 8 | 9 | Recently Events 10 | 11 | 12 | 13 | 14 | repo 15 | 16 | 17 | 18 | 19 | pull request 20 | 21 | 22 | 23 | 24 | author: sudo3@gmail.com 25 | 26 | 27 | 28 | 29 | ) 30 | } 31 | 32 | export default Categorylink 33 | -------------------------------------------------------------------------------- /src/components/footer/copyright.tsx: -------------------------------------------------------------------------------- 1 | import { RootState } from "@/state"; 2 | import { Box, styled, Skeleton } from "@mui/material"; 3 | import { useSelector } from "react-redux"; 4 | 5 | const FooterStyle = styled(Box)(({ theme }) => ({ 6 | background: theme.palette.secondary.main, 7 | color: theme.palette.text.secondary, 8 | display: "flex", 9 | justifyContent: "center", 10 | textAlign: "center", 11 | alignItems: "center", 12 | width: "100%", 13 | padding: theme.spacing(2), 14 | })) 15 | 16 | const Copyright = () => { 17 | const { userInfo: { data: { login }, isLoading } } = useSelector((state: RootState) => state.repo) 18 | return ( 19 | © {` Copyright ${new Date().getFullYear()}`} by {isLoading ? login : }. All Rights Reserved. 20 | ) 21 | } 22 | 23 | export default Copyright 24 | -------------------------------------------------------------------------------- /src/components/footer/index.tsx: -------------------------------------------------------------------------------- 1 | import { FC, ReactElement } from "react" 2 | import { Box, Stack, Grid, Link as MuiLink, Typography, Avatar, Container } from "@mui/material"; 3 | import { useSelector } from "react-redux"; 4 | import { RootState } from "@/state"; 5 | import Copyright from "./copyright.tsx"; 6 | import Banner from "./banner.tsx"; 7 | import Categorylink from "./categorylink.tsx"; 8 | 9 | interface IData { 10 | data: { 11 | name: string; 12 | login: string; 13 | avatar_url: string; 14 | followers: number; 15 | following: number; 16 | } 17 | } 18 | 19 | const FooterLogo: FC = ({ data }) => { 20 | const { name, login, avatar_url, following, followers } = data; 21 | return ( 22 | 23 | 24 | 25 | 26 | 27 | 28 | {name} ({login}) 29 | 30 | 31 | followers {followers} | following {following} 32 | 33 | 34 | {` Copyright ${new Date().getFullYear()} by ${login}. All Rights Reserved.`} 35 | 36 | 37 | 38 | Terms 39 | 40 | 41 | Privacy 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | ) 52 | } 53 | 54 | const Footer: FC = (): ReactElement => { 55 | const { userInfo: { data: { name, bio, login, avatar_url, followers, following }, isLoading 56 | } } = useSelector((state: RootState) => state.repo); 57 | 58 | return ( 59 | 60 | 61 | 62 | 63 | 64 | ); 65 | }; 66 | 67 | export default Footer; 68 | 69 | -------------------------------------------------------------------------------- /src/components/header/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import { Link as MuiLink, Skeleton, AppBar, Grid, Box, Toolbar, Typography } from "@mui/material"; 2 | import { Link as RouterLink } from "react-router-dom"; 3 | import { useDispatch, useSelector } from "react-redux"; 4 | import { setTheme } from "@/state/repo" 5 | import Brightness7Icon from '@mui/icons-material/Brightness7'; 6 | import TsunamiIcon from '@mui/icons-material/Tsunami'; 7 | import { useCallback, useState } from "react"; 8 | import { RootState, AppDispatch } from "@/state"; 9 | 10 | const Navbar = () => { 11 | const [themeMode, setMode] = useState("dark"); 12 | const dispatch: AppDispatch = useDispatch(); 13 | const { userInfo: { isLoading, data: { name, login, location, avatar_url, url } }, preferredTheme } = useSelector((state: RootState) => state.repo) 14 | 15 | const handleThemeDispatch = useCallback(() => { 16 | setMode(prev => prev === "dark" ? "light" : "dark"); 17 | dispatch(setTheme(themeMode)); 18 | }, [dispatch, themeMode]); 19 | 20 | return ( 21 | <> 22 | 23 | 24 | 25 | 26 | 27 | {isLoading ? : 28 | 29 | } 30 | 31 | 32 | 33 | 34 | {isLoading ? <> 35 | 36 | {name} ({login}) 37 | 38 | 39 | {location} 40 | 41 | : 42 | 43 | } 44 | 45 | 46 | 47 | 48 | {preferredTheme === "light" ? : } 49 | 50 | 51 | 52 | 53 | 54 | 55 | ); 56 | } 57 | 58 | export default Navbar; 59 | -------------------------------------------------------------------------------- /src/components/header/TabsMenu.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | import { Link as RouterLink } from "react-router-dom"; 3 | import { Box, Tabs, Tab, Divider } from '@mui/material/'; 4 | 5 | 6 | interface LinkTabProps { 7 | label: string; 8 | to: string; 9 | } 10 | 11 | interface IData { 12 | data: string[], 13 | } 14 | 15 | function LinkTab(props: LinkTabProps) { 16 | return ( 17 | 21 | ); 22 | } 23 | 24 | export default function TabMenu({ data }: IData) { 25 | const [value, setValue] = useState(0); 26 | 27 | //@ts-ignore 28 | const handleChange = (event: React.SyntheticEvent, newValue: number) => { 29 | setValue(newValue); 30 | }; 31 | 32 | return ( 33 | <> 34 | 35 | 36 | {data.map((item: string) => ( 37 | 39 | ))} 40 | 41 | 42 | 43 | 44 | ); 45 | } 46 | 47 | -------------------------------------------------------------------------------- /src/components/header/index.tsx: -------------------------------------------------------------------------------- 1 | import Navbar from "./Navbar" 2 | import TabMenu from "./TabsMenu" 3 | import data from "@/data/header" 4 | 5 | const Header = () => { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | ) 12 | } 13 | 14 | export default Header 15 | -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | export { default as MainLayout } from "./layout/" 2 | export { default as Header } from "./header" 3 | export { default as Cards } from "./cards/" 4 | export { default as DetailCard } from "./detailCard" 5 | export { default as Pagination } from "./pagination" 6 | export { default as Footer } from "./footer" 7 | -------------------------------------------------------------------------------- /src/components/layout/Dilog.tsx: -------------------------------------------------------------------------------- 1 | import { useDispatch } from "react-redux"; 2 | import { 3 | Dialog, 4 | DialogActions, 5 | DialogTitle, 6 | Button, 7 | TextField, 8 | DialogContent, 9 | Box, 10 | } from "@mui/material"; 11 | import { getUser } from "@/state/repo"; 12 | import { AppDispatch } from "@/state"; 13 | import { GitHub } from "@mui/icons-material"; 14 | import { useState, ChangeEvent } from "react"; 15 | 16 | const GetUserName = () => { 17 | const dispatch: AppDispatch = useDispatch(); 18 | const [userInput, setInput] = useState(""); 19 | const [open, setOpen] = useState(true); 20 | 21 | const handleInput = (e: ChangeEvent): void => { 22 | setInput(e.target.value); 23 | }; 24 | 25 | const handleClose = () => { 26 | setOpen(false); 27 | dispatch(getUser(userInput)); 28 | }; 29 | 30 | return ( 31 | 32 | 33 | 34 | 35 | Enter your GitHub username 36 | 37 | 38 | 39 | 51 | 52 | 53 | 56 | 57 | 58 | ); 59 | }; 60 | 61 | export default GetUserName 62 | -------------------------------------------------------------------------------- /src/components/layout/index.tsx: -------------------------------------------------------------------------------- 1 | import { useSelector } from "react-redux"; 2 | import { 3 | ThemeProvider, 4 | CssBaseline, 5 | } from "@mui/material"; 6 | import { createAppTheme, IProps } from "@/utils/"; 7 | import { RootState } from "@/state"; 8 | import GetUserName from "./Dilog" 9 | 10 | const MainLayout = ({ children }: IProps) => { 11 | const { preferredTheme } = useSelector((state: RootState) => state.repo); 12 | const theme = createAppTheme(preferredTheme); 13 | 14 | return ( 15 | 16 | 17 | 18 | {children} 19 | 20 | ); 21 | }; 22 | 23 | export default MainLayout; 24 | -------------------------------------------------------------------------------- /src/components/pagination/index.tsx: -------------------------------------------------------------------------------- 1 | import { AppDispatch, RootState } from "@/state"; 2 | import { setPageValue } from "@/state/repo"; 3 | import { Pagination as MuiPagination, Stack, Typography } from "@mui/material" 4 | import { Dispatch, SetStateAction, useEffect, useState } from "react"; 5 | import { useDispatch, useSelector } from "react-redux"; 6 | 7 | interface IPageData { 8 | username: string; 9 | page: number; 10 | perPage: number; 11 | } 12 | 13 | interface IProps { 14 | totalEntries: number; 15 | setPageData: Dispatch>, 16 | } 17 | 18 | const Pagination = ({ totalEntries, setPageData }: IProps) => { 19 | const dispatch: AppDispatch = useDispatch(); 20 | const { pagination: { data: { currentPage, itemsPerPage } }, userInfo: { data: { login } } } = useSelector((state: RootState) => state.repo) 21 | const [page, setPage] = useState(1); 22 | let totalPages = Math.ceil(totalEntries / itemsPerPage) 23 | 24 | //@ts-ignore 25 | const handlePage = (event, value: number) => { 26 | setPage(value) 27 | } 28 | 29 | useEffect(() => { 30 | let data = { 31 | username: login, 32 | page: page, 33 | perPage: 5, 34 | } 35 | 36 | setPageData((prev: IPageData) => ({ ...prev, page, perPage: 5 })); 37 | dispatch(setPageValue(data)) 38 | 39 | }, [page, dispatch]) 40 | 41 | return ( 42 | 43 | 44 | Page: {currentPage} 45 | 46 | 47 | Total Pages: {totalPages} 48 | 49 | 50 | 51 | ) 52 | } 53 | 54 | export default Pagination 55 | -------------------------------------------------------------------------------- /src/data/header.ts: -------------------------------------------------------------------------------- 1 | const data = { 2 | nav_categories: ["Home", "Repo", "Followers", "Following"], 3 | } 4 | 5 | export default data; 6 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.tsx' 4 | 5 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 6 | 7 | 8 | , 9 | ) 10 | -------------------------------------------------------------------------------- /src/pages/404/index.tsx: -------------------------------------------------------------------------------- 1 | import { Box, Typography } from '@mui/material'; 2 | import { styled } from '@mui/material/styles'; 3 | 4 | const ErrorBox = styled(Box)(({ theme }) => ({ 5 | display: 'flex', 6 | flexDirection: 'column', 7 | alignItems: 'center', 8 | textAlign: "center", 9 | justifyContent: 'center', 10 | height: '100vh', 11 | background: theme.palette.background.default, 12 | })); 13 | 14 | const ErrorHeading = styled(Typography)({ 15 | fontSize: 64, 16 | fontWeight: 700, 17 | marginBottom: 20, 18 | }); 19 | 20 | const ErrorMessage = styled(Typography)({ 21 | fontSize: 24, 22 | fontWeight: 500, 23 | }); 24 | 25 | const NotFound = () => { 26 | return ( 27 | 28 | 404 29 | 30 | Oops! The page you're looking for cannot be found. 31 | 32 | 33 | ); 34 | }; 35 | 36 | export default NotFound; 37 | 38 | -------------------------------------------------------------------------------- /src/pages/followers/index.tsx: -------------------------------------------------------------------------------- 1 | import { Pagination } from "@/components" 2 | import { AppDispatch, RootState } from "@/state" 3 | import { getFollowerInfo } from "@/state/repo"; 4 | import { useCallback, useEffect, useState } from "react"; 5 | import { useDispatch, useSelector } from "react-redux" 6 | import { IPageData } from "@/utils/interface"; 7 | import { DetailCard } from "@/components"; 8 | 9 | const Followers = () => { 10 | const { userInfo: { data: { login, followers } }, login_followers } = useSelector((state: RootState) => state.repo); 11 | const dispatch: AppDispatch = useDispatch(); 12 | 13 | const [state, setState] = useState({ 14 | username: login, 15 | page: 1, 16 | perPage: 5, 17 | }); 18 | 19 | const fetchData = useCallback(() => { 20 | dispatch(getFollowerInfo(state)); 21 | }, [dispatch, state]) 22 | 23 | useEffect(() => { 24 | fetchData(); 25 | }, [fetchData]) 26 | 27 | return ( 28 | <> 29 | 30 | 31 | 32 | ) 33 | } 34 | 35 | export default Followers 36 | -------------------------------------------------------------------------------- /src/pages/following/index.tsx: -------------------------------------------------------------------------------- 1 | import { DetailCard, Pagination } from "@/components" 2 | import { AppDispatch, RootState } from "@/state" 3 | import { getFollowingInfo } from "@/state/repo"; 4 | import { useCallback, useEffect, useState } from "react"; 5 | import { useDispatch, useSelector } from "react-redux" 6 | import { IPageData } from "@/utils/interface"; 7 | 8 | const Following = () => { 9 | const { userInfo: { data: { login, following } }, login_following } = useSelector((state: RootState) => state.repo); 10 | const dispatch: AppDispatch = useDispatch(); 11 | 12 | const [state, setState] = useState({ 13 | username: login, 14 | page: 1, 15 | perPage: 5, 16 | }); 17 | const fetchData = useCallback(() => { 18 | dispatch(getFollowingInfo(state)); 19 | }, [dispatch, state]) 20 | 21 | useEffect(() => { 22 | fetchData(); 23 | }, [fetchData]) 24 | 25 | return ( 26 | <> 27 | 28 | 29 | 30 | ) 31 | } 32 | 33 | export default Following 34 | -------------------------------------------------------------------------------- /src/pages/home/index.tsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@mui/material/styles'; 2 | import videoBg from "/videos/background.mp4" 3 | import { Link as RouterLink } from 'react-router-dom'; 4 | import { Avatar, Box, Button, Link as MuiLink, Grid, Typography, useMediaQuery, Stack, Skeleton } from '@mui/material'; 5 | import { useSelector } from 'react-redux'; 6 | import { RootState } from '@/state'; 7 | import Typewriter from 'typewriter-effect'; 8 | 9 | const VideoBackground = styled('div')({ 10 | position: "relative", 11 | width: "100%", 12 | minHeight: "600px", 13 | '& video': { 14 | objectFit: 'cover', 15 | width: '100%', 16 | height: '100%', 17 | position: 'absolute', 18 | top: '50%', 19 | left: '50%', 20 | transform: 'translate(-50%, -50%)', 21 | }, 22 | }); 23 | 24 | const VideoText = styled(Grid)(({ theme }) => ({ 25 | position: "absolute", 26 | top: "50%", 27 | left: "50%", 28 | transform: "translate(-50%,-50%)", 29 | fontWeight: 800, 30 | fontFamily: "serif", 31 | opacity: .9, 32 | color: theme.palette.text.primary, 33 | textAlign: "center", 34 | [theme.breakpoints.down('sm')]: { 35 | maxWidth: "100%", 36 | }, 37 | [theme.breakpoints.up('md')]: { 38 | maxWidth: "70%", 39 | }, 40 | })); 41 | 42 | 43 | const Home = () => { 44 | const { userInfo: { isLoading, data: { name, login, avatar_url, bio, hireable, blog } } } = useSelector((state: RootState) => state.repo) 45 | const isMobile = useMediaQuery((theme: any) => theme.breakpoints.down("md")); 46 | return ( 47 | 48 | 49 | 52 | 53 | 54 | {isLoading ? 55 | <> 56 | 57 | 60 | 61 | 62 | 63 | 71 | 72 | 73 | 74 | 75 | 83 | 84 | 85 | 86 | 87 | 88 | 91 | 92 | 95 | 96 | 97 | 98 | : } 99 | 100 | 101 | ) 102 | } 103 | 104 | export default Home 105 | -------------------------------------------------------------------------------- /src/pages/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Home } from "./home" 2 | export { default as Repo } from "./repo" 3 | export { default as Following } from "./following" 4 | export { default as Followers } from "./followers" 5 | export { default as NotFound } from "./404" 6 | -------------------------------------------------------------------------------- /src/pages/repo/index.tsx: -------------------------------------------------------------------------------- 1 | import { Cards, Pagination } from "@/components" 2 | import { AppDispatch, RootState } from "@/state"; 3 | import { getRepoInfo } from "@/state/repo"; 4 | import { useCallback, useEffect, useState } from "react" 5 | import { useDispatch, useSelector } from "react-redux" 6 | 7 | interface IPageData { 8 | username: string; 9 | page: number; 10 | perPage: number; 11 | } 12 | 13 | const Repo = () => { 14 | const { userInfo: { data: { login, public_repos } } } = useSelector((state: RootState) => state.repo); 15 | const dispatch: AppDispatch = useDispatch(); 16 | const [state, setState] = useState({ 17 | username: login, 18 | page: 1, 19 | perPage: 5, 20 | }); 21 | 22 | const fetchData = useCallback(() => { 23 | dispatch(getRepoInfo(state)); 24 | }, [dispatch, state]) 25 | 26 | useEffect(() => { 27 | fetchData(); 28 | }, [fetchData]) 29 | 30 | return ( 31 | <> 32 | 33 | 34 | 35 | ) 36 | } 37 | 38 | export default Repo 39 | -------------------------------------------------------------------------------- /src/routes/Routes.tsx: -------------------------------------------------------------------------------- 1 | import { Route, BrowserRouter, Routes } from "react-router-dom" 2 | import { Header, Footer } from "@/components" 3 | import { Following, Followers, Repo, Home, NotFound } from "@/pages" 4 | 5 | const RoutesLayout = () => { 6 | return ( 7 | 8 |
9 | 10 | } /> 11 | } /> 12 | } /> 13 | } /> 14 | } /> 15 | } /> 16 | 17 |