diff --git a/.gitignore b/.gitignore index a19f004..a547bf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,24 @@ -# ---> Vue -# gitignore template for Vue.js projects -# -# Recommended template: Node.gitignore +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* -# TODO: where does this rule come from? -docs/_book - -# TODO: where does this rule come from? -test/ +node_modules +dist +dist-ssr +*.local +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..91ce236 --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + Engintel + + + +
+ + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..74d2203 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1221 @@ +{ + "name": "web1", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web1", + "version": "0.0.0", + "dependencies": { + "swiper": "^11.1.14", + "vue": "^3.4.37" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "@vitejs/plugin-vue": "^5.1.2", + "typescript": "^5.5.3", + "vite": "^5.4.1", + "vue-tsc": "^2.0.29" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.2.tgz", + "integrity": "sha512-8Ao+EDmTPjZ1ZBABc1ohN7Ylx7UIYcjReZinigedTOnGFhIctyGPxY2II+hJ6gD2/vkDKZTyQ0e7++kwv6wDrw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.2.tgz", + "integrity": "sha512-I+B1v0a4iqdS9DvYt1RJZ3W+Oh9EVWjbY6gp79aAYipIbxSLEoQtFQlZEnUuwhDXCqMxJ3hluxKAdPD+GiluFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.2.tgz", + "integrity": "sha512-BTHO7rR+LC67OP7I8N8GvdvnQqzFujJYWo7qCQ8fGdQcb8Gn6EQY+K1P+daQLnDCuWKbZ+gHAQZuKiQkXkqIYg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.2.tgz", + "integrity": "sha512-1esGwDNFe2lov4I6GsEeYaAMHwkqk0IbuGH7gXGdBmd/EP9QddJJvTtTF/jv+7R8ZTYPqwcdLpMTxK8ytP6k6Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.2.tgz", + "integrity": "sha512-GBHuY07x96OTEM3OQLNaUSUwrOhdMea/LDmlFHi/HMonrgF6jcFrrFFwJhhe84XtA1oK/Qh4yFS+VMREf6dobg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.2.tgz", + "integrity": "sha512-Dbfa9Sc1G1lWxop0gNguXOfGhaXQWAGhZUcqA0Vs6CnJq8JW/YOw/KvyGtQFmz4yDr0H4v9X248SM7bizYj4yQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.2.tgz", + "integrity": "sha512-Z1YpgBvFYhZIyBW5BoopwSg+t7yqEhs5HCei4JbsaXnhz/eZehT18DaXl957aaE9QK7TRGFryCAtStZywcQe1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.2.tgz", + "integrity": "sha512-66Zszr7i/JaQ0u/lefcfaAw16wh3oT72vSqubIMQqWzOg85bGCPhoeykG/cC5uvMzH80DQa2L539IqKht6twVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.2.tgz", + "integrity": "sha512-HpJCMnlMTfEhwo19bajvdraQMcAq3FX08QDx3OfQgb+414xZhKNf3jNvLFYKbbDSGBBrQh5yNwWZrdK0g0pokg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.2.tgz", + "integrity": "sha512-/egzQzbOSRef2vYCINKITGrlwkzP7uXRnL+xU2j75kDVp3iPdcF0TIlfwTRF8woBZllhk3QaxNOEj2Ogh3t9hg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.2.tgz", + "integrity": "sha512-qgYbOEbrPfEkH/OnUJd1/q4s89FvNJQIUldx8X2F/UM5sEbtkqZpf2s0yly2jSCKr1zUUOY1hnTP2J1WOzMAdA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.2.tgz", + "integrity": "sha512-a0lkvNhFLhf+w7A95XeBqGQaG0KfS3hPFJnz1uraSdUe/XImkp/Psq0Ca0/UdD5IEAGoENVmnYrzSC9Y2a2uKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.2.tgz", + "integrity": "sha512-sSWBVZgzwtsuG9Dxi9kjYOUu/wKW+jrbzj4Cclabqnfkot8Z3VEHcIgyenA3lLn/Fu11uDviWjhctulkhEO60g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.2.tgz", + "integrity": "sha512-t/YgCbZ638R/r7IKb9yCM6nAek1RUvyNdfU0SHMDLOf6GFe/VG1wdiUAsxTWHKqjyzkRGg897ZfCpdo1bsCSsA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.2.tgz", + "integrity": "sha512-kTmX5uGs3WYOA+gYDgI6ITkZng9SP71FEMoHNkn+cnmb9Zuyyay8pf0oO5twtTwSjNGy1jlaWooTIr+Dw4tIbw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.2.tgz", + "integrity": "sha512-Yy8So+SoRz8I3NS4Bjh91BICPOSVgdompTIPYTByUqU66AXSIOgmW3Lv1ke3NORPqxdF+RdrZET+8vYai6f4aA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz", + "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.5.tgz", + "integrity": "sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.5" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.5.tgz", + "integrity": "sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.5.tgz", + "integrity": "sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.5", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.7.tgz", + "integrity": "sha512-A0gay3lK71MddsSnGlBxRPOugIVdACze9L/rCo5X5srCyjQfZOfYtSFMJc3aOZCM+xN55EQpb4R97rYn/iEbSw==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.7", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.7.tgz", + "integrity": "sha512-GYWl3+gO8/g0ZdYaJ18fYHdI/WVic2VuuUd1NsPp60DWXKy+XjdhFsDW7FbUto8siYYZcosBGn9yVBkjhq1M8Q==", + "dependencies": { + "@vue/compiler-core": "3.5.7", + "@vue/shared": "3.5.7" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.7.tgz", + "integrity": "sha512-EjOJtCWJrC7HqoCEzOwpIYHm+JH7YmkxC1hG6VkqIukYRqj8KFUlTLK6hcT4nGgtVov2+ZfrdrRlcaqS78HnBA==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.7", + "@vue/compiler-dom": "3.5.7", + "@vue/compiler-ssr": "3.5.7", + "@vue/shared": "3.5.7", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.7.tgz", + "integrity": "sha512-oZx+jXP2k5arV/8Ly3TpQbfFyimMw2ANrRqvHJoKjPqtEzazxQGZjCLOfq8TnZ3wy2TOXdqfmVp4q7FyYeHV4g==", + "dependencies": { + "@vue/compiler-dom": "3.5.7", + "@vue/shared": "3.5.7" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/language-core": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.1.6.tgz", + "integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.4.1", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.7.tgz", + "integrity": "sha512-yF0EpokpOHRNXyn/h6abXc9JFIzfdAf0MJHIi92xxCWS0mqrXH6+2aZ+A6EbSrspGzX5MHTd5N8iBA28HnXu9g==", + "dependencies": { + "@vue/shared": "3.5.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.7.tgz", + "integrity": "sha512-OzLpBpKbZEaZVSNfd+hQbfBrDKux+b7Yl5hYhhWWWhHD7fEpF+CdI3Brm5k5GsufHEfvMcjruPxwQZuBN6nFYQ==", + "dependencies": { + "@vue/reactivity": "3.5.7", + "@vue/shared": "3.5.7" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.7.tgz", + "integrity": "sha512-fL7cETfE27U2jyTgqzE382IGFY6a6uyznErn27KbbEzNctzxxUWYDbaN3B55l9nXh0xW2LRWPuWKOvjtO2UewQ==", + "dependencies": { + "@vue/reactivity": "3.5.7", + "@vue/runtime-core": "3.5.7", + "@vue/shared": "3.5.7", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.7.tgz", + "integrity": "sha512-peRypij815eIDjpPpPXvYQGYqPH6QXwLJGWraJYPPn8JqWGl29A8QXnS7/Mh3TkMiOcdsJNhbFCoW2Agc2NgAQ==", + "dependencies": { + "@vue/compiler-ssr": "3.5.7", + "@vue/shared": "3.5.7" + }, + "peerDependencies": { + "vue": "3.5.7" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.7.tgz", + "integrity": "sha512-NBE1PBIvzIedxIc2RZiKXvGbJkrZ2/hLf3h8GlS4/sP9xcXEZMFWOazFkNd6aGeUCMaproe5MHVYB3/4AW9q9g==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "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" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.22.2.tgz", + "integrity": "sha512-JWWpTrZmqQGQWt16xvNn6KVIUz16VtZwl984TKw0dfqqRpFwtLJYYk1/4BTgplndMQKWUk/yB4uOShYmMzA2Vg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.2", + "@rollup/rollup-android-arm64": "4.22.2", + "@rollup/rollup-darwin-arm64": "4.22.2", + "@rollup/rollup-darwin-x64": "4.22.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.2", + "@rollup/rollup-linux-arm-musleabihf": "4.22.2", + "@rollup/rollup-linux-arm64-gnu": "4.22.2", + "@rollup/rollup-linux-arm64-musl": "4.22.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.2", + "@rollup/rollup-linux-riscv64-gnu": "4.22.2", + "@rollup/rollup-linux-s390x-gnu": "4.22.2", + "@rollup/rollup-linux-x64-gnu": "4.22.2", + "@rollup/rollup-linux-x64-musl": "4.22.2", + "@rollup/rollup-win32-arm64-msvc": "4.22.2", + "@rollup/rollup-win32-ia32-msvc": "4.22.2", + "@rollup/rollup-win32-x64-msvc": "4.22.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/swiper": { + "version": "11.1.14", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-11.1.14.tgz", + "integrity": "sha512-VbQLQXC04io6AoAjIUWuZwW4MSYozkcP9KjLdrsG/00Q/yiwvhz9RQyt0nHXV10hi9NVnDNy1/wv7Dzq1lkOCQ==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/vite": { + "version": "5.4.7", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.7.tgz", + "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "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 + } + } + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, + "node_modules/vue": { + "version": "3.5.7", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.7.tgz", + "integrity": "sha512-JcFm0f5j8DQO9E07pZRxqZ/ZsNopMVzHYXpKvnfqXFcA4JTi+4YcrikRn9wkzWsdj0YsLzlLIsR0zzGxA2P6Wg==", + "dependencies": { + "@vue/compiler-dom": "3.5.7", + "@vue/compiler-sfc": "3.5.7", + "@vue/runtime-dom": "3.5.7", + "@vue/server-renderer": "3.5.7", + "@vue/shared": "3.5.7" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-tsc": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.1.6.tgz", + "integrity": "sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.4.1", + "@vue/language-core": "2.1.6", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..db83008 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "web1", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "swiper": "^11.1.14", + "vue": "^3.4.37" + }, + "devDependencies": { + "@types/node": "^22.5.5", + "@vitejs/plugin-vue": "^5.1.2", + "typescript": "^5.5.3", + "vite": "^5.4.1", + "vue-tsc": "^2.0.29" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e69545a --- /dev/null +++ b/public/vite.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..88bf1cf --- /dev/null +++ b/src/App.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/assets/fonts/DINCond-Bold.otf b/src/assets/fonts/DINCond-Bold.otf new file mode 100644 index 0000000..9b6cd9d Binary files /dev/null and b/src/assets/fonts/DINCond-Bold.otf differ diff --git a/src/assets/imgs/Aboutus.jpg b/src/assets/imgs/Aboutus.jpg new file mode 100644 index 0000000..3620d3a Binary files /dev/null and b/src/assets/imgs/Aboutus.jpg differ diff --git a/src/assets/imgs/Close.svg b/src/assets/imgs/Close.svg new file mode 100644 index 0000000..e4bd890 --- /dev/null +++ b/src/assets/imgs/Close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/Close2.svg b/src/assets/imgs/Close2.svg new file mode 100644 index 0000000..3393139 --- /dev/null +++ b/src/assets/imgs/Close2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/ClosePurple.svg b/src/assets/imgs/ClosePurple.svg new file mode 100644 index 0000000..556ba0a --- /dev/null +++ b/src/assets/imgs/ClosePurple.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/Down Arraw Purple.svg b/src/assets/imgs/Down Arraw Purple.svg new file mode 100644 index 0000000..70b4f73 --- /dev/null +++ b/src/assets/imgs/Down Arraw Purple.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/Down Arraw.svg b/src/assets/imgs/Down Arraw.svg new file mode 100644 index 0000000..9064034 --- /dev/null +++ b/src/assets/imgs/Down Arraw.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/Engintel Consulting.svg b/src/assets/imgs/Engintel Consulting.svg new file mode 100644 index 0000000..266c72b --- /dev/null +++ b/src/assets/imgs/Engintel Consulting.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/Franchise.jpg b/src/assets/imgs/Franchise.jpg new file mode 100644 index 0000000..d994d40 Binary files /dev/null and b/src/assets/imgs/Franchise.jpg differ diff --git a/src/assets/imgs/Hotel.svg b/src/assets/imgs/Hotel.svg new file mode 100644 index 0000000..79124e7 --- /dev/null +++ b/src/assets/imgs/Hotel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/HotelBg.jpg b/src/assets/imgs/HotelBg.jpg new file mode 100644 index 0000000..278b982 Binary files /dev/null and b/src/assets/imgs/HotelBg.jpg differ diff --git a/src/assets/imgs/ImageMask.svg b/src/assets/imgs/ImageMask.svg new file mode 100644 index 0000000..2d5ee33 --- /dev/null +++ b/src/assets/imgs/ImageMask.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/LOGO W.svg b/src/assets/imgs/LOGO W.svg new file mode 100644 index 0000000..e6ddeb8 --- /dev/null +++ b/src/assets/imgs/LOGO W.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/imgs/Options.svg b/src/assets/imgs/Options.svg new file mode 100644 index 0000000..e68f669 --- /dev/null +++ b/src/assets/imgs/Options.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/imgs/PROJECTS.svg b/src/assets/imgs/PROJECTS.svg new file mode 100644 index 0000000..7710425 --- /dev/null +++ b/src/assets/imgs/PROJECTS.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/imgs/Restaurant.jpg b/src/assets/imgs/Restaurant.jpg new file mode 100644 index 0000000..753f738 Binary files /dev/null and b/src/assets/imgs/Restaurant.jpg differ diff --git a/src/assets/imgs/School.jpg b/src/assets/imgs/School.jpg new file mode 100644 index 0000000..04a1182 Binary files /dev/null and b/src/assets/imgs/School.jpg differ diff --git a/src/assets/imgs/banners/franchise/1.jpg b/src/assets/imgs/banners/franchise/1.jpg new file mode 100644 index 0000000..add7e7f Binary files /dev/null and b/src/assets/imgs/banners/franchise/1.jpg differ diff --git a/src/assets/imgs/banners/franchise/2.jpg b/src/assets/imgs/banners/franchise/2.jpg new file mode 100644 index 0000000..f390f7d Binary files /dev/null and b/src/assets/imgs/banners/franchise/2.jpg differ diff --git a/src/assets/imgs/banners/franchise/3.jpg b/src/assets/imgs/banners/franchise/3.jpg new file mode 100644 index 0000000..f5c9769 Binary files /dev/null and b/src/assets/imgs/banners/franchise/3.jpg differ diff --git a/src/assets/imgs/banners/hotel/1.jpg b/src/assets/imgs/banners/hotel/1.jpg new file mode 100644 index 0000000..f6eed5e Binary files /dev/null and b/src/assets/imgs/banners/hotel/1.jpg differ diff --git a/src/assets/imgs/banners/hotel/2.jpg b/src/assets/imgs/banners/hotel/2.jpg new file mode 100644 index 0000000..135ab60 Binary files /dev/null and b/src/assets/imgs/banners/hotel/2.jpg differ diff --git a/src/assets/imgs/banners/hotel/3.jpg b/src/assets/imgs/banners/hotel/3.jpg new file mode 100644 index 0000000..3e0db8c Binary files /dev/null and b/src/assets/imgs/banners/hotel/3.jpg differ diff --git a/src/assets/imgs/banners/restaurant/1.jpg b/src/assets/imgs/banners/restaurant/1.jpg new file mode 100644 index 0000000..01c4631 Binary files /dev/null and b/src/assets/imgs/banners/restaurant/1.jpg differ diff --git a/src/assets/imgs/banners/restaurant/2.jpg b/src/assets/imgs/banners/restaurant/2.jpg new file mode 100644 index 0000000..7dbf557 Binary files /dev/null and b/src/assets/imgs/banners/restaurant/2.jpg differ diff --git a/src/assets/imgs/banners/restaurant/3.jpg b/src/assets/imgs/banners/restaurant/3.jpg new file mode 100644 index 0000000..6090e49 Binary files /dev/null and b/src/assets/imgs/banners/restaurant/3.jpg differ diff --git a/src/assets/imgs/banners/school/1.jpg b/src/assets/imgs/banners/school/1.jpg new file mode 100644 index 0000000..c219456 Binary files /dev/null and b/src/assets/imgs/banners/school/1.jpg differ diff --git a/src/assets/imgs/banners/school/2.jpg b/src/assets/imgs/banners/school/2.jpg new file mode 100644 index 0000000..f10db58 Binary files /dev/null and b/src/assets/imgs/banners/school/2.jpg differ diff --git a/src/assets/imgs/banners/school/3.jpg b/src/assets/imgs/banners/school/3.jpg new file mode 100644 index 0000000..250df16 Binary files /dev/null and b/src/assets/imgs/banners/school/3.jpg differ diff --git a/src/assets/imgs/customers/Coca-Cola Company no background.jpg b/src/assets/imgs/customers/Coca-Cola Company no background.jpg new file mode 100644 index 0000000..5252c47 Binary files /dev/null and b/src/assets/imgs/customers/Coca-Cola Company no background.jpg differ diff --git a/src/assets/imgs/customers/Conley Hills Elementary School.jpg b/src/assets/imgs/customers/Conley Hills Elementary School.jpg new file mode 100644 index 0000000..01f5b8a Binary files /dev/null and b/src/assets/imgs/customers/Conley Hills Elementary School.jpg differ diff --git a/src/assets/imgs/customers/Customers-Group1.png b/src/assets/imgs/customers/Customers-Group1.png new file mode 100644 index 0000000..7d5312a Binary files /dev/null and b/src/assets/imgs/customers/Customers-Group1.png differ diff --git a/src/assets/imgs/customers/Customers-Group2.png b/src/assets/imgs/customers/Customers-Group2.png new file mode 100644 index 0000000..d8d74cd Binary files /dev/null and b/src/assets/imgs/customers/Customers-Group2.png differ diff --git a/src/assets/imgs/customers/Emory University.jpg b/src/assets/imgs/customers/Emory University.jpg new file mode 100644 index 0000000..b1b7058 Binary files /dev/null and b/src/assets/imgs/customers/Emory University.jpg differ diff --git a/src/assets/imgs/customers/Florida State University.jpg b/src/assets/imgs/customers/Florida State University.jpg new file mode 100644 index 0000000..1788e8d Binary files /dev/null and b/src/assets/imgs/customers/Florida State University.jpg differ diff --git a/src/assets/imgs/customers/Georgia-Tech-Yellow-Jackets-Logo.jpg b/src/assets/imgs/customers/Georgia-Tech-Yellow-Jackets-Logo.jpg new file mode 100644 index 0000000..c9f970d Binary files /dev/null and b/src/assets/imgs/customers/Georgia-Tech-Yellow-Jackets-Logo.jpg differ diff --git a/src/assets/imgs/customers/North Cobb Christian School.jpg b/src/assets/imgs/customers/North Cobb Christian School.jpg new file mode 100644 index 0000000..f646b1e Binary files /dev/null and b/src/assets/imgs/customers/North Cobb Christian School.jpg differ diff --git a/src/assets/imgs/customers/Rosemont Elementary School.jpg b/src/assets/imgs/customers/Rosemont Elementary School.jpg new file mode 100644 index 0000000..2846ea0 Binary files /dev/null and b/src/assets/imgs/customers/Rosemont Elementary School.jpg differ diff --git a/src/assets/imgs/customers/Syracuse University no background.jpg b/src/assets/imgs/customers/Syracuse University no background.jpg new file mode 100644 index 0000000..36b2d3f Binary files /dev/null and b/src/assets/imgs/customers/Syracuse University no background.jpg differ diff --git a/src/assets/imgs/customers/Towns County High School 2.jpg b/src/assets/imgs/customers/Towns County High School 2.jpg new file mode 100644 index 0000000..cb01d46 Binary files /dev/null and b/src/assets/imgs/customers/Towns County High School 2.jpg differ diff --git a/src/assets/imgs/customers/jw-marriott-logo.jpg b/src/assets/imgs/customers/jw-marriott-logo.jpg new file mode 100644 index 0000000..b83e08b Binary files /dev/null and b/src/assets/imgs/customers/jw-marriott-logo.jpg differ diff --git a/src/assets/imgs/index.jpg b/src/assets/imgs/index.jpg new file mode 100644 index 0000000..d3dd8cb Binary files /dev/null and b/src/assets/imgs/index.jpg differ diff --git a/src/assets/vue.svg b/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 0000000..b58e52b --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/swiper/SwiperWin.css b/src/components/swiper/SwiperWin.css new file mode 100644 index 0000000..99278a0 --- /dev/null +++ b/src/components/swiper/SwiperWin.css @@ -0,0 +1,75 @@ +.max-bg { + width: 100%; + height: 100%; + overflow: hidden; +} + +.global-font { + font-family: 'DIN'; + /* font-weight: normal; */ +} + +.global-font-bold { + font-weight: bold; +} + +@font-face { + font-family: "DIN"; + src: url('@/assets/fonts/DINCond-Bold.otf'); + font-weight: normal; + font-style: normal; +} + +.page-font { + position: absolute; + left: 0; + right: 0; + bottom: 0; + font-size: 24px; + z-index: 99; +} + +.slide-container-path { + margin-top: 4%; + height: 87%; + display: flex; + align-items: center; + justify-content: center; +} + +.swiper-size { + height: 100%; +} + +.swiper-img { + width: 70%; +} + +.swiper-slide { + width: 90% !important; + margin: 0 5%; +} + +.swiper-slide-prev { + right: -30%; +} + +.swiper-slide-next { + left: -30%; +} + +.down-arraw-left { + position: absolute; + left: 14.2%; + top: 50%; + z-index: 100; + transform: rotateZ(90deg); +} + +.down-arraw-right { + position: absolute; + right: 14.2%; + top: 50%; + z-index: 100; + transform: rotateZ(270deg); +} \ No newline at end of file diff --git a/src/components/swiper/SwiperWin.ts b/src/components/swiper/SwiperWin.ts new file mode 100644 index 0000000..97b2cae --- /dev/null +++ b/src/components/swiper/SwiperWin.ts @@ -0,0 +1,76 @@ + +import { defineComponent, ref } from 'vue'; +// Import Swiper Vue.js components +import { Swiper, SwiperSlide } from 'swiper/vue'; +import { Navigation, Pagination, Scrollbar, A11y, Autoplay, Mousewheel } from 'swiper/modules'; + +// Import Swiper styles +import 'swiper/css'; +import 'swiper/css/navigation'; +import 'swiper/css/pagination'; +import 'swiper/css/scrollbar'; + +export default defineComponent({ + name: 'SwiperWin', + props: { + images: Array + }, + components: { + Swiper, + SwiperSlide + }, + data() { + return { + } + }, + // setup(props, context) { + setup(props: any) { + + // const images = [ + // util.getAssetsFile('imgs/swiper/swiper1.jpg'), + // util.getAssetsFile('imgs/swiper/swiper1.jpg'), + // util.getAssetsFile('imgs/swiper/swiper1.jpg') + // ] + + + const images = props.images as Array + const refImages = ref(images) + const swiper = ref() + let realSwiperPage = ref(1) + const onSwiper = (swiperInst: any) => { + // swiper.activeIndex = 0 + swiper.value = swiperInst + swiper.value.slideNext(0) + }; + const onSlideChange = (swiper: any) => { + // console.log('slide change'); + // console.log(swiper) + realSwiperPage.value = swiper.realIndex + 1 + } + + const slideNext = () => { + swiper.value.slideNext() + } + + const slidePrev = () => { + swiper.value.slidePrev() + } + + // const toNext = () => { + // swiper.value.slideNext(swiper.value.realIndex + 1) + // } + + return { + // onSwiper, + images, + refImages, + realSwiperPage, + onSlideChange, + onSwiper, + slideNext, + slidePrev, + modules: [Navigation, Pagination, Scrollbar, A11y, Autoplay, Mousewheel] + // modules: [Navigation, Pagination, Scrollbar, A11y] + } + } +}) diff --git a/src/components/swiper/SwiperWin.vue b/src/components/swiper/SwiperWin.vue new file mode 100644 index 0000000..a52d091 --- /dev/null +++ b/src/components/swiper/SwiperWin.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..2425c0f --- /dev/null +++ b/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/src/module.d.ts b/src/module.d.ts new file mode 100644 index 0000000..6129ecb --- /dev/null +++ b/src/module.d.ts @@ -0,0 +1 @@ +declare module 'vue-awesome-swiper2' \ No newline at end of file diff --git a/src/pages/index/Index.css b/src/pages/index/Index.css new file mode 100644 index 0000000..2a99221 --- /dev/null +++ b/src/pages/index/Index.css @@ -0,0 +1,734 @@ +.read-the-docs { + color: #888; +} + +* { + margin: 0; + padding: 0; +} + +html, +body { + width: 100%; + height: 100%; +} + +.max-abs { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.max-bg { + width: 100vw; + height: 100vh; + overflow: hidden; +} + +.index-bg-img { + width: 100%; + height: 100%; + min-height: 100vh; + object-fit: cover; + position: relative; +} + +.bg-mask { + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #00000018; +} + +.inline-top-text { + margin-left: 3rem; + margin-top: 15%; + display: inline-block; + user-select: none; +} + +.bg-mask-2 { + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #28283E; +} + +.bg-mask-3 { + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #00000060; +} + +/* .item-img-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: #0000003c; +} */ + +@media screen and (orientation: portrait) { + .top-nav { + display: none; + } + + .title-float-left { + float: left; + } + + .contact-text-block-top { + margin-top: 5rem; + } + + .title-contact-us { + margin-top: 3rem !important; + } + + .max-bg { + width: 100vw; + height: 100vh; + overflow-x: hidden; + overflow-y: auto; + } + + /*竖屏 css*/ + .logo { + position: absolute; + left: 50%; + top: 52%; + transform: translate(-50%, -50%); + width: 15rem; + } + + .project-container { + /* background-color: yellow; */ + /* padding: 5rem; */ + /* width: 100%; */ + width: fit-content; + margin: auto; + left: 0; + top: 0; + right: 0; + bottom: 0; + padding: 3rem; + } + + .project-container-outer { + /* background-color: green; */ + margin: 0 auto; + } + + .project-title { + margin-top: 0.2rem; + margin-bottom: 1rem; + text-align: left; + } + + .project-container-inner { + /* background-color: red; */ + width: 100%; + height: 100%; + } + + .project-items { + display: grid; + grid-template-columns: 1fr; + width: fit-content; + height: 100%; + } + + .project-item { + margin: 0 2rem 0.5rem 0; + width: 100%; + height: 100%; + /* background: #0000003c; */ + } + + .project-item-mask { + position: relative; + left: 0; + top: calc(-100% + 0.5rem); + width: 100%; + height: calc(100% - 0.85rem); + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #0000005c; + /* #0000005c; */ + } + + .project-item-mask-3 { + position: relative; + left: 0; + top: 0; + width: 100%; + height: calc(100% - 0.85rem); + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #0000005c; + /* #0000005c; */ + } + + .project-item-2 { + width: 100%; + height: fit-content; + position: inherit; + display: block; + /* background: url(@/assets/imgs/ImageMask.svg); */ + /* #0000005c; */ + } + + .mask-color { + background-color: #0000005c; + } + + .project-item-img-2 { + object-fit: cover; + position: relative; + left: 0; + top: 0; + width: 100%; + } + + .item-text-size { + font-size: 36px; + user-select: none; + } + + .contact-container { + width: 100%; + padding-bottom: 0; + } + + .desc-height { + height: auto; + } + + .desc-fix { + top: -45%; + } + + .contact-text-block { + position: relative; + height: fit-content; + } + + .about-us-inner { + position: relative; + top: 0; + padding-top: 1rem; + display: block; + overflow: hidden; + width: 100%; + height: 100%; + } + + .desc-item-mask { + margin-top: 0; + width: 100%; + height: 100%; + display: flex; + /* background: url(@/assets/imgs/ImageMask.svg); */ + /* #0000005c; */ + } + + .project-item-about-us { + margin-top: 0; + } + + .item-text-2 { + margin: 5.5rem 2rem 0 2rem; + } + + .content-height { + height: fit-content; + } + + .out-customers { + text-align: left; + } + + .center-offset { + position: absolute; + left: 0; + top: 50%; + right: 0; + height: 10rem; + text-align: center; + transform: translateY(-90%); + } + + .page-projects { + height: fit-content !important; + } + + .customers { + width: 70%; + height: 100%; + text-align: left; + margin: 6rem 6rem 6rem 0; + } + + .show-portrait { + display: block; + } + + .show-landspace { + display: none; + } + + .contact-us { + margin-top: 0; + } + + + /* .contact-no-padding-top { + padding-top: 0; + } */ + + .contact-no-margin-top { + margin-top: 0 !important; + } + + .desc { + padding: 0; + margin: 0; + text-align: left; + font-size: 22px; + color: #000000; + } + + .page { + width: 100%; + } + + .page-max { + width: 100%; + height: 100vh; + } + + .fullPageContainer { + width: 100%; + } + + .detail-portrait { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + } +} + +@media screen and (orientation: landscape) { + + .show-portrait { + display: none; + } + + .contact-text-block-top { + margin-top: 2rem; + } + + .show-landspace { + display: block; + } + + /*横屏 css*/ + .logo { + position: absolute; + left: 50%; + top: 52%; + transform: translate(-50%, -50%); + width: 22rem; + } + + .options { + display: none; + } + + .top-nav { + width: fit-content; + float: right; + margin-right: 10%; + cursor: pointer; + } + + .project-container { + /* background-color: yellow; */ + padding: 0; + width: 70%; + height: 80%; + margin: auto; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + } + + .project-container-outer { + /* background-color: green; */ + width: 100%; + margin: 0 auto; + /* 20/1.2==16.6 */ + /* transform: scale(1.2) translateX(16.6%) translateY(16.6%) */ + } + + .project-title { + margin-bottom: 3.5rem; + text-align: left; + } + + .project-container-inner { + /* background-color: red; */ + width: 100%; + height: 100%; + } + + .project-items { + margin-top: 2rem; + display: grid; + grid-template-columns: 1fr 1fr; + width: 100%; + height: 100%; + } + + .project-item { + /* height: fit-content; */ + margin: 0 2rem 0 0; + /* width: fit-content; */ + height: 100%; + /* width: 88%; */ + /* background: #0000003c; */ + } + + .project-item-mask { + position: relative; + left: 0; + top: -100%; + width: 100%; + height: calc(100% - 0.4rem); + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #0000005c; + /* #0000005c; */ + } + + .item-text-size { + font-size: 64px; + user-select: none; + } + + .our-customers { + text-align: right; + position: relative; + } + + .customers { + position: relative; + top: 5rem; + width: 50%; + text-align: right; + margin: 6rem 0 6rem -1.5rem; + } + + .desc { + padding: 1rem; + text-align: left; + font-size: 22px; + color: #000000; + } + + .contact-text-block { + position: absolute; + top: 40%; + transform: translateY(-50%); + height: fit-content; + } + + .page { + width: 100%; + height: 100%; + } + + .relative { + position: relative; + } + + .fullPageContainer { + width: 100%; + height: 100vh; + transition: all linear 0.5s; + } + + /* .contact-container {} */ +} + + +.bg-alpha { + background-color: transparent; +} + +.no-padding { + padding: 0 !important; +} + +.item-text { + color: white; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; +} + +.logo-w { + position: absolute; + left: 8%; + top: 6%; + width: 1.5rem; + height: 2.25rem; + user-select: none; +} + +.options { + position: absolute; + right: 8%; + top: 6%; + width: 1.5rem; + height: 2.25rem; + user-select: none; +} + +.white-bg { + background-color: white; +} + +.index-max-rel { + padding: 0; + left: 0; + top: calc(-100% - 2rem); + width: 100%; + height: calc(100% + 1.6rem); +} + +.index-rel-top2 { + top: -202.5%; +} + + +.project-item-img { + object-fit: cover; + position: relative; + left: 0; + top: 0; + width: 100%; +} + +.center { + position: absolute; + left: 0; + top: 50%; + right: 0; + text-align: center; + transform: translateY(-90%); +} + +.options-div { + height: 6rem; +} + +.options-text { + color: white; + font-size: 20px; +} + +.options-close { + position: absolute; + left: 0; + right: 0; + bottom: 8rem; + margin: 0 auto; +} + +.logo-center { + width: 40%; + user-select: none; + -webkit-user-drag: none; +} + +.title-center { + margin-top: 4.2rem; + text-align: center; + width: 100%; + user-select: none; + -webkit-user-drag: none; +} + +.up-arraw { + position: absolute; + left: 50%; + top: 2rem; + transform: rotateZ(180deg) translate(-50%, -50%); + width: 21px; + height: 21px; +} + +.down-arraw { + position: absolute; + left: 50%; + bottom: 2rem; + transform: translate(-50%, -50%); + width: 21px; + height: 21px; +} + +.about-us-text { + position: relative; + margin-bottom: 1rem; + color: #000000; + text-align: justify; +} + +.section { + width: 100%; + height: 100vh; + background-position: center center; + background-repeat: no-repeat; +} + +.title-text { + color: #000000; + font-size: 30px; +} + +.title-text-white { + color: #FFFFFF; + font-size: 30px; +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +.detail-scroll { + overflow-x: hidden; + overflow-y: auto; + padding-top: 3rem; + width: 80%; + height: 65%; + position: absolute; + left: 0; + right: 0; +} + +.options-close-2 { + position: absolute; + left: 0; + right: 0; + bottom: 3rem; + margin: 0 auto; +} + +.bg-mask-4 { + /* background: url(@/assets/imgs/ImageMask.svg); */ + background-color: #ffffff; +} + +.desc-item { + top: 0; + right: inherit; + bottom: inherit; + display: block; +} + +.desc-height { + height: 100%; +} + +.desc-alpha { + opacity: 0; +} + +.no-events { + /* pointer-events: none; */ +} + +.has-events { + /* pointer-events: all; */ +} + + +.contact-person { + font-size: 22px; +} + +.contact-email { + font-size: 20px; +} + +.contact-code { + font-size: 20px; +} + +.contact-company { + font-size: 20px; +} + +.contact-address { + font-size: 20px; +} + +.contact-text { + text-align: left; + margin-top: 1rem; + color: black; +} + +.global-font { + font-family: 'DIN'; + /* font-weight: normal; */ +} + +.global-font-bold { + font-weight: bold; +} + +@font-face { + font-family: "DIN"; + src: url('@/assets/fonts/DINCond-Bold.otf'); + font-weight: normal; + font-style: normal; +} + +.swiper-container { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: rgba(108, 108, 108, 0.5); +} + +.swiper-win { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + height: 100%; +} + +.options-close-3 { + position: absolute; + right: 14.2%; + top: 4rem; + width: 2.5rem; + z-index: 99; +} + +.customers-img { + width: 100%; + object-fit: cover; +} \ No newline at end of file diff --git a/src/pages/index/Index.ts b/src/pages/index/Index.ts new file mode 100644 index 0000000..be58c32 --- /dev/null +++ b/src/pages/index/Index.ts @@ -0,0 +1,294 @@ +import { defineComponent, onMounted, onBeforeUnmount, ref } from 'vue' +import SwiperWin from '../../components/swiper/SwiperWin.vue' +import utils from '../../util/utils' + +export default defineComponent({ + name: 'Index', + components: { + SwiperWin + }, + data() { + return { + } + }, + // setup(props, context) { + setup() { + + const fullPageEl = ref() + const fullPageContainerEl = ref() + + const swiperWindowEl = ref() + + const fullpage = { + current: 1, // 当前的页面编号 + isScrolling: false, // 是否在滚动,是为了防止滚动多页,需要通过一个变量来控制是否滚动 + deltaY: 0 // 返回鼠标滚轮的垂直滚动量,保存的鼠标滚动事件的deleteY,用来判断是往下还是往上滚 + }; + let startTime: number; // 记录触摸开始的时间 + // let startX: number; // 记录触摸开始的X坐标,本次主要实现的是上下滑动,所以当前坐标不做强制要求 + let startY: number; // 记录触摸开始的Y坐标 + let len = 4; // 页面的个数 + const showArraw = ref(true); + const showOptionsPortrait = ref(false); + const showOptionsLandspace = ref(false); + const showDetailWinPortrait = ref(false); + const showDetailWinLandspace = ref(false); + const aboutusimg = ref() + const contactus = ref() + + let isLandspaceTag = true + const resizeHandler = () => { + if (isLandspaceTag) { + if (!isLandspace()) { + move(1) + fullPageContainerEl.value!.style.transform = "translateY(0)" + isLandspaceTag = isLandspace() + } + } + else { + if (isLandspace()) { + move(1) + fullPageContainerEl.value!.style.transform = "translateY(0)" + isLandspaceTag = isLandspace() + } + } + } + + onMounted(() => { + isLandspaceTag = isLandspace() + resizeHandler() + window.addEventListener("resize", resizeHandler) + }) + + onBeforeUnmount(() => { + window.removeEventListener("resize", resizeHandler) + }) + + + const hideOptionsPage = () => { + + showOptionsPortrait.value = false + showOptionsLandspace.value = false + + showArraw.value = true + } + + const showOptionsPage = () => { + + hideOptionsPage() + if (isLandspace()) {//横屏 + showOptionsLandspace.value = true + } + else { + showOptionsPortrait.value = true + } + + showArraw.value = false + } + const showSwiperMaskWin = (images: Array) => { + + bannerImages.value = images + if (isLandspace()) {//横屏 + showDetailWinPortrait.value = false + showDetailWinLandspace.value = true + } + else {//竖屏 + showDetailWinLandspace.value = false + showDetailWinPortrait.value = true + } + showArraw.value = false + } + + const stopEvent = (ev: Event) => { + + ev.stopPropagation() + // ev.preventDefault() + } + + const hideSwiperMaskWin = () => { + + // bannerImages.value = [] + showDetailWinPortrait.value = false + showDetailWinLandspace.value = false + + showArraw.value = true + } + + // 往下切换 + const next = () => { + if (!isLandspace()) { + return + } + if (fullpage.current + 1 <= len) { // 如果当前页面编号+1 小于总个数,则可以执行向下滑动 + fullpage.current += 1; // 页面+1 + move(fullpage.current); // 执行切换 + } + if (fullpage.current >= len) { + showArraw.value = false + } + else { + showArraw.value = true + } + } + + // 往上切换 + const pre = () => { + if (!isLandspace()) { + return + } + if (fullpage.current - 1 > 0) { // 如果当前页面编号-1 大于0,则可以执行向下滑动 + fullpage.current -= 1;// 页面+1 + move(fullpage.current);// 执行切换 + showArraw.value = true + } + } + + // 滚动事件 + const move = (index: number) => { + fullpage.current = index; + fullpage.isScrolling = true; // 为了防止滚动多页,需要通过一个变量来控制是否滚动 + directToMove(index); //执行滚动 + setTimeout(() => { //这里的动画是1s执行完,使用setTimeout延迟1s后解锁 + fullpage.isScrolling = false; + }, 1000); + } + + // 执行滚动 + const directToMove = (index: number) => { + let height = fullPageEl.value!.clientHeight; //获取屏幕的宽度 + let scrollPage = fullPageContainerEl.value!; // 获取执行tarnsform的元素 + let scrollHeight; // 计算滚动的告诉,是往上滚还往下滚 + scrollHeight = -(index - 1) * height + "px"; + scrollPage.style.transform = `translateY(${scrollHeight})`; + fullpage.current = index; + } + + // 监听鼠标监听 + const mouseWheelHandle = (event: any) => { + // 添加冒泡阻止 + let evt = event || window.event; + if (evt.stopPropagation) { + evt.stopPropagation(); + } else { + evt.returnValue = false; + } + if (fullpage.isScrolling) { // 判断是否可以滚动 + return false; + } + let e = event.originalEvent || event; + fullpage.deltaY = e.deltaY || e.detail; // Firefox使用detail + if (fullpage.deltaY > 0) { + next(); + } else if (fullpage.deltaY < 0) { + pre(); + } + } + // 清除触摸事件 + const handleTouchmove = (event: any) => { + if (isLandspace()) { + event.preventDefault() + } + } + + //手指按下屏幕 + const handleTouchstart = (event: any) => { + startTime = Date.now() + // startX = event.changedTouches[0].clientX + startY = event.changedTouches[0].clientY + } + + //手指离开屏幕 + const handleTouchend = (event: any) => { + const endTime = Date.now() + // const endX = event.changedTouches[0].clientX + const endY = event.changedTouches[0].clientY + //判断按下的时长 + if (endTime - startTime > 2000) { + return + } + //滑动的方向 + let direction = ""; + //先判断用户滑动的距离,是否合法,合法:判断滑动的方向 注意 距离要加上绝对值 + if (Math.abs(endY - startY) > 10) { + //滑动方向 + direction = endY - startY > 0 ? "down" : "up" + } else { + return + } + //用户做了合法的滑动操作 + // console.log('方向'+direction) + if (direction === 'up') { + next(); + } + if (direction === 'down') { + pre(); + } + } + + const hotelImages = [ + utils.getAssetsFile('imgs/banners/hotel/3.jpg'), + utils.getAssetsFile('imgs/banners/hotel/1.jpg'), + utils.getAssetsFile('imgs/banners/hotel/2.jpg') + ] + + const restaurantImages = [ + utils.getAssetsFile('imgs/banners/restaurant/3.jpg'), + utils.getAssetsFile('imgs/banners/restaurant/1.jpg'), + utils.getAssetsFile('imgs/banners/restaurant/2.jpg') + ] + + + const schoolImages = [ + utils.getAssetsFile('imgs/banners/school/3.jpg'), + utils.getAssetsFile('imgs/banners/school/1.jpg'), + utils.getAssetsFile('imgs/banners/school/2.jpg') + ] + + + const franchiseImages = [ + utils.getAssetsFile('imgs/banners/franchise/3.jpg'), + utils.getAssetsFile('imgs/banners/franchise/1.jpg'), + utils.getAssetsFile('imgs/banners/franchise/2.jpg') + ] + + const bannerImages = ref>([]) + + const isLandspace = () => { + return document.body.clientWidth > document.body.clientHeight + } + + return { + fullPageEl, + fullPageContainerEl, + mouseWheelHandle, + handleTouchmove, + handleTouchstart, + handleTouchend, + showOptionsPage, + hideOptionsPage, + showArraw, + showOptionsPortrait, + showOptionsLandspace, + move, + pre, + next, + swiperWindowEl, + + hotelImages, + restaurantImages, + schoolImages, + franchiseImages, + bannerImages, + + showDetailWinPortrait, + showDetailWinLandspace, + showSwiperMaskWin, + hideSwiperMaskWin, + isLandspace, + aboutusimg, + // calcOneImageSize, + contactus, + stopEvent + } + } +}) diff --git a/src/pages/index/Index.vue b/src/pages/index/Index.vue new file mode 100644 index 0000000..c787bba --- /dev/null +++ b/src/pages/index/Index.vue @@ -0,0 +1,425 @@ + + + + + diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..9cea08f --- /dev/null +++ b/src/style.css @@ -0,0 +1,87 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; + overflow: hidden; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} + +button:hover { + border-color: #646cff; +} + +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +.card { + padding: 2em; +} + +#app { + /* max-width: 1280px; */ + margin: 0 auto; + padding: 0; + text-align: center; + width: 100%; + height: 100%; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + + a:hover { + color: #747bff; + } + + button { + background-color: #f9f9f9; + } +} \ No newline at end of file diff --git a/src/util/utils.ts b/src/util/utils.ts new file mode 100644 index 0000000..bb8e4ff --- /dev/null +++ b/src/util/utils.ts @@ -0,0 +1,7 @@ +// 获取assets静态资源 +const getAssetsFile = (url: string) => { + return new URL(`../assets/${url}`, import.meta.url).href; +}; +export default { + getAssetsFile, +}; \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..c54e602 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo new file mode 100644 index 0000000..51b38c2 --- /dev/null +++ b/tsconfig.app.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./src/main.ts","./src/module.d.ts","./src/vite-env.d.ts","./src/components/swiper/swiperwin.ts","./src/pages/index/index.ts","./src/util/utils.ts","./src/app.vue","./src/components/helloworld.vue","./src/components/swiper/swiperwin.vue","./src/pages/index/index.vue"],"version":"5.6.2"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..0d3d714 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/tsconfig.node.tsbuildinfo b/tsconfig.node.tsbuildinfo new file mode 100644 index 0000000..98ef2f9 --- /dev/null +++ b/tsconfig.node.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./vite.config.ts"],"version":"5.6.2"} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..fb5490d --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import path from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + base: process.env.NODE_ENV === 'production' ? '/webtest/web1/' : '/', + resolve: { + alias: { + '@': path.resolve(__dirname, 'src') + } + } +})