├── .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 | 
6 | 
7 | 
8 | 
9 | [](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 | [](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 | 
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 |
54 | Submit
55 |
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 |
50 |
51 |
52 |
53 |
54 | {isLoading ?
55 | <>
56 |
57 |
60 |
61 |
62 |
63 |
71 |
72 |
73 |
74 |
75 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | blog link
90 |
91 |
92 |
93 | hireable: {hireable ? "✅" : "🔴"}
94 |
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 |
18 |
19 | )
20 | }
21 |
22 | export default RoutesLayout
23 |
--------------------------------------------------------------------------------
/src/services/index.ts:
--------------------------------------------------------------------------------
1 | import { http, IRepoServices } from "@/utils"
2 |
3 | const BASE_URL = import.meta.env.VITE_BASE_URL
4 |
5 | interface IParams {
6 | username?: string;
7 | page?: number;
8 | perPage?: number;
9 | }
10 |
11 | class RepoServices implements IRepoServices {
12 | getUserInfo(username: string) {
13 | return http.get(BASE_URL + username);
14 | }
15 | getRepo(params: IParams) {
16 | const { username, page, perPage } = params;
17 | return http.get(BASE_URL + username + `/repos?type=owner&sort=stars&direction=asc&page=${page}&per_page=${perPage}`)
18 | }
19 | getFollowers(params: IParams) {
20 | const { username, page, perPage } = params;
21 | return http.get(BASE_URL + username + `/followers?type=owner&sort=stars&direction=asc&page=${page}&per_page=${perPage}`)
22 | }
23 | getFollowing(params: IParams) {
24 | const { username, page, perPage } = params;
25 | return http.get(BASE_URL + username + `/following?type=owner&sort=stars&direction=asc&page=${page}&per_page=${perPage}`)
26 | }
27 | getEvents(params: IParams) {
28 | const { username, page, perPage } = params;
29 | return http.get(BASE_URL + username + `/received_events?type=owner&sort=stars&direction=asc&page=${page}&per_page=${perPage}`)
30 | }
31 | }
32 |
33 | export default new RepoServices;
34 |
--------------------------------------------------------------------------------
/src/state/index.ts:
--------------------------------------------------------------------------------
1 | import { configureStore } from "@reduxjs/toolkit";
2 | import repoReducer from "./repo.ts";
3 |
4 | export const store = configureStore({
5 | reducer: {
6 | repo: repoReducer
7 | }
8 | })
9 |
10 |
11 | export type RootState = ReturnType
12 | export type AppDispatch = typeof store.dispatch
13 |
14 |
--------------------------------------------------------------------------------
/src/state/repo.ts:
--------------------------------------------------------------------------------
1 | import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
2 | import { AxiosResponse } from "axios";
3 | import { IRepoState } from "../utils";
4 | import RepoServices from "../services";
5 | import { IPageData } from "@/utils/interface";
6 |
7 | const initialState: IRepoState = {
8 | userInfo: {
9 | data: {
10 | name: "",
11 | avatar_url: "",
12 | bio: "",
13 | blog: "",
14 | company: "",
15 | followers: 0,
16 | followers_url: "",
17 | following: 0,
18 | following_url: "",
19 | hireable: false,
20 | id: 0,
21 | location: "",
22 | public_repos: 0,
23 | login: "",
24 | repos_url: "",
25 | starred_url: "",
26 | twitter_username: null,
27 | url: "",
28 | },
29 | isLoading: false,
30 | },
31 | repoInfo: {
32 | data: {
33 | topics: [],
34 | language: "",
35 | url: "",
36 | downloads_url: "",
37 | forks_count: 0,
38 | html_url: "",
39 | id: 0,
40 | name: "",
41 | description: "",
42 | open_issues_count: 0,
43 | stargazers_count: 0,
44 | default_branch: "",
45 | },
46 | isLoading: false,
47 | },
48 | pagination: {
49 | data: {
50 | currentPage: 1,
51 | itemsPerPage: 6,
52 | },
53 | isLoading: false,
54 | },
55 | login_followers: {
56 | data: {
57 | id: 0,
58 | login: "",
59 | html_url: "",
60 | avatar_url: "",
61 | },
62 | isLoading: false,
63 | },
64 | login_following: {
65 | data: {
66 | id: 0,
67 | login: "",
68 | html_url: "",
69 | avatar_url: "",
70 | },
71 | isLoading: false,
72 | },
73 | preferredTheme: "dark",
74 | }
75 |
76 | // fetching user data
77 | export const getUser = createAsyncThunk("getUser", async (username?: string) => {
78 | try {
79 |
80 | if (username) {
81 | const res: AxiosResponse = await RepoServices.getUserInfo(username)
82 | return res.data;
83 | }
84 | else {
85 | let username = "DSDmark";
86 | const res: AxiosResponse = await RepoServices.getUserInfo(username);
87 | return res.data;
88 | }
89 | } catch (err) {
90 | console.log(err)
91 | let username = "DSDmark";
92 | const res: AxiosResponse = await RepoServices.getUserInfo(username);
93 | return res.data;
94 | }
95 | })
96 |
97 | export const getRepoInfo = createAsyncThunk("getRepoInfo", async (params: IPageData) => {
98 | let res: AxiosResponse;
99 | try {
100 | if (params.username) {
101 | res = await RepoServices.getRepo(params)
102 | return res.data;
103 |
104 | } else {
105 | params.username = "DSDmark";
106 | res = await RepoServices.getRepo(params)
107 | return res.data;
108 | }
109 | } catch (err) {
110 | params.username = "DSDmark"
111 | res = await RepoServices.getRepo(params);
112 | return res.data;
113 | }
114 | })
115 |
116 | export const getFollowerInfo = createAsyncThunk("getFollowerInfo", async (params: IPageData) => {
117 | let res: AxiosResponse;
118 | try {
119 | if (params.username) {
120 | res = await RepoServices.getFollowers(params)
121 | return res.data;
122 |
123 | } else {
124 | params.username = "DSDmark";
125 | res = await RepoServices.getFollowers(params)
126 | return res.data;
127 | }
128 | } catch (err) {
129 | params.username = "DSDmark"
130 | res = await RepoServices.getFollowers(params);
131 | return res.data;
132 | }
133 | })
134 |
135 | export const getFollowingInfo = createAsyncThunk("getFollowingInfo", async (params: IPageData) => {
136 | let res: AxiosResponse;
137 | try {
138 | if (params.username) {
139 | res = await RepoServices.getFollowing(params)
140 | return res.data;
141 |
142 | } else {
143 | params.username = "DSDmark";
144 | res = await RepoServices.getFollowing(params)
145 | return res.data;
146 | }
147 | } catch (err) {
148 | params.username = "DSDmark"
149 | res = await RepoServices.getFollowing(params);
150 | return res.data;
151 | }
152 | })
153 |
154 | export const repoSlice = createSlice({
155 | name: "repo",
156 | initialState,
157 | reducers: {
158 | setTheme: (state, action) => {
159 | state.preferredTheme = action.payload;
160 | },
161 | setPageValue: (state, action) => {
162 | state.pagination.data.itemsPerPage = action.payload.perPage
163 | state.pagination.data.currentPage = action.payload.page
164 | }
165 | },
166 | extraReducers: (builder) => {
167 | builder.addCase(getUser.fulfilled, (state, action) => {
168 | return {
169 | ...state, userInfo: { data: { ...action.payload }, isLoading: true }
170 | }
171 | }),
172 | builder.addCase(getUser.pending, (state) => {
173 | state.userInfo.isLoading = false;
174 | }),
175 | builder.addCase(getUser.rejected, (state) => {
176 | state.userInfo.isLoading = false;
177 | }),
178 | builder.addCase(getRepoInfo.fulfilled, (state, action) => {
179 | return { ...state, repoInfo: { data: { ...action.payload }, isLoading: true } }
180 | }),
181 | builder.addCase(getRepoInfo.pending, (state) => {
182 | state.repoInfo.isLoading = false;
183 | }),
184 | builder.addCase(getRepoInfo.rejected, (state) => {
185 | state.repoInfo.isLoading = false;
186 | }),
187 | builder.addCase(getFollowerInfo.fulfilled, (state, action) => {
188 | return { ...state, login_followers: { data: { ...action.payload }, isLoading: true } }
189 | }),
190 | builder.addCase(getFollowerInfo.pending, (state) => {
191 | state.login_followers.isLoading = false;
192 | }),
193 | builder.addCase(getFollowerInfo.rejected, (state) => {
194 | state.login_followers.isLoading = false;
195 | }),
196 | builder.addCase(getFollowingInfo.fulfilled, (state, action) => {
197 | return { ...state, login_following: { data: { ...action.payload }, isLoading: true } }
198 | }),
199 | builder.addCase(getFollowingInfo.pending, (state) => {
200 | state.login_following.isLoading = false;
201 | }),
202 | builder.addCase(getFollowingInfo.rejected, (state) => {
203 | state.login_following.isLoading = false;
204 | })
205 | }
206 | })
207 |
208 | export const { setTheme, setPageValue } = repoSlice.actions
209 |
210 | export default repoSlice.reducer
211 |
212 |
--------------------------------------------------------------------------------
/src/utils/http-comman.ts:
--------------------------------------------------------------------------------
1 | import axios from "axios"
2 |
3 | const URL = import.meta.env.VITE_API_URL
4 |
5 | const http = axios.create({
6 | baseURL: URL,
7 | headers: {
8 | "Content-Type": "application/json",
9 | }
10 | })
11 |
12 | export default http;
13 |
--------------------------------------------------------------------------------
/src/utils/index.ts:
--------------------------------------------------------------------------------
1 | export type { IProps, IRepo, IRepoServices, IUser, INavbar, ISavei, IRepoState, IFollowers, IFollowing, IPagination } from "./interface";
2 | export { default as createAppTheme } from "./theme.ts"
3 | export { default as http } from "./http-comman.ts"
4 |
5 |
--------------------------------------------------------------------------------
/src/utils/interface.ts:
--------------------------------------------------------------------------------
1 | import { ReactNode } from "react"
2 | import { AxiosResponse } from "axios"
3 | import { PaletteMode } from "@mui/material";
4 |
5 | export interface IUser {
6 | data: {
7 | name: string;
8 | avatar_url: string;
9 | bio: string;
10 | blog: string;
11 | public_repos: number;
12 | company: string;
13 | followers: number;
14 | followers_url: string;
15 | following: number;
16 | following_url: string;
17 | hireable: boolean;
18 | id: number;
19 | location: string;
20 | login: string;
21 | repos_url: string;
22 | starred_url: string;
23 | twitter_username: string | null;
24 | url: string;
25 | },
26 | isLoading: boolean;
27 | }
28 |
29 | export interface IRepo {
30 | data: {
31 | topics: string[];
32 | language: string;
33 | url: string;
34 | downloads_url: string;
35 | forks_count: number;
36 | html_url: string;
37 | id: number;
38 | name: string;
39 | description: string;
40 | open_issues_count: number;
41 | stargazers_count: number;
42 | default_branch: string;
43 | },
44 | isLoading: boolean;
45 | }
46 |
47 | export interface IPagination {
48 | data: {
49 | currentPage: number,
50 | itemsPerPage: number,
51 | },
52 | isLoading: boolean;
53 | }
54 |
55 | export interface ISavei {
56 | name: string
57 | bio: string
58 | profile: string
59 | repos: string
60 | img: string
61 | }
62 |
63 | export interface INavbar {
64 | name: string;
65 | location: string;
66 | }
67 |
68 | export interface IPageData {
69 | username: string;
70 | page: number;
71 | perPage: number;
72 | }
73 |
74 | export interface IFollowing {
75 | data: {
76 | id: number;
77 | login: string;
78 | html_url: string;
79 | avatar_url: string;
80 | },
81 | isLoading: boolean;
82 | }
83 |
84 | export interface IFollowers {
85 | data: {
86 | id: number;
87 | login: string;
88 | html_url: string;
89 | avatar_url: string;
90 | },
91 | isLoading: boolean;
92 | }
93 |
94 | export interface IRepoState {
95 | userInfo: IUser,
96 | preferredTheme: PaletteMode,
97 | repoInfo: IRepo,
98 | pagination: IPagination,
99 | login_followers: IFollowers,
100 | login_following: IFollowing,
101 | }
102 |
103 | export interface IRepoServices {
104 | getUserInfo(username?: string): Promise>;
105 | }
106 |
107 | export interface IProps {
108 | children: ReactNode;
109 | }
110 |
--------------------------------------------------------------------------------
/src/utils/theme.ts:
--------------------------------------------------------------------------------
1 | import { alpha, createTheme, Theme } from "@mui/material/styles";
2 | import { grey, blueGrey } from "@mui/material/colors";
3 | import { PaletteMode } from "@mui/material";
4 |
5 | const shades = {
6 | primary: {
7 | 100: "#000000",
8 | 200: "#555555",
9 | },
10 | secondary: {
11 | 100: "#e9e9e9",
12 | 200: "#c4c4c4",
13 | }
14 | }
15 |
16 | const darkModeTheme = {
17 | primary: {
18 | main: grey[900],
19 | },
20 | secondary: {
21 | main: grey[900],
22 | },
23 | background: {
24 | default: grey[800],
25 | },
26 | text: {
27 | primary: grey[200],
28 | secondary: blueGrey[200]
29 | },
30 | }
31 |
32 | const lightModeTheme = {
33 | primary: {
34 | main: grey[100],
35 | },
36 | secondary: {
37 | main: blueGrey[100],
38 | },
39 | background: {
40 | default: blueGrey[50],
41 | },
42 | text: {
43 | primary: grey[700],
44 | secondary: blueGrey[700],
45 | }
46 | }
47 |
48 | const createAppTheme = (preferredTheme: PaletteMode) => {
49 | const theme: Theme = createTheme({
50 | components: {
51 | MuiCssBaseline: {
52 | styleOverrides: {
53 | body: {
54 | textTransform: "capitalize",
55 | }
56 | }
57 | },
58 | MuiTypography: {
59 | styleOverrides: {
60 | root: {
61 | fontWeight: 600,
62 | }
63 | }
64 | },
65 | MuiSkeleton: {
66 | styleOverrides: {
67 | root: {
68 | filter: "blur(1px)",
69 | background: alpha(shades.secondary[200], 0.5),
70 | width: "auto",
71 | margin: " 0 .5rem",
72 | height: "inherit",
73 | }
74 | }
75 | },
76 | MuiSvgIcon: {
77 | styleOverrides: {
78 | root: {
79 | fontSize: "2.2rem",
80 | }
81 | }
82 | },
83 | MuiGrid: {
84 | styleOverrides: {
85 | container: {
86 | display: "flex",
87 | justifyContent: "center",
88 | alignItems: "center",
89 | }
90 | }
91 | },
92 | MuiLink: {
93 | styleOverrides: {
94 | root: {
95 | textDecoration: "none",
96 | }
97 | }
98 | }
99 | },
100 | palette: {
101 | mode: preferredTheme,
102 | ...(preferredTheme === "dark" ? darkModeTheme : lightModeTheme),
103 | },
104 | })
105 | return theme;
106 | }
107 |
108 | export default createAppTheme;
109 |
110 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "types": [
4 | "node"
5 | ],
6 | "target": "ESNext",
7 | "lib": [
8 | "DOM",
9 | "DOM.Iterable",
10 | "ESNext"
11 | ],
12 | "module": "ESNext",
13 | "skipLibCheck": true,
14 | /* Bundler mode */
15 | "moduleResolution": "bundler",
16 | "allowImportingTsExtensions": true,
17 | "resolveJsonModule": true,
18 | "isolatedModules": true,
19 | "noEmit": true,
20 | "jsx": "react-jsx",
21 | /* Linting */
22 | "strict": true,
23 | "noUnusedLocals": true,
24 | "noUnusedParameters": true,
25 | "noFallthroughCasesInSwitch": true,
26 | "baseUrl": ".",
27 | "paths": {
28 | "@/*": [
29 | "src/*"
30 | ],
31 | "@/utils": [
32 | "src/utils"
33 | ],
34 | "@/component": [
35 | "src/component"
36 | ]
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true,
8 | "baseUrl": ".",
9 | "paths": {
10 | "@/components/*": [
11 | "./src/components/*"
12 | ],
13 | "@/assets/*": [
14 | "./src/data/*"
15 | ],
16 | "@/utils/*": [
17 | "./src/utils/*"
18 | ]
19 | }
20 | },
21 | "include": [
22 | "vite.config.ts"
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react-swc'
3 | import { resolve } from 'path'
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | plugins: [react()],
8 | server: {
9 | port: 8080,
10 | },
11 | resolve: {
12 | alias: [
13 | { find: '@', replacement: resolve(__dirname, 'src') },
14 | ]
15 | }
16 | })
17 |
--------------------------------------------------------------------------------