├── .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 |
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 |
--------------------------------------------------------------------------------