├── .gitignore
├── index.html
├── package-lock.json
├── package.json
├── src
├── App.jsx
├── App.scss
├── assets
│ └── images
│ │ ├── 1.png
│ │ ├── 10.png
│ │ ├── 11.png
│ │ ├── 12.png
│ │ ├── 13.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5.png
│ │ ├── 6.png
│ │ ├── 7.png
│ │ ├── 8.png
│ │ ├── 9.png
│ │ ├── friend.png
│ │ ├── img.png
│ │ ├── login3.jpg
│ │ └── map.png
├── components
│ ├── leftBar
│ │ ├── LeftBar.jsx
│ │ └── leftbar.scss
│ ├── navBar
│ │ ├── NavBar.jsx
│ │ └── navbar.scss
│ ├── posts
│ │ ├── Posts.jsx
│ │ ├── comments
│ │ │ ├── Comments.jsx
│ │ │ └── comments.scss
│ │ ├── post
│ │ │ ├── Post.jsx
│ │ │ └── post.scss
│ │ └── posts.scss
│ ├── rightBar
│ │ ├── RightBar.jsx
│ │ └── rightbar.scss
│ └── stories
│ │ ├── Story.jsx
│ │ └── story.scss
├── context
│ ├── AuthContext.jsx
│ └── DarkModeContext.jsx
├── data
│ ├── commentsData.jsx
│ ├── postsData.jsx
│ └── storyData.jsx
├── index.css
├── main.jsx
├── pages
│ ├── home
│ │ ├── Home.jsx
│ │ └── home.scss
│ ├── login
│ │ ├── Login.jsx
│ │ └── login.scss
│ ├── profile
│ │ ├── Profile.jsx
│ │ └── profile.scss
│ └── register
│ │ ├── Register.jsx
│ │ └── register.scss
└── scroll
│ └── scrollToTop.jsx
└── vite.config.js
/.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 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | React Social
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "social-media",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "social-media",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "@emotion/react": "^11.10.5",
12 | "@emotion/styled": "^11.10.5",
13 | "@mui/icons-material": "^5.10.16",
14 | "@mui/material": "^5.10.17",
15 | "react": "^18.2.0",
16 | "react-dom": "^18.2.0",
17 | "react-router-dom": "^6.4.5",
18 | "scss": "^0.2.4",
19 | "styled-components": "^5.3.6"
20 | },
21 | "devDependencies": {
22 | "@types/react": "^18.0.24",
23 | "@types/react-dom": "^18.0.8",
24 | "@vitejs/plugin-react": "^2.2.0",
25 | "sass": "^1.56.2",
26 | "vite": "^3.2.3"
27 | }
28 | },
29 | "node_modules/@ampproject/remapping": {
30 | "version": "2.2.0",
31 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
32 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
33 | "dependencies": {
34 | "@jridgewell/gen-mapping": "^0.1.0",
35 | "@jridgewell/trace-mapping": "^0.3.9"
36 | },
37 | "engines": {
38 | "node": ">=6.0.0"
39 | }
40 | },
41 | "node_modules/@babel/code-frame": {
42 | "version": "7.18.6",
43 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
44 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
45 | "dependencies": {
46 | "@babel/highlight": "^7.18.6"
47 | },
48 | "engines": {
49 | "node": ">=6.9.0"
50 | }
51 | },
52 | "node_modules/@babel/compat-data": {
53 | "version": "7.20.5",
54 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
55 | "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
56 | "engines": {
57 | "node": ">=6.9.0"
58 | }
59 | },
60 | "node_modules/@babel/core": {
61 | "version": "7.20.5",
62 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
63 | "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
64 | "dependencies": {
65 | "@ampproject/remapping": "^2.1.0",
66 | "@babel/code-frame": "^7.18.6",
67 | "@babel/generator": "^7.20.5",
68 | "@babel/helper-compilation-targets": "^7.20.0",
69 | "@babel/helper-module-transforms": "^7.20.2",
70 | "@babel/helpers": "^7.20.5",
71 | "@babel/parser": "^7.20.5",
72 | "@babel/template": "^7.18.10",
73 | "@babel/traverse": "^7.20.5",
74 | "@babel/types": "^7.20.5",
75 | "convert-source-map": "^1.7.0",
76 | "debug": "^4.1.0",
77 | "gensync": "^1.0.0-beta.2",
78 | "json5": "^2.2.1",
79 | "semver": "^6.3.0"
80 | },
81 | "engines": {
82 | "node": ">=6.9.0"
83 | },
84 | "funding": {
85 | "type": "opencollective",
86 | "url": "https://opencollective.com/babel"
87 | }
88 | },
89 | "node_modules/@babel/generator": {
90 | "version": "7.20.5",
91 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
92 | "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
93 | "dependencies": {
94 | "@babel/types": "^7.20.5",
95 | "@jridgewell/gen-mapping": "^0.3.2",
96 | "jsesc": "^2.5.1"
97 | },
98 | "engines": {
99 | "node": ">=6.9.0"
100 | }
101 | },
102 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
103 | "version": "0.3.2",
104 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
105 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
106 | "dependencies": {
107 | "@jridgewell/set-array": "^1.0.1",
108 | "@jridgewell/sourcemap-codec": "^1.4.10",
109 | "@jridgewell/trace-mapping": "^0.3.9"
110 | },
111 | "engines": {
112 | "node": ">=6.0.0"
113 | }
114 | },
115 | "node_modules/@babel/helper-annotate-as-pure": {
116 | "version": "7.18.6",
117 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
118 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
119 | "dependencies": {
120 | "@babel/types": "^7.18.6"
121 | },
122 | "engines": {
123 | "node": ">=6.9.0"
124 | }
125 | },
126 | "node_modules/@babel/helper-compilation-targets": {
127 | "version": "7.20.0",
128 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
129 | "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
130 | "dependencies": {
131 | "@babel/compat-data": "^7.20.0",
132 | "@babel/helper-validator-option": "^7.18.6",
133 | "browserslist": "^4.21.3",
134 | "semver": "^6.3.0"
135 | },
136 | "engines": {
137 | "node": ">=6.9.0"
138 | },
139 | "peerDependencies": {
140 | "@babel/core": "^7.0.0"
141 | }
142 | },
143 | "node_modules/@babel/helper-environment-visitor": {
144 | "version": "7.18.9",
145 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
146 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
147 | "engines": {
148 | "node": ">=6.9.0"
149 | }
150 | },
151 | "node_modules/@babel/helper-function-name": {
152 | "version": "7.19.0",
153 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
154 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
155 | "dependencies": {
156 | "@babel/template": "^7.18.10",
157 | "@babel/types": "^7.19.0"
158 | },
159 | "engines": {
160 | "node": ">=6.9.0"
161 | }
162 | },
163 | "node_modules/@babel/helper-hoist-variables": {
164 | "version": "7.18.6",
165 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
166 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
167 | "dependencies": {
168 | "@babel/types": "^7.18.6"
169 | },
170 | "engines": {
171 | "node": ">=6.9.0"
172 | }
173 | },
174 | "node_modules/@babel/helper-module-imports": {
175 | "version": "7.18.6",
176 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
177 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
178 | "dependencies": {
179 | "@babel/types": "^7.18.6"
180 | },
181 | "engines": {
182 | "node": ">=6.9.0"
183 | }
184 | },
185 | "node_modules/@babel/helper-module-transforms": {
186 | "version": "7.20.2",
187 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
188 | "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
189 | "dependencies": {
190 | "@babel/helper-environment-visitor": "^7.18.9",
191 | "@babel/helper-module-imports": "^7.18.6",
192 | "@babel/helper-simple-access": "^7.20.2",
193 | "@babel/helper-split-export-declaration": "^7.18.6",
194 | "@babel/helper-validator-identifier": "^7.19.1",
195 | "@babel/template": "^7.18.10",
196 | "@babel/traverse": "^7.20.1",
197 | "@babel/types": "^7.20.2"
198 | },
199 | "engines": {
200 | "node": ">=6.9.0"
201 | }
202 | },
203 | "node_modules/@babel/helper-plugin-utils": {
204 | "version": "7.20.2",
205 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
206 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
207 | "engines": {
208 | "node": ">=6.9.0"
209 | }
210 | },
211 | "node_modules/@babel/helper-simple-access": {
212 | "version": "7.20.2",
213 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
214 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
215 | "dependencies": {
216 | "@babel/types": "^7.20.2"
217 | },
218 | "engines": {
219 | "node": ">=6.9.0"
220 | }
221 | },
222 | "node_modules/@babel/helper-split-export-declaration": {
223 | "version": "7.18.6",
224 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
225 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
226 | "dependencies": {
227 | "@babel/types": "^7.18.6"
228 | },
229 | "engines": {
230 | "node": ">=6.9.0"
231 | }
232 | },
233 | "node_modules/@babel/helper-string-parser": {
234 | "version": "7.19.4",
235 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
236 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
237 | "engines": {
238 | "node": ">=6.9.0"
239 | }
240 | },
241 | "node_modules/@babel/helper-validator-identifier": {
242 | "version": "7.19.1",
243 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
244 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
245 | "engines": {
246 | "node": ">=6.9.0"
247 | }
248 | },
249 | "node_modules/@babel/helper-validator-option": {
250 | "version": "7.18.6",
251 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
252 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
253 | "engines": {
254 | "node": ">=6.9.0"
255 | }
256 | },
257 | "node_modules/@babel/helpers": {
258 | "version": "7.20.6",
259 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
260 | "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
261 | "dependencies": {
262 | "@babel/template": "^7.18.10",
263 | "@babel/traverse": "^7.20.5",
264 | "@babel/types": "^7.20.5"
265 | },
266 | "engines": {
267 | "node": ">=6.9.0"
268 | }
269 | },
270 | "node_modules/@babel/highlight": {
271 | "version": "7.18.6",
272 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
273 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
274 | "dependencies": {
275 | "@babel/helper-validator-identifier": "^7.18.6",
276 | "chalk": "^2.0.0",
277 | "js-tokens": "^4.0.0"
278 | },
279 | "engines": {
280 | "node": ">=6.9.0"
281 | }
282 | },
283 | "node_modules/@babel/parser": {
284 | "version": "7.20.5",
285 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
286 | "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
287 | "bin": {
288 | "parser": "bin/babel-parser.js"
289 | },
290 | "engines": {
291 | "node": ">=6.0.0"
292 | }
293 | },
294 | "node_modules/@babel/plugin-syntax-jsx": {
295 | "version": "7.18.6",
296 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
297 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
298 | "dependencies": {
299 | "@babel/helper-plugin-utils": "^7.18.6"
300 | },
301 | "engines": {
302 | "node": ">=6.9.0"
303 | },
304 | "peerDependencies": {
305 | "@babel/core": "^7.0.0-0"
306 | }
307 | },
308 | "node_modules/@babel/plugin-transform-react-jsx": {
309 | "version": "7.19.0",
310 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz",
311 | "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==",
312 | "dev": true,
313 | "dependencies": {
314 | "@babel/helper-annotate-as-pure": "^7.18.6",
315 | "@babel/helper-module-imports": "^7.18.6",
316 | "@babel/helper-plugin-utils": "^7.19.0",
317 | "@babel/plugin-syntax-jsx": "^7.18.6",
318 | "@babel/types": "^7.19.0"
319 | },
320 | "engines": {
321 | "node": ">=6.9.0"
322 | },
323 | "peerDependencies": {
324 | "@babel/core": "^7.0.0-0"
325 | }
326 | },
327 | "node_modules/@babel/plugin-transform-react-jsx-development": {
328 | "version": "7.18.6",
329 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
330 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
331 | "dev": true,
332 | "dependencies": {
333 | "@babel/plugin-transform-react-jsx": "^7.18.6"
334 | },
335 | "engines": {
336 | "node": ">=6.9.0"
337 | },
338 | "peerDependencies": {
339 | "@babel/core": "^7.0.0-0"
340 | }
341 | },
342 | "node_modules/@babel/plugin-transform-react-jsx-self": {
343 | "version": "7.18.6",
344 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
345 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
346 | "dev": true,
347 | "dependencies": {
348 | "@babel/helper-plugin-utils": "^7.18.6"
349 | },
350 | "engines": {
351 | "node": ">=6.9.0"
352 | },
353 | "peerDependencies": {
354 | "@babel/core": "^7.0.0-0"
355 | }
356 | },
357 | "node_modules/@babel/plugin-transform-react-jsx-source": {
358 | "version": "7.19.6",
359 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
360 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
361 | "dev": true,
362 | "dependencies": {
363 | "@babel/helper-plugin-utils": "^7.19.0"
364 | },
365 | "engines": {
366 | "node": ">=6.9.0"
367 | },
368 | "peerDependencies": {
369 | "@babel/core": "^7.0.0-0"
370 | }
371 | },
372 | "node_modules/@babel/runtime": {
373 | "version": "7.20.6",
374 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz",
375 | "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==",
376 | "dependencies": {
377 | "regenerator-runtime": "^0.13.11"
378 | },
379 | "engines": {
380 | "node": ">=6.9.0"
381 | }
382 | },
383 | "node_modules/@babel/template": {
384 | "version": "7.18.10",
385 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
386 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
387 | "dependencies": {
388 | "@babel/code-frame": "^7.18.6",
389 | "@babel/parser": "^7.18.10",
390 | "@babel/types": "^7.18.10"
391 | },
392 | "engines": {
393 | "node": ">=6.9.0"
394 | }
395 | },
396 | "node_modules/@babel/traverse": {
397 | "version": "7.20.5",
398 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
399 | "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
400 | "dependencies": {
401 | "@babel/code-frame": "^7.18.6",
402 | "@babel/generator": "^7.20.5",
403 | "@babel/helper-environment-visitor": "^7.18.9",
404 | "@babel/helper-function-name": "^7.19.0",
405 | "@babel/helper-hoist-variables": "^7.18.6",
406 | "@babel/helper-split-export-declaration": "^7.18.6",
407 | "@babel/parser": "^7.20.5",
408 | "@babel/types": "^7.20.5",
409 | "debug": "^4.1.0",
410 | "globals": "^11.1.0"
411 | },
412 | "engines": {
413 | "node": ">=6.9.0"
414 | }
415 | },
416 | "node_modules/@babel/types": {
417 | "version": "7.20.5",
418 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
419 | "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
420 | "dependencies": {
421 | "@babel/helper-string-parser": "^7.19.4",
422 | "@babel/helper-validator-identifier": "^7.19.1",
423 | "to-fast-properties": "^2.0.0"
424 | },
425 | "engines": {
426 | "node": ">=6.9.0"
427 | }
428 | },
429 | "node_modules/@emotion/babel-plugin": {
430 | "version": "11.10.5",
431 | "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz",
432 | "integrity": "sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==",
433 | "dependencies": {
434 | "@babel/helper-module-imports": "^7.16.7",
435 | "@babel/plugin-syntax-jsx": "^7.17.12",
436 | "@babel/runtime": "^7.18.3",
437 | "@emotion/hash": "^0.9.0",
438 | "@emotion/memoize": "^0.8.0",
439 | "@emotion/serialize": "^1.1.1",
440 | "babel-plugin-macros": "^3.1.0",
441 | "convert-source-map": "^1.5.0",
442 | "escape-string-regexp": "^4.0.0",
443 | "find-root": "^1.1.0",
444 | "source-map": "^0.5.7",
445 | "stylis": "4.1.3"
446 | },
447 | "peerDependencies": {
448 | "@babel/core": "^7.0.0"
449 | }
450 | },
451 | "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
452 | "version": "4.0.0",
453 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
454 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
455 | "engines": {
456 | "node": ">=10"
457 | },
458 | "funding": {
459 | "url": "https://github.com/sponsors/sindresorhus"
460 | }
461 | },
462 | "node_modules/@emotion/cache": {
463 | "version": "11.10.5",
464 | "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz",
465 | "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==",
466 | "dependencies": {
467 | "@emotion/memoize": "^0.8.0",
468 | "@emotion/sheet": "^1.2.1",
469 | "@emotion/utils": "^1.2.0",
470 | "@emotion/weak-memoize": "^0.3.0",
471 | "stylis": "4.1.3"
472 | }
473 | },
474 | "node_modules/@emotion/hash": {
475 | "version": "0.9.0",
476 | "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
477 | "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
478 | },
479 | "node_modules/@emotion/is-prop-valid": {
480 | "version": "1.2.0",
481 | "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
482 | "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
483 | "dependencies": {
484 | "@emotion/memoize": "^0.8.0"
485 | }
486 | },
487 | "node_modules/@emotion/memoize": {
488 | "version": "0.8.0",
489 | "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
490 | "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
491 | },
492 | "node_modules/@emotion/react": {
493 | "version": "11.10.5",
494 | "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.5.tgz",
495 | "integrity": "sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==",
496 | "dependencies": {
497 | "@babel/runtime": "^7.18.3",
498 | "@emotion/babel-plugin": "^11.10.5",
499 | "@emotion/cache": "^11.10.5",
500 | "@emotion/serialize": "^1.1.1",
501 | "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
502 | "@emotion/utils": "^1.2.0",
503 | "@emotion/weak-memoize": "^0.3.0",
504 | "hoist-non-react-statics": "^3.3.1"
505 | },
506 | "peerDependencies": {
507 | "@babel/core": "^7.0.0",
508 | "react": ">=16.8.0"
509 | },
510 | "peerDependenciesMeta": {
511 | "@babel/core": {
512 | "optional": true
513 | },
514 | "@types/react": {
515 | "optional": true
516 | }
517 | }
518 | },
519 | "node_modules/@emotion/serialize": {
520 | "version": "1.1.1",
521 | "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz",
522 | "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==",
523 | "dependencies": {
524 | "@emotion/hash": "^0.9.0",
525 | "@emotion/memoize": "^0.8.0",
526 | "@emotion/unitless": "^0.8.0",
527 | "@emotion/utils": "^1.2.0",
528 | "csstype": "^3.0.2"
529 | }
530 | },
531 | "node_modules/@emotion/serialize/node_modules/@emotion/unitless": {
532 | "version": "0.8.0",
533 | "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
534 | "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
535 | },
536 | "node_modules/@emotion/sheet": {
537 | "version": "1.2.1",
538 | "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz",
539 | "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA=="
540 | },
541 | "node_modules/@emotion/styled": {
542 | "version": "11.10.5",
543 | "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.5.tgz",
544 | "integrity": "sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==",
545 | "dependencies": {
546 | "@babel/runtime": "^7.18.3",
547 | "@emotion/babel-plugin": "^11.10.5",
548 | "@emotion/is-prop-valid": "^1.2.0",
549 | "@emotion/serialize": "^1.1.1",
550 | "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
551 | "@emotion/utils": "^1.2.0"
552 | },
553 | "peerDependencies": {
554 | "@babel/core": "^7.0.0",
555 | "@emotion/react": "^11.0.0-rc.0",
556 | "react": ">=16.8.0"
557 | },
558 | "peerDependenciesMeta": {
559 | "@babel/core": {
560 | "optional": true
561 | },
562 | "@types/react": {
563 | "optional": true
564 | }
565 | }
566 | },
567 | "node_modules/@emotion/stylis": {
568 | "version": "0.8.5",
569 | "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
570 | "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
571 | },
572 | "node_modules/@emotion/unitless": {
573 | "version": "0.7.5",
574 | "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
575 | "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
576 | },
577 | "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
578 | "version": "1.0.0",
579 | "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
580 | "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
581 | "peerDependencies": {
582 | "react": ">=16.8.0"
583 | }
584 | },
585 | "node_modules/@emotion/utils": {
586 | "version": "1.2.0",
587 | "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
588 | "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
589 | },
590 | "node_modules/@emotion/weak-memoize": {
591 | "version": "0.3.0",
592 | "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
593 | "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
594 | },
595 | "node_modules/@esbuild/android-arm": {
596 | "version": "0.15.18",
597 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
598 | "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
599 | "cpu": [
600 | "arm"
601 | ],
602 | "dev": true,
603 | "optional": true,
604 | "os": [
605 | "android"
606 | ],
607 | "engines": {
608 | "node": ">=12"
609 | }
610 | },
611 | "node_modules/@esbuild/linux-loong64": {
612 | "version": "0.15.18",
613 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
614 | "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
615 | "cpu": [
616 | "loong64"
617 | ],
618 | "dev": true,
619 | "optional": true,
620 | "os": [
621 | "linux"
622 | ],
623 | "engines": {
624 | "node": ">=12"
625 | }
626 | },
627 | "node_modules/@jridgewell/gen-mapping": {
628 | "version": "0.1.1",
629 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
630 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
631 | "dependencies": {
632 | "@jridgewell/set-array": "^1.0.0",
633 | "@jridgewell/sourcemap-codec": "^1.4.10"
634 | },
635 | "engines": {
636 | "node": ">=6.0.0"
637 | }
638 | },
639 | "node_modules/@jridgewell/resolve-uri": {
640 | "version": "3.1.0",
641 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
642 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
643 | "engines": {
644 | "node": ">=6.0.0"
645 | }
646 | },
647 | "node_modules/@jridgewell/set-array": {
648 | "version": "1.1.2",
649 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
650 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
651 | "engines": {
652 | "node": ">=6.0.0"
653 | }
654 | },
655 | "node_modules/@jridgewell/sourcemap-codec": {
656 | "version": "1.4.14",
657 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
658 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
659 | },
660 | "node_modules/@jridgewell/trace-mapping": {
661 | "version": "0.3.17",
662 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
663 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
664 | "dependencies": {
665 | "@jridgewell/resolve-uri": "3.1.0",
666 | "@jridgewell/sourcemap-codec": "1.4.14"
667 | }
668 | },
669 | "node_modules/@mui/base": {
670 | "version": "5.0.0-alpha.109",
671 | "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.109.tgz",
672 | "integrity": "sha512-UQxoONPI3ntzxcD/cbFHl+Lp2xsVj6HpKmU9QhUZ2kZ2K2yej2QJyU1gnADoWl/Hu94VrvwSSRnjTjR3HvXO/g==",
673 | "dependencies": {
674 | "@babel/runtime": "^7.20.1",
675 | "@emotion/is-prop-valid": "^1.2.0",
676 | "@mui/types": "^7.2.2",
677 | "@mui/utils": "^5.10.16",
678 | "@popperjs/core": "^2.11.6",
679 | "clsx": "^1.2.1",
680 | "prop-types": "^15.8.1",
681 | "react-is": "^18.2.0"
682 | },
683 | "engines": {
684 | "node": ">=12.0.0"
685 | },
686 | "funding": {
687 | "type": "opencollective",
688 | "url": "https://opencollective.com/mui"
689 | },
690 | "peerDependencies": {
691 | "@types/react": "^17.0.0 || ^18.0.0",
692 | "react": "^17.0.0 || ^18.0.0",
693 | "react-dom": "^17.0.0 || ^18.0.0"
694 | },
695 | "peerDependenciesMeta": {
696 | "@types/react": {
697 | "optional": true
698 | }
699 | }
700 | },
701 | "node_modules/@mui/core-downloads-tracker": {
702 | "version": "5.10.17",
703 | "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.17.tgz",
704 | "integrity": "sha512-iNwUuMA30nrN0tiEkeD3zaczv7Tk2jlZIDbXRnijAsYXkZtl/xEzQsVRIPYRDuyEz6D18vQJhV8h7gPUXEubTg==",
705 | "funding": {
706 | "type": "opencollective",
707 | "url": "https://opencollective.com/mui"
708 | }
709 | },
710 | "node_modules/@mui/icons-material": {
711 | "version": "5.10.16",
712 | "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz",
713 | "integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==",
714 | "dependencies": {
715 | "@babel/runtime": "^7.20.1"
716 | },
717 | "engines": {
718 | "node": ">=12.0.0"
719 | },
720 | "funding": {
721 | "type": "opencollective",
722 | "url": "https://opencollective.com/mui"
723 | },
724 | "peerDependencies": {
725 | "@mui/material": "^5.0.0",
726 | "@types/react": "^17.0.0 || ^18.0.0",
727 | "react": "^17.0.0 || ^18.0.0"
728 | },
729 | "peerDependenciesMeta": {
730 | "@types/react": {
731 | "optional": true
732 | }
733 | }
734 | },
735 | "node_modules/@mui/material": {
736 | "version": "5.10.17",
737 | "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.17.tgz",
738 | "integrity": "sha512-Kuqgv1qI5HXnc/Xu426xhCGYBSKzplb+xFNLitbnIb92Qx8jmcpfNpFlDJa2kD2H6qP66rr/m4c/zMUfGX/xBQ==",
739 | "dependencies": {
740 | "@babel/runtime": "^7.20.1",
741 | "@mui/base": "5.0.0-alpha.109",
742 | "@mui/core-downloads-tracker": "^5.10.17",
743 | "@mui/system": "^5.10.17",
744 | "@mui/types": "^7.2.2",
745 | "@mui/utils": "^5.10.16",
746 | "@types/react-transition-group": "^4.4.5",
747 | "clsx": "^1.2.1",
748 | "csstype": "^3.1.1",
749 | "prop-types": "^15.8.1",
750 | "react-is": "^18.2.0",
751 | "react-transition-group": "^4.4.5"
752 | },
753 | "engines": {
754 | "node": ">=12.0.0"
755 | },
756 | "funding": {
757 | "type": "opencollective",
758 | "url": "https://opencollective.com/mui"
759 | },
760 | "peerDependencies": {
761 | "@emotion/react": "^11.5.0",
762 | "@emotion/styled": "^11.3.0",
763 | "@types/react": "^17.0.0 || ^18.0.0",
764 | "react": "^17.0.0 || ^18.0.0",
765 | "react-dom": "^17.0.0 || ^18.0.0"
766 | },
767 | "peerDependenciesMeta": {
768 | "@emotion/react": {
769 | "optional": true
770 | },
771 | "@emotion/styled": {
772 | "optional": true
773 | },
774 | "@types/react": {
775 | "optional": true
776 | }
777 | }
778 | },
779 | "node_modules/@mui/private-theming": {
780 | "version": "5.10.16",
781 | "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz",
782 | "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==",
783 | "dependencies": {
784 | "@babel/runtime": "^7.20.1",
785 | "@mui/utils": "^5.10.16",
786 | "prop-types": "^15.8.1"
787 | },
788 | "engines": {
789 | "node": ">=12.0.0"
790 | },
791 | "funding": {
792 | "type": "opencollective",
793 | "url": "https://opencollective.com/mui"
794 | },
795 | "peerDependencies": {
796 | "@types/react": "^17.0.0 || ^18.0.0",
797 | "react": "^17.0.0 || ^18.0.0"
798 | },
799 | "peerDependenciesMeta": {
800 | "@types/react": {
801 | "optional": true
802 | }
803 | }
804 | },
805 | "node_modules/@mui/styled-engine": {
806 | "version": "5.10.16",
807 | "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz",
808 | "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==",
809 | "dependencies": {
810 | "@babel/runtime": "^7.20.1",
811 | "@emotion/cache": "^11.10.5",
812 | "csstype": "^3.1.1",
813 | "prop-types": "^15.8.1"
814 | },
815 | "engines": {
816 | "node": ">=12.0.0"
817 | },
818 | "funding": {
819 | "type": "opencollective",
820 | "url": "https://opencollective.com/mui"
821 | },
822 | "peerDependencies": {
823 | "@emotion/react": "^11.4.1",
824 | "@emotion/styled": "^11.3.0",
825 | "react": "^17.0.0 || ^18.0.0"
826 | },
827 | "peerDependenciesMeta": {
828 | "@emotion/react": {
829 | "optional": true
830 | },
831 | "@emotion/styled": {
832 | "optional": true
833 | }
834 | }
835 | },
836 | "node_modules/@mui/system": {
837 | "version": "5.10.17",
838 | "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.17.tgz",
839 | "integrity": "sha512-UYzAOSK7uxkMsUssqrIUW3lnOuQpU8vqh4hLwfSw+GYAnQo3qjK4m4NhlDx+pFpsjjiGnr3K+vrSH+aIAMbcLg==",
840 | "dependencies": {
841 | "@babel/runtime": "^7.20.1",
842 | "@mui/private-theming": "^5.10.16",
843 | "@mui/styled-engine": "^5.10.16",
844 | "@mui/types": "^7.2.2",
845 | "@mui/utils": "^5.10.16",
846 | "clsx": "^1.2.1",
847 | "csstype": "^3.1.1",
848 | "prop-types": "^15.8.1"
849 | },
850 | "engines": {
851 | "node": ">=12.0.0"
852 | },
853 | "funding": {
854 | "type": "opencollective",
855 | "url": "https://opencollective.com/mui"
856 | },
857 | "peerDependencies": {
858 | "@emotion/react": "^11.5.0",
859 | "@emotion/styled": "^11.3.0",
860 | "@types/react": "^17.0.0 || ^18.0.0",
861 | "react": "^17.0.0 || ^18.0.0"
862 | },
863 | "peerDependenciesMeta": {
864 | "@emotion/react": {
865 | "optional": true
866 | },
867 | "@emotion/styled": {
868 | "optional": true
869 | },
870 | "@types/react": {
871 | "optional": true
872 | }
873 | }
874 | },
875 | "node_modules/@mui/types": {
876 | "version": "7.2.2",
877 | "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz",
878 | "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==",
879 | "peerDependencies": {
880 | "@types/react": "*"
881 | },
882 | "peerDependenciesMeta": {
883 | "@types/react": {
884 | "optional": true
885 | }
886 | }
887 | },
888 | "node_modules/@mui/utils": {
889 | "version": "5.10.16",
890 | "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz",
891 | "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==",
892 | "dependencies": {
893 | "@babel/runtime": "^7.20.1",
894 | "@types/prop-types": "^15.7.5",
895 | "@types/react-is": "^16.7.1 || ^17.0.0",
896 | "prop-types": "^15.8.1",
897 | "react-is": "^18.2.0"
898 | },
899 | "engines": {
900 | "node": ">=12.0.0"
901 | },
902 | "funding": {
903 | "type": "opencollective",
904 | "url": "https://opencollective.com/mui"
905 | },
906 | "peerDependencies": {
907 | "react": "^17.0.0 || ^18.0.0"
908 | }
909 | },
910 | "node_modules/@popperjs/core": {
911 | "version": "2.11.6",
912 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
913 | "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
914 | "funding": {
915 | "type": "opencollective",
916 | "url": "https://opencollective.com/popperjs"
917 | }
918 | },
919 | "node_modules/@remix-run/router": {
920 | "version": "1.0.5",
921 | "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.5.tgz",
922 | "integrity": "sha512-my0Mycd+jruq/1lQuO5LBB6WTlL/e8DTCYWp44DfMTDcXz8DcTlgF0ISaLsGewt+ctHN+yA8xMq3q/N7uWJPug==",
923 | "engines": {
924 | "node": ">=14"
925 | }
926 | },
927 | "node_modules/@types/parse-json": {
928 | "version": "4.0.0",
929 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
930 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
931 | },
932 | "node_modules/@types/prop-types": {
933 | "version": "15.7.5",
934 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
935 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
936 | },
937 | "node_modules/@types/react": {
938 | "version": "18.0.26",
939 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
940 | "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
941 | "dependencies": {
942 | "@types/prop-types": "*",
943 | "@types/scheduler": "*",
944 | "csstype": "^3.0.2"
945 | }
946 | },
947 | "node_modules/@types/react-dom": {
948 | "version": "18.0.9",
949 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz",
950 | "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==",
951 | "dev": true,
952 | "dependencies": {
953 | "@types/react": "*"
954 | }
955 | },
956 | "node_modules/@types/react-is": {
957 | "version": "17.0.3",
958 | "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
959 | "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
960 | "dependencies": {
961 | "@types/react": "*"
962 | }
963 | },
964 | "node_modules/@types/react-transition-group": {
965 | "version": "4.4.5",
966 | "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
967 | "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
968 | "dependencies": {
969 | "@types/react": "*"
970 | }
971 | },
972 | "node_modules/@types/scheduler": {
973 | "version": "0.16.2",
974 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
975 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
976 | },
977 | "node_modules/@vitejs/plugin-react": {
978 | "version": "2.2.0",
979 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz",
980 | "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==",
981 | "dev": true,
982 | "dependencies": {
983 | "@babel/core": "^7.19.6",
984 | "@babel/plugin-transform-react-jsx": "^7.19.0",
985 | "@babel/plugin-transform-react-jsx-development": "^7.18.6",
986 | "@babel/plugin-transform-react-jsx-self": "^7.18.6",
987 | "@babel/plugin-transform-react-jsx-source": "^7.19.6",
988 | "magic-string": "^0.26.7",
989 | "react-refresh": "^0.14.0"
990 | },
991 | "engines": {
992 | "node": "^14.18.0 || >=16.0.0"
993 | },
994 | "peerDependencies": {
995 | "vite": "^3.0.0"
996 | }
997 | },
998 | "node_modules/ansi-styles": {
999 | "version": "3.2.1",
1000 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1001 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1002 | "dependencies": {
1003 | "color-convert": "^1.9.0"
1004 | },
1005 | "engines": {
1006 | "node": ">=4"
1007 | }
1008 | },
1009 | "node_modules/anymatch": {
1010 | "version": "3.1.3",
1011 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1012 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1013 | "dev": true,
1014 | "dependencies": {
1015 | "normalize-path": "^3.0.0",
1016 | "picomatch": "^2.0.4"
1017 | },
1018 | "engines": {
1019 | "node": ">= 8"
1020 | }
1021 | },
1022 | "node_modules/babel-plugin-macros": {
1023 | "version": "3.1.0",
1024 | "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
1025 | "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
1026 | "dependencies": {
1027 | "@babel/runtime": "^7.12.5",
1028 | "cosmiconfig": "^7.0.0",
1029 | "resolve": "^1.19.0"
1030 | },
1031 | "engines": {
1032 | "node": ">=10",
1033 | "npm": ">=6"
1034 | }
1035 | },
1036 | "node_modules/babel-plugin-styled-components": {
1037 | "version": "2.0.7",
1038 | "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz",
1039 | "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==",
1040 | "dependencies": {
1041 | "@babel/helper-annotate-as-pure": "^7.16.0",
1042 | "@babel/helper-module-imports": "^7.16.0",
1043 | "babel-plugin-syntax-jsx": "^6.18.0",
1044 | "lodash": "^4.17.11",
1045 | "picomatch": "^2.3.0"
1046 | },
1047 | "peerDependencies": {
1048 | "styled-components": ">= 2"
1049 | }
1050 | },
1051 | "node_modules/babel-plugin-syntax-jsx": {
1052 | "version": "6.18.0",
1053 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
1054 | "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
1055 | },
1056 | "node_modules/binary-extensions": {
1057 | "version": "2.2.0",
1058 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1059 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
1060 | "dev": true,
1061 | "engines": {
1062 | "node": ">=8"
1063 | }
1064 | },
1065 | "node_modules/braces": {
1066 | "version": "3.0.2",
1067 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1068 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1069 | "dev": true,
1070 | "dependencies": {
1071 | "fill-range": "^7.0.1"
1072 | },
1073 | "engines": {
1074 | "node": ">=8"
1075 | }
1076 | },
1077 | "node_modules/browserslist": {
1078 | "version": "4.21.4",
1079 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
1080 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
1081 | "funding": [
1082 | {
1083 | "type": "opencollective",
1084 | "url": "https://opencollective.com/browserslist"
1085 | },
1086 | {
1087 | "type": "tidelift",
1088 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1089 | }
1090 | ],
1091 | "dependencies": {
1092 | "caniuse-lite": "^1.0.30001400",
1093 | "electron-to-chromium": "^1.4.251",
1094 | "node-releases": "^2.0.6",
1095 | "update-browserslist-db": "^1.0.9"
1096 | },
1097 | "bin": {
1098 | "browserslist": "cli.js"
1099 | },
1100 | "engines": {
1101 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1102 | }
1103 | },
1104 | "node_modules/callsites": {
1105 | "version": "3.1.0",
1106 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1107 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1108 | "engines": {
1109 | "node": ">=6"
1110 | }
1111 | },
1112 | "node_modules/camelize": {
1113 | "version": "1.0.1",
1114 | "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
1115 | "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
1116 | "funding": {
1117 | "url": "https://github.com/sponsors/ljharb"
1118 | }
1119 | },
1120 | "node_modules/caniuse-lite": {
1121 | "version": "1.0.30001436",
1122 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz",
1123 | "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==",
1124 | "funding": [
1125 | {
1126 | "type": "opencollective",
1127 | "url": "https://opencollective.com/browserslist"
1128 | },
1129 | {
1130 | "type": "tidelift",
1131 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1132 | }
1133 | ]
1134 | },
1135 | "node_modules/chalk": {
1136 | "version": "2.4.2",
1137 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1138 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1139 | "dependencies": {
1140 | "ansi-styles": "^3.2.1",
1141 | "escape-string-regexp": "^1.0.5",
1142 | "supports-color": "^5.3.0"
1143 | },
1144 | "engines": {
1145 | "node": ">=4"
1146 | }
1147 | },
1148 | "node_modules/chokidar": {
1149 | "version": "3.5.3",
1150 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1151 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1152 | "dev": true,
1153 | "funding": [
1154 | {
1155 | "type": "individual",
1156 | "url": "https://paulmillr.com/funding/"
1157 | }
1158 | ],
1159 | "dependencies": {
1160 | "anymatch": "~3.1.2",
1161 | "braces": "~3.0.2",
1162 | "glob-parent": "~5.1.2",
1163 | "is-binary-path": "~2.1.0",
1164 | "is-glob": "~4.0.1",
1165 | "normalize-path": "~3.0.0",
1166 | "readdirp": "~3.6.0"
1167 | },
1168 | "engines": {
1169 | "node": ">= 8.10.0"
1170 | },
1171 | "optionalDependencies": {
1172 | "fsevents": "~2.3.2"
1173 | }
1174 | },
1175 | "node_modules/clsx": {
1176 | "version": "1.2.1",
1177 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
1178 | "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
1179 | "engines": {
1180 | "node": ">=6"
1181 | }
1182 | },
1183 | "node_modules/color-convert": {
1184 | "version": "1.9.3",
1185 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1186 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1187 | "dependencies": {
1188 | "color-name": "1.1.3"
1189 | }
1190 | },
1191 | "node_modules/color-name": {
1192 | "version": "1.1.3",
1193 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1194 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
1195 | },
1196 | "node_modules/convert-source-map": {
1197 | "version": "1.9.0",
1198 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
1199 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
1200 | },
1201 | "node_modules/cosmiconfig": {
1202 | "version": "7.1.0",
1203 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
1204 | "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
1205 | "dependencies": {
1206 | "@types/parse-json": "^4.0.0",
1207 | "import-fresh": "^3.2.1",
1208 | "parse-json": "^5.0.0",
1209 | "path-type": "^4.0.0",
1210 | "yaml": "^1.10.0"
1211 | },
1212 | "engines": {
1213 | "node": ">=10"
1214 | }
1215 | },
1216 | "node_modules/css-color-keywords": {
1217 | "version": "1.0.0",
1218 | "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
1219 | "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
1220 | "engines": {
1221 | "node": ">=4"
1222 | }
1223 | },
1224 | "node_modules/css-to-react-native": {
1225 | "version": "3.0.0",
1226 | "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
1227 | "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
1228 | "dependencies": {
1229 | "camelize": "^1.0.0",
1230 | "css-color-keywords": "^1.0.0",
1231 | "postcss-value-parser": "^4.0.2"
1232 | }
1233 | },
1234 | "node_modules/csstype": {
1235 | "version": "3.1.1",
1236 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
1237 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
1238 | },
1239 | "node_modules/debug": {
1240 | "version": "4.3.4",
1241 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1242 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1243 | "dependencies": {
1244 | "ms": "2.1.2"
1245 | },
1246 | "engines": {
1247 | "node": ">=6.0"
1248 | },
1249 | "peerDependenciesMeta": {
1250 | "supports-color": {
1251 | "optional": true
1252 | }
1253 | }
1254 | },
1255 | "node_modules/dom-helpers": {
1256 | "version": "5.2.1",
1257 | "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
1258 | "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
1259 | "dependencies": {
1260 | "@babel/runtime": "^7.8.7",
1261 | "csstype": "^3.0.2"
1262 | }
1263 | },
1264 | "node_modules/electron-to-chromium": {
1265 | "version": "1.4.284",
1266 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
1267 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
1268 | },
1269 | "node_modules/error-ex": {
1270 | "version": "1.3.2",
1271 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1272 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1273 | "dependencies": {
1274 | "is-arrayish": "^0.2.1"
1275 | }
1276 | },
1277 | "node_modules/esbuild": {
1278 | "version": "0.15.18",
1279 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
1280 | "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
1281 | "dev": true,
1282 | "hasInstallScript": true,
1283 | "bin": {
1284 | "esbuild": "bin/esbuild"
1285 | },
1286 | "engines": {
1287 | "node": ">=12"
1288 | },
1289 | "optionalDependencies": {
1290 | "@esbuild/android-arm": "0.15.18",
1291 | "@esbuild/linux-loong64": "0.15.18",
1292 | "esbuild-android-64": "0.15.18",
1293 | "esbuild-android-arm64": "0.15.18",
1294 | "esbuild-darwin-64": "0.15.18",
1295 | "esbuild-darwin-arm64": "0.15.18",
1296 | "esbuild-freebsd-64": "0.15.18",
1297 | "esbuild-freebsd-arm64": "0.15.18",
1298 | "esbuild-linux-32": "0.15.18",
1299 | "esbuild-linux-64": "0.15.18",
1300 | "esbuild-linux-arm": "0.15.18",
1301 | "esbuild-linux-arm64": "0.15.18",
1302 | "esbuild-linux-mips64le": "0.15.18",
1303 | "esbuild-linux-ppc64le": "0.15.18",
1304 | "esbuild-linux-riscv64": "0.15.18",
1305 | "esbuild-linux-s390x": "0.15.18",
1306 | "esbuild-netbsd-64": "0.15.18",
1307 | "esbuild-openbsd-64": "0.15.18",
1308 | "esbuild-sunos-64": "0.15.18",
1309 | "esbuild-windows-32": "0.15.18",
1310 | "esbuild-windows-64": "0.15.18",
1311 | "esbuild-windows-arm64": "0.15.18"
1312 | }
1313 | },
1314 | "node_modules/esbuild-android-64": {
1315 | "version": "0.15.18",
1316 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
1317 | "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
1318 | "cpu": [
1319 | "x64"
1320 | ],
1321 | "dev": true,
1322 | "optional": true,
1323 | "os": [
1324 | "android"
1325 | ],
1326 | "engines": {
1327 | "node": ">=12"
1328 | }
1329 | },
1330 | "node_modules/esbuild-android-arm64": {
1331 | "version": "0.15.18",
1332 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
1333 | "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
1334 | "cpu": [
1335 | "arm64"
1336 | ],
1337 | "dev": true,
1338 | "optional": true,
1339 | "os": [
1340 | "android"
1341 | ],
1342 | "engines": {
1343 | "node": ">=12"
1344 | }
1345 | },
1346 | "node_modules/esbuild-darwin-64": {
1347 | "version": "0.15.18",
1348 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
1349 | "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
1350 | "cpu": [
1351 | "x64"
1352 | ],
1353 | "dev": true,
1354 | "optional": true,
1355 | "os": [
1356 | "darwin"
1357 | ],
1358 | "engines": {
1359 | "node": ">=12"
1360 | }
1361 | },
1362 | "node_modules/esbuild-darwin-arm64": {
1363 | "version": "0.15.18",
1364 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
1365 | "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
1366 | "cpu": [
1367 | "arm64"
1368 | ],
1369 | "dev": true,
1370 | "optional": true,
1371 | "os": [
1372 | "darwin"
1373 | ],
1374 | "engines": {
1375 | "node": ">=12"
1376 | }
1377 | },
1378 | "node_modules/esbuild-freebsd-64": {
1379 | "version": "0.15.18",
1380 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
1381 | "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
1382 | "cpu": [
1383 | "x64"
1384 | ],
1385 | "dev": true,
1386 | "optional": true,
1387 | "os": [
1388 | "freebsd"
1389 | ],
1390 | "engines": {
1391 | "node": ">=12"
1392 | }
1393 | },
1394 | "node_modules/esbuild-freebsd-arm64": {
1395 | "version": "0.15.18",
1396 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
1397 | "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
1398 | "cpu": [
1399 | "arm64"
1400 | ],
1401 | "dev": true,
1402 | "optional": true,
1403 | "os": [
1404 | "freebsd"
1405 | ],
1406 | "engines": {
1407 | "node": ">=12"
1408 | }
1409 | },
1410 | "node_modules/esbuild-linux-32": {
1411 | "version": "0.15.18",
1412 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
1413 | "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
1414 | "cpu": [
1415 | "ia32"
1416 | ],
1417 | "dev": true,
1418 | "optional": true,
1419 | "os": [
1420 | "linux"
1421 | ],
1422 | "engines": {
1423 | "node": ">=12"
1424 | }
1425 | },
1426 | "node_modules/esbuild-linux-64": {
1427 | "version": "0.15.18",
1428 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
1429 | "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
1430 | "cpu": [
1431 | "x64"
1432 | ],
1433 | "dev": true,
1434 | "optional": true,
1435 | "os": [
1436 | "linux"
1437 | ],
1438 | "engines": {
1439 | "node": ">=12"
1440 | }
1441 | },
1442 | "node_modules/esbuild-linux-arm": {
1443 | "version": "0.15.18",
1444 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
1445 | "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
1446 | "cpu": [
1447 | "arm"
1448 | ],
1449 | "dev": true,
1450 | "optional": true,
1451 | "os": [
1452 | "linux"
1453 | ],
1454 | "engines": {
1455 | "node": ">=12"
1456 | }
1457 | },
1458 | "node_modules/esbuild-linux-arm64": {
1459 | "version": "0.15.18",
1460 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
1461 | "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
1462 | "cpu": [
1463 | "arm64"
1464 | ],
1465 | "dev": true,
1466 | "optional": true,
1467 | "os": [
1468 | "linux"
1469 | ],
1470 | "engines": {
1471 | "node": ">=12"
1472 | }
1473 | },
1474 | "node_modules/esbuild-linux-mips64le": {
1475 | "version": "0.15.18",
1476 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
1477 | "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
1478 | "cpu": [
1479 | "mips64el"
1480 | ],
1481 | "dev": true,
1482 | "optional": true,
1483 | "os": [
1484 | "linux"
1485 | ],
1486 | "engines": {
1487 | "node": ">=12"
1488 | }
1489 | },
1490 | "node_modules/esbuild-linux-ppc64le": {
1491 | "version": "0.15.18",
1492 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
1493 | "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
1494 | "cpu": [
1495 | "ppc64"
1496 | ],
1497 | "dev": true,
1498 | "optional": true,
1499 | "os": [
1500 | "linux"
1501 | ],
1502 | "engines": {
1503 | "node": ">=12"
1504 | }
1505 | },
1506 | "node_modules/esbuild-linux-riscv64": {
1507 | "version": "0.15.18",
1508 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
1509 | "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
1510 | "cpu": [
1511 | "riscv64"
1512 | ],
1513 | "dev": true,
1514 | "optional": true,
1515 | "os": [
1516 | "linux"
1517 | ],
1518 | "engines": {
1519 | "node": ">=12"
1520 | }
1521 | },
1522 | "node_modules/esbuild-linux-s390x": {
1523 | "version": "0.15.18",
1524 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
1525 | "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
1526 | "cpu": [
1527 | "s390x"
1528 | ],
1529 | "dev": true,
1530 | "optional": true,
1531 | "os": [
1532 | "linux"
1533 | ],
1534 | "engines": {
1535 | "node": ">=12"
1536 | }
1537 | },
1538 | "node_modules/esbuild-netbsd-64": {
1539 | "version": "0.15.18",
1540 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
1541 | "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
1542 | "cpu": [
1543 | "x64"
1544 | ],
1545 | "dev": true,
1546 | "optional": true,
1547 | "os": [
1548 | "netbsd"
1549 | ],
1550 | "engines": {
1551 | "node": ">=12"
1552 | }
1553 | },
1554 | "node_modules/esbuild-openbsd-64": {
1555 | "version": "0.15.18",
1556 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
1557 | "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
1558 | "cpu": [
1559 | "x64"
1560 | ],
1561 | "dev": true,
1562 | "optional": true,
1563 | "os": [
1564 | "openbsd"
1565 | ],
1566 | "engines": {
1567 | "node": ">=12"
1568 | }
1569 | },
1570 | "node_modules/esbuild-sunos-64": {
1571 | "version": "0.15.18",
1572 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
1573 | "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
1574 | "cpu": [
1575 | "x64"
1576 | ],
1577 | "dev": true,
1578 | "optional": true,
1579 | "os": [
1580 | "sunos"
1581 | ],
1582 | "engines": {
1583 | "node": ">=12"
1584 | }
1585 | },
1586 | "node_modules/esbuild-windows-32": {
1587 | "version": "0.15.18",
1588 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
1589 | "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
1590 | "cpu": [
1591 | "ia32"
1592 | ],
1593 | "dev": true,
1594 | "optional": true,
1595 | "os": [
1596 | "win32"
1597 | ],
1598 | "engines": {
1599 | "node": ">=12"
1600 | }
1601 | },
1602 | "node_modules/esbuild-windows-64": {
1603 | "version": "0.15.18",
1604 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
1605 | "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
1606 | "cpu": [
1607 | "x64"
1608 | ],
1609 | "dev": true,
1610 | "optional": true,
1611 | "os": [
1612 | "win32"
1613 | ],
1614 | "engines": {
1615 | "node": ">=12"
1616 | }
1617 | },
1618 | "node_modules/esbuild-windows-arm64": {
1619 | "version": "0.15.18",
1620 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
1621 | "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
1622 | "cpu": [
1623 | "arm64"
1624 | ],
1625 | "dev": true,
1626 | "optional": true,
1627 | "os": [
1628 | "win32"
1629 | ],
1630 | "engines": {
1631 | "node": ">=12"
1632 | }
1633 | },
1634 | "node_modules/escalade": {
1635 | "version": "3.1.1",
1636 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1637 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1638 | "engines": {
1639 | "node": ">=6"
1640 | }
1641 | },
1642 | "node_modules/escape-string-regexp": {
1643 | "version": "1.0.5",
1644 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1645 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1646 | "engines": {
1647 | "node": ">=0.8.0"
1648 | }
1649 | },
1650 | "node_modules/fill-range": {
1651 | "version": "7.0.1",
1652 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1653 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1654 | "dev": true,
1655 | "dependencies": {
1656 | "to-regex-range": "^5.0.1"
1657 | },
1658 | "engines": {
1659 | "node": ">=8"
1660 | }
1661 | },
1662 | "node_modules/find-root": {
1663 | "version": "1.1.0",
1664 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
1665 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
1666 | },
1667 | "node_modules/fsevents": {
1668 | "version": "2.3.2",
1669 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1670 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1671 | "dev": true,
1672 | "hasInstallScript": true,
1673 | "optional": true,
1674 | "os": [
1675 | "darwin"
1676 | ],
1677 | "engines": {
1678 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1679 | }
1680 | },
1681 | "node_modules/function-bind": {
1682 | "version": "1.1.1",
1683 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1684 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1685 | },
1686 | "node_modules/gensync": {
1687 | "version": "1.0.0-beta.2",
1688 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1689 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1690 | "engines": {
1691 | "node": ">=6.9.0"
1692 | }
1693 | },
1694 | "node_modules/glob-parent": {
1695 | "version": "5.1.2",
1696 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1697 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1698 | "dev": true,
1699 | "dependencies": {
1700 | "is-glob": "^4.0.1"
1701 | },
1702 | "engines": {
1703 | "node": ">= 6"
1704 | }
1705 | },
1706 | "node_modules/globals": {
1707 | "version": "11.12.0",
1708 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1709 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1710 | "engines": {
1711 | "node": ">=4"
1712 | }
1713 | },
1714 | "node_modules/has": {
1715 | "version": "1.0.3",
1716 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1717 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1718 | "dependencies": {
1719 | "function-bind": "^1.1.1"
1720 | },
1721 | "engines": {
1722 | "node": ">= 0.4.0"
1723 | }
1724 | },
1725 | "node_modules/has-flag": {
1726 | "version": "3.0.0",
1727 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1728 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1729 | "engines": {
1730 | "node": ">=4"
1731 | }
1732 | },
1733 | "node_modules/hoist-non-react-statics": {
1734 | "version": "3.3.2",
1735 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
1736 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
1737 | "dependencies": {
1738 | "react-is": "^16.7.0"
1739 | }
1740 | },
1741 | "node_modules/hoist-non-react-statics/node_modules/react-is": {
1742 | "version": "16.13.1",
1743 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
1744 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
1745 | },
1746 | "node_modules/immutable": {
1747 | "version": "4.1.0",
1748 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
1749 | "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
1750 | "dev": true
1751 | },
1752 | "node_modules/import-fresh": {
1753 | "version": "3.3.0",
1754 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1755 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1756 | "dependencies": {
1757 | "parent-module": "^1.0.0",
1758 | "resolve-from": "^4.0.0"
1759 | },
1760 | "engines": {
1761 | "node": ">=6"
1762 | },
1763 | "funding": {
1764 | "url": "https://github.com/sponsors/sindresorhus"
1765 | }
1766 | },
1767 | "node_modules/is-arrayish": {
1768 | "version": "0.2.1",
1769 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1770 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
1771 | },
1772 | "node_modules/is-binary-path": {
1773 | "version": "2.1.0",
1774 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1775 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1776 | "dev": true,
1777 | "dependencies": {
1778 | "binary-extensions": "^2.0.0"
1779 | },
1780 | "engines": {
1781 | "node": ">=8"
1782 | }
1783 | },
1784 | "node_modules/is-core-module": {
1785 | "version": "2.11.0",
1786 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1787 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1788 | "dependencies": {
1789 | "has": "^1.0.3"
1790 | },
1791 | "funding": {
1792 | "url": "https://github.com/sponsors/ljharb"
1793 | }
1794 | },
1795 | "node_modules/is-extglob": {
1796 | "version": "2.1.1",
1797 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1798 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1799 | "dev": true,
1800 | "engines": {
1801 | "node": ">=0.10.0"
1802 | }
1803 | },
1804 | "node_modules/is-glob": {
1805 | "version": "4.0.3",
1806 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1807 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1808 | "dev": true,
1809 | "dependencies": {
1810 | "is-extglob": "^2.1.1"
1811 | },
1812 | "engines": {
1813 | "node": ">=0.10.0"
1814 | }
1815 | },
1816 | "node_modules/is-number": {
1817 | "version": "7.0.0",
1818 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1819 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1820 | "dev": true,
1821 | "engines": {
1822 | "node": ">=0.12.0"
1823 | }
1824 | },
1825 | "node_modules/js-tokens": {
1826 | "version": "4.0.0",
1827 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1828 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1829 | },
1830 | "node_modules/jsesc": {
1831 | "version": "2.5.2",
1832 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1833 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1834 | "bin": {
1835 | "jsesc": "bin/jsesc"
1836 | },
1837 | "engines": {
1838 | "node": ">=4"
1839 | }
1840 | },
1841 | "node_modules/json-parse-even-better-errors": {
1842 | "version": "2.3.1",
1843 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1844 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
1845 | },
1846 | "node_modules/json5": {
1847 | "version": "2.2.1",
1848 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
1849 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
1850 | "bin": {
1851 | "json5": "lib/cli.js"
1852 | },
1853 | "engines": {
1854 | "node": ">=6"
1855 | }
1856 | },
1857 | "node_modules/lines-and-columns": {
1858 | "version": "1.2.4",
1859 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1860 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
1861 | },
1862 | "node_modules/lodash": {
1863 | "version": "4.17.21",
1864 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1865 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
1866 | },
1867 | "node_modules/loose-envify": {
1868 | "version": "1.4.0",
1869 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1870 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1871 | "dependencies": {
1872 | "js-tokens": "^3.0.0 || ^4.0.0"
1873 | },
1874 | "bin": {
1875 | "loose-envify": "cli.js"
1876 | }
1877 | },
1878 | "node_modules/magic-string": {
1879 | "version": "0.26.7",
1880 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
1881 | "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
1882 | "dev": true,
1883 | "dependencies": {
1884 | "sourcemap-codec": "^1.4.8"
1885 | },
1886 | "engines": {
1887 | "node": ">=12"
1888 | }
1889 | },
1890 | "node_modules/ms": {
1891 | "version": "2.1.2",
1892 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1893 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1894 | },
1895 | "node_modules/nanoid": {
1896 | "version": "3.3.4",
1897 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1898 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
1899 | "dev": true,
1900 | "bin": {
1901 | "nanoid": "bin/nanoid.cjs"
1902 | },
1903 | "engines": {
1904 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1905 | }
1906 | },
1907 | "node_modules/node-releases": {
1908 | "version": "2.0.6",
1909 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
1910 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
1911 | },
1912 | "node_modules/normalize-path": {
1913 | "version": "3.0.0",
1914 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1915 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1916 | "dev": true,
1917 | "engines": {
1918 | "node": ">=0.10.0"
1919 | }
1920 | },
1921 | "node_modules/object-assign": {
1922 | "version": "4.1.1",
1923 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1924 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1925 | "engines": {
1926 | "node": ">=0.10.0"
1927 | }
1928 | },
1929 | "node_modules/ometa": {
1930 | "version": "0.2.2",
1931 | "resolved": "https://registry.npmjs.org/ometa/-/ometa-0.2.2.tgz",
1932 | "integrity": "sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==",
1933 | "engines": {
1934 | "node": ">= 0.2.0"
1935 | }
1936 | },
1937 | "node_modules/parent-module": {
1938 | "version": "1.0.1",
1939 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1940 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1941 | "dependencies": {
1942 | "callsites": "^3.0.0"
1943 | },
1944 | "engines": {
1945 | "node": ">=6"
1946 | }
1947 | },
1948 | "node_modules/parse-json": {
1949 | "version": "5.2.0",
1950 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
1951 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
1952 | "dependencies": {
1953 | "@babel/code-frame": "^7.0.0",
1954 | "error-ex": "^1.3.1",
1955 | "json-parse-even-better-errors": "^2.3.0",
1956 | "lines-and-columns": "^1.1.6"
1957 | },
1958 | "engines": {
1959 | "node": ">=8"
1960 | },
1961 | "funding": {
1962 | "url": "https://github.com/sponsors/sindresorhus"
1963 | }
1964 | },
1965 | "node_modules/path-parse": {
1966 | "version": "1.0.7",
1967 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1968 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
1969 | },
1970 | "node_modules/path-type": {
1971 | "version": "4.0.0",
1972 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
1973 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
1974 | "engines": {
1975 | "node": ">=8"
1976 | }
1977 | },
1978 | "node_modules/picocolors": {
1979 | "version": "1.0.0",
1980 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1981 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1982 | },
1983 | "node_modules/picomatch": {
1984 | "version": "2.3.1",
1985 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1986 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1987 | "engines": {
1988 | "node": ">=8.6"
1989 | },
1990 | "funding": {
1991 | "url": "https://github.com/sponsors/jonschlinkert"
1992 | }
1993 | },
1994 | "node_modules/postcss": {
1995 | "version": "8.4.19",
1996 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
1997 | "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
1998 | "dev": true,
1999 | "funding": [
2000 | {
2001 | "type": "opencollective",
2002 | "url": "https://opencollective.com/postcss/"
2003 | },
2004 | {
2005 | "type": "tidelift",
2006 | "url": "https://tidelift.com/funding/github/npm/postcss"
2007 | }
2008 | ],
2009 | "dependencies": {
2010 | "nanoid": "^3.3.4",
2011 | "picocolors": "^1.0.0",
2012 | "source-map-js": "^1.0.2"
2013 | },
2014 | "engines": {
2015 | "node": "^10 || ^12 || >=14"
2016 | }
2017 | },
2018 | "node_modules/postcss-value-parser": {
2019 | "version": "4.2.0",
2020 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2021 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
2022 | },
2023 | "node_modules/prop-types": {
2024 | "version": "15.8.1",
2025 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
2026 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
2027 | "dependencies": {
2028 | "loose-envify": "^1.4.0",
2029 | "object-assign": "^4.1.1",
2030 | "react-is": "^16.13.1"
2031 | }
2032 | },
2033 | "node_modules/prop-types/node_modules/react-is": {
2034 | "version": "16.13.1",
2035 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
2036 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
2037 | },
2038 | "node_modules/react": {
2039 | "version": "18.2.0",
2040 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
2041 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
2042 | "dependencies": {
2043 | "loose-envify": "^1.1.0"
2044 | },
2045 | "engines": {
2046 | "node": ">=0.10.0"
2047 | }
2048 | },
2049 | "node_modules/react-dom": {
2050 | "version": "18.2.0",
2051 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
2052 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
2053 | "dependencies": {
2054 | "loose-envify": "^1.1.0",
2055 | "scheduler": "^0.23.0"
2056 | },
2057 | "peerDependencies": {
2058 | "react": "^18.2.0"
2059 | }
2060 | },
2061 | "node_modules/react-is": {
2062 | "version": "18.2.0",
2063 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
2064 | "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
2065 | },
2066 | "node_modules/react-refresh": {
2067 | "version": "0.14.0",
2068 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
2069 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
2070 | "dev": true,
2071 | "engines": {
2072 | "node": ">=0.10.0"
2073 | }
2074 | },
2075 | "node_modules/react-router": {
2076 | "version": "6.4.5",
2077 | "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.5.tgz",
2078 | "integrity": "sha512-1RQJ8bM70YEumHIlNUYc6mFfUDoWa5EgPDenK/fq0bxD8DYpQUi/S6Zoft+9DBrh2xmtg92N5HMAJgGWDhKJ5Q==",
2079 | "dependencies": {
2080 | "@remix-run/router": "1.0.5"
2081 | },
2082 | "engines": {
2083 | "node": ">=14"
2084 | },
2085 | "peerDependencies": {
2086 | "react": ">=16.8"
2087 | }
2088 | },
2089 | "node_modules/react-router-dom": {
2090 | "version": "6.4.5",
2091 | "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.5.tgz",
2092 | "integrity": "sha512-a7HsgikBR0wNfroBHcZUCd9+mLRqZS8R5U1Z1mzLWxFXEkUT3vR1XXmSIVoVpxVX8Bar0nQYYYc9Yipq8dWwAA==",
2093 | "dependencies": {
2094 | "@remix-run/router": "1.0.5",
2095 | "react-router": "6.4.5"
2096 | },
2097 | "engines": {
2098 | "node": ">=14"
2099 | },
2100 | "peerDependencies": {
2101 | "react": ">=16.8",
2102 | "react-dom": ">=16.8"
2103 | }
2104 | },
2105 | "node_modules/react-transition-group": {
2106 | "version": "4.4.5",
2107 | "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
2108 | "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
2109 | "dependencies": {
2110 | "@babel/runtime": "^7.5.5",
2111 | "dom-helpers": "^5.0.1",
2112 | "loose-envify": "^1.4.0",
2113 | "prop-types": "^15.6.2"
2114 | },
2115 | "peerDependencies": {
2116 | "react": ">=16.6.0",
2117 | "react-dom": ">=16.6.0"
2118 | }
2119 | },
2120 | "node_modules/readdirp": {
2121 | "version": "3.6.0",
2122 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2123 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2124 | "dev": true,
2125 | "dependencies": {
2126 | "picomatch": "^2.2.1"
2127 | },
2128 | "engines": {
2129 | "node": ">=8.10.0"
2130 | }
2131 | },
2132 | "node_modules/regenerator-runtime": {
2133 | "version": "0.13.11",
2134 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
2135 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
2136 | },
2137 | "node_modules/resolve": {
2138 | "version": "1.22.1",
2139 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
2140 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
2141 | "dependencies": {
2142 | "is-core-module": "^2.9.0",
2143 | "path-parse": "^1.0.7",
2144 | "supports-preserve-symlinks-flag": "^1.0.0"
2145 | },
2146 | "bin": {
2147 | "resolve": "bin/resolve"
2148 | },
2149 | "funding": {
2150 | "url": "https://github.com/sponsors/ljharb"
2151 | }
2152 | },
2153 | "node_modules/resolve-from": {
2154 | "version": "4.0.0",
2155 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2156 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2157 | "engines": {
2158 | "node": ">=4"
2159 | }
2160 | },
2161 | "node_modules/rollup": {
2162 | "version": "2.79.1",
2163 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
2164 | "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
2165 | "dev": true,
2166 | "bin": {
2167 | "rollup": "dist/bin/rollup"
2168 | },
2169 | "engines": {
2170 | "node": ">=10.0.0"
2171 | },
2172 | "optionalDependencies": {
2173 | "fsevents": "~2.3.2"
2174 | }
2175 | },
2176 | "node_modules/sass": {
2177 | "version": "1.56.2",
2178 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz",
2179 | "integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==",
2180 | "dev": true,
2181 | "dependencies": {
2182 | "chokidar": ">=3.0.0 <4.0.0",
2183 | "immutable": "^4.0.0",
2184 | "source-map-js": ">=0.6.2 <2.0.0"
2185 | },
2186 | "bin": {
2187 | "sass": "sass.js"
2188 | },
2189 | "engines": {
2190 | "node": ">=12.0.0"
2191 | }
2192 | },
2193 | "node_modules/scheduler": {
2194 | "version": "0.23.0",
2195 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
2196 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
2197 | "dependencies": {
2198 | "loose-envify": "^1.1.0"
2199 | }
2200 | },
2201 | "node_modules/scss": {
2202 | "version": "0.2.4",
2203 | "resolved": "https://registry.npmjs.org/scss/-/scss-0.2.4.tgz",
2204 | "integrity": "sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==",
2205 | "dependencies": {
2206 | "ometa": "0.2.2"
2207 | },
2208 | "engines": {
2209 | "node": ">= 0.2.0"
2210 | }
2211 | },
2212 | "node_modules/semver": {
2213 | "version": "6.3.0",
2214 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2215 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2216 | "bin": {
2217 | "semver": "bin/semver.js"
2218 | }
2219 | },
2220 | "node_modules/shallowequal": {
2221 | "version": "1.1.0",
2222 | "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
2223 | "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
2224 | },
2225 | "node_modules/source-map": {
2226 | "version": "0.5.7",
2227 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2228 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
2229 | "engines": {
2230 | "node": ">=0.10.0"
2231 | }
2232 | },
2233 | "node_modules/source-map-js": {
2234 | "version": "1.0.2",
2235 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
2236 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
2237 | "dev": true,
2238 | "engines": {
2239 | "node": ">=0.10.0"
2240 | }
2241 | },
2242 | "node_modules/sourcemap-codec": {
2243 | "version": "1.4.8",
2244 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
2245 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
2246 | "deprecated": "Please use @jridgewell/sourcemap-codec instead",
2247 | "dev": true
2248 | },
2249 | "node_modules/styled-components": {
2250 | "version": "5.3.6",
2251 | "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz",
2252 | "integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==",
2253 | "hasInstallScript": true,
2254 | "dependencies": {
2255 | "@babel/helper-module-imports": "^7.0.0",
2256 | "@babel/traverse": "^7.4.5",
2257 | "@emotion/is-prop-valid": "^1.1.0",
2258 | "@emotion/stylis": "^0.8.4",
2259 | "@emotion/unitless": "^0.7.4",
2260 | "babel-plugin-styled-components": ">= 1.12.0",
2261 | "css-to-react-native": "^3.0.0",
2262 | "hoist-non-react-statics": "^3.0.0",
2263 | "shallowequal": "^1.1.0",
2264 | "supports-color": "^5.5.0"
2265 | },
2266 | "engines": {
2267 | "node": ">=10"
2268 | },
2269 | "funding": {
2270 | "type": "opencollective",
2271 | "url": "https://opencollective.com/styled-components"
2272 | },
2273 | "peerDependencies": {
2274 | "react": ">= 16.8.0",
2275 | "react-dom": ">= 16.8.0",
2276 | "react-is": ">= 16.8.0"
2277 | }
2278 | },
2279 | "node_modules/stylis": {
2280 | "version": "4.1.3",
2281 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
2282 | "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
2283 | },
2284 | "node_modules/supports-color": {
2285 | "version": "5.5.0",
2286 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2287 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2288 | "dependencies": {
2289 | "has-flag": "^3.0.0"
2290 | },
2291 | "engines": {
2292 | "node": ">=4"
2293 | }
2294 | },
2295 | "node_modules/supports-preserve-symlinks-flag": {
2296 | "version": "1.0.0",
2297 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2298 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2299 | "engines": {
2300 | "node": ">= 0.4"
2301 | },
2302 | "funding": {
2303 | "url": "https://github.com/sponsors/ljharb"
2304 | }
2305 | },
2306 | "node_modules/to-fast-properties": {
2307 | "version": "2.0.0",
2308 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2309 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
2310 | "engines": {
2311 | "node": ">=4"
2312 | }
2313 | },
2314 | "node_modules/to-regex-range": {
2315 | "version": "5.0.1",
2316 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2317 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2318 | "dev": true,
2319 | "dependencies": {
2320 | "is-number": "^7.0.0"
2321 | },
2322 | "engines": {
2323 | "node": ">=8.0"
2324 | }
2325 | },
2326 | "node_modules/update-browserslist-db": {
2327 | "version": "1.0.10",
2328 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
2329 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
2330 | "funding": [
2331 | {
2332 | "type": "opencollective",
2333 | "url": "https://opencollective.com/browserslist"
2334 | },
2335 | {
2336 | "type": "tidelift",
2337 | "url": "https://tidelift.com/funding/github/npm/browserslist"
2338 | }
2339 | ],
2340 | "dependencies": {
2341 | "escalade": "^3.1.1",
2342 | "picocolors": "^1.0.0"
2343 | },
2344 | "bin": {
2345 | "browserslist-lint": "cli.js"
2346 | },
2347 | "peerDependencies": {
2348 | "browserslist": ">= 4.21.0"
2349 | }
2350 | },
2351 | "node_modules/vite": {
2352 | "version": "3.2.5",
2353 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz",
2354 | "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==",
2355 | "dev": true,
2356 | "dependencies": {
2357 | "esbuild": "^0.15.9",
2358 | "postcss": "^8.4.18",
2359 | "resolve": "^1.22.1",
2360 | "rollup": "^2.79.1"
2361 | },
2362 | "bin": {
2363 | "vite": "bin/vite.js"
2364 | },
2365 | "engines": {
2366 | "node": "^14.18.0 || >=16.0.0"
2367 | },
2368 | "optionalDependencies": {
2369 | "fsevents": "~2.3.2"
2370 | },
2371 | "peerDependencies": {
2372 | "@types/node": ">= 14",
2373 | "less": "*",
2374 | "sass": "*",
2375 | "stylus": "*",
2376 | "sugarss": "*",
2377 | "terser": "^5.4.0"
2378 | },
2379 | "peerDependenciesMeta": {
2380 | "@types/node": {
2381 | "optional": true
2382 | },
2383 | "less": {
2384 | "optional": true
2385 | },
2386 | "sass": {
2387 | "optional": true
2388 | },
2389 | "stylus": {
2390 | "optional": true
2391 | },
2392 | "sugarss": {
2393 | "optional": true
2394 | },
2395 | "terser": {
2396 | "optional": true
2397 | }
2398 | }
2399 | },
2400 | "node_modules/yaml": {
2401 | "version": "1.10.2",
2402 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
2403 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
2404 | "engines": {
2405 | "node": ">= 6"
2406 | }
2407 | }
2408 | }
2409 | }
2410 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "social-media",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@emotion/react": "^11.10.5",
13 | "@emotion/styled": "^11.10.5",
14 | "@mui/icons-material": "^5.10.16",
15 | "@mui/material": "^5.10.17",
16 | "react": "^18.2.0",
17 | "react-dom": "^18.2.0",
18 | "react-router-dom": "^6.4.5",
19 | "scss": "^0.2.4",
20 | "styled-components": "^5.3.6"
21 | },
22 | "devDependencies": {
23 | "@types/react": "^18.0.24",
24 | "@types/react-dom": "^18.0.8",
25 | "@vitejs/plugin-react": "^2.2.0",
26 | "sass": "^1.56.2",
27 | "vite": "^3.2.3"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from "react";
2 | import "./App.scss";
3 | import {
4 | createBrowserRouter,
5 | Navigate,
6 | Outlet,
7 | RouterProvider,
8 | } from "react-router-dom";
9 | import Home from "./pages/home/Home";
10 | import Login from "./pages/login/Login";
11 | import Profile from "./pages/profile/Profile";
12 | import Register from "./pages/register/Register";
13 | import NavBar from "../src/components/navBar/NavBar";
14 | import LeftBar from "../src/components/leftBar/LeftBar";
15 | import RightBar from "../src/components/rightBar/RightBar";
16 | import { DarkModeContext } from "./context/DarkModeContext";
17 | import { AuthContext } from "./context/AuthContext";
18 | import ScrollToTop from './scroll/scrollToTop'
19 |
20 | const App = () => {
21 | const {currentUser} = useContext(AuthContext);
22 |
23 | const { darkMode } = useContext(DarkModeContext);
24 | console.log(darkMode);
25 |
26 | const Layout = () => {
27 | return (
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | );
39 | };
40 |
41 | const ProtectedRoute = ({ children }) => {
42 | if (!currentUser) {
43 | return ;
44 | }
45 |
46 | return children;
47 | };
48 |
49 | const router = createBrowserRouter([
50 | {
51 | path: "/",
52 | element: (
53 |
54 |
55 |
56 |
57 | ),
58 | children: [
59 | {
60 | path: "/",
61 | element: ,
62 | },
63 | {
64 | path: "/profile/:id",
65 | element: ,
66 | },
67 | ],
68 | },
69 |
70 | {
71 | path: "/login",
72 | element: ,
73 | },
74 | {
75 | path: "/register",
76 | element: ,
77 | },
78 | ]);
79 |
80 | return (
81 |
82 |
83 |
84 | );
85 | };
86 |
87 | export default App;
88 |
--------------------------------------------------------------------------------
/src/App.scss:
--------------------------------------------------------------------------------
1 | $themes: (
2 | light: (
3 | textColor: #000,
4 | bg: #fff,
5 | logo: rgb(14, 142, 242),
6 | bgSoft: #f6f3f3,
7 | textColorSoft: #555,
8 | border: lightgray,
9 | input: #000,
10 | ),
11 | dark: (
12 | textColor: whitesmoke,
13 | bg: #222,
14 | logo: rgb(14, 142, 242),
15 | bgSoft: #333,
16 | textColorSoft: lightgray,
17 | border: #444,
18 | input: #fff,
19 | ),
20 | );
21 |
22 |
23 | @mixin themify($themes) {
24 | @each $theme, $map in $themes {
25 | .theme-#{$theme} & {
26 | $theme-map: () !global;
27 | @each $key, $submap in $map {
28 | $value: map-get(map-get($themes, $theme), "#{$key}");
29 | $theme-map: map-merge(
30 | $theme-map,
31 | (
32 | $key: $value,
33 | )
34 | ) !global;
35 | }
36 | @content;
37 | $theme-map: null !global;
38 | }
39 | }
40 | }
41 |
42 | @function themed($key) {
43 | @return map-get($theme-map, $key);
44 | }
45 |
46 | @mixin mobile {
47 | @media (max-width:480px) {
48 | @content;
49 | }
50 | }
51 | // @mixin tablet {
52 | // @media (max-width:960px) {
53 | // @content;
54 | // }
55 | // }
--------------------------------------------------------------------------------
/src/assets/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/1.png
--------------------------------------------------------------------------------
/src/assets/images/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/10.png
--------------------------------------------------------------------------------
/src/assets/images/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/11.png
--------------------------------------------------------------------------------
/src/assets/images/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/12.png
--------------------------------------------------------------------------------
/src/assets/images/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/13.png
--------------------------------------------------------------------------------
/src/assets/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/2.png
--------------------------------------------------------------------------------
/src/assets/images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/3.png
--------------------------------------------------------------------------------
/src/assets/images/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/4.png
--------------------------------------------------------------------------------
/src/assets/images/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/5.png
--------------------------------------------------------------------------------
/src/assets/images/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/6.png
--------------------------------------------------------------------------------
/src/assets/images/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/7.png
--------------------------------------------------------------------------------
/src/assets/images/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/8.png
--------------------------------------------------------------------------------
/src/assets/images/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/9.png
--------------------------------------------------------------------------------
/src/assets/images/friend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/friend.png
--------------------------------------------------------------------------------
/src/assets/images/img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/img.png
--------------------------------------------------------------------------------
/src/assets/images/login3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/login3.jpg
--------------------------------------------------------------------------------
/src/assets/images/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Devalphaspace/reactJS_Socialmedia/58a24db2220e2288adab471c6adf29422d04b5d7/src/assets/images/map.png
--------------------------------------------------------------------------------
/src/components/leftBar/LeftBar.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from "react";
2 | import "./leftbar.scss";
3 | import User from "../../assets/images/login3.jpg";
4 | import Friends from "../../assets/images/1.png";
5 | import Group from "../../assets/images/2.png";
6 | import Market from "../../assets/images/3.png";
7 | import Watch from "../../assets/images/4.png";
8 | import Memories from "../../assets/images/5.png";
9 | import Events from "../../assets/images/6.png";
10 | import Gaming from "../../assets/images/7.png";
11 | import Gallery from "../../assets/images/8.png";
12 | import Videos from "../../assets/images/9.png";
13 | import Messages from "../../assets/images/10.png";
14 | import Tutorials from "../../assets/images/11.png";
15 | import Courses from "../../assets/images/12.png";
16 | import Fund from "../../assets/images/13.png";
17 | import { AuthContext } from "../../context/AuthContext";
18 |
19 | const LeftBar = () => {
20 | const {currentUser} = useContext(AuthContext)
21 | return (
22 |
23 |
24 |
25 |
26 |
27 |
{currentUser.name}
28 |
29 |
30 |
31 |
Friends
32 |
33 |
34 |
35 |
Groups
36 |
37 |
38 |
39 |
Marketplace
40 |
41 |
42 |
43 |
Watch
44 |
45 |
46 |
47 |
Memories
48 |
49 |
50 |
51 |
52 |
53 |
54 |
Your Shortcuts
55 |
56 |
57 |
Events
58 |
59 |
60 |
61 |
Gaming
62 |
63 |
64 |
65 |
Gallery
66 |
67 |
68 |
69 |
Videos
70 |
71 |
72 |
73 |
Messages
74 |
75 |
76 |
77 |
78 |
79 |
80 |
Others
81 |
82 |
83 |
Tutorials
84 |
85 |
86 |
87 |
Courses
88 |
89 |
90 |
91 |
Fund
92 |
93 |
94 |
95 |
96 | );
97 | };
98 |
99 | export default LeftBar;
100 |
--------------------------------------------------------------------------------
/src/components/leftBar/leftbar.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 | .leftBar {
3 | @include themify($themes) {
4 | background-color: themed("bg");
5 | color: themed("textColor");
6 | flex: 2;
7 | position: sticky;
8 | top: 4rem;
9 | height: calc(100vh - 4rem);
10 | overflow-y: scroll;
11 | @include mobile{
12 | display: none;
13 | }
14 | &::-webkit-scrollbar {
15 | display: none;
16 | }
17 |
18 | .container {
19 | padding: 1rem;
20 | hr {
21 | border: 1px solid themed("border");
22 | margin: 1rem 0;
23 | }
24 | .menu {
25 | display: flex;
26 | flex-direction: column;
27 | gap: 0.8rem;
28 | span {
29 | font-size: 14px;
30 | font-weight: 600;
31 | }
32 | .user {
33 | display: flex;
34 | align-items: center;
35 | gap: 10px;
36 | img {
37 | width: 30px;
38 | height: 30px;
39 | border-radius: 50%;
40 | -webkit-border-radius: 50%;
41 | -moz-border-radius: 50%;
42 | -ms-border-radius: 50%;
43 | -o-border-radius: 50%;
44 | }
45 | span {
46 | font-size: 1rem;
47 | }
48 | }
49 |
50 | .item {
51 | display: flex;
52 | align-items: center;
53 | gap: 10px;
54 |
55 | img {
56 | width: 30px;
57 | }
58 | span {
59 | font-size: 1rem;
60 | font-weight: 500;
61 | }
62 | }
63 | }
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/components/navBar/NavBar.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from "react";
2 | import "./navbar.scss";
3 | import '../../App.scss'
4 | import HomeOutlinedIcon from "@mui/icons-material/HomeOutlined";
5 | import DarkModeOutlinedIcon from "@mui/icons-material/DarkModeOutlined";
6 | import WbSunnyOutlinedIcon from '@mui/icons-material/WbSunnyOutlined';
7 | import GridViewOutlinedIcon from "@mui/icons-material/GridViewOutlined";
8 | import SearchOutlinedIcon from "@mui/icons-material/SearchOutlined";
9 | import PersonOutlineOutlinedIcon from "@mui/icons-material/PersonOutlineOutlined";
10 | import EmailOutlinedIcon from "@mui/icons-material/EmailOutlined";
11 | import NotificationsOutlinedIcon from "@mui/icons-material/NotificationsOutlined";
12 | import { Link } from "react-router-dom";
13 | import { DarkModeContext } from "../../context/DarkModeContext";
14 | import { AuthContext } from "../../context/AuthContext";
15 |
16 | const NavBar = () => {
17 |
18 | const {toggle, darkMode} = useContext(DarkModeContext);
19 | const {currentUser} = useContext(AuthContext)
20 |
21 | return (
22 |
23 |
24 |
25 |
ReactSocial
26 |
27 |
28 | {
29 | darkMode ?
:
30 | }
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
{currentUser.name}
44 |
45 |
46 |
47 | );
48 | };
49 |
50 | export default NavBar;
51 |
--------------------------------------------------------------------------------
/src/components/navBar/navbar.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 | .navbar {
3 | @include themify($themes) {
4 | display: flex;
5 | justify-content: space-between;
6 | align-items: center;
7 | height: 4rem;
8 | background-color: themed("bg");
9 | color: themed("textColor");
10 | padding: 1rem;
11 | position: sticky;
12 | top: 0;
13 | border-bottom: 1px solid themed("border");
14 | z-index: 10;
15 |
16 | .left {
17 | display: flex;
18 | align-items: center;
19 | gap: 1.5rem;
20 | span {
21 | font-weight: bold;
22 | font-size: 1.2rem;
23 | color: rgb(14, 142, 242);
24 | }
25 | .search {
26 | display: flex;
27 | align-items: center;
28 | padding: 0 0.5rem;
29 | border: 1px solid themed("border");
30 | color: themed("search");
31 | input {
32 | padding: 0.5rem;
33 | width: 18rem;
34 | background-color: transparent;
35 | color: themed("input");
36 |
37 | @include mobile {
38 | display: none;
39 | }
40 | // @include tablet {
41 | // width: 10rem;
42 | // }
43 | }
44 | }
45 | }
46 |
47 | .right {
48 | display: flex;
49 | align-items: center;
50 | gap: 1.3rem;
51 |
52 | @include mobile {
53 | display: none;
54 | }
55 | .user {
56 | display: flex;
57 | align-items: center;
58 | gap: 10px;
59 |
60 | img {
61 | width: 30px;
62 | height: 30px;
63 | border-radius: 50%;
64 | -webkit-border-radius: 50%;
65 | -moz-border-radius: 50%;
66 | -ms-border-radius: 50%;
67 | -o-border-radius: 50%;
68 | }
69 |
70 | span {
71 | font-weight: bold;
72 | }
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/components/posts/Posts.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./posts.scss";
3 | import postsData from "../../data/postsData";
4 | import Post from "./post/Post";
5 |
6 | const Posts = () => {
7 | return (
8 |
9 | {
10 | postsData.map((posts) => (
11 |
12 | ))
13 | }
14 |
15 | );
16 | };
17 |
18 | export default Posts;
19 |
--------------------------------------------------------------------------------
/src/components/posts/comments/Comments.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from "react";
2 | import "./comments.scss";
3 | import commentsData from "../../../data/commentsData";
4 | import { AuthContext } from "../../../context/AuthContext";
5 |
6 | const Comments = () => {
7 | const { currentUser } = useContext(AuthContext);
8 | return (
9 |
10 |
11 |
12 |
13 |
14 |
Send
15 |
16 |
17 | {commentsData.map((commentsData) => (
18 |
19 |
20 |
21 |
{commentsData.name}
22 |
{commentsData.desc}
23 |
24 |
1 min ago
25 |
26 | ))}
27 |
28 | );
29 | };
30 |
31 | export default Comments;
32 |
--------------------------------------------------------------------------------
/src/components/posts/comments/comments.scss:
--------------------------------------------------------------------------------
1 | @import "../../../App.scss";
2 |
3 | .comments {
4 | @include themify($themes) {
5 | margin-top: 20px;
6 | display: flex;
7 | flex-direction: column;
8 | gap: 20px;
9 | img {
10 | width: 30px;
11 | height: 30px;
12 | border-radius: 50%;
13 | -webkit-border-radius: 50%;
14 | -moz-border-radius: 50%;
15 | -ms-border-radius: 50%;
16 | -o-border-radius: 50%;
17 | }
18 | .userComment {
19 | display: flex;
20 | align-items: center;
21 | gap: 15px;
22 | display: flex;
23 | justify-content: space-between;
24 | input {
25 | border: 1px solid themed("border");
26 | flex: 5;
27 | padding: 10px 5px;
28 | background: transparent;
29 | color: themed('textColor');
30 | }
31 | button {
32 |
33 | padding: 10px;
34 | background-color: rgb(14, 142, 242);
35 | color: #fff;
36 | cursor: pointer;
37 | font-weight: 500;
38 | }
39 | }
40 | .comment {
41 | display: flex;
42 | justify-content: space-between;
43 | gap: 15px;
44 |
45 | .details {
46 | flex: 5;
47 | display: flex;
48 | flex-direction: column;
49 | align-items: flex-start;
50 |
51 | gap: 5px;
52 | span {
53 | font-weight: 500;
54 | font-size: 15px;
55 | }
56 | p {
57 | color: themed("textColorSoft");
58 | font-size: 14px;
59 | }
60 | }
61 | .date {
62 | flex: 1;
63 | font-size: 13px;
64 | color: themed("textColorSoft");
65 | align-self: center;
66 | }
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/components/posts/post/Post.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import "./post.scss";
3 | import MoreHorizOutlinedIcon from "@mui/icons-material/MoreHorizOutlined";
4 | import FavoriteBorderOutlinedIcon from "@mui/icons-material/FavoriteBorderOutlined";
5 | import FavoriteOutlinedIcon from "@mui/icons-material/FavoriteOutlined";
6 | import TextsmsOutlinedIcon from "@mui/icons-material/TextsmsOutlined";
7 | import ShareOutlinedIcon from "@mui/icons-material/ShareOutlined";
8 | import { Link } from "react-router-dom";
9 | import Comments from "../comments/Comments";
10 |
11 | const Post = ({ posts }) => {
12 | const liked = true;
13 |
14 | const [like, setLike] = useState(false);
15 |
16 | const [commentOpen, setCommentOpen] = useState(false);
17 |
18 | return (
19 |
20 |
21 |
22 |
23 |
24 |
25 |
29 | {posts.name}
30 |
31 | 1 min ago
32 |
33 |
34 |
35 |
36 |
37 |
{posts.desc}
38 |
39 |
40 |
41 |
setLike(!like)}>
42 | {like ? (
43 |
44 | ) : (
45 |
46 | )}
47 | 12 Likes
48 |
49 |
setCommentOpen(!commentOpen)}>
50 |
51 | 2 Comments
52 |
53 |
54 |
55 |
56 |
57 | {commentOpen &&
}
58 |
59 |
60 | );
61 | };
62 |
63 | export default Post;
64 |
--------------------------------------------------------------------------------
/src/components/posts/post/post.scss:
--------------------------------------------------------------------------------
1 | @import "../../../App.scss";
2 |
3 | .post {
4 | @include themify($themes) {
5 | background-color: themed('bg');
6 | color: themed("textColor");
7 | border-radius: 15px;
8 | -webkit-border-radius: 15px;
9 | -moz-border-radius: 15px;
10 | -ms-border-radius: 15px;
11 | -o-border-radius: 15px;
12 | box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
13 | -webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
14 | -moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
15 | .container {
16 | padding: 1.2rem;
17 | .user {
18 | display: flex;
19 | justify-content: space-between;
20 | align-items: center;
21 | .userInfo {
22 | display: flex;
23 | align-items: center;
24 | gap: 10px;
25 | img {
26 | width: 40px;
27 | height: 40px;
28 | border-radius: 50%;
29 | -webkit-border-radius: 50%;
30 | -moz-border-radius: 50%;
31 | -ms-border-radius: 50%;
32 | -o-border-radius: 50%;
33 | object-fit: cover;
34 | }
35 | .details {
36 | display: flex;
37 | flex-direction: column;
38 | gap: 4px;
39 | .name {
40 | font-weight: 500;
41 | }
42 | .date {
43 | font-size: 12px;
44 | color: themed("textColorSoft");
45 | }
46 | }
47 | }
48 | }
49 | .content{
50 | margin: 1.2rem 0;
51 | // p{
52 |
53 | // }
54 | img{
55 | width: 100%;
56 | max-height: 500px;
57 | object-fit: cover;
58 | margin-top: 10px;
59 | }
60 | }
61 | .actions{
62 | display: flex;
63 | align-items: center;
64 | gap: 30px;
65 | color: themed('textColor');
66 | .item{
67 | display: flex;
68 | align-items: center;
69 | gap: 8px;
70 | cursor: pointer;
71 | font-size: 15px;
72 | @include mobile{
73 | font-size: 13px;
74 | }
75 | }
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/components/posts/posts.scss:
--------------------------------------------------------------------------------
1 | @import '../../App.scss';
2 |
3 |
4 | .posts{
5 | margin: 2rem 0;
6 | display: flex;
7 | flex-direction: column;
8 | gap: 2rem;
9 | }
--------------------------------------------------------------------------------
/src/components/rightBar/RightBar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./rightbar.scss";
3 | import User from "../../assets/images/login3.jpg";
4 |
5 | const RightBar = () => {
6 | return (
7 |
8 |
9 |
10 |
Suggetions for you
11 |
12 |
13 |
14 |
Mili Leo
15 |
16 |
17 | Follow
18 | Dismiss
19 |
20 |
21 |
22 |
23 |
24 |
Josh Butler
25 |
26 |
27 | Follow
28 | Dismiss
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
Latest Activities
37 |
38 |
39 |
40 |
41 | Alijah Kajal
42 | Shared your post
43 |
44 |
45 |
1 min ago
46 |
47 |
48 |
49 |
50 |
51 | Miriam Veljko
52 | Shared your post
53 |
54 |
55 |
1 min ago
56 |
57 |
58 |
59 |
60 |
61 |
62 |
Online Friends
63 |
64 |
65 |
66 |
67 |
Mai Otto
68 |
69 |
Online
70 |
71 |
72 |
73 |
74 |
75 |
Luba Rupert
76 |
77 |
Online
78 |
79 |
80 |
81 |
82 |
83 |
Yatzil Imogen
84 |
85 |
Online
86 |
87 |
88 |
89 |
90 |
91 |
Perce Soraya
92 |
93 |
Online
94 |
95 |
96 |
97 |
98 |
99 |
Maxi Sumayya
100 |
101 |
Online
102 |
103 |
104 |
105 |
106 |
107 |
Lynet Traianus
108 |
109 |
Online
110 |
111 |
112 |
113 |
114 |
115 |
Jakab Seyyid
116 |
117 |
Online
118 |
119 |
120 |
121 |
122 |
123 |
Eadgifu Xulio
124 |
125 |
Online
126 |
127 |
128 |
129 |
130 |
131 |
Mira Lorenzo
132 |
133 |
Online
134 |
135 |
136 |
137 |
138 |
139 |
Ewout Pompeia
140 |
141 |
Online
142 |
143 |
144 |
145 |
146 |
147 |
Tijana Awotwi
148 |
149 |
Online
150 |
151 |
152 |
153 |
154 |
155 |
Marlies Sandip
156 |
157 |
Online
158 |
159 |
160 |
161 |
162 |
163 |
Ryuunosuke Inga
164 |
165 |
Online
166 |
167 |
168 |
169 |
170 |
171 |
Şenay Amichai
172 |
173 |
Online
174 |
175 |
176 |
177 |
178 | );
179 | };
180 |
181 | export default RightBar;
182 |
--------------------------------------------------------------------------------
/src/components/rightBar/rightbar.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 | .rightBar {
3 | @include themify($themes) {
4 | background-color: themed("bgSoft");
5 | flex: 3;
6 | position: sticky;
7 | top: 4rem;
8 | height: calc(100vh - 4rem);
9 | overflow-y: scroll;
10 | @include mobile {
11 | display: none;
12 | }
13 | // @include tablet {
14 | // display: none;
15 | // }
16 | &::-webkit-scrollbar {
17 | display: none;
18 | }
19 | .container {
20 | display: flex;
21 | flex-direction: column;
22 | gap: 15px;
23 | padding: 1rem;
24 | .item {
25 | background-color: themed("bg");
26 | display: flex;
27 | flex-direction: column;
28 | gap: 11px;
29 | padding: 20px;
30 | box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
31 | -webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
32 | -moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
33 | span {
34 | color: themed("textColorSoft");
35 | }
36 | .user {
37 | display: flex;
38 | align-items: center;
39 | justify-content: space-between;
40 | gap: 10px;
41 | .userInfo {
42 | display: flex;
43 | align-items: center;
44 | gap: 10px;
45 | position: relative;
46 | img {
47 | width: 40px;
48 | height: 40px;
49 | border-radius: 50%;
50 | -webkit-border-radius: 50%;
51 | -moz-border-radius: 50%;
52 | -ms-border-radius: 50%;
53 | -o-border-radius: 50%;
54 | }
55 | .dot {
56 | width: 10px;
57 | height: 10px;
58 | border-radius: 50%;
59 | -webkit-border-radius: 50%;
60 | -moz-border-radius: 50%;
61 | -ms-border-radius: 50%;
62 | -o-border-radius: 50%;
63 | background-color: limegreen;
64 | position: absolute;
65 | top: 0;
66 | left: 30px;
67 | }
68 | span {
69 | font-weight: 500;
70 | color: themed("textColor");
71 | }
72 | p {
73 | color: themed("textColorSoft");
74 | span {
75 | color: themed("textColor");
76 | margin-right: 5px;
77 | }
78 | }
79 | }
80 |
81 | .buttons {
82 | display: flex;
83 | align-items: center;
84 | gap: 5px;
85 | button {
86 | padding: 4px;
87 | &:nth-child(1) {
88 | background-color: rgb(14, 142, 242);
89 | color: #fff;
90 | cursor: pointer;
91 | }
92 | &:nth-child(2) {
93 | background-color: #e74c3c;
94 | color: #fff;
95 | cursor: pointer;
96 | }
97 | }
98 | }
99 | }
100 | }
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/src/components/stories/Story.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from "react";
2 | import "./story.scss";
3 | import storyData from "../../data/storyData";
4 | import { AuthContext } from "../../context/AuthContext";
5 |
6 | const Story = () => {
7 | const { currentUser } = useContext(AuthContext);
8 |
9 | return (
10 |
11 |
12 |
13 |
+
14 |
{currentUser.name}
15 |
16 |
17 | {storyData.map((storyData) => (
18 |
19 |
20 |
{storyData.name}
21 |
22 | ))}
23 |
24 | );
25 | };
26 |
27 | export default Story;
28 |
--------------------------------------------------------------------------------
/src/components/stories/story.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 |
3 | .stories {
4 | @include themify ($themes) {
5 | display: flex;
6 | height: 200px;
7 | gap: 20px;
8 | @include mobile {
9 | height: 50px;
10 | justify-content: space-between;
11 | }
12 | // @include tablet {
13 | // height: 160px;
14 | // gap: 20px;
15 | // }
16 | .user {
17 | flex: 1;
18 | border-radius: 10px;
19 | -webkit-border-radius: 10px;
20 | -moz-border-radius: 10px;
21 | -ms-border-radius: 10px;
22 | -o-border-radius: 10px;
23 | overflow: hidden;
24 | position: relative;
25 | @include mobile {
26 | width: 50px;
27 | height: 50px;
28 | flex: none;
29 | border-radius: 50%;
30 | -webkit-border-radius: 50%;
31 | -moz-border-radius: 50%;
32 | -ms-border-radius: 50%;
33 | -o-border-radius: 50%;
34 | }
35 |
36 |
37 | img {
38 | width: 100%;
39 | height: 100%;
40 | object-fit: cover;
41 | }
42 | button {
43 | position: absolute;
44 | background: rgb(14, 142, 241);
45 | height: 30px;
46 | width: 30px;
47 | border-radius: 50%;
48 | -webkit-border-radius: 50%;
49 | -moz-border-radius: 50%;
50 | -ms-border-radius: 50%;
51 | -o-border-radius: 50%;
52 | bottom: 30px;
53 | left: 10px;
54 | font-size: 25px;
55 | display: flex;
56 | justify-content: center;
57 | align-items: center;
58 | color: #fff;
59 | cursor: pointer;
60 |
61 | @include mobile {
62 | bottom: 5px;
63 | left: 25px;
64 | height: 20px;
65 | width: 20px;
66 | }
67 | }
68 | span {
69 | position: absolute;
70 | bottom: 10px;
71 | left: 10px;
72 | font-weight: bold;
73 | color: rgb(71, 63, 63);
74 | @include mobile {
75 | display: none;
76 | }
77 | }
78 | }
79 | .story {
80 | flex: 1;
81 | border-radius: 10px;
82 | -webkit-border-radius: 10px;
83 | -moz-border-radius: 10px;
84 | -ms-border-radius: 10px;
85 | -o-border-radius: 10px;
86 | overflow: hidden;
87 | position: relative;
88 | @include mobile {
89 | width: 50px;
90 | height: 50px;
91 | flex: none;
92 | border-radius: 50%;
93 | -webkit-border-radius: 50%;
94 | -moz-border-radius: 50%;
95 | -ms-border-radius: 50%;
96 | -o-border-radius: 50%;
97 | }
98 | img {
99 | width: 100%;
100 | height: 100%;
101 | object-fit: cover;
102 | }
103 | span {
104 | position: absolute;
105 | bottom: 10px;
106 | left: 10px;
107 | font-weight: bold;
108 | color: rgb(255, 255, 255);
109 | @include mobile {
110 | display: none;
111 | }
112 | }
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/context/AuthContext.jsx:
--------------------------------------------------------------------------------
1 | import { createContext, useEffect, useState } from "react";
2 |
3 | export const AuthContext = createContext();
4 |
5 | export const AuthProvider = ({ children }) => {
6 | const [currentUser, setCurrentUser] = useState(
7 | JSON.parse(localStorage.getItem("user")) || null
8 | );
9 |
10 | const login = () => {
11 | setCurrentUser({
12 | id: 1,
13 | name: "Sandip",
14 | profilePic: "https://i.postimg.cc/4yckRH03/3551739.jpg",
15 | });
16 | };
17 |
18 | useEffect(() => {
19 | localStorage.setItem("user", JSON.stringify(currentUser));
20 | }, [currentUser]);
21 |
22 | return (
23 |
24 | {children}
25 |
26 | );
27 | };
28 |
--------------------------------------------------------------------------------
/src/context/DarkModeContext.jsx:
--------------------------------------------------------------------------------
1 | import { createContext, useEffect, useState } from "react";
2 |
3 | export const DarkModeContext = createContext();
4 |
5 | export const DarkModeProvider = ({ children }) => {
6 | const [darkMode, setDarkMode] = useState(
7 | JSON.parse(localStorage.getItem("darkMode")) || false
8 | );
9 |
10 | const toggle = () => {
11 | setDarkMode(!darkMode);
12 | };
13 |
14 | useEffect(() => {
15 | localStorage.setItem("darkMode", darkMode);
16 | }, [darkMode]);
17 |
18 | return (
19 |
20 | {children}
21 |
22 | );
23 | };
24 |
--------------------------------------------------------------------------------
/src/data/commentsData.jsx:
--------------------------------------------------------------------------------
1 | const commentsData = [
2 | {
3 | id: 1,
4 | userId: 1,
5 | name: "John Doe",
6 | contentPic:
7 | "https://images.pexels.com/photos/13916254/pexels-photo-13916254.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load",
8 | profilePic: "https://i.postimg.cc/mZP646wP/2289-Sk-VNQSBGQU1-PIDEw-Mjgt-MTIy.jpg",
9 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
10 | },
11 | {
12 | id: 2,
13 | userId: 2,
14 | name: "John Doe",
15 | contentPic:
16 | "https://images.pexels.com/photos/13916255/pexels-photo-13916255.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load",
17 | profilePic: "https://i.postimg.cc/mZP646wP/2289-Sk-VNQSBGQU1-PIDEw-Mjgt-MTIy.jpg",
18 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
19 | },
20 |
21 |
22 | ];
23 |
24 | export default commentsData;
25 |
--------------------------------------------------------------------------------
/src/data/postsData.jsx:
--------------------------------------------------------------------------------
1 | const postsData = [
2 | {
3 | id: 1,
4 | userId: 1,
5 | name: "John Welly",
6 | contentPic:
7 | "https://i.postimg.cc/XNxbhCqx/futuristic-14-920x518.jpg",
8 | profilePic:
9 | "https://i.postimg.cc/mZP646wP/2289-Sk-VNQSBGQU1-PIDEw-Mjgt-MTIy.jpg",
10 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
11 | cover: "https://images.unsplash.com/photo-1566994616736-69fe8cc420f3?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1086&q=80",
12 | place: 'USA',
13 | lan: "Engligh",
14 | },
15 | {
16 | id: 2,
17 | userId: 2,
18 | name: "Luccy",
19 | contentPic:
20 | "https://i.postimg.cc/90Xj0W8G/anime-girl-smile-23-920x518.jpg",
21 | profilePic: "https://i.postimg.cc/6Q8c9d5w/german.png",
22 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
23 | cover: "https://images.unsplash.com/photo-1434725039720-aaad6dd32dfe?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1042&q=80",
24 | place: "Las Vegas",
25 | lan: "Engligh",
26 | },
27 | {
28 | id: 3,
29 | userId: 3,
30 | name: "Peter Leo",
31 | contentPic:
32 | "https://i.postimg.cc/zvdYR964/fantasy-traveler-14-920x518.jpg",
33 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
34 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
35 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
36 | place: "London",
37 | lan: "Engligh",
38 | },
39 | {
40 | id: 4,
41 | userId: 4,
42 | name: "Alijah Kajal",
43 | contentPic:
44 | "https://images.unsplash.com/photo-1699862160391-1aa177a3baff?q=80&w=2832&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
45 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
46 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
47 | cover: "https://images.unsplash.com/photo-1699862160391-1aa177a3baff?q=80&w=2832&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
48 | place: "London",
49 | lan: "Engligh",
50 | },
51 | {
52 | id: 5,
53 | userId: 5,
54 | name: "Miriam Veljko",
55 | contentPic:
56 | "https://images.unsplash.com/photo-1699626896851-4e5b96c51f15?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
57 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
58 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
59 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
60 | place: "London",
61 | lan: "Engligh",
62 | },
63 | {
64 | id: 6,
65 | userId: 6,
66 | name: "Perce Soraya",
67 | contentPic:
68 | "https://images.unsplash.com/photo-1699455790015-da3e113241f6?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
69 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
70 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
71 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
72 | place: "London",
73 | lan: "Engligh",
74 | },
75 | {
76 | id: 7,
77 | userId: 7,
78 | name: "Maxi Sumayya",
79 | contentPic:
80 | "https://images.unsplash.com/photo-1521815049196-8a76f26a2135?q=80&w=2942&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
81 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
82 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
83 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
84 | place: "London",
85 | lan: "Engligh",
86 | },
87 | {
88 | id: 8,
89 | userId: 8,
90 | name: "Lynet Traianus",
91 | contentPic:
92 | "https://images.unsplash.com/photo-1698681889353-d39a24b78bac?q=80&w=2940&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
93 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
94 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
95 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
96 | place: "London",
97 | lan: "Engligh",
98 | },
99 | {
100 | id: 9,
101 | userId: 9,
102 | name: "Şenay Amichai",
103 | contentPic:
104 | "https://images.unsplash.com/photo-1679967486442-562ac8798ad8?q=80&w=3028&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
105 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
106 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
107 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
108 | place: "London",
109 | lan: "Engligh",
110 | },
111 | {
112 | id: 10,
113 | userId: 10,
114 | name: "Marlies Sandip",
115 | contentPic:
116 | "https://images.unsplash.com/photo-1640582024795-9208f2f0e177?q=80&w=2960&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
117 | profilePic: "https://i.postimg.cc/W3r7ZTkH/diver.png",
118 | desc: "Lorem ipsum dolor sit, amet consectetur adipisicing elit.",
119 | cover: "https://images.unsplash.com/photo-1506869640319-fe1a24fd76dc?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80",
120 | place: "London",
121 | lan: "Engligh",
122 | },
123 | ];
124 |
125 | export default postsData;
126 |
--------------------------------------------------------------------------------
/src/data/storyData.jsx:
--------------------------------------------------------------------------------
1 | const storyData = [
2 | {
3 | id: 1,
4 | name: "Danny js",
5 | img: "https://images.pexels.com/photos/13916254/pexels-photo-13916254.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load",
6 | },
7 | {
8 | id: 2,
9 | name: "John Doe",
10 | img: "https://images.pexels.com/photos/13916255/pexels-photo-13916255.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load",
11 | },
12 | {
13 | id: 3,
14 | name: "Welly",
15 | img: "https://images.pexels.com/photos/13916256/pexels-photo-13916256.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load",
16 | },
17 | {
18 | id: 4,
19 | name: "Peter Leo",
20 | img: "https://images.pexels.com/photos/13916257/pexels-photo-13916257.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load",
21 | },
22 | ];
23 |
24 | export default storyData;
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | *{
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | border: none;
6 | outline: none;
7 | text-decoration: none;
8 | list-style: none;
9 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
10 | }
11 |
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 | import { AuthProvider } from "./context/AuthContext";
5 | import { DarkModeContext, DarkModeProvider } from "./context/DarkModeContext";
6 | import "./index.css";
7 | import ScrollToTop from "./scroll/scrollToTop";
8 |
9 | ReactDOM.createRoot(document.getElementById("root")).render(
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | );
18 |
--------------------------------------------------------------------------------
/src/pages/home/Home.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Story from '../../components/stories/Story'
3 | import Post from '../../components/posts/Posts'
4 | import './home.scss'
5 |
6 | const Home = () => {
7 | return (
8 |
12 | )
13 | }
14 |
15 | export default Home
--------------------------------------------------------------------------------
/src/pages/home/home.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 | .homePage {
3 | @include themify($themes) {
4 | background-color: themed("bgSoft");
5 | padding: 1rem 3rem;
6 |
7 |
8 | @include mobile{
9 | padding: 10px;
10 | }
11 | // @include tablet {
12 | // padding: 20px;
13 | // }
14 | }}
15 |
--------------------------------------------------------------------------------
/src/pages/login/Login.jsx:
--------------------------------------------------------------------------------
1 | import React, { useContext } from "react";
2 | import "./login.scss";
3 | import { Link, useNavigate } from "react-router-dom";
4 | import { AuthContext } from "../../context/AuthContext";
5 |
6 | const Login = () => {
7 | const navigate = useNavigate()
8 |
9 | const {login} = useContext(AuthContext);
10 |
11 | const handleLogin = ()=>{
12 | login();
13 | navigate('/')
14 | }
15 |
16 | return (
17 |
18 |
19 |
20 |
21 |
Login
22 |
28 |
29 |
30 |
Hello World.
31 |
32 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Fugiat
33 | consectetur numquam nemo molestias illo non quisquam, ipsum in quae
34 | totam laudantium iure similique tenetur.
35 |
36 |
Don't you have an account?
37 |
38 |
Register
39 |
40 |
41 |
42 |
43 | );
44 | };
45 |
46 | export default Login;
47 |
--------------------------------------------------------------------------------
/src/pages/login/login.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 |
3 | .login {
4 | @include themify($themes) {
5 | height: 100vh;
6 | background-color: rgb(195, 190, 255);
7 | display: flex;
8 | justify-content: center;
9 | align-items: center;
10 |
11 | .card {
12 | display: flex;
13 | width: 55%;
14 | background-color: themed("bg");
15 | min-height: 32rem;
16 | border-radius: 10px;
17 | overflow: hidden;
18 | -webkit-border-radius: 10px;
19 | -moz-border-radius: 10px;
20 | -ms-border-radius: 10px;
21 | -o-border-radius: 10px;
22 | @media screen and (max-width:480px) {
23 | flex-direction: column;
24 | }
25 | .left {
26 | flex: 1;
27 | background: linear-gradient(
28 | rgba(39, 11, 96, 0.8),
29 | rgba(39, 11, 96, 0.3)
30 | ),
31 | url("https://i.postimg.cc/TY6mPs7J/login3.jpg");
32 | background-size: cover;
33 | object-fit: cover;
34 | background-position: center;
35 | padding: 2rem;
36 | display: flex;
37 | justify-content: center;
38 | flex-direction: column;
39 | gap: 1.2rem;
40 | @include mobile{
41 | display: none;
42 | }
43 | h1 {
44 | color: #fff;
45 | font-size: 5rem;
46 | line-height: 1;
47 | }
48 | p {
49 | color: #fff;
50 | }
51 | span {
52 | color: #fff;
53 | font-size: 0.8rem;
54 | }
55 | button {
56 | padding: 0.8rem;
57 | font-size: 1rem;
58 | width: 50%;
59 | background-color: white;
60 | color: #33305a;
61 | cursor: pointer;
62 | font-weight: bold;
63 | }
64 | }
65 |
66 | .right {
67 | flex: 1;
68 | padding: 2rem;
69 | display: flex;
70 | flex-direction: column;
71 | justify-content: center;
72 | gap: 30px;
73 |
74 | h1 {
75 | font-size: 2.5rem;
76 | }
77 | form {
78 | input {
79 | width: 100%;
80 | border-bottom: 1px solid gray;
81 | margin-bottom: 1rem;
82 | padding: 10px 0;
83 | }
84 | button {
85 | width: 50%;
86 | padding: 0.8rem;
87 | font-weight: bold;
88 | color: white;
89 | background-color: #655dcd;
90 | margin-top: 1rem;
91 | cursor: pointer;
92 | }
93 | }
94 | }
95 | }
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/src/pages/profile/Profile.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import "./profile.scss";
3 | import postsData from "../../data/postsData";
4 | import commentsData from "../../data/commentsData";
5 | import FacebookTwoToneIcon from "@mui/icons-material/FacebookTwoTone";
6 | import LinkedInIcon from "@mui/icons-material/LinkedIn";
7 | import InstagramIcon from "@mui/icons-material/Instagram";
8 | import PinterestIcon from "@mui/icons-material/Pinterest";
9 | import TwitterIcon from "@mui/icons-material/Twitter";
10 | import PlaceIcon from "@mui/icons-material/Place";
11 | import LanguageIcon from "@mui/icons-material/Language";
12 | import EmailOutlinedIcon from "@mui/icons-material/EmailOutlined";
13 | import MoreVertIcon from "@mui/icons-material/MoreVert";
14 | import MoreHorizOutlinedIcon from "@mui/icons-material/MoreHorizOutlined";
15 | import FavoriteBorderOutlinedIcon from "@mui/icons-material/FavoriteBorderOutlined";
16 | import FavoriteOutlinedIcon from "@mui/icons-material/FavoriteOutlined";
17 | import TextsmsOutlinedIcon from "@mui/icons-material/TextsmsOutlined";
18 | import ShareOutlinedIcon from "@mui/icons-material/ShareOutlined";
19 | import Posts from "../../components/posts/Posts";
20 | import { useParams } from "react-router-dom";
21 | import Post from "../../components/posts/post/Post";
22 | import Comments from "../../components/posts/comments/Comments";
23 |
24 | const Profile = () => {
25 | const userId = useParams();
26 | const userDetails = postsData.filter((x) => x.id == userId.id);
27 | const userData = userDetails[0];
28 |
29 |
30 | const [like, setLike] = useState(false);
31 |
32 | const [commentOpen, setCommentOpen] = useState(false);
33 | return (
34 |
35 |
36 |
37 |
43 |
44 |
45 |
46 |
57 |
58 |
{userData.name}
59 |
60 |
61 |
62 |
{userData.place}
63 |
64 |
65 |
66 | {userData.lan}
67 |
68 |
69 |
Follow
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | {userData.name}
85 |
86 | 1 min ago
87 |
88 |
89 |
90 |
91 |
92 |
{userData.desc}
93 |
94 |
95 |
96 |
setLike(!like)}>
97 | {like ? (
98 |
99 | ) : (
100 |
101 | )}
102 | 12 Likes
103 |
104 |
setCommentOpen(!commentOpen)}>
105 |
106 | 2 Comments
107 |
108 |
109 |
110 |
111 |
112 | {commentOpen &&
}
113 |
114 |
115 |
116 | );
117 | };
118 |
119 | export default Profile;
120 |
--------------------------------------------------------------------------------
/src/pages/profile/profile.scss:
--------------------------------------------------------------------------------
1 | @import "../../App.scss";
2 |
3 | .profile {
4 | @include themify($themes) {
5 | background-color: themed("bgSoft");
6 |
7 | .images {
8 | width: 100%;
9 | height: 300px;
10 | position: relative;
11 | @include mobile{
12 | height: 200px;
13 | }
14 |
15 | .cover {
16 | width: 100%;
17 | height: 100%;
18 | object-fit: cover;
19 | }
20 |
21 | .profilePic {
22 | width: 180px;
23 | height: 180px;
24 | border-radius: 50%;
25 | object-fit: cover;
26 | position: absolute;
27 | left: 0;
28 | right: 0;
29 | margin: auto;
30 | top: 200px;
31 | @include mobile{
32 | width: 120px;
33 | height: 120px;
34 | top: 150px;
35 | }
36 |
37 |
38 | }
39 | }
40 | .profileContainer {
41 | padding: 1rem 3rem;
42 |
43 | @include mobile{
44 | padding: 10px;
45 | }
46 |
47 | // @include tablet{
48 | // padding: 20px;
49 | // }
50 |
51 | .userInfo {
52 | height: 250px;
53 | -webkit-box-shadow: 0px 0px 25px -10px rgba(0, 0, 0, 0.38);
54 | -moz-box-shadow: 0px 0px 25px -10px rgba(0, 0, 0, 0.38);
55 | box-shadow: 0px 0px 25px -10px rgba(0, 0, 0, 0.38);
56 | border-radius: 20px;
57 | background-color: themed("bg");
58 | color: themed("textColor");
59 | padding: 50px;
60 | display: flex;
61 | align-items: center;
62 | justify-content: space-between;
63 | margin-bottom: 20px;
64 |
65 | @include mobile{
66 | flex-direction: column;
67 | height: 30vh;
68 | padding: 20px;
69 | margin-top: 80px;
70 | }
71 |
72 | .left {
73 | flex: 1;
74 | display: flex;
75 | gap: 10px;
76 |
77 | // @include tablet{
78 | // flex-wrap: wrap;
79 | // }
80 |
81 | a {
82 | color: themed("textColorSoft");
83 | }
84 | }
85 |
86 | .center {
87 | flex: 3;
88 | display: flex;
89 | flex-direction: column;
90 | align-items: center;
91 | gap: 10px;
92 |
93 | span {
94 | font-size: 30px;
95 | font-weight: 600;
96 | @include mobile{
97 | font-size: 25px;
98 | }
99 | }
100 |
101 | .info {
102 | width: 100%;
103 | display: flex;
104 | align-items: center;
105 | justify-content: space-around;
106 |
107 | .item {
108 | display: flex;
109 | align-items: center;
110 | gap: 5px;
111 | color: themed("textColorSoft");
112 | @include mobile{
113 | gap: 3px;
114 | }
115 | span {
116 | font-size: 14px;
117 | @include mobile{
118 | margin-right:8px ;
119 | }
120 | }
121 | }
122 | }
123 | button {
124 | border: none;
125 | background-color: #5271ff;
126 | color: white;
127 | padding: 10px 20px;
128 | // border-radius: 5px;
129 | cursor: pointer;
130 | }
131 | }
132 |
133 | .right {
134 | flex: 1;
135 | display: flex;
136 | align-items: center;
137 | justify-content: flex-end;
138 | gap: 10px;
139 | }
140 | }
141 | }
142 |
143 | .userPosts{
144 | padding: 0 1rem;
145 | .container {
146 | background-color: themed('bg');
147 | color: themed("textColor");
148 | border-radius: 15px;
149 | -webkit-border-radius: 15px;
150 | -moz-border-radius: 15px;
151 | -ms-border-radius: 15px;
152 | -o-border-radius: 15px;
153 | box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
154 | -webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1);
155 | padding: 1.2rem;
156 | .user {
157 | display: flex;
158 | justify-content: space-between;
159 | align-items: center;
160 | .userInfo {
161 | display: flex;
162 | align-items: center;
163 | gap: 10px;
164 | img {
165 | width: 40px;
166 | height: 40px;
167 | border-radius: 50%;
168 | -webkit-border-radius: 50%;
169 | -moz-border-radius: 50%;
170 | -ms-border-radius: 50%;
171 | -o-border-radius: 50%;
172 | object-fit: cover;
173 | }
174 | .details {
175 | display: flex;
176 | flex-direction: column;
177 | gap: 4px;
178 | .name {
179 | font-weight: 500;
180 | }
181 | .date {
182 | font-size: 12px;
183 | color: themed("textColorSoft");
184 | }
185 | }
186 | }
187 | }
188 | .content{
189 | margin: 1.2rem 0;
190 | // p{
191 |
192 | // }
193 | img{
194 | width: 100%;
195 | max-height: 500px;
196 | object-fit: cover;
197 | margin-top: 10px;
198 | }
199 | }
200 | .actions{
201 | display: flex;
202 | align-items: center;
203 | gap: 30px;
204 | color: themed('textColor');
205 | .item{
206 | display: flex;
207 | align-items: center;
208 | gap: 8px;
209 | cursor: pointer;
210 | font-size: 15px;
211 | }
212 | }
213 | }
214 | }
215 | }
216 |
217 | }
218 |
--------------------------------------------------------------------------------
/src/pages/register/Register.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./register.scss";
3 | import { Link } from "react-router-dom";
4 |
5 |
6 | const Register = () => {
7 | return (
8 |
9 |
10 |
11 |
12 |
Register
13 |
20 |
21 |
22 |
React Social.
23 |
24 | Lorem ipsum dolor sit amet consectetur, adipisicing elit. Fugiat
25 | consectetur numquam nemo molestias illo non quisquam, ipsum in quae
26 | totam laudantium iure similique tenetur.
27 |
28 |
Do you have an account?
29 |
30 |
Login
31 |
32 |
33 |
34 |
35 | );
36 | };
37 |
38 | export default Register;
39 |
--------------------------------------------------------------------------------
/src/pages/register/register.scss:
--------------------------------------------------------------------------------
1 | .login {
2 | height: 100vh;
3 | background-color: rgb(195, 190, 255);
4 | display: flex;
5 | justify-content: center;
6 | align-items: center;
7 |
8 | .card {
9 | display: flex;
10 | width: 55%;
11 | background-color: white;
12 | min-height: 32rem;
13 | border-radius: 10px;
14 | overflow: hidden;
15 | @media screen and (max-width: 480px) {
16 | flex-direction: column;
17 | width: 90%;
18 | }
19 |
20 | .left {
21 | display: none;
22 | flex: 1;
23 | background: linear-gradient(rgba(39, 11, 96, 0.8), rgba(39, 11, 96, 0.3)),
24 | url("src/assets/images/login3.jpg");
25 | background-size: cover;
26 | object-fit: cover;
27 | background-position: center;
28 | padding: 2rem;
29 | display: flex;
30 | justify-content: center;
31 | flex-direction: column;
32 | gap: 1.2rem;
33 | @media screen and (max-width: 480px) {
34 | display: none;
35 | width: 100%;
36 | }
37 | h1 {
38 | color: #fff;
39 | font-size: 5rem;
40 | line-height: 1;
41 | }
42 | p {
43 | color: #fff;
44 | }
45 | span {
46 | color: #fff;
47 | font-size: 0.8rem;
48 | }
49 | button {
50 | padding: 0.8rem;
51 | font-size: 1rem;
52 | width: 50%;
53 | background-color: white;
54 | color: #655dcd;
55 | cursor: pointer;
56 | font-weight: bold;
57 | }
58 | }
59 |
60 | .right {
61 | flex: 1;
62 | padding: 2rem;
63 | display: flex;
64 | flex-direction: column;
65 | justify-content: center;
66 | gap: 30px;
67 |
68 | h1 {
69 | font-size: 2.5rem;
70 | }
71 | form {
72 | input {
73 | width: 100%;
74 | border-bottom: 1px solid gray;
75 | margin-bottom: 1rem;
76 | padding: 10px 0;
77 | }
78 | button {
79 | width: 50%;
80 | padding: 0.8rem;
81 | font-weight: bold;
82 | color: white;
83 | background-color: #655dcd;
84 | margin-top: 1rem;
85 | cursor: pointer;
86 | }
87 | }
88 | }
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/src/scroll/scrollToTop.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react";
2 | import { useLocation } from "react-router-dom";
3 |
4 | export default function ScrollToTop() {
5 | const { pathname } = useLocation();
6 |
7 | useEffect(() => {
8 | window.scrollTo(0, 0);
9 | }, [pathname]);
10 |
11 | return null;
12 | }
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()]
7 | })
8 |
--------------------------------------------------------------------------------