├── .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 | 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 | 18 | 19 |
20 |
21 |
22 |
23 | 24 | Josh Butler 25 |
26 |
27 | 28 | 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 |
9 | 10 | 11 |
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 |
23 | 24 | 25 | 26 | 27 |
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 | 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 | cover 37 | profile-pic 43 |
44 |
45 |
46 | 57 |
58 | {userData.name} 59 |
60 |
61 | 62 | {userData.place} 63 |
64 |
65 | 66 | {userData.lan} 67 |
68 |
69 | 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 |
14 | 15 | 16 | 17 | 18 | 19 |
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 | 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 | --------------------------------------------------------------------------------