From 338fab7bf5856e906190777759c70696a1fe5a7a Mon Sep 17 00:00:00 2001 From: Fromsko <1614355756@qq.com> Date: Fri, 20 Sep 2024 17:18:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E6=B7=BB=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components_vue3/.gitignore | 30 + components_vue3/.vscode/extensions.json | 3 + components_vue3/README.md | 33 + components_vue3/env.d.ts | 1 + components_vue3/index.html | 13 + components_vue3/package.json | 27 + components_vue3/pnpm-lock.yaml | 860 ++++++++++++++++++ components_vue3/public/favicon.ico | Bin 0 -> 4286 bytes components_vue3/src/App.vue | 85 ++ components_vue3/src/assets/base.css | 86 ++ components_vue3/src/assets/logo.svg | 1 + components_vue3/src/assets/main.css | 35 + components_vue3/src/components/HelloWorld.vue | 41 + components_vue3/src/components/TheWelcome.vue | 88 ++ .../src/components/WelcomeItem.vue | 87 ++ .../src/components/icons/IconCommunity.vue | 7 + .../components/icons/IconDocumentation.vue | 7 + .../src/components/icons/IconEcosystem.vue | 7 + .../src/components/icons/IconSupport.vue | 7 + .../src/components/icons/IconTooling.vue | 19 + components_vue3/src/main.ts | 11 + components_vue3/src/router/index.ts | 23 + components_vue3/src/views/AboutView.vue | 15 + components_vue3/src/views/HomeView.vue | 9 + components_vue3/tsconfig.app.json | 14 + components_vue3/tsconfig.json | 11 + components_vue3/tsconfig.node.json | 19 + components_vue3/vite.config.ts | 16 + hello_vue3/bun.lockb | Bin 0 -> 51069 bytes hello_vue3/src/App.vue | 6 +- .../src/components/{Demo.vue => Login.vue} | 15 +- 31 files changed, 1571 insertions(+), 5 deletions(-) create mode 100644 components_vue3/.gitignore create mode 100644 components_vue3/.vscode/extensions.json create mode 100644 components_vue3/README.md create mode 100644 components_vue3/env.d.ts create mode 100644 components_vue3/index.html create mode 100644 components_vue3/package.json create mode 100644 components_vue3/pnpm-lock.yaml create mode 100644 components_vue3/public/favicon.ico create mode 100644 components_vue3/src/App.vue create mode 100644 components_vue3/src/assets/base.css create mode 100644 components_vue3/src/assets/logo.svg create mode 100644 components_vue3/src/assets/main.css create mode 100644 components_vue3/src/components/HelloWorld.vue create mode 100644 components_vue3/src/components/TheWelcome.vue create mode 100644 components_vue3/src/components/WelcomeItem.vue create mode 100644 components_vue3/src/components/icons/IconCommunity.vue create mode 100644 components_vue3/src/components/icons/IconDocumentation.vue create mode 100644 components_vue3/src/components/icons/IconEcosystem.vue create mode 100644 components_vue3/src/components/icons/IconSupport.vue create mode 100644 components_vue3/src/components/icons/IconTooling.vue create mode 100644 components_vue3/src/main.ts create mode 100644 components_vue3/src/router/index.ts create mode 100644 components_vue3/src/views/AboutView.vue create mode 100644 components_vue3/src/views/HomeView.vue create mode 100644 components_vue3/tsconfig.app.json create mode 100644 components_vue3/tsconfig.json create mode 100644 components_vue3/tsconfig.node.json create mode 100644 components_vue3/vite.config.ts create mode 100644 hello_vue3/bun.lockb rename hello_vue3/src/components/{Demo.vue => Login.vue} (93%) diff --git a/components_vue3/.gitignore b/components_vue3/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/components_vue3/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/components_vue3/.vscode/extensions.json b/components_vue3/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/components_vue3/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/components_vue3/README.md b/components_vue3/README.md new file mode 100644 index 0000000..2a43315 --- /dev/null +++ b/components_vue3/README.md @@ -0,0 +1,33 @@ +# components_vue3 + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +bun install +``` + +### Compile and Hot-Reload for Development + +```sh +bun dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +bun build +``` diff --git a/components_vue3/env.d.ts b/components_vue3/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/components_vue3/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/components_vue3/index.html b/components_vue3/index.html new file mode 100644 index 0000000..a888544 --- /dev/null +++ b/components_vue3/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/components_vue3/package.json b/components_vue3/package.json new file mode 100644 index 0000000..e65c3e5 --- /dev/null +++ b/components_vue3/package.json @@ -0,0 +1,27 @@ +{ + "name": "components_vue3", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build --force" + }, + "dependencies": { + "vue": "^3.4.29", + "vue-router": "^4.3.3" + }, + "devDependencies": { + "@tsconfig/node20": "^20.1.4", + "@types/node": "^20.14.5", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/tsconfig": "^0.5.1", + "npm-run-all2": "^6.2.0", + "typescript": "~5.4.0", + "vite": "^5.3.1", + "vue-tsc": "^2.0.21" + } +} diff --git a/components_vue3/pnpm-lock.yaml b/components_vue3/pnpm-lock.yaml new file mode 100644 index 0000000..178fc8b --- /dev/null +++ b/components_vue3/pnpm-lock.yaml @@ -0,0 +1,860 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + vue: + specifier: ^3.4.29 + version: 3.5.6(typescript@5.4.5) + vue-router: + specifier: ^4.3.3 + version: 4.4.5(vue@3.5.6(typescript@5.4.5)) + devDependencies: + '@tsconfig/node20': + specifier: ^20.1.4 + version: 20.1.4 + '@types/node': + specifier: ^20.14.5 + version: 20.16.5 + '@vitejs/plugin-vue': + specifier: ^5.0.5 + version: 5.1.4(vite@5.4.6(@types/node@20.16.5))(vue@3.5.6(typescript@5.4.5)) + '@vue/tsconfig': + specifier: ^0.5.1 + version: 0.5.1 + npm-run-all2: + specifier: ^6.2.0 + version: 6.2.3 + typescript: + specifier: ~5.4.0 + version: 5.4.5 + vite: + specifier: ^5.3.1 + version: 5.4.6(@types/node@20.16.5) + vue-tsc: + specifier: ^2.0.21 + version: 2.1.6(typescript@5.4.5) + +packages: + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@rollup/rollup-darwin-arm64@4.22.1': + resolution: {integrity: sha512-IwEyoeCZoO1lpY5Er5t3UK/Aq5q2W/ubLmu3pYW4as0htn4NbJagBaVNr1aVhRTXUxrYvcPhxQCqodShnocLdA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-linux-x64-gnu@4.22.1': + resolution: {integrity: sha512-ot1DPlQZGGiZYNyE/PF3jbT6juuG0W5oiguHQEvjoZZ3+FSxMfdJnBz1P71QeqICSOlSFG9Z31oA/uXyuxDEVw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.22.1': + resolution: {integrity: sha512-euksHNkKlXS9RKKHSBBPtloSEUGPg1eRVGfOkXSSIj5W9LdkMfOefsTlVf2g8kuayZW/98nIJ83Fnou9OaZNXA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-x64-msvc@4.22.1': + resolution: {integrity: sha512-UgdylcqjcgJSNMhrjMJpJ4T3zriTmiUd2COh1mJHwDShrhhMkpZ/j4M5e4GsvBFviaxtrJtufr0FnKfm2UfOSw==} + cpu: [x64] + os: [win32] + + '@tsconfig/node20@20.1.4': + resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/node@20.16.5': + resolution: {integrity: sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==} + + '@vitejs/plugin-vue@5.1.4': + resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@volar/language-core@2.4.5': + resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} + + '@volar/source-map@2.4.5': + resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} + + '@volar/typescript@2.4.5': + resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} + + '@vue/compiler-core@3.5.6': + resolution: {integrity: sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==} + + '@vue/compiler-dom@3.5.6': + resolution: {integrity: sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==} + + '@vue/compiler-sfc@3.5.6': + resolution: {integrity: sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==} + + '@vue/compiler-ssr@3.5.6': + resolution: {integrity: sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/language-core@2.1.6': + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.6': + resolution: {integrity: sha512-shZ+KtBoHna5GyUxWfoFVBCVd7k56m6lGhk5e+J9AKjheHF6yob5eukssHRI+rzvHBiU1sWs/1ZhNbLExc5oYQ==} + + '@vue/runtime-core@3.5.6': + resolution: {integrity: sha512-FpFULR6+c2lI+m1fIGONLDqPQO34jxV8g6A4wBOgne8eSRHP6PQL27+kWFIx5wNhhjkO7B4rgtsHAmWv7qKvbg==} + + '@vue/runtime-dom@3.5.6': + resolution: {integrity: sha512-SDPseWre45G38ENH2zXRAHL1dw/rr5qp91lS4lt/nHvMr0MhsbCbihGAWLXNB/6VfFOJe2O+RBRkXU+CJF7/sw==} + + '@vue/server-renderer@3.5.6': + resolution: {integrity: sha512-zivnxQnOnwEXVaT9CstJ64rZFXMS5ZkKxCjDQKiMSvUhXRzFLWZVbaBiNF4HGDqGNNsTgmjcCSmU6TB/0OOxLA==} + peerDependencies: + vue: 3.5.6 + + '@vue/shared@3.5.6': + resolution: {integrity: sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==} + + '@vue/tsconfig@0.5.1': + resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-run-all2@6.2.3: + resolution: {integrity: sha512-5RsxC7jEc/RjxOYBVdEfrJf5FsJ0pHA7jr2/OxrThXknajETCTYjigOCG3iaGjdYIKEQlDuCG0ir0T1HTva8pg==} + engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0, npm: '>= 8'} + hasBin: true + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + rollup@4.22.1: + resolution: {integrity: sha512-rit4zY5uPX0jrzTidez3rFr0MD30Rpu3S8VxwXFDfBVAzkk9U28s5MF3/R6u5bIHN6CQnf7zbiwVQbqBkyrU/A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + vite@5.4.6: + resolution: {integrity: sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + vue-router@4.4.5: + resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} + peerDependencies: + vue: ^3.2.0 + + vue-tsc@2.1.6: + resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.6: + resolution: {integrity: sha512-zv+20E2VIYbcJOzJPUWp03NOGFhMmpCKOfSxVTmCYyYFFko48H9tmuQFzYj7tu4qX1AeXlp9DmhIP89/sSxxhw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + +snapshots: + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@rollup/rollup-darwin-arm64@4.22.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.22.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.22.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.22.1': + optional: true + + '@tsconfig/node20@20.1.4': {} + + '@types/estree@1.0.5': {} + + '@types/node@20.16.5': + dependencies: + undici-types: 6.19.8 + + '@vitejs/plugin-vue@5.1.4(vite@5.4.6(@types/node@20.16.5))(vue@3.5.6(typescript@5.4.5))': + dependencies: + vite: 5.4.6(@types/node@20.16.5) + vue: 3.5.6(typescript@5.4.5) + + '@volar/language-core@2.4.5': + dependencies: + '@volar/source-map': 2.4.5 + + '@volar/source-map@2.4.5': {} + + '@volar/typescript@2.4.5': + dependencies: + '@volar/language-core': 2.4.5 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + + '@vue/compiler-core@3.5.6': + dependencies: + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.6 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.6': + dependencies: + '@vue/compiler-core': 3.5.6 + '@vue/shared': 3.5.6 + + '@vue/compiler-sfc@3.5.6': + dependencies: + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.5.6 + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-ssr': 3.5.6 + '@vue/shared': 3.5.6 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.47 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.6': + dependencies: + '@vue/compiler-dom': 3.5.6 + '@vue/shared': 3.5.6 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/devtools-api@6.6.4': {} + + '@vue/language-core@2.1.6(typescript@5.4.5)': + dependencies: + '@volar/language-core': 2.4.5 + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.6 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.4.5 + + '@vue/reactivity@3.5.6': + dependencies: + '@vue/shared': 3.5.6 + + '@vue/runtime-core@3.5.6': + dependencies: + '@vue/reactivity': 3.5.6 + '@vue/shared': 3.5.6 + + '@vue/runtime-dom@3.5.6': + dependencies: + '@vue/reactivity': 3.5.6 + '@vue/runtime-core': 3.5.6 + '@vue/shared': 3.5.6 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.6(vue@3.5.6(typescript@5.4.5))': + dependencies: + '@vue/compiler-ssr': 3.5.6 + '@vue/shared': 3.5.6 + vue: 3.5.6(typescript@5.4.5) + + '@vue/shared@3.5.6': {} + + '@vue/tsconfig@0.5.1': {} + + ansi-styles@6.2.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + computeds@0.0.1: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + de-indent@1.0.2: {} + + entities@4.5.0: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + estree-walker@2.0.2: {} + + fsevents@2.3.3: + optional: true + + he@1.2.0: {} + + isexe@2.0.0: {} + + json-parse-even-better-errors@3.0.2: {} + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + memorystream@0.3.1: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + muggle-string@0.4.1: {} + + nanoid@3.3.7: {} + + npm-normalize-package-bin@3.0.1: {} + + npm-run-all2@6.2.3: + dependencies: + ansi-styles: 6.2.1 + cross-spawn: 7.0.3 + memorystream: 0.3.1 + minimatch: 9.0.5 + pidtree: 0.6.0 + read-package-json-fast: 3.0.2 + shell-quote: 1.8.1 + + path-browserify@1.0.1: {} + + path-key@3.1.1: {} + + picocolors@1.1.0: {} + + pidtree@0.6.0: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.2 + npm-normalize-package-bin: 3.0.1 + + rollup@4.22.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-darwin-arm64': 4.22.1 + '@rollup/rollup-linux-x64-gnu': 4.22.1 + '@rollup/rollup-linux-x64-musl': 4.22.1 + '@rollup/rollup-win32-x64-msvc': 4.22.1 + fsevents: 2.3.3 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + source-map-js@1.2.1: {} + + to-fast-properties@2.0.0: {} + + typescript@5.4.5: {} + + undici-types@6.19.8: {} + + vite@5.4.6(@types/node@20.16.5): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.22.1 + optionalDependencies: + '@types/node': 20.16.5 + fsevents: 2.3.3 + + vscode-uri@3.0.8: {} + + vue-router@4.4.5(vue@3.5.6(typescript@5.4.5)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.6(typescript@5.4.5) + + vue-tsc@2.1.6(typescript@5.4.5): + dependencies: + '@volar/typescript': 2.4.5 + '@vue/language-core': 2.1.6(typescript@5.4.5) + semver: 7.6.3 + typescript: 5.4.5 + + vue@3.5.6(typescript@5.4.5): + dependencies: + '@vue/compiler-dom': 3.5.6 + '@vue/compiler-sfc': 3.5.6 + '@vue/runtime-dom': 3.5.6 + '@vue/server-renderer': 3.5.6(vue@3.5.6(typescript@5.4.5)) + '@vue/shared': 3.5.6 + optionalDependencies: + typescript: 5.4.5 + + which@2.0.2: + dependencies: + isexe: 2.0.0 diff --git a/components_vue3/public/favicon.ico b/components_vue3/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/components_vue3/src/App.vue b/components_vue3/src/App.vue new file mode 100644 index 0000000..7905b05 --- /dev/null +++ b/components_vue3/src/App.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/components_vue3/src/assets/base.css b/components_vue3/src/assets/base.css new file mode 100644 index 0000000..8816868 --- /dev/null +++ b/components_vue3/src/assets/base.css @@ -0,0 +1,86 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/components_vue3/src/assets/logo.svg b/components_vue3/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/components_vue3/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/components_vue3/src/assets/main.css b/components_vue3/src/assets/main.css new file mode 100644 index 0000000..36fb845 --- /dev/null +++ b/components_vue3/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; + padding: 3px; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/components_vue3/src/components/HelloWorld.vue b/components_vue3/src/components/HelloWorld.vue new file mode 100644 index 0000000..38d821e --- /dev/null +++ b/components_vue3/src/components/HelloWorld.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/components_vue3/src/components/TheWelcome.vue b/components_vue3/src/components/TheWelcome.vue new file mode 100644 index 0000000..49d8f73 --- /dev/null +++ b/components_vue3/src/components/TheWelcome.vue @@ -0,0 +1,88 @@ + + + diff --git a/components_vue3/src/components/WelcomeItem.vue b/components_vue3/src/components/WelcomeItem.vue new file mode 100644 index 0000000..6d7086a --- /dev/null +++ b/components_vue3/src/components/WelcomeItem.vue @@ -0,0 +1,87 @@ + + + diff --git a/components_vue3/src/components/icons/IconCommunity.vue b/components_vue3/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/components_vue3/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/components_vue3/src/components/icons/IconDocumentation.vue b/components_vue3/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/components_vue3/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/components_vue3/src/components/icons/IconEcosystem.vue b/components_vue3/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/components_vue3/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/components_vue3/src/components/icons/IconSupport.vue b/components_vue3/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/components_vue3/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/components_vue3/src/components/icons/IconTooling.vue b/components_vue3/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/components_vue3/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/components_vue3/src/main.ts b/components_vue3/src/main.ts new file mode 100644 index 0000000..5a5dbdb --- /dev/null +++ b/components_vue3/src/main.ts @@ -0,0 +1,11 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' + +const app = createApp(App) + +app.use(router) + +app.mount('#app') diff --git a/components_vue3/src/router/index.ts b/components_vue3/src/router/index.ts new file mode 100644 index 0000000..a49ae50 --- /dev/null +++ b/components_vue3/src/router/index.ts @@ -0,0 +1,23 @@ +import { createRouter, createWebHistory } from 'vue-router' +import HomeView from '../views/HomeView.vue' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'home', + component: HomeView + }, + { + path: '/about', + name: 'about', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/AboutView.vue') + } + ] +}) + +export default router diff --git a/components_vue3/src/views/AboutView.vue b/components_vue3/src/views/AboutView.vue new file mode 100644 index 0000000..756ad2a --- /dev/null +++ b/components_vue3/src/views/AboutView.vue @@ -0,0 +1,15 @@ + + + diff --git a/components_vue3/src/views/HomeView.vue b/components_vue3/src/views/HomeView.vue new file mode 100644 index 0000000..d5c0217 --- /dev/null +++ b/components_vue3/src/views/HomeView.vue @@ -0,0 +1,9 @@ + + + diff --git a/components_vue3/tsconfig.app.json b/components_vue3/tsconfig.app.json new file mode 100644 index 0000000..e14c754 --- /dev/null +++ b/components_vue3/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/components_vue3/tsconfig.json b/components_vue3/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/components_vue3/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/components_vue3/tsconfig.node.json b/components_vue3/tsconfig.node.json new file mode 100644 index 0000000..f094063 --- /dev/null +++ b/components_vue3/tsconfig.node.json @@ -0,0 +1,19 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "noEmit": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/components_vue3/vite.config.ts b/components_vue3/vite.config.ts new file mode 100644 index 0000000..5c45e1d --- /dev/null +++ b/components_vue3/vite.config.ts @@ -0,0 +1,16 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + } +}) diff --git a/hello_vue3/bun.lockb b/hello_vue3/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..4bd45805d683c9aa9f2b1da54f4e15eaff5407b5 GIT binary patch literal 51069 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 R4(zFr(OFlj|IhpT{{!WU{gMCx literal 0 HcmV?d00001 diff --git a/hello_vue3/src/App.vue b/hello_vue3/src/App.vue index 6e1aaf7..d82476a 100644 --- a/hello_vue3/src/App.vue +++ b/hello_vue3/src/App.vue @@ -2,16 +2,16 @@
- +
diff --git a/hello_vue3/src/components/Demo.vue b/hello_vue3/src/components/Login.vue similarity index 93% rename from hello_vue3/src/components/Demo.vue rename to hello_vue3/src/components/Login.vue index 7abb669..e8b1f86 100644 --- a/hello_vue3/src/components/Demo.vue +++ b/hello_vue3/src/components/Login.vue @@ -109,14 +109,25 @@ let handleLogin = () => { z-index: 1; justify-content: center; text-align: center; + outline: none; background-color: lightseagreen; margin: 0 auto; /* 水平居中 */ - display: block; /* 使按钮成为块级元素 */ + display: block; /*使按钮成为块级元素 */ transition: background-color 0.3s ease; /* 添加简单的背景色过渡效果 */ } +.input-box button { + user-select: none; +} + +.input-box button:focus { + /* 焦点在的时候变化颜色 */ + background-color: #3cb371; +} + .input-box button:hover { - background-color: #3cb371; /* 悬停时的背景色 */ + /* 鼠标悬停颜色变化 */ + background-color: #3cb371; } /* 接下来是猫头鹰的样式 */