├── .gitignore ├── README.md ├── data └── db.json ├── index.html ├── package-lock.json ├── package.json ├── public └── vite.svg ├── src ├── App.jsx ├── api │ ├── postsApi.js │ └── usersApi.js ├── components │ ├── Header.jsx │ ├── Nav.jsx │ ├── Post.jsx │ ├── PostsList.jsx │ └── skeletons │ │ ├── Skeleton.css │ │ ├── Skeleton.jsx │ │ └── SkeletonPost.jsx ├── index.css └── main.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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # "Skeleton Loading Components with Animation | React & CSS" 2 | 3 | --- 4 | 5 | ### Author Links 6 | 7 | 👋 Hello, I'm Dave Gray. 8 | 9 | 📚 [My Courses](https://courses.davegray.codes/) 10 | 11 | ✅ [Check out my YouTube Channel with hundreds of tutorials](https://www.youtube.com/DaveGrayTeachesCode). 12 | 13 | 🚩 [Subscribe to my channel](https://bit.ly/3nGHmNn) 14 | 15 | ☕ [Buy Me A Coffee](https://buymeacoffee.com/DaveGray) 16 | 17 | 🚀 Follow Me: 18 | 19 | - [Twitter](https://twitter.com/yesdavidgray) 20 | - [LinkedIn](https://www.linkedin.com/in/davidagray/) 21 | - [Blog](https://yesdavidgray.com) 22 | - [Reddit](https://www.reddit.com/user/DaveOnEleven) 23 | 24 | --- 25 | 26 | ### Description 27 | 28 | 📺 [YouTube Video](https://youtu.be/cNQTg920Nx0) for this repository. 29 | 30 | --- 31 | 32 | ### 💻 Source Code 33 | 34 | - 🔗 [Source Code for this tutorial](https://github.com/gitdagray/skeleton-loading) 35 | 36 | --- 37 | 38 | ### 🎓 Academic Honesty 39 | 40 | **DO NOT COPY FOR AN ASSIGNMENT** - Avoid plagiarism and adhere to the spirit of this [Academic Honesty Policy](https://www.freecodecamp.org/news/academic-honesty-policy/). 41 | 42 | --- 43 | 44 | ### 📚 Tutorial References 45 | 46 | - 🔗 [SWR](https://swr.vercel.app/) 47 | - 🔗 [NPM: JSON Server](https://www.npmjs.com/package/json-server) 48 | 49 | ### ⚙ VS Code Extensions I Use: 50 | 51 | - 🔗 [ES7 React JS Snippets Extension](https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets) 52 | - 🔗 [vscode-icons VS Code Extension](https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons) 53 | - 🔗 [Github Themes VS Code Extension](https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme) 54 | -------------------------------------------------------------------------------- /data/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "posts": [ 3 | { 4 | "userId": 1, 5 | "id": 1, 6 | "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", 7 | "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" 8 | }, 9 | { 10 | "userId": 1, 11 | "id": 2, 12 | "title": "qui est esse", 13 | "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla" 14 | }, 15 | { 16 | "userId": 1, 17 | "id": 3, 18 | "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut", 19 | "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut" 20 | }, 21 | { 22 | "userId": 1, 23 | "id": 4, 24 | "title": "eum et est occaecati", 25 | "body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit" 26 | }, 27 | { 28 | "userId": 1, 29 | "id": 5, 30 | "title": "nesciunt quas odio", 31 | "body": "repudiandae veniam quaerat sunt sed\nalias aut fugiat sit autem sed est\nvoluptatem omnis possimus esse voluptatibus quis\nest aut tenetur dolor neque" 32 | }, 33 | { 34 | "userId": 1, 35 | "id": 6, 36 | "title": "dolorem eum magni eos aperiam quia", 37 | "body": "ut aspernatur corporis harum nihil quis provident sequi\nmollitia nobis aliquid molestiae\nperspiciatis et ea nemo ab reprehenderit accusantium quas\nvoluptate dolores velit et doloremque molestiae" 38 | }, 39 | { 40 | "userId": 1, 41 | "id": 7, 42 | "title": "magnam facilis autem", 43 | "body": "dolore placeat quibusdam ea quo vitae\nmagni quis enim qui quis quo nemo aut saepe\nquidem repellat excepturi ut quia\nsunt ut sequi eos ea sed quas" 44 | }, 45 | { 46 | "userId": 1, 47 | "id": 8, 48 | "title": "dolorem dolore est ipsam", 49 | "body": "dignissimos aperiam dolorem qui eum\nfacilis quibusdam animi sint suscipit qui sint possimus cum\nquaerat magni maiores excepturi\nipsam ut commodi dolor voluptatum modi aut vitae" 50 | }, 51 | { 52 | "userId": 1, 53 | "id": 9, 54 | "title": "nesciunt iure omnis dolorem tempora et accusantium", 55 | "body": "consectetur animi nesciunt iure dolore\nenim quia ad\nveniam autem ut quam aut nobis\net est aut quod aut provident voluptas autem voluptas" 56 | }, 57 | { 58 | "userId": 1, 59 | "id": 10, 60 | "title": "optio molestias id quia eum", 61 | "body": "quo et expedita modi cum officia vel magni\ndoloribus qui repudiandae\nvero nisi sit\nquos veniam quod sed accusamus veritatis error" 62 | }, 63 | { 64 | "userId": 2, 65 | "id": 11, 66 | "title": "et ea vero quia laudantium autem", 67 | "body": "delectus reiciendis molestiae occaecati non minima eveniet qui voluptatibus\naccusamus in eum beatae sit\nvel qui neque voluptates ut commodi qui incidunt\nut animi commodi" 68 | }, 69 | { 70 | "userId": 2, 71 | "id": 12, 72 | "title": "in quibusdam tempore odit est dolorem", 73 | "body": "itaque id aut magnam\npraesentium quia et ea odit et ea voluptas et\nsapiente quia nihil amet occaecati quia id voluptatem\nincidunt ea est distinctio odio" 74 | }, 75 | { 76 | "userId": 2, 77 | "id": 13, 78 | "title": "dolorum ut in voluptas mollitia et saepe quo animi", 79 | "body": "aut dicta possimus sint mollitia voluptas commodi quo doloremque\niste corrupti reiciendis voluptatem eius rerum\nsit cumque quod eligendi laborum minima\nperferendis recusandae assumenda consectetur porro architecto ipsum ipsam" 80 | }, 81 | { 82 | "userId": 2, 83 | "id": 14, 84 | "title": "voluptatem eligendi optio", 85 | "body": "fuga et accusamus dolorum perferendis illo voluptas\nnon doloremque neque facere\nad qui dolorum molestiae beatae\nsed aut voluptas totam sit illum" 86 | }, 87 | { 88 | "userId": 2, 89 | "id": 15, 90 | "title": "eveniet quod temporibus", 91 | "body": "reprehenderit quos placeat\nvelit minima officia dolores impedit repudiandae molestiae nam\nvoluptas recusandae quis delectus\nofficiis harum fugiat vitae" 92 | }, 93 | { 94 | "userId": 2, 95 | "id": 16, 96 | "title": "sint suscipit perspiciatis velit dolorum rerum ipsa laboriosam odio", 97 | "body": "suscipit nam nisi quo aperiam aut\nasperiores eos fugit maiores voluptatibus quia\nvoluptatem quis ullam qui in alias quia est\nconsequatur magni mollitia accusamus ea nisi voluptate dicta" 98 | }, 99 | { 100 | "userId": 2, 101 | "id": 17, 102 | "title": "fugit voluptas sed molestias voluptatem provident", 103 | "body": "eos voluptas et aut odit natus earum\naspernatur fuga molestiae ullam\ndeserunt ratione qui eos\nqui nihil ratione nemo velit ut aut id quo" 104 | }, 105 | { 106 | "userId": 2, 107 | "id": 18, 108 | "title": "voluptate et itaque vero tempora molestiae", 109 | "body": "eveniet quo quis\nlaborum totam consequatur non dolor\nut et est repudiandae\nest voluptatem vel debitis et magnam" 110 | }, 111 | { 112 | "userId": 2, 113 | "id": 19, 114 | "title": "adipisci placeat illum aut reiciendis qui", 115 | "body": "illum quis cupiditate provident sit magnam\nea sed aut omnis\nveniam maiores ullam consequatur atque\nadipisci quo iste expedita sit quos voluptas" 116 | }, 117 | { 118 | "userId": 2, 119 | "id": 20, 120 | "title": "doloribus ad provident suscipit at", 121 | "body": "qui consequuntur ducimus possimus quisquam amet similique\nsuscipit porro ipsam amet\neos veritatis officiis exercitationem vel fugit aut necessitatibus totam\nomnis rerum consequatur expedita quidem cumque explicabo" 122 | }, 123 | { 124 | "userId": 3, 125 | "id": 21, 126 | "title": "asperiores ea ipsam voluptatibus modi minima quia sint", 127 | "body": "repellat aliquid praesentium dolorem quo\nsed totam minus non itaque\nnihil labore molestiae sunt dolor eveniet hic recusandae veniam\ntempora et tenetur expedita sunt" 128 | }, 129 | { 130 | "userId": 3, 131 | "id": 22, 132 | "title": "dolor sint quo a velit explicabo quia nam", 133 | "body": "eos qui et ipsum ipsam suscipit aut\nsed omnis non odio\nexpedita earum mollitia molestiae aut atque rem suscipit\nnam impedit esse" 134 | }, 135 | { 136 | "userId": 3, 137 | "id": 23, 138 | "title": "maxime id vitae nihil numquam", 139 | "body": "veritatis unde neque eligendi\nquae quod architecto quo neque vitae\nest illo sit tempora doloremque fugit quod\net et vel beatae sequi ullam sed tenetur perspiciatis" 140 | }, 141 | { 142 | "userId": 3, 143 | "id": 24, 144 | "title": "autem hic labore sunt dolores incidunt", 145 | "body": "enim et ex nulla\nomnis voluptas quia qui\nvoluptatem consequatur numquam aliquam sunt\ntotam recusandae id dignissimos aut sed asperiores deserunt" 146 | }, 147 | { 148 | "userId": 3, 149 | "id": 25, 150 | "title": "rem alias distinctio quo quis", 151 | "body": "ullam consequatur ut\nomnis quis sit vel consequuntur\nipsa eligendi ipsum molestiae et omnis error nostrum\nmolestiae illo tempore quia et distinctio" 152 | }, 153 | { 154 | "userId": 3, 155 | "id": 26, 156 | "title": "est et quae odit qui non", 157 | "body": "similique esse doloribus nihil accusamus\nomnis dolorem fuga consequuntur reprehenderit fugit recusandae temporibus\nperspiciatis cum ut laudantium\nomnis aut molestiae vel vero" 158 | }, 159 | { 160 | "userId": 3, 161 | "id": 27, 162 | "title": "quasi id et eos tenetur aut quo autem", 163 | "body": "eum sed dolores ipsam sint possimus debitis occaecati\ndebitis qui qui et\nut placeat enim earum aut odit facilis\nconsequatur suscipit necessitatibus rerum sed inventore temporibus consequatur" 164 | }, 165 | { 166 | "userId": 3, 167 | "id": 28, 168 | "title": "delectus ullam et corporis nulla voluptas sequi", 169 | "body": "non et quaerat ex quae ad maiores\nmaiores recusandae totam aut blanditiis mollitia quas illo\nut voluptatibus voluptatem\nsimilique nostrum eum" 170 | }, 171 | { 172 | "userId": 3, 173 | "id": 29, 174 | "title": "iusto eius quod necessitatibus culpa ea", 175 | "body": "odit magnam ut saepe sed non qui\ntempora atque nihil\naccusamus illum doloribus illo dolor\neligendi repudiandae odit magni similique sed cum maiores" 176 | }, 177 | { 178 | "userId": 3, 179 | "id": 30, 180 | "title": "a quo magni similique perferendis", 181 | "body": "alias dolor cumque\nimpedit blanditiis non eveniet odio maxime\nblanditiis amet eius quis tempora quia autem rem\na provident perspiciatis quia" 182 | }, 183 | { 184 | "userId": 4, 185 | "id": 31, 186 | "title": "ullam ut quidem id aut vel consequuntur", 187 | "body": "debitis eius sed quibusdam non quis consectetur vitae\nimpedit ut qui consequatur sed aut in\nquidem sit nostrum et maiores adipisci atque\nquaerat voluptatem adipisci repudiandae" 188 | }, 189 | { 190 | "userId": 4, 191 | "id": 32, 192 | "title": "doloremque illum aliquid sunt", 193 | "body": "deserunt eos nobis asperiores et hic\nest debitis repellat molestiae optio\nnihil ratione ut eos beatae quibusdam distinctio maiores\nearum voluptates et aut adipisci ea maiores voluptas maxime" 194 | }, 195 | { 196 | "userId": 4, 197 | "id": 33, 198 | "title": "qui explicabo molestiae dolorem", 199 | "body": "rerum ut et numquam laborum odit est sit\nid qui sint in\nquasi tenetur tempore aperiam et quaerat qui in\nrerum officiis sequi cumque quod" 200 | }, 201 | { 202 | "userId": 4, 203 | "id": 34, 204 | "title": "magnam ut rerum iure", 205 | "body": "ea velit perferendis earum ut voluptatem voluptate itaque iusto\ntotam pariatur in\nnemo voluptatem voluptatem autem magni tempora minima in\nest distinctio qui assumenda accusamus dignissimos officia nesciunt nobis" 206 | }, 207 | { 208 | "userId": 4, 209 | "id": 35, 210 | "title": "id nihil consequatur molestias animi provident", 211 | "body": "nisi error delectus possimus ut eligendi vitae\nplaceat eos harum cupiditate facilis reprehenderit voluptatem beatae\nmodi ducimus quo illum voluptas eligendi\net nobis quia fugit" 212 | }, 213 | { 214 | "userId": 4, 215 | "id": 36, 216 | "title": "fuga nam accusamus voluptas reiciendis itaque", 217 | "body": "ad mollitia et omnis minus architecto odit\nvoluptas doloremque maxime aut non ipsa qui alias veniam\nblanditiis culpa aut quia nihil cumque facere et occaecati\nqui aspernatur quia eaque ut aperiam inventore" 218 | }, 219 | { 220 | "userId": 4, 221 | "id": 37, 222 | "title": "provident vel ut sit ratione est", 223 | "body": "debitis et eaque non officia sed nesciunt pariatur vel\nvoluptatem iste vero et ea\nnumquam aut expedita ipsum nulla in\nvoluptates omnis consequatur aut enim officiis in quam qui" 224 | }, 225 | { 226 | "userId": 4, 227 | "id": 38, 228 | "title": "explicabo et eos deleniti nostrum ab id repellendus", 229 | "body": "animi esse sit aut sit nesciunt assumenda eum voluptas\nquia voluptatibus provident quia necessitatibus ea\nrerum repudiandae quia voluptatem delectus fugit aut id quia\nratione optio eos iusto veniam iure" 230 | }, 231 | { 232 | "userId": 4, 233 | "id": 39, 234 | "title": "eos dolorem iste accusantium est eaque quam", 235 | "body": "corporis rerum ducimus vel eum accusantium\nmaxime aspernatur a porro possimus iste omnis\nest in deleniti asperiores fuga aut\nvoluptas sapiente vel dolore minus voluptatem incidunt ex" 236 | }, 237 | { 238 | "userId": 4, 239 | "id": 40, 240 | "title": "enim quo cumque", 241 | "body": "ut voluptatum aliquid illo tenetur nemo sequi quo facilis\nipsum rem optio mollitia quas\nvoluptatem eum voluptas qui\nunde omnis voluptatem iure quasi maxime voluptas nam" 242 | }, 243 | { 244 | "userId": 5, 245 | "id": 41, 246 | "title": "non est facere", 247 | "body": "molestias id nostrum\nexcepturi molestiae dolore omnis repellendus quaerat saepe\nconsectetur iste quaerat tenetur asperiores accusamus ex ut\nnam quidem est ducimus sunt debitis saepe" 248 | }, 249 | { 250 | "userId": 5, 251 | "id": 42, 252 | "title": "commodi ullam sint et excepturi error explicabo praesentium voluptas", 253 | "body": "odio fugit voluptatum ducimus earum autem est incidunt voluptatem\nodit reiciendis aliquam sunt sequi nulla dolorem\nnon facere repellendus voluptates quia\nratione harum vitae ut" 254 | }, 255 | { 256 | "userId": 5, 257 | "id": 43, 258 | "title": "eligendi iste nostrum consequuntur adipisci praesentium sit beatae perferendis", 259 | "body": "similique fugit est\nillum et dolorum harum et voluptate eaque quidem\nexercitationem quos nam commodi possimus cum odio nihil nulla\ndolorum exercitationem magnam ex et a et distinctio debitis" 260 | }, 261 | { 262 | "userId": 5, 263 | "id": 44, 264 | "title": "optio dolor molestias sit", 265 | "body": "temporibus est consectetur dolore\net libero debitis vel velit laboriosam quia\nipsum quibusdam qui itaque fuga rem aut\nea et iure quam sed maxime ut distinctio quae" 266 | }, 267 | { 268 | "userId": 5, 269 | "id": 45, 270 | "title": "ut numquam possimus omnis eius suscipit laudantium iure", 271 | "body": "est natus reiciendis nihil possimus aut provident\nex et dolor\nrepellat pariatur est\nnobis rerum repellendus dolorem autem" 272 | }, 273 | { 274 | "userId": 5, 275 | "id": 46, 276 | "title": "aut quo modi neque nostrum ducimus", 277 | "body": "voluptatem quisquam iste\nvoluptatibus natus officiis facilis dolorem\nquis quas ipsam\nvel et voluptatum in aliquid" 278 | }, 279 | { 280 | "userId": 5, 281 | "id": 47, 282 | "title": "quibusdam cumque rem aut deserunt", 283 | "body": "voluptatem assumenda ut qui ut cupiditate aut impedit veniam\noccaecati nemo illum voluptatem laudantium\nmolestiae beatae rerum ea iure soluta nostrum\neligendi et voluptate" 284 | }, 285 | { 286 | "userId": 5, 287 | "id": 48, 288 | "title": "ut voluptatem illum ea doloribus itaque eos", 289 | "body": "voluptates quo voluptatem facilis iure occaecati\nvel assumenda rerum officia et\nillum perspiciatis ab deleniti\nlaudantium repellat ad ut et autem reprehenderit" 290 | }, 291 | { 292 | "userId": 5, 293 | "id": 49, 294 | "title": "laborum non sunt aut ut assumenda perspiciatis voluptas", 295 | "body": "inventore ab sint\nnatus fugit id nulla sequi architecto nihil quaerat\neos tenetur in in eum veritatis non\nquibusdam officiis aspernatur cumque aut commodi aut" 296 | }, 297 | { 298 | "userId": 5, 299 | "id": 50, 300 | "title": "repellendus qui recusandae incidunt voluptates tenetur qui omnis exercitationem", 301 | "body": "error suscipit maxime adipisci consequuntur recusandae\nvoluptas eligendi et est et voluptates\nquia distinctio ab amet quaerat molestiae et vitae\nadipisci impedit sequi nesciunt quis consectetur" 302 | }, 303 | { 304 | "userId": 6, 305 | "id": 51, 306 | "title": "soluta aliquam aperiam consequatur illo quis voluptas", 307 | "body": "sunt dolores aut doloribus\ndolore doloribus voluptates tempora et\ndoloremque et quo\ncum asperiores sit consectetur dolorem" 308 | }, 309 | { 310 | "userId": 6, 311 | "id": 52, 312 | "title": "qui enim et consequuntur quia animi quis voluptate quibusdam", 313 | "body": "iusto est quibusdam fuga quas quaerat molestias\na enim ut sit accusamus enim\ntemporibus iusto accusantium provident architecto\nsoluta esse reprehenderit qui laborum" 314 | }, 315 | { 316 | "userId": 6, 317 | "id": 53, 318 | "title": "ut quo aut ducimus alias", 319 | "body": "minima harum praesentium eum rerum illo dolore\nquasi exercitationem rerum nam\nporro quis neque quo\nconsequatur minus dolor quidem veritatis sunt non explicabo similique" 320 | }, 321 | { 322 | "userId": 6, 323 | "id": 54, 324 | "title": "sit asperiores ipsam eveniet odio non quia", 325 | "body": "totam corporis dignissimos\nvitae dolorem ut occaecati accusamus\nex velit deserunt\net exercitationem vero incidunt corrupti mollitia" 326 | }, 327 | { 328 | "userId": 6, 329 | "id": 55, 330 | "title": "sit vel voluptatem et non libero", 331 | "body": "debitis excepturi ea perferendis harum libero optio\neos accusamus cum fuga ut sapiente repudiandae\net ut incidunt omnis molestiae\nnihil ut eum odit" 332 | }, 333 | { 334 | "userId": 6, 335 | "id": 56, 336 | "title": "qui et at rerum necessitatibus", 337 | "body": "aut est omnis dolores\nneque rerum quod ea rerum velit pariatur beatae excepturi\net provident voluptas corrupti\ncorporis harum reprehenderit dolores eligendi" 338 | }, 339 | { 340 | "userId": 6, 341 | "id": 57, 342 | "title": "sed ab est est", 343 | "body": "at pariatur consequuntur earum quidem\nquo est laudantium soluta voluptatem\nqui ullam et est\net cum voluptas voluptatum repellat est" 344 | }, 345 | { 346 | "userId": 6, 347 | "id": 58, 348 | "title": "voluptatum itaque dolores nisi et quasi", 349 | "body": "veniam voluptatum quae adipisci id\net id quia eos ad et dolorem\naliquam quo nisi sunt eos impedit error\nad similique veniam" 350 | }, 351 | { 352 | "userId": 6, 353 | "id": 59, 354 | "title": "qui commodi dolor at maiores et quis id accusantium", 355 | "body": "perspiciatis et quam ea autem temporibus non voluptatibus qui\nbeatae a earum officia nesciunt dolores suscipit voluptas et\nanimi doloribus cum rerum quas et magni\net hic ut ut commodi expedita sunt" 356 | }, 357 | { 358 | "userId": 6, 359 | "id": 60, 360 | "title": "consequatur placeat omnis quisquam quia reprehenderit fugit veritatis facere", 361 | "body": "asperiores sunt ab assumenda cumque modi velit\nqui esse omnis\nvoluptate et fuga perferendis voluptas\nillo ratione amet aut et omnis" 362 | }, 363 | { 364 | "userId": 7, 365 | "id": 61, 366 | "title": "voluptatem doloribus consectetur est ut ducimus", 367 | "body": "ab nemo optio odio\ndelectus tenetur corporis similique nobis repellendus rerum omnis facilis\nvero blanditiis debitis in nesciunt doloribus dicta dolores\nmagnam minus velit" 368 | }, 369 | { 370 | "userId": 7, 371 | "id": 62, 372 | "title": "beatae enim quia vel", 373 | "body": "enim aspernatur illo distinctio quae praesentium\nbeatae alias amet delectus qui voluptate distinctio\nodit sint accusantium autem omnis\nquo molestiae omnis ea eveniet optio" 374 | }, 375 | { 376 | "userId": 7, 377 | "id": 63, 378 | "title": "voluptas blanditiis repellendus animi ducimus error sapiente et suscipit", 379 | "body": "enim adipisci aspernatur nemo\nnumquam omnis facere dolorem dolor ex quis temporibus incidunt\nab delectus culpa quo reprehenderit blanditiis asperiores\naccusantium ut quam in voluptatibus voluptas ipsam dicta" 380 | }, 381 | { 382 | "userId": 7, 383 | "id": 64, 384 | "title": "et fugit quas eum in in aperiam quod", 385 | "body": "id velit blanditiis\neum ea voluptatem\nmolestiae sint occaecati est eos perspiciatis\nincidunt a error provident eaque aut aut qui" 386 | }, 387 | { 388 | "userId": 7, 389 | "id": 65, 390 | "title": "consequatur id enim sunt et et", 391 | "body": "voluptatibus ex esse\nsint explicabo est aliquid cumque adipisci fuga repellat labore\nmolestiae corrupti ex saepe at asperiores et perferendis\nnatus id esse incidunt pariatur" 392 | }, 393 | { 394 | "userId": 7, 395 | "id": 66, 396 | "title": "repudiandae ea animi iusto", 397 | "body": "officia veritatis tenetur vero qui itaque\nsint non ratione\nsed et ut asperiores iusto eos molestiae nostrum\nveritatis quibusdam et nemo iusto saepe" 398 | }, 399 | { 400 | "userId": 7, 401 | "id": 67, 402 | "title": "aliquid eos sed fuga est maxime repellendus", 403 | "body": "reprehenderit id nostrum\nvoluptas doloremque pariatur sint et accusantium quia quod aspernatur\net fugiat amet\nnon sapiente et consequatur necessitatibus molestiae" 404 | }, 405 | { 406 | "userId": 7, 407 | "id": 68, 408 | "title": "odio quis facere architecto reiciendis optio", 409 | "body": "magnam molestiae perferendis quisquam\nqui cum reiciendis\nquaerat animi amet hic inventore\nea quia deleniti quidem saepe porro velit" 410 | }, 411 | { 412 | "userId": 7, 413 | "id": 69, 414 | "title": "fugiat quod pariatur odit minima", 415 | "body": "officiis error culpa consequatur modi asperiores et\ndolorum assumenda voluptas et vel qui aut vel rerum\nvoluptatum quisquam perspiciatis quia rerum consequatur totam quas\nsequi commodi repudiandae asperiores et saepe a" 416 | }, 417 | { 418 | "userId": 7, 419 | "id": 70, 420 | "title": "voluptatem laborum magni", 421 | "body": "sunt repellendus quae\nest asperiores aut deleniti esse accusamus repellendus quia aut\nquia dolorem unde\neum tempora esse dolore" 422 | }, 423 | { 424 | "userId": 8, 425 | "id": 71, 426 | "title": "et iusto veniam et illum aut fuga", 427 | "body": "occaecati a doloribus\niste saepe consectetur placeat eum voluptate dolorem et\nqui quo quia voluptas\nrerum ut id enim velit est perferendis" 428 | }, 429 | { 430 | "userId": 8, 431 | "id": 72, 432 | "title": "sint hic doloribus consequatur eos non id", 433 | "body": "quam occaecati qui deleniti consectetur\nconsequatur aut facere quas exercitationem aliquam hic voluptas\nneque id sunt ut aut accusamus\nsunt consectetur expedita inventore velit" 434 | }, 435 | { 436 | "userId": 8, 437 | "id": 73, 438 | "title": "consequuntur deleniti eos quia temporibus ab aliquid at", 439 | "body": "voluptatem cumque tenetur consequatur expedita ipsum nemo quia explicabo\naut eum minima consequatur\ntempore cumque quae est et\net in consequuntur voluptatem voluptates aut" 440 | }, 441 | { 442 | "userId": 8, 443 | "id": 74, 444 | "title": "enim unde ratione doloribus quas enim ut sit sapiente", 445 | "body": "odit qui et et necessitatibus sint veniam\nmollitia amet doloremque molestiae commodi similique magnam et quam\nblanditiis est itaque\nquo et tenetur ratione occaecati molestiae tempora" 446 | }, 447 | { 448 | "userId": 8, 449 | "id": 75, 450 | "title": "dignissimos eum dolor ut enim et delectus in", 451 | "body": "commodi non non omnis et voluptas sit\nautem aut nobis magnam et sapiente voluptatem\net laborum repellat qui delectus facilis temporibus\nrerum amet et nemo voluptate expedita adipisci error dolorem" 452 | }, 453 | { 454 | "userId": 8, 455 | "id": 76, 456 | "title": "doloremque officiis ad et non perferendis", 457 | "body": "ut animi facere\ntotam iusto tempore\nmolestiae eum aut et dolorem aperiam\nquaerat recusandae totam odio" 458 | }, 459 | { 460 | "userId": 8, 461 | "id": 77, 462 | "title": "necessitatibus quasi exercitationem odio", 463 | "body": "modi ut in nulla repudiandae dolorum nostrum eos\naut consequatur omnis\nut incidunt est omnis iste et quam\nvoluptates sapiente aliquam asperiores nobis amet corrupti repudiandae provident" 464 | }, 465 | { 466 | "userId": 8, 467 | "id": 78, 468 | "title": "quam voluptatibus rerum veritatis", 469 | "body": "nobis facilis odit tempore cupiditate quia\nassumenda doloribus rerum qui ea\nillum et qui totam\naut veniam repellendus" 470 | }, 471 | { 472 | "userId": 8, 473 | "id": 79, 474 | "title": "pariatur consequatur quia magnam autem omnis non amet", 475 | "body": "libero accusantium et et facere incidunt sit dolorem\nnon excepturi qui quia sed laudantium\nquisquam molestiae ducimus est\nofficiis esse molestiae iste et quos" 476 | }, 477 | { 478 | "userId": 8, 479 | "id": 80, 480 | "title": "labore in ex et explicabo corporis aut quas", 481 | "body": "ex quod dolorem ea eum iure qui provident amet\nquia qui facere excepturi et repudiandae\nasperiores molestias provident\nminus incidunt vero fugit rerum sint sunt excepturi provident" 482 | }, 483 | { 484 | "userId": 9, 485 | "id": 81, 486 | "title": "tempora rem veritatis voluptas quo dolores vero", 487 | "body": "facere qui nesciunt est voluptatum voluptatem nisi\nsequi eligendi necessitatibus ea at rerum itaque\nharum non ratione velit laboriosam quis consequuntur\nex officiis minima doloremque voluptas ut aut" 488 | }, 489 | { 490 | "userId": 9, 491 | "id": 82, 492 | "title": "laudantium voluptate suscipit sunt enim enim", 493 | "body": "ut libero sit aut totam inventore sunt\nporro sint qui sunt molestiae\nconsequatur cupiditate qui iste ducimus adipisci\ndolor enim assumenda soluta laboriosam amet iste delectus hic" 494 | }, 495 | { 496 | "userId": 9, 497 | "id": 83, 498 | "title": "odit et voluptates doloribus alias odio et", 499 | "body": "est molestiae facilis quis tempora numquam nihil qui\nvoluptate sapiente consequatur est qui\nnecessitatibus autem aut ipsa aperiam modi dolore numquam\nreprehenderit eius rem quibusdam" 500 | }, 501 | { 502 | "userId": 9, 503 | "id": 84, 504 | "title": "optio ipsam molestias necessitatibus occaecati facilis veritatis dolores aut", 505 | "body": "sint molestiae magni a et quos\neaque et quasi\nut rerum debitis similique veniam\nrecusandae dignissimos dolor incidunt consequatur odio" 506 | }, 507 | { 508 | "userId": 9, 509 | "id": 85, 510 | "title": "dolore veritatis porro provident adipisci blanditiis et sunt", 511 | "body": "similique sed nisi voluptas iusto omnis\nmollitia et quo\nassumenda suscipit officia magnam sint sed tempora\nenim provident pariatur praesentium atque animi amet ratione" 512 | }, 513 | { 514 | "userId": 9, 515 | "id": 86, 516 | "title": "placeat quia et porro iste", 517 | "body": "quasi excepturi consequatur iste autem temporibus sed molestiae beatae\net quaerat et esse ut\nvoluptatem occaecati et vel explicabo autem\nasperiores pariatur deserunt optio" 518 | }, 519 | { 520 | "userId": 9, 521 | "id": 87, 522 | "title": "nostrum quis quasi placeat", 523 | "body": "eos et molestiae\nnesciunt ut a\ndolores perspiciatis repellendus repellat aliquid\nmagnam sint rem ipsum est" 524 | }, 525 | { 526 | "userId": 9, 527 | "id": 88, 528 | "title": "sapiente omnis fugit eos", 529 | "body": "consequatur omnis est praesentium\nducimus non iste\nneque hic deserunt\nvoluptatibus veniam cum et rerum sed" 530 | }, 531 | { 532 | "userId": 9, 533 | "id": 89, 534 | "title": "sint soluta et vel magnam aut ut sed qui", 535 | "body": "repellat aut aperiam totam temporibus autem et\narchitecto magnam ut\nconsequatur qui cupiditate rerum quia soluta dignissimos nihil iure\ntempore quas est" 536 | }, 537 | { 538 | "userId": 9, 539 | "id": 90, 540 | "title": "ad iusto omnis odit dolor voluptatibus", 541 | "body": "minus omnis soluta quia\nqui sed adipisci voluptates illum ipsam voluptatem\neligendi officia ut in\neos soluta similique molestias praesentium blanditiis" 542 | }, 543 | { 544 | "userId": 10, 545 | "id": 91, 546 | "title": "aut amet sed", 547 | "body": "libero voluptate eveniet aperiam sed\nsunt placeat suscipit molestias\nsimilique fugit nam natus\nexpedita consequatur consequatur dolores quia eos et placeat" 548 | }, 549 | { 550 | "userId": 10, 551 | "id": 92, 552 | "title": "ratione ex tenetur perferendis", 553 | "body": "aut et excepturi dicta laudantium sint rerum nihil\nlaudantium et at\na neque minima officia et similique libero et\ncommodi voluptate qui" 554 | }, 555 | { 556 | "userId": 10, 557 | "id": 93, 558 | "title": "beatae soluta recusandae", 559 | "body": "dolorem quibusdam ducimus consequuntur dicta aut quo laboriosam\nvoluptatem quis enim recusandae ut sed sunt\nnostrum est odit totam\nsit error sed sunt eveniet provident qui nulla" 560 | }, 561 | { 562 | "userId": 10, 563 | "id": 94, 564 | "title": "qui qui voluptates illo iste minima", 565 | "body": "aspernatur expedita soluta quo ab ut similique\nexpedita dolores amet\nsed temporibus distinctio magnam saepe deleniti\nomnis facilis nam ipsum natus sint similique omnis" 566 | }, 567 | { 568 | "userId": 10, 569 | "id": 95, 570 | "title": "id minus libero illum nam ad officiis", 571 | "body": "earum voluptatem facere provident blanditiis velit laboriosam\npariatur accusamus odio saepe\ncumque dolor qui a dicta ab doloribus consequatur omnis\ncorporis cupiditate eaque assumenda ad nesciunt" 572 | }, 573 | { 574 | "userId": 10, 575 | "id": 96, 576 | "title": "quaerat velit veniam amet cupiditate aut numquam ut sequi", 577 | "body": "in non odio excepturi sint eum\nlabore voluptates vitae quia qui et\ninventore itaque rerum\nveniam non exercitationem delectus aut" 578 | }, 579 | { 580 | "userId": 10, 581 | "id": 97, 582 | "title": "quas fugiat ut perspiciatis vero provident", 583 | "body": "eum non blanditiis soluta porro quibusdam voluptas\nvel voluptatem qui placeat dolores qui velit aut\nvel inventore aut cumque culpa explicabo aliquid at\nperspiciatis est et voluptatem dignissimos dolor itaque sit nam" 584 | }, 585 | { 586 | "userId": 10, 587 | "id": 98, 588 | "title": "laboriosam dolor voluptates", 589 | "body": "doloremque ex facilis sit sint culpa\nsoluta assumenda eligendi non ut eius\nsequi ducimus vel quasi\nveritatis est dolores" 590 | }, 591 | { 592 | "userId": 10, 593 | "id": 99, 594 | "title": "temporibus sit alias delectus eligendi possimus magni", 595 | "body": "quo deleniti praesentium dicta non quod\naut est molestias\nmolestias et officia quis nihil\nitaque dolorem quia" 596 | }, 597 | { 598 | "userId": 10, 599 | "id": 100, 600 | "title": "at nam consequatur ea labore ea harum", 601 | "body": "cupiditate quo est a modi nesciunt soluta\nipsa voluptas error itaque dicta in\nautem qui minus magnam et distinctio eum\naccusamus ratione error aut" 602 | } 603 | ], 604 | "users": [ 605 | { 606 | "id": 1, 607 | "name": "Leanne Graham", 608 | "username": "Bret", 609 | "email": "Sincere@april.biz", 610 | "address": { 611 | "street": "Kulas Light", 612 | "suite": "Apt. 556", 613 | "city": "Gwenborough", 614 | "zipcode": "92998-3874", 615 | "geo": { 616 | "lat": "-37.3159", 617 | "lng": "81.1496" 618 | } 619 | }, 620 | "phone": "1-770-736-8031 x56442", 621 | "website": "hildegard.org", 622 | "company": { 623 | "name": "Romaguera-Crona", 624 | "catchPhrase": "Multi-layered client-server neural-net", 625 | "bs": "harness real-time e-markets" 626 | } 627 | }, 628 | { 629 | "id": 2, 630 | "name": "Ervin Howell", 631 | "username": "Antonette", 632 | "email": "Shanna@melissa.tv", 633 | "address": { 634 | "street": "Victor Plains", 635 | "suite": "Suite 879", 636 | "city": "Wisokyburgh", 637 | "zipcode": "90566-7771", 638 | "geo": { 639 | "lat": "-43.9509", 640 | "lng": "-34.4618" 641 | } 642 | }, 643 | "phone": "010-692-6593 x09125", 644 | "website": "anastasia.net", 645 | "company": { 646 | "name": "Deckow-Crist", 647 | "catchPhrase": "Proactive didactic contingency", 648 | "bs": "synergize scalable supply-chains" 649 | } 650 | }, 651 | { 652 | "id": 3, 653 | "name": "Clementine Bauch", 654 | "username": "Samantha", 655 | "email": "Nathan@yesenia.net", 656 | "address": { 657 | "street": "Douglas Extension", 658 | "suite": "Suite 847", 659 | "city": "McKenziehaven", 660 | "zipcode": "59590-4157", 661 | "geo": { 662 | "lat": "-68.6102", 663 | "lng": "-47.0653" 664 | } 665 | }, 666 | "phone": "1-463-123-4447", 667 | "website": "ramiro.info", 668 | "company": { 669 | "name": "Romaguera-Jacobson", 670 | "catchPhrase": "Face to face bifurcated interface", 671 | "bs": "e-enable strategic applications" 672 | } 673 | }, 674 | { 675 | "id": 4, 676 | "name": "Patricia Lebsack", 677 | "username": "Karianne", 678 | "email": "Julianne.OConner@kory.org", 679 | "address": { 680 | "street": "Hoeger Mall", 681 | "suite": "Apt. 692", 682 | "city": "South Elvis", 683 | "zipcode": "53919-4257", 684 | "geo": { 685 | "lat": "29.4572", 686 | "lng": "-164.2990" 687 | } 688 | }, 689 | "phone": "493-170-9623 x156", 690 | "website": "kale.biz", 691 | "company": { 692 | "name": "Robel-Corkery", 693 | "catchPhrase": "Multi-tiered zero tolerance productivity", 694 | "bs": "transition cutting-edge web services" 695 | } 696 | }, 697 | { 698 | "id": 5, 699 | "name": "Chelsey Dietrich", 700 | "username": "Kamren", 701 | "email": "Lucio_Hettinger@annie.ca", 702 | "address": { 703 | "street": "Skiles Walks", 704 | "suite": "Suite 351", 705 | "city": "Roscoeview", 706 | "zipcode": "33263", 707 | "geo": { 708 | "lat": "-31.8129", 709 | "lng": "62.5342" 710 | } 711 | }, 712 | "phone": "(254)954-1289", 713 | "website": "demarco.info", 714 | "company": { 715 | "name": "Keebler LLC", 716 | "catchPhrase": "User-centric fault-tolerant solution", 717 | "bs": "revolutionize end-to-end systems" 718 | } 719 | }, 720 | { 721 | "id": 6, 722 | "name": "Mrs. Dennis Schulist", 723 | "username": "Leopoldo_Corkery", 724 | "email": "Karley_Dach@jasper.info", 725 | "address": { 726 | "street": "Norberto Crossing", 727 | "suite": "Apt. 950", 728 | "city": "South Christy", 729 | "zipcode": "23505-1337", 730 | "geo": { 731 | "lat": "-71.4197", 732 | "lng": "71.7478" 733 | } 734 | }, 735 | "phone": "1-477-935-8478 x6430", 736 | "website": "ola.org", 737 | "company": { 738 | "name": "Considine-Lockman", 739 | "catchPhrase": "Synchronised bottom-line interface", 740 | "bs": "e-enable innovative applications" 741 | } 742 | }, 743 | { 744 | "id": 7, 745 | "name": "Kurtis Weissnat", 746 | "username": "Elwyn.Skiles", 747 | "email": "Telly.Hoeger@billy.biz", 748 | "address": { 749 | "street": "Rex Trail", 750 | "suite": "Suite 280", 751 | "city": "Howemouth", 752 | "zipcode": "58804-1099", 753 | "geo": { 754 | "lat": "24.8918", 755 | "lng": "21.8984" 756 | } 757 | }, 758 | "phone": "210.067.6132", 759 | "website": "elvis.io", 760 | "company": { 761 | "name": "Johns Group", 762 | "catchPhrase": "Configurable multimedia task-force", 763 | "bs": "generate enterprise e-tailers" 764 | } 765 | }, 766 | { 767 | "id": 8, 768 | "name": "Nicholas Runolfsdottir V", 769 | "username": "Maxime_Nienow", 770 | "email": "Sherwood@rosamond.me", 771 | "address": { 772 | "street": "Ellsworth Summit", 773 | "suite": "Suite 729", 774 | "city": "Aliyaview", 775 | "zipcode": "45169", 776 | "geo": { 777 | "lat": "-14.3990", 778 | "lng": "-120.7677" 779 | } 780 | }, 781 | "phone": "586.493.6943 x140", 782 | "website": "jacynthe.com", 783 | "company": { 784 | "name": "Abernathy Group", 785 | "catchPhrase": "Implemented secondary concept", 786 | "bs": "e-enable extensible e-tailers" 787 | } 788 | }, 789 | { 790 | "id": 9, 791 | "name": "Glenna Reichert", 792 | "username": "Delphine", 793 | "email": "Chaim_McDermott@dana.io", 794 | "address": { 795 | "street": "Dayna Park", 796 | "suite": "Suite 449", 797 | "city": "Bartholomebury", 798 | "zipcode": "76495-3109", 799 | "geo": { 800 | "lat": "24.6463", 801 | "lng": "-168.8889" 802 | } 803 | }, 804 | "phone": "(775)976-6794 x41206", 805 | "website": "conrad.com", 806 | "company": { 807 | "name": "Yost and Sons", 808 | "catchPhrase": "Switchable contextually-based project", 809 | "bs": "aggregate real-time technologies" 810 | } 811 | }, 812 | { 813 | "id": 10, 814 | "name": "Clementina DuBuque", 815 | "username": "Moriah.Stanton", 816 | "email": "Rey.Padberg@karina.biz", 817 | "address": { 818 | "street": "Kattie Turnpike", 819 | "suite": "Suite 198", 820 | "city": "Lebsackbury", 821 | "zipcode": "31428-2261", 822 | "geo": { 823 | "lat": "-38.2386", 824 | "lng": "57.2232" 825 | } 826 | }, 827 | "phone": "024-648-3804", 828 | "website": "ambrose.net", 829 | "company": { 830 | "name": "Hoeger LLC", 831 | "catchPhrase": "Centralized empowering task-force", 832 | "bs": "target end-to-end models" 833 | } 834 | } 835 | ] 836 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-skeleton-prep", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "react-skeleton-prep", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "axios": "^1.2.2", 12 | "react": "^18.2.0", 13 | "react-dom": "^18.2.0", 14 | "swr": "^2.0.0" 15 | }, 16 | "devDependencies": { 17 | "@types/react": "^18.0.26", 18 | "@types/react-dom": "^18.0.9", 19 | "@vitejs/plugin-react": "^3.0.0", 20 | "vite": "^4.0.0" 21 | } 22 | }, 23 | "node_modules/@ampproject/remapping": { 24 | "version": "2.2.0", 25 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 26 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 27 | "dev": true, 28 | "dependencies": { 29 | "@jridgewell/gen-mapping": "^0.1.0", 30 | "@jridgewell/trace-mapping": "^0.3.9" 31 | }, 32 | "engines": { 33 | "node": ">=6.0.0" 34 | } 35 | }, 36 | "node_modules/@babel/code-frame": { 37 | "version": "7.18.6", 38 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 39 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 40 | "dev": true, 41 | "dependencies": { 42 | "@babel/highlight": "^7.18.6" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@babel/compat-data": { 49 | "version": "7.20.10", 50 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", 51 | "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", 52 | "dev": true, 53 | "engines": { 54 | "node": ">=6.9.0" 55 | } 56 | }, 57 | "node_modules/@babel/core": { 58 | "version": "7.20.12", 59 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", 60 | "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", 61 | "dev": true, 62 | "dependencies": { 63 | "@ampproject/remapping": "^2.1.0", 64 | "@babel/code-frame": "^7.18.6", 65 | "@babel/generator": "^7.20.7", 66 | "@babel/helper-compilation-targets": "^7.20.7", 67 | "@babel/helper-module-transforms": "^7.20.11", 68 | "@babel/helpers": "^7.20.7", 69 | "@babel/parser": "^7.20.7", 70 | "@babel/template": "^7.20.7", 71 | "@babel/traverse": "^7.20.12", 72 | "@babel/types": "^7.20.7", 73 | "convert-source-map": "^1.7.0", 74 | "debug": "^4.1.0", 75 | "gensync": "^1.0.0-beta.2", 76 | "json5": "^2.2.2", 77 | "semver": "^6.3.0" 78 | }, 79 | "engines": { 80 | "node": ">=6.9.0" 81 | }, 82 | "funding": { 83 | "type": "opencollective", 84 | "url": "https://opencollective.com/babel" 85 | } 86 | }, 87 | "node_modules/@babel/generator": { 88 | "version": "7.20.7", 89 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", 90 | "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", 91 | "dev": true, 92 | "dependencies": { 93 | "@babel/types": "^7.20.7", 94 | "@jridgewell/gen-mapping": "^0.3.2", 95 | "jsesc": "^2.5.1" 96 | }, 97 | "engines": { 98 | "node": ">=6.9.0" 99 | } 100 | }, 101 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 102 | "version": "0.3.2", 103 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 104 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 105 | "dev": true, 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-compilation-targets": { 116 | "version": "7.20.7", 117 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", 118 | "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", 119 | "dev": true, 120 | "dependencies": { 121 | "@babel/compat-data": "^7.20.5", 122 | "@babel/helper-validator-option": "^7.18.6", 123 | "browserslist": "^4.21.3", 124 | "lru-cache": "^5.1.1", 125 | "semver": "^6.3.0" 126 | }, 127 | "engines": { 128 | "node": ">=6.9.0" 129 | }, 130 | "peerDependencies": { 131 | "@babel/core": "^7.0.0" 132 | } 133 | }, 134 | "node_modules/@babel/helper-environment-visitor": { 135 | "version": "7.18.9", 136 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 137 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 138 | "dev": true, 139 | "engines": { 140 | "node": ">=6.9.0" 141 | } 142 | }, 143 | "node_modules/@babel/helper-function-name": { 144 | "version": "7.19.0", 145 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 146 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 147 | "dev": true, 148 | "dependencies": { 149 | "@babel/template": "^7.18.10", 150 | "@babel/types": "^7.19.0" 151 | }, 152 | "engines": { 153 | "node": ">=6.9.0" 154 | } 155 | }, 156 | "node_modules/@babel/helper-hoist-variables": { 157 | "version": "7.18.6", 158 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 159 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 160 | "dev": true, 161 | "dependencies": { 162 | "@babel/types": "^7.18.6" 163 | }, 164 | "engines": { 165 | "node": ">=6.9.0" 166 | } 167 | }, 168 | "node_modules/@babel/helper-module-imports": { 169 | "version": "7.18.6", 170 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 171 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 172 | "dev": true, 173 | "dependencies": { 174 | "@babel/types": "^7.18.6" 175 | }, 176 | "engines": { 177 | "node": ">=6.9.0" 178 | } 179 | }, 180 | "node_modules/@babel/helper-module-transforms": { 181 | "version": "7.20.11", 182 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", 183 | "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", 184 | "dev": true, 185 | "dependencies": { 186 | "@babel/helper-environment-visitor": "^7.18.9", 187 | "@babel/helper-module-imports": "^7.18.6", 188 | "@babel/helper-simple-access": "^7.20.2", 189 | "@babel/helper-split-export-declaration": "^7.18.6", 190 | "@babel/helper-validator-identifier": "^7.19.1", 191 | "@babel/template": "^7.20.7", 192 | "@babel/traverse": "^7.20.10", 193 | "@babel/types": "^7.20.7" 194 | }, 195 | "engines": { 196 | "node": ">=6.9.0" 197 | } 198 | }, 199 | "node_modules/@babel/helper-plugin-utils": { 200 | "version": "7.20.2", 201 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 202 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 203 | "dev": true, 204 | "engines": { 205 | "node": ">=6.9.0" 206 | } 207 | }, 208 | "node_modules/@babel/helper-simple-access": { 209 | "version": "7.20.2", 210 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", 211 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", 212 | "dev": true, 213 | "dependencies": { 214 | "@babel/types": "^7.20.2" 215 | }, 216 | "engines": { 217 | "node": ">=6.9.0" 218 | } 219 | }, 220 | "node_modules/@babel/helper-split-export-declaration": { 221 | "version": "7.18.6", 222 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 223 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 224 | "dev": true, 225 | "dependencies": { 226 | "@babel/types": "^7.18.6" 227 | }, 228 | "engines": { 229 | "node": ">=6.9.0" 230 | } 231 | }, 232 | "node_modules/@babel/helper-string-parser": { 233 | "version": "7.19.4", 234 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 235 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 236 | "dev": true, 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 | "dev": true, 246 | "engines": { 247 | "node": ">=6.9.0" 248 | } 249 | }, 250 | "node_modules/@babel/helper-validator-option": { 251 | "version": "7.18.6", 252 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 253 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 254 | "dev": true, 255 | "engines": { 256 | "node": ">=6.9.0" 257 | } 258 | }, 259 | "node_modules/@babel/helpers": { 260 | "version": "7.20.7", 261 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", 262 | "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", 263 | "dev": true, 264 | "dependencies": { 265 | "@babel/template": "^7.20.7", 266 | "@babel/traverse": "^7.20.7", 267 | "@babel/types": "^7.20.7" 268 | }, 269 | "engines": { 270 | "node": ">=6.9.0" 271 | } 272 | }, 273 | "node_modules/@babel/highlight": { 274 | "version": "7.18.6", 275 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 276 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 277 | "dev": true, 278 | "dependencies": { 279 | "@babel/helper-validator-identifier": "^7.18.6", 280 | "chalk": "^2.0.0", 281 | "js-tokens": "^4.0.0" 282 | }, 283 | "engines": { 284 | "node": ">=6.9.0" 285 | } 286 | }, 287 | "node_modules/@babel/parser": { 288 | "version": "7.20.7", 289 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", 290 | "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", 291 | "dev": true, 292 | "bin": { 293 | "parser": "bin/babel-parser.js" 294 | }, 295 | "engines": { 296 | "node": ">=6.0.0" 297 | } 298 | }, 299 | "node_modules/@babel/plugin-transform-react-jsx-self": { 300 | "version": "7.18.6", 301 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 302 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 303 | "dev": true, 304 | "dependencies": { 305 | "@babel/helper-plugin-utils": "^7.18.6" 306 | }, 307 | "engines": { 308 | "node": ">=6.9.0" 309 | }, 310 | "peerDependencies": { 311 | "@babel/core": "^7.0.0-0" 312 | } 313 | }, 314 | "node_modules/@babel/plugin-transform-react-jsx-source": { 315 | "version": "7.19.6", 316 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", 317 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", 318 | "dev": true, 319 | "dependencies": { 320 | "@babel/helper-plugin-utils": "^7.19.0" 321 | }, 322 | "engines": { 323 | "node": ">=6.9.0" 324 | }, 325 | "peerDependencies": { 326 | "@babel/core": "^7.0.0-0" 327 | } 328 | }, 329 | "node_modules/@babel/template": { 330 | "version": "7.20.7", 331 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", 332 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", 333 | "dev": true, 334 | "dependencies": { 335 | "@babel/code-frame": "^7.18.6", 336 | "@babel/parser": "^7.20.7", 337 | "@babel/types": "^7.20.7" 338 | }, 339 | "engines": { 340 | "node": ">=6.9.0" 341 | } 342 | }, 343 | "node_modules/@babel/traverse": { 344 | "version": "7.20.12", 345 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", 346 | "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", 347 | "dev": true, 348 | "dependencies": { 349 | "@babel/code-frame": "^7.18.6", 350 | "@babel/generator": "^7.20.7", 351 | "@babel/helper-environment-visitor": "^7.18.9", 352 | "@babel/helper-function-name": "^7.19.0", 353 | "@babel/helper-hoist-variables": "^7.18.6", 354 | "@babel/helper-split-export-declaration": "^7.18.6", 355 | "@babel/parser": "^7.20.7", 356 | "@babel/types": "^7.20.7", 357 | "debug": "^4.1.0", 358 | "globals": "^11.1.0" 359 | }, 360 | "engines": { 361 | "node": ">=6.9.0" 362 | } 363 | }, 364 | "node_modules/@babel/types": { 365 | "version": "7.20.7", 366 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", 367 | "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", 368 | "dev": true, 369 | "dependencies": { 370 | "@babel/helper-string-parser": "^7.19.4", 371 | "@babel/helper-validator-identifier": "^7.19.1", 372 | "to-fast-properties": "^2.0.0" 373 | }, 374 | "engines": { 375 | "node": ">=6.9.0" 376 | } 377 | }, 378 | "node_modules/@esbuild/android-arm": { 379 | "version": "0.16.17", 380 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 381 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 382 | "cpu": [ 383 | "arm" 384 | ], 385 | "dev": true, 386 | "optional": true, 387 | "os": [ 388 | "android" 389 | ], 390 | "engines": { 391 | "node": ">=12" 392 | } 393 | }, 394 | "node_modules/@esbuild/android-arm64": { 395 | "version": "0.16.17", 396 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 397 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 398 | "cpu": [ 399 | "arm64" 400 | ], 401 | "dev": true, 402 | "optional": true, 403 | "os": [ 404 | "android" 405 | ], 406 | "engines": { 407 | "node": ">=12" 408 | } 409 | }, 410 | "node_modules/@esbuild/android-x64": { 411 | "version": "0.16.17", 412 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 413 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 414 | "cpu": [ 415 | "x64" 416 | ], 417 | "dev": true, 418 | "optional": true, 419 | "os": [ 420 | "android" 421 | ], 422 | "engines": { 423 | "node": ">=12" 424 | } 425 | }, 426 | "node_modules/@esbuild/darwin-arm64": { 427 | "version": "0.16.17", 428 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 429 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 430 | "cpu": [ 431 | "arm64" 432 | ], 433 | "dev": true, 434 | "optional": true, 435 | "os": [ 436 | "darwin" 437 | ], 438 | "engines": { 439 | "node": ">=12" 440 | } 441 | }, 442 | "node_modules/@esbuild/darwin-x64": { 443 | "version": "0.16.17", 444 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 445 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 446 | "cpu": [ 447 | "x64" 448 | ], 449 | "dev": true, 450 | "optional": true, 451 | "os": [ 452 | "darwin" 453 | ], 454 | "engines": { 455 | "node": ">=12" 456 | } 457 | }, 458 | "node_modules/@esbuild/freebsd-arm64": { 459 | "version": "0.16.17", 460 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 461 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 462 | "cpu": [ 463 | "arm64" 464 | ], 465 | "dev": true, 466 | "optional": true, 467 | "os": [ 468 | "freebsd" 469 | ], 470 | "engines": { 471 | "node": ">=12" 472 | } 473 | }, 474 | "node_modules/@esbuild/freebsd-x64": { 475 | "version": "0.16.17", 476 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 477 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 478 | "cpu": [ 479 | "x64" 480 | ], 481 | "dev": true, 482 | "optional": true, 483 | "os": [ 484 | "freebsd" 485 | ], 486 | "engines": { 487 | "node": ">=12" 488 | } 489 | }, 490 | "node_modules/@esbuild/linux-arm": { 491 | "version": "0.16.17", 492 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 493 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 494 | "cpu": [ 495 | "arm" 496 | ], 497 | "dev": true, 498 | "optional": true, 499 | "os": [ 500 | "linux" 501 | ], 502 | "engines": { 503 | "node": ">=12" 504 | } 505 | }, 506 | "node_modules/@esbuild/linux-arm64": { 507 | "version": "0.16.17", 508 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 509 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 510 | "cpu": [ 511 | "arm64" 512 | ], 513 | "dev": true, 514 | "optional": true, 515 | "os": [ 516 | "linux" 517 | ], 518 | "engines": { 519 | "node": ">=12" 520 | } 521 | }, 522 | "node_modules/@esbuild/linux-ia32": { 523 | "version": "0.16.17", 524 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 525 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 526 | "cpu": [ 527 | "ia32" 528 | ], 529 | "dev": true, 530 | "optional": true, 531 | "os": [ 532 | "linux" 533 | ], 534 | "engines": { 535 | "node": ">=12" 536 | } 537 | }, 538 | "node_modules/@esbuild/linux-loong64": { 539 | "version": "0.16.17", 540 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 541 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 542 | "cpu": [ 543 | "loong64" 544 | ], 545 | "dev": true, 546 | "optional": true, 547 | "os": [ 548 | "linux" 549 | ], 550 | "engines": { 551 | "node": ">=12" 552 | } 553 | }, 554 | "node_modules/@esbuild/linux-mips64el": { 555 | "version": "0.16.17", 556 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 557 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 558 | "cpu": [ 559 | "mips64el" 560 | ], 561 | "dev": true, 562 | "optional": true, 563 | "os": [ 564 | "linux" 565 | ], 566 | "engines": { 567 | "node": ">=12" 568 | } 569 | }, 570 | "node_modules/@esbuild/linux-ppc64": { 571 | "version": "0.16.17", 572 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 573 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 574 | "cpu": [ 575 | "ppc64" 576 | ], 577 | "dev": true, 578 | "optional": true, 579 | "os": [ 580 | "linux" 581 | ], 582 | "engines": { 583 | "node": ">=12" 584 | } 585 | }, 586 | "node_modules/@esbuild/linux-riscv64": { 587 | "version": "0.16.17", 588 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 589 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 590 | "cpu": [ 591 | "riscv64" 592 | ], 593 | "dev": true, 594 | "optional": true, 595 | "os": [ 596 | "linux" 597 | ], 598 | "engines": { 599 | "node": ">=12" 600 | } 601 | }, 602 | "node_modules/@esbuild/linux-s390x": { 603 | "version": "0.16.17", 604 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 605 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 606 | "cpu": [ 607 | "s390x" 608 | ], 609 | "dev": true, 610 | "optional": true, 611 | "os": [ 612 | "linux" 613 | ], 614 | "engines": { 615 | "node": ">=12" 616 | } 617 | }, 618 | "node_modules/@esbuild/linux-x64": { 619 | "version": "0.16.17", 620 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 621 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 622 | "cpu": [ 623 | "x64" 624 | ], 625 | "dev": true, 626 | "optional": true, 627 | "os": [ 628 | "linux" 629 | ], 630 | "engines": { 631 | "node": ">=12" 632 | } 633 | }, 634 | "node_modules/@esbuild/netbsd-x64": { 635 | "version": "0.16.17", 636 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 637 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 638 | "cpu": [ 639 | "x64" 640 | ], 641 | "dev": true, 642 | "optional": true, 643 | "os": [ 644 | "netbsd" 645 | ], 646 | "engines": { 647 | "node": ">=12" 648 | } 649 | }, 650 | "node_modules/@esbuild/openbsd-x64": { 651 | "version": "0.16.17", 652 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 653 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 654 | "cpu": [ 655 | "x64" 656 | ], 657 | "dev": true, 658 | "optional": true, 659 | "os": [ 660 | "openbsd" 661 | ], 662 | "engines": { 663 | "node": ">=12" 664 | } 665 | }, 666 | "node_modules/@esbuild/sunos-x64": { 667 | "version": "0.16.17", 668 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 669 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 670 | "cpu": [ 671 | "x64" 672 | ], 673 | "dev": true, 674 | "optional": true, 675 | "os": [ 676 | "sunos" 677 | ], 678 | "engines": { 679 | "node": ">=12" 680 | } 681 | }, 682 | "node_modules/@esbuild/win32-arm64": { 683 | "version": "0.16.17", 684 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 685 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 686 | "cpu": [ 687 | "arm64" 688 | ], 689 | "dev": true, 690 | "optional": true, 691 | "os": [ 692 | "win32" 693 | ], 694 | "engines": { 695 | "node": ">=12" 696 | } 697 | }, 698 | "node_modules/@esbuild/win32-ia32": { 699 | "version": "0.16.17", 700 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 701 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 702 | "cpu": [ 703 | "ia32" 704 | ], 705 | "dev": true, 706 | "optional": true, 707 | "os": [ 708 | "win32" 709 | ], 710 | "engines": { 711 | "node": ">=12" 712 | } 713 | }, 714 | "node_modules/@esbuild/win32-x64": { 715 | "version": "0.16.17", 716 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 717 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 718 | "cpu": [ 719 | "x64" 720 | ], 721 | "dev": true, 722 | "optional": true, 723 | "os": [ 724 | "win32" 725 | ], 726 | "engines": { 727 | "node": ">=12" 728 | } 729 | }, 730 | "node_modules/@jridgewell/gen-mapping": { 731 | "version": "0.1.1", 732 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 733 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 734 | "dev": true, 735 | "dependencies": { 736 | "@jridgewell/set-array": "^1.0.0", 737 | "@jridgewell/sourcemap-codec": "^1.4.10" 738 | }, 739 | "engines": { 740 | "node": ">=6.0.0" 741 | } 742 | }, 743 | "node_modules/@jridgewell/resolve-uri": { 744 | "version": "3.1.0", 745 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 746 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 747 | "dev": true, 748 | "engines": { 749 | "node": ">=6.0.0" 750 | } 751 | }, 752 | "node_modules/@jridgewell/set-array": { 753 | "version": "1.1.2", 754 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 755 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 756 | "dev": true, 757 | "engines": { 758 | "node": ">=6.0.0" 759 | } 760 | }, 761 | "node_modules/@jridgewell/sourcemap-codec": { 762 | "version": "1.4.14", 763 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 764 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 765 | "dev": true 766 | }, 767 | "node_modules/@jridgewell/trace-mapping": { 768 | "version": "0.3.17", 769 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 770 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 771 | "dev": true, 772 | "dependencies": { 773 | "@jridgewell/resolve-uri": "3.1.0", 774 | "@jridgewell/sourcemap-codec": "1.4.14" 775 | } 776 | }, 777 | "node_modules/@types/prop-types": { 778 | "version": "15.7.5", 779 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 780 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 781 | "dev": true 782 | }, 783 | "node_modules/@types/react": { 784 | "version": "18.0.26", 785 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", 786 | "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", 787 | "dev": true, 788 | "dependencies": { 789 | "@types/prop-types": "*", 790 | "@types/scheduler": "*", 791 | "csstype": "^3.0.2" 792 | } 793 | }, 794 | "node_modules/@types/react-dom": { 795 | "version": "18.0.10", 796 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", 797 | "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", 798 | "dev": true, 799 | "dependencies": { 800 | "@types/react": "*" 801 | } 802 | }, 803 | "node_modules/@types/scheduler": { 804 | "version": "0.16.2", 805 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 806 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 807 | "dev": true 808 | }, 809 | "node_modules/@vitejs/plugin-react": { 810 | "version": "3.0.1", 811 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz", 812 | "integrity": "sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==", 813 | "dev": true, 814 | "dependencies": { 815 | "@babel/core": "^7.20.7", 816 | "@babel/plugin-transform-react-jsx-self": "^7.18.6", 817 | "@babel/plugin-transform-react-jsx-source": "^7.19.6", 818 | "magic-string": "^0.27.0", 819 | "react-refresh": "^0.14.0" 820 | }, 821 | "engines": { 822 | "node": "^14.18.0 || >=16.0.0" 823 | }, 824 | "peerDependencies": { 825 | "vite": "^4.0.0" 826 | } 827 | }, 828 | "node_modules/ansi-styles": { 829 | "version": "3.2.1", 830 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 831 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 832 | "dev": true, 833 | "dependencies": { 834 | "color-convert": "^1.9.0" 835 | }, 836 | "engines": { 837 | "node": ">=4" 838 | } 839 | }, 840 | "node_modules/asynckit": { 841 | "version": "0.4.0", 842 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 843 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 844 | }, 845 | "node_modules/axios": { 846 | "version": "1.2.2", 847 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", 848 | "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", 849 | "dependencies": { 850 | "follow-redirects": "^1.15.0", 851 | "form-data": "^4.0.0", 852 | "proxy-from-env": "^1.1.0" 853 | } 854 | }, 855 | "node_modules/browserslist": { 856 | "version": "4.21.4", 857 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 858 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 859 | "dev": true, 860 | "funding": [ 861 | { 862 | "type": "opencollective", 863 | "url": "https://opencollective.com/browserslist" 864 | }, 865 | { 866 | "type": "tidelift", 867 | "url": "https://tidelift.com/funding/github/npm/browserslist" 868 | } 869 | ], 870 | "dependencies": { 871 | "caniuse-lite": "^1.0.30001400", 872 | "electron-to-chromium": "^1.4.251", 873 | "node-releases": "^2.0.6", 874 | "update-browserslist-db": "^1.0.9" 875 | }, 876 | "bin": { 877 | "browserslist": "cli.js" 878 | }, 879 | "engines": { 880 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 881 | } 882 | }, 883 | "node_modules/caniuse-lite": { 884 | "version": "1.0.30001445", 885 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz", 886 | "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==", 887 | "dev": true, 888 | "funding": [ 889 | { 890 | "type": "opencollective", 891 | "url": "https://opencollective.com/browserslist" 892 | }, 893 | { 894 | "type": "tidelift", 895 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 896 | } 897 | ] 898 | }, 899 | "node_modules/chalk": { 900 | "version": "2.4.2", 901 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 902 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 903 | "dev": true, 904 | "dependencies": { 905 | "ansi-styles": "^3.2.1", 906 | "escape-string-regexp": "^1.0.5", 907 | "supports-color": "^5.3.0" 908 | }, 909 | "engines": { 910 | "node": ">=4" 911 | } 912 | }, 913 | "node_modules/color-convert": { 914 | "version": "1.9.3", 915 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 916 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 917 | "dev": true, 918 | "dependencies": { 919 | "color-name": "1.1.3" 920 | } 921 | }, 922 | "node_modules/color-name": { 923 | "version": "1.1.3", 924 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 925 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 926 | "dev": true 927 | }, 928 | "node_modules/combined-stream": { 929 | "version": "1.0.8", 930 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 931 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 932 | "dependencies": { 933 | "delayed-stream": "~1.0.0" 934 | }, 935 | "engines": { 936 | "node": ">= 0.8" 937 | } 938 | }, 939 | "node_modules/convert-source-map": { 940 | "version": "1.9.0", 941 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 942 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 943 | "dev": true 944 | }, 945 | "node_modules/csstype": { 946 | "version": "3.1.1", 947 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 948 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 949 | "dev": true 950 | }, 951 | "node_modules/debug": { 952 | "version": "4.3.4", 953 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 954 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 955 | "dev": true, 956 | "dependencies": { 957 | "ms": "2.1.2" 958 | }, 959 | "engines": { 960 | "node": ">=6.0" 961 | }, 962 | "peerDependenciesMeta": { 963 | "supports-color": { 964 | "optional": true 965 | } 966 | } 967 | }, 968 | "node_modules/delayed-stream": { 969 | "version": "1.0.0", 970 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 971 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 972 | "engines": { 973 | "node": ">=0.4.0" 974 | } 975 | }, 976 | "node_modules/electron-to-chromium": { 977 | "version": "1.4.284", 978 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 979 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 980 | "dev": true 981 | }, 982 | "node_modules/esbuild": { 983 | "version": "0.16.17", 984 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 985 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 986 | "dev": true, 987 | "hasInstallScript": true, 988 | "bin": { 989 | "esbuild": "bin/esbuild" 990 | }, 991 | "engines": { 992 | "node": ">=12" 993 | }, 994 | "optionalDependencies": { 995 | "@esbuild/android-arm": "0.16.17", 996 | "@esbuild/android-arm64": "0.16.17", 997 | "@esbuild/android-x64": "0.16.17", 998 | "@esbuild/darwin-arm64": "0.16.17", 999 | "@esbuild/darwin-x64": "0.16.17", 1000 | "@esbuild/freebsd-arm64": "0.16.17", 1001 | "@esbuild/freebsd-x64": "0.16.17", 1002 | "@esbuild/linux-arm": "0.16.17", 1003 | "@esbuild/linux-arm64": "0.16.17", 1004 | "@esbuild/linux-ia32": "0.16.17", 1005 | "@esbuild/linux-loong64": "0.16.17", 1006 | "@esbuild/linux-mips64el": "0.16.17", 1007 | "@esbuild/linux-ppc64": "0.16.17", 1008 | "@esbuild/linux-riscv64": "0.16.17", 1009 | "@esbuild/linux-s390x": "0.16.17", 1010 | "@esbuild/linux-x64": "0.16.17", 1011 | "@esbuild/netbsd-x64": "0.16.17", 1012 | "@esbuild/openbsd-x64": "0.16.17", 1013 | "@esbuild/sunos-x64": "0.16.17", 1014 | "@esbuild/win32-arm64": "0.16.17", 1015 | "@esbuild/win32-ia32": "0.16.17", 1016 | "@esbuild/win32-x64": "0.16.17" 1017 | } 1018 | }, 1019 | "node_modules/escalade": { 1020 | "version": "3.1.1", 1021 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1022 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1023 | "dev": true, 1024 | "engines": { 1025 | "node": ">=6" 1026 | } 1027 | }, 1028 | "node_modules/escape-string-regexp": { 1029 | "version": "1.0.5", 1030 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1031 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1032 | "dev": true, 1033 | "engines": { 1034 | "node": ">=0.8.0" 1035 | } 1036 | }, 1037 | "node_modules/follow-redirects": { 1038 | "version": "1.15.2", 1039 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1040 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 1041 | "funding": [ 1042 | { 1043 | "type": "individual", 1044 | "url": "https://github.com/sponsors/RubenVerborgh" 1045 | } 1046 | ], 1047 | "engines": { 1048 | "node": ">=4.0" 1049 | }, 1050 | "peerDependenciesMeta": { 1051 | "debug": { 1052 | "optional": true 1053 | } 1054 | } 1055 | }, 1056 | "node_modules/form-data": { 1057 | "version": "4.0.0", 1058 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1059 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1060 | "dependencies": { 1061 | "asynckit": "^0.4.0", 1062 | "combined-stream": "^1.0.8", 1063 | "mime-types": "^2.1.12" 1064 | }, 1065 | "engines": { 1066 | "node": ">= 6" 1067 | } 1068 | }, 1069 | "node_modules/fsevents": { 1070 | "version": "2.3.2", 1071 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1072 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1073 | "dev": true, 1074 | "hasInstallScript": true, 1075 | "optional": true, 1076 | "os": [ 1077 | "darwin" 1078 | ], 1079 | "engines": { 1080 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1081 | } 1082 | }, 1083 | "node_modules/function-bind": { 1084 | "version": "1.1.1", 1085 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1086 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1087 | "dev": true 1088 | }, 1089 | "node_modules/gensync": { 1090 | "version": "1.0.0-beta.2", 1091 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1092 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1093 | "dev": true, 1094 | "engines": { 1095 | "node": ">=6.9.0" 1096 | } 1097 | }, 1098 | "node_modules/globals": { 1099 | "version": "11.12.0", 1100 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1101 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1102 | "dev": true, 1103 | "engines": { 1104 | "node": ">=4" 1105 | } 1106 | }, 1107 | "node_modules/has": { 1108 | "version": "1.0.3", 1109 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1110 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1111 | "dev": true, 1112 | "dependencies": { 1113 | "function-bind": "^1.1.1" 1114 | }, 1115 | "engines": { 1116 | "node": ">= 0.4.0" 1117 | } 1118 | }, 1119 | "node_modules/has-flag": { 1120 | "version": "3.0.0", 1121 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1122 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1123 | "dev": true, 1124 | "engines": { 1125 | "node": ">=4" 1126 | } 1127 | }, 1128 | "node_modules/is-core-module": { 1129 | "version": "2.11.0", 1130 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1131 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1132 | "dev": true, 1133 | "dependencies": { 1134 | "has": "^1.0.3" 1135 | }, 1136 | "funding": { 1137 | "url": "https://github.com/sponsors/ljharb" 1138 | } 1139 | }, 1140 | "node_modules/js-tokens": { 1141 | "version": "4.0.0", 1142 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1143 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1144 | }, 1145 | "node_modules/jsesc": { 1146 | "version": "2.5.2", 1147 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1148 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1149 | "dev": true, 1150 | "bin": { 1151 | "jsesc": "bin/jsesc" 1152 | }, 1153 | "engines": { 1154 | "node": ">=4" 1155 | } 1156 | }, 1157 | "node_modules/json5": { 1158 | "version": "2.2.3", 1159 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 1160 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 1161 | "dev": true, 1162 | "bin": { 1163 | "json5": "lib/cli.js" 1164 | }, 1165 | "engines": { 1166 | "node": ">=6" 1167 | } 1168 | }, 1169 | "node_modules/loose-envify": { 1170 | "version": "1.4.0", 1171 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1172 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1173 | "dependencies": { 1174 | "js-tokens": "^3.0.0 || ^4.0.0" 1175 | }, 1176 | "bin": { 1177 | "loose-envify": "cli.js" 1178 | } 1179 | }, 1180 | "node_modules/lru-cache": { 1181 | "version": "5.1.1", 1182 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1183 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1184 | "dev": true, 1185 | "dependencies": { 1186 | "yallist": "^3.0.2" 1187 | } 1188 | }, 1189 | "node_modules/magic-string": { 1190 | "version": "0.27.0", 1191 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 1192 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 1193 | "dev": true, 1194 | "dependencies": { 1195 | "@jridgewell/sourcemap-codec": "^1.4.13" 1196 | }, 1197 | "engines": { 1198 | "node": ">=12" 1199 | } 1200 | }, 1201 | "node_modules/mime-db": { 1202 | "version": "1.52.0", 1203 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1204 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1205 | "engines": { 1206 | "node": ">= 0.6" 1207 | } 1208 | }, 1209 | "node_modules/mime-types": { 1210 | "version": "2.1.35", 1211 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1212 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1213 | "dependencies": { 1214 | "mime-db": "1.52.0" 1215 | }, 1216 | "engines": { 1217 | "node": ">= 0.6" 1218 | } 1219 | }, 1220 | "node_modules/ms": { 1221 | "version": "2.1.2", 1222 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1223 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1224 | "dev": true 1225 | }, 1226 | "node_modules/nanoid": { 1227 | "version": "3.3.4", 1228 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1229 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1230 | "dev": true, 1231 | "bin": { 1232 | "nanoid": "bin/nanoid.cjs" 1233 | }, 1234 | "engines": { 1235 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1236 | } 1237 | }, 1238 | "node_modules/node-releases": { 1239 | "version": "2.0.8", 1240 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", 1241 | "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", 1242 | "dev": true 1243 | }, 1244 | "node_modules/path-parse": { 1245 | "version": "1.0.7", 1246 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1247 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1248 | "dev": true 1249 | }, 1250 | "node_modules/picocolors": { 1251 | "version": "1.0.0", 1252 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1253 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1254 | "dev": true 1255 | }, 1256 | "node_modules/postcss": { 1257 | "version": "8.4.21", 1258 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 1259 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 1260 | "dev": true, 1261 | "funding": [ 1262 | { 1263 | "type": "opencollective", 1264 | "url": "https://opencollective.com/postcss/" 1265 | }, 1266 | { 1267 | "type": "tidelift", 1268 | "url": "https://tidelift.com/funding/github/npm/postcss" 1269 | } 1270 | ], 1271 | "dependencies": { 1272 | "nanoid": "^3.3.4", 1273 | "picocolors": "^1.0.0", 1274 | "source-map-js": "^1.0.2" 1275 | }, 1276 | "engines": { 1277 | "node": "^10 || ^12 || >=14" 1278 | } 1279 | }, 1280 | "node_modules/proxy-from-env": { 1281 | "version": "1.1.0", 1282 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1283 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1284 | }, 1285 | "node_modules/react": { 1286 | "version": "18.2.0", 1287 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 1288 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 1289 | "dependencies": { 1290 | "loose-envify": "^1.1.0" 1291 | }, 1292 | "engines": { 1293 | "node": ">=0.10.0" 1294 | } 1295 | }, 1296 | "node_modules/react-dom": { 1297 | "version": "18.2.0", 1298 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 1299 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 1300 | "dependencies": { 1301 | "loose-envify": "^1.1.0", 1302 | "scheduler": "^0.23.0" 1303 | }, 1304 | "peerDependencies": { 1305 | "react": "^18.2.0" 1306 | } 1307 | }, 1308 | "node_modules/react-refresh": { 1309 | "version": "0.14.0", 1310 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 1311 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 1312 | "dev": true, 1313 | "engines": { 1314 | "node": ">=0.10.0" 1315 | } 1316 | }, 1317 | "node_modules/resolve": { 1318 | "version": "1.22.1", 1319 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1320 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1321 | "dev": true, 1322 | "dependencies": { 1323 | "is-core-module": "^2.9.0", 1324 | "path-parse": "^1.0.7", 1325 | "supports-preserve-symlinks-flag": "^1.0.0" 1326 | }, 1327 | "bin": { 1328 | "resolve": "bin/resolve" 1329 | }, 1330 | "funding": { 1331 | "url": "https://github.com/sponsors/ljharb" 1332 | } 1333 | }, 1334 | "node_modules/rollup": { 1335 | "version": "3.10.0", 1336 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.0.tgz", 1337 | "integrity": "sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==", 1338 | "dev": true, 1339 | "bin": { 1340 | "rollup": "dist/bin/rollup" 1341 | }, 1342 | "engines": { 1343 | "node": ">=14.18.0", 1344 | "npm": ">=8.0.0" 1345 | }, 1346 | "optionalDependencies": { 1347 | "fsevents": "~2.3.2" 1348 | } 1349 | }, 1350 | "node_modules/scheduler": { 1351 | "version": "0.23.0", 1352 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 1353 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 1354 | "dependencies": { 1355 | "loose-envify": "^1.1.0" 1356 | } 1357 | }, 1358 | "node_modules/semver": { 1359 | "version": "6.3.0", 1360 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1361 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1362 | "dev": true, 1363 | "bin": { 1364 | "semver": "bin/semver.js" 1365 | } 1366 | }, 1367 | "node_modules/source-map-js": { 1368 | "version": "1.0.2", 1369 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1370 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1371 | "dev": true, 1372 | "engines": { 1373 | "node": ">=0.10.0" 1374 | } 1375 | }, 1376 | "node_modules/supports-color": { 1377 | "version": "5.5.0", 1378 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1379 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1380 | "dev": true, 1381 | "dependencies": { 1382 | "has-flag": "^3.0.0" 1383 | }, 1384 | "engines": { 1385 | "node": ">=4" 1386 | } 1387 | }, 1388 | "node_modules/supports-preserve-symlinks-flag": { 1389 | "version": "1.0.0", 1390 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1391 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1392 | "dev": true, 1393 | "engines": { 1394 | "node": ">= 0.4" 1395 | }, 1396 | "funding": { 1397 | "url": "https://github.com/sponsors/ljharb" 1398 | } 1399 | }, 1400 | "node_modules/swr": { 1401 | "version": "2.0.0", 1402 | "resolved": "https://registry.npmjs.org/swr/-/swr-2.0.0.tgz", 1403 | "integrity": "sha512-IhUx5yPkX+Fut3h0SqZycnaNLXLXsb2ECFq0Y29cxnK7d8r7auY2JWNbCW3IX+EqXUg3rwNJFlhrw5Ye/b6k7w==", 1404 | "dependencies": { 1405 | "use-sync-external-store": "^1.2.0" 1406 | }, 1407 | "engines": { 1408 | "pnpm": "7" 1409 | }, 1410 | "peerDependencies": { 1411 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 1412 | } 1413 | }, 1414 | "node_modules/to-fast-properties": { 1415 | "version": "2.0.0", 1416 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1417 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1418 | "dev": true, 1419 | "engines": { 1420 | "node": ">=4" 1421 | } 1422 | }, 1423 | "node_modules/update-browserslist-db": { 1424 | "version": "1.0.10", 1425 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 1426 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 1427 | "dev": true, 1428 | "funding": [ 1429 | { 1430 | "type": "opencollective", 1431 | "url": "https://opencollective.com/browserslist" 1432 | }, 1433 | { 1434 | "type": "tidelift", 1435 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1436 | } 1437 | ], 1438 | "dependencies": { 1439 | "escalade": "^3.1.1", 1440 | "picocolors": "^1.0.0" 1441 | }, 1442 | "bin": { 1443 | "browserslist-lint": "cli.js" 1444 | }, 1445 | "peerDependencies": { 1446 | "browserslist": ">= 4.21.0" 1447 | } 1448 | }, 1449 | "node_modules/use-sync-external-store": { 1450 | "version": "1.2.0", 1451 | "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", 1452 | "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", 1453 | "peerDependencies": { 1454 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0" 1455 | } 1456 | }, 1457 | "node_modules/vite": { 1458 | "version": "4.0.4", 1459 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", 1460 | "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", 1461 | "dev": true, 1462 | "dependencies": { 1463 | "esbuild": "^0.16.3", 1464 | "postcss": "^8.4.20", 1465 | "resolve": "^1.22.1", 1466 | "rollup": "^3.7.0" 1467 | }, 1468 | "bin": { 1469 | "vite": "bin/vite.js" 1470 | }, 1471 | "engines": { 1472 | "node": "^14.18.0 || >=16.0.0" 1473 | }, 1474 | "optionalDependencies": { 1475 | "fsevents": "~2.3.2" 1476 | }, 1477 | "peerDependencies": { 1478 | "@types/node": ">= 14", 1479 | "less": "*", 1480 | "sass": "*", 1481 | "stylus": "*", 1482 | "sugarss": "*", 1483 | "terser": "^5.4.0" 1484 | }, 1485 | "peerDependenciesMeta": { 1486 | "@types/node": { 1487 | "optional": true 1488 | }, 1489 | "less": { 1490 | "optional": true 1491 | }, 1492 | "sass": { 1493 | "optional": true 1494 | }, 1495 | "stylus": { 1496 | "optional": true 1497 | }, 1498 | "sugarss": { 1499 | "optional": true 1500 | }, 1501 | "terser": { 1502 | "optional": true 1503 | } 1504 | } 1505 | }, 1506 | "node_modules/yallist": { 1507 | "version": "3.1.1", 1508 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1509 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 1510 | "dev": true 1511 | } 1512 | }, 1513 | "dependencies": { 1514 | "@ampproject/remapping": { 1515 | "version": "2.2.0", 1516 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 1517 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 1518 | "dev": true, 1519 | "requires": { 1520 | "@jridgewell/gen-mapping": "^0.1.0", 1521 | "@jridgewell/trace-mapping": "^0.3.9" 1522 | } 1523 | }, 1524 | "@babel/code-frame": { 1525 | "version": "7.18.6", 1526 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 1527 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 1528 | "dev": true, 1529 | "requires": { 1530 | "@babel/highlight": "^7.18.6" 1531 | } 1532 | }, 1533 | "@babel/compat-data": { 1534 | "version": "7.20.10", 1535 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", 1536 | "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", 1537 | "dev": true 1538 | }, 1539 | "@babel/core": { 1540 | "version": "7.20.12", 1541 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", 1542 | "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", 1543 | "dev": true, 1544 | "requires": { 1545 | "@ampproject/remapping": "^2.1.0", 1546 | "@babel/code-frame": "^7.18.6", 1547 | "@babel/generator": "^7.20.7", 1548 | "@babel/helper-compilation-targets": "^7.20.7", 1549 | "@babel/helper-module-transforms": "^7.20.11", 1550 | "@babel/helpers": "^7.20.7", 1551 | "@babel/parser": "^7.20.7", 1552 | "@babel/template": "^7.20.7", 1553 | "@babel/traverse": "^7.20.12", 1554 | "@babel/types": "^7.20.7", 1555 | "convert-source-map": "^1.7.0", 1556 | "debug": "^4.1.0", 1557 | "gensync": "^1.0.0-beta.2", 1558 | "json5": "^2.2.2", 1559 | "semver": "^6.3.0" 1560 | } 1561 | }, 1562 | "@babel/generator": { 1563 | "version": "7.20.7", 1564 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", 1565 | "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", 1566 | "dev": true, 1567 | "requires": { 1568 | "@babel/types": "^7.20.7", 1569 | "@jridgewell/gen-mapping": "^0.3.2", 1570 | "jsesc": "^2.5.1" 1571 | }, 1572 | "dependencies": { 1573 | "@jridgewell/gen-mapping": { 1574 | "version": "0.3.2", 1575 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 1576 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 1577 | "dev": true, 1578 | "requires": { 1579 | "@jridgewell/set-array": "^1.0.1", 1580 | "@jridgewell/sourcemap-codec": "^1.4.10", 1581 | "@jridgewell/trace-mapping": "^0.3.9" 1582 | } 1583 | } 1584 | } 1585 | }, 1586 | "@babel/helper-compilation-targets": { 1587 | "version": "7.20.7", 1588 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", 1589 | "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", 1590 | "dev": true, 1591 | "requires": { 1592 | "@babel/compat-data": "^7.20.5", 1593 | "@babel/helper-validator-option": "^7.18.6", 1594 | "browserslist": "^4.21.3", 1595 | "lru-cache": "^5.1.1", 1596 | "semver": "^6.3.0" 1597 | } 1598 | }, 1599 | "@babel/helper-environment-visitor": { 1600 | "version": "7.18.9", 1601 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 1602 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 1603 | "dev": true 1604 | }, 1605 | "@babel/helper-function-name": { 1606 | "version": "7.19.0", 1607 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 1608 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 1609 | "dev": true, 1610 | "requires": { 1611 | "@babel/template": "^7.18.10", 1612 | "@babel/types": "^7.19.0" 1613 | } 1614 | }, 1615 | "@babel/helper-hoist-variables": { 1616 | "version": "7.18.6", 1617 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 1618 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 1619 | "dev": true, 1620 | "requires": { 1621 | "@babel/types": "^7.18.6" 1622 | } 1623 | }, 1624 | "@babel/helper-module-imports": { 1625 | "version": "7.18.6", 1626 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 1627 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 1628 | "dev": true, 1629 | "requires": { 1630 | "@babel/types": "^7.18.6" 1631 | } 1632 | }, 1633 | "@babel/helper-module-transforms": { 1634 | "version": "7.20.11", 1635 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", 1636 | "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", 1637 | "dev": true, 1638 | "requires": { 1639 | "@babel/helper-environment-visitor": "^7.18.9", 1640 | "@babel/helper-module-imports": "^7.18.6", 1641 | "@babel/helper-simple-access": "^7.20.2", 1642 | "@babel/helper-split-export-declaration": "^7.18.6", 1643 | "@babel/helper-validator-identifier": "^7.19.1", 1644 | "@babel/template": "^7.20.7", 1645 | "@babel/traverse": "^7.20.10", 1646 | "@babel/types": "^7.20.7" 1647 | } 1648 | }, 1649 | "@babel/helper-plugin-utils": { 1650 | "version": "7.20.2", 1651 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 1652 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 1653 | "dev": true 1654 | }, 1655 | "@babel/helper-simple-access": { 1656 | "version": "7.20.2", 1657 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", 1658 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", 1659 | "dev": true, 1660 | "requires": { 1661 | "@babel/types": "^7.20.2" 1662 | } 1663 | }, 1664 | "@babel/helper-split-export-declaration": { 1665 | "version": "7.18.6", 1666 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 1667 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 1668 | "dev": true, 1669 | "requires": { 1670 | "@babel/types": "^7.18.6" 1671 | } 1672 | }, 1673 | "@babel/helper-string-parser": { 1674 | "version": "7.19.4", 1675 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 1676 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 1677 | "dev": true 1678 | }, 1679 | "@babel/helper-validator-identifier": { 1680 | "version": "7.19.1", 1681 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 1682 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 1683 | "dev": true 1684 | }, 1685 | "@babel/helper-validator-option": { 1686 | "version": "7.18.6", 1687 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 1688 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 1689 | "dev": true 1690 | }, 1691 | "@babel/helpers": { 1692 | "version": "7.20.7", 1693 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", 1694 | "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", 1695 | "dev": true, 1696 | "requires": { 1697 | "@babel/template": "^7.20.7", 1698 | "@babel/traverse": "^7.20.7", 1699 | "@babel/types": "^7.20.7" 1700 | } 1701 | }, 1702 | "@babel/highlight": { 1703 | "version": "7.18.6", 1704 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1705 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1706 | "dev": true, 1707 | "requires": { 1708 | "@babel/helper-validator-identifier": "^7.18.6", 1709 | "chalk": "^2.0.0", 1710 | "js-tokens": "^4.0.0" 1711 | } 1712 | }, 1713 | "@babel/parser": { 1714 | "version": "7.20.7", 1715 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", 1716 | "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", 1717 | "dev": true 1718 | }, 1719 | "@babel/plugin-transform-react-jsx-self": { 1720 | "version": "7.18.6", 1721 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 1722 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 1723 | "dev": true, 1724 | "requires": { 1725 | "@babel/helper-plugin-utils": "^7.18.6" 1726 | } 1727 | }, 1728 | "@babel/plugin-transform-react-jsx-source": { 1729 | "version": "7.19.6", 1730 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", 1731 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", 1732 | "dev": true, 1733 | "requires": { 1734 | "@babel/helper-plugin-utils": "^7.19.0" 1735 | } 1736 | }, 1737 | "@babel/template": { 1738 | "version": "7.20.7", 1739 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", 1740 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", 1741 | "dev": true, 1742 | "requires": { 1743 | "@babel/code-frame": "^7.18.6", 1744 | "@babel/parser": "^7.20.7", 1745 | "@babel/types": "^7.20.7" 1746 | } 1747 | }, 1748 | "@babel/traverse": { 1749 | "version": "7.20.12", 1750 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", 1751 | "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", 1752 | "dev": true, 1753 | "requires": { 1754 | "@babel/code-frame": "^7.18.6", 1755 | "@babel/generator": "^7.20.7", 1756 | "@babel/helper-environment-visitor": "^7.18.9", 1757 | "@babel/helper-function-name": "^7.19.0", 1758 | "@babel/helper-hoist-variables": "^7.18.6", 1759 | "@babel/helper-split-export-declaration": "^7.18.6", 1760 | "@babel/parser": "^7.20.7", 1761 | "@babel/types": "^7.20.7", 1762 | "debug": "^4.1.0", 1763 | "globals": "^11.1.0" 1764 | } 1765 | }, 1766 | "@babel/types": { 1767 | "version": "7.20.7", 1768 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", 1769 | "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", 1770 | "dev": true, 1771 | "requires": { 1772 | "@babel/helper-string-parser": "^7.19.4", 1773 | "@babel/helper-validator-identifier": "^7.19.1", 1774 | "to-fast-properties": "^2.0.0" 1775 | } 1776 | }, 1777 | "@esbuild/android-arm": { 1778 | "version": "0.16.17", 1779 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 1780 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 1781 | "dev": true, 1782 | "optional": true 1783 | }, 1784 | "@esbuild/android-arm64": { 1785 | "version": "0.16.17", 1786 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 1787 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 1788 | "dev": true, 1789 | "optional": true 1790 | }, 1791 | "@esbuild/android-x64": { 1792 | "version": "0.16.17", 1793 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 1794 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 1795 | "dev": true, 1796 | "optional": true 1797 | }, 1798 | "@esbuild/darwin-arm64": { 1799 | "version": "0.16.17", 1800 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 1801 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 1802 | "dev": true, 1803 | "optional": true 1804 | }, 1805 | "@esbuild/darwin-x64": { 1806 | "version": "0.16.17", 1807 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 1808 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 1809 | "dev": true, 1810 | "optional": true 1811 | }, 1812 | "@esbuild/freebsd-arm64": { 1813 | "version": "0.16.17", 1814 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 1815 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 1816 | "dev": true, 1817 | "optional": true 1818 | }, 1819 | "@esbuild/freebsd-x64": { 1820 | "version": "0.16.17", 1821 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 1822 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 1823 | "dev": true, 1824 | "optional": true 1825 | }, 1826 | "@esbuild/linux-arm": { 1827 | "version": "0.16.17", 1828 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 1829 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 1830 | "dev": true, 1831 | "optional": true 1832 | }, 1833 | "@esbuild/linux-arm64": { 1834 | "version": "0.16.17", 1835 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 1836 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 1837 | "dev": true, 1838 | "optional": true 1839 | }, 1840 | "@esbuild/linux-ia32": { 1841 | "version": "0.16.17", 1842 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 1843 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 1844 | "dev": true, 1845 | "optional": true 1846 | }, 1847 | "@esbuild/linux-loong64": { 1848 | "version": "0.16.17", 1849 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 1850 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 1851 | "dev": true, 1852 | "optional": true 1853 | }, 1854 | "@esbuild/linux-mips64el": { 1855 | "version": "0.16.17", 1856 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 1857 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 1858 | "dev": true, 1859 | "optional": true 1860 | }, 1861 | "@esbuild/linux-ppc64": { 1862 | "version": "0.16.17", 1863 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 1864 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 1865 | "dev": true, 1866 | "optional": true 1867 | }, 1868 | "@esbuild/linux-riscv64": { 1869 | "version": "0.16.17", 1870 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 1871 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 1872 | "dev": true, 1873 | "optional": true 1874 | }, 1875 | "@esbuild/linux-s390x": { 1876 | "version": "0.16.17", 1877 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 1878 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 1879 | "dev": true, 1880 | "optional": true 1881 | }, 1882 | "@esbuild/linux-x64": { 1883 | "version": "0.16.17", 1884 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 1885 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 1886 | "dev": true, 1887 | "optional": true 1888 | }, 1889 | "@esbuild/netbsd-x64": { 1890 | "version": "0.16.17", 1891 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 1892 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 1893 | "dev": true, 1894 | "optional": true 1895 | }, 1896 | "@esbuild/openbsd-x64": { 1897 | "version": "0.16.17", 1898 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 1899 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 1900 | "dev": true, 1901 | "optional": true 1902 | }, 1903 | "@esbuild/sunos-x64": { 1904 | "version": "0.16.17", 1905 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 1906 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 1907 | "dev": true, 1908 | "optional": true 1909 | }, 1910 | "@esbuild/win32-arm64": { 1911 | "version": "0.16.17", 1912 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 1913 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 1914 | "dev": true, 1915 | "optional": true 1916 | }, 1917 | "@esbuild/win32-ia32": { 1918 | "version": "0.16.17", 1919 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 1920 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 1921 | "dev": true, 1922 | "optional": true 1923 | }, 1924 | "@esbuild/win32-x64": { 1925 | "version": "0.16.17", 1926 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 1927 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 1928 | "dev": true, 1929 | "optional": true 1930 | }, 1931 | "@jridgewell/gen-mapping": { 1932 | "version": "0.1.1", 1933 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 1934 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 1935 | "dev": true, 1936 | "requires": { 1937 | "@jridgewell/set-array": "^1.0.0", 1938 | "@jridgewell/sourcemap-codec": "^1.4.10" 1939 | } 1940 | }, 1941 | "@jridgewell/resolve-uri": { 1942 | "version": "3.1.0", 1943 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1944 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 1945 | "dev": true 1946 | }, 1947 | "@jridgewell/set-array": { 1948 | "version": "1.1.2", 1949 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 1950 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 1951 | "dev": true 1952 | }, 1953 | "@jridgewell/sourcemap-codec": { 1954 | "version": "1.4.14", 1955 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1956 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1957 | "dev": true 1958 | }, 1959 | "@jridgewell/trace-mapping": { 1960 | "version": "0.3.17", 1961 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 1962 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 1963 | "dev": true, 1964 | "requires": { 1965 | "@jridgewell/resolve-uri": "3.1.0", 1966 | "@jridgewell/sourcemap-codec": "1.4.14" 1967 | } 1968 | }, 1969 | "@types/prop-types": { 1970 | "version": "15.7.5", 1971 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 1972 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 1973 | "dev": true 1974 | }, 1975 | "@types/react": { 1976 | "version": "18.0.26", 1977 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", 1978 | "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", 1979 | "dev": true, 1980 | "requires": { 1981 | "@types/prop-types": "*", 1982 | "@types/scheduler": "*", 1983 | "csstype": "^3.0.2" 1984 | } 1985 | }, 1986 | "@types/react-dom": { 1987 | "version": "18.0.10", 1988 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", 1989 | "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", 1990 | "dev": true, 1991 | "requires": { 1992 | "@types/react": "*" 1993 | } 1994 | }, 1995 | "@types/scheduler": { 1996 | "version": "0.16.2", 1997 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 1998 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 1999 | "dev": true 2000 | }, 2001 | "@vitejs/plugin-react": { 2002 | "version": "3.0.1", 2003 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz", 2004 | "integrity": "sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==", 2005 | "dev": true, 2006 | "requires": { 2007 | "@babel/core": "^7.20.7", 2008 | "@babel/plugin-transform-react-jsx-self": "^7.18.6", 2009 | "@babel/plugin-transform-react-jsx-source": "^7.19.6", 2010 | "magic-string": "^0.27.0", 2011 | "react-refresh": "^0.14.0" 2012 | } 2013 | }, 2014 | "ansi-styles": { 2015 | "version": "3.2.1", 2016 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2017 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2018 | "dev": true, 2019 | "requires": { 2020 | "color-convert": "^1.9.0" 2021 | } 2022 | }, 2023 | "asynckit": { 2024 | "version": "0.4.0", 2025 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 2026 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 2027 | }, 2028 | "axios": { 2029 | "version": "1.2.2", 2030 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", 2031 | "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", 2032 | "requires": { 2033 | "follow-redirects": "^1.15.0", 2034 | "form-data": "^4.0.0", 2035 | "proxy-from-env": "^1.1.0" 2036 | } 2037 | }, 2038 | "browserslist": { 2039 | "version": "4.21.4", 2040 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 2041 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 2042 | "dev": true, 2043 | "requires": { 2044 | "caniuse-lite": "^1.0.30001400", 2045 | "electron-to-chromium": "^1.4.251", 2046 | "node-releases": "^2.0.6", 2047 | "update-browserslist-db": "^1.0.9" 2048 | } 2049 | }, 2050 | "caniuse-lite": { 2051 | "version": "1.0.30001445", 2052 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz", 2053 | "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==", 2054 | "dev": true 2055 | }, 2056 | "chalk": { 2057 | "version": "2.4.2", 2058 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2059 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2060 | "dev": true, 2061 | "requires": { 2062 | "ansi-styles": "^3.2.1", 2063 | "escape-string-regexp": "^1.0.5", 2064 | "supports-color": "^5.3.0" 2065 | } 2066 | }, 2067 | "color-convert": { 2068 | "version": "1.9.3", 2069 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2070 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2071 | "dev": true, 2072 | "requires": { 2073 | "color-name": "1.1.3" 2074 | } 2075 | }, 2076 | "color-name": { 2077 | "version": "1.1.3", 2078 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2079 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2080 | "dev": true 2081 | }, 2082 | "combined-stream": { 2083 | "version": "1.0.8", 2084 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 2085 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 2086 | "requires": { 2087 | "delayed-stream": "~1.0.0" 2088 | } 2089 | }, 2090 | "convert-source-map": { 2091 | "version": "1.9.0", 2092 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 2093 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 2094 | "dev": true 2095 | }, 2096 | "csstype": { 2097 | "version": "3.1.1", 2098 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 2099 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 2100 | "dev": true 2101 | }, 2102 | "debug": { 2103 | "version": "4.3.4", 2104 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2105 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2106 | "dev": true, 2107 | "requires": { 2108 | "ms": "2.1.2" 2109 | } 2110 | }, 2111 | "delayed-stream": { 2112 | "version": "1.0.0", 2113 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2114 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 2115 | }, 2116 | "electron-to-chromium": { 2117 | "version": "1.4.284", 2118 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 2119 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 2120 | "dev": true 2121 | }, 2122 | "esbuild": { 2123 | "version": "0.16.17", 2124 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 2125 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 2126 | "dev": true, 2127 | "requires": { 2128 | "@esbuild/android-arm": "0.16.17", 2129 | "@esbuild/android-arm64": "0.16.17", 2130 | "@esbuild/android-x64": "0.16.17", 2131 | "@esbuild/darwin-arm64": "0.16.17", 2132 | "@esbuild/darwin-x64": "0.16.17", 2133 | "@esbuild/freebsd-arm64": "0.16.17", 2134 | "@esbuild/freebsd-x64": "0.16.17", 2135 | "@esbuild/linux-arm": "0.16.17", 2136 | "@esbuild/linux-arm64": "0.16.17", 2137 | "@esbuild/linux-ia32": "0.16.17", 2138 | "@esbuild/linux-loong64": "0.16.17", 2139 | "@esbuild/linux-mips64el": "0.16.17", 2140 | "@esbuild/linux-ppc64": "0.16.17", 2141 | "@esbuild/linux-riscv64": "0.16.17", 2142 | "@esbuild/linux-s390x": "0.16.17", 2143 | "@esbuild/linux-x64": "0.16.17", 2144 | "@esbuild/netbsd-x64": "0.16.17", 2145 | "@esbuild/openbsd-x64": "0.16.17", 2146 | "@esbuild/sunos-x64": "0.16.17", 2147 | "@esbuild/win32-arm64": "0.16.17", 2148 | "@esbuild/win32-ia32": "0.16.17", 2149 | "@esbuild/win32-x64": "0.16.17" 2150 | } 2151 | }, 2152 | "escalade": { 2153 | "version": "3.1.1", 2154 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2155 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2156 | "dev": true 2157 | }, 2158 | "escape-string-regexp": { 2159 | "version": "1.0.5", 2160 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2161 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2162 | "dev": true 2163 | }, 2164 | "follow-redirects": { 2165 | "version": "1.15.2", 2166 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 2167 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 2168 | }, 2169 | "form-data": { 2170 | "version": "4.0.0", 2171 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 2172 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 2173 | "requires": { 2174 | "asynckit": "^0.4.0", 2175 | "combined-stream": "^1.0.8", 2176 | "mime-types": "^2.1.12" 2177 | } 2178 | }, 2179 | "fsevents": { 2180 | "version": "2.3.2", 2181 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2182 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2183 | "dev": true, 2184 | "optional": true 2185 | }, 2186 | "function-bind": { 2187 | "version": "1.1.1", 2188 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2189 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2190 | "dev": true 2191 | }, 2192 | "gensync": { 2193 | "version": "1.0.0-beta.2", 2194 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2195 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2196 | "dev": true 2197 | }, 2198 | "globals": { 2199 | "version": "11.12.0", 2200 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2201 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2202 | "dev": true 2203 | }, 2204 | "has": { 2205 | "version": "1.0.3", 2206 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2207 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2208 | "dev": true, 2209 | "requires": { 2210 | "function-bind": "^1.1.1" 2211 | } 2212 | }, 2213 | "has-flag": { 2214 | "version": "3.0.0", 2215 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2216 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2217 | "dev": true 2218 | }, 2219 | "is-core-module": { 2220 | "version": "2.11.0", 2221 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 2222 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 2223 | "dev": true, 2224 | "requires": { 2225 | "has": "^1.0.3" 2226 | } 2227 | }, 2228 | "js-tokens": { 2229 | "version": "4.0.0", 2230 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2231 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2232 | }, 2233 | "jsesc": { 2234 | "version": "2.5.2", 2235 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2236 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2237 | "dev": true 2238 | }, 2239 | "json5": { 2240 | "version": "2.2.3", 2241 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 2242 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 2243 | "dev": true 2244 | }, 2245 | "loose-envify": { 2246 | "version": "1.4.0", 2247 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2248 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2249 | "requires": { 2250 | "js-tokens": "^3.0.0 || ^4.0.0" 2251 | } 2252 | }, 2253 | "lru-cache": { 2254 | "version": "5.1.1", 2255 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 2256 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 2257 | "dev": true, 2258 | "requires": { 2259 | "yallist": "^3.0.2" 2260 | } 2261 | }, 2262 | "magic-string": { 2263 | "version": "0.27.0", 2264 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 2265 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 2266 | "dev": true, 2267 | "requires": { 2268 | "@jridgewell/sourcemap-codec": "^1.4.13" 2269 | } 2270 | }, 2271 | "mime-db": { 2272 | "version": "1.52.0", 2273 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2274 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 2275 | }, 2276 | "mime-types": { 2277 | "version": "2.1.35", 2278 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2279 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2280 | "requires": { 2281 | "mime-db": "1.52.0" 2282 | } 2283 | }, 2284 | "ms": { 2285 | "version": "2.1.2", 2286 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2287 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2288 | "dev": true 2289 | }, 2290 | "nanoid": { 2291 | "version": "3.3.4", 2292 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 2293 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 2294 | "dev": true 2295 | }, 2296 | "node-releases": { 2297 | "version": "2.0.8", 2298 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", 2299 | "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", 2300 | "dev": true 2301 | }, 2302 | "path-parse": { 2303 | "version": "1.0.7", 2304 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2305 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2306 | "dev": true 2307 | }, 2308 | "picocolors": { 2309 | "version": "1.0.0", 2310 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2311 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2312 | "dev": true 2313 | }, 2314 | "postcss": { 2315 | "version": "8.4.21", 2316 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 2317 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 2318 | "dev": true, 2319 | "requires": { 2320 | "nanoid": "^3.3.4", 2321 | "picocolors": "^1.0.0", 2322 | "source-map-js": "^1.0.2" 2323 | } 2324 | }, 2325 | "proxy-from-env": { 2326 | "version": "1.1.0", 2327 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 2328 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 2329 | }, 2330 | "react": { 2331 | "version": "18.2.0", 2332 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 2333 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 2334 | "requires": { 2335 | "loose-envify": "^1.1.0" 2336 | } 2337 | }, 2338 | "react-dom": { 2339 | "version": "18.2.0", 2340 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 2341 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 2342 | "requires": { 2343 | "loose-envify": "^1.1.0", 2344 | "scheduler": "^0.23.0" 2345 | } 2346 | }, 2347 | "react-refresh": { 2348 | "version": "0.14.0", 2349 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", 2350 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", 2351 | "dev": true 2352 | }, 2353 | "resolve": { 2354 | "version": "1.22.1", 2355 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2356 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2357 | "dev": true, 2358 | "requires": { 2359 | "is-core-module": "^2.9.0", 2360 | "path-parse": "^1.0.7", 2361 | "supports-preserve-symlinks-flag": "^1.0.0" 2362 | } 2363 | }, 2364 | "rollup": { 2365 | "version": "3.10.0", 2366 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.0.tgz", 2367 | "integrity": "sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==", 2368 | "dev": true, 2369 | "requires": { 2370 | "fsevents": "~2.3.2" 2371 | } 2372 | }, 2373 | "scheduler": { 2374 | "version": "0.23.0", 2375 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 2376 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 2377 | "requires": { 2378 | "loose-envify": "^1.1.0" 2379 | } 2380 | }, 2381 | "semver": { 2382 | "version": "6.3.0", 2383 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2384 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2385 | "dev": true 2386 | }, 2387 | "source-map-js": { 2388 | "version": "1.0.2", 2389 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2390 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2391 | "dev": true 2392 | }, 2393 | "supports-color": { 2394 | "version": "5.5.0", 2395 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2396 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2397 | "dev": true, 2398 | "requires": { 2399 | "has-flag": "^3.0.0" 2400 | } 2401 | }, 2402 | "supports-preserve-symlinks-flag": { 2403 | "version": "1.0.0", 2404 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2405 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2406 | "dev": true 2407 | }, 2408 | "swr": { 2409 | "version": "2.0.0", 2410 | "resolved": "https://registry.npmjs.org/swr/-/swr-2.0.0.tgz", 2411 | "integrity": "sha512-IhUx5yPkX+Fut3h0SqZycnaNLXLXsb2ECFq0Y29cxnK7d8r7auY2JWNbCW3IX+EqXUg3rwNJFlhrw5Ye/b6k7w==", 2412 | "requires": { 2413 | "use-sync-external-store": "^1.2.0" 2414 | } 2415 | }, 2416 | "to-fast-properties": { 2417 | "version": "2.0.0", 2418 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2419 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2420 | "dev": true 2421 | }, 2422 | "update-browserslist-db": { 2423 | "version": "1.0.10", 2424 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 2425 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 2426 | "dev": true, 2427 | "requires": { 2428 | "escalade": "^3.1.1", 2429 | "picocolors": "^1.0.0" 2430 | } 2431 | }, 2432 | "use-sync-external-store": { 2433 | "version": "1.2.0", 2434 | "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", 2435 | "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", 2436 | "requires": {} 2437 | }, 2438 | "vite": { 2439 | "version": "4.0.4", 2440 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", 2441 | "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", 2442 | "dev": true, 2443 | "requires": { 2444 | "esbuild": "^0.16.3", 2445 | "fsevents": "~2.3.2", 2446 | "postcss": "^8.4.20", 2447 | "resolve": "^1.22.1", 2448 | "rollup": "^3.7.0" 2449 | } 2450 | }, 2451 | "yallist": { 2452 | "version": "3.1.1", 2453 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 2454 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 2455 | "dev": true 2456 | } 2457 | } 2458 | } 2459 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-skeleton", 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 | "axios": "^1.2.2", 13 | "react": "^18.2.0", 14 | "react-dom": "^18.2.0", 15 | "swr": "^2.0.0" 16 | }, 17 | "devDependencies": { 18 | "@types/react": "^18.0.26", 19 | "@types/react-dom": "^18.0.9", 20 | "@vitejs/plugin-react": "^3.0.0", 21 | "vite": "^4.0.0" 22 | } 23 | } -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.jsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react" 2 | import Header from "./components/Header" 3 | import PostsList from "./components/PostsList" 4 | 5 | function App() { 6 | const [currentUserId, setCurrentUserId] = useState(0) 7 | 8 | return ( 9 | <> 10 |
14 | 15 | 16 | ) 17 | } 18 | 19 | export default App 20 | -------------------------------------------------------------------------------- /src/api/postsApi.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | // Not needed until optimistic UI updates example 4 | const delay = () => new Promise((res) => setTimeout(() => res(), 1800)); 5 | 6 | const postsApi = axios.create({ 7 | baseURL: "http://localhost:3500" 8 | }) 9 | 10 | export const postsUrlEndpoint = '/posts' 11 | 12 | export const getPostsByUserId = async (url, userId) => { 13 | await delay() 14 | const response = await postsApi.get(`${url}?userId=${userId}`) 15 | return response.data 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/api/usersApi.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | // Not needed until optimistic UI updates example 4 | const delay = () => new Promise((res) => setTimeout(() => res(), 1800)); 5 | 6 | const usersApi = axios.create({ 7 | baseURL: "http://localhost:3500" 8 | }) 9 | 10 | export const usersUrlEndpoint = '/users' 11 | 12 | export const getUsers = async () => { 13 | await delay() 14 | const response = await usersApi.get(usersUrlEndpoint) 15 | return response.data 16 | } 17 | 18 | export const getUserById = async (url, userId) => { 19 | await delay() 20 | const response = await usersApi.get(`${url}/${userId}`) 21 | return response.data 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/components/Header.jsx: -------------------------------------------------------------------------------- 1 | import Nav from "./Nav" 2 | 3 | const Header = ({ currentUserId, setCurrentUserId }) => { 4 | return ( 5 |
6 |

