├── .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 | 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 | 10 | -------------------------------------------------------------------------------- /src/components/ExperienceCard.vue: -------------------------------------------------------------------------------- 1 | 9 | 16 | -------------------------------------------------------------------------------- /src/components/GoBack.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 28 | 29 | 34 | -------------------------------------------------------------------------------- /src/components/LeftSidebar.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/components/TheNavigation.vue: -------------------------------------------------------------------------------- 1 | 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 | 28 | 46 | -------------------------------------------------------------------------------- /src/views/ExperienceShow.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 18 | 39 | -------------------------------------------------------------------------------- /src/views/Invoices.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/views/Login.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /src/views/NotFound.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/views/Protected.vue: -------------------------------------------------------------------------------- 1 | 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 | --------------------------------------------------------------------------------