├── .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 |
7 |
8 |
9 |
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 |
25 |
26 |
27 |
30 |
31 | {{ todo.errMsg }}
32 |
33 |
34 |
72 |
--------------------------------------------------------------------------------
/src/components/TodoHeader.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
17 |
18 |
19 |
20 |
56 |
--------------------------------------------------------------------------------
/src/components/TodoItem.vue:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
24 |
25 |
31 |
37 | {{ todo.todo }}
38 |
39 |
40 |
41 |
49 |
57 |
64 |
65 |
66 |
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 |
2 |
3 |
This is an about page
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/src/views/TodosView.vue:
--------------------------------------------------------------------------------
1 |
60 |
61 |
62 |
63 | Create Todo
64 |
65 | Create
66 |
67 |
78 |
79 |
80 | You have no todo's to complete! Add one!
81 |
82 |
83 |
84 | You have completed all your todos!
85 |
86 |
87 |
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 |
--------------------------------------------------------------------------------