├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── jsconfig.json ├── package-lock.json ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── assets │ └── Vue_Logo_Black.png ├── components │ ├── TodoCreator.vue │ ├── TodoHeader.vue │ └── TodoItem.vue ├── main.js ├── router │ └── index.js └── views │ ├── AboutView.vue │ └── TodosView.vue └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | 30 | *.tsbuildinfo 31 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue3-crash-course 2 | 3 | This template should help get you started developing with Vue 3 in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). 8 | 9 | ## Customize configuration 10 | 11 | See [Vite Configuration Reference](https://vitejs.dev/config/). 12 | 13 | ## Project Setup 14 | 15 | ```sh 16 | npm install 17 | ``` 18 | 19 | ### Compile and Hot-Reload for Development 20 | 21 | ```sh 22 | npm run dev 23 | ``` 24 | 25 | ### Compile and Minify for Production 26 | 27 | ```sh 28 | npm run build 29 | ``` 30 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./src/*"] 5 | } 6 | }, 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-crash-course", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vue3-crash-course", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "vue": "^3.4.29", 12 | "vue-router": "^4.3.3" 13 | }, 14 | "devDependencies": { 15 | "@iconify/vue": "^4.1.2", 16 | "@vitejs/plugin-vue": "^5.0.5", 17 | "sass": "^1.77.8", 18 | "uid": "^2.0.2", 19 | "vite": "^5.3.1" 20 | } 21 | }, 22 | "node_modules/@babel/parser": { 23 | "version": "7.24.8", 24 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", 25 | "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", 26 | "bin": { 27 | "parser": "bin/babel-parser.js" 28 | }, 29 | "engines": { 30 | "node": ">=6.0.0" 31 | } 32 | }, 33 | "node_modules/@esbuild/aix-ppc64": { 34 | "version": "0.21.5", 35 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 36 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 37 | "cpu": [ 38 | "ppc64" 39 | ], 40 | "dev": true, 41 | "optional": true, 42 | "os": [ 43 | "aix" 44 | ], 45 | "engines": { 46 | "node": ">=12" 47 | } 48 | }, 49 | "node_modules/@esbuild/android-arm": { 50 | "version": "0.21.5", 51 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 52 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 53 | "cpu": [ 54 | "arm" 55 | ], 56 | "dev": true, 57 | "optional": true, 58 | "os": [ 59 | "android" 60 | ], 61 | "engines": { 62 | "node": ">=12" 63 | } 64 | }, 65 | "node_modules/@esbuild/android-arm64": { 66 | "version": "0.21.5", 67 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 68 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 69 | "cpu": [ 70 | "arm64" 71 | ], 72 | "dev": true, 73 | "optional": true, 74 | "os": [ 75 | "android" 76 | ], 77 | "engines": { 78 | "node": ">=12" 79 | } 80 | }, 81 | "node_modules/@esbuild/android-x64": { 82 | "version": "0.21.5", 83 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 84 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 85 | "cpu": [ 86 | "x64" 87 | ], 88 | "dev": true, 89 | "optional": true, 90 | "os": [ 91 | "android" 92 | ], 93 | "engines": { 94 | "node": ">=12" 95 | } 96 | }, 97 | "node_modules/@esbuild/darwin-arm64": { 98 | "version": "0.21.5", 99 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 100 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 101 | "cpu": [ 102 | "arm64" 103 | ], 104 | "dev": true, 105 | "optional": true, 106 | "os": [ 107 | "darwin" 108 | ], 109 | "engines": { 110 | "node": ">=12" 111 | } 112 | }, 113 | "node_modules/@esbuild/darwin-x64": { 114 | "version": "0.21.5", 115 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 116 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 117 | "cpu": [ 118 | "x64" 119 | ], 120 | "dev": true, 121 | "optional": true, 122 | "os": [ 123 | "darwin" 124 | ], 125 | "engines": { 126 | "node": ">=12" 127 | } 128 | }, 129 | "node_modules/@esbuild/freebsd-arm64": { 130 | "version": "0.21.5", 131 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 132 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 133 | "cpu": [ 134 | "arm64" 135 | ], 136 | "dev": true, 137 | "optional": true, 138 | "os": [ 139 | "freebsd" 140 | ], 141 | "engines": { 142 | "node": ">=12" 143 | } 144 | }, 145 | "node_modules/@esbuild/freebsd-x64": { 146 | "version": "0.21.5", 147 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 148 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 149 | "cpu": [ 150 | "x64" 151 | ], 152 | "dev": true, 153 | "optional": true, 154 | "os": [ 155 | "freebsd" 156 | ], 157 | "engines": { 158 | "node": ">=12" 159 | } 160 | }, 161 | "node_modules/@esbuild/linux-arm": { 162 | "version": "0.21.5", 163 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 164 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 165 | "cpu": [ 166 | "arm" 167 | ], 168 | "dev": true, 169 | "optional": true, 170 | "os": [ 171 | "linux" 172 | ], 173 | "engines": { 174 | "node": ">=12" 175 | } 176 | }, 177 | "node_modules/@esbuild/linux-arm64": { 178 | "version": "0.21.5", 179 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 180 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 181 | "cpu": [ 182 | "arm64" 183 | ], 184 | "dev": true, 185 | "optional": true, 186 | "os": [ 187 | "linux" 188 | ], 189 | "engines": { 190 | "node": ">=12" 191 | } 192 | }, 193 | "node_modules/@esbuild/linux-ia32": { 194 | "version": "0.21.5", 195 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 196 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 197 | "cpu": [ 198 | "ia32" 199 | ], 200 | "dev": true, 201 | "optional": true, 202 | "os": [ 203 | "linux" 204 | ], 205 | "engines": { 206 | "node": ">=12" 207 | } 208 | }, 209 | "node_modules/@esbuild/linux-loong64": { 210 | "version": "0.21.5", 211 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 212 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 213 | "cpu": [ 214 | "loong64" 215 | ], 216 | "dev": true, 217 | "optional": true, 218 | "os": [ 219 | "linux" 220 | ], 221 | "engines": { 222 | "node": ">=12" 223 | } 224 | }, 225 | "node_modules/@esbuild/linux-mips64el": { 226 | "version": "0.21.5", 227 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 228 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 229 | "cpu": [ 230 | "mips64el" 231 | ], 232 | "dev": true, 233 | "optional": true, 234 | "os": [ 235 | "linux" 236 | ], 237 | "engines": { 238 | "node": ">=12" 239 | } 240 | }, 241 | "node_modules/@esbuild/linux-ppc64": { 242 | "version": "0.21.5", 243 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 244 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 245 | "cpu": [ 246 | "ppc64" 247 | ], 248 | "dev": true, 249 | "optional": true, 250 | "os": [ 251 | "linux" 252 | ], 253 | "engines": { 254 | "node": ">=12" 255 | } 256 | }, 257 | "node_modules/@esbuild/linux-riscv64": { 258 | "version": "0.21.5", 259 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 260 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 261 | "cpu": [ 262 | "riscv64" 263 | ], 264 | "dev": true, 265 | "optional": true, 266 | "os": [ 267 | "linux" 268 | ], 269 | "engines": { 270 | "node": ">=12" 271 | } 272 | }, 273 | "node_modules/@esbuild/linux-s390x": { 274 | "version": "0.21.5", 275 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 276 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 277 | "cpu": [ 278 | "s390x" 279 | ], 280 | "dev": true, 281 | "optional": true, 282 | "os": [ 283 | "linux" 284 | ], 285 | "engines": { 286 | "node": ">=12" 287 | } 288 | }, 289 | "node_modules/@esbuild/linux-x64": { 290 | "version": "0.21.5", 291 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 292 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 293 | "cpu": [ 294 | "x64" 295 | ], 296 | "dev": true, 297 | "optional": true, 298 | "os": [ 299 | "linux" 300 | ], 301 | "engines": { 302 | "node": ">=12" 303 | } 304 | }, 305 | "node_modules/@esbuild/netbsd-x64": { 306 | "version": "0.21.5", 307 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 308 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 309 | "cpu": [ 310 | "x64" 311 | ], 312 | "dev": true, 313 | "optional": true, 314 | "os": [ 315 | "netbsd" 316 | ], 317 | "engines": { 318 | "node": ">=12" 319 | } 320 | }, 321 | "node_modules/@esbuild/openbsd-x64": { 322 | "version": "0.21.5", 323 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 324 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 325 | "cpu": [ 326 | "x64" 327 | ], 328 | "dev": true, 329 | "optional": true, 330 | "os": [ 331 | "openbsd" 332 | ], 333 | "engines": { 334 | "node": ">=12" 335 | } 336 | }, 337 | "node_modules/@esbuild/sunos-x64": { 338 | "version": "0.21.5", 339 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 340 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 341 | "cpu": [ 342 | "x64" 343 | ], 344 | "dev": true, 345 | "optional": true, 346 | "os": [ 347 | "sunos" 348 | ], 349 | "engines": { 350 | "node": ">=12" 351 | } 352 | }, 353 | "node_modules/@esbuild/win32-arm64": { 354 | "version": "0.21.5", 355 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 356 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 357 | "cpu": [ 358 | "arm64" 359 | ], 360 | "dev": true, 361 | "optional": true, 362 | "os": [ 363 | "win32" 364 | ], 365 | "engines": { 366 | "node": ">=12" 367 | } 368 | }, 369 | "node_modules/@esbuild/win32-ia32": { 370 | "version": "0.21.5", 371 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 372 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 373 | "cpu": [ 374 | "ia32" 375 | ], 376 | "dev": true, 377 | "optional": true, 378 | "os": [ 379 | "win32" 380 | ], 381 | "engines": { 382 | "node": ">=12" 383 | } 384 | }, 385 | "node_modules/@esbuild/win32-x64": { 386 | "version": "0.21.5", 387 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 388 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 389 | "cpu": [ 390 | "x64" 391 | ], 392 | "dev": true, 393 | "optional": true, 394 | "os": [ 395 | "win32" 396 | ], 397 | "engines": { 398 | "node": ">=12" 399 | } 400 | }, 401 | "node_modules/@iconify/types": { 402 | "version": "2.0.0", 403 | "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", 404 | "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", 405 | "dev": true 406 | }, 407 | "node_modules/@iconify/vue": { 408 | "version": "4.1.2", 409 | "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-4.1.2.tgz", 410 | "integrity": "sha512-CQnYqLiQD5LOAaXhBrmj1mdL2/NCJvwcC4jtW2Z8ukhThiFkLDkutarTOV2trfc9EXqUqRs0KqXOL9pZ/IyysA==", 411 | "dev": true, 412 | "dependencies": { 413 | "@iconify/types": "^2.0.0" 414 | }, 415 | "funding": { 416 | "url": "https://github.com/sponsors/cyberalien" 417 | }, 418 | "peerDependencies": { 419 | "vue": ">=3" 420 | } 421 | }, 422 | "node_modules/@jridgewell/sourcemap-codec": { 423 | "version": "1.5.0", 424 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 425 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" 426 | }, 427 | "node_modules/@lukeed/csprng": { 428 | "version": "1.1.0", 429 | "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", 430 | "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", 431 | "dev": true, 432 | "engines": { 433 | "node": ">=8" 434 | } 435 | }, 436 | "node_modules/@rollup/rollup-android-arm-eabi": { 437 | "version": "4.18.1", 438 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", 439 | "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", 440 | "cpu": [ 441 | "arm" 442 | ], 443 | "dev": true, 444 | "optional": true, 445 | "os": [ 446 | "android" 447 | ] 448 | }, 449 | "node_modules/@rollup/rollup-android-arm64": { 450 | "version": "4.18.1", 451 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", 452 | "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", 453 | "cpu": [ 454 | "arm64" 455 | ], 456 | "dev": true, 457 | "optional": true, 458 | "os": [ 459 | "android" 460 | ] 461 | }, 462 | "node_modules/@rollup/rollup-darwin-arm64": { 463 | "version": "4.18.1", 464 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", 465 | "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", 466 | "cpu": [ 467 | "arm64" 468 | ], 469 | "dev": true, 470 | "optional": true, 471 | "os": [ 472 | "darwin" 473 | ] 474 | }, 475 | "node_modules/@rollup/rollup-darwin-x64": { 476 | "version": "4.18.1", 477 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", 478 | "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", 479 | "cpu": [ 480 | "x64" 481 | ], 482 | "dev": true, 483 | "optional": true, 484 | "os": [ 485 | "darwin" 486 | ] 487 | }, 488 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 489 | "version": "4.18.1", 490 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", 491 | "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", 492 | "cpu": [ 493 | "arm" 494 | ], 495 | "dev": true, 496 | "optional": true, 497 | "os": [ 498 | "linux" 499 | ] 500 | }, 501 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 502 | "version": "4.18.1", 503 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", 504 | "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", 505 | "cpu": [ 506 | "arm" 507 | ], 508 | "dev": true, 509 | "optional": true, 510 | "os": [ 511 | "linux" 512 | ] 513 | }, 514 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 515 | "version": "4.18.1", 516 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", 517 | "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", 518 | "cpu": [ 519 | "arm64" 520 | ], 521 | "dev": true, 522 | "optional": true, 523 | "os": [ 524 | "linux" 525 | ] 526 | }, 527 | "node_modules/@rollup/rollup-linux-arm64-musl": { 528 | "version": "4.18.1", 529 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", 530 | "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", 531 | "cpu": [ 532 | "arm64" 533 | ], 534 | "dev": true, 535 | "optional": true, 536 | "os": [ 537 | "linux" 538 | ] 539 | }, 540 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 541 | "version": "4.18.1", 542 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", 543 | "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", 544 | "cpu": [ 545 | "ppc64" 546 | ], 547 | "dev": true, 548 | "optional": true, 549 | "os": [ 550 | "linux" 551 | ] 552 | }, 553 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 554 | "version": "4.18.1", 555 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", 556 | "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", 557 | "cpu": [ 558 | "riscv64" 559 | ], 560 | "dev": true, 561 | "optional": true, 562 | "os": [ 563 | "linux" 564 | ] 565 | }, 566 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 567 | "version": "4.18.1", 568 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", 569 | "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", 570 | "cpu": [ 571 | "s390x" 572 | ], 573 | "dev": true, 574 | "optional": true, 575 | "os": [ 576 | "linux" 577 | ] 578 | }, 579 | "node_modules/@rollup/rollup-linux-x64-gnu": { 580 | "version": "4.18.1", 581 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", 582 | "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", 583 | "cpu": [ 584 | "x64" 585 | ], 586 | "dev": true, 587 | "optional": true, 588 | "os": [ 589 | "linux" 590 | ] 591 | }, 592 | "node_modules/@rollup/rollup-linux-x64-musl": { 593 | "version": "4.18.1", 594 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", 595 | "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", 596 | "cpu": [ 597 | "x64" 598 | ], 599 | "dev": true, 600 | "optional": true, 601 | "os": [ 602 | "linux" 603 | ] 604 | }, 605 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 606 | "version": "4.18.1", 607 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", 608 | "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", 609 | "cpu": [ 610 | "arm64" 611 | ], 612 | "dev": true, 613 | "optional": true, 614 | "os": [ 615 | "win32" 616 | ] 617 | }, 618 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 619 | "version": "4.18.1", 620 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", 621 | "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", 622 | "cpu": [ 623 | "ia32" 624 | ], 625 | "dev": true, 626 | "optional": true, 627 | "os": [ 628 | "win32" 629 | ] 630 | }, 631 | "node_modules/@rollup/rollup-win32-x64-msvc": { 632 | "version": "4.18.1", 633 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", 634 | "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", 635 | "cpu": [ 636 | "x64" 637 | ], 638 | "dev": true, 639 | "optional": true, 640 | "os": [ 641 | "win32" 642 | ] 643 | }, 644 | "node_modules/@types/estree": { 645 | "version": "1.0.5", 646 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 647 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 648 | "dev": true 649 | }, 650 | "node_modules/@vitejs/plugin-vue": { 651 | "version": "5.0.5", 652 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", 653 | "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", 654 | "dev": true, 655 | "engines": { 656 | "node": "^18.0.0 || >=20.0.0" 657 | }, 658 | "peerDependencies": { 659 | "vite": "^5.0.0", 660 | "vue": "^3.2.25" 661 | } 662 | }, 663 | "node_modules/@vue/compiler-core": { 664 | "version": "3.4.31", 665 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.31.tgz", 666 | "integrity": "sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==", 667 | "dependencies": { 668 | "@babel/parser": "^7.24.7", 669 | "@vue/shared": "3.4.31", 670 | "entities": "^4.5.0", 671 | "estree-walker": "^2.0.2", 672 | "source-map-js": "^1.2.0" 673 | } 674 | }, 675 | "node_modules/@vue/compiler-dom": { 676 | "version": "3.4.31", 677 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.31.tgz", 678 | "integrity": "sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==", 679 | "dependencies": { 680 | "@vue/compiler-core": "3.4.31", 681 | "@vue/shared": "3.4.31" 682 | } 683 | }, 684 | "node_modules/@vue/compiler-sfc": { 685 | "version": "3.4.31", 686 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.31.tgz", 687 | "integrity": "sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==", 688 | "dependencies": { 689 | "@babel/parser": "^7.24.7", 690 | "@vue/compiler-core": "3.4.31", 691 | "@vue/compiler-dom": "3.4.31", 692 | "@vue/compiler-ssr": "3.4.31", 693 | "@vue/shared": "3.4.31", 694 | "estree-walker": "^2.0.2", 695 | "magic-string": "^0.30.10", 696 | "postcss": "^8.4.38", 697 | "source-map-js": "^1.2.0" 698 | } 699 | }, 700 | "node_modules/@vue/compiler-ssr": { 701 | "version": "3.4.31", 702 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz", 703 | "integrity": "sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==", 704 | "dependencies": { 705 | "@vue/compiler-dom": "3.4.31", 706 | "@vue/shared": "3.4.31" 707 | } 708 | }, 709 | "node_modules/@vue/devtools-api": { 710 | "version": "6.6.3", 711 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", 712 | "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==" 713 | }, 714 | "node_modules/@vue/reactivity": { 715 | "version": "3.4.31", 716 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.31.tgz", 717 | "integrity": "sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==", 718 | "dependencies": { 719 | "@vue/shared": "3.4.31" 720 | } 721 | }, 722 | "node_modules/@vue/runtime-core": { 723 | "version": "3.4.31", 724 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.31.tgz", 725 | "integrity": "sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==", 726 | "dependencies": { 727 | "@vue/reactivity": "3.4.31", 728 | "@vue/shared": "3.4.31" 729 | } 730 | }, 731 | "node_modules/@vue/runtime-dom": { 732 | "version": "3.4.31", 733 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.31.tgz", 734 | "integrity": "sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==", 735 | "dependencies": { 736 | "@vue/reactivity": "3.4.31", 737 | "@vue/runtime-core": "3.4.31", 738 | "@vue/shared": "3.4.31", 739 | "csstype": "^3.1.3" 740 | } 741 | }, 742 | "node_modules/@vue/server-renderer": { 743 | "version": "3.4.31", 744 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.31.tgz", 745 | "integrity": "sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==", 746 | "dependencies": { 747 | "@vue/compiler-ssr": "3.4.31", 748 | "@vue/shared": "3.4.31" 749 | }, 750 | "peerDependencies": { 751 | "vue": "3.4.31" 752 | } 753 | }, 754 | "node_modules/@vue/shared": { 755 | "version": "3.4.31", 756 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.31.tgz", 757 | "integrity": "sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==" 758 | }, 759 | "node_modules/anymatch": { 760 | "version": "3.1.3", 761 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 762 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 763 | "dev": true, 764 | "dependencies": { 765 | "normalize-path": "^3.0.0", 766 | "picomatch": "^2.0.4" 767 | }, 768 | "engines": { 769 | "node": ">= 8" 770 | } 771 | }, 772 | "node_modules/binary-extensions": { 773 | "version": "2.3.0", 774 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 775 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 776 | "dev": true, 777 | "engines": { 778 | "node": ">=8" 779 | }, 780 | "funding": { 781 | "url": "https://github.com/sponsors/sindresorhus" 782 | } 783 | }, 784 | "node_modules/braces": { 785 | "version": "3.0.3", 786 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 787 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 788 | "dev": true, 789 | "dependencies": { 790 | "fill-range": "^7.1.1" 791 | }, 792 | "engines": { 793 | "node": ">=8" 794 | } 795 | }, 796 | "node_modules/chokidar": { 797 | "version": "3.6.0", 798 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 799 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 800 | "dev": true, 801 | "dependencies": { 802 | "anymatch": "~3.1.2", 803 | "braces": "~3.0.2", 804 | "glob-parent": "~5.1.2", 805 | "is-binary-path": "~2.1.0", 806 | "is-glob": "~4.0.1", 807 | "normalize-path": "~3.0.0", 808 | "readdirp": "~3.6.0" 809 | }, 810 | "engines": { 811 | "node": ">= 8.10.0" 812 | }, 813 | "funding": { 814 | "url": "https://paulmillr.com/funding/" 815 | }, 816 | "optionalDependencies": { 817 | "fsevents": "~2.3.2" 818 | } 819 | }, 820 | "node_modules/csstype": { 821 | "version": "3.1.3", 822 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 823 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" 824 | }, 825 | "node_modules/entities": { 826 | "version": "4.5.0", 827 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 828 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 829 | "engines": { 830 | "node": ">=0.12" 831 | }, 832 | "funding": { 833 | "url": "https://github.com/fb55/entities?sponsor=1" 834 | } 835 | }, 836 | "node_modules/esbuild": { 837 | "version": "0.21.5", 838 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 839 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 840 | "dev": true, 841 | "hasInstallScript": true, 842 | "bin": { 843 | "esbuild": "bin/esbuild" 844 | }, 845 | "engines": { 846 | "node": ">=12" 847 | }, 848 | "optionalDependencies": { 849 | "@esbuild/aix-ppc64": "0.21.5", 850 | "@esbuild/android-arm": "0.21.5", 851 | "@esbuild/android-arm64": "0.21.5", 852 | "@esbuild/android-x64": "0.21.5", 853 | "@esbuild/darwin-arm64": "0.21.5", 854 | "@esbuild/darwin-x64": "0.21.5", 855 | "@esbuild/freebsd-arm64": "0.21.5", 856 | "@esbuild/freebsd-x64": "0.21.5", 857 | "@esbuild/linux-arm": "0.21.5", 858 | "@esbuild/linux-arm64": "0.21.5", 859 | "@esbuild/linux-ia32": "0.21.5", 860 | "@esbuild/linux-loong64": "0.21.5", 861 | "@esbuild/linux-mips64el": "0.21.5", 862 | "@esbuild/linux-ppc64": "0.21.5", 863 | "@esbuild/linux-riscv64": "0.21.5", 864 | "@esbuild/linux-s390x": "0.21.5", 865 | "@esbuild/linux-x64": "0.21.5", 866 | "@esbuild/netbsd-x64": "0.21.5", 867 | "@esbuild/openbsd-x64": "0.21.5", 868 | "@esbuild/sunos-x64": "0.21.5", 869 | "@esbuild/win32-arm64": "0.21.5", 870 | "@esbuild/win32-ia32": "0.21.5", 871 | "@esbuild/win32-x64": "0.21.5" 872 | } 873 | }, 874 | "node_modules/estree-walker": { 875 | "version": "2.0.2", 876 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 877 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 878 | }, 879 | "node_modules/fill-range": { 880 | "version": "7.1.1", 881 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 882 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 883 | "dev": true, 884 | "dependencies": { 885 | "to-regex-range": "^5.0.1" 886 | }, 887 | "engines": { 888 | "node": ">=8" 889 | } 890 | }, 891 | "node_modules/fsevents": { 892 | "version": "2.3.3", 893 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 894 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 895 | "dev": true, 896 | "hasInstallScript": true, 897 | "optional": true, 898 | "os": [ 899 | "darwin" 900 | ], 901 | "engines": { 902 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 903 | } 904 | }, 905 | "node_modules/glob-parent": { 906 | "version": "5.1.2", 907 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 908 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 909 | "dev": true, 910 | "dependencies": { 911 | "is-glob": "^4.0.1" 912 | }, 913 | "engines": { 914 | "node": ">= 6" 915 | } 916 | }, 917 | "node_modules/immutable": { 918 | "version": "4.3.6", 919 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", 920 | "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", 921 | "dev": true 922 | }, 923 | "node_modules/is-binary-path": { 924 | "version": "2.1.0", 925 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 926 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 927 | "dev": true, 928 | "dependencies": { 929 | "binary-extensions": "^2.0.0" 930 | }, 931 | "engines": { 932 | "node": ">=8" 933 | } 934 | }, 935 | "node_modules/is-extglob": { 936 | "version": "2.1.1", 937 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 938 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 939 | "dev": true, 940 | "engines": { 941 | "node": ">=0.10.0" 942 | } 943 | }, 944 | "node_modules/is-glob": { 945 | "version": "4.0.3", 946 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 947 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 948 | "dev": true, 949 | "dependencies": { 950 | "is-extglob": "^2.1.1" 951 | }, 952 | "engines": { 953 | "node": ">=0.10.0" 954 | } 955 | }, 956 | "node_modules/is-number": { 957 | "version": "7.0.0", 958 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 959 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 960 | "dev": true, 961 | "engines": { 962 | "node": ">=0.12.0" 963 | } 964 | }, 965 | "node_modules/magic-string": { 966 | "version": "0.30.10", 967 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", 968 | "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", 969 | "dependencies": { 970 | "@jridgewell/sourcemap-codec": "^1.4.15" 971 | } 972 | }, 973 | "node_modules/nanoid": { 974 | "version": "3.3.7", 975 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 976 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 977 | "funding": [ 978 | { 979 | "type": "github", 980 | "url": "https://github.com/sponsors/ai" 981 | } 982 | ], 983 | "bin": { 984 | "nanoid": "bin/nanoid.cjs" 985 | }, 986 | "engines": { 987 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 988 | } 989 | }, 990 | "node_modules/normalize-path": { 991 | "version": "3.0.0", 992 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 993 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 994 | "dev": true, 995 | "engines": { 996 | "node": ">=0.10.0" 997 | } 998 | }, 999 | "node_modules/picocolors": { 1000 | "version": "1.0.1", 1001 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", 1002 | "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" 1003 | }, 1004 | "node_modules/picomatch": { 1005 | "version": "2.3.1", 1006 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1007 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1008 | "dev": true, 1009 | "engines": { 1010 | "node": ">=8.6" 1011 | }, 1012 | "funding": { 1013 | "url": "https://github.com/sponsors/jonschlinkert" 1014 | } 1015 | }, 1016 | "node_modules/postcss": { 1017 | "version": "8.4.39", 1018 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", 1019 | "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", 1020 | "funding": [ 1021 | { 1022 | "type": "opencollective", 1023 | "url": "https://opencollective.com/postcss/" 1024 | }, 1025 | { 1026 | "type": "tidelift", 1027 | "url": "https://tidelift.com/funding/github/npm/postcss" 1028 | }, 1029 | { 1030 | "type": "github", 1031 | "url": "https://github.com/sponsors/ai" 1032 | } 1033 | ], 1034 | "dependencies": { 1035 | "nanoid": "^3.3.7", 1036 | "picocolors": "^1.0.1", 1037 | "source-map-js": "^1.2.0" 1038 | }, 1039 | "engines": { 1040 | "node": "^10 || ^12 || >=14" 1041 | } 1042 | }, 1043 | "node_modules/readdirp": { 1044 | "version": "3.6.0", 1045 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1046 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "picomatch": "^2.2.1" 1050 | }, 1051 | "engines": { 1052 | "node": ">=8.10.0" 1053 | } 1054 | }, 1055 | "node_modules/rollup": { 1056 | "version": "4.18.1", 1057 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", 1058 | "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", 1059 | "dev": true, 1060 | "dependencies": { 1061 | "@types/estree": "1.0.5" 1062 | }, 1063 | "bin": { 1064 | "rollup": "dist/bin/rollup" 1065 | }, 1066 | "engines": { 1067 | "node": ">=18.0.0", 1068 | "npm": ">=8.0.0" 1069 | }, 1070 | "optionalDependencies": { 1071 | "@rollup/rollup-android-arm-eabi": "4.18.1", 1072 | "@rollup/rollup-android-arm64": "4.18.1", 1073 | "@rollup/rollup-darwin-arm64": "4.18.1", 1074 | "@rollup/rollup-darwin-x64": "4.18.1", 1075 | "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", 1076 | "@rollup/rollup-linux-arm-musleabihf": "4.18.1", 1077 | "@rollup/rollup-linux-arm64-gnu": "4.18.1", 1078 | "@rollup/rollup-linux-arm64-musl": "4.18.1", 1079 | "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", 1080 | "@rollup/rollup-linux-riscv64-gnu": "4.18.1", 1081 | "@rollup/rollup-linux-s390x-gnu": "4.18.1", 1082 | "@rollup/rollup-linux-x64-gnu": "4.18.1", 1083 | "@rollup/rollup-linux-x64-musl": "4.18.1", 1084 | "@rollup/rollup-win32-arm64-msvc": "4.18.1", 1085 | "@rollup/rollup-win32-ia32-msvc": "4.18.1", 1086 | "@rollup/rollup-win32-x64-msvc": "4.18.1", 1087 | "fsevents": "~2.3.2" 1088 | } 1089 | }, 1090 | "node_modules/sass": { 1091 | "version": "1.77.8", 1092 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", 1093 | "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", 1094 | "dev": true, 1095 | "dependencies": { 1096 | "chokidar": ">=3.0.0 <4.0.0", 1097 | "immutable": "^4.0.0", 1098 | "source-map-js": ">=0.6.2 <2.0.0" 1099 | }, 1100 | "bin": { 1101 | "sass": "sass.js" 1102 | }, 1103 | "engines": { 1104 | "node": ">=14.0.0" 1105 | } 1106 | }, 1107 | "node_modules/source-map-js": { 1108 | "version": "1.2.0", 1109 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 1110 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 1111 | "engines": { 1112 | "node": ">=0.10.0" 1113 | } 1114 | }, 1115 | "node_modules/to-regex-range": { 1116 | "version": "5.0.1", 1117 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1118 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1119 | "dev": true, 1120 | "dependencies": { 1121 | "is-number": "^7.0.0" 1122 | }, 1123 | "engines": { 1124 | "node": ">=8.0" 1125 | } 1126 | }, 1127 | "node_modules/uid": { 1128 | "version": "2.0.2", 1129 | "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", 1130 | "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", 1131 | "dev": true, 1132 | "dependencies": { 1133 | "@lukeed/csprng": "^1.0.0" 1134 | }, 1135 | "engines": { 1136 | "node": ">=8" 1137 | } 1138 | }, 1139 | "node_modules/vite": { 1140 | "version": "5.3.3", 1141 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", 1142 | "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", 1143 | "dev": true, 1144 | "dependencies": { 1145 | "esbuild": "^0.21.3", 1146 | "postcss": "^8.4.39", 1147 | "rollup": "^4.13.0" 1148 | }, 1149 | "bin": { 1150 | "vite": "bin/vite.js" 1151 | }, 1152 | "engines": { 1153 | "node": "^18.0.0 || >=20.0.0" 1154 | }, 1155 | "funding": { 1156 | "url": "https://github.com/vitejs/vite?sponsor=1" 1157 | }, 1158 | "optionalDependencies": { 1159 | "fsevents": "~2.3.3" 1160 | }, 1161 | "peerDependencies": { 1162 | "@types/node": "^18.0.0 || >=20.0.0", 1163 | "less": "*", 1164 | "lightningcss": "^1.21.0", 1165 | "sass": "*", 1166 | "stylus": "*", 1167 | "sugarss": "*", 1168 | "terser": "^5.4.0" 1169 | }, 1170 | "peerDependenciesMeta": { 1171 | "@types/node": { 1172 | "optional": true 1173 | }, 1174 | "less": { 1175 | "optional": true 1176 | }, 1177 | "lightningcss": { 1178 | "optional": true 1179 | }, 1180 | "sass": { 1181 | "optional": true 1182 | }, 1183 | "stylus": { 1184 | "optional": true 1185 | }, 1186 | "sugarss": { 1187 | "optional": true 1188 | }, 1189 | "terser": { 1190 | "optional": true 1191 | } 1192 | } 1193 | }, 1194 | "node_modules/vue": { 1195 | "version": "3.4.31", 1196 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.31.tgz", 1197 | "integrity": "sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==", 1198 | "dependencies": { 1199 | "@vue/compiler-dom": "3.4.31", 1200 | "@vue/compiler-sfc": "3.4.31", 1201 | "@vue/runtime-dom": "3.4.31", 1202 | "@vue/server-renderer": "3.4.31", 1203 | "@vue/shared": "3.4.31" 1204 | }, 1205 | "peerDependencies": { 1206 | "typescript": "*" 1207 | }, 1208 | "peerDependenciesMeta": { 1209 | "typescript": { 1210 | "optional": true 1211 | } 1212 | } 1213 | }, 1214 | "node_modules/vue-router": { 1215 | "version": "4.4.0", 1216 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.0.tgz", 1217 | "integrity": "sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==", 1218 | "dependencies": { 1219 | "@vue/devtools-api": "^6.5.1" 1220 | }, 1221 | "funding": { 1222 | "url": "https://github.com/sponsors/posva" 1223 | }, 1224 | "peerDependencies": { 1225 | "vue": "^3.2.0" 1226 | } 1227 | } 1228 | } 1229 | } 1230 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-crash-course", 3 | "version": "0.0.0", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "vue": "^3.4.29", 13 | "vue-router": "^4.3.3" 14 | }, 15 | "devDependencies": { 16 | "@iconify/vue": "^4.1.2", 17 | "@vitejs/plugin-vue": "^5.0.5", 18 | "sass": "^1.77.8", 19 | "uid": "^2.0.2", 20 | "vite": "^5.3.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/texora/vue3-crash-course/4009572995909712336030d0cb6aaa9883e5446a/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 11 | 26 | -------------------------------------------------------------------------------- /src/assets/Vue_Logo_Black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/texora/vue3-crash-course/4009572995909712336030d0cb6aaa9883e5446a/src/assets/Vue_Logo_Black.png -------------------------------------------------------------------------------- /src/components/TodoCreator.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 33 | 34 | 72 | -------------------------------------------------------------------------------- /src/components/TodoHeader.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 19 | 20 | 56 | -------------------------------------------------------------------------------- /src/components/TodoItem.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 67 | 68 | 122 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import App from "./App.vue"; 3 | import router from "./router"; 4 | 5 | const app = createApp(App); 6 | 7 | app.use(router); 8 | 9 | app.mount("#app"); 10 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from "vue-router"; 2 | import TodosView from "../views/TodosView.vue"; 3 | 4 | const router = createRouter({ 5 | history: createWebHistory(import.meta.env.BASE_URL), 6 | routes: [ 7 | { 8 | path: "/", 9 | name: "todos", 10 | component: TodosView, 11 | }, 12 | { 13 | path: "/about", 14 | name: "about", 15 | component: () => import("../views/AboutView.vue"), 16 | }, 17 | ], 18 | }); 19 | 20 | export default router; 21 | -------------------------------------------------------------------------------- /src/views/AboutView.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /src/views/TodosView.vue: -------------------------------------------------------------------------------- 1 | 60 | 61 | 88 | 89 | 120 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | plugins: [ 9 | vue(), 10 | ], 11 | resolve: { 12 | alias: { 13 | '@': fileURLToPath(new URL('./src', import.meta.url)) 14 | } 15 | } 16 | }) 17 | --------------------------------------------------------------------------------