├── .gitignore
├── README.md
├── index.html
├── jsconfig.json
├── package-lock.json
├── package.json
├── public
├── api
│ ├── brazil.json
│ ├── hawaii.json
│ ├── jamaica.json
│ └── panama.json
├── favicon.ico
├── images
│ ├── blue-mountain.jpg
│ ├── bocas-del-toro.jpg
│ ├── brazil.jpg
│ ├── hawaii.jpg
│ ├── iguacu-falls.jpg
│ ├── jamaica.jpg
│ ├── kilauea-volcano.jpg
│ ├── montego-bay.jpg
│ ├── na-pali-coast.jpg
│ ├── ohaus-north-shore.jpg
│ ├── panama-canal.jpg
│ ├── panama-city.jpg
│ ├── panama.jpg
│ ├── pao-de-acucar.jpg
│ ├── port-antonio.jpg
│ ├── salvador.jpg
│ ├── santa-catalina.jpg
│ ├── sao-paulo.jpg
│ ├── tower-isle.jpg
│ └── waikiki-beach.jpg
└── main.css
├── src
├── App.vue
├── assets
│ └── logo.png
├── components
│ ├── AppLink.vue
│ ├── ExperienceCard.vue
│ ├── GoBack.vue
│ ├── HelloWorld.vue
│ ├── LeftSidebar.vue
│ └── TheNavigation.vue
├── data.json
├── main.js
├── router
│ └── index.js
└── views
│ ├── DestinationShow.vue
│ ├── ExperienceShow.vue
│ ├── Home.vue
│ ├── Invoices.vue
│ ├── Login.vue
│ ├── NotFound.vue
│ └── Protected.vue
└── vite.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | dist
4 | dist-ssr
5 | *.local
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue Router 4 Source Code
2 | 🗂 Source code for [Vue Router 4 for Everyone](https://vueschool.io/courses/vue-router-4-for-everyone) course
3 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Vite App
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": [
3 | "./src/**/*"
4 | ],
5 | "compilerOptions": {
6 | "baseUrl": ".",
7 | "paths": {
8 | "@/*": ["./src/*"],
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-school-travel-app",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vue-school-travel-app",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "vue": "^3.4.18",
12 | "vue-router": "^4.2.5"
13 | },
14 | "devDependencies": {
15 | "@vitejs/plugin-vue": "^5.0.4",
16 | "@vue/compiler-sfc": "^3.4.18",
17 | "vite": "^5.1.1"
18 | }
19 | },
20 | "node_modules/@babel/parser": {
21 | "version": "7.23.9",
22 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
23 | "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
24 | "bin": {
25 | "parser": "bin/babel-parser.js"
26 | },
27 | "engines": {
28 | "node": ">=6.0.0"
29 | }
30 | },
31 | "node_modules/@esbuild/aix-ppc64": {
32 | "version": "0.19.12",
33 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
34 | "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
35 | "cpu": [
36 | "ppc64"
37 | ],
38 | "dev": true,
39 | "optional": true,
40 | "os": [
41 | "aix"
42 | ],
43 | "engines": {
44 | "node": ">=12"
45 | }
46 | },
47 | "node_modules/@esbuild/android-arm": {
48 | "version": "0.19.12",
49 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
50 | "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
51 | "cpu": [
52 | "arm"
53 | ],
54 | "dev": true,
55 | "optional": true,
56 | "os": [
57 | "android"
58 | ],
59 | "engines": {
60 | "node": ">=12"
61 | }
62 | },
63 | "node_modules/@esbuild/android-arm64": {
64 | "version": "0.19.12",
65 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
66 | "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
67 | "cpu": [
68 | "arm64"
69 | ],
70 | "dev": true,
71 | "optional": true,
72 | "os": [
73 | "android"
74 | ],
75 | "engines": {
76 | "node": ">=12"
77 | }
78 | },
79 | "node_modules/@esbuild/android-x64": {
80 | "version": "0.19.12",
81 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
82 | "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
83 | "cpu": [
84 | "x64"
85 | ],
86 | "dev": true,
87 | "optional": true,
88 | "os": [
89 | "android"
90 | ],
91 | "engines": {
92 | "node": ">=12"
93 | }
94 | },
95 | "node_modules/@esbuild/darwin-arm64": {
96 | "version": "0.19.12",
97 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
98 | "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
99 | "cpu": [
100 | "arm64"
101 | ],
102 | "dev": true,
103 | "optional": true,
104 | "os": [
105 | "darwin"
106 | ],
107 | "engines": {
108 | "node": ">=12"
109 | }
110 | },
111 | "node_modules/@esbuild/darwin-x64": {
112 | "version": "0.19.12",
113 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
114 | "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
115 | "cpu": [
116 | "x64"
117 | ],
118 | "dev": true,
119 | "optional": true,
120 | "os": [
121 | "darwin"
122 | ],
123 | "engines": {
124 | "node": ">=12"
125 | }
126 | },
127 | "node_modules/@esbuild/freebsd-arm64": {
128 | "version": "0.19.12",
129 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
130 | "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
131 | "cpu": [
132 | "arm64"
133 | ],
134 | "dev": true,
135 | "optional": true,
136 | "os": [
137 | "freebsd"
138 | ],
139 | "engines": {
140 | "node": ">=12"
141 | }
142 | },
143 | "node_modules/@esbuild/freebsd-x64": {
144 | "version": "0.19.12",
145 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
146 | "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
147 | "cpu": [
148 | "x64"
149 | ],
150 | "dev": true,
151 | "optional": true,
152 | "os": [
153 | "freebsd"
154 | ],
155 | "engines": {
156 | "node": ">=12"
157 | }
158 | },
159 | "node_modules/@esbuild/linux-arm": {
160 | "version": "0.19.12",
161 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
162 | "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
163 | "cpu": [
164 | "arm"
165 | ],
166 | "dev": true,
167 | "optional": true,
168 | "os": [
169 | "linux"
170 | ],
171 | "engines": {
172 | "node": ">=12"
173 | }
174 | },
175 | "node_modules/@esbuild/linux-arm64": {
176 | "version": "0.19.12",
177 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
178 | "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
179 | "cpu": [
180 | "arm64"
181 | ],
182 | "dev": true,
183 | "optional": true,
184 | "os": [
185 | "linux"
186 | ],
187 | "engines": {
188 | "node": ">=12"
189 | }
190 | },
191 | "node_modules/@esbuild/linux-ia32": {
192 | "version": "0.19.12",
193 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
194 | "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
195 | "cpu": [
196 | "ia32"
197 | ],
198 | "dev": true,
199 | "optional": true,
200 | "os": [
201 | "linux"
202 | ],
203 | "engines": {
204 | "node": ">=12"
205 | }
206 | },
207 | "node_modules/@esbuild/linux-loong64": {
208 | "version": "0.19.12",
209 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
210 | "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
211 | "cpu": [
212 | "loong64"
213 | ],
214 | "dev": true,
215 | "optional": true,
216 | "os": [
217 | "linux"
218 | ],
219 | "engines": {
220 | "node": ">=12"
221 | }
222 | },
223 | "node_modules/@esbuild/linux-mips64el": {
224 | "version": "0.19.12",
225 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
226 | "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
227 | "cpu": [
228 | "mips64el"
229 | ],
230 | "dev": true,
231 | "optional": true,
232 | "os": [
233 | "linux"
234 | ],
235 | "engines": {
236 | "node": ">=12"
237 | }
238 | },
239 | "node_modules/@esbuild/linux-ppc64": {
240 | "version": "0.19.12",
241 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
242 | "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
243 | "cpu": [
244 | "ppc64"
245 | ],
246 | "dev": true,
247 | "optional": true,
248 | "os": [
249 | "linux"
250 | ],
251 | "engines": {
252 | "node": ">=12"
253 | }
254 | },
255 | "node_modules/@esbuild/linux-riscv64": {
256 | "version": "0.19.12",
257 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
258 | "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
259 | "cpu": [
260 | "riscv64"
261 | ],
262 | "dev": true,
263 | "optional": true,
264 | "os": [
265 | "linux"
266 | ],
267 | "engines": {
268 | "node": ">=12"
269 | }
270 | },
271 | "node_modules/@esbuild/linux-s390x": {
272 | "version": "0.19.12",
273 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
274 | "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
275 | "cpu": [
276 | "s390x"
277 | ],
278 | "dev": true,
279 | "optional": true,
280 | "os": [
281 | "linux"
282 | ],
283 | "engines": {
284 | "node": ">=12"
285 | }
286 | },
287 | "node_modules/@esbuild/linux-x64": {
288 | "version": "0.19.12",
289 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
290 | "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
291 | "cpu": [
292 | "x64"
293 | ],
294 | "dev": true,
295 | "optional": true,
296 | "os": [
297 | "linux"
298 | ],
299 | "engines": {
300 | "node": ">=12"
301 | }
302 | },
303 | "node_modules/@esbuild/netbsd-x64": {
304 | "version": "0.19.12",
305 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
306 | "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
307 | "cpu": [
308 | "x64"
309 | ],
310 | "dev": true,
311 | "optional": true,
312 | "os": [
313 | "netbsd"
314 | ],
315 | "engines": {
316 | "node": ">=12"
317 | }
318 | },
319 | "node_modules/@esbuild/openbsd-x64": {
320 | "version": "0.19.12",
321 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
322 | "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
323 | "cpu": [
324 | "x64"
325 | ],
326 | "dev": true,
327 | "optional": true,
328 | "os": [
329 | "openbsd"
330 | ],
331 | "engines": {
332 | "node": ">=12"
333 | }
334 | },
335 | "node_modules/@esbuild/sunos-x64": {
336 | "version": "0.19.12",
337 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
338 | "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
339 | "cpu": [
340 | "x64"
341 | ],
342 | "dev": true,
343 | "optional": true,
344 | "os": [
345 | "sunos"
346 | ],
347 | "engines": {
348 | "node": ">=12"
349 | }
350 | },
351 | "node_modules/@esbuild/win32-arm64": {
352 | "version": "0.19.12",
353 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
354 | "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
355 | "cpu": [
356 | "arm64"
357 | ],
358 | "dev": true,
359 | "optional": true,
360 | "os": [
361 | "win32"
362 | ],
363 | "engines": {
364 | "node": ">=12"
365 | }
366 | },
367 | "node_modules/@esbuild/win32-ia32": {
368 | "version": "0.19.12",
369 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
370 | "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
371 | "cpu": [
372 | "ia32"
373 | ],
374 | "dev": true,
375 | "optional": true,
376 | "os": [
377 | "win32"
378 | ],
379 | "engines": {
380 | "node": ">=12"
381 | }
382 | },
383 | "node_modules/@esbuild/win32-x64": {
384 | "version": "0.19.12",
385 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
386 | "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
387 | "cpu": [
388 | "x64"
389 | ],
390 | "dev": true,
391 | "optional": true,
392 | "os": [
393 | "win32"
394 | ],
395 | "engines": {
396 | "node": ">=12"
397 | }
398 | },
399 | "node_modules/@jridgewell/sourcemap-codec": {
400 | "version": "1.4.15",
401 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
402 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
403 | },
404 | "node_modules/@rollup/rollup-android-arm-eabi": {
405 | "version": "4.10.0",
406 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz",
407 | "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==",
408 | "cpu": [
409 | "arm"
410 | ],
411 | "dev": true,
412 | "optional": true,
413 | "os": [
414 | "android"
415 | ]
416 | },
417 | "node_modules/@rollup/rollup-android-arm64": {
418 | "version": "4.10.0",
419 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz",
420 | "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==",
421 | "cpu": [
422 | "arm64"
423 | ],
424 | "dev": true,
425 | "optional": true,
426 | "os": [
427 | "android"
428 | ]
429 | },
430 | "node_modules/@rollup/rollup-darwin-arm64": {
431 | "version": "4.10.0",
432 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz",
433 | "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==",
434 | "cpu": [
435 | "arm64"
436 | ],
437 | "dev": true,
438 | "optional": true,
439 | "os": [
440 | "darwin"
441 | ]
442 | },
443 | "node_modules/@rollup/rollup-darwin-x64": {
444 | "version": "4.10.0",
445 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz",
446 | "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==",
447 | "cpu": [
448 | "x64"
449 | ],
450 | "dev": true,
451 | "optional": true,
452 | "os": [
453 | "darwin"
454 | ]
455 | },
456 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
457 | "version": "4.10.0",
458 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz",
459 | "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==",
460 | "cpu": [
461 | "arm"
462 | ],
463 | "dev": true,
464 | "optional": true,
465 | "os": [
466 | "linux"
467 | ]
468 | },
469 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
470 | "version": "4.10.0",
471 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz",
472 | "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==",
473 | "cpu": [
474 | "arm64"
475 | ],
476 | "dev": true,
477 | "optional": true,
478 | "os": [
479 | "linux"
480 | ]
481 | },
482 | "node_modules/@rollup/rollup-linux-arm64-musl": {
483 | "version": "4.10.0",
484 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz",
485 | "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==",
486 | "cpu": [
487 | "arm64"
488 | ],
489 | "dev": true,
490 | "optional": true,
491 | "os": [
492 | "linux"
493 | ]
494 | },
495 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
496 | "version": "4.10.0",
497 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz",
498 | "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==",
499 | "cpu": [
500 | "riscv64"
501 | ],
502 | "dev": true,
503 | "optional": true,
504 | "os": [
505 | "linux"
506 | ]
507 | },
508 | "node_modules/@rollup/rollup-linux-x64-gnu": {
509 | "version": "4.10.0",
510 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz",
511 | "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==",
512 | "cpu": [
513 | "x64"
514 | ],
515 | "dev": true,
516 | "optional": true,
517 | "os": [
518 | "linux"
519 | ]
520 | },
521 | "node_modules/@rollup/rollup-linux-x64-musl": {
522 | "version": "4.10.0",
523 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz",
524 | "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==",
525 | "cpu": [
526 | "x64"
527 | ],
528 | "dev": true,
529 | "optional": true,
530 | "os": [
531 | "linux"
532 | ]
533 | },
534 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
535 | "version": "4.10.0",
536 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz",
537 | "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==",
538 | "cpu": [
539 | "arm64"
540 | ],
541 | "dev": true,
542 | "optional": true,
543 | "os": [
544 | "win32"
545 | ]
546 | },
547 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
548 | "version": "4.10.0",
549 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz",
550 | "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==",
551 | "cpu": [
552 | "ia32"
553 | ],
554 | "dev": true,
555 | "optional": true,
556 | "os": [
557 | "win32"
558 | ]
559 | },
560 | "node_modules/@rollup/rollup-win32-x64-msvc": {
561 | "version": "4.10.0",
562 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz",
563 | "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==",
564 | "cpu": [
565 | "x64"
566 | ],
567 | "dev": true,
568 | "optional": true,
569 | "os": [
570 | "win32"
571 | ]
572 | },
573 | "node_modules/@types/estree": {
574 | "version": "1.0.5",
575 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
576 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
577 | "dev": true
578 | },
579 | "node_modules/@vitejs/plugin-vue": {
580 | "version": "5.0.4",
581 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
582 | "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
583 | "dev": true,
584 | "engines": {
585 | "node": "^18.0.0 || >=20.0.0"
586 | },
587 | "peerDependencies": {
588 | "vite": "^5.0.0",
589 | "vue": "^3.2.25"
590 | }
591 | },
592 | "node_modules/@vue/compiler-core": {
593 | "version": "3.4.18",
594 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.18.tgz",
595 | "integrity": "sha512-F7YK8lMK0iv6b9/Gdk15A67wM0KKZvxDxed0RR60C1z9tIJTKta+urs4j0RTN5XqHISzI3etN3mX0uHhjmoqjQ==",
596 | "dependencies": {
597 | "@babel/parser": "^7.23.9",
598 | "@vue/shared": "3.4.18",
599 | "entities": "^4.5.0",
600 | "estree-walker": "^2.0.2",
601 | "source-map-js": "^1.0.2"
602 | }
603 | },
604 | "node_modules/@vue/compiler-dom": {
605 | "version": "3.4.18",
606 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.18.tgz",
607 | "integrity": "sha512-24Eb8lcMfInefvQ6YlEVS18w5Q66f4+uXWVA+yb7praKbyjHRNuKVWGuinfSSjM0ZIiPi++QWukhkgznBaqpEA==",
608 | "dependencies": {
609 | "@vue/compiler-core": "3.4.18",
610 | "@vue/shared": "3.4.18"
611 | }
612 | },
613 | "node_modules/@vue/compiler-sfc": {
614 | "version": "3.4.18",
615 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.18.tgz",
616 | "integrity": "sha512-rG5tqtnzwrVpMqAQ7FHtvHaV70G6LLfJIWLYZB/jZ9m/hrnZmIQh+H3ewnC5onwe/ibljm9+ZupxeElzqCkTAw==",
617 | "dependencies": {
618 | "@babel/parser": "^7.23.9",
619 | "@vue/compiler-core": "3.4.18",
620 | "@vue/compiler-dom": "3.4.18",
621 | "@vue/compiler-ssr": "3.4.18",
622 | "@vue/shared": "3.4.18",
623 | "estree-walker": "^2.0.2",
624 | "magic-string": "^0.30.6",
625 | "postcss": "^8.4.33",
626 | "source-map-js": "^1.0.2"
627 | }
628 | },
629 | "node_modules/@vue/compiler-ssr": {
630 | "version": "3.4.18",
631 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.18.tgz",
632 | "integrity": "sha512-hSlv20oUhPxo2UYUacHgGaxtqP0tvFo6ixxxD6JlXIkwzwoZ9eKK6PFQN4hNK/R13JlNyldwWt/fqGBKgWJ6nQ==",
633 | "dependencies": {
634 | "@vue/compiler-dom": "3.4.18",
635 | "@vue/shared": "3.4.18"
636 | }
637 | },
638 | "node_modules/@vue/devtools-api": {
639 | "version": "6.5.1",
640 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
641 | "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
642 | },
643 | "node_modules/@vue/reactivity": {
644 | "version": "3.4.18",
645 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.18.tgz",
646 | "integrity": "sha512-7uda2/I0jpLiRygprDo5Jxs2HJkOVXcOMlyVlY54yRLxoycBpwGJRwJT9EdGB4adnoqJDXVT2BilUAYwI7qvmg==",
647 | "dependencies": {
648 | "@vue/shared": "3.4.18"
649 | }
650 | },
651 | "node_modules/@vue/runtime-core": {
652 | "version": "3.4.18",
653 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.18.tgz",
654 | "integrity": "sha512-7mU9diCa+4e+8/wZ7Udw5pwTH10A11sZ1nldmHOUKJnzCwvZxfJqAtw31mIf4T5H2FsLCSBQT3xgioA9vIjyDQ==",
655 | "dependencies": {
656 | "@vue/reactivity": "3.4.18",
657 | "@vue/shared": "3.4.18"
658 | }
659 | },
660 | "node_modules/@vue/runtime-dom": {
661 | "version": "3.4.18",
662 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.18.tgz",
663 | "integrity": "sha512-2y1Mkzcw1niSfG7z3Qx+2ir9Gb4hdTkZe5p/I8x1aTIKQE0vY0tPAEUPhZm5tx6183gG3D/KwHG728UR0sIufA==",
664 | "dependencies": {
665 | "@vue/runtime-core": "3.4.18",
666 | "@vue/shared": "3.4.18",
667 | "csstype": "^3.1.3"
668 | }
669 | },
670 | "node_modules/@vue/server-renderer": {
671 | "version": "3.4.18",
672 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.18.tgz",
673 | "integrity": "sha512-YJd1wa7mzUN3NRqLEsrwEYWyO+PUBSROIGlCc3J/cvn7Zu6CxhNLgXa8Z4zZ5ja5/nviYO79J1InoPeXgwBTZA==",
674 | "dependencies": {
675 | "@vue/compiler-ssr": "3.4.18",
676 | "@vue/shared": "3.4.18"
677 | },
678 | "peerDependencies": {
679 | "vue": "3.4.18"
680 | }
681 | },
682 | "node_modules/@vue/shared": {
683 | "version": "3.4.18",
684 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.18.tgz",
685 | "integrity": "sha512-CxouGFxxaW5r1WbrSmWwck3No58rApXgRSBxrqgnY1K+jk20F6DrXJkHdH9n4HVT+/B6G2CAn213Uq3npWiy8Q=="
686 | },
687 | "node_modules/csstype": {
688 | "version": "3.1.3",
689 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
690 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
691 | },
692 | "node_modules/entities": {
693 | "version": "4.5.0",
694 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
695 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
696 | "engines": {
697 | "node": ">=0.12"
698 | },
699 | "funding": {
700 | "url": "https://github.com/fb55/entities?sponsor=1"
701 | }
702 | },
703 | "node_modules/esbuild": {
704 | "version": "0.19.12",
705 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
706 | "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
707 | "dev": true,
708 | "hasInstallScript": true,
709 | "bin": {
710 | "esbuild": "bin/esbuild"
711 | },
712 | "engines": {
713 | "node": ">=12"
714 | },
715 | "optionalDependencies": {
716 | "@esbuild/aix-ppc64": "0.19.12",
717 | "@esbuild/android-arm": "0.19.12",
718 | "@esbuild/android-arm64": "0.19.12",
719 | "@esbuild/android-x64": "0.19.12",
720 | "@esbuild/darwin-arm64": "0.19.12",
721 | "@esbuild/darwin-x64": "0.19.12",
722 | "@esbuild/freebsd-arm64": "0.19.12",
723 | "@esbuild/freebsd-x64": "0.19.12",
724 | "@esbuild/linux-arm": "0.19.12",
725 | "@esbuild/linux-arm64": "0.19.12",
726 | "@esbuild/linux-ia32": "0.19.12",
727 | "@esbuild/linux-loong64": "0.19.12",
728 | "@esbuild/linux-mips64el": "0.19.12",
729 | "@esbuild/linux-ppc64": "0.19.12",
730 | "@esbuild/linux-riscv64": "0.19.12",
731 | "@esbuild/linux-s390x": "0.19.12",
732 | "@esbuild/linux-x64": "0.19.12",
733 | "@esbuild/netbsd-x64": "0.19.12",
734 | "@esbuild/openbsd-x64": "0.19.12",
735 | "@esbuild/sunos-x64": "0.19.12",
736 | "@esbuild/win32-arm64": "0.19.12",
737 | "@esbuild/win32-ia32": "0.19.12",
738 | "@esbuild/win32-x64": "0.19.12"
739 | }
740 | },
741 | "node_modules/estree-walker": {
742 | "version": "2.0.2",
743 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
744 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
745 | },
746 | "node_modules/fsevents": {
747 | "version": "2.3.3",
748 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
749 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
750 | "dev": true,
751 | "hasInstallScript": true,
752 | "optional": true,
753 | "os": [
754 | "darwin"
755 | ],
756 | "engines": {
757 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
758 | }
759 | },
760 | "node_modules/magic-string": {
761 | "version": "0.30.7",
762 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
763 | "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
764 | "dependencies": {
765 | "@jridgewell/sourcemap-codec": "^1.4.15"
766 | },
767 | "engines": {
768 | "node": ">=12"
769 | }
770 | },
771 | "node_modules/nanoid": {
772 | "version": "3.3.7",
773 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
774 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
775 | "funding": [
776 | {
777 | "type": "github",
778 | "url": "https://github.com/sponsors/ai"
779 | }
780 | ],
781 | "bin": {
782 | "nanoid": "bin/nanoid.cjs"
783 | },
784 | "engines": {
785 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
786 | }
787 | },
788 | "node_modules/picocolors": {
789 | "version": "1.0.0",
790 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
791 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
792 | },
793 | "node_modules/postcss": {
794 | "version": "8.4.35",
795 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
796 | "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
797 | "funding": [
798 | {
799 | "type": "opencollective",
800 | "url": "https://opencollective.com/postcss/"
801 | },
802 | {
803 | "type": "tidelift",
804 | "url": "https://tidelift.com/funding/github/npm/postcss"
805 | },
806 | {
807 | "type": "github",
808 | "url": "https://github.com/sponsors/ai"
809 | }
810 | ],
811 | "dependencies": {
812 | "nanoid": "^3.3.7",
813 | "picocolors": "^1.0.0",
814 | "source-map-js": "^1.0.2"
815 | },
816 | "engines": {
817 | "node": "^10 || ^12 || >=14"
818 | }
819 | },
820 | "node_modules/rollup": {
821 | "version": "4.10.0",
822 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz",
823 | "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==",
824 | "dev": true,
825 | "dependencies": {
826 | "@types/estree": "1.0.5"
827 | },
828 | "bin": {
829 | "rollup": "dist/bin/rollup"
830 | },
831 | "engines": {
832 | "node": ">=18.0.0",
833 | "npm": ">=8.0.0"
834 | },
835 | "optionalDependencies": {
836 | "@rollup/rollup-android-arm-eabi": "4.10.0",
837 | "@rollup/rollup-android-arm64": "4.10.0",
838 | "@rollup/rollup-darwin-arm64": "4.10.0",
839 | "@rollup/rollup-darwin-x64": "4.10.0",
840 | "@rollup/rollup-linux-arm-gnueabihf": "4.10.0",
841 | "@rollup/rollup-linux-arm64-gnu": "4.10.0",
842 | "@rollup/rollup-linux-arm64-musl": "4.10.0",
843 | "@rollup/rollup-linux-riscv64-gnu": "4.10.0",
844 | "@rollup/rollup-linux-x64-gnu": "4.10.0",
845 | "@rollup/rollup-linux-x64-musl": "4.10.0",
846 | "@rollup/rollup-win32-arm64-msvc": "4.10.0",
847 | "@rollup/rollup-win32-ia32-msvc": "4.10.0",
848 | "@rollup/rollup-win32-x64-msvc": "4.10.0",
849 | "fsevents": "~2.3.2"
850 | }
851 | },
852 | "node_modules/source-map-js": {
853 | "version": "1.0.2",
854 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
855 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
856 | "engines": {
857 | "node": ">=0.10.0"
858 | }
859 | },
860 | "node_modules/vite": {
861 | "version": "5.1.1",
862 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz",
863 | "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==",
864 | "dev": true,
865 | "dependencies": {
866 | "esbuild": "^0.19.3",
867 | "postcss": "^8.4.35",
868 | "rollup": "^4.2.0"
869 | },
870 | "bin": {
871 | "vite": "bin/vite.js"
872 | },
873 | "engines": {
874 | "node": "^18.0.0 || >=20.0.0"
875 | },
876 | "funding": {
877 | "url": "https://github.com/vitejs/vite?sponsor=1"
878 | },
879 | "optionalDependencies": {
880 | "fsevents": "~2.3.3"
881 | },
882 | "peerDependencies": {
883 | "@types/node": "^18.0.0 || >=20.0.0",
884 | "less": "*",
885 | "lightningcss": "^1.21.0",
886 | "sass": "*",
887 | "stylus": "*",
888 | "sugarss": "*",
889 | "terser": "^5.4.0"
890 | },
891 | "peerDependenciesMeta": {
892 | "@types/node": {
893 | "optional": true
894 | },
895 | "less": {
896 | "optional": true
897 | },
898 | "lightningcss": {
899 | "optional": true
900 | },
901 | "sass": {
902 | "optional": true
903 | },
904 | "stylus": {
905 | "optional": true
906 | },
907 | "sugarss": {
908 | "optional": true
909 | },
910 | "terser": {
911 | "optional": true
912 | }
913 | }
914 | },
915 | "node_modules/vue": {
916 | "version": "3.4.18",
917 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.18.tgz",
918 | "integrity": "sha512-0zLRYamFRe0wF4q2L3O24KQzLyLpL64ye1RUToOgOxuWZsb/FhaNRdGmeozdtVYLz6tl94OXLaK7/WQIrVCw1A==",
919 | "dependencies": {
920 | "@vue/compiler-dom": "3.4.18",
921 | "@vue/compiler-sfc": "3.4.18",
922 | "@vue/runtime-dom": "3.4.18",
923 | "@vue/server-renderer": "3.4.18",
924 | "@vue/shared": "3.4.18"
925 | },
926 | "peerDependencies": {
927 | "typescript": "*"
928 | },
929 | "peerDependenciesMeta": {
930 | "typescript": {
931 | "optional": true
932 | }
933 | }
934 | },
935 | "node_modules/vue-router": {
936 | "version": "4.2.5",
937 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
938 | "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
939 | "dependencies": {
940 | "@vue/devtools-api": "^6.5.0"
941 | },
942 | "funding": {
943 | "url": "https://github.com/sponsors/posva"
944 | },
945 | "peerDependencies": {
946 | "vue": "^3.2.0"
947 | }
948 | }
949 | },
950 | "dependencies": {
951 | "@babel/parser": {
952 | "version": "7.23.9",
953 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
954 | "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA=="
955 | },
956 | "@esbuild/aix-ppc64": {
957 | "version": "0.19.12",
958 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
959 | "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
960 | "dev": true,
961 | "optional": true
962 | },
963 | "@esbuild/android-arm": {
964 | "version": "0.19.12",
965 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
966 | "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
967 | "dev": true,
968 | "optional": true
969 | },
970 | "@esbuild/android-arm64": {
971 | "version": "0.19.12",
972 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
973 | "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
974 | "dev": true,
975 | "optional": true
976 | },
977 | "@esbuild/android-x64": {
978 | "version": "0.19.12",
979 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
980 | "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
981 | "dev": true,
982 | "optional": true
983 | },
984 | "@esbuild/darwin-arm64": {
985 | "version": "0.19.12",
986 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
987 | "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
988 | "dev": true,
989 | "optional": true
990 | },
991 | "@esbuild/darwin-x64": {
992 | "version": "0.19.12",
993 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
994 | "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
995 | "dev": true,
996 | "optional": true
997 | },
998 | "@esbuild/freebsd-arm64": {
999 | "version": "0.19.12",
1000 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
1001 | "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
1002 | "dev": true,
1003 | "optional": true
1004 | },
1005 | "@esbuild/freebsd-x64": {
1006 | "version": "0.19.12",
1007 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
1008 | "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
1009 | "dev": true,
1010 | "optional": true
1011 | },
1012 | "@esbuild/linux-arm": {
1013 | "version": "0.19.12",
1014 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
1015 | "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
1016 | "dev": true,
1017 | "optional": true
1018 | },
1019 | "@esbuild/linux-arm64": {
1020 | "version": "0.19.12",
1021 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
1022 | "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
1023 | "dev": true,
1024 | "optional": true
1025 | },
1026 | "@esbuild/linux-ia32": {
1027 | "version": "0.19.12",
1028 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
1029 | "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
1030 | "dev": true,
1031 | "optional": true
1032 | },
1033 | "@esbuild/linux-loong64": {
1034 | "version": "0.19.12",
1035 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
1036 | "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
1037 | "dev": true,
1038 | "optional": true
1039 | },
1040 | "@esbuild/linux-mips64el": {
1041 | "version": "0.19.12",
1042 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
1043 | "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
1044 | "dev": true,
1045 | "optional": true
1046 | },
1047 | "@esbuild/linux-ppc64": {
1048 | "version": "0.19.12",
1049 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
1050 | "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
1051 | "dev": true,
1052 | "optional": true
1053 | },
1054 | "@esbuild/linux-riscv64": {
1055 | "version": "0.19.12",
1056 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
1057 | "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
1058 | "dev": true,
1059 | "optional": true
1060 | },
1061 | "@esbuild/linux-s390x": {
1062 | "version": "0.19.12",
1063 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
1064 | "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
1065 | "dev": true,
1066 | "optional": true
1067 | },
1068 | "@esbuild/linux-x64": {
1069 | "version": "0.19.12",
1070 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
1071 | "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
1072 | "dev": true,
1073 | "optional": true
1074 | },
1075 | "@esbuild/netbsd-x64": {
1076 | "version": "0.19.12",
1077 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
1078 | "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
1079 | "dev": true,
1080 | "optional": true
1081 | },
1082 | "@esbuild/openbsd-x64": {
1083 | "version": "0.19.12",
1084 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
1085 | "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
1086 | "dev": true,
1087 | "optional": true
1088 | },
1089 | "@esbuild/sunos-x64": {
1090 | "version": "0.19.12",
1091 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
1092 | "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
1093 | "dev": true,
1094 | "optional": true
1095 | },
1096 | "@esbuild/win32-arm64": {
1097 | "version": "0.19.12",
1098 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
1099 | "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
1100 | "dev": true,
1101 | "optional": true
1102 | },
1103 | "@esbuild/win32-ia32": {
1104 | "version": "0.19.12",
1105 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
1106 | "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
1107 | "dev": true,
1108 | "optional": true
1109 | },
1110 | "@esbuild/win32-x64": {
1111 | "version": "0.19.12",
1112 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
1113 | "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
1114 | "dev": true,
1115 | "optional": true
1116 | },
1117 | "@jridgewell/sourcemap-codec": {
1118 | "version": "1.4.15",
1119 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
1120 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
1121 | },
1122 | "@rollup/rollup-android-arm-eabi": {
1123 | "version": "4.10.0",
1124 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz",
1125 | "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==",
1126 | "dev": true,
1127 | "optional": true
1128 | },
1129 | "@rollup/rollup-android-arm64": {
1130 | "version": "4.10.0",
1131 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz",
1132 | "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==",
1133 | "dev": true,
1134 | "optional": true
1135 | },
1136 | "@rollup/rollup-darwin-arm64": {
1137 | "version": "4.10.0",
1138 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz",
1139 | "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==",
1140 | "dev": true,
1141 | "optional": true
1142 | },
1143 | "@rollup/rollup-darwin-x64": {
1144 | "version": "4.10.0",
1145 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz",
1146 | "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==",
1147 | "dev": true,
1148 | "optional": true
1149 | },
1150 | "@rollup/rollup-linux-arm-gnueabihf": {
1151 | "version": "4.10.0",
1152 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz",
1153 | "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==",
1154 | "dev": true,
1155 | "optional": true
1156 | },
1157 | "@rollup/rollup-linux-arm64-gnu": {
1158 | "version": "4.10.0",
1159 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz",
1160 | "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==",
1161 | "dev": true,
1162 | "optional": true
1163 | },
1164 | "@rollup/rollup-linux-arm64-musl": {
1165 | "version": "4.10.0",
1166 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz",
1167 | "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==",
1168 | "dev": true,
1169 | "optional": true
1170 | },
1171 | "@rollup/rollup-linux-riscv64-gnu": {
1172 | "version": "4.10.0",
1173 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz",
1174 | "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==",
1175 | "dev": true,
1176 | "optional": true
1177 | },
1178 | "@rollup/rollup-linux-x64-gnu": {
1179 | "version": "4.10.0",
1180 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz",
1181 | "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==",
1182 | "dev": true,
1183 | "optional": true
1184 | },
1185 | "@rollup/rollup-linux-x64-musl": {
1186 | "version": "4.10.0",
1187 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz",
1188 | "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==",
1189 | "dev": true,
1190 | "optional": true
1191 | },
1192 | "@rollup/rollup-win32-arm64-msvc": {
1193 | "version": "4.10.0",
1194 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz",
1195 | "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==",
1196 | "dev": true,
1197 | "optional": true
1198 | },
1199 | "@rollup/rollup-win32-ia32-msvc": {
1200 | "version": "4.10.0",
1201 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz",
1202 | "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==",
1203 | "dev": true,
1204 | "optional": true
1205 | },
1206 | "@rollup/rollup-win32-x64-msvc": {
1207 | "version": "4.10.0",
1208 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz",
1209 | "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==",
1210 | "dev": true,
1211 | "optional": true
1212 | },
1213 | "@types/estree": {
1214 | "version": "1.0.5",
1215 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
1216 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
1217 | "dev": true
1218 | },
1219 | "@vitejs/plugin-vue": {
1220 | "version": "5.0.4",
1221 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
1222 | "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
1223 | "dev": true,
1224 | "requires": {}
1225 | },
1226 | "@vue/compiler-core": {
1227 | "version": "3.4.18",
1228 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.18.tgz",
1229 | "integrity": "sha512-F7YK8lMK0iv6b9/Gdk15A67wM0KKZvxDxed0RR60C1z9tIJTKta+urs4j0RTN5XqHISzI3etN3mX0uHhjmoqjQ==",
1230 | "requires": {
1231 | "@babel/parser": "^7.23.9",
1232 | "@vue/shared": "3.4.18",
1233 | "entities": "^4.5.0",
1234 | "estree-walker": "^2.0.2",
1235 | "source-map-js": "^1.0.2"
1236 | }
1237 | },
1238 | "@vue/compiler-dom": {
1239 | "version": "3.4.18",
1240 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.18.tgz",
1241 | "integrity": "sha512-24Eb8lcMfInefvQ6YlEVS18w5Q66f4+uXWVA+yb7praKbyjHRNuKVWGuinfSSjM0ZIiPi++QWukhkgznBaqpEA==",
1242 | "requires": {
1243 | "@vue/compiler-core": "3.4.18",
1244 | "@vue/shared": "3.4.18"
1245 | }
1246 | },
1247 | "@vue/compiler-sfc": {
1248 | "version": "3.4.18",
1249 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.18.tgz",
1250 | "integrity": "sha512-rG5tqtnzwrVpMqAQ7FHtvHaV70G6LLfJIWLYZB/jZ9m/hrnZmIQh+H3ewnC5onwe/ibljm9+ZupxeElzqCkTAw==",
1251 | "requires": {
1252 | "@babel/parser": "^7.23.9",
1253 | "@vue/compiler-core": "3.4.18",
1254 | "@vue/compiler-dom": "3.4.18",
1255 | "@vue/compiler-ssr": "3.4.18",
1256 | "@vue/shared": "3.4.18",
1257 | "estree-walker": "^2.0.2",
1258 | "magic-string": "^0.30.6",
1259 | "postcss": "^8.4.33",
1260 | "source-map-js": "^1.0.2"
1261 | }
1262 | },
1263 | "@vue/compiler-ssr": {
1264 | "version": "3.4.18",
1265 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.18.tgz",
1266 | "integrity": "sha512-hSlv20oUhPxo2UYUacHgGaxtqP0tvFo6ixxxD6JlXIkwzwoZ9eKK6PFQN4hNK/R13JlNyldwWt/fqGBKgWJ6nQ==",
1267 | "requires": {
1268 | "@vue/compiler-dom": "3.4.18",
1269 | "@vue/shared": "3.4.18"
1270 | }
1271 | },
1272 | "@vue/devtools-api": {
1273 | "version": "6.5.1",
1274 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
1275 | "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
1276 | },
1277 | "@vue/reactivity": {
1278 | "version": "3.4.18",
1279 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.18.tgz",
1280 | "integrity": "sha512-7uda2/I0jpLiRygprDo5Jxs2HJkOVXcOMlyVlY54yRLxoycBpwGJRwJT9EdGB4adnoqJDXVT2BilUAYwI7qvmg==",
1281 | "requires": {
1282 | "@vue/shared": "3.4.18"
1283 | }
1284 | },
1285 | "@vue/runtime-core": {
1286 | "version": "3.4.18",
1287 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.18.tgz",
1288 | "integrity": "sha512-7mU9diCa+4e+8/wZ7Udw5pwTH10A11sZ1nldmHOUKJnzCwvZxfJqAtw31mIf4T5H2FsLCSBQT3xgioA9vIjyDQ==",
1289 | "requires": {
1290 | "@vue/reactivity": "3.4.18",
1291 | "@vue/shared": "3.4.18"
1292 | }
1293 | },
1294 | "@vue/runtime-dom": {
1295 | "version": "3.4.18",
1296 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.18.tgz",
1297 | "integrity": "sha512-2y1Mkzcw1niSfG7z3Qx+2ir9Gb4hdTkZe5p/I8x1aTIKQE0vY0tPAEUPhZm5tx6183gG3D/KwHG728UR0sIufA==",
1298 | "requires": {
1299 | "@vue/runtime-core": "3.4.18",
1300 | "@vue/shared": "3.4.18",
1301 | "csstype": "^3.1.3"
1302 | }
1303 | },
1304 | "@vue/server-renderer": {
1305 | "version": "3.4.18",
1306 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.18.tgz",
1307 | "integrity": "sha512-YJd1wa7mzUN3NRqLEsrwEYWyO+PUBSROIGlCc3J/cvn7Zu6CxhNLgXa8Z4zZ5ja5/nviYO79J1InoPeXgwBTZA==",
1308 | "requires": {
1309 | "@vue/compiler-ssr": "3.4.18",
1310 | "@vue/shared": "3.4.18"
1311 | }
1312 | },
1313 | "@vue/shared": {
1314 | "version": "3.4.18",
1315 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.18.tgz",
1316 | "integrity": "sha512-CxouGFxxaW5r1WbrSmWwck3No58rApXgRSBxrqgnY1K+jk20F6DrXJkHdH9n4HVT+/B6G2CAn213Uq3npWiy8Q=="
1317 | },
1318 | "csstype": {
1319 | "version": "3.1.3",
1320 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1321 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
1322 | },
1323 | "entities": {
1324 | "version": "4.5.0",
1325 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
1326 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
1327 | },
1328 | "esbuild": {
1329 | "version": "0.19.12",
1330 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
1331 | "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
1332 | "dev": true,
1333 | "requires": {
1334 | "@esbuild/aix-ppc64": "0.19.12",
1335 | "@esbuild/android-arm": "0.19.12",
1336 | "@esbuild/android-arm64": "0.19.12",
1337 | "@esbuild/android-x64": "0.19.12",
1338 | "@esbuild/darwin-arm64": "0.19.12",
1339 | "@esbuild/darwin-x64": "0.19.12",
1340 | "@esbuild/freebsd-arm64": "0.19.12",
1341 | "@esbuild/freebsd-x64": "0.19.12",
1342 | "@esbuild/linux-arm": "0.19.12",
1343 | "@esbuild/linux-arm64": "0.19.12",
1344 | "@esbuild/linux-ia32": "0.19.12",
1345 | "@esbuild/linux-loong64": "0.19.12",
1346 | "@esbuild/linux-mips64el": "0.19.12",
1347 | "@esbuild/linux-ppc64": "0.19.12",
1348 | "@esbuild/linux-riscv64": "0.19.12",
1349 | "@esbuild/linux-s390x": "0.19.12",
1350 | "@esbuild/linux-x64": "0.19.12",
1351 | "@esbuild/netbsd-x64": "0.19.12",
1352 | "@esbuild/openbsd-x64": "0.19.12",
1353 | "@esbuild/sunos-x64": "0.19.12",
1354 | "@esbuild/win32-arm64": "0.19.12",
1355 | "@esbuild/win32-ia32": "0.19.12",
1356 | "@esbuild/win32-x64": "0.19.12"
1357 | }
1358 | },
1359 | "estree-walker": {
1360 | "version": "2.0.2",
1361 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1362 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
1363 | },
1364 | "fsevents": {
1365 | "version": "2.3.3",
1366 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1367 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1368 | "dev": true,
1369 | "optional": true
1370 | },
1371 | "magic-string": {
1372 | "version": "0.30.7",
1373 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
1374 | "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
1375 | "requires": {
1376 | "@jridgewell/sourcemap-codec": "^1.4.15"
1377 | }
1378 | },
1379 | "nanoid": {
1380 | "version": "3.3.7",
1381 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
1382 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
1383 | },
1384 | "picocolors": {
1385 | "version": "1.0.0",
1386 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1387 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1388 | },
1389 | "postcss": {
1390 | "version": "8.4.35",
1391 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
1392 | "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
1393 | "requires": {
1394 | "nanoid": "^3.3.7",
1395 | "picocolors": "^1.0.0",
1396 | "source-map-js": "^1.0.2"
1397 | }
1398 | },
1399 | "rollup": {
1400 | "version": "4.10.0",
1401 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz",
1402 | "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==",
1403 | "dev": true,
1404 | "requires": {
1405 | "@rollup/rollup-android-arm-eabi": "4.10.0",
1406 | "@rollup/rollup-android-arm64": "4.10.0",
1407 | "@rollup/rollup-darwin-arm64": "4.10.0",
1408 | "@rollup/rollup-darwin-x64": "4.10.0",
1409 | "@rollup/rollup-linux-arm-gnueabihf": "4.10.0",
1410 | "@rollup/rollup-linux-arm64-gnu": "4.10.0",
1411 | "@rollup/rollup-linux-arm64-musl": "4.10.0",
1412 | "@rollup/rollup-linux-riscv64-gnu": "4.10.0",
1413 | "@rollup/rollup-linux-x64-gnu": "4.10.0",
1414 | "@rollup/rollup-linux-x64-musl": "4.10.0",
1415 | "@rollup/rollup-win32-arm64-msvc": "4.10.0",
1416 | "@rollup/rollup-win32-ia32-msvc": "4.10.0",
1417 | "@rollup/rollup-win32-x64-msvc": "4.10.0",
1418 | "@types/estree": "1.0.5",
1419 | "fsevents": "~2.3.2"
1420 | }
1421 | },
1422 | "source-map-js": {
1423 | "version": "1.0.2",
1424 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1425 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
1426 | },
1427 | "vite": {
1428 | "version": "5.1.1",
1429 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz",
1430 | "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==",
1431 | "dev": true,
1432 | "requires": {
1433 | "esbuild": "^0.19.3",
1434 | "fsevents": "~2.3.3",
1435 | "postcss": "^8.4.35",
1436 | "rollup": "^4.2.0"
1437 | }
1438 | },
1439 | "vue": {
1440 | "version": "3.4.18",
1441 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.18.tgz",
1442 | "integrity": "sha512-0zLRYamFRe0wF4q2L3O24KQzLyLpL64ye1RUToOgOxuWZsb/FhaNRdGmeozdtVYLz6tl94OXLaK7/WQIrVCw1A==",
1443 | "requires": {
1444 | "@vue/compiler-dom": "3.4.18",
1445 | "@vue/compiler-sfc": "3.4.18",
1446 | "@vue/runtime-dom": "3.4.18",
1447 | "@vue/server-renderer": "3.4.18",
1448 | "@vue/shared": "3.4.18"
1449 | }
1450 | },
1451 | "vue-router": {
1452 | "version": "4.2.5",
1453 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
1454 | "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
1455 | "requires": {
1456 | "@vue/devtools-api": "^6.5.0"
1457 | }
1458 | }
1459 | }
1460 | }
1461 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-school-travel-app",
3 | "version": "0.0.0",
4 | "type": "module",
5 | "license": "MIT",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "serve": "vite preview"
10 | },
11 | "dependencies": {
12 | "vue": "^3.4.18",
13 | "vue-router": "^4.2.5"
14 | },
15 | "devDependencies": {
16 | "@vitejs/plugin-vue": "^5.0.4",
17 | "@vue/compiler-sfc": "^3.4.18",
18 | "vite": "^5.1.1"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/public/api/brazil.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Brazil",
3 | "slug": "brazil",
4 | "image": "brazil.jpg",
5 | "id": 1,
6 | "description": "all about Brazil, suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis.",
7 | "experiences": [
8 | {
9 | "name": "Iguaçu Falls",
10 | "slug": "iguacu-falls",
11 | "image": "iguacu-falls.jpg",
12 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
13 | },
14 | {
15 | "name": "Pão de Açúcar",
16 | "slug": "pao-de-acucar",
17 | "image": "pao-de-acucar.jpg",
18 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
19 | },
20 | {
21 | "name": "Sao Paulo",
22 | "slug": "sao-paulo",
23 | "image": "sao-paulo.jpg",
24 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
25 | },
26 | {
27 | "name": "Salvador",
28 | "slug": "salvador",
29 | "image": "salvador.jpg",
30 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
31 | }
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/public/api/hawaii.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Hawaii",
3 | "slug": "hawaii",
4 | "image": "hawaii.jpg",
5 | "id": 3,
6 | "description": "all about hawaii. Etiam iaculis, ex in semper fringilla, lorem augue maximus lorem, in aliquet ex massa non enim. Maecenas pharetra orci eu semper pharetra. Suspendisse vel elit semper, fringilla metus ac, pulvinar justo. Vestibulum nibh lacus, pellentesque non arcu vel, efficitur eleifend lorem. Duis ultrices bibendum orci, nec laoreet elit. In vulputate massa vel massa cursus gravida. Aliquam sed lacus pulvinar, imperdiet risus at, lacinia dolor. Maecenas pellentesque arcu mattis iaculis efficitur. Maecenas quis sem pulvinar, sodales neque eget, efficitur odio.",
7 | "experiences": [
8 | {
9 | "name": "Na Pali Coast",
10 | "slug": "na-pali-coast",
11 | "image": "na-pali-coast.jpg",
12 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
13 | },
14 | {
15 | "name": "O'Ahu's North Shore",
16 | "slug": "ohaus-north-shore",
17 | "image": "ohaus-north-shore.jpg",
18 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
19 | },
20 | {
21 | "name": "Waikiki Beach",
22 | "slug": "waikiki-beach",
23 | "image": "waikiki-beach.jpg",
24 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
25 | },
26 | {
27 | "name": "Kilauea Volcano",
28 | "slug": "kilauea-volcano",
29 | "image": "kilauea-volcano.jpg",
30 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
31 | }
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/public/api/jamaica.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Jamaica",
3 | "slug": "jamaica",
4 | "image": "jamaica.jpg",
5 | "id": 4,
6 | "description": "all about jamaica. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis.",
7 | "experiences": [
8 | {
9 | "name": "Tower Isle",
10 | "slug": "tower-isle",
11 | "image": "tower-isle.jpg",
12 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
13 | },
14 | {
15 | "name": "Blue Mountain",
16 | "slug": "blue-mountain",
17 | "image": "blue-mountain.jpg",
18 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
19 | },
20 | {
21 | "name": "Montego Bay",
22 | "slug": "montego-bay",
23 | "image": "montego-bay.jpg",
24 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
25 | },
26 | {
27 | "name": "Port Antonio",
28 | "slug": "port-antonio",
29 | "image": "port-antonio.jpg",
30 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
31 | }
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/public/api/panama.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Panama",
3 | "slug": "panama",
4 | "image": "panama.jpg",
5 | "id": 2,
6 | "description": "all about panama. Nam fermentum, leo ac lobortis tincidunt, justo felis semper nisi, sed facilisis quam ante a justo. Nam pulvinar nibh nec mi vestibulum cursus quis eget orci. Aenean faucibus faucibus ex, a imperdiet nibh luctus faucibus. Mauris porttitor, velit ac eleifend mattis, sem justo accumsan odio, ut mattis nulla nulla eu nibh. Cras justo risus, sollicitudin eget nulla a, consequat convallis tortor. Fusce eget neque metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla facilisi. Sed aliquam nunc id lectus sagittis, ac elementum eros egestas. Aliquam sed tempor dui.",
7 | "experiences": [
8 | {
9 | "name": "Panama City",
10 | "slug": "panama-city",
11 | "image": "panama-city.jpg",
12 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
13 | },
14 | {
15 | "name": "Panama Canal",
16 | "slug": "panama-canal",
17 | "image": "panama-canal.jpg",
18 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
19 | },
20 | {
21 | "name": "Bocas del Toro",
22 | "slug": "bocas-del-toro",
23 | "image": "bocas-del-toro.jpg",
24 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
25 | },
26 | {
27 | "name": "Santa Catalina",
28 | "slug": "santa-catalina",
29 | "image": "santa-catalina.jpg",
30 | "description": "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
31 | }
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/favicon.ico
--------------------------------------------------------------------------------
/public/images/blue-mountain.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/blue-mountain.jpg
--------------------------------------------------------------------------------
/public/images/bocas-del-toro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/bocas-del-toro.jpg
--------------------------------------------------------------------------------
/public/images/brazil.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/brazil.jpg
--------------------------------------------------------------------------------
/public/images/hawaii.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/hawaii.jpg
--------------------------------------------------------------------------------
/public/images/iguacu-falls.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/iguacu-falls.jpg
--------------------------------------------------------------------------------
/public/images/jamaica.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/jamaica.jpg
--------------------------------------------------------------------------------
/public/images/kilauea-volcano.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/kilauea-volcano.jpg
--------------------------------------------------------------------------------
/public/images/montego-bay.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/montego-bay.jpg
--------------------------------------------------------------------------------
/public/images/na-pali-coast.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/na-pali-coast.jpg
--------------------------------------------------------------------------------
/public/images/ohaus-north-shore.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/ohaus-north-shore.jpg
--------------------------------------------------------------------------------
/public/images/panama-canal.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/panama-canal.jpg
--------------------------------------------------------------------------------
/public/images/panama-city.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/panama-city.jpg
--------------------------------------------------------------------------------
/public/images/panama.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/panama.jpg
--------------------------------------------------------------------------------
/public/images/pao-de-acucar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/pao-de-acucar.jpg
--------------------------------------------------------------------------------
/public/images/port-antonio.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/port-antonio.jpg
--------------------------------------------------------------------------------
/public/images/salvador.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/salvador.jpg
--------------------------------------------------------------------------------
/public/images/santa-catalina.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/santa-catalina.jpg
--------------------------------------------------------------------------------
/public/images/sao-paulo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/sao-paulo.jpg
--------------------------------------------------------------------------------
/public/images/tower-isle.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/tower-isle.jpg
--------------------------------------------------------------------------------
/public/images/waikiki-beach.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/public/images/waikiki-beach.jpg
--------------------------------------------------------------------------------
/public/main.css:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: border-box;
5 | }
6 | body {
7 | padding: 0;
8 | margin: 0;
9 | margin-top: 150px;
10 | background: #eee;
11 | }
12 | #app {
13 | font-family: Avenir, Helvetica, Arial, sans-serif;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | color: #2c3e50;
17 | }
18 | a,
19 | a:visited {
20 | color: #2c3e50;
21 | }
22 | .container {
23 | margin: 0 auto;
24 | max-width: 960px;
25 | }
26 |
27 | /* Home */
28 | .home img {
29 | max-width: 230px;
30 | }
31 | .home .destinations {
32 | display: flex;
33 | justify-content: space-between;
34 | }
35 |
36 | /* Navigation */
37 | #nav {
38 | position: fixed;
39 | top: 0;
40 | left: 0;
41 | right: 0;
42 | margin-top: 0;
43 | padding: 30px;
44 | background: #2c3e50;
45 | color: white;
46 | display: flex;
47 | align-items: center;
48 | border-bottom: 5px solid #4e6c71;
49 | z-index: 2;
50 | }
51 | #nav a {
52 | display: inline-block;
53 | margin-right: 20px;
54 | color: white;
55 | opacity: 0.7;
56 | transition: 0.2 ease color;
57 | }
58 | #nav a.router-link-active,
59 | #nav a:hover {
60 | opacity: 1;
61 | }
62 | #logo {
63 | font-weight: bold;
64 | font-size: 1.5rem;
65 | opacity: 1 !important;
66 | }
67 |
68 | a {
69 | text-decoration: none;
70 | font-weight: bold;
71 | }
72 |
73 | /* Destination Details */
74 | .destination-details {
75 | display: flex;
76 | gap: 30px;
77 | align-items: center;
78 | }
79 | .destination-details img {
80 | border-radius: 4px;
81 | border: 3px solid white;
82 | box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
83 | }
84 |
85 | /*Experiences*/
86 | .experiences {
87 | padding-top: 30px;
88 | padding-bottom: 60px;
89 | margin-top: 30px;
90 | border-top: 1px solid #d4d4d4;
91 | box-shadow: 0px -1px #fbfbfb;
92 | }
93 | .experiences .card {
94 | border-radius: 4px;
95 | overflow: hidden;
96 | box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
97 | transition: 0.2s ease transform;
98 | }
99 | .experiences .card:hover {
100 | transform: scale(1.05);
101 | }
102 | .experiences .cards {
103 | display: flex;
104 | gap: 20px;
105 | text-align: center;
106 | }
107 | .experiences img {
108 | width: 250px;
109 | height: 150px;
110 | object-fit: cover;
111 | display: block;
112 | }
113 | .experiences .card .card__text {
114 | background: #2c3e50;
115 | color: white;
116 | display: block;
117 | border-top: 2px solid #4e6c71;
118 | padding: 10px;
119 | }
120 |
121 | .experience-details img {
122 | float: left;
123 | margin: 10px;
124 | }
125 |
126 | /*Modal Overlay*/
127 | .modal-overlay:before {
128 | content: "";
129 | position: fixed;
130 | top: 0;
131 | left: 0;
132 | right: 0;
133 | bottom: 0;
134 | background: rgba(0, 0, 0, 0.7);
135 | z-index: 3;
136 | }
137 | .modal-overlay-content {
138 | border-radius: 3px;
139 | position: fixed;
140 | top: 50%;
141 | left: 50%;
142 | transform: translate(-50%, -50%);
143 | z-index: 3;
144 | min-width: 300px;
145 | max-width: 800px;
146 | background: white;
147 | padding: 15px;
148 | box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.3);
149 | }
150 | .close {
151 | position: absolute;
152 | top: 0px;
153 | right: 10px;
154 | padding: 10px;
155 | font-size: 1.4rem;
156 | }
157 |
158 | .go-back {
159 | display: inline-block;
160 | margin-bottom: 15px;
161 | }
162 | /* Form */
163 | .form{
164 | display:flex;
165 | flex-direction: column;
166 | max-width:400px;
167 | margin: 0 auto;
168 | }
169 |
170 | .input{
171 | border: 1px solid gray;
172 | padding: 10px;
173 | margin-bottom:20px;
174 | border-radius:5px;
175 | }
176 |
177 | .btn{
178 | background-color:#2c3e50;
179 | color: white;
180 | padding: 10px;
181 | border-radius: 5px;
182 | border:none;
183 | }
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
26 |
45 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vueschool/vue-router-4-course/7217781d67c3569bf156ba6fb3d7a80aeb24e78e/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/AppLink.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/components/ExperienceCard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ experience.name }}
6 |
7 |
8 |
9 |
16 |
--------------------------------------------------------------------------------
/src/components/GoBack.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | go back
4 |
5 |
--------------------------------------------------------------------------------
/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ msg }}
3 |
4 |
5 |
6 | Vite Documentation
7 |
8 | |
9 | Vue 3 Documentation
10 |
11 |
12 | count is: {{ state.count }}
13 |
14 | Edit
15 | components/HelloWorld.vue
to test hot module replacement.
16 |
17 |
18 |
19 |
28 |
29 |
34 |
--------------------------------------------------------------------------------
/src/components/LeftSidebar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dashboard
4 | Invoices
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/components/TheNavigation.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Vue School Travel App
4 |
9 | {{ destination.name }}
10 |
11 |
Dashboard
12 |
Vue School
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "destinations": [
3 | {
4 | "name": "Brazil",
5 | "slug": "brazil",
6 | "image": "brazil.jpg",
7 | "id": 1,
8 | "description":
9 | "all about Brazil, suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis.",
10 | "experiences": [
11 | {
12 | "name": "Iguaçu Falls",
13 | "slug": "iguacu-falls",
14 | "image": "iguacu-falls.jpg",
15 | "description":
16 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
17 | },
18 | {
19 | "name": "Pão de Açúcar",
20 | "slug": "pao-de-acucar",
21 | "image": "pao-de-acucar.jpg",
22 | "description":
23 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
24 | },
25 | {
26 | "name": "Sao Paulo",
27 | "slug": "sao-paulo",
28 | "image": "sao-paulo.jpg",
29 | "description":
30 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
31 | },
32 | {
33 | "name": "Salvador",
34 | "slug": "salvador",
35 | "image": "salvador.jpg",
36 | "description":
37 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
38 | }
39 | ]
40 | },
41 | {
42 | "name": "Panama",
43 | "slug": "panama",
44 | "image": "panama.jpg",
45 | "id": 2,
46 | "description":
47 | "all about panama. Nam fermentum, leo ac lobortis tincidunt, justo felis semper nisi, sed facilisis quam ante a justo. Nam pulvinar nibh nec mi vestibulum cursus quis eget orci. Aenean faucibus faucibus ex, a imperdiet nibh luctus faucibus. Mauris porttitor, velit ac eleifend mattis, sem justo accumsan odio, ut mattis nulla nulla eu nibh. Cras justo risus, sollicitudin eget nulla a, consequat convallis tortor. Fusce eget neque metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla facilisi. Sed aliquam nunc id lectus sagittis, ac elementum eros egestas. Aliquam sed tempor dui.",
48 | "experiences": [
49 | {
50 | "name": "Panama City",
51 | "slug": "panama-city",
52 | "image": "panama-city.jpg",
53 | "description":
54 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
55 | },
56 | {
57 | "name": "Panama Canal",
58 | "slug": "panama-canal",
59 | "image": "panama-canal.jpg",
60 | "description":
61 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
62 | },
63 | {
64 | "name": "Bocas del Toro",
65 | "slug": "bocas-del-toro",
66 | "image": "bocas-del-toro.jpg",
67 | "description":
68 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
69 | },
70 | {
71 | "name": "Santa Catalina",
72 | "slug": "santa-catalina",
73 | "image": "santa-catalina.jpg",
74 | "description":
75 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
76 | }
77 | ]
78 | },
79 | {
80 | "name": "Hawaii",
81 | "slug": "hawaii",
82 | "image": "hawaii.jpg",
83 | "id": 3,
84 | "description":
85 | "all about hawaii. Etiam iaculis, ex in semper fringilla, lorem augue maximus lorem, in aliquet ex massa non enim. Maecenas pharetra orci eu semper pharetra. Suspendisse vel elit semper, fringilla metus ac, pulvinar justo. Vestibulum nibh lacus, pellentesque non arcu vel, efficitur eleifend lorem. Duis ultrices bibendum orci, nec laoreet elit. In vulputate massa vel massa cursus gravida. Aliquam sed lacus pulvinar, imperdiet risus at, lacinia dolor. Maecenas pellentesque arcu mattis iaculis efficitur. Maecenas quis sem pulvinar, sodales neque eget, efficitur odio.",
86 | "experiences": [
87 | {
88 | "name": "Na Pali Coast",
89 | "slug": "na-pali-coast",
90 | "image": "na-pali-coast.jpg",
91 | "description":
92 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
93 | },
94 | {
95 | "name": "O'Ahu's North Shore",
96 | "slug": "ohaus-north-shore",
97 | "image": "ohaus-north-shore.jpg",
98 | "description":
99 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
100 | },
101 | {
102 | "name": "Waikiki Beach",
103 | "slug": "waikiki-beach",
104 | "image": "waikiki-beach.jpg",
105 | "description":
106 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
107 | },
108 | {
109 | "name": "Kilauea Volcano",
110 | "slug": "kilauea-volcano",
111 | "image": "kilauea-volcano.jpg",
112 | "description":
113 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
114 | }
115 | ]
116 | },
117 | {
118 | "name": "Jamaica",
119 | "slug": "jamaica",
120 | "image": "jamaica.jpg",
121 | "id": 4,
122 | "description":
123 | "all about jamaica. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis.",
124 | "experiences": [
125 | {
126 | "name": "Tower Isle",
127 | "slug": "tower-isle",
128 | "image": "tower-isle.jpg",
129 | "description":
130 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
131 | },
132 | {
133 | "name": "Blue Mountain",
134 | "slug": "blue-mountain",
135 | "image": "blue-mountain.jpg",
136 | "description":
137 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
138 | },
139 | {
140 | "name": "Montego Bay",
141 | "slug": "montego-bay",
142 | "image": "montego-bay.jpg",
143 | "description":
144 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
145 | },
146 | {
147 | "name": "Port Antonio",
148 | "slug": "port-antonio",
149 | "image": "port-antonio.jpg",
150 | "description":
151 | "Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis. Suspendisse lobortis pharetra tempor. Cras eleifend ante sed arcu interdum, in bibendum enim ultricies. Integer rutrum quis risus at tempor. Maecenas facilisis, nisi vel pellentesque maximus, lectus felis malesuada purus, a pulvinar elit est quis turpis. Duis convallis purus quis finibus consequat. Pellentesque faucibus tincidunt augue non consequat. Donec fringilla at est sit amet blandit. Nunc at porttitor ligula. Fusce sed odio turpis."
152 | }
153 | ]
154 | }
155 | ]
156 | }
157 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import router from '@/router'
4 | import AppLink from '@/components/AppLink.vue'
5 |
6 | createApp(App)
7 | .component('AppLink', AppLink)
8 | .use(router)
9 | .mount('#app')
10 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import {createRouter, createWebHistory, useRoute} from 'vue-router'
2 | import Home from '@/views/Home.vue'
3 | import sourceData from '@/data.json'
4 |
5 | const routes = [
6 | {path: '/', name: 'Home', component: Home, alias: "/home"},
7 | {
8 | path: '/protected',
9 | name: 'protected',
10 | components:{
11 | default: ()=> import('@/views/Protected.vue'),
12 | LeftSidebar: ()=> import('@/components/LeftSidebar.vue')
13 | },
14 | meta:{
15 | requiresAuth: true,
16 | }
17 | },
18 | {
19 | path: '/login',
20 | name: 'login',
21 | component: ()=> import('@/views/Login.vue')
22 | },
23 | {
24 | path: '/invoices',
25 | name: 'invoices',
26 | components:{
27 | default: ()=> import('@/views/Invoices.vue'),
28 | LeftSidebar: ()=> import('@/components/LeftSidebar.vue'),
29 | },
30 | meta:{
31 | requiresAuth: true,
32 | }
33 | },
34 | {
35 | path: "/example/:id(\\d+)?",
36 | component: () => import("@/views/Login.vue")
37 | },
38 | {
39 | path: '/destination/:id/:slug',
40 | name: 'destination.show',
41 | component: ()=>import('@/views/DestinationShow.vue'),
42 | props: route=> ({...route.params, id: parseInt(route.params.id)}),
43 | beforeEnter(to, from){
44 | const exists = sourceData.destinations.find(
45 | destination => destination.id === parseInt(to.params.id)
46 | )
47 | if(!exists) return {
48 | name: 'NotFound',
49 | // allows keeping the URL while rendering a different page
50 | params: { pathMatch: to.path.split('/').slice(1) },
51 | query: to.query,
52 | hash: to.hash,
53 | }
54 | },
55 | children:[
56 | {
57 | path: ':experienceSlug',
58 | name: 'experience.show',
59 | component: () => import('@/views/ExperienceShow.vue'),
60 | props: route=> ({...route.params, id: parseInt(route.params.id)})
61 | }
62 | ]
63 | },
64 | {
65 | path: '/:pathMatch(.*)*',
66 | name: 'NotFound',
67 | component: ()=> import('@/views/NotFound.vue')
68 | }
69 | ]
70 |
71 | const router = createRouter({
72 | history: createWebHistory(),
73 | routes,
74 | scrollBehavior (to, from, savedPosition) {
75 | return savedPosition || new Promise((resolve)=>{
76 | setTimeout(()=> resolve({ top:0 }), 300)
77 | })
78 | }
79 | })
80 | router.beforeEach((to, from)=>{
81 | if(to.meta.requiresAuth && !window.user){
82 | return {name: 'login', query:{ redirect: to.fullPath }}
83 | }
84 | })
85 | export default router
--------------------------------------------------------------------------------
/src/views/DestinationShow.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ destination.name }}
5 |
6 |
7 |
8 |
{{ destination.description }}
9 |
10 |
11 |
12 | Top Experiences in {{ destination.name }}
13 |
14 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
46 |
--------------------------------------------------------------------------------
/src/views/ExperienceShow.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{experience.name}}
4 |
5 | {{experience.description}}
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
All Destinations
4 |
Add Dynamic Route
5 |
Visit Dynamic Route
6 |
7 |
12 | {{ destination.name }}
13 |
14 |
15 |
16 |
17 |
18 |
39 |
--------------------------------------------------------------------------------
/src/views/Invoices.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Invoices
4 |
5 |
--------------------------------------------------------------------------------
/src/views/Login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/views/NotFound.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Not Found
4 |
5 | Oops, we couldn't find that page. Try going
6 | home
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/views/Protected.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Greetings, {{username}}
4 | Logout
5 |
6 | Invoices
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import vue from "@vitejs/plugin-vue";
3 | import { fileURLToPath, URL } from "node:url";
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | resolve: {
8 | alias: {
9 | "@": fileURLToPath(new URL("./src", import.meta.url)),
10 | },
11 | },
12 | plugins: [vue()],
13 | });
14 |
--------------------------------------------------------------------------------