Acme Blogs

7 |
12 | ) 13 | } 14 | export default Header -------------------------------------------------------------------------------- /src/components/Nav.jsx: -------------------------------------------------------------------------------- 1 | import useSWR from 'swr' 2 | import { 3 | getUsers, 4 | usersUrlEndpoint as usersCacheKey 5 | } from '../api/usersApi' 6 | 7 | const Nav = ({ currentUserId, setCurrentUserId }) => { 8 | const { 9 | isLoading, 10 | error, 11 | data: employees, 12 | } = useSWR(usersCacheKey, getUsers) 13 | 14 | let options 15 | if (isLoading) { 16 | options = 17 | } else if (!error) { 18 | options = employees.map(user => { 19 | return ( 20 | 23 | ) 24 | }) 25 | const titleValue = 26 | options.push(titleValue) 27 | } 28 | 29 | const onChangeUser = (e) => setCurrentUserId(e.target.value) 30 | 31 | let content 32 | if (error) { 33 | content =

{error.message}

34 | } else { 35 | content = ( 36 | 44 | ) 45 | } 46 | 47 | return content 48 | } 49 | export default Nav -------------------------------------------------------------------------------- /src/components/Post.jsx: -------------------------------------------------------------------------------- 1 | const Post = ({ post, user }) => { 2 | return ( 3 |
4 |

{post.title}

5 |

{post.body}

6 |

Post ID: {post.id}

7 |

Author: {user.name} from {user.company.name}

8 |

Tagline: {user.company.catchPhrase}

9 |
10 | ) 11 | } 12 | export default Post -------------------------------------------------------------------------------- /src/components/PostsList.jsx: -------------------------------------------------------------------------------- 1 | import useSWR from 'swr' 2 | 3 | import { 4 | getPostsByUserId, 5 | postsUrlEndpoint as postsCacheKey 6 | } from '../api/postsApi' 7 | 8 | import { 9 | getUserById, 10 | usersUrlEndpoint as usersCacheKey 11 | } from '../api/usersApi' 12 | 13 | import Post from './Post' 14 | import SkeletonPost from './skeletons/SkeletonPost' 15 | 16 | const PostsList = ({ currentUserId }) => { 17 | 18 | const { 19 | isLoading, 20 | error, 21 | data: posts, 22 | } = useSWR( 23 | [postsCacheKey, currentUserId], 24 | ([url, userId]) => getPostsByUserId(url, userId) 25 | ) 26 | 27 | const { 28 | isLoading: isLoadingUser, 29 | error: userError, 30 | data: user 31 | } = useSWR( 32 | posts?.length ? [usersCacheKey, currentUserId] : null, 33 | ([url, userId]) => getUserById(url, userId) 34 | ) 35 | 36 | let content 37 | if (currentUserId === 0) { 38 | content =

Select an Employee to view posts

39 | } else if (isLoading || isLoadingUser) { 40 | content = ( 41 | [...Array(10).keys()].map(i => { 42 | return 43 | }) 44 | ) 45 | } else if (error || userError) { 46 | content =

{error.message || userError.message}

47 | } else { 48 | content = ( 49 |
50 | {posts.map(post => { 51 | return 52 | })} 53 |
54 | ) 55 | } 56 | 57 | return content 58 | } 59 | export default PostsList -------------------------------------------------------------------------------- /src/components/skeletons/Skeleton.css: -------------------------------------------------------------------------------- 1 | .skeleton { 2 | background-color: rgb(199, 199, 199); 3 | margin: 0.75rem 0; 4 | border-radius: 0.25rem; 5 | } 6 | 7 | .skeleton.title { 8 | height: 1.25rem; 9 | margin-bottom: 1rem; 10 | } 11 | 12 | .skeleton.text { 13 | height: 0.75rem; 14 | } 15 | 16 | .skeleton.width-100 { 17 | width: 100%; 18 | } 19 | 20 | .skeleton.width-50 { 21 | width: 50%; 22 | } 23 | 24 | .skeleton.profile-circle { 25 | width: 150px; 26 | height: 150px; 27 | border-radius: 50%; 28 | } 29 | 30 | /* animation */ 31 | @keyframes pulse { 32 | 50% { 33 | opacity: .5; 34 | } 35 | } 36 | 37 | .animate-pulse { 38 | animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; 39 | } -------------------------------------------------------------------------------- /src/components/skeletons/Skeleton.jsx: -------------------------------------------------------------------------------- 1 | import './Skeleton.css' 2 | 3 | const Skeleton = ({ classes }) => { 4 | const classNames = `skeleton ${classes} animate-pulse` 5 | 6 | return
7 | } 8 | export default Skeleton -------------------------------------------------------------------------------- /src/components/skeletons/SkeletonPost.jsx: -------------------------------------------------------------------------------- 1 | import Skeleton from "./Skeleton" 2 | 3 | const SkeletonPost = () => { 4 | return ( 5 |
6 | 7 | 8 | 9 | 10 |
11 | ) 12 | } 13 | export default SkeletonPost -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); 2 | 3 | /* || RESET */ 4 | * { 5 | padding: 0; 6 | margin: 0; 7 | box-sizing: border-box; 8 | } 9 | 10 | select { 11 | font: inherit; 12 | } 13 | 14 | /* || VARIABLES */ 15 | 16 | :root { 17 | --BGCOLOR: papayawhip; 18 | --HEAD-FOOT-BGCOLOR: #333; 19 | --HEAD-FOOT-COLOR: #FFF; 20 | --MAIN-BGCOLOR: #d2b48c; 21 | --MAIN-FONT-COLOR: #333; 22 | --MAIN-BORDER: #333; 23 | --POST-BGCOLOR: #fff6e8; 24 | --BOX-SHADOW: rgb(0,0,0,0.5); 25 | } 26 | 27 | @media (prefers-color-scheme: dark) { 28 | :root { 29 | --BGCOLOR: #000; 30 | --HEAD-FOOT-BGCOLOR: #1a1a1a; 31 | --MAIN-BGCOLOR: #21262d; 32 | --MAIN-FONT-COLOR: #FFF; 33 | --POST-BGCOLOR: #2b323b; 34 | } 35 | } 36 | 37 | /* || UTILITY CLASSES */ 38 | 39 | .hide { 40 | display: none; 41 | } 42 | 43 | .loading { 44 | color: var(--MAIN-FONT-COLOR); 45 | margin: 2rem; 46 | font-size: 1.5rem; 47 | } 48 | 49 | /* || ELEMENTS */ 50 | 51 | html { 52 | font-family: 'Roboto', sans-serif; 53 | } 54 | 55 | body { 56 | background-color: var(--BGCOLOR); 57 | max-width: 800px; 58 | min-height: 100vh; 59 | margin: auto; 60 | } 61 | 62 | #root { /* React Root div */ 63 | min-height: 100vh; 64 | display: flex; 65 | flex-direction: column; 66 | background-color: var(--MAIN-BGCOLOR); 67 | } 68 | 69 | header, footer { 70 | background-color: var(--HEAD-FOOT-BGCOLOR); 71 | color: var(--HEAD-FOOT-COLOR); 72 | width: 100%; 73 | padding: 1rem; 74 | position: sticky; 75 | z-index: 1; 76 | } 77 | 78 | header { 79 | top: 0; 80 | } 81 | 82 | footer { 83 | bottom: 0; 84 | text-align: center; 85 | } 86 | 87 | 88 | main { 89 | background-color: var(--MAIN-BGCOLOR); 90 | color: var(--MAIN-FONT-COLOR); 91 | flex-grow: 1; 92 | padding: 0 0 40px; 93 | border: 1px solid var(--MAIN-BORDER); 94 | } 95 | 96 | /* || CLASSES */ 97 | .selectMenu { 98 | width: 270px; 99 | margin-top: 0.25rem; 100 | padding: 0.25rem; 101 | border-radius: 0.75rem; 102 | } 103 | 104 | .default-text { 105 | padding: 1rem; 106 | font-size: 1.5rem; 107 | text-align: center; 108 | } 109 | 110 | /* || STYLES FOR POSTS */ 111 | 112 | .post { 113 | background-color: var(--POST-BGCOLOR); 114 | padding: 1rem; 115 | margin: 1rem; 116 | border: 1px solid var(--MAIN-BORDER); 117 | border-radius: 1rem; 118 | box-shadow: 2px 2px 5px 2px var(--BOX-SHADOW); 119 | } 120 | 121 | .post p { 122 | margin-top: 0.25rem; 123 | } 124 | 125 | .post p:nth-child(5) { 126 | font-style: italic; 127 | } 128 | 129 | /* || MEDIA QUERIES */ 130 | 131 | @media only screen and (min-width: 400px) { 132 | .selectMenu { 133 | font-size: 1.4rem; 134 | max-width: 270px; 135 | } 136 | } 137 | 138 | @media only screen and (min-width: 800px) { 139 | body { 140 | box-shadow: 2px 2px 2px 2px var(--BOX-SHADOW); 141 | } 142 | } -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root')).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------