├── .env
├── .eslintrc.cjs
├── .github
└── workflows
│ └── deploy.yml
├── .gitignore
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── pnpm-lock.yaml
├── public
├── favicon.ico
├── icons
│ ├── icon-144.png
│ ├── icon-192.png
│ ├── icon-32.png
│ ├── icon-48.png
│ ├── icon-512.png
│ └── icon-96.png
├── manifest.json
├── robots.txt
├── sitemap.xml
└── vite.svg
├── src
├── App.tsx
├── api
│ └── index.ts
├── components
│ ├── footer
│ │ └── index.tsx
│ ├── header
│ │ └── index.tsx
│ └── nprogress
│ │ ├── Bar.tsx
│ │ ├── Container.tsx
│ │ ├── Spinner.tsx
│ │ └── index.tsx
├── main.tsx
├── pages
│ ├── Fetching.tsx
│ ├── Index.tsx
│ ├── Layout.tsx
│ ├── NotFound.tsx
│ ├── Private.tsx
│ └── Restrict.tsx
├── routes
│ ├── Private.tsx
│ ├── Restrict.tsx
│ └── index.tsx
├── sass
│ ├── components
│ │ ├── _footer.scss
│ │ └── _header.scss
│ ├── core
│ │ ├── _colors.scss
│ │ ├── _dev.scss
│ │ ├── _font.scss
│ │ ├── _spacing.scss
│ │ └── _trejocode.scss
│ ├── helpers
│ │ ├── _bg.scss
│ │ └── _iframe.scss
│ ├── libs
│ │ └── _nprogress.scss
│ ├── pages
│ │ ├── _fetch.scss
│ │ └── _index.scss
│ └── style.scss
├── static
│ └── img
│ │ └── logo.png
├── ts
│ ├── api.d.ts
│ ├── layout.d.ts
│ ├── nprogress.d.ts
│ ├── routes.d.ts
│ └── vite-env.d.ts
├── utils
│ └── session.ts
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.env:
--------------------------------------------------------------------------------
1 | VITE_API_URL = https://reqres.in/api
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, es2020: true },
4 | extends: [
5 | 'eslint:recommended',
6 | 'plugin:@typescript-eslint/recommended',
7 | 'plugin:react-hooks/recommended',
8 | ],
9 | ignorePatterns: ['dist', '.eslintrc.cjs'],
10 | parser: '@typescript-eslint/parser',
11 | plugins: ['react-refresh'],
12 | rules: {
13 | 'react-refresh/only-export-components': [
14 | 'warn',
15 | { allowConstantExport: true },
16 | ],
17 | },
18 | }
19 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: 🚀 Deploy Static Web
2 |
3 | on:
4 | push:
5 | branches: [master]
6 |
7 | jobs:
8 | build:
9 | runs-on: self-hosted
10 |
11 | strategy:
12 | matrix:
13 | node-version: [18.x]
14 |
15 | steps:
16 | - uses: actions/checkout@v2
17 | - name: Use Node.js ${{ matrix.node-version }}
18 | uses: actions/setup-node@v2
19 | with:
20 | node-version: ${{ matrix.node-version }}
21 | cache: "npm"
22 |
23 | - run: npm install
24 | - run: npm run build
25 | - run: pm2 reload react.trejocode.com
26 | - run: pm2 save
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # ⚛️ React.js Boilerplate
4 |
5 | Boilerplate para proyectos de React.js CSR. Listo para producción, organizado, optimizado para SEO y compatible con WCAG 2.1, ahora con el poder de Vite + Typescript
6 |
7 | ---
8 |
9 | Boilerplate for React.js CSR projects. Production ready, organized and optimized for SEO.
10 |
11 | 
12 |
13 | ### ⚛ 4.0.0 Vite + Typescript
14 |
15 | ### ⚛ 3.0.0 React.js v18
16 |
17 | ### ⚛ 2.1.1 React.js v17
18 |
19 | ### 🎉 2.1.0 Modo Oscuro / Dark Theme
20 |
21 |
22 |
23 | ### 🏷️ Características / Features
24 |
25 | - Optimizado para SEO / SEO Ready
26 | - Esenciales WCAG 2.1 para la accesibilidad Web / Essential WCAG 2.1 for Web accessibility
27 | - Dark Theme Inicial / Basic Dark Theme
28 | - Ruteador, Rutas privadas, públicas y restringidas / Router, Private, public and restricted routes
29 | - Cliente HTTP / HTTP Client
30 | - PWA Listo / PWA Ready
31 | - SASS precargado / SASS incorporated
32 | - NProgress Loader
33 | - Código documentado / Documented code
34 | - Estructura de carpetas / Folder structure
35 | - Estructura de carpetas / Folder structure
36 | - Última versión mayor de React / React latest version
37 | - Vite + Typescript
38 |
39 | ### 🚀 Para empezar / Get started
40 |
41 | Estas instrucciones le proporcionarán una copia del proyecto en funcionamiento en su máquina local para fines de desarrollo. Consulte la sección de implementación para obtener notas sobre cómo desplegar el proyecto en producción.
42 |
43 | ---
44 |
45 | These instructions will provide you with a copy of the running project on your local machine for development purposes. See the implementation section for notes on how to deploy the project into production.
46 |
47 | ```bash
48 | cd react-boilerplate
49 | npm install
50 | npm dev
51 | ```
52 |
53 | ### 📦 Node modules
54 |
55 | - [Node SASS](https://github.com/sass/node-sass) - SASS Compiler
56 | - [React NProgress](https://github.com/tanem/react-nprogress) - Progress bar
57 | - [React Helmet Async](https://www.npmjs.com/package/react-helmet-async) - Document Head manager
58 | - [React Router Dom](https://www.npmjs.com/package/react-router-dom) - Router
59 | - [Axios](https://github.com/axios/axios) - HTTP client
60 |
61 | ### 📐 Requisitos / Requirements
62 |
63 | - Node min: 18
64 | - Web Browser
65 | - VS Code, Atom, Sublime text
66 |
67 | ### 📁 Estructura / Folder structure
68 |
69 | ├── node_modules # Módulos Node
70 | ├── components # Componentes
71 | ├── pages # Páginas
72 | ├── routes # Ruteador
73 | ├── sass # Módulos SASS
74 | ├── utils # Utilidades
75 | └── README.md
76 |
77 | ## 🤝 Colaboradores / Collaborators
78 |
79 | - **Sergio A. Trejo** - _Frontend_ - [trejocode](https://github.com/trejocode)
80 |
81 | * You ❤
82 |
83 | ## 📕 Migración de versión anterior / Previous version migration
84 |
85 | Debido al cambio de componentes, layout y versión de React. No es posible actualizar automáticamente. Deberá actualizar manualmente.
86 |
87 | Due to the change of components, layout and version of React. It is not possible to update automatically. You will need to update manually.
88 |
89 | ## 📋 Licencia / Licence
90 |
91 | MIT - vea el archivo [LICENSE.md](LICENSE.md) para más detalles.
92 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | React.js Boilerplate - Trejocode
14 |
19 |
24 |
25 |
26 |
27 |
28 |
32 |
36 |
37 |
38 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
52 |
56 |
57 |
61 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "boilerplate",
3 | "private": true,
4 | "version": "4.0.0",
5 | "type": "module",
6 | "homepage": ".",
7 | "scripts": {
8 | "dev": "vite",
9 | "build": "tsc && vite build",
10 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
11 | "preview": "vite preview"
12 | },
13 | "dependencies": {
14 | "@fontsource/ibm-plex-sans": "^5.0.20",
15 | "@tanem/react-nprogress": "^5.0.51",
16 | "axios": "^1.7.2",
17 | "react": "^18.2.0",
18 | "react-dom": "^18.2.0",
19 | "react-helmet-async": "^2.0.5",
20 | "react-icons": "^5.2.1",
21 | "react-router-dom": "^6.23.1",
22 | "sass": "^1.77.4"
23 | },
24 | "devDependencies": {
25 | "@types/node": "^20.13.0",
26 | "@types/react": "^18.2.66",
27 | "@types/react-dom": "^18.2.22",
28 | "@typescript-eslint/eslint-plugin": "^7.2.0",
29 | "@typescript-eslint/parser": "^7.2.0",
30 | "@vitejs/plugin-react": "^4.2.1",
31 | "eslint": "^8.57.0",
32 | "eslint-plugin-react-hooks": "^4.6.0",
33 | "eslint-plugin-react-refresh": "^0.4.6",
34 | "typescript": "^5.2.2",
35 | "vite": "^5.2.0"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@fontsource/ibm-plex-sans':
12 | specifier: ^5.0.20
13 | version: 5.0.20
14 | '@tanem/react-nprogress':
15 | specifier: ^5.0.51
16 | version: 5.0.51(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
17 | axios:
18 | specifier: ^1.7.2
19 | version: 1.7.2
20 | react:
21 | specifier: ^18.2.0
22 | version: 18.3.1
23 | react-dom:
24 | specifier: ^18.2.0
25 | version: 18.3.1(react@18.3.1)
26 | react-helmet-async:
27 | specifier: ^2.0.5
28 | version: 2.0.5(react@18.3.1)
29 | react-icons:
30 | specifier: ^5.2.1
31 | version: 5.2.1(react@18.3.1)
32 | react-router-dom:
33 | specifier: ^6.23.1
34 | version: 6.23.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
35 | sass:
36 | specifier: ^1.77.4
37 | version: 1.77.4
38 | devDependencies:
39 | '@types/node':
40 | specifier: ^20.13.0
41 | version: 20.13.0
42 | '@types/react':
43 | specifier: ^18.2.66
44 | version: 18.3.3
45 | '@types/react-dom':
46 | specifier: ^18.2.22
47 | version: 18.3.0
48 | '@typescript-eslint/eslint-plugin':
49 | specifier: ^7.2.0
50 | version: 7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
51 | '@typescript-eslint/parser':
52 | specifier: ^7.2.0
53 | version: 7.11.0(eslint@8.57.0)(typescript@5.4.5)
54 | '@vitejs/plugin-react':
55 | specifier: ^4.2.1
56 | version: 4.3.0(vite@5.2.12(@types/node@20.13.0)(sass@1.77.4))
57 | eslint:
58 | specifier: ^8.57.0
59 | version: 8.57.0
60 | eslint-plugin-react-hooks:
61 | specifier: ^4.6.0
62 | version: 4.6.2(eslint@8.57.0)
63 | eslint-plugin-react-refresh:
64 | specifier: ^0.4.6
65 | version: 0.4.7(eslint@8.57.0)
66 | typescript:
67 | specifier: ^5.2.2
68 | version: 5.4.5
69 | vite:
70 | specifier: ^5.2.0
71 | version: 5.2.12(@types/node@20.13.0)(sass@1.77.4)
72 |
73 | packages:
74 |
75 | '@ampproject/remapping@2.3.0':
76 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
77 | engines: {node: '>=6.0.0'}
78 |
79 | '@babel/code-frame@7.24.6':
80 | resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==}
81 | engines: {node: '>=6.9.0'}
82 |
83 | '@babel/compat-data@7.24.6':
84 | resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==}
85 | engines: {node: '>=6.9.0'}
86 |
87 | '@babel/core@7.24.6':
88 | resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==}
89 | engines: {node: '>=6.9.0'}
90 |
91 | '@babel/generator@7.24.6':
92 | resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==}
93 | engines: {node: '>=6.9.0'}
94 |
95 | '@babel/helper-compilation-targets@7.24.6':
96 | resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==}
97 | engines: {node: '>=6.9.0'}
98 |
99 | '@babel/helper-environment-visitor@7.24.6':
100 | resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==}
101 | engines: {node: '>=6.9.0'}
102 |
103 | '@babel/helper-function-name@7.24.6':
104 | resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==}
105 | engines: {node: '>=6.9.0'}
106 |
107 | '@babel/helper-hoist-variables@7.24.6':
108 | resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==}
109 | engines: {node: '>=6.9.0'}
110 |
111 | '@babel/helper-module-imports@7.24.6':
112 | resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==}
113 | engines: {node: '>=6.9.0'}
114 |
115 | '@babel/helper-module-transforms@7.24.6':
116 | resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==}
117 | engines: {node: '>=6.9.0'}
118 | peerDependencies:
119 | '@babel/core': ^7.0.0
120 |
121 | '@babel/helper-plugin-utils@7.24.6':
122 | resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==}
123 | engines: {node: '>=6.9.0'}
124 |
125 | '@babel/helper-simple-access@7.24.6':
126 | resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==}
127 | engines: {node: '>=6.9.0'}
128 |
129 | '@babel/helper-split-export-declaration@7.24.6':
130 | resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==}
131 | engines: {node: '>=6.9.0'}
132 |
133 | '@babel/helper-string-parser@7.24.6':
134 | resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==}
135 | engines: {node: '>=6.9.0'}
136 |
137 | '@babel/helper-validator-identifier@7.24.6':
138 | resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==}
139 | engines: {node: '>=6.9.0'}
140 |
141 | '@babel/helper-validator-option@7.24.6':
142 | resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==}
143 | engines: {node: '>=6.9.0'}
144 |
145 | '@babel/helpers@7.24.6':
146 | resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==}
147 | engines: {node: '>=6.9.0'}
148 |
149 | '@babel/highlight@7.24.6':
150 | resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==}
151 | engines: {node: '>=6.9.0'}
152 |
153 | '@babel/parser@7.24.6':
154 | resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==}
155 | engines: {node: '>=6.0.0'}
156 | hasBin: true
157 |
158 | '@babel/plugin-transform-react-jsx-self@7.24.6':
159 | resolution: {integrity: sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==}
160 | engines: {node: '>=6.9.0'}
161 | peerDependencies:
162 | '@babel/core': ^7.0.0-0
163 |
164 | '@babel/plugin-transform-react-jsx-source@7.24.6':
165 | resolution: {integrity: sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA==}
166 | engines: {node: '>=6.9.0'}
167 | peerDependencies:
168 | '@babel/core': ^7.0.0-0
169 |
170 | '@babel/runtime@7.24.6':
171 | resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==}
172 | engines: {node: '>=6.9.0'}
173 |
174 | '@babel/template@7.24.6':
175 | resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==}
176 | engines: {node: '>=6.9.0'}
177 |
178 | '@babel/traverse@7.24.6':
179 | resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==}
180 | engines: {node: '>=6.9.0'}
181 |
182 | '@babel/types@7.24.6':
183 | resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==}
184 | engines: {node: '>=6.9.0'}
185 |
186 | '@esbuild/aix-ppc64@0.20.2':
187 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
188 | engines: {node: '>=12'}
189 | cpu: [ppc64]
190 | os: [aix]
191 |
192 | '@esbuild/android-arm64@0.20.2':
193 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
194 | engines: {node: '>=12'}
195 | cpu: [arm64]
196 | os: [android]
197 |
198 | '@esbuild/android-arm@0.20.2':
199 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
200 | engines: {node: '>=12'}
201 | cpu: [arm]
202 | os: [android]
203 |
204 | '@esbuild/android-x64@0.20.2':
205 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
206 | engines: {node: '>=12'}
207 | cpu: [x64]
208 | os: [android]
209 |
210 | '@esbuild/darwin-arm64@0.20.2':
211 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
212 | engines: {node: '>=12'}
213 | cpu: [arm64]
214 | os: [darwin]
215 |
216 | '@esbuild/darwin-x64@0.20.2':
217 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
218 | engines: {node: '>=12'}
219 | cpu: [x64]
220 | os: [darwin]
221 |
222 | '@esbuild/freebsd-arm64@0.20.2':
223 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
224 | engines: {node: '>=12'}
225 | cpu: [arm64]
226 | os: [freebsd]
227 |
228 | '@esbuild/freebsd-x64@0.20.2':
229 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
230 | engines: {node: '>=12'}
231 | cpu: [x64]
232 | os: [freebsd]
233 |
234 | '@esbuild/linux-arm64@0.20.2':
235 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
236 | engines: {node: '>=12'}
237 | cpu: [arm64]
238 | os: [linux]
239 |
240 | '@esbuild/linux-arm@0.20.2':
241 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
242 | engines: {node: '>=12'}
243 | cpu: [arm]
244 | os: [linux]
245 |
246 | '@esbuild/linux-ia32@0.20.2':
247 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
248 | engines: {node: '>=12'}
249 | cpu: [ia32]
250 | os: [linux]
251 |
252 | '@esbuild/linux-loong64@0.20.2':
253 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
254 | engines: {node: '>=12'}
255 | cpu: [loong64]
256 | os: [linux]
257 |
258 | '@esbuild/linux-mips64el@0.20.2':
259 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
260 | engines: {node: '>=12'}
261 | cpu: [mips64el]
262 | os: [linux]
263 |
264 | '@esbuild/linux-ppc64@0.20.2':
265 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
266 | engines: {node: '>=12'}
267 | cpu: [ppc64]
268 | os: [linux]
269 |
270 | '@esbuild/linux-riscv64@0.20.2':
271 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
272 | engines: {node: '>=12'}
273 | cpu: [riscv64]
274 | os: [linux]
275 |
276 | '@esbuild/linux-s390x@0.20.2':
277 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
278 | engines: {node: '>=12'}
279 | cpu: [s390x]
280 | os: [linux]
281 |
282 | '@esbuild/linux-x64@0.20.2':
283 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
284 | engines: {node: '>=12'}
285 | cpu: [x64]
286 | os: [linux]
287 |
288 | '@esbuild/netbsd-x64@0.20.2':
289 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
290 | engines: {node: '>=12'}
291 | cpu: [x64]
292 | os: [netbsd]
293 |
294 | '@esbuild/openbsd-x64@0.20.2':
295 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
296 | engines: {node: '>=12'}
297 | cpu: [x64]
298 | os: [openbsd]
299 |
300 | '@esbuild/sunos-x64@0.20.2':
301 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
302 | engines: {node: '>=12'}
303 | cpu: [x64]
304 | os: [sunos]
305 |
306 | '@esbuild/win32-arm64@0.20.2':
307 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
308 | engines: {node: '>=12'}
309 | cpu: [arm64]
310 | os: [win32]
311 |
312 | '@esbuild/win32-ia32@0.20.2':
313 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
314 | engines: {node: '>=12'}
315 | cpu: [ia32]
316 | os: [win32]
317 |
318 | '@esbuild/win32-x64@0.20.2':
319 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
320 | engines: {node: '>=12'}
321 | cpu: [x64]
322 | os: [win32]
323 |
324 | '@eslint-community/eslint-utils@4.4.0':
325 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
326 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
327 | peerDependencies:
328 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
329 |
330 | '@eslint-community/regexpp@4.10.0':
331 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
332 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
333 |
334 | '@eslint/eslintrc@2.1.4':
335 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
336 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
337 |
338 | '@eslint/js@8.57.0':
339 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
340 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
341 |
342 | '@fontsource/ibm-plex-sans@5.0.20':
343 | resolution: {integrity: sha512-svcHbwKbeDBoxrAVlcZ7hRbeAcMp7bXrftoJxTRKg8vedVqYfVGccEITrCwqD04PFbhmcqScOI34ClHTBxQFvQ==}
344 |
345 | '@humanwhocodes/config-array@0.11.14':
346 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
347 | engines: {node: '>=10.10.0'}
348 |
349 | '@humanwhocodes/module-importer@1.0.1':
350 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
351 | engines: {node: '>=12.22'}
352 |
353 | '@humanwhocodes/object-schema@2.0.3':
354 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
355 |
356 | '@jridgewell/gen-mapping@0.3.5':
357 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
358 | engines: {node: '>=6.0.0'}
359 |
360 | '@jridgewell/resolve-uri@3.1.2':
361 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
362 | engines: {node: '>=6.0.0'}
363 |
364 | '@jridgewell/set-array@1.2.1':
365 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
366 | engines: {node: '>=6.0.0'}
367 |
368 | '@jridgewell/sourcemap-codec@1.4.15':
369 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
370 |
371 | '@jridgewell/trace-mapping@0.3.25':
372 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
373 |
374 | '@nodelib/fs.scandir@2.1.5':
375 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
376 | engines: {node: '>= 8'}
377 |
378 | '@nodelib/fs.stat@2.0.5':
379 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
380 | engines: {node: '>= 8'}
381 |
382 | '@nodelib/fs.walk@1.2.8':
383 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
384 | engines: {node: '>= 8'}
385 |
386 | '@remix-run/router@1.16.1':
387 | resolution: {integrity: sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==}
388 | engines: {node: '>=14.0.0'}
389 |
390 | '@rollup/rollup-android-arm-eabi@4.18.0':
391 | resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
392 | cpu: [arm]
393 | os: [android]
394 |
395 | '@rollup/rollup-android-arm64@4.18.0':
396 | resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
397 | cpu: [arm64]
398 | os: [android]
399 |
400 | '@rollup/rollup-darwin-arm64@4.18.0':
401 | resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
402 | cpu: [arm64]
403 | os: [darwin]
404 |
405 | '@rollup/rollup-darwin-x64@4.18.0':
406 | resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
407 | cpu: [x64]
408 | os: [darwin]
409 |
410 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
411 | resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
412 | cpu: [arm]
413 | os: [linux]
414 |
415 | '@rollup/rollup-linux-arm-musleabihf@4.18.0':
416 | resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
417 | cpu: [arm]
418 | os: [linux]
419 |
420 | '@rollup/rollup-linux-arm64-gnu@4.18.0':
421 | resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
422 | cpu: [arm64]
423 | os: [linux]
424 |
425 | '@rollup/rollup-linux-arm64-musl@4.18.0':
426 | resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
427 | cpu: [arm64]
428 | os: [linux]
429 |
430 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
431 | resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
432 | cpu: [ppc64]
433 | os: [linux]
434 |
435 | '@rollup/rollup-linux-riscv64-gnu@4.18.0':
436 | resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
437 | cpu: [riscv64]
438 | os: [linux]
439 |
440 | '@rollup/rollup-linux-s390x-gnu@4.18.0':
441 | resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
442 | cpu: [s390x]
443 | os: [linux]
444 |
445 | '@rollup/rollup-linux-x64-gnu@4.18.0':
446 | resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
447 | cpu: [x64]
448 | os: [linux]
449 |
450 | '@rollup/rollup-linux-x64-musl@4.18.0':
451 | resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
452 | cpu: [x64]
453 | os: [linux]
454 |
455 | '@rollup/rollup-win32-arm64-msvc@4.18.0':
456 | resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
457 | cpu: [arm64]
458 | os: [win32]
459 |
460 | '@rollup/rollup-win32-ia32-msvc@4.18.0':
461 | resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
462 | cpu: [ia32]
463 | os: [win32]
464 |
465 | '@rollup/rollup-win32-x64-msvc@4.18.0':
466 | resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
467 | cpu: [x64]
468 | os: [win32]
469 |
470 | '@tanem/react-nprogress@5.0.51':
471 | resolution: {integrity: sha512-YxNUCpznuBVA+PhjEzFmxaa1czXgU+5Ojchw5JBK7DQS6SHIgNudpFohWpNBWMu2KWByGJ2OLH2OwbM/XyP18Q==}
472 | peerDependencies:
473 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
474 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
475 |
476 | '@types/babel__core@7.20.5':
477 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
478 |
479 | '@types/babel__generator@7.6.8':
480 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
481 |
482 | '@types/babel__template@7.4.4':
483 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
484 |
485 | '@types/babel__traverse@7.20.6':
486 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
487 |
488 | '@types/estree@1.0.5':
489 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
490 |
491 | '@types/node@20.13.0':
492 | resolution: {integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==}
493 |
494 | '@types/prop-types@15.7.12':
495 | resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
496 |
497 | '@types/react-dom@18.3.0':
498 | resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
499 |
500 | '@types/react@18.3.3':
501 | resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
502 |
503 | '@typescript-eslint/eslint-plugin@7.11.0':
504 | resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==}
505 | engines: {node: ^18.18.0 || >=20.0.0}
506 | peerDependencies:
507 | '@typescript-eslint/parser': ^7.0.0
508 | eslint: ^8.56.0
509 | typescript: '*'
510 | peerDependenciesMeta:
511 | typescript:
512 | optional: true
513 |
514 | '@typescript-eslint/parser@7.11.0':
515 | resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==}
516 | engines: {node: ^18.18.0 || >=20.0.0}
517 | peerDependencies:
518 | eslint: ^8.56.0
519 | typescript: '*'
520 | peerDependenciesMeta:
521 | typescript:
522 | optional: true
523 |
524 | '@typescript-eslint/scope-manager@7.11.0':
525 | resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==}
526 | engines: {node: ^18.18.0 || >=20.0.0}
527 |
528 | '@typescript-eslint/type-utils@7.11.0':
529 | resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==}
530 | engines: {node: ^18.18.0 || >=20.0.0}
531 | peerDependencies:
532 | eslint: ^8.56.0
533 | typescript: '*'
534 | peerDependenciesMeta:
535 | typescript:
536 | optional: true
537 |
538 | '@typescript-eslint/types@7.11.0':
539 | resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==}
540 | engines: {node: ^18.18.0 || >=20.0.0}
541 |
542 | '@typescript-eslint/typescript-estree@7.11.0':
543 | resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==}
544 | engines: {node: ^18.18.0 || >=20.0.0}
545 | peerDependencies:
546 | typescript: '*'
547 | peerDependenciesMeta:
548 | typescript:
549 | optional: true
550 |
551 | '@typescript-eslint/utils@7.11.0':
552 | resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==}
553 | engines: {node: ^18.18.0 || >=20.0.0}
554 | peerDependencies:
555 | eslint: ^8.56.0
556 |
557 | '@typescript-eslint/visitor-keys@7.11.0':
558 | resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==}
559 | engines: {node: ^18.18.0 || >=20.0.0}
560 |
561 | '@ungap/structured-clone@1.2.0':
562 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
563 |
564 | '@vitejs/plugin-react@4.3.0':
565 | resolution: {integrity: sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw==}
566 | engines: {node: ^14.18.0 || >=16.0.0}
567 | peerDependencies:
568 | vite: ^4.2.0 || ^5.0.0
569 |
570 | acorn-jsx@5.3.2:
571 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
572 | peerDependencies:
573 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
574 |
575 | acorn@8.11.3:
576 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
577 | engines: {node: '>=0.4.0'}
578 | hasBin: true
579 |
580 | ajv@6.12.6:
581 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
582 |
583 | ansi-regex@5.0.1:
584 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
585 | engines: {node: '>=8'}
586 |
587 | ansi-styles@3.2.1:
588 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
589 | engines: {node: '>=4'}
590 |
591 | ansi-styles@4.3.0:
592 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
593 | engines: {node: '>=8'}
594 |
595 | anymatch@3.1.3:
596 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
597 | engines: {node: '>= 8'}
598 |
599 | argparse@2.0.1:
600 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
601 |
602 | array-union@2.1.0:
603 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
604 | engines: {node: '>=8'}
605 |
606 | asynckit@0.4.0:
607 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
608 |
609 | axios@1.7.2:
610 | resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==}
611 |
612 | balanced-match@1.0.2:
613 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
614 |
615 | binary-extensions@2.3.0:
616 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
617 | engines: {node: '>=8'}
618 |
619 | brace-expansion@1.1.11:
620 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
621 |
622 | brace-expansion@2.0.1:
623 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
624 |
625 | braces@3.0.3:
626 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
627 | engines: {node: '>=8'}
628 |
629 | browserslist@4.23.0:
630 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
631 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
632 | hasBin: true
633 |
634 | callsites@3.1.0:
635 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
636 | engines: {node: '>=6'}
637 |
638 | caniuse-lite@1.0.30001625:
639 | resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==}
640 |
641 | chalk@2.4.2:
642 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
643 | engines: {node: '>=4'}
644 |
645 | chalk@4.1.2:
646 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
647 | engines: {node: '>=10'}
648 |
649 | chokidar@3.6.0:
650 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
651 | engines: {node: '>= 8.10.0'}
652 |
653 | color-convert@1.9.3:
654 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
655 |
656 | color-convert@2.0.1:
657 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
658 | engines: {node: '>=7.0.0'}
659 |
660 | color-name@1.1.3:
661 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
662 |
663 | color-name@1.1.4:
664 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
665 |
666 | combined-stream@1.0.8:
667 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
668 | engines: {node: '>= 0.8'}
669 |
670 | concat-map@0.0.1:
671 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
672 |
673 | convert-source-map@2.0.0:
674 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
675 |
676 | cross-spawn@7.0.3:
677 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
678 | engines: {node: '>= 8'}
679 |
680 | csstype@3.1.3:
681 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
682 |
683 | debug@4.3.5:
684 | resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
685 | engines: {node: '>=6.0'}
686 | peerDependencies:
687 | supports-color: '*'
688 | peerDependenciesMeta:
689 | supports-color:
690 | optional: true
691 |
692 | deep-is@0.1.4:
693 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
694 |
695 | delayed-stream@1.0.0:
696 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
697 | engines: {node: '>=0.4.0'}
698 |
699 | dir-glob@3.0.1:
700 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
701 | engines: {node: '>=8'}
702 |
703 | doctrine@3.0.0:
704 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
705 | engines: {node: '>=6.0.0'}
706 |
707 | electron-to-chromium@1.4.787:
708 | resolution: {integrity: sha512-d0EFmtLPjctczO3LogReyM2pbBiiZbnsKnGF+cdZhsYzHm/A0GV7W94kqzLD8SN4O3f3iHlgLUChqghgyznvCQ==}
709 |
710 | esbuild@0.20.2:
711 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
712 | engines: {node: '>=12'}
713 | hasBin: true
714 |
715 | escalade@3.1.2:
716 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
717 | engines: {node: '>=6'}
718 |
719 | escape-string-regexp@1.0.5:
720 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
721 | engines: {node: '>=0.8.0'}
722 |
723 | escape-string-regexp@4.0.0:
724 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
725 | engines: {node: '>=10'}
726 |
727 | eslint-plugin-react-hooks@4.6.2:
728 | resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
729 | engines: {node: '>=10'}
730 | peerDependencies:
731 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
732 |
733 | eslint-plugin-react-refresh@0.4.7:
734 | resolution: {integrity: sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==}
735 | peerDependencies:
736 | eslint: '>=7'
737 |
738 | eslint-scope@7.2.2:
739 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
740 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
741 |
742 | eslint-visitor-keys@3.4.3:
743 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
744 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
745 |
746 | eslint@8.57.0:
747 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
748 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
749 | hasBin: true
750 |
751 | espree@9.6.1:
752 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
753 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
754 |
755 | esquery@1.5.0:
756 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
757 | engines: {node: '>=0.10'}
758 |
759 | esrecurse@4.3.0:
760 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
761 | engines: {node: '>=4.0'}
762 |
763 | estraverse@5.3.0:
764 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
765 | engines: {node: '>=4.0'}
766 |
767 | esutils@2.0.3:
768 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
769 | engines: {node: '>=0.10.0'}
770 |
771 | fast-deep-equal@3.1.3:
772 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
773 |
774 | fast-glob@3.3.2:
775 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
776 | engines: {node: '>=8.6.0'}
777 |
778 | fast-json-stable-stringify@2.1.0:
779 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
780 |
781 | fast-levenshtein@2.0.6:
782 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
783 |
784 | fastq@1.17.1:
785 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
786 |
787 | file-entry-cache@6.0.1:
788 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
789 | engines: {node: ^10.12.0 || >=12.0.0}
790 |
791 | fill-range@7.1.1:
792 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
793 | engines: {node: '>=8'}
794 |
795 | find-up@5.0.0:
796 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
797 | engines: {node: '>=10'}
798 |
799 | flat-cache@3.2.0:
800 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
801 | engines: {node: ^10.12.0 || >=12.0.0}
802 |
803 | flatted@3.3.1:
804 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
805 |
806 | follow-redirects@1.15.6:
807 | resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
808 | engines: {node: '>=4.0'}
809 | peerDependencies:
810 | debug: '*'
811 | peerDependenciesMeta:
812 | debug:
813 | optional: true
814 |
815 | form-data@4.0.0:
816 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
817 | engines: {node: '>= 6'}
818 |
819 | fs.realpath@1.0.0:
820 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
821 |
822 | fsevents@2.3.3:
823 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
824 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
825 | os: [darwin]
826 |
827 | gensync@1.0.0-beta.2:
828 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
829 | engines: {node: '>=6.9.0'}
830 |
831 | glob-parent@5.1.2:
832 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
833 | engines: {node: '>= 6'}
834 |
835 | glob-parent@6.0.2:
836 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
837 | engines: {node: '>=10.13.0'}
838 |
839 | glob@7.2.3:
840 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
841 | deprecated: Glob versions prior to v9 are no longer supported
842 |
843 | globals@11.12.0:
844 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
845 | engines: {node: '>=4'}
846 |
847 | globals@13.24.0:
848 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
849 | engines: {node: '>=8'}
850 |
851 | globby@11.1.0:
852 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
853 | engines: {node: '>=10'}
854 |
855 | graphemer@1.4.0:
856 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
857 |
858 | has-flag@3.0.0:
859 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
860 | engines: {node: '>=4'}
861 |
862 | has-flag@4.0.0:
863 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
864 | engines: {node: '>=8'}
865 |
866 | hoist-non-react-statics@3.3.2:
867 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
868 |
869 | ignore@5.3.1:
870 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
871 | engines: {node: '>= 4'}
872 |
873 | immutable@4.3.6:
874 | resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==}
875 |
876 | import-fresh@3.3.0:
877 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
878 | engines: {node: '>=6'}
879 |
880 | imurmurhash@0.1.4:
881 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
882 | engines: {node: '>=0.8.19'}
883 |
884 | inflight@1.0.6:
885 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
886 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
887 |
888 | inherits@2.0.4:
889 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
890 |
891 | invariant@2.2.4:
892 | resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
893 |
894 | is-binary-path@2.1.0:
895 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
896 | engines: {node: '>=8'}
897 |
898 | is-extglob@2.1.1:
899 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
900 | engines: {node: '>=0.10.0'}
901 |
902 | is-glob@4.0.3:
903 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
904 | engines: {node: '>=0.10.0'}
905 |
906 | is-number@7.0.0:
907 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
908 | engines: {node: '>=0.12.0'}
909 |
910 | is-path-inside@3.0.3:
911 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
912 | engines: {node: '>=8'}
913 |
914 | isexe@2.0.0:
915 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
916 |
917 | js-tokens@4.0.0:
918 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
919 |
920 | js-yaml@4.1.0:
921 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
922 | hasBin: true
923 |
924 | jsesc@2.5.2:
925 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
926 | engines: {node: '>=4'}
927 | hasBin: true
928 |
929 | json-buffer@3.0.1:
930 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
931 |
932 | json-schema-traverse@0.4.1:
933 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
934 |
935 | json-stable-stringify-without-jsonify@1.0.1:
936 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
937 |
938 | json5@2.2.3:
939 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
940 | engines: {node: '>=6'}
941 | hasBin: true
942 |
943 | keyv@4.5.4:
944 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
945 |
946 | levn@0.4.1:
947 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
948 | engines: {node: '>= 0.8.0'}
949 |
950 | locate-path@6.0.0:
951 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
952 | engines: {node: '>=10'}
953 |
954 | lodash.merge@4.6.2:
955 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
956 |
957 | loose-envify@1.4.0:
958 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
959 | hasBin: true
960 |
961 | lru-cache@5.1.1:
962 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
963 |
964 | merge2@1.4.1:
965 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
966 | engines: {node: '>= 8'}
967 |
968 | micromatch@4.0.7:
969 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
970 | engines: {node: '>=8.6'}
971 |
972 | mime-db@1.52.0:
973 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
974 | engines: {node: '>= 0.6'}
975 |
976 | mime-types@2.1.35:
977 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
978 | engines: {node: '>= 0.6'}
979 |
980 | minimatch@3.1.2:
981 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
982 |
983 | minimatch@9.0.4:
984 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
985 | engines: {node: '>=16 || 14 >=14.17'}
986 |
987 | ms@2.1.2:
988 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
989 |
990 | nanoid@3.3.7:
991 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
992 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
993 | hasBin: true
994 |
995 | natural-compare@1.4.0:
996 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
997 |
998 | node-releases@2.0.14:
999 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1000 |
1001 | normalize-path@3.0.0:
1002 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1003 | engines: {node: '>=0.10.0'}
1004 |
1005 | once@1.4.0:
1006 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1007 |
1008 | optionator@0.9.4:
1009 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1010 | engines: {node: '>= 0.8.0'}
1011 |
1012 | p-limit@3.1.0:
1013 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1014 | engines: {node: '>=10'}
1015 |
1016 | p-locate@5.0.0:
1017 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1018 | engines: {node: '>=10'}
1019 |
1020 | parent-module@1.0.1:
1021 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1022 | engines: {node: '>=6'}
1023 |
1024 | path-exists@4.0.0:
1025 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1026 | engines: {node: '>=8'}
1027 |
1028 | path-is-absolute@1.0.1:
1029 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1030 | engines: {node: '>=0.10.0'}
1031 |
1032 | path-key@3.1.1:
1033 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1034 | engines: {node: '>=8'}
1035 |
1036 | path-type@4.0.0:
1037 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1038 | engines: {node: '>=8'}
1039 |
1040 | picocolors@1.0.1:
1041 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
1042 |
1043 | picomatch@2.3.1:
1044 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1045 | engines: {node: '>=8.6'}
1046 |
1047 | postcss@8.4.38:
1048 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
1049 | engines: {node: ^10 || ^12 || >=14}
1050 |
1051 | prelude-ls@1.2.1:
1052 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1053 | engines: {node: '>= 0.8.0'}
1054 |
1055 | proxy-from-env@1.1.0:
1056 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1057 |
1058 | punycode@2.3.1:
1059 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1060 | engines: {node: '>=6'}
1061 |
1062 | queue-microtask@1.2.3:
1063 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1064 |
1065 | react-dom@18.3.1:
1066 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
1067 | peerDependencies:
1068 | react: ^18.3.1
1069 |
1070 | react-fast-compare@3.2.2:
1071 | resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
1072 |
1073 | react-helmet-async@2.0.5:
1074 | resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==}
1075 | peerDependencies:
1076 | react: ^16.6.0 || ^17.0.0 || ^18.0.0
1077 |
1078 | react-icons@5.2.1:
1079 | resolution: {integrity: sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==}
1080 | peerDependencies:
1081 | react: '*'
1082 |
1083 | react-is@16.13.1:
1084 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1085 |
1086 | react-refresh@0.14.2:
1087 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
1088 | engines: {node: '>=0.10.0'}
1089 |
1090 | react-router-dom@6.23.1:
1091 | resolution: {integrity: sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==}
1092 | engines: {node: '>=14.0.0'}
1093 | peerDependencies:
1094 | react: '>=16.8'
1095 | react-dom: '>=16.8'
1096 |
1097 | react-router@6.23.1:
1098 | resolution: {integrity: sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==}
1099 | engines: {node: '>=14.0.0'}
1100 | peerDependencies:
1101 | react: '>=16.8'
1102 |
1103 | react@18.3.1:
1104 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
1105 | engines: {node: '>=0.10.0'}
1106 |
1107 | readdirp@3.6.0:
1108 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1109 | engines: {node: '>=8.10.0'}
1110 |
1111 | regenerator-runtime@0.14.1:
1112 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1113 |
1114 | resolve-from@4.0.0:
1115 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1116 | engines: {node: '>=4'}
1117 |
1118 | reusify@1.0.4:
1119 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1120 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1121 |
1122 | rimraf@3.0.2:
1123 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1124 | deprecated: Rimraf versions prior to v4 are no longer supported
1125 | hasBin: true
1126 |
1127 | rollup@4.18.0:
1128 | resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==}
1129 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1130 | hasBin: true
1131 |
1132 | run-parallel@1.2.0:
1133 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1134 |
1135 | sass@1.77.4:
1136 | resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==}
1137 | engines: {node: '>=14.0.0'}
1138 | hasBin: true
1139 |
1140 | scheduler@0.23.2:
1141 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
1142 |
1143 | semver@6.3.1:
1144 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1145 | hasBin: true
1146 |
1147 | semver@7.6.2:
1148 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
1149 | engines: {node: '>=10'}
1150 | hasBin: true
1151 |
1152 | shallowequal@1.1.0:
1153 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
1154 |
1155 | shebang-command@2.0.0:
1156 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1157 | engines: {node: '>=8'}
1158 |
1159 | shebang-regex@3.0.0:
1160 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1161 | engines: {node: '>=8'}
1162 |
1163 | slash@3.0.0:
1164 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1165 | engines: {node: '>=8'}
1166 |
1167 | source-map-js@1.2.0:
1168 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1169 | engines: {node: '>=0.10.0'}
1170 |
1171 | strip-ansi@6.0.1:
1172 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1173 | engines: {node: '>=8'}
1174 |
1175 | strip-json-comments@3.1.1:
1176 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1177 | engines: {node: '>=8'}
1178 |
1179 | supports-color@5.5.0:
1180 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1181 | engines: {node: '>=4'}
1182 |
1183 | supports-color@7.2.0:
1184 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1185 | engines: {node: '>=8'}
1186 |
1187 | text-table@0.2.0:
1188 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1189 |
1190 | to-fast-properties@2.0.0:
1191 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1192 | engines: {node: '>=4'}
1193 |
1194 | to-regex-range@5.0.1:
1195 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1196 | engines: {node: '>=8.0'}
1197 |
1198 | ts-api-utils@1.3.0:
1199 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
1200 | engines: {node: '>=16'}
1201 | peerDependencies:
1202 | typescript: '>=4.2.0'
1203 |
1204 | type-check@0.4.0:
1205 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1206 | engines: {node: '>= 0.8.0'}
1207 |
1208 | type-fest@0.20.2:
1209 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1210 | engines: {node: '>=10'}
1211 |
1212 | typescript@5.4.5:
1213 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
1214 | engines: {node: '>=14.17'}
1215 | hasBin: true
1216 |
1217 | undici-types@5.26.5:
1218 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
1219 |
1220 | update-browserslist-db@1.0.16:
1221 | resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
1222 | hasBin: true
1223 | peerDependencies:
1224 | browserslist: '>= 4.21.0'
1225 |
1226 | uri-js@4.4.1:
1227 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1228 |
1229 | vite@5.2.12:
1230 | resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==}
1231 | engines: {node: ^18.0.0 || >=20.0.0}
1232 | hasBin: true
1233 | peerDependencies:
1234 | '@types/node': ^18.0.0 || >=20.0.0
1235 | less: '*'
1236 | lightningcss: ^1.21.0
1237 | sass: '*'
1238 | stylus: '*'
1239 | sugarss: '*'
1240 | terser: ^5.4.0
1241 | peerDependenciesMeta:
1242 | '@types/node':
1243 | optional: true
1244 | less:
1245 | optional: true
1246 | lightningcss:
1247 | optional: true
1248 | sass:
1249 | optional: true
1250 | stylus:
1251 | optional: true
1252 | sugarss:
1253 | optional: true
1254 | terser:
1255 | optional: true
1256 |
1257 | which@2.0.2:
1258 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1259 | engines: {node: '>= 8'}
1260 | hasBin: true
1261 |
1262 | word-wrap@1.2.5:
1263 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1264 | engines: {node: '>=0.10.0'}
1265 |
1266 | wrappy@1.0.2:
1267 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1268 |
1269 | yallist@3.1.1:
1270 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1271 |
1272 | yocto-queue@0.1.0:
1273 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1274 | engines: {node: '>=10'}
1275 |
1276 | snapshots:
1277 |
1278 | '@ampproject/remapping@2.3.0':
1279 | dependencies:
1280 | '@jridgewell/gen-mapping': 0.3.5
1281 | '@jridgewell/trace-mapping': 0.3.25
1282 |
1283 | '@babel/code-frame@7.24.6':
1284 | dependencies:
1285 | '@babel/highlight': 7.24.6
1286 | picocolors: 1.0.1
1287 |
1288 | '@babel/compat-data@7.24.6': {}
1289 |
1290 | '@babel/core@7.24.6':
1291 | dependencies:
1292 | '@ampproject/remapping': 2.3.0
1293 | '@babel/code-frame': 7.24.6
1294 | '@babel/generator': 7.24.6
1295 | '@babel/helper-compilation-targets': 7.24.6
1296 | '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6)
1297 | '@babel/helpers': 7.24.6
1298 | '@babel/parser': 7.24.6
1299 | '@babel/template': 7.24.6
1300 | '@babel/traverse': 7.24.6
1301 | '@babel/types': 7.24.6
1302 | convert-source-map: 2.0.0
1303 | debug: 4.3.5
1304 | gensync: 1.0.0-beta.2
1305 | json5: 2.2.3
1306 | semver: 6.3.1
1307 | transitivePeerDependencies:
1308 | - supports-color
1309 |
1310 | '@babel/generator@7.24.6':
1311 | dependencies:
1312 | '@babel/types': 7.24.6
1313 | '@jridgewell/gen-mapping': 0.3.5
1314 | '@jridgewell/trace-mapping': 0.3.25
1315 | jsesc: 2.5.2
1316 |
1317 | '@babel/helper-compilation-targets@7.24.6':
1318 | dependencies:
1319 | '@babel/compat-data': 7.24.6
1320 | '@babel/helper-validator-option': 7.24.6
1321 | browserslist: 4.23.0
1322 | lru-cache: 5.1.1
1323 | semver: 6.3.1
1324 |
1325 | '@babel/helper-environment-visitor@7.24.6': {}
1326 |
1327 | '@babel/helper-function-name@7.24.6':
1328 | dependencies:
1329 | '@babel/template': 7.24.6
1330 | '@babel/types': 7.24.6
1331 |
1332 | '@babel/helper-hoist-variables@7.24.6':
1333 | dependencies:
1334 | '@babel/types': 7.24.6
1335 |
1336 | '@babel/helper-module-imports@7.24.6':
1337 | dependencies:
1338 | '@babel/types': 7.24.6
1339 |
1340 | '@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)':
1341 | dependencies:
1342 | '@babel/core': 7.24.6
1343 | '@babel/helper-environment-visitor': 7.24.6
1344 | '@babel/helper-module-imports': 7.24.6
1345 | '@babel/helper-simple-access': 7.24.6
1346 | '@babel/helper-split-export-declaration': 7.24.6
1347 | '@babel/helper-validator-identifier': 7.24.6
1348 |
1349 | '@babel/helper-plugin-utils@7.24.6': {}
1350 |
1351 | '@babel/helper-simple-access@7.24.6':
1352 | dependencies:
1353 | '@babel/types': 7.24.6
1354 |
1355 | '@babel/helper-split-export-declaration@7.24.6':
1356 | dependencies:
1357 | '@babel/types': 7.24.6
1358 |
1359 | '@babel/helper-string-parser@7.24.6': {}
1360 |
1361 | '@babel/helper-validator-identifier@7.24.6': {}
1362 |
1363 | '@babel/helper-validator-option@7.24.6': {}
1364 |
1365 | '@babel/helpers@7.24.6':
1366 | dependencies:
1367 | '@babel/template': 7.24.6
1368 | '@babel/types': 7.24.6
1369 |
1370 | '@babel/highlight@7.24.6':
1371 | dependencies:
1372 | '@babel/helper-validator-identifier': 7.24.6
1373 | chalk: 2.4.2
1374 | js-tokens: 4.0.0
1375 | picocolors: 1.0.1
1376 |
1377 | '@babel/parser@7.24.6':
1378 | dependencies:
1379 | '@babel/types': 7.24.6
1380 |
1381 | '@babel/plugin-transform-react-jsx-self@7.24.6(@babel/core@7.24.6)':
1382 | dependencies:
1383 | '@babel/core': 7.24.6
1384 | '@babel/helper-plugin-utils': 7.24.6
1385 |
1386 | '@babel/plugin-transform-react-jsx-source@7.24.6(@babel/core@7.24.6)':
1387 | dependencies:
1388 | '@babel/core': 7.24.6
1389 | '@babel/helper-plugin-utils': 7.24.6
1390 |
1391 | '@babel/runtime@7.24.6':
1392 | dependencies:
1393 | regenerator-runtime: 0.14.1
1394 |
1395 | '@babel/template@7.24.6':
1396 | dependencies:
1397 | '@babel/code-frame': 7.24.6
1398 | '@babel/parser': 7.24.6
1399 | '@babel/types': 7.24.6
1400 |
1401 | '@babel/traverse@7.24.6':
1402 | dependencies:
1403 | '@babel/code-frame': 7.24.6
1404 | '@babel/generator': 7.24.6
1405 | '@babel/helper-environment-visitor': 7.24.6
1406 | '@babel/helper-function-name': 7.24.6
1407 | '@babel/helper-hoist-variables': 7.24.6
1408 | '@babel/helper-split-export-declaration': 7.24.6
1409 | '@babel/parser': 7.24.6
1410 | '@babel/types': 7.24.6
1411 | debug: 4.3.5
1412 | globals: 11.12.0
1413 | transitivePeerDependencies:
1414 | - supports-color
1415 |
1416 | '@babel/types@7.24.6':
1417 | dependencies:
1418 | '@babel/helper-string-parser': 7.24.6
1419 | '@babel/helper-validator-identifier': 7.24.6
1420 | to-fast-properties: 2.0.0
1421 |
1422 | '@esbuild/aix-ppc64@0.20.2':
1423 | optional: true
1424 |
1425 | '@esbuild/android-arm64@0.20.2':
1426 | optional: true
1427 |
1428 | '@esbuild/android-arm@0.20.2':
1429 | optional: true
1430 |
1431 | '@esbuild/android-x64@0.20.2':
1432 | optional: true
1433 |
1434 | '@esbuild/darwin-arm64@0.20.2':
1435 | optional: true
1436 |
1437 | '@esbuild/darwin-x64@0.20.2':
1438 | optional: true
1439 |
1440 | '@esbuild/freebsd-arm64@0.20.2':
1441 | optional: true
1442 |
1443 | '@esbuild/freebsd-x64@0.20.2':
1444 | optional: true
1445 |
1446 | '@esbuild/linux-arm64@0.20.2':
1447 | optional: true
1448 |
1449 | '@esbuild/linux-arm@0.20.2':
1450 | optional: true
1451 |
1452 | '@esbuild/linux-ia32@0.20.2':
1453 | optional: true
1454 |
1455 | '@esbuild/linux-loong64@0.20.2':
1456 | optional: true
1457 |
1458 | '@esbuild/linux-mips64el@0.20.2':
1459 | optional: true
1460 |
1461 | '@esbuild/linux-ppc64@0.20.2':
1462 | optional: true
1463 |
1464 | '@esbuild/linux-riscv64@0.20.2':
1465 | optional: true
1466 |
1467 | '@esbuild/linux-s390x@0.20.2':
1468 | optional: true
1469 |
1470 | '@esbuild/linux-x64@0.20.2':
1471 | optional: true
1472 |
1473 | '@esbuild/netbsd-x64@0.20.2':
1474 | optional: true
1475 |
1476 | '@esbuild/openbsd-x64@0.20.2':
1477 | optional: true
1478 |
1479 | '@esbuild/sunos-x64@0.20.2':
1480 | optional: true
1481 |
1482 | '@esbuild/win32-arm64@0.20.2':
1483 | optional: true
1484 |
1485 | '@esbuild/win32-ia32@0.20.2':
1486 | optional: true
1487 |
1488 | '@esbuild/win32-x64@0.20.2':
1489 | optional: true
1490 |
1491 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
1492 | dependencies:
1493 | eslint: 8.57.0
1494 | eslint-visitor-keys: 3.4.3
1495 |
1496 | '@eslint-community/regexpp@4.10.0': {}
1497 |
1498 | '@eslint/eslintrc@2.1.4':
1499 | dependencies:
1500 | ajv: 6.12.6
1501 | debug: 4.3.5
1502 | espree: 9.6.1
1503 | globals: 13.24.0
1504 | ignore: 5.3.1
1505 | import-fresh: 3.3.0
1506 | js-yaml: 4.1.0
1507 | minimatch: 3.1.2
1508 | strip-json-comments: 3.1.1
1509 | transitivePeerDependencies:
1510 | - supports-color
1511 |
1512 | '@eslint/js@8.57.0': {}
1513 |
1514 | '@fontsource/ibm-plex-sans@5.0.20': {}
1515 |
1516 | '@humanwhocodes/config-array@0.11.14':
1517 | dependencies:
1518 | '@humanwhocodes/object-schema': 2.0.3
1519 | debug: 4.3.5
1520 | minimatch: 3.1.2
1521 | transitivePeerDependencies:
1522 | - supports-color
1523 |
1524 | '@humanwhocodes/module-importer@1.0.1': {}
1525 |
1526 | '@humanwhocodes/object-schema@2.0.3': {}
1527 |
1528 | '@jridgewell/gen-mapping@0.3.5':
1529 | dependencies:
1530 | '@jridgewell/set-array': 1.2.1
1531 | '@jridgewell/sourcemap-codec': 1.4.15
1532 | '@jridgewell/trace-mapping': 0.3.25
1533 |
1534 | '@jridgewell/resolve-uri@3.1.2': {}
1535 |
1536 | '@jridgewell/set-array@1.2.1': {}
1537 |
1538 | '@jridgewell/sourcemap-codec@1.4.15': {}
1539 |
1540 | '@jridgewell/trace-mapping@0.3.25':
1541 | dependencies:
1542 | '@jridgewell/resolve-uri': 3.1.2
1543 | '@jridgewell/sourcemap-codec': 1.4.15
1544 |
1545 | '@nodelib/fs.scandir@2.1.5':
1546 | dependencies:
1547 | '@nodelib/fs.stat': 2.0.5
1548 | run-parallel: 1.2.0
1549 |
1550 | '@nodelib/fs.stat@2.0.5': {}
1551 |
1552 | '@nodelib/fs.walk@1.2.8':
1553 | dependencies:
1554 | '@nodelib/fs.scandir': 2.1.5
1555 | fastq: 1.17.1
1556 |
1557 | '@remix-run/router@1.16.1': {}
1558 |
1559 | '@rollup/rollup-android-arm-eabi@4.18.0':
1560 | optional: true
1561 |
1562 | '@rollup/rollup-android-arm64@4.18.0':
1563 | optional: true
1564 |
1565 | '@rollup/rollup-darwin-arm64@4.18.0':
1566 | optional: true
1567 |
1568 | '@rollup/rollup-darwin-x64@4.18.0':
1569 | optional: true
1570 |
1571 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
1572 | optional: true
1573 |
1574 | '@rollup/rollup-linux-arm-musleabihf@4.18.0':
1575 | optional: true
1576 |
1577 | '@rollup/rollup-linux-arm64-gnu@4.18.0':
1578 | optional: true
1579 |
1580 | '@rollup/rollup-linux-arm64-musl@4.18.0':
1581 | optional: true
1582 |
1583 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
1584 | optional: true
1585 |
1586 | '@rollup/rollup-linux-riscv64-gnu@4.18.0':
1587 | optional: true
1588 |
1589 | '@rollup/rollup-linux-s390x-gnu@4.18.0':
1590 | optional: true
1591 |
1592 | '@rollup/rollup-linux-x64-gnu@4.18.0':
1593 | optional: true
1594 |
1595 | '@rollup/rollup-linux-x64-musl@4.18.0':
1596 | optional: true
1597 |
1598 | '@rollup/rollup-win32-arm64-msvc@4.18.0':
1599 | optional: true
1600 |
1601 | '@rollup/rollup-win32-ia32-msvc@4.18.0':
1602 | optional: true
1603 |
1604 | '@rollup/rollup-win32-x64-msvc@4.18.0':
1605 | optional: true
1606 |
1607 | '@tanem/react-nprogress@5.0.51(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
1608 | dependencies:
1609 | '@babel/runtime': 7.24.6
1610 | hoist-non-react-statics: 3.3.2
1611 | react: 18.3.1
1612 | react-dom: 18.3.1(react@18.3.1)
1613 |
1614 | '@types/babel__core@7.20.5':
1615 | dependencies:
1616 | '@babel/parser': 7.24.6
1617 | '@babel/types': 7.24.6
1618 | '@types/babel__generator': 7.6.8
1619 | '@types/babel__template': 7.4.4
1620 | '@types/babel__traverse': 7.20.6
1621 |
1622 | '@types/babel__generator@7.6.8':
1623 | dependencies:
1624 | '@babel/types': 7.24.6
1625 |
1626 | '@types/babel__template@7.4.4':
1627 | dependencies:
1628 | '@babel/parser': 7.24.6
1629 | '@babel/types': 7.24.6
1630 |
1631 | '@types/babel__traverse@7.20.6':
1632 | dependencies:
1633 | '@babel/types': 7.24.6
1634 |
1635 | '@types/estree@1.0.5': {}
1636 |
1637 | '@types/node@20.13.0':
1638 | dependencies:
1639 | undici-types: 5.26.5
1640 |
1641 | '@types/prop-types@15.7.12': {}
1642 |
1643 | '@types/react-dom@18.3.0':
1644 | dependencies:
1645 | '@types/react': 18.3.3
1646 |
1647 | '@types/react@18.3.3':
1648 | dependencies:
1649 | '@types/prop-types': 15.7.12
1650 | csstype: 3.1.3
1651 |
1652 | '@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)':
1653 | dependencies:
1654 | '@eslint-community/regexpp': 4.10.0
1655 | '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5)
1656 | '@typescript-eslint/scope-manager': 7.11.0
1657 | '@typescript-eslint/type-utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5)
1658 | '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5)
1659 | '@typescript-eslint/visitor-keys': 7.11.0
1660 | eslint: 8.57.0
1661 | graphemer: 1.4.0
1662 | ignore: 5.3.1
1663 | natural-compare: 1.4.0
1664 | ts-api-utils: 1.3.0(typescript@5.4.5)
1665 | optionalDependencies:
1666 | typescript: 5.4.5
1667 | transitivePeerDependencies:
1668 | - supports-color
1669 |
1670 | '@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5)':
1671 | dependencies:
1672 | '@typescript-eslint/scope-manager': 7.11.0
1673 | '@typescript-eslint/types': 7.11.0
1674 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5)
1675 | '@typescript-eslint/visitor-keys': 7.11.0
1676 | debug: 4.3.5
1677 | eslint: 8.57.0
1678 | optionalDependencies:
1679 | typescript: 5.4.5
1680 | transitivePeerDependencies:
1681 | - supports-color
1682 |
1683 | '@typescript-eslint/scope-manager@7.11.0':
1684 | dependencies:
1685 | '@typescript-eslint/types': 7.11.0
1686 | '@typescript-eslint/visitor-keys': 7.11.0
1687 |
1688 | '@typescript-eslint/type-utils@7.11.0(eslint@8.57.0)(typescript@5.4.5)':
1689 | dependencies:
1690 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5)
1691 | '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5)
1692 | debug: 4.3.5
1693 | eslint: 8.57.0
1694 | ts-api-utils: 1.3.0(typescript@5.4.5)
1695 | optionalDependencies:
1696 | typescript: 5.4.5
1697 | transitivePeerDependencies:
1698 | - supports-color
1699 |
1700 | '@typescript-eslint/types@7.11.0': {}
1701 |
1702 | '@typescript-eslint/typescript-estree@7.11.0(typescript@5.4.5)':
1703 | dependencies:
1704 | '@typescript-eslint/types': 7.11.0
1705 | '@typescript-eslint/visitor-keys': 7.11.0
1706 | debug: 4.3.5
1707 | globby: 11.1.0
1708 | is-glob: 4.0.3
1709 | minimatch: 9.0.4
1710 | semver: 7.6.2
1711 | ts-api-utils: 1.3.0(typescript@5.4.5)
1712 | optionalDependencies:
1713 | typescript: 5.4.5
1714 | transitivePeerDependencies:
1715 | - supports-color
1716 |
1717 | '@typescript-eslint/utils@7.11.0(eslint@8.57.0)(typescript@5.4.5)':
1718 | dependencies:
1719 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
1720 | '@typescript-eslint/scope-manager': 7.11.0
1721 | '@typescript-eslint/types': 7.11.0
1722 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5)
1723 | eslint: 8.57.0
1724 | transitivePeerDependencies:
1725 | - supports-color
1726 | - typescript
1727 |
1728 | '@typescript-eslint/visitor-keys@7.11.0':
1729 | dependencies:
1730 | '@typescript-eslint/types': 7.11.0
1731 | eslint-visitor-keys: 3.4.3
1732 |
1733 | '@ungap/structured-clone@1.2.0': {}
1734 |
1735 | '@vitejs/plugin-react@4.3.0(vite@5.2.12(@types/node@20.13.0)(sass@1.77.4))':
1736 | dependencies:
1737 | '@babel/core': 7.24.6
1738 | '@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.6)
1739 | '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.6)
1740 | '@types/babel__core': 7.20.5
1741 | react-refresh: 0.14.2
1742 | vite: 5.2.12(@types/node@20.13.0)(sass@1.77.4)
1743 | transitivePeerDependencies:
1744 | - supports-color
1745 |
1746 | acorn-jsx@5.3.2(acorn@8.11.3):
1747 | dependencies:
1748 | acorn: 8.11.3
1749 |
1750 | acorn@8.11.3: {}
1751 |
1752 | ajv@6.12.6:
1753 | dependencies:
1754 | fast-deep-equal: 3.1.3
1755 | fast-json-stable-stringify: 2.1.0
1756 | json-schema-traverse: 0.4.1
1757 | uri-js: 4.4.1
1758 |
1759 | ansi-regex@5.0.1: {}
1760 |
1761 | ansi-styles@3.2.1:
1762 | dependencies:
1763 | color-convert: 1.9.3
1764 |
1765 | ansi-styles@4.3.0:
1766 | dependencies:
1767 | color-convert: 2.0.1
1768 |
1769 | anymatch@3.1.3:
1770 | dependencies:
1771 | normalize-path: 3.0.0
1772 | picomatch: 2.3.1
1773 |
1774 | argparse@2.0.1: {}
1775 |
1776 | array-union@2.1.0: {}
1777 |
1778 | asynckit@0.4.0: {}
1779 |
1780 | axios@1.7.2:
1781 | dependencies:
1782 | follow-redirects: 1.15.6
1783 | form-data: 4.0.0
1784 | proxy-from-env: 1.1.0
1785 | transitivePeerDependencies:
1786 | - debug
1787 |
1788 | balanced-match@1.0.2: {}
1789 |
1790 | binary-extensions@2.3.0: {}
1791 |
1792 | brace-expansion@1.1.11:
1793 | dependencies:
1794 | balanced-match: 1.0.2
1795 | concat-map: 0.0.1
1796 |
1797 | brace-expansion@2.0.1:
1798 | dependencies:
1799 | balanced-match: 1.0.2
1800 |
1801 | braces@3.0.3:
1802 | dependencies:
1803 | fill-range: 7.1.1
1804 |
1805 | browserslist@4.23.0:
1806 | dependencies:
1807 | caniuse-lite: 1.0.30001625
1808 | electron-to-chromium: 1.4.787
1809 | node-releases: 2.0.14
1810 | update-browserslist-db: 1.0.16(browserslist@4.23.0)
1811 |
1812 | callsites@3.1.0: {}
1813 |
1814 | caniuse-lite@1.0.30001625: {}
1815 |
1816 | chalk@2.4.2:
1817 | dependencies:
1818 | ansi-styles: 3.2.1
1819 | escape-string-regexp: 1.0.5
1820 | supports-color: 5.5.0
1821 |
1822 | chalk@4.1.2:
1823 | dependencies:
1824 | ansi-styles: 4.3.0
1825 | supports-color: 7.2.0
1826 |
1827 | chokidar@3.6.0:
1828 | dependencies:
1829 | anymatch: 3.1.3
1830 | braces: 3.0.3
1831 | glob-parent: 5.1.2
1832 | is-binary-path: 2.1.0
1833 | is-glob: 4.0.3
1834 | normalize-path: 3.0.0
1835 | readdirp: 3.6.0
1836 | optionalDependencies:
1837 | fsevents: 2.3.3
1838 |
1839 | color-convert@1.9.3:
1840 | dependencies:
1841 | color-name: 1.1.3
1842 |
1843 | color-convert@2.0.1:
1844 | dependencies:
1845 | color-name: 1.1.4
1846 |
1847 | color-name@1.1.3: {}
1848 |
1849 | color-name@1.1.4: {}
1850 |
1851 | combined-stream@1.0.8:
1852 | dependencies:
1853 | delayed-stream: 1.0.0
1854 |
1855 | concat-map@0.0.1: {}
1856 |
1857 | convert-source-map@2.0.0: {}
1858 |
1859 | cross-spawn@7.0.3:
1860 | dependencies:
1861 | path-key: 3.1.1
1862 | shebang-command: 2.0.0
1863 | which: 2.0.2
1864 |
1865 | csstype@3.1.3: {}
1866 |
1867 | debug@4.3.5:
1868 | dependencies:
1869 | ms: 2.1.2
1870 |
1871 | deep-is@0.1.4: {}
1872 |
1873 | delayed-stream@1.0.0: {}
1874 |
1875 | dir-glob@3.0.1:
1876 | dependencies:
1877 | path-type: 4.0.0
1878 |
1879 | doctrine@3.0.0:
1880 | dependencies:
1881 | esutils: 2.0.3
1882 |
1883 | electron-to-chromium@1.4.787: {}
1884 |
1885 | esbuild@0.20.2:
1886 | optionalDependencies:
1887 | '@esbuild/aix-ppc64': 0.20.2
1888 | '@esbuild/android-arm': 0.20.2
1889 | '@esbuild/android-arm64': 0.20.2
1890 | '@esbuild/android-x64': 0.20.2
1891 | '@esbuild/darwin-arm64': 0.20.2
1892 | '@esbuild/darwin-x64': 0.20.2
1893 | '@esbuild/freebsd-arm64': 0.20.2
1894 | '@esbuild/freebsd-x64': 0.20.2
1895 | '@esbuild/linux-arm': 0.20.2
1896 | '@esbuild/linux-arm64': 0.20.2
1897 | '@esbuild/linux-ia32': 0.20.2
1898 | '@esbuild/linux-loong64': 0.20.2
1899 | '@esbuild/linux-mips64el': 0.20.2
1900 | '@esbuild/linux-ppc64': 0.20.2
1901 | '@esbuild/linux-riscv64': 0.20.2
1902 | '@esbuild/linux-s390x': 0.20.2
1903 | '@esbuild/linux-x64': 0.20.2
1904 | '@esbuild/netbsd-x64': 0.20.2
1905 | '@esbuild/openbsd-x64': 0.20.2
1906 | '@esbuild/sunos-x64': 0.20.2
1907 | '@esbuild/win32-arm64': 0.20.2
1908 | '@esbuild/win32-ia32': 0.20.2
1909 | '@esbuild/win32-x64': 0.20.2
1910 |
1911 | escalade@3.1.2: {}
1912 |
1913 | escape-string-regexp@1.0.5: {}
1914 |
1915 | escape-string-regexp@4.0.0: {}
1916 |
1917 | eslint-plugin-react-hooks@4.6.2(eslint@8.57.0):
1918 | dependencies:
1919 | eslint: 8.57.0
1920 |
1921 | eslint-plugin-react-refresh@0.4.7(eslint@8.57.0):
1922 | dependencies:
1923 | eslint: 8.57.0
1924 |
1925 | eslint-scope@7.2.2:
1926 | dependencies:
1927 | esrecurse: 4.3.0
1928 | estraverse: 5.3.0
1929 |
1930 | eslint-visitor-keys@3.4.3: {}
1931 |
1932 | eslint@8.57.0:
1933 | dependencies:
1934 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
1935 | '@eslint-community/regexpp': 4.10.0
1936 | '@eslint/eslintrc': 2.1.4
1937 | '@eslint/js': 8.57.0
1938 | '@humanwhocodes/config-array': 0.11.14
1939 | '@humanwhocodes/module-importer': 1.0.1
1940 | '@nodelib/fs.walk': 1.2.8
1941 | '@ungap/structured-clone': 1.2.0
1942 | ajv: 6.12.6
1943 | chalk: 4.1.2
1944 | cross-spawn: 7.0.3
1945 | debug: 4.3.5
1946 | doctrine: 3.0.0
1947 | escape-string-regexp: 4.0.0
1948 | eslint-scope: 7.2.2
1949 | eslint-visitor-keys: 3.4.3
1950 | espree: 9.6.1
1951 | esquery: 1.5.0
1952 | esutils: 2.0.3
1953 | fast-deep-equal: 3.1.3
1954 | file-entry-cache: 6.0.1
1955 | find-up: 5.0.0
1956 | glob-parent: 6.0.2
1957 | globals: 13.24.0
1958 | graphemer: 1.4.0
1959 | ignore: 5.3.1
1960 | imurmurhash: 0.1.4
1961 | is-glob: 4.0.3
1962 | is-path-inside: 3.0.3
1963 | js-yaml: 4.1.0
1964 | json-stable-stringify-without-jsonify: 1.0.1
1965 | levn: 0.4.1
1966 | lodash.merge: 4.6.2
1967 | minimatch: 3.1.2
1968 | natural-compare: 1.4.0
1969 | optionator: 0.9.4
1970 | strip-ansi: 6.0.1
1971 | text-table: 0.2.0
1972 | transitivePeerDependencies:
1973 | - supports-color
1974 |
1975 | espree@9.6.1:
1976 | dependencies:
1977 | acorn: 8.11.3
1978 | acorn-jsx: 5.3.2(acorn@8.11.3)
1979 | eslint-visitor-keys: 3.4.3
1980 |
1981 | esquery@1.5.0:
1982 | dependencies:
1983 | estraverse: 5.3.0
1984 |
1985 | esrecurse@4.3.0:
1986 | dependencies:
1987 | estraverse: 5.3.0
1988 |
1989 | estraverse@5.3.0: {}
1990 |
1991 | esutils@2.0.3: {}
1992 |
1993 | fast-deep-equal@3.1.3: {}
1994 |
1995 | fast-glob@3.3.2:
1996 | dependencies:
1997 | '@nodelib/fs.stat': 2.0.5
1998 | '@nodelib/fs.walk': 1.2.8
1999 | glob-parent: 5.1.2
2000 | merge2: 1.4.1
2001 | micromatch: 4.0.7
2002 |
2003 | fast-json-stable-stringify@2.1.0: {}
2004 |
2005 | fast-levenshtein@2.0.6: {}
2006 |
2007 | fastq@1.17.1:
2008 | dependencies:
2009 | reusify: 1.0.4
2010 |
2011 | file-entry-cache@6.0.1:
2012 | dependencies:
2013 | flat-cache: 3.2.0
2014 |
2015 | fill-range@7.1.1:
2016 | dependencies:
2017 | to-regex-range: 5.0.1
2018 |
2019 | find-up@5.0.0:
2020 | dependencies:
2021 | locate-path: 6.0.0
2022 | path-exists: 4.0.0
2023 |
2024 | flat-cache@3.2.0:
2025 | dependencies:
2026 | flatted: 3.3.1
2027 | keyv: 4.5.4
2028 | rimraf: 3.0.2
2029 |
2030 | flatted@3.3.1: {}
2031 |
2032 | follow-redirects@1.15.6: {}
2033 |
2034 | form-data@4.0.0:
2035 | dependencies:
2036 | asynckit: 0.4.0
2037 | combined-stream: 1.0.8
2038 | mime-types: 2.1.35
2039 |
2040 | fs.realpath@1.0.0: {}
2041 |
2042 | fsevents@2.3.3:
2043 | optional: true
2044 |
2045 | gensync@1.0.0-beta.2: {}
2046 |
2047 | glob-parent@5.1.2:
2048 | dependencies:
2049 | is-glob: 4.0.3
2050 |
2051 | glob-parent@6.0.2:
2052 | dependencies:
2053 | is-glob: 4.0.3
2054 |
2055 | glob@7.2.3:
2056 | dependencies:
2057 | fs.realpath: 1.0.0
2058 | inflight: 1.0.6
2059 | inherits: 2.0.4
2060 | minimatch: 3.1.2
2061 | once: 1.4.0
2062 | path-is-absolute: 1.0.1
2063 |
2064 | globals@11.12.0: {}
2065 |
2066 | globals@13.24.0:
2067 | dependencies:
2068 | type-fest: 0.20.2
2069 |
2070 | globby@11.1.0:
2071 | dependencies:
2072 | array-union: 2.1.0
2073 | dir-glob: 3.0.1
2074 | fast-glob: 3.3.2
2075 | ignore: 5.3.1
2076 | merge2: 1.4.1
2077 | slash: 3.0.0
2078 |
2079 | graphemer@1.4.0: {}
2080 |
2081 | has-flag@3.0.0: {}
2082 |
2083 | has-flag@4.0.0: {}
2084 |
2085 | hoist-non-react-statics@3.3.2:
2086 | dependencies:
2087 | react-is: 16.13.1
2088 |
2089 | ignore@5.3.1: {}
2090 |
2091 | immutable@4.3.6: {}
2092 |
2093 | import-fresh@3.3.0:
2094 | dependencies:
2095 | parent-module: 1.0.1
2096 | resolve-from: 4.0.0
2097 |
2098 | imurmurhash@0.1.4: {}
2099 |
2100 | inflight@1.0.6:
2101 | dependencies:
2102 | once: 1.4.0
2103 | wrappy: 1.0.2
2104 |
2105 | inherits@2.0.4: {}
2106 |
2107 | invariant@2.2.4:
2108 | dependencies:
2109 | loose-envify: 1.4.0
2110 |
2111 | is-binary-path@2.1.0:
2112 | dependencies:
2113 | binary-extensions: 2.3.0
2114 |
2115 | is-extglob@2.1.1: {}
2116 |
2117 | is-glob@4.0.3:
2118 | dependencies:
2119 | is-extglob: 2.1.1
2120 |
2121 | is-number@7.0.0: {}
2122 |
2123 | is-path-inside@3.0.3: {}
2124 |
2125 | isexe@2.0.0: {}
2126 |
2127 | js-tokens@4.0.0: {}
2128 |
2129 | js-yaml@4.1.0:
2130 | dependencies:
2131 | argparse: 2.0.1
2132 |
2133 | jsesc@2.5.2: {}
2134 |
2135 | json-buffer@3.0.1: {}
2136 |
2137 | json-schema-traverse@0.4.1: {}
2138 |
2139 | json-stable-stringify-without-jsonify@1.0.1: {}
2140 |
2141 | json5@2.2.3: {}
2142 |
2143 | keyv@4.5.4:
2144 | dependencies:
2145 | json-buffer: 3.0.1
2146 |
2147 | levn@0.4.1:
2148 | dependencies:
2149 | prelude-ls: 1.2.1
2150 | type-check: 0.4.0
2151 |
2152 | locate-path@6.0.0:
2153 | dependencies:
2154 | p-locate: 5.0.0
2155 |
2156 | lodash.merge@4.6.2: {}
2157 |
2158 | loose-envify@1.4.0:
2159 | dependencies:
2160 | js-tokens: 4.0.0
2161 |
2162 | lru-cache@5.1.1:
2163 | dependencies:
2164 | yallist: 3.1.1
2165 |
2166 | merge2@1.4.1: {}
2167 |
2168 | micromatch@4.0.7:
2169 | dependencies:
2170 | braces: 3.0.3
2171 | picomatch: 2.3.1
2172 |
2173 | mime-db@1.52.0: {}
2174 |
2175 | mime-types@2.1.35:
2176 | dependencies:
2177 | mime-db: 1.52.0
2178 |
2179 | minimatch@3.1.2:
2180 | dependencies:
2181 | brace-expansion: 1.1.11
2182 |
2183 | minimatch@9.0.4:
2184 | dependencies:
2185 | brace-expansion: 2.0.1
2186 |
2187 | ms@2.1.2: {}
2188 |
2189 | nanoid@3.3.7: {}
2190 |
2191 | natural-compare@1.4.0: {}
2192 |
2193 | node-releases@2.0.14: {}
2194 |
2195 | normalize-path@3.0.0: {}
2196 |
2197 | once@1.4.0:
2198 | dependencies:
2199 | wrappy: 1.0.2
2200 |
2201 | optionator@0.9.4:
2202 | dependencies:
2203 | deep-is: 0.1.4
2204 | fast-levenshtein: 2.0.6
2205 | levn: 0.4.1
2206 | prelude-ls: 1.2.1
2207 | type-check: 0.4.0
2208 | word-wrap: 1.2.5
2209 |
2210 | p-limit@3.1.0:
2211 | dependencies:
2212 | yocto-queue: 0.1.0
2213 |
2214 | p-locate@5.0.0:
2215 | dependencies:
2216 | p-limit: 3.1.0
2217 |
2218 | parent-module@1.0.1:
2219 | dependencies:
2220 | callsites: 3.1.0
2221 |
2222 | path-exists@4.0.0: {}
2223 |
2224 | path-is-absolute@1.0.1: {}
2225 |
2226 | path-key@3.1.1: {}
2227 |
2228 | path-type@4.0.0: {}
2229 |
2230 | picocolors@1.0.1: {}
2231 |
2232 | picomatch@2.3.1: {}
2233 |
2234 | postcss@8.4.38:
2235 | dependencies:
2236 | nanoid: 3.3.7
2237 | picocolors: 1.0.1
2238 | source-map-js: 1.2.0
2239 |
2240 | prelude-ls@1.2.1: {}
2241 |
2242 | proxy-from-env@1.1.0: {}
2243 |
2244 | punycode@2.3.1: {}
2245 |
2246 | queue-microtask@1.2.3: {}
2247 |
2248 | react-dom@18.3.1(react@18.3.1):
2249 | dependencies:
2250 | loose-envify: 1.4.0
2251 | react: 18.3.1
2252 | scheduler: 0.23.2
2253 |
2254 | react-fast-compare@3.2.2: {}
2255 |
2256 | react-helmet-async@2.0.5(react@18.3.1):
2257 | dependencies:
2258 | invariant: 2.2.4
2259 | react: 18.3.1
2260 | react-fast-compare: 3.2.2
2261 | shallowequal: 1.1.0
2262 |
2263 | react-icons@5.2.1(react@18.3.1):
2264 | dependencies:
2265 | react: 18.3.1
2266 |
2267 | react-is@16.13.1: {}
2268 |
2269 | react-refresh@0.14.2: {}
2270 |
2271 | react-router-dom@6.23.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
2272 | dependencies:
2273 | '@remix-run/router': 1.16.1
2274 | react: 18.3.1
2275 | react-dom: 18.3.1(react@18.3.1)
2276 | react-router: 6.23.1(react@18.3.1)
2277 |
2278 | react-router@6.23.1(react@18.3.1):
2279 | dependencies:
2280 | '@remix-run/router': 1.16.1
2281 | react: 18.3.1
2282 |
2283 | react@18.3.1:
2284 | dependencies:
2285 | loose-envify: 1.4.0
2286 |
2287 | readdirp@3.6.0:
2288 | dependencies:
2289 | picomatch: 2.3.1
2290 |
2291 | regenerator-runtime@0.14.1: {}
2292 |
2293 | resolve-from@4.0.0: {}
2294 |
2295 | reusify@1.0.4: {}
2296 |
2297 | rimraf@3.0.2:
2298 | dependencies:
2299 | glob: 7.2.3
2300 |
2301 | rollup@4.18.0:
2302 | dependencies:
2303 | '@types/estree': 1.0.5
2304 | optionalDependencies:
2305 | '@rollup/rollup-android-arm-eabi': 4.18.0
2306 | '@rollup/rollup-android-arm64': 4.18.0
2307 | '@rollup/rollup-darwin-arm64': 4.18.0
2308 | '@rollup/rollup-darwin-x64': 4.18.0
2309 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.0
2310 | '@rollup/rollup-linux-arm-musleabihf': 4.18.0
2311 | '@rollup/rollup-linux-arm64-gnu': 4.18.0
2312 | '@rollup/rollup-linux-arm64-musl': 4.18.0
2313 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0
2314 | '@rollup/rollup-linux-riscv64-gnu': 4.18.0
2315 | '@rollup/rollup-linux-s390x-gnu': 4.18.0
2316 | '@rollup/rollup-linux-x64-gnu': 4.18.0
2317 | '@rollup/rollup-linux-x64-musl': 4.18.0
2318 | '@rollup/rollup-win32-arm64-msvc': 4.18.0
2319 | '@rollup/rollup-win32-ia32-msvc': 4.18.0
2320 | '@rollup/rollup-win32-x64-msvc': 4.18.0
2321 | fsevents: 2.3.3
2322 |
2323 | run-parallel@1.2.0:
2324 | dependencies:
2325 | queue-microtask: 1.2.3
2326 |
2327 | sass@1.77.4:
2328 | dependencies:
2329 | chokidar: 3.6.0
2330 | immutable: 4.3.6
2331 | source-map-js: 1.2.0
2332 |
2333 | scheduler@0.23.2:
2334 | dependencies:
2335 | loose-envify: 1.4.0
2336 |
2337 | semver@6.3.1: {}
2338 |
2339 | semver@7.6.2: {}
2340 |
2341 | shallowequal@1.1.0: {}
2342 |
2343 | shebang-command@2.0.0:
2344 | dependencies:
2345 | shebang-regex: 3.0.0
2346 |
2347 | shebang-regex@3.0.0: {}
2348 |
2349 | slash@3.0.0: {}
2350 |
2351 | source-map-js@1.2.0: {}
2352 |
2353 | strip-ansi@6.0.1:
2354 | dependencies:
2355 | ansi-regex: 5.0.1
2356 |
2357 | strip-json-comments@3.1.1: {}
2358 |
2359 | supports-color@5.5.0:
2360 | dependencies:
2361 | has-flag: 3.0.0
2362 |
2363 | supports-color@7.2.0:
2364 | dependencies:
2365 | has-flag: 4.0.0
2366 |
2367 | text-table@0.2.0: {}
2368 |
2369 | to-fast-properties@2.0.0: {}
2370 |
2371 | to-regex-range@5.0.1:
2372 | dependencies:
2373 | is-number: 7.0.0
2374 |
2375 | ts-api-utils@1.3.0(typescript@5.4.5):
2376 | dependencies:
2377 | typescript: 5.4.5
2378 |
2379 | type-check@0.4.0:
2380 | dependencies:
2381 | prelude-ls: 1.2.1
2382 |
2383 | type-fest@0.20.2: {}
2384 |
2385 | typescript@5.4.5: {}
2386 |
2387 | undici-types@5.26.5: {}
2388 |
2389 | update-browserslist-db@1.0.16(browserslist@4.23.0):
2390 | dependencies:
2391 | browserslist: 4.23.0
2392 | escalade: 3.1.2
2393 | picocolors: 1.0.1
2394 |
2395 | uri-js@4.4.1:
2396 | dependencies:
2397 | punycode: 2.3.1
2398 |
2399 | vite@5.2.12(@types/node@20.13.0)(sass@1.77.4):
2400 | dependencies:
2401 | esbuild: 0.20.2
2402 | postcss: 8.4.38
2403 | rollup: 4.18.0
2404 | optionalDependencies:
2405 | '@types/node': 20.13.0
2406 | fsevents: 2.3.3
2407 | sass: 1.77.4
2408 |
2409 | which@2.0.2:
2410 | dependencies:
2411 | isexe: 2.0.0
2412 |
2413 | word-wrap@1.2.5: {}
2414 |
2415 | wrappy@1.0.2: {}
2416 |
2417 | yallist@3.1.1: {}
2418 |
2419 | yocto-queue@0.1.0: {}
2420 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/favicon.ico
--------------------------------------------------------------------------------
/public/icons/icon-144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/icons/icon-144.png
--------------------------------------------------------------------------------
/public/icons/icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/icons/icon-192.png
--------------------------------------------------------------------------------
/public/icons/icon-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/icons/icon-32.png
--------------------------------------------------------------------------------
/public/icons/icon-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/icons/icon-48.png
--------------------------------------------------------------------------------
/public/icons/icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/icons/icon-512.png
--------------------------------------------------------------------------------
/public/icons/icon-96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrejoCode/react-boilerplate/1545e57af58f554f1403afe73e39843af3d5eccd/public/icons/icon-96.png
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React.js Boilerplate",
3 | "name": "React.js Boilerplate",
4 | "icons": [
5 | {
6 | "src": "./icons/icon-32.png",
7 | "type": "image/png",
8 | "sizes": "32x32"
9 | },
10 | {
11 | "src": "./icons/icon-48.png",
12 | "type": "image/png",
13 | "sizes": "48x48"
14 | },
15 | {
16 | "src": "./icons/icon-96.png",
17 | "type": "image/png",
18 | "sizes": "96x96"
19 | },
20 | {
21 | "src": "./icons/icon-144.png",
22 | "type": "image/png",
23 | "sizes": "144x144"
24 | },
25 | {
26 | "src": "./icons/icon-192.png",
27 | "type": "image/png",
28 | "sizes": "192x192"
29 | },
30 | {
31 | "src": "./icons/icon-512.png",
32 | "type": "image/png",
33 | "sizes": "512x512"
34 | }
35 | ],
36 | "start_url": ".",
37 | "display": "standalone",
38 | "theme_color": "#33C8A3",
39 | "background_color": "#FFFFFF"
40 | }
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 |
--------------------------------------------------------------------------------
/public/sitemap.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 | https://react-boilerplate.trejocode.com/
7 | 2020-06-11T16:02:24+00:00
8 | 1.0
9 |
10 |
11 | https://react-boilerplate.trejocode.com/fetch
12 |
13 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Punto de entrada de la aplicación
3 | */
4 |
5 | import Routes from "./routes";
6 | import { HelmetProvider } from "react-helmet-async";
7 |
8 | const App = (): JSX.Element => (
9 |
10 |
11 |
12 |
13 |
14 | );
15 |
16 | export default App;
17 |
--------------------------------------------------------------------------------
/src/api/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Cliente HTTP para todas las peticiones Web basada en Axios: GET, POST, PUT, PATCH
3 | */
4 |
5 | import axios, { AxiosError, isAxiosError } from "axios";
6 | import type { InterfaceApiResponse } from "@/ts/api";
7 |
8 | const baseUrl = import.meta.env.VITE_API_URL;
9 |
10 | const handleRequest = async (
11 | request: Promise<{ data: T }>
12 | ): Promise> => {
13 | try {
14 | const { data } = await request;
15 | return { data };
16 | } catch (error) {
17 | if (isAxiosError(error)) {
18 | const axiosError = error as AxiosError;
19 | if (axiosError.response) {
20 | return { error: axiosError.response.data as string };
21 | } else if (axiosError.message === "Network Error") {
22 | return { error: "Sin conexión al servidor" };
23 | } else {
24 | return { error: axiosError.message };
25 | }
26 | } else {
27 | return { error: "Ocurrió un error inesperado" };
28 | }
29 | }
30 | };
31 |
32 | /**
33 | * @description Realizar petición HTTP GET
34 | * @param {string} endpoint Endpoint de la solicitud
35 | * @returns {Promise>}
36 | */
37 | export const get = async (
38 | endpoint: string
39 | ): Promise> => {
40 | return handleRequest(axios.get(`${baseUrl}${endpoint}`));
41 | };
42 |
43 | /**
44 | * @description Realizar petición HTTP POST
45 | * @param {string} endpoint Endpoint de la solicitud
46 | * @param {object} payload Objecto body de la solicitud
47 | * @returns {Promise>}
48 | */
49 | export const post = async (
50 | endpoint: string,
51 | payload: object
52 | ): Promise> => {
53 | return handleRequest(axios.post(`${baseUrl}${endpoint}`, payload));
54 | };
55 |
56 | /**
57 | * @description Realizar petición HTTP PUT
58 | * @param {string} endpoint Endpoint de la solicitud
59 | * @param {object} payload Objecto body de la solicitud
60 | * @returns {Promise>}
61 | */
62 | export const put = async (
63 | endpoint: string,
64 | payload: object
65 | ): Promise> => {
66 | return handleRequest(axios.put(`${baseUrl}${endpoint}`, payload));
67 | };
68 |
69 | /**
70 | * @description Realizar petición HTTP PATCH
71 | * @param {string} endpoint Endpoint de la solicitud
72 | * @param {object} payload Objecto body de la solicitud
73 | * @returns {Promise>}
74 | */
75 | export const patch = async (
76 | endpoint: string,
77 | payload: object
78 | ): Promise> => {
79 | return handleRequest(axios.patch(`${baseUrl}${endpoint}`, payload));
80 | };
81 |
--------------------------------------------------------------------------------
/src/components/footer/index.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Componente
3 | */
4 |
5 | import { AiFillFacebook, AiFillInstagram } from "react-icons/ai";
6 |
7 | const Footer = (): JSX.Element => {
8 | const currentYear = new Date().getFullYear().toString();
9 |
10 | return (
11 |
48 | );
49 | };
50 |
51 | export default Footer;
52 |
--------------------------------------------------------------------------------
/src/components/header/index.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Estilos del componente
3 | */
4 |
5 | import { useState } from "react";
6 | import ImgLogo from "@/static/img/logo.png";
7 | import { NavLink } from "react-router-dom";
8 |
9 | const Header = (): JSX.Element => {
10 | const [theme, setTheme] = useState<"light" | "dark">("light");
11 |
12 | // Activar DarkTheme o LightTheme
13 | const handleTheme = (): void => {
14 | const siteDOM = document?.documentElement;
15 |
16 | if (theme === "light") {
17 | setTheme("dark");
18 | siteDOM?.setAttribute("data-theme", "dark");
19 | return;
20 | }
21 |
22 | setTheme("light");
23 | siteDOM?.setAttribute("data-theme", "light");
24 | return;
25 | };
26 |
27 | return (
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
Boilerplate
37 |
38 |
39 |
67 |
68 |
69 | );
70 | };
71 |
72 | export default Header;
73 |
--------------------------------------------------------------------------------
/src/components/nprogress/Bar.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Componente Bar
3 | */
4 |
5 | import type { TypeBarProps } from "@/ts/nprogress";
6 |
7 | const Bar = ({ progress, animationDuration }: TypeBarProps): JSX.Element => (
8 |
34 | );
35 |
36 | export default Bar;
37 |
--------------------------------------------------------------------------------
/src/components/nprogress/Container.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Componente Container
3 | */
4 |
5 | import type { TypeContainerProps } from "@/ts/nprogress";
6 |
7 | const Container = ({
8 | children,
9 | isFinished,
10 | animationDuration,
11 | }: TypeContainerProps): JSX.Element => (
12 |
19 | {children}
20 |
21 | );
22 |
23 | export default Container;
24 |
--------------------------------------------------------------------------------
/src/components/nprogress/Spinner.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Componente Spinner
3 | */
4 |
5 | const Spinner = (): JSX.Element => (
6 |
29 | );
30 |
31 | export default Spinner;
32 |
--------------------------------------------------------------------------------
/src/components/nprogress/index.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Componente Progress
3 | */
4 |
5 | import { Fragment } from "react";
6 | import Bar from "./Bar";
7 | import Spinner from "./Spinner";
8 | import Container from "./Container";
9 | import { useNProgress } from "@tanem/react-nprogress";
10 | import type { TypeProgressProps } from "@/ts/nprogress";
11 |
12 | const Progress = ({ isAnimating }: TypeProgressProps): JSX.Element => {
13 | const { animationDuration, isFinished, progress } = useNProgress({
14 | isAnimating,
15 | });
16 |
17 | return (
18 |
19 |
20 |
21 |
22 |
23 |
24 | );
25 | };
26 | export default Progress;
27 |
--------------------------------------------------------------------------------
/src/main.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Punto de Entrada de React
3 | */
4 |
5 | import React from "react";
6 | import ReactDOM from "react-dom/client";
7 | import App from "./App.tsx";
8 |
9 | // Importar la fuente de IBM Plex Sans
10 | import "@fontsource/ibm-plex-sans/400.css";
11 | import "@fontsource/ibm-plex-sans/500.css";
12 | import "@fontsource/ibm-plex-sans/600.css";
13 | import "@fontsource/ibm-plex-sans/700.css";
14 |
15 | // Importar los estilos globales
16 | import "./sass/style.scss";
17 |
18 | ReactDOM.createRoot(document.getElementById("root")!).render(
19 |
20 |
21 |
22 | );
23 |
--------------------------------------------------------------------------------
/src/pages/Fetching.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Página de /fetch
3 | */
4 |
5 | import { useState, useEffect, Fragment } from "react";
6 | import { get } from "@/api";
7 | import Layout from "./Layout";
8 | import Progress from "@/components/nprogress";
9 | import type { TypeReqResponse, TypeReqResUser } from "@/ts/api";
10 |
11 | const PageFetch = (): JSX.Element => {
12 | const [users, setUsers] = useState([]);
13 | const [isLoading, setIsLoading] = useState(true);
14 |
15 | useEffect(() => {
16 | // Obtener usuarios desde Reqres
17 | const fetchUsers = async (): Promise => {
18 | const { data, error } = await get("/users");
19 |
20 | if (error) {
21 | setUsers([]);
22 | setIsLoading(false);
23 | return;
24 | }
25 |
26 | // Simular tiempo de carga
27 | setTimeout(() => {
28 | setUsers(data?.data ?? []);
29 | setIsLoading(false);
30 | }, 2500);
31 | };
32 |
33 | fetchUsers();
34 | }, []);
35 |
36 | return (
37 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | Data Fetching
51 |
52 | 📡
53 |
54 |
55 |
56 |
57 |
58 |
59 | Edit /utils/http for configure HTTP Client
60 |
61 | {" "}
62 | 💻
63 |
64 |
65 |
66 |
67 |
82 |
83 |
84 | {!isLoading && (
85 |
86 |
87 |
88 |
89 | ID |
90 | Avatar |
91 | Nombre |
92 | Email |
93 |
94 |
95 |
96 | {users?.map((user) => (
97 |
98 | {user?.id} |
99 |
100 |
101 | |
102 | {user?.first_name} |
103 | {user?.email} |
104 |
105 | ))}
106 |
107 |
108 | Lista de usuarios desde Reqres
109 |
110 |
111 |
112 | )}
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 | );
121 | };
122 |
123 | export default PageFetch;
124 |
--------------------------------------------------------------------------------
/src/pages/Index.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Página de /index
3 | */
4 |
5 | import Layout from "./Layout";
6 |
7 | const PageIndex = (): JSX.Element => (
8 |
13 |
14 |
15 |
16 |
17 |
18 | React.js Boilerplate
19 |
20 | ⚛️
21 |
22 |
23 |
24 |
25 |
26 |
27 | Edit everything for fun
28 |
29 | {" "}
30 | 💻
31 |
32 |
33 |
34 |
35 |
36 |
37 | Created and maintained by:{" "}
38 |
39 | Trejocode
40 | {" "}
41 | and the community
42 |
43 |
44 |
45 |
46 |
47 |
48 | );
49 |
50 | export default PageIndex;
51 |
--------------------------------------------------------------------------------
/src/pages/Layout.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Template de las páginas, preparada para SEO.
3 | */
4 |
5 | import { Fragment } from "react";
6 | import Header from "@/components/header";
7 | import Footer from "@/components/footer";
8 | import { Helmet } from "react-helmet-async";
9 | import type { TypeLayoutProps } from "@/ts/layout";
10 |
11 | /**
12 | * @param {string} title - Título de la página
13 | * @param {string} description - Descripción de la página
14 | * @param {string} keywords - Etiquetas para SEO
15 | * @param {JSX.Element} children - Contenido de la página
16 | */
17 | const Layout = ({
18 | title,
19 | keywords,
20 | children,
21 | description,
22 | }: TypeLayoutProps): JSX.Element => {
23 | return (
24 |
25 |
26 |
27 | {title
28 | ? title + " - React Boilerplate"
29 | : "React.js Boilerplate - Trejocode"}{" "}
30 |
31 |
38 |
45 |
46 |
47 | {children}
48 |
49 |
50 | );
51 | };
52 |
53 | export default Layout;
54 |
--------------------------------------------------------------------------------
/src/pages/NotFound.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Página: /404
3 | */
4 |
5 | import Layout from "./Layout";
6 | import { Link } from "react-router-dom";
7 |
8 | const Page404 = (): JSX.Element => (
9 |
13 |
14 |
15 |
16 |
17 |
18 | 404 - Lá página no existe
19 |
20 | ⛑️
21 |
22 |
23 |
24 |
25 |
26 |
Quizá ocurrió un error
27 |
28 |
29 |
30 |
31 | Regresar a:{" "}
32 |
33 | Inicio
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | );
42 |
43 | export default Page404;
44 |
--------------------------------------------------------------------------------
/src/pages/Private.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Página: /private
3 | */
4 |
5 | import Layout from "./Layout";
6 |
7 | const PagePrivate = (): JSX.Element => (
8 |
12 |
13 |
14 |
15 |
16 |
17 | Página Privada
18 |
19 | 🙊
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | );
28 |
29 | export default PagePrivate;
30 |
--------------------------------------------------------------------------------
/src/pages/Restrict.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Página: /restrict
3 | */
4 |
5 | import Layout from "./Layout";
6 |
7 | const PageRestrict = (): JSX.Element => (
8 |
12 |
13 |
14 |
15 |
16 |
17 | Página Restringida
18 |
19 | ㊙️
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | );
28 |
29 | export default PageRestrict;
30 |
--------------------------------------------------------------------------------
/src/routes/Private.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Manejo de todas las rutas privadas
3 | */
4 | import { Navigate } from "react-router-dom";
5 | import { sessionUtils } from "@/utils/session";
6 | import type { TypeChildrenProp } from "@/ts/routes";
7 |
8 | const PrivateRoute = ({ children }: TypeChildrenProp): JSX.Element => {
9 | if (sessionUtils.verifySession()) {
10 | return children;
11 | } else {
12 | return ;
13 | }
14 | };
15 |
16 | export default PrivateRoute;
17 |
--------------------------------------------------------------------------------
/src/routes/Restrict.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Manejo de todas las rutas restringidas
3 | */
4 | import { Navigate } from "react-router-dom";
5 | import { sessionUtils } from "@/utils/session";
6 | import type { TypeChildrenProp } from "@/ts/routes";
7 |
8 | const RestrictRoute = ({ children }: TypeChildrenProp): JSX.Element => {
9 | if (sessionUtils.verifySession()) {
10 | return ;
11 | } else {
12 | return children;
13 | }
14 | };
15 |
16 | export default RestrictRoute;
17 |
--------------------------------------------------------------------------------
/src/routes/index.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @description Manejo de todas las rutas de la aplicación
3 | */
4 |
5 | import { BrowserRouter, Route, Routes } from "react-router-dom";
6 | import PrivateRoute from "./Private";
7 | import RestrictRoute from "./Restrict";
8 |
9 | // Importar todas las páginas de la aplicación
10 | import PageIndex from "@/pages/Index";
11 | import Page404 from "@/pages/NotFound";
12 | import PagePrivate from "@/pages/Private";
13 | import PageFetching from "@/pages/Fetching";
14 | import PageRestrict from "@/pages/Restrict";
15 |
16 | const Router = (): JSX.Element => (
17 |
18 |
19 |
20 |
21 | } errorElement={} />
22 | } />
23 |
27 |
28 |
29 | }
30 | />
31 |
35 |
36 |
37 | }
38 | />
39 | } />
40 |
41 |
42 |
43 |
44 | );
45 |
46 | export default Router;
47 |
--------------------------------------------------------------------------------
/src/sass/components/_footer.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.1
3 | * @author Trejocode - Sergio
4 | * @description Estilos para el componente
5 | */
6 |
7 | footer {
8 |
9 | padding: $paddingLarge 0;
10 | background-color: var(--primary-alt);
11 |
12 | .social {
13 |
14 | justify-content: flex-end;
15 |
16 | a {
17 | padding: 0 $paddingNormal;
18 | }
19 |
20 | }
21 |
22 | @media screen and (max-width: 768px){
23 |
24 | padding: $paddingMedium 0;
25 |
26 | .social, .legend {
27 | margin: $marginNormal 0;
28 | justify-content: center;
29 | }
30 |
31 | }
32 |
33 | }
34 |
35 |
36 | html[data-theme='dark'] {
37 |
38 | footer {
39 | background-color: var(--white);
40 | }
41 |
42 | }
--------------------------------------------------------------------------------
/src/sass/components/_header.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.2
3 | * @author Trejocode - Sergio
4 | * @description Estilos para el componente
5 | */
6 |
7 | header {
8 |
9 | background-color: var(--white);
10 | padding: $paddingMedium 0;
11 | border-bottom: 1px solid #e9e9e9;
12 |
13 | .logo {
14 | h2 { padding-left: $paddingNormal; }
15 | }
16 |
17 | nav {
18 |
19 | justify-content: flex-end;
20 |
21 | .nav-item {
22 |
23 | padding: 0 $paddingMedium;
24 |
25 | }
26 |
27 | .nav-active {
28 | font-weight: $weightBold;
29 | color: var(--primary-alt);
30 | }
31 |
32 |
33 | button {
34 | background-color: transparent;
35 | }
36 |
37 | }
38 |
39 |
40 | @media screen and (max-width: 768px) {
41 |
42 | padding: $paddingMedium 0;
43 |
44 | .logo { justify-content: center; }
45 |
46 | nav {
47 | justify-content: center;
48 | margin-top: $marginMedium;
49 |
50 | .nav-item {
51 | font-size: 0.9rem;
52 | text-align: center;
53 | }
54 |
55 | }
56 | }
57 |
58 | }
59 |
60 |
61 | html[data-theme='dark'] {
62 |
63 | header {
64 | border-bottom: 1px solid #383838;
65 | }
66 |
67 | }
--------------------------------------------------------------------------------
/src/sass/core/_colors.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 2.0.0
3 | * @author Trejocode - Sergio
4 | * @description Base de colores compatible con WCAG AA
5 | */
6 |
7 | :root {
8 |
9 | --primary: #3E816D;
10 | --primary-alt: #288091;
11 | --secondary: #263d54;
12 | --secondary-alt: #516376;
13 | --success: #27ae60;
14 | --warning: #f39c12;
15 | --danger: #c0392b;
16 | --info: #258395;
17 |
18 | --black: #262626;
19 | --white: #FFFFFF;
20 | --gray: #6c6c6c;
21 | --darkgray: #4b4b4b;
22 |
23 | --darkBlue: #263d54;
24 | --darkAqua: #258395;
25 | --aqua: #33c8a3;
26 | --lightBg: #ebf3f5;
27 |
28 | }
29 |
30 | .color-primary {
31 | color: var(--primary);
32 | }
33 |
34 | .color-primary-alt {
35 | color: var(--primary-alt);
36 | }
37 |
38 | .color-secondary {
39 | color: var(--secondary);
40 | }
41 |
42 | .color-secondary-alt {
43 | color: var(--secondary-alt);
44 | }
45 |
46 | .color-success {
47 | color: var(--success);
48 | }
49 |
50 | .color-warning {
51 | color: var(--warning);
52 | }
53 |
54 | .color-danger {
55 | color: var(--danger);
56 | }
57 |
58 | .color-info {
59 | color: var(--info);
60 | }
61 |
62 | .color-gray {
63 | color: var(--gray);
64 | }
65 |
66 | .color-darkgray {
67 | color: var(--darkgray);
68 | }
69 |
70 | .color-black {
71 | color: var(--black);
72 | }
73 |
74 | .color-white {
75 | color: var(--white);
76 | }
77 |
78 | html[data-theme='dark'] {
79 |
80 | --primary: #3E816D;
81 | --primary-alt: #FFFFFF;
82 | --secondary: #FFFFFF;
83 | --secondary-alt: #FFFFFF;
84 | --success: #27ae60;
85 | --warning: #f39c12;
86 | --danger: #c0392b;
87 | --info: #258395;
88 |
89 | --black: #ebebeb;
90 | --white: #0a0a0a;
91 | --gray: #c2c2c2;
92 | --darkgray: #a0a0a0;
93 |
94 | body {
95 | background-color: #2c2c2c;
96 | }
97 |
98 | .color-white {
99 | color: var(--black);
100 | }
101 |
102 |
103 | }
--------------------------------------------------------------------------------
/src/sass/core/_dev.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.1
3 | * @author Trejocode - Sergio
4 | * @description Mixin de desarrollo
5 | */
6 |
7 |
8 | @mixin dev {
9 |
10 | @media screen and (max-width: 992px) {
11 | body { background: gray; }
12 | }
13 |
14 | @media screen and (max-width: 768px) {
15 | body { background: lightgrey; }
16 | }
17 |
18 | @media screen and (max-width: 576px) {
19 | body { background: white; }
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/src/sass/core/_font.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.2
3 | * @author Trejocode - Sergio
4 | * @description Estilos de fuente y tipografía
5 | */
6 |
7 | /* Font families */
8 |
9 | $IBM: 'IBM Plex Sans', sans-serif;
10 |
11 | /* Font sizes */
12 |
13 | $fontMini: 0.8rem;
14 | $fontTiny: 0.9rem;
15 | $fontText: 0.93rem;
16 | $fontSmall: 1rem;
17 | $fontRegular: 1.2rem;
18 | $fontMedium: 1.4rem;
19 | $fontLarge: 1.6rem;
20 | $fontHuge: 1.8rem;
21 | $fontDouble: 2rem;
22 | $fontTriple: 2.5rem;
23 |
24 | .font-triple {
25 | font-size: $fontTriple;
26 | }
27 |
28 | .font-double {
29 | font-size: $fontDouble;
30 | }
31 |
32 | .font-huge {
33 | font-size: $fontHuge;
34 | }
35 |
36 | .font-large {
37 | font-size: $fontLarge;
38 | }
39 |
40 | .font-medium {
41 | font-size: $fontMedium;
42 | }
43 |
44 | .font-regular {
45 | font-size: $fontRegular;
46 | }
47 |
48 | .font-small {
49 | font-size: $fontSmall;
50 | }
51 |
52 | .font-text {
53 | font-size: $fontText;
54 | }
55 |
56 | .font-tiny {
57 | font-size: $fontTiny;
58 | }
59 |
60 | .font-mini {
61 | font-size: $fontMini;
62 | }
63 |
64 |
65 | /* FONT WEIGHTS
66 |
67 | - Based on 'IBM Plex Sans'
68 |
69 | */
70 |
71 |
72 | $weightRegular: 400;
73 | $weightMedium: 500;
74 | $weightSemi: 600;
75 | $weightBold: 700;
76 |
77 | h1, h2, h3, h4, h5, h6, p, a, b, span, th, td, li, caption,
78 | label, strong, legend, em, button, select, option, input, button {
79 | color: var(--black);
80 | font-family: $IBM;
81 | }
82 |
83 | h1 {
84 | font-size: $fontHuge;
85 | font-weight: $weightBold;
86 | }
87 |
88 | h2 {
89 | font-size: $fontLarge;
90 | font-weight: $weightSemi;
91 | }
92 |
93 | h3 {
94 | font-size: $fontMedium;
95 | font-weight: $weightSemi;
96 | }
97 |
98 | h4 {
99 | font-size: $fontRegular;
100 | font-weight: $weightMedium;
101 | }
102 |
103 | h5 {
104 | font-size: $fontSmall;
105 | font-weight: $weightMedium;
106 | }
107 |
108 | h6 {
109 | font-size: $fontText;
110 | font-weight: $weightRegular;
111 | }
112 |
113 | p, a, li, label, caption {
114 | color: var(--gray);
115 | line-height: 1.5rem;
116 | font-size: $fontText;
117 | }
118 |
119 | b, i, span, strong, em {
120 | color: inherit;
121 | font-size: inherit;
122 | }
123 |
124 | .uppercase {
125 | text-transform: uppercase;
126 | }
127 |
128 | .underline {
129 | text-decoration: underline;
130 | }
131 |
132 |
133 | .weight-regular {
134 | font-weight: $weightRegular;
135 | }
136 |
137 | .weight-medium {
138 | font-weight: $weightMedium;
139 | }
140 |
141 | .weight-semi {
142 | font-weight: $weightSemi;
143 | }
144 |
145 | .weight-bold {
146 | font-weight: $weightBold;
147 | }
148 |
149 |
150 | ::selection {
151 | color: var(--secondary);
152 | background-color: var(--primary);
153 | }
154 |
155 | @media screen and (max-width: 768px) {
156 |
157 | .font-triple { font-size: $fontDouble; }
158 |
159 | .font-double { font-size: $fontLarge; }
160 |
161 | }
--------------------------------------------------------------------------------
/src/sass/core/_spacing.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.1
3 | * @author Trejocode - Sergio
4 | * @description: Espacios en blanco, margenes y paddings
5 | */
6 |
7 | /* Paddings */
8 |
9 | $paddingNormal: 8px;
10 | $paddingMedium: 16px;
11 | $paddingSemi: 24px;
12 | $paddingLarge: 32px;
13 | $paddingHuge: 48px;
14 |
15 |
16 | /* Margins */
17 |
18 | $marginNormal: 8px;
19 | $marginMedium: 16px;
20 | $marginSemi: 24px;
21 | $marginLarge: 32px;
22 | $marginHuge: 48px;
23 |
24 |
25 | /* Whitespaces */
26 |
27 | .white-space-4 { height: 4px; }
28 |
29 | .white-space-8 { height: 8px; }
30 |
31 | .white-space-16 { height: 16px; }
32 |
33 | .white-space-24 { height: 24px; }
34 |
35 | .white-space-32 { height: 32px; }
36 |
37 | .white-space-48 { height: 48px; }
38 |
39 | .white-space-64 { height: 64px; }
40 |
--------------------------------------------------------------------------------
/src/sass/core/_trejocode.scss:
--------------------------------------------------------------------------------
1 |
2 |
3 | /* INFORMATION
4 | =============================
5 |
6 | - File: core.css
7 | - Versión: 1.3.2
8 | - Licence: Mozilla Public Licence.
9 | - Author: Trejocode
10 | - Update: 25/02/2020
11 | - Client: You <3
12 | */
13 |
14 | /* RESET
15 | =============================
16 | - These properties able the cross compatibility for browsers and removes default properties from browsers.
17 | */
18 |
19 | * {
20 | margin: 0;
21 | padding: 0;
22 | }
23 |
24 | html {
25 | font-size: 100%;
26 | }
27 |
28 | *, *:before, *:after {
29 | box-sizing: border-box;
30 | }
31 |
32 | body {
33 | overflow-x: hidden;
34 | background-color: #F6F6F6;
35 | }
36 |
37 | iframe { border: none; }
38 |
39 | input, textarea, select, option, button {
40 | margin: 0;
41 | border: 0;
42 | padding: 0;
43 | }
44 |
45 | table {
46 | border-spacing: 0;
47 | overflow-x: auto;
48 | }
49 |
50 | table th {
51 | white-space: nowrap;
52 | }
53 |
54 | a {
55 | color: inherit;
56 | word-break: keep-all;
57 | text-decoration: none;
58 | align-self: flex-start;
59 | }
60 |
61 | img {
62 | max-width: 100%;
63 | height: auto;
64 | }
65 |
66 |
67 | /* CLASES
68 | =============================
69 | 1. = FLEX LAYOUT
70 | 2. = ALIGNMENT
71 | 3. = WHITE SPACES
72 | 4. = TABLES
73 | 5. = IMAGES
74 | 6. = DECORATORS & COLORS
75 | */
76 |
77 |
78 | /* FLEX LAYOUT
79 | - This stylesheet is based on flexbox.
80 | - W3 CSS Flexible Box Layout Module:
81 | https://www.w3.org/TR/css-flexbox-1
82 |
83 | */
84 |
85 | .flex {
86 | width: 100%;
87 | display: flex;
88 | }
89 |
90 | .responsive-img {
91 | display: flex;
92 | justify-content: flex-start;
93 | align-items: flex-start;
94 | }
95 |
96 | .row {
97 | display: flex;
98 | flex-direction: row;
99 | }
100 |
101 | .row-responsive {
102 | display: flex;
103 | flex-direction: row;
104 | }
105 |
106 | .row-responsive-reverse {
107 | display: flex;
108 | flex-direction: row;
109 | }
110 |
111 | .column {
112 | display: flex;
113 | flex-direction: column;
114 | }
115 |
116 | .wrap {
117 | display: flex;
118 | flex-wrap: wrap;
119 | }
120 |
121 | .nowrap {
122 | display: flex;
123 | flex-wrap: nowrap;
124 | }
125 |
126 |
127 | /* ALIGNMENT */
128 |
129 |
130 | .justify-center {
131 | display: flex;
132 | justify-content: center;
133 | }
134 |
135 | .justify-start {
136 | display: flex;
137 | justify-content: flex-start;
138 | }
139 |
140 | .justify-end {
141 | display: flex;
142 | justify-content: flex-end;
143 | }
144 |
145 | .justify-between {
146 | display: flex;
147 | justify-content: space-between;
148 | }
149 |
150 | .justify-arround {
151 | display: flex;
152 | justify-content: space-around;
153 | }
154 |
155 | .align-center {
156 | display: flex;
157 | align-items: center;
158 | }
159 |
160 | .align-start {
161 | display: flex;
162 | align-items: flex-start;
163 | }
164 |
165 | .align-end {
166 | display: flex;
167 | align-items: flex-end;
168 | }
169 |
170 | .auto {
171 | width: auto;
172 | display: flex;
173 | }
174 |
175 | .full {
176 | width: 100%;
177 | display: flex;
178 | }
179 |
180 | .container {
181 | width: 90%;
182 | display: flex;
183 | }
184 |
185 |
186 | /* TEXT ALIGNMENT */
187 |
188 |
189 | .text-left {
190 | text-align: left;
191 | }
192 |
193 | .text-center {
194 | text-align: center;
195 | }
196 |
197 | .text-justify {
198 | text-align: justify;
199 | }
200 |
201 | .text-right {
202 | text-align: right;
203 | }
204 |
205 |
206 | /* TABLES */
207 |
208 | table {
209 | caption {
210 | margin-bottom: 8px;
211 | }
212 | }
213 |
214 | .table-responsive {
215 | overflow-x: auto;
216 | }
217 |
218 | .table-responsive table{
219 | width: 100%;
220 | }
221 |
222 | .table-auto {
223 | table-layout: auto;
224 | }
225 |
226 | .table-equal {
227 | table-layout: fixed;
228 | }
229 |
230 |
231 | /* IMAGES */
232 |
233 | .cover-img {
234 | object-fit: cover;
235 | }
236 |
237 | .contain-img {
238 | object-fit: contain;
239 | }
240 |
241 |
242 | /* DECORATORS */
243 |
244 | .hidden {
245 | display: none !important;
246 | }
247 |
248 | .cursor-pointer {
249 | cursor: pointer;
250 | }
251 |
252 | .grid {
253 | display: grid;
254 | }
255 |
256 |
257 |
258 | /* LARGE DEVICES */
259 |
260 | @media screen and (min-width: 1440px) {
261 |
262 | .container {
263 | max-width: 1300px;
264 | }
265 |
266 | }
267 |
268 | /* TABLETS DEVICES */
269 |
270 | @media screen and (max-width: 768px) {
271 |
272 | .row-responsive {
273 | flex-direction: column;
274 | }
275 |
276 | .row-responsive-reverse {
277 | flex-direction: column-reverse;
278 | }
279 |
280 | .white-space-64 {
281 | height: 48px;
282 | }
283 |
284 | }
285 |
286 | /* MOBILE DEVICES */
287 |
288 | @media screen and (max-width: 576px) {
289 | .container {
290 | width: 92%;
291 | }
292 | }
--------------------------------------------------------------------------------
/src/sass/helpers/_bg.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.1
3 | * @author Trejocode - Sergio
4 | * @description Mixin para bakcgroundImages
5 | */
6 |
7 | @mixin backgroundImage {
8 | background-size: cover;
9 | background-position: center;
10 | background-repeat: no-repeat;
11 | }
--------------------------------------------------------------------------------
/src/sass/helpers/_iframe.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * @version 1.0.1
3 | * @author Trejocode - Sergio
4 | * @description Habilita los