├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── assets │ ├── base.css │ ├── logo.svg │ └── main.css ├── components │ ├── HelloWorld.vue │ ├── TheWelcome.vue │ ├── WelcomeItem.vue │ └── icons │ │ ├── IconCommunity.vue │ │ ├── IconDocumentation.vue │ │ ├── IconEcosystem.vue │ │ ├── IconSupport.vue │ │ └── IconTooling.vue ├── data.json ├── main.js ├── router │ └── index.js └── views │ ├── AboutView.vue │ ├── CarView.vue │ ├── DealerView.vue │ ├── HomeView.vue │ ├── ManufactorerView.vue │ └── NotFoundView.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 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rouuter 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) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). 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 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rouuter", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "rouuter", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "vue": "^3.2.38", 12 | "vue-router": "^4.1.5" 13 | }, 14 | "devDependencies": { 15 | "@vitejs/plugin-vue": "^3.0.3", 16 | "vite": "^3.0.9" 17 | } 18 | }, 19 | "node_modules/@babel/parser": { 20 | "version": "7.19.4", 21 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", 22 | "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", 23 | "bin": { 24 | "parser": "bin/babel-parser.js" 25 | }, 26 | "engines": { 27 | "node": ">=6.0.0" 28 | } 29 | }, 30 | "node_modules/@esbuild/android-arm": { 31 | "version": "0.15.10", 32 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz", 33 | "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==", 34 | "cpu": [ 35 | "arm" 36 | ], 37 | "dev": true, 38 | "optional": true, 39 | "os": [ 40 | "android" 41 | ], 42 | "engines": { 43 | "node": ">=12" 44 | } 45 | }, 46 | "node_modules/@esbuild/linux-loong64": { 47 | "version": "0.15.10", 48 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz", 49 | "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==", 50 | "cpu": [ 51 | "loong64" 52 | ], 53 | "dev": true, 54 | "optional": true, 55 | "os": [ 56 | "linux" 57 | ], 58 | "engines": { 59 | "node": ">=12" 60 | } 61 | }, 62 | "node_modules/@vitejs/plugin-vue": { 63 | "version": "3.1.2", 64 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz", 65 | "integrity": "sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==", 66 | "dev": true, 67 | "engines": { 68 | "node": "^14.18.0 || >=16.0.0" 69 | }, 70 | "peerDependencies": { 71 | "vite": "^3.0.0", 72 | "vue": "^3.2.25" 73 | } 74 | }, 75 | "node_modules/@vue/compiler-core": { 76 | "version": "3.2.40", 77 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.40.tgz", 78 | "integrity": "sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==", 79 | "dependencies": { 80 | "@babel/parser": "^7.16.4", 81 | "@vue/shared": "3.2.40", 82 | "estree-walker": "^2.0.2", 83 | "source-map": "^0.6.1" 84 | } 85 | }, 86 | "node_modules/@vue/compiler-dom": { 87 | "version": "3.2.40", 88 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.40.tgz", 89 | "integrity": "sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==", 90 | "dependencies": { 91 | "@vue/compiler-core": "3.2.40", 92 | "@vue/shared": "3.2.40" 93 | } 94 | }, 95 | "node_modules/@vue/compiler-sfc": { 96 | "version": "3.2.40", 97 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.40.tgz", 98 | "integrity": "sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==", 99 | "dependencies": { 100 | "@babel/parser": "^7.16.4", 101 | "@vue/compiler-core": "3.2.40", 102 | "@vue/compiler-dom": "3.2.40", 103 | "@vue/compiler-ssr": "3.2.40", 104 | "@vue/reactivity-transform": "3.2.40", 105 | "@vue/shared": "3.2.40", 106 | "estree-walker": "^2.0.2", 107 | "magic-string": "^0.25.7", 108 | "postcss": "^8.1.10", 109 | "source-map": "^0.6.1" 110 | } 111 | }, 112 | "node_modules/@vue/compiler-ssr": { 113 | "version": "3.2.40", 114 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.40.tgz", 115 | "integrity": "sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==", 116 | "dependencies": { 117 | "@vue/compiler-dom": "3.2.40", 118 | "@vue/shared": "3.2.40" 119 | } 120 | }, 121 | "node_modules/@vue/devtools-api": { 122 | "version": "6.4.4", 123 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.4.tgz", 124 | "integrity": "sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==" 125 | }, 126 | "node_modules/@vue/reactivity": { 127 | "version": "3.2.40", 128 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.40.tgz", 129 | "integrity": "sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==", 130 | "dependencies": { 131 | "@vue/shared": "3.2.40" 132 | } 133 | }, 134 | "node_modules/@vue/reactivity-transform": { 135 | "version": "3.2.40", 136 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.40.tgz", 137 | "integrity": "sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==", 138 | "dependencies": { 139 | "@babel/parser": "^7.16.4", 140 | "@vue/compiler-core": "3.2.40", 141 | "@vue/shared": "3.2.40", 142 | "estree-walker": "^2.0.2", 143 | "magic-string": "^0.25.7" 144 | } 145 | }, 146 | "node_modules/@vue/runtime-core": { 147 | "version": "3.2.40", 148 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.40.tgz", 149 | "integrity": "sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==", 150 | "dependencies": { 151 | "@vue/reactivity": "3.2.40", 152 | "@vue/shared": "3.2.40" 153 | } 154 | }, 155 | "node_modules/@vue/runtime-dom": { 156 | "version": "3.2.40", 157 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.40.tgz", 158 | "integrity": "sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==", 159 | "dependencies": { 160 | "@vue/runtime-core": "3.2.40", 161 | "@vue/shared": "3.2.40", 162 | "csstype": "^2.6.8" 163 | } 164 | }, 165 | "node_modules/@vue/server-renderer": { 166 | "version": "3.2.40", 167 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.40.tgz", 168 | "integrity": "sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==", 169 | "dependencies": { 170 | "@vue/compiler-ssr": "3.2.40", 171 | "@vue/shared": "3.2.40" 172 | }, 173 | "peerDependencies": { 174 | "vue": "3.2.40" 175 | } 176 | }, 177 | "node_modules/@vue/shared": { 178 | "version": "3.2.40", 179 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.40.tgz", 180 | "integrity": "sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==" 181 | }, 182 | "node_modules/csstype": { 183 | "version": "2.6.21", 184 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", 185 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" 186 | }, 187 | "node_modules/esbuild": { 188 | "version": "0.15.10", 189 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.10.tgz", 190 | "integrity": "sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==", 191 | "dev": true, 192 | "hasInstallScript": true, 193 | "bin": { 194 | "esbuild": "bin/esbuild" 195 | }, 196 | "engines": { 197 | "node": ">=12" 198 | }, 199 | "optionalDependencies": { 200 | "@esbuild/android-arm": "0.15.10", 201 | "@esbuild/linux-loong64": "0.15.10", 202 | "esbuild-android-64": "0.15.10", 203 | "esbuild-android-arm64": "0.15.10", 204 | "esbuild-darwin-64": "0.15.10", 205 | "esbuild-darwin-arm64": "0.15.10", 206 | "esbuild-freebsd-64": "0.15.10", 207 | "esbuild-freebsd-arm64": "0.15.10", 208 | "esbuild-linux-32": "0.15.10", 209 | "esbuild-linux-64": "0.15.10", 210 | "esbuild-linux-arm": "0.15.10", 211 | "esbuild-linux-arm64": "0.15.10", 212 | "esbuild-linux-mips64le": "0.15.10", 213 | "esbuild-linux-ppc64le": "0.15.10", 214 | "esbuild-linux-riscv64": "0.15.10", 215 | "esbuild-linux-s390x": "0.15.10", 216 | "esbuild-netbsd-64": "0.15.10", 217 | "esbuild-openbsd-64": "0.15.10", 218 | "esbuild-sunos-64": "0.15.10", 219 | "esbuild-windows-32": "0.15.10", 220 | "esbuild-windows-64": "0.15.10", 221 | "esbuild-windows-arm64": "0.15.10" 222 | } 223 | }, 224 | "node_modules/esbuild-android-64": { 225 | "version": "0.15.10", 226 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz", 227 | "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==", 228 | "cpu": [ 229 | "x64" 230 | ], 231 | "dev": true, 232 | "optional": true, 233 | "os": [ 234 | "android" 235 | ], 236 | "engines": { 237 | "node": ">=12" 238 | } 239 | }, 240 | "node_modules/esbuild-android-arm64": { 241 | "version": "0.15.10", 242 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz", 243 | "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==", 244 | "cpu": [ 245 | "arm64" 246 | ], 247 | "dev": true, 248 | "optional": true, 249 | "os": [ 250 | "android" 251 | ], 252 | "engines": { 253 | "node": ">=12" 254 | } 255 | }, 256 | "node_modules/esbuild-darwin-64": { 257 | "version": "0.15.10", 258 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz", 259 | "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==", 260 | "cpu": [ 261 | "x64" 262 | ], 263 | "dev": true, 264 | "optional": true, 265 | "os": [ 266 | "darwin" 267 | ], 268 | "engines": { 269 | "node": ">=12" 270 | } 271 | }, 272 | "node_modules/esbuild-darwin-arm64": { 273 | "version": "0.15.10", 274 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz", 275 | "integrity": "sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==", 276 | "cpu": [ 277 | "arm64" 278 | ], 279 | "dev": true, 280 | "optional": true, 281 | "os": [ 282 | "darwin" 283 | ], 284 | "engines": { 285 | "node": ">=12" 286 | } 287 | }, 288 | "node_modules/esbuild-freebsd-64": { 289 | "version": "0.15.10", 290 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz", 291 | "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==", 292 | "cpu": [ 293 | "x64" 294 | ], 295 | "dev": true, 296 | "optional": true, 297 | "os": [ 298 | "freebsd" 299 | ], 300 | "engines": { 301 | "node": ">=12" 302 | } 303 | }, 304 | "node_modules/esbuild-freebsd-arm64": { 305 | "version": "0.15.10", 306 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz", 307 | "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==", 308 | "cpu": [ 309 | "arm64" 310 | ], 311 | "dev": true, 312 | "optional": true, 313 | "os": [ 314 | "freebsd" 315 | ], 316 | "engines": { 317 | "node": ">=12" 318 | } 319 | }, 320 | "node_modules/esbuild-linux-32": { 321 | "version": "0.15.10", 322 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz", 323 | "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==", 324 | "cpu": [ 325 | "ia32" 326 | ], 327 | "dev": true, 328 | "optional": true, 329 | "os": [ 330 | "linux" 331 | ], 332 | "engines": { 333 | "node": ">=12" 334 | } 335 | }, 336 | "node_modules/esbuild-linux-64": { 337 | "version": "0.15.10", 338 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz", 339 | "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==", 340 | "cpu": [ 341 | "x64" 342 | ], 343 | "dev": true, 344 | "optional": true, 345 | "os": [ 346 | "linux" 347 | ], 348 | "engines": { 349 | "node": ">=12" 350 | } 351 | }, 352 | "node_modules/esbuild-linux-arm": { 353 | "version": "0.15.10", 354 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz", 355 | "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==", 356 | "cpu": [ 357 | "arm" 358 | ], 359 | "dev": true, 360 | "optional": true, 361 | "os": [ 362 | "linux" 363 | ], 364 | "engines": { 365 | "node": ">=12" 366 | } 367 | }, 368 | "node_modules/esbuild-linux-arm64": { 369 | "version": "0.15.10", 370 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz", 371 | "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==", 372 | "cpu": [ 373 | "arm64" 374 | ], 375 | "dev": true, 376 | "optional": true, 377 | "os": [ 378 | "linux" 379 | ], 380 | "engines": { 381 | "node": ">=12" 382 | } 383 | }, 384 | "node_modules/esbuild-linux-mips64le": { 385 | "version": "0.15.10", 386 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz", 387 | "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==", 388 | "cpu": [ 389 | "mips64el" 390 | ], 391 | "dev": true, 392 | "optional": true, 393 | "os": [ 394 | "linux" 395 | ], 396 | "engines": { 397 | "node": ">=12" 398 | } 399 | }, 400 | "node_modules/esbuild-linux-ppc64le": { 401 | "version": "0.15.10", 402 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz", 403 | "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==", 404 | "cpu": [ 405 | "ppc64" 406 | ], 407 | "dev": true, 408 | "optional": true, 409 | "os": [ 410 | "linux" 411 | ], 412 | "engines": { 413 | "node": ">=12" 414 | } 415 | }, 416 | "node_modules/esbuild-linux-riscv64": { 417 | "version": "0.15.10", 418 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz", 419 | "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==", 420 | "cpu": [ 421 | "riscv64" 422 | ], 423 | "dev": true, 424 | "optional": true, 425 | "os": [ 426 | "linux" 427 | ], 428 | "engines": { 429 | "node": ">=12" 430 | } 431 | }, 432 | "node_modules/esbuild-linux-s390x": { 433 | "version": "0.15.10", 434 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz", 435 | "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==", 436 | "cpu": [ 437 | "s390x" 438 | ], 439 | "dev": true, 440 | "optional": true, 441 | "os": [ 442 | "linux" 443 | ], 444 | "engines": { 445 | "node": ">=12" 446 | } 447 | }, 448 | "node_modules/esbuild-netbsd-64": { 449 | "version": "0.15.10", 450 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz", 451 | "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==", 452 | "cpu": [ 453 | "x64" 454 | ], 455 | "dev": true, 456 | "optional": true, 457 | "os": [ 458 | "netbsd" 459 | ], 460 | "engines": { 461 | "node": ">=12" 462 | } 463 | }, 464 | "node_modules/esbuild-openbsd-64": { 465 | "version": "0.15.10", 466 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz", 467 | "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==", 468 | "cpu": [ 469 | "x64" 470 | ], 471 | "dev": true, 472 | "optional": true, 473 | "os": [ 474 | "openbsd" 475 | ], 476 | "engines": { 477 | "node": ">=12" 478 | } 479 | }, 480 | "node_modules/esbuild-sunos-64": { 481 | "version": "0.15.10", 482 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz", 483 | "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==", 484 | "cpu": [ 485 | "x64" 486 | ], 487 | "dev": true, 488 | "optional": true, 489 | "os": [ 490 | "sunos" 491 | ], 492 | "engines": { 493 | "node": ">=12" 494 | } 495 | }, 496 | "node_modules/esbuild-windows-32": { 497 | "version": "0.15.10", 498 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz", 499 | "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==", 500 | "cpu": [ 501 | "ia32" 502 | ], 503 | "dev": true, 504 | "optional": true, 505 | "os": [ 506 | "win32" 507 | ], 508 | "engines": { 509 | "node": ">=12" 510 | } 511 | }, 512 | "node_modules/esbuild-windows-64": { 513 | "version": "0.15.10", 514 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz", 515 | "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==", 516 | "cpu": [ 517 | "x64" 518 | ], 519 | "dev": true, 520 | "optional": true, 521 | "os": [ 522 | "win32" 523 | ], 524 | "engines": { 525 | "node": ">=12" 526 | } 527 | }, 528 | "node_modules/esbuild-windows-arm64": { 529 | "version": "0.15.10", 530 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz", 531 | "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==", 532 | "cpu": [ 533 | "arm64" 534 | ], 535 | "dev": true, 536 | "optional": true, 537 | "os": [ 538 | "win32" 539 | ], 540 | "engines": { 541 | "node": ">=12" 542 | } 543 | }, 544 | "node_modules/estree-walker": { 545 | "version": "2.0.2", 546 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 547 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 548 | }, 549 | "node_modules/fsevents": { 550 | "version": "2.3.2", 551 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 552 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 553 | "dev": true, 554 | "hasInstallScript": true, 555 | "optional": true, 556 | "os": [ 557 | "darwin" 558 | ], 559 | "engines": { 560 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 561 | } 562 | }, 563 | "node_modules/function-bind": { 564 | "version": "1.1.1", 565 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 566 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 567 | "dev": true 568 | }, 569 | "node_modules/has": { 570 | "version": "1.0.3", 571 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 572 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 573 | "dev": true, 574 | "dependencies": { 575 | "function-bind": "^1.1.1" 576 | }, 577 | "engines": { 578 | "node": ">= 0.4.0" 579 | } 580 | }, 581 | "node_modules/is-core-module": { 582 | "version": "2.10.0", 583 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", 584 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", 585 | "dev": true, 586 | "dependencies": { 587 | "has": "^1.0.3" 588 | }, 589 | "funding": { 590 | "url": "https://github.com/sponsors/ljharb" 591 | } 592 | }, 593 | "node_modules/magic-string": { 594 | "version": "0.25.9", 595 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 596 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 597 | "dependencies": { 598 | "sourcemap-codec": "^1.4.8" 599 | } 600 | }, 601 | "node_modules/nanoid": { 602 | "version": "3.3.4", 603 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 604 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 605 | "bin": { 606 | "nanoid": "bin/nanoid.cjs" 607 | }, 608 | "engines": { 609 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 610 | } 611 | }, 612 | "node_modules/path-parse": { 613 | "version": "1.0.7", 614 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 615 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 616 | "dev": true 617 | }, 618 | "node_modules/picocolors": { 619 | "version": "1.0.0", 620 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 621 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 622 | }, 623 | "node_modules/postcss": { 624 | "version": "8.4.17", 625 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", 626 | "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", 627 | "funding": [ 628 | { 629 | "type": "opencollective", 630 | "url": "https://opencollective.com/postcss/" 631 | }, 632 | { 633 | "type": "tidelift", 634 | "url": "https://tidelift.com/funding/github/npm/postcss" 635 | } 636 | ], 637 | "dependencies": { 638 | "nanoid": "^3.3.4", 639 | "picocolors": "^1.0.0", 640 | "source-map-js": "^1.0.2" 641 | }, 642 | "engines": { 643 | "node": "^10 || ^12 || >=14" 644 | } 645 | }, 646 | "node_modules/resolve": { 647 | "version": "1.22.1", 648 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 649 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 650 | "dev": true, 651 | "dependencies": { 652 | "is-core-module": "^2.9.0", 653 | "path-parse": "^1.0.7", 654 | "supports-preserve-symlinks-flag": "^1.0.0" 655 | }, 656 | "bin": { 657 | "resolve": "bin/resolve" 658 | }, 659 | "funding": { 660 | "url": "https://github.com/sponsors/ljharb" 661 | } 662 | }, 663 | "node_modules/rollup": { 664 | "version": "2.78.1", 665 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", 666 | "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", 667 | "dev": true, 668 | "bin": { 669 | "rollup": "dist/bin/rollup" 670 | }, 671 | "engines": { 672 | "node": ">=10.0.0" 673 | }, 674 | "optionalDependencies": { 675 | "fsevents": "~2.3.2" 676 | } 677 | }, 678 | "node_modules/source-map": { 679 | "version": "0.6.1", 680 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 681 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 682 | "engines": { 683 | "node": ">=0.10.0" 684 | } 685 | }, 686 | "node_modules/source-map-js": { 687 | "version": "1.0.2", 688 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 689 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 690 | "engines": { 691 | "node": ">=0.10.0" 692 | } 693 | }, 694 | "node_modules/sourcemap-codec": { 695 | "version": "1.4.8", 696 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 697 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 698 | }, 699 | "node_modules/supports-preserve-symlinks-flag": { 700 | "version": "1.0.0", 701 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 702 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 703 | "dev": true, 704 | "engines": { 705 | "node": ">= 0.4" 706 | }, 707 | "funding": { 708 | "url": "https://github.com/sponsors/ljharb" 709 | } 710 | }, 711 | "node_modules/vite": { 712 | "version": "3.1.7", 713 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.7.tgz", 714 | "integrity": "sha512-5vCAmU4S8lyVdFCInu9M54f/g8qbOMakVw5xJ4pjoaDy5wgy9sLLZkGdSLN52dlsBqh0tBqxjaqqa8LgPqwRAA==", 715 | "dev": true, 716 | "dependencies": { 717 | "esbuild": "^0.15.9", 718 | "postcss": "^8.4.16", 719 | "resolve": "^1.22.1", 720 | "rollup": "~2.78.0" 721 | }, 722 | "bin": { 723 | "vite": "bin/vite.js" 724 | }, 725 | "engines": { 726 | "node": "^14.18.0 || >=16.0.0" 727 | }, 728 | "optionalDependencies": { 729 | "fsevents": "~2.3.2" 730 | }, 731 | "peerDependencies": { 732 | "less": "*", 733 | "sass": "*", 734 | "stylus": "*", 735 | "terser": "^5.4.0" 736 | }, 737 | "peerDependenciesMeta": { 738 | "less": { 739 | "optional": true 740 | }, 741 | "sass": { 742 | "optional": true 743 | }, 744 | "stylus": { 745 | "optional": true 746 | }, 747 | "terser": { 748 | "optional": true 749 | } 750 | } 751 | }, 752 | "node_modules/vue": { 753 | "version": "3.2.40", 754 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.40.tgz", 755 | "integrity": "sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==", 756 | "dependencies": { 757 | "@vue/compiler-dom": "3.2.40", 758 | "@vue/compiler-sfc": "3.2.40", 759 | "@vue/runtime-dom": "3.2.40", 760 | "@vue/server-renderer": "3.2.40", 761 | "@vue/shared": "3.2.40" 762 | } 763 | }, 764 | "node_modules/vue-router": { 765 | "version": "4.1.5", 766 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.5.tgz", 767 | "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==", 768 | "dependencies": { 769 | "@vue/devtools-api": "^6.1.4" 770 | }, 771 | "funding": { 772 | "url": "https://github.com/sponsors/posva" 773 | }, 774 | "peerDependencies": { 775 | "vue": "^3.2.0" 776 | } 777 | } 778 | }, 779 | "dependencies": { 780 | "@babel/parser": { 781 | "version": "7.19.4", 782 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", 783 | "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" 784 | }, 785 | "@esbuild/android-arm": { 786 | "version": "0.15.10", 787 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz", 788 | "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==", 789 | "dev": true, 790 | "optional": true 791 | }, 792 | "@esbuild/linux-loong64": { 793 | "version": "0.15.10", 794 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz", 795 | "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==", 796 | "dev": true, 797 | "optional": true 798 | }, 799 | "@vitejs/plugin-vue": { 800 | "version": "3.1.2", 801 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.1.2.tgz", 802 | "integrity": "sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==", 803 | "dev": true, 804 | "requires": {} 805 | }, 806 | "@vue/compiler-core": { 807 | "version": "3.2.40", 808 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.40.tgz", 809 | "integrity": "sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==", 810 | "requires": { 811 | "@babel/parser": "^7.16.4", 812 | "@vue/shared": "3.2.40", 813 | "estree-walker": "^2.0.2", 814 | "source-map": "^0.6.1" 815 | } 816 | }, 817 | "@vue/compiler-dom": { 818 | "version": "3.2.40", 819 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.40.tgz", 820 | "integrity": "sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==", 821 | "requires": { 822 | "@vue/compiler-core": "3.2.40", 823 | "@vue/shared": "3.2.40" 824 | } 825 | }, 826 | "@vue/compiler-sfc": { 827 | "version": "3.2.40", 828 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.40.tgz", 829 | "integrity": "sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==", 830 | "requires": { 831 | "@babel/parser": "^7.16.4", 832 | "@vue/compiler-core": "3.2.40", 833 | "@vue/compiler-dom": "3.2.40", 834 | "@vue/compiler-ssr": "3.2.40", 835 | "@vue/reactivity-transform": "3.2.40", 836 | "@vue/shared": "3.2.40", 837 | "estree-walker": "^2.0.2", 838 | "magic-string": "^0.25.7", 839 | "postcss": "^8.1.10", 840 | "source-map": "^0.6.1" 841 | } 842 | }, 843 | "@vue/compiler-ssr": { 844 | "version": "3.2.40", 845 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.40.tgz", 846 | "integrity": "sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==", 847 | "requires": { 848 | "@vue/compiler-dom": "3.2.40", 849 | "@vue/shared": "3.2.40" 850 | } 851 | }, 852 | "@vue/devtools-api": { 853 | "version": "6.4.4", 854 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.4.tgz", 855 | "integrity": "sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==" 856 | }, 857 | "@vue/reactivity": { 858 | "version": "3.2.40", 859 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.40.tgz", 860 | "integrity": "sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==", 861 | "requires": { 862 | "@vue/shared": "3.2.40" 863 | } 864 | }, 865 | "@vue/reactivity-transform": { 866 | "version": "3.2.40", 867 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.40.tgz", 868 | "integrity": "sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==", 869 | "requires": { 870 | "@babel/parser": "^7.16.4", 871 | "@vue/compiler-core": "3.2.40", 872 | "@vue/shared": "3.2.40", 873 | "estree-walker": "^2.0.2", 874 | "magic-string": "^0.25.7" 875 | } 876 | }, 877 | "@vue/runtime-core": { 878 | "version": "3.2.40", 879 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.40.tgz", 880 | "integrity": "sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==", 881 | "requires": { 882 | "@vue/reactivity": "3.2.40", 883 | "@vue/shared": "3.2.40" 884 | } 885 | }, 886 | "@vue/runtime-dom": { 887 | "version": "3.2.40", 888 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.40.tgz", 889 | "integrity": "sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==", 890 | "requires": { 891 | "@vue/runtime-core": "3.2.40", 892 | "@vue/shared": "3.2.40", 893 | "csstype": "^2.6.8" 894 | } 895 | }, 896 | "@vue/server-renderer": { 897 | "version": "3.2.40", 898 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.40.tgz", 899 | "integrity": "sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==", 900 | "requires": { 901 | "@vue/compiler-ssr": "3.2.40", 902 | "@vue/shared": "3.2.40" 903 | } 904 | }, 905 | "@vue/shared": { 906 | "version": "3.2.40", 907 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.40.tgz", 908 | "integrity": "sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==" 909 | }, 910 | "csstype": { 911 | "version": "2.6.21", 912 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", 913 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" 914 | }, 915 | "esbuild": { 916 | "version": "0.15.10", 917 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.10.tgz", 918 | "integrity": "sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==", 919 | "dev": true, 920 | "requires": { 921 | "@esbuild/android-arm": "0.15.10", 922 | "@esbuild/linux-loong64": "0.15.10", 923 | "esbuild-android-64": "0.15.10", 924 | "esbuild-android-arm64": "0.15.10", 925 | "esbuild-darwin-64": "0.15.10", 926 | "esbuild-darwin-arm64": "0.15.10", 927 | "esbuild-freebsd-64": "0.15.10", 928 | "esbuild-freebsd-arm64": "0.15.10", 929 | "esbuild-linux-32": "0.15.10", 930 | "esbuild-linux-64": "0.15.10", 931 | "esbuild-linux-arm": "0.15.10", 932 | "esbuild-linux-arm64": "0.15.10", 933 | "esbuild-linux-mips64le": "0.15.10", 934 | "esbuild-linux-ppc64le": "0.15.10", 935 | "esbuild-linux-riscv64": "0.15.10", 936 | "esbuild-linux-s390x": "0.15.10", 937 | "esbuild-netbsd-64": "0.15.10", 938 | "esbuild-openbsd-64": "0.15.10", 939 | "esbuild-sunos-64": "0.15.10", 940 | "esbuild-windows-32": "0.15.10", 941 | "esbuild-windows-64": "0.15.10", 942 | "esbuild-windows-arm64": "0.15.10" 943 | } 944 | }, 945 | "esbuild-android-64": { 946 | "version": "0.15.10", 947 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz", 948 | "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==", 949 | "dev": true, 950 | "optional": true 951 | }, 952 | "esbuild-android-arm64": { 953 | "version": "0.15.10", 954 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz", 955 | "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==", 956 | "dev": true, 957 | "optional": true 958 | }, 959 | "esbuild-darwin-64": { 960 | "version": "0.15.10", 961 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz", 962 | "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==", 963 | "dev": true, 964 | "optional": true 965 | }, 966 | "esbuild-darwin-arm64": { 967 | "version": "0.15.10", 968 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz", 969 | "integrity": "sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==", 970 | "dev": true, 971 | "optional": true 972 | }, 973 | "esbuild-freebsd-64": { 974 | "version": "0.15.10", 975 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz", 976 | "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==", 977 | "dev": true, 978 | "optional": true 979 | }, 980 | "esbuild-freebsd-arm64": { 981 | "version": "0.15.10", 982 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz", 983 | "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==", 984 | "dev": true, 985 | "optional": true 986 | }, 987 | "esbuild-linux-32": { 988 | "version": "0.15.10", 989 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz", 990 | "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==", 991 | "dev": true, 992 | "optional": true 993 | }, 994 | "esbuild-linux-64": { 995 | "version": "0.15.10", 996 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz", 997 | "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==", 998 | "dev": true, 999 | "optional": true 1000 | }, 1001 | "esbuild-linux-arm": { 1002 | "version": "0.15.10", 1003 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz", 1004 | "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==", 1005 | "dev": true, 1006 | "optional": true 1007 | }, 1008 | "esbuild-linux-arm64": { 1009 | "version": "0.15.10", 1010 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz", 1011 | "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==", 1012 | "dev": true, 1013 | "optional": true 1014 | }, 1015 | "esbuild-linux-mips64le": { 1016 | "version": "0.15.10", 1017 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz", 1018 | "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==", 1019 | "dev": true, 1020 | "optional": true 1021 | }, 1022 | "esbuild-linux-ppc64le": { 1023 | "version": "0.15.10", 1024 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz", 1025 | "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==", 1026 | "dev": true, 1027 | "optional": true 1028 | }, 1029 | "esbuild-linux-riscv64": { 1030 | "version": "0.15.10", 1031 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz", 1032 | "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==", 1033 | "dev": true, 1034 | "optional": true 1035 | }, 1036 | "esbuild-linux-s390x": { 1037 | "version": "0.15.10", 1038 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz", 1039 | "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==", 1040 | "dev": true, 1041 | "optional": true 1042 | }, 1043 | "esbuild-netbsd-64": { 1044 | "version": "0.15.10", 1045 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz", 1046 | "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==", 1047 | "dev": true, 1048 | "optional": true 1049 | }, 1050 | "esbuild-openbsd-64": { 1051 | "version": "0.15.10", 1052 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz", 1053 | "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==", 1054 | "dev": true, 1055 | "optional": true 1056 | }, 1057 | "esbuild-sunos-64": { 1058 | "version": "0.15.10", 1059 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz", 1060 | "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==", 1061 | "dev": true, 1062 | "optional": true 1063 | }, 1064 | "esbuild-windows-32": { 1065 | "version": "0.15.10", 1066 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz", 1067 | "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==", 1068 | "dev": true, 1069 | "optional": true 1070 | }, 1071 | "esbuild-windows-64": { 1072 | "version": "0.15.10", 1073 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz", 1074 | "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==", 1075 | "dev": true, 1076 | "optional": true 1077 | }, 1078 | "esbuild-windows-arm64": { 1079 | "version": "0.15.10", 1080 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz", 1081 | "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==", 1082 | "dev": true, 1083 | "optional": true 1084 | }, 1085 | "estree-walker": { 1086 | "version": "2.0.2", 1087 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1088 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1089 | }, 1090 | "fsevents": { 1091 | "version": "2.3.2", 1092 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1093 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1094 | "dev": true, 1095 | "optional": true 1096 | }, 1097 | "function-bind": { 1098 | "version": "1.1.1", 1099 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1100 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1101 | "dev": true 1102 | }, 1103 | "has": { 1104 | "version": "1.0.3", 1105 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1106 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1107 | "dev": true, 1108 | "requires": { 1109 | "function-bind": "^1.1.1" 1110 | } 1111 | }, 1112 | "is-core-module": { 1113 | "version": "2.10.0", 1114 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", 1115 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", 1116 | "dev": true, 1117 | "requires": { 1118 | "has": "^1.0.3" 1119 | } 1120 | }, 1121 | "magic-string": { 1122 | "version": "0.25.9", 1123 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 1124 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1125 | "requires": { 1126 | "sourcemap-codec": "^1.4.8" 1127 | } 1128 | }, 1129 | "nanoid": { 1130 | "version": "3.3.4", 1131 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1132 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 1133 | }, 1134 | "path-parse": { 1135 | "version": "1.0.7", 1136 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1137 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1138 | "dev": true 1139 | }, 1140 | "picocolors": { 1141 | "version": "1.0.0", 1142 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1143 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1144 | }, 1145 | "postcss": { 1146 | "version": "8.4.17", 1147 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", 1148 | "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", 1149 | "requires": { 1150 | "nanoid": "^3.3.4", 1151 | "picocolors": "^1.0.0", 1152 | "source-map-js": "^1.0.2" 1153 | } 1154 | }, 1155 | "resolve": { 1156 | "version": "1.22.1", 1157 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1158 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1159 | "dev": true, 1160 | "requires": { 1161 | "is-core-module": "^2.9.0", 1162 | "path-parse": "^1.0.7", 1163 | "supports-preserve-symlinks-flag": "^1.0.0" 1164 | } 1165 | }, 1166 | "rollup": { 1167 | "version": "2.78.1", 1168 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", 1169 | "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", 1170 | "dev": true, 1171 | "requires": { 1172 | "fsevents": "~2.3.2" 1173 | } 1174 | }, 1175 | "source-map": { 1176 | "version": "0.6.1", 1177 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1178 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1179 | }, 1180 | "source-map-js": { 1181 | "version": "1.0.2", 1182 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1183 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1184 | }, 1185 | "sourcemap-codec": { 1186 | "version": "1.4.8", 1187 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1188 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 1189 | }, 1190 | "supports-preserve-symlinks-flag": { 1191 | "version": "1.0.0", 1192 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1193 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1194 | "dev": true 1195 | }, 1196 | "vite": { 1197 | "version": "3.1.7", 1198 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.7.tgz", 1199 | "integrity": "sha512-5vCAmU4S8lyVdFCInu9M54f/g8qbOMakVw5xJ4pjoaDy5wgy9sLLZkGdSLN52dlsBqh0tBqxjaqqa8LgPqwRAA==", 1200 | "dev": true, 1201 | "requires": { 1202 | "esbuild": "^0.15.9", 1203 | "fsevents": "~2.3.2", 1204 | "postcss": "^8.4.16", 1205 | "resolve": "^1.22.1", 1206 | "rollup": "~2.78.0" 1207 | } 1208 | }, 1209 | "vue": { 1210 | "version": "3.2.40", 1211 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.40.tgz", 1212 | "integrity": "sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==", 1213 | "requires": { 1214 | "@vue/compiler-dom": "3.2.40", 1215 | "@vue/compiler-sfc": "3.2.40", 1216 | "@vue/runtime-dom": "3.2.40", 1217 | "@vue/server-renderer": "3.2.40", 1218 | "@vue/shared": "3.2.40" 1219 | } 1220 | }, 1221 | "vue-router": { 1222 | "version": "4.1.5", 1223 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.5.tgz", 1224 | "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==", 1225 | "requires": { 1226 | "@vue/devtools-api": "^6.1.4" 1227 | } 1228 | } 1229 | } 1230 | } 1231 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rouuter", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build", 7 | "preview": "vite preview --port 4173" 8 | }, 9 | "dependencies": { 10 | "vue": "^3.2.38", 11 | "vue-router": "^4.1.5" 12 | }, 13 | "devDependencies": { 14 | "@vitejs/plugin-vue": "^3.0.3", 15 | "vite": "^3.0.9" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harblaith7/Vue-Router-Crash-Course/02d4e3ec25c095f42182eef079220d4bc8f31e32/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/base.css: -------------------------------------------------------------------------------- 1 | /* color palette from */ 2 | :root { 3 | --vt-c-white: #ffffff; 4 | --vt-c-white-soft: #f8f8f8; 5 | --vt-c-white-mute: #f2f2f2; 6 | 7 | --vt-c-black: #181818; 8 | --vt-c-black-soft: #222222; 9 | --vt-c-black-mute: #282828; 10 | 11 | --vt-c-indigo: #2c3e50; 12 | 13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); 14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); 15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); 16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); 17 | 18 | --vt-c-text-light-1: var(--vt-c-indigo); 19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66); 20 | --vt-c-text-dark-1: var(--vt-c-white); 21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); 22 | } 23 | 24 | /* semantic color variables for this project */ 25 | :root { 26 | --color-background: var(--vt-c-white); 27 | --color-background-soft: var(--vt-c-white-soft); 28 | --color-background-mute: var(--vt-c-white-mute); 29 | 30 | --color-border: var(--vt-c-divider-light-2); 31 | --color-border-hover: var(--vt-c-divider-light-1); 32 | 33 | --color-heading: var(--vt-c-text-light-1); 34 | --color-text: var(--vt-c-text-light-1); 35 | 36 | --section-gap: 160px; 37 | } 38 | 39 | @media (prefers-color-scheme: dark) { 40 | :root { 41 | --color-background: var(--vt-c-black); 42 | --color-background-soft: var(--vt-c-black-soft); 43 | --color-background-mute: var(--vt-c-black-mute); 44 | 45 | --color-border: var(--vt-c-divider-dark-2); 46 | --color-border-hover: var(--vt-c-divider-dark-1); 47 | 48 | --color-heading: var(--vt-c-text-dark-1); 49 | --color-text: var(--vt-c-text-dark-2); 50 | } 51 | } 52 | 53 | *, 54 | *::before, 55 | *::after { 56 | box-sizing: border-box; 57 | margin: 0; 58 | position: relative; 59 | font-weight: normal; 60 | } 61 | 62 | body { 63 | min-height: 100vh; 64 | color: var(--color-text); 65 | background: var(--color-background); 66 | transition: color 0.5s, background-color 0.5s; 67 | line-height: 1.6; 68 | font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, 69 | Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; 70 | font-size: 15px; 71 | text-rendering: optimizeLegibility; 72 | -webkit-font-smoothing: antialiased; 73 | -moz-osx-font-smoothing: grayscale; 74 | } 75 | -------------------------------------------------------------------------------- /src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/main.css: -------------------------------------------------------------------------------- 1 | @import "./base.css"; 2 | 3 | .container { 4 | height: 100vh; 5 | display: flex; 6 | align-items: center; 7 | justify-content: center; 8 | flex-direction: column; 9 | max-width: 800px; 10 | margin: 0 auto 11 | } -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | 44 | -------------------------------------------------------------------------------- /src/components/TheWelcome.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 87 | -------------------------------------------------------------------------------- /src/components/WelcomeItem.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 87 | -------------------------------------------------------------------------------- /src/components/icons/IconCommunity.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/components/icons/IconDocumentation.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/components/icons/IconEcosystem.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/components/icons/IconSupport.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/components/icons/IconTooling.vue: -------------------------------------------------------------------------------- 1 | 2 | 20 | -------------------------------------------------------------------------------- /src/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "make": "Chevrolet", 5 | "body": "coupe", 6 | "price": 45323, 7 | "year": 2020 8 | }, 9 | { 10 | "id": 2, 11 | "make": "Buick", 12 | "body": "sedan", 13 | "price": 25422, 14 | "year": 2016 15 | }, 16 | { 17 | "id": 3, 18 | "make": "Porsche", 19 | "body": "SUV", 20 | "price": 77693, 21 | "year": 2018 22 | }, 23 | { 24 | "id": 5, 25 | "make": "Audi", 26 | "body": "SUV", 27 | "price": 12242, 28 | "year": 2011 29 | }, 30 | { 31 | "id": 6, 32 | "make": "Chevrolet", 33 | "body": "coupe", 34 | "price": 145323, 35 | "year": 2023 36 | }, 37 | { 38 | "id": 7, 39 | "make": "Chevrolet", 40 | "body": "SUV", 41 | "price": 434, 42 | "year": 2003 43 | }, 44 | { 45 | "id": 8, 46 | "make": "Porsche", 47 | "body": "Coupe", 48 | "price": 277693, 49 | "year": 2023 50 | }, 51 | { 52 | "id": 9, 53 | "make": "Audi", 54 | "body": "sedan", 55 | "price": 82242, 56 | "year": 2019 57 | }, 58 | { 59 | "id": 10, 60 | "make": "Chevrolet", 61 | "body": "coupe", 62 | "price": 45323, 63 | "year": 2020 64 | } 65 | ] -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | 5 | import './assets/main.css' 6 | 7 | const app = createApp(App) 8 | 9 | app.use(router) 10 | 11 | app.mount('#app') 12 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router' 2 | import HomeView from '../views/HomeView.vue' 3 | 4 | const router = createRouter({ 5 | history: createWebHistory(import.meta.env.BASE_URL), 6 | routes: [ 7 | { 8 | path: '/', 9 | name: 'home', 10 | component: HomeView 11 | }, 12 | { 13 | path: '/home', 14 | redirect: { name: 'home' } 15 | }, 16 | { 17 | path: '/about', 18 | name: 'about', 19 | component: () => import('../views/AboutView.vue') 20 | }, 21 | { 22 | path: '/car/:id', 23 | name: 'car', 24 | component: () => import('../views/CarView.vue'), 25 | children: [ 26 | { 27 | path: 'dealer', 28 | component: () => import('../views/DealerView.vue') 29 | }, 30 | { 31 | path: 'manufactorer', 32 | component: () => import('../views/ManufactorerView.vue') 33 | } 34 | ] 35 | }, 36 | { 37 | path: '/:pathMatch(.*)*', 38 | name: 'NotFound', 39 | component: () => import('../views/NotFoundView.vue') 40 | }, 41 | ] 42 | }) 43 | 44 | export default router 45 | -------------------------------------------------------------------------------- /src/views/AboutView.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /src/views/CarView.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | -------------------------------------------------------------------------------- /src/views/DealerView.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/views/HomeView.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 64 | 65 | 66 | 93 | -------------------------------------------------------------------------------- /src/views/ManufactorerView.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/views/NotFoundView.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /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: [vue()], 9 | resolve: { 10 | alias: { 11 | '@': fileURLToPath(new URL('./src', import.meta.url)) 12 | } 13 | } 14 | }) 15 | --------------------------------------------------------------------------------