diff --git a/.gitignore b/.gitignore index e78baed..a547bf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,143 +1,24 @@ -# ---> Vue -# gitignore template for Vue.js projects -# -# Recommended template: Node.gitignore - -# TODO: where does this rule come from? -docs/_book - -# TODO: where does this rule come from? -test/ - -# ---> Node # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* +pnpm-debug.log* lerna-debug.log* -.pnpm-debug.log* -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt +node_modules dist +dist-ssr +*.local -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - +# 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..515cfb0 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ + + + + + + + 内向基金|NX Fund + + + + + + + +
+ + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..99e6081 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1441 @@ +{ + "name": "web2", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web2", + "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", + "less": "^4.5.1", + "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/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "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/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "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/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "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/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, + "node_modules/less": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/less/-/less-4.5.1.tgz", + "integrity": "sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "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/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "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/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "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/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/sax": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true + }, + "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": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "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..7c6e1be --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "web2", + "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", + "less": "^4.5.1", + "typescript": "^5.5.3", + "vite": "^5.4.1", + "vue-tsc": "^2.0.29" + }, + "packageManager": "pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184" +} 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/logo-test.png b/src/assets/imgs/logo-test.png new file mode 100644 index 0000000..4aa660d Binary files /dev/null and b/src/assets/imgs/logo-test.png 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.less b/src/pages/index/Index.less new file mode 100644 index 0000000..63801b1 --- /dev/null +++ b/src/pages/index/Index.less @@ -0,0 +1,1966 @@ +/* 颜色变量 */ +@bg-brand: #2e3192; +@text-gold: #ecc129; +@text-brand: #2e3192; +@bg-white: #ffffff; +@text-gray: #666666; +@text-white: #ffffff; + +/* 字体大小变量 */ +@text-xs: 0.75rem; +@text-sm: 0.875rem; +@text-base: 1rem; +@text-lg: 1.125rem; +@text-xl: 1.25rem; +@text-2xl: 1.5rem; +@text-fxl: 2rem; +@text-xxs: 0.6rem; + +/* 间距变量 */ +@spacing-1: 0.25rem; +@spacing-2: 0.5rem; +@spacing-3: 0.75rem; +@spacing-4: 1rem; +@spacing-5: 1.25rem; +@spacing-6: 1.5rem; +@spacing-8: 2rem; +@spacing-10: 2.5rem; +@spacing-12: 3rem; + +/* 高度和宽度变量 */ +@h-4: 1rem; +@h-5: 1.25rem; +@h-6: 1.5rem; +@h-8: 2rem; +@h-10: 2.5rem; +@h-12: 3rem; +@h-20: 5rem; +@h-63: 252px; +@h-94: 376px; +@h-screen: 100vh; +@h-1: 0.25rem; +@h-2-thirds: 66.666667%; + +@w-4: 1rem; +@w-6: 1.5rem; +@w-8: 2rem; +@w-10: 2.5rem; +@w-12: 3rem; +@w-16: 4rem; +@w-24: 6rem; +@w-32: 8rem; +@w-40: 10rem; +@w-63: 252px; +@w-94: 376px; + +/* Flexbox 和布局 */ +.flex { + display: flex; +} + +.flex-col { + flex-direction: column; +} + +.flex-row { + flex-direction: row; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.items-center { + align-items: center; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.flex-grow { + flex-grow: 1; +} + +.flex-grow-0 { + flex-grow: 0; +} + +.flex-1 { + flex: 1 1 0%; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +/* 定位 */ +.relative { + position: relative; +} + +.absolute { + position: absolute; +} + +.fixed { + position: fixed; +} + +.top-0 { + top: 0; +} + +.top-8 { + top: 2rem; +} + +.top-20 { + top: 5rem; +} + +.left-0 { + left: 0; +} + +.left-1\/2 { + left: 50%; +} + +.right-32 { + right: 8rem; +} + +.right-150px { + right: 150px; +} + +.bottom-0 { + bottom: 0; +} + +.bottom-5 { + bottom: 1.25rem; +} + +.bottom-7 { + bottom: 1.75rem; +} + +.bottom-12 { + bottom: 3rem; +} + +.-right-32 { + right: -8rem; +} + +.-ml-8 { + margin-left: -2rem; +} + +.-mt-6 { + margin-top: -1.5rem; +} + +.gongzhonghao-title { + margin-bottom: 0.8rem; +} + + +/* 变换 - 基础工具类保留,但section使用状态类 */ +.transform-none { + transform: none; +} + +.translate-y-0 { + transform: translateY(0); +} + +.translate-y-full { + transform: translateY(100%); +} + +.-translate-y-full { + transform: translateY(-100%); +} + +.-translate-y-5 { + transform: translateY(-1.25rem); +} + +.translate-y-5 { + transform: translateY(1.25rem); +} + +.translate-y-10 { + transform: translateY(2.5rem); +} + +.translate-y-20 { + transform: translateY(5rem); +} + +.translate-y-40 { + transform: translateY(10rem); +} + +.translate-y-96 { + transform: translateY(24rem); +} + +.-translate-y-20 { + transform: translateY(-5rem); +} + +/* 性能优化的动画类 */ +.section-transition { + transition: transform 1000ms cubic-bezier(0.25, 0.46, 0.45, 0.94); + will-change: transform; +} + +.element-fade-in { + transition: opacity 800ms ease-out, transform 800ms ease-out; + will-change: opacity, transform; +} + +/* 优化GPU加速,避免不必要的层创建 */ +.transform-gpu { + &.animating { + will-change: transform; + backface-visibility: hidden; + -webkit-backface-visibility: hidden; + } + + &.animated { + will-change: auto; + } +} + +/* 优化背景动画性能 */ +.scale_rotate { + animation: scale_rotate 30s linear infinite; + transform-origin: 25% 25%; + will-change: transform; + + /* 移动端禁用复杂动画以提升性能 */ + @media (max-width: 768px) { + animation: none; + } +} + +/* 尺寸 */ +.w-full { + width: 100%; +} + +.h-full { + height: 100%; +} + +.min-h-screen { + min-height: 100vh; +} + +.min-w-screen { + min-width: 100vw; +} + +.w-auto { + width: auto; +} + +.h-auto { + height: auto; +} + +.max-w-4xl { + max-width: 56rem; +} + +.max-w-5xl { + max-width: 64rem; +} + +.max-w-team { + max-width: 500px; +} + +.h-screen { + height: 100vh; +} + +.w-63 { + width: 252px; +} + +/* 确保w-63类在响应式设计中正常工作 */ +@media (max-width: 768px) { + .w-63 { + width: 252px; + } +} + +@media (min-width: 769px) { + .w-63 { + width: 252px; + } +} + +/* 新增的响应式宽度类 */ +@media (min-width: 768px) { + .md\:w-96 { + width: 24rem; + /* 384px */ + } +} + +@media (min-width: 1024px) { + .lg\:w-120 { + width: 30rem; + /* 480px */ + } +} + +/* 合伙人页面对齐样式 */ +.partner-image-container { + min-height: 376px; + /* 与文字内容高度匹配 */ +} + +.partner-text-container { + min-height: 376px; + /* 确保文字容器高度一致 */ +} + +@media (max-width: 768px) { + .partner-image-container { + min-height: 252px; + max-height: 252px; + } + + .partner-text-container { + min-height: auto; + max-height: 280px; + overflow: hidden; + } +} + +.h-63 { + height: 252px; +} + +.w-94 { + width: 376px; +} + +.h-94 { + height: 376px; +} + +.w-8 { + width: 2rem; +} + +.h-8 { + height: 2rem; +} + +.h-20 { + height: 5rem; +} + +.w-40 { + width: 10rem; +} + +.w-12 { + width: 3rem; +} + +.h-12 { + height: 3rem; +} + +.w-16 { + width: 4rem; +} + +.h-4 { + height: 1rem; +} + +.w-24 { + width: 6rem; +} + +.h-5 { + height: 1.25rem; +} + +.w-32 { + width: 8rem; +} + +/* 颜色 */ +.bg-brand { + background-color: @bg-brand !important; +} + +.bg-white { + background-color: @bg-white; +} + +.text-white { + color: @text-white; +} + +.text-black { + color: #000000; +} + +.text-gold { + color: @text-gold; +} + +.text-brand { + color: @text-brand; +} + +.text-brend { + color: #2e3192; +} + +.text-grayy { + color: #666666; +} + +.text-xxs { + font-size: @text-xxs; +} + +/* 字体 */ +.text-xs { + font-size: @text-xs; +} + +.text-sm { + font-size: @text-sm; +} + +.text-base { + font-size: @text-base; +} + +.text-lg { + font-size: @text-lg; +} + +.text-xl { + font-size: @text-xl; +} + +.text-2xl { + font-size: @text-2xl; +} + +.text-fxl { + font-size: @text-fxl; +} + +.font-light { + font-weight: 300; +} + +.font-normal { + font-weight: 400; +} + +.font-black { + color: black; +} + +.font-bold { + font-weight: 700; +} + +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.leading-8 { + line-height: 2rem; +} + +.leading-9 { + line-height: 2.25rem; +} + +.leading-10 { + line-height: 2.5rem; +} + +.leading-loose { + line-height: 2; +} + +.leading-normal { + line-height: 1.5; +} + +/* 边距和内边距 */ +.p-8 { + padding: 2rem; +} + +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.px-8 { + padding-left: 2rem; + padding-right: 2rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; + text-align: left; +} + +.my-8 { + margin-top: 2rem; + margin-bottom: 2rem; +} + +.my-12 { + margin-top: 3rem; + margin-bottom: 3rem; +} + +.m-auto { + margin: auto; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mt-5 { + margin-top: 1.25rem; +} + +.mt-6 { + margin-top: 1.5rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.mb-6 { + margin-bottom: 1.5rem; +} + +.mb-10 { + margin-bottom: 2.5rem; +} + +.mb-32 { + margin-bottom: 8rem; +} + +.mb-5 { + margin-bottom: 1.25rem; +} + +.mx-9 { + margin-left: 2.25rem; + margin-right: 2.25rem; +} + +.ml-auto { + margin-left: auto; +} + +.mr-4 { + margin-right: 1rem; +} + +.my-auto { + margin-top: auto; + margin-bottom: auto; +} + +/* 透明度 */ +.opacity-0 { + opacity: 0; +} + +.opacity-100 { + opacity: 1; +} + +/* 显示和隐藏 */ +.overflow-hidden { + overflow: hidden; +} + + + +.z-0 { + z-index: 0; +} + +.z-10 { + z-index: 10; +} + +.z-20 { + z-index: 20; +} + +.z-50 { + z-index: 50; +} + +/* 变换 */ +.transform-gpu { + will-change: transform; + backface-visibility: hidden; + -webkit-backface-visibility: hidden; +} + +.transition-all { + transition: all 0.3s ease-in-out; +} + +.transition-colors { + transition: color 0.3s ease-in-out; +} + +.transition-transform { + transition: transform 0.3s ease-in-out; +} + +.duration-1000 { + transition-duration: 1000ms; +} + +/* 对齐 */ +.align-text-bottom { + vertical-align: text-bottom; +} + +.inline-block { + display: inline-block; +} + +.block { + display: block; +} + +/* 悬停效果 */ +.hover\:scale-125:hover { + transform: scale(1.25); +} + +.cursor-pointer { + cursor: pointer; +} + +/* 动画 */ +@keyframes scale_rotate { + 0% { + transform: scale(1) rotate(0deg); + opacity: 0.8; + } + + 25% { + transform: scale(1.1) rotate(90deg); + opacity: 0.8; + } + + 50% { + transform: scale(1.2) rotate(180deg); + opacity: 0.7; + } + + 75% { + transform: scale(1.1) rotate(270deg); + opacity: 0.8; + } + + 100% { + transform: scale(1) rotate(360deg); + opacity: 0.8; + } +} + +.scale_rotate { + animation: scale_rotate 30s linear infinite; + transform-origin: 25% 25%; + will-change: transform; +} + +@keyframes bounce { + + 0%, + 100% { + transform: translateY(0); + } + + 50% { + transform: translateY(-10px); + } +} + +.animate-bounce { + animation: bounce 2s infinite; +} + +@keyframes pulse { + + 0%, + 100% { + opacity: 1; + } + + 50% { + opacity: 0.5; + } +} + +.animate-pulse { + animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} + +/* 文字从下到上渐入动画 */ +@keyframes fade-in-up { + 0% { + opacity: 0; + transform: translateY(30px) !important; + } + + 100% { + opacity: 1; + transform: translateY(0) !important; + } +} + +.fade-in-up { + animation: fade-in-up 0.8s ease-out forwards !important; +} + +/* 斜体效果 */ +.incline { + font-style: italic; +} + +/* 对象适配 */ +.object-cover { + object-fit: cover; +} + +/* 响应式设计 */ +@media (max-width: 768px) { + + /* 确保非封面页内容水平垂直居中 */ + section:not(:first-child) { + padding: 0; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + } + + /* 封面页保持全屏覆盖 */ + section:first-child { + height: 100vh; + padding: 0; + } + + /* 封面页内容竖屏 */ + .cover-content { + padding: 1rem; + } + + /* 移动端滚动状态样式保持一致 */ + section.prev, + section.active, + section.next { + display: flex !important; + align-items: center !important; + justify-content: center !important; + } + + .cover-logo { + width: 100px !important; + height: auto; + } + + .cover-title { + margin-top: 0.5rem; + margin-bottom: 1rem; + } + + .cover-title p { + font-size: 1.25rem !important; + } + + .cover-info { + font-size: 0.7rem; + line-height: 1.4; + } + + .cover-text { + font-size: 0.7rem; + padding: 0; + } + + .mb-32 { + margin-bottom: 2rem; + } + + .md\:flex-row { + flex-direction: column; + } + + .md\:flex-row-reverse { + flex-direction: column; + } + + .md\:text-2xl { + font-size: 1rem; + } + + .md\:text-3xl { + font-size: 1.125rem; + } + + .md\:text-base { + font-size: 0.8rem; + } + + .md\:text-sm { + font-size: 0.7rem; + } + + .md\:text-xxs { + font-size: 0.6rem; + } + + .text-fxl { + font-size: 1.125rem; + } + + .text-lg { + font-size: 0.8rem; + } + + .md\:leading-8 { + line-height: 1.4rem; + } + + .md\:leading-15 { + line-height: 1.8rem; + } + + .md\:h-94 { + height: 252px; + } + + .md\:w-94 { + width: 252px; + } + + .md\:h-63 { + height: 252px; + } + + .md\:w-63 { + width: 252px; + } + + .md\:h-24 { + height: 6rem; + } + + .md\:w-24 { + width: 6rem; + } + + .md\:h-20 { + height: 5rem; + } + + .md\:min-h-20 { + min-height: 5rem; + } + + .md\:h-8 { + height: 2rem; + } + + .md\:w-8 { + width: 2rem; + } + + .md\:bottom-12 { + bottom: 3rem; + } + + .md\:h-2\/3 { + height: 66.666667%; + } + + .md\:right-auto { + right: auto; + } + + .md\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } + + .md\:mb-5 { + margin-bottom: 1.25rem; + } + + .md\:mb-12 { + margin-bottom: 3rem; + } + + .md\:mt-5 { + margin-top: 1.25rem; + } + + .md\:mt-8 { + margin-top: 2rem; + } + + .md\:mr-12 { + margin-right: 3rem; + } + + .md\:ml-8 { + margin-left: 2rem; + } + + .md\:h-2\/3 { + height: 66.666667%; + } + + .md-right-auto { + right: auto; + } + + /* 使命声明页竖屏调整 */ + section .z-10 { + font-size: 1.125rem; + line-height: 1.75rem; + } + + /* 介绍页竖屏调整 */ + .max-w-4xl { + font-size: 0.875rem; + line-height: 1.5rem; + } + + .max-w-4xl .my-12 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + /* 封面页竖屏调整 */ + .text-black { + font-size: 0.875rem; + } + + .text-white { + font-size: 0.875rem; + } + + .text-black .flex-nowrap { + font-size: 1.5rem; + } + + /* 联系我们页竖屏调整 */ + .text-center .font-black { + font-size: 0.7rem; + line-height: 1.25rem; + } + + .text-center .text-2xl { + font-size: 1.25rem; + padding: 0; + } + + /* 合伙人页面竖屏调整 - 动态调整图片和文字尺寸 */ + .partner-text p { + font-size: clamp(0.875rem, 2.5vw, 1.125rem); + line-height: 1.6; + max-width: 90%; + margin: 0.75rem auto; + } + + .partner-text .my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } + + .partner-text .md\:my-4 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } + + .partner-text .text-fxl { + font-size: clamp(1.25rem, 4vw, 2rem); + margin-bottom: 1.5rem; + } + + .partner-section .partner-content { + gap: 1.5rem; + max-width: 95%; + flex-direction: column; + align-items: center; + justify-content: center; + margin: 0 auto; + } + + /* 合伙人图片动态尺寸调整 */ + .partner-section .partner-image { + width: clamp(150px, 30vw, 220px); + height: clamp(150px, 30vw, 220px); + flex-shrink: 0; + margin: 0 auto; + } + + .partner-section .partner-text { + min-height: auto; + text-align: left; + width: clamp(280px, 85vw, 500px); + max-width: 90%; + margin: 0 auto; + } +} + +@media (min-width: 769px) { + .md\:flex-row { + flex-direction: row; + } + + .md\:flex-row-reverse { + flex-direction: row-reverse; + } + + .md\:text-2xl { + font-size: 1.5rem; + } +} + +/* 横竖屏切换优化 - 强化水平居中 */ +@media screen and (orientation: landscape) and (max-height: 600px) { + + /* 横屏时合伙人内容横向排列 */ + .partner-content { + flex-direction: row; + gap: clamp(1rem, 4vw, 3rem); + align-items: center; + justify-content: center !important; + /* 确保水平居中 */ + max-width: 95%; + margin: 0 auto !important; + /* 强制水平居中 */ + } + + .partner-text { + text-align: left; + max-width: 45%; + margin: 0 auto; + } + + .partner-image { + flex-shrink: 0; + width: clamp(120px, 25vw, 200px); + height: clamp(120px, 25vw, 200px); + margin: 0 auto !important; + /* 确保图片也居中 */ + } + + .partner-text p { + font-size: clamp(0.75rem, 2vw, 1rem); + line-height: 1.4; + text-align: left; + /* 文字内容左对齐 */ + margin: 0 auto; + } + + .partner-text .text-fxl { + font-size: clamp(1rem, 3vw, 1.5rem); + text-align: left; + /* 标题左对齐 */ + margin: 0 auto 1rem auto; + } + + /* 投资案例区域优化 */ + .cases-row { + flex-wrap: nowrap; + justify-content: center !important; + /* 水平居中 */ + align-items: center; + } + + .case-item { + flex: 0 1 calc(25% - 1rem); + justify-content: center !important; + /* 每个项目居中 */ + align-items: center; + margin: 0 auto; + overflow: hidden; + } +} + + + +/* 通用容器居中优化 - 强化水平居中 */ +.partner-section, +.mission-section, +.intro-section, +.contact-section { + display: flex; + flex-direction: column; + align-items: center !important; + /* 水平居中 */ + justify-content: center !important; + /* 垂直居中 */ + padding: 1rem; + width: 100%; + box-sizing: border-box; +} + +.partner-content, +.mission-content, +.intro-content, +.contact-content { + display: flex; + align-items: center !important; + /* 水平居中 */ + justify-content: center !important; + /* 垂直居中 */ + width: 100%; + max-width: 95%; + margin: 0 auto !important; + /* 强制水平居中 */ + box-sizing: border-box; +} + +/* 确保所有文字区域水平垂直居中 - 强化版本 */ +.text-center { + text-align: center !important; + /* 强制文字居中 */ + margin: 0 auto !important; + /* 强制容器居中 */ + max-width: 100% !important; + width: 100%; + display: flex; + flex-direction: column; + align-items: center !important; + /* 内容水平居中 */ +} + +.text-center p { + text-align: center !important; + /* 强制文字内容居中 */ + margin: 0 auto !important; + /* 强制居中 */ + max-width: 100%; +} + +/* 投资案例响应式优化 */ +.cases-row { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + max-width: 100%; + margin: 0 auto; + padding: 1rem; +} + +.case-item { + display: flex; + justify-content: center; + align-items: center; + margin: 0.5rem; + flex: 0 1 calc(33.333% - 1rem); + overflow: hidden; + min-width: fit-content; +} + +@media screen and (orientation: portrait) { + .case-item { + flex: 0 1 calc(50% - 1rem); + overflow: hidden; + } +} + +@media screen and (orientation: landscape) and (max-height: 500px) { + .case-item { + flex: 0 1 calc(25% - 1rem); + overflow: hidden; + } + + /* 图片响应式优化 */ + img { + max-width: 100%; + height: auto; + object-fit: contain; + } + + .partner-image img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 50%; + margin-bottom: 3rem; + } + + .md\:mt-5 { + margin-top: 1.25rem; + } + + .md\:mt-8 { + margin-top: 2rem; + } + + .md\:mr-12 { + margin-right: 3rem; + } + + .md\:ml-8 { + margin-left: 2rem; + } + + .md\:h-2\/3 { + height: 66.666667%; + } + + .md-right-auto { + right: auto; + } + + /* 使命声明页竖屏调整 */ + section .z-10 { + font-size: 1.125rem; + line-height: 1.75rem; + } + + /* 介绍页竖屏调整 */ + .max-w-4xl { + font-size: 0.875rem; + line-height: 1.5rem; + } + + .max-w-4xl .my-12 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + /* 封面页竖屏调整 */ + .text-black { + font-size: 0.875rem; + } + + .text-white { + font-size: 0.875rem; + } + + .text-black .flex-nowrap { + font-size: 1.5rem; + } + + /* 联系我们页竖屏调整 */ + .text-center .font-black { + font-size: 0.7rem; + line-height: 1.25rem; + } + + .text-center .text-2xl { + font-size: 1.25rem; + } + + /* 合伙人页面竖屏调整 */ + .partner-text p { + font-size: 0.875rem; + /* 增大字体 */ + line-height: 1.5rem; + /* 增大行高 */ + } + + .partner-text .my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } + + .partner-text .md\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + .partner-text .text-fxl { + font-size: 1.5rem; + /* 增大标题字体 */ + } + + .partner-section .partner-content { + gap: 2rem; + /* 增大间距 */ + max-width: 90%; + /* 限制最大宽度,确保居中 */ + } + + .partner-section .partner-image { + width: 220px; + /* 适当增大图片 */ + height: 220px; + } + + .partner-section .partner-text { + min-height: 220px; + } +} + +/* 横屏模式下的合伙人页面优化 */ +@media (min-width: 769px) { + .partner-section { + padding: 2rem; + min-height: 100vh; + } + + .partner-section .partner-content { + max-width: clamp(700px, 85vw, 1000px); + gap: clamp(2rem, 4vw, 5rem); + align-items: center; + justify-content: center; + } + + .partner-section .partner-image { + width: clamp(250px, 30vw, 350px); + height: clamp(250px, 30vw, 350px); + flex-shrink: 0; + } + + .partner-text { + text-align: left; + max-width: 45%; + margin: 0 auto; + } + + .partner-text p { + font-size: clamp(1rem, 2.5vw, 1.25rem); + /* 横屏时动态字体大小 */ + line-height: 1.6; + text-align: left; + } + + .partner-text .text-fxl { + font-size: clamp(1.5rem, 4vw, 2.25rem); + text-align: left; + line-height: 10px; + } + + .partner-text-1 { + line-height: 35px; + font-size: 1.5rem; + } + + .partner-text .md\:my-4 { + margin-top: clamp(1rem, 2vw, 1.5rem); + margin-bottom: clamp(1rem, 2vw, 1.5rem); + } +} + +/* 主容器 */ +.max-bg { + width: 100%; + height: 100vh; + overflow: hidden; + background-color: @bg-brand; +} + +/* 背景动画容器 */ +.movement { + position: relative; +} + +/* 文字阴影 */ +.text-shadow { + text-shadow: -0.15em -0.15em 0 #ecc129; +} + +/* 宽度响应式 */ +@media (max-width: 768px) { + .max-w-4xl { + max-width: 100%; + padding: 0 1rem; + } +} + +/* 自定义滚动条隐藏 */ +.max-bg { + -ms-overflow-style: none; + scrollbar-width: none; +} + +.max-bg::-webkit-scrollbar { + display: none; +} + +/* 自定义类名 */ +.CoverSlide_logo__2K2qV { + display: inline-block; +} + +.CoverSlide_opacityContent__3oJ1x { + color: white; + user-select: none; +} + +/* 封面页动画元素 */ +.cover-logo-container { + transition: transform 0.8s ease-out, opacity 0.8s ease-out; +} + +.cover-logo-container.animate-in { + opacity: 1 !important; + transform: translateY(0) !important; +} + +.cover-title { + transition: transform 0.8s ease-out, opacity 0.8s ease-out; +} + +.cover-title.animate-in { + opacity: 1 !important; + transform: translateY(0) !important; +} + +/* 修正类选择器 */ +.absolute .right-0, +.absolute.right-0 { + right: 0; +} + +.md\:h-2-thirds { + height: 66.666667%; +} + +.md-h-2-thirds { + height: 66.666667%; +} + +/* 页面滚动状态管理 */ +section { + transition: transform 1s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} + +/* 滚动状态管理 - 使用更高特异性选择器 */ +section.prev { + position: absolute !important; + top: 0 !important; + left: 0 !important; + width: 100% !important; + height: 100vh !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + transform: translateY(-100%) !important; +} + +section.active { + position: absolute !important; + top: 0 !important; + left: 0 !important; + width: 100% !important; + height: 100vh !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + transform: translateY(0) !important; +} + +section.next { + position: absolute !important; + top: 0 !important; + left: 0 !important; + width: 100% !important; + height: 100vh !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + transform: translateY(100%) !important; +} + +/* 合伙人页面样式 - 修复显示和居中 */ +.partner-section { + display: flex; + align-items: center; + justify-content: center; + background-color: @bg-white; + padding: 2rem 1rem; + min-height: 100vh; + width: 100%; + box-sizing: border-box; + + .partner-content { + max-width: clamp(600px, 90vw, 1000px); + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: clamp(2rem, 5vw, 4rem); + margin: 0 auto; + } + + .partner-image { + width: clamp(200px, 25vw, 300px); + height: clamp(200px, 25vw, 300px); + flex-shrink: 0; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } + } + + .partner-text { + flex: 1; + min-height: clamp(200px, 25vw, 300px); + display: flex; + flex-direction: column; + justify-content: center; + text-align: left; + max-width: 90%; + margin: 0 auto; + } +} + +@media (min-width: 769px) { + .partner-section .partner-image { + width: 376px; + height: 376px; + } + + .partner-section .partner-text { + min-height: 376px; + } +} + +/* 引用标记动画 - 增强动画效果 */ +.quote-mark { + display: inline-block; + opacity: 0; + transition: all 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} + +/* 初始状态 */ +.quote-left { + transform: translateY(-60px); +} + +.quote-right { + transform: translateY(60px); +} + +/* 动画状态 - 左引号从上往下,右引号从下往上 */ +.quote-mark.animate-in { + opacity: 1 !important; +} + +.quote-left.animate-in { + transform: translateY(0); + animation: quoteLeftSlide 1.2s ease-out; +} + +.quote-right.animate-in { + transform: translateY(0); + animation: quoteRightSlide 1.2s ease-out; +} + +/* 动画关键帧 */ +@keyframes quoteLeftSlide { + 0% { + transform: translateY(-60px); + opacity: 0; + } + + 60% { + transform: translateY(-10px); + opacity: 0.8; + } + + 100% { + transform: translateY(0); + opacity: 1; + } +} + +@keyframes quoteRightSlide { + 0% { + transform: translateY(60px); + opacity: 0; + } + + 60% { + transform: translateY(10px); + opacity: 0.8; + } + + 100% { + transform: translateY(0); + opacity: 1; + } +} + +@media screen and (orientation: portrait) and (max-width: 480px) { + + /* 小屏竖屏特殊优化 */ + body { + overflow: auto; + margin: 0; + display: flex; + justify-content: center; + /* 主体水平居中 */ + } + + #app { + padding: 0.5rem; + margin: 0 auto !important; + /* 强制居中 */ + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + /* 内容垂直居中 */ + } + + .cases-content { + padding: 60px 5px !important; + } + + .case-title { + padding: 0; + } + + /* 合伙人文字进一步放大并居中 */ + .partner-text p { + font-size: 1rem; + line-height: 1.4rem; + padding: 0 1rem; + text-align: left !important; + /* 强制文字居中 */ + margin: 0.75rem auto !important; + /* 居中边距 */ + max-width: 100%; + } + + /* 线条滚动触发动画样式 */ + .line-static { + width: 60px !important; + } + + .line-animated.animate-in { + width: 60px !important; + } + + .line-container { + margin-top: 3px; + width: 60px !important; + } + + .partner-text .text-fxl { + // font-size: 1.6rem; + height: 20px; + line-height: 20px; + text-align: left !important; + /* 强制标题居中 */ + margin: 5px auto 0 auto !important; + padding-bottom: 10px; + /* 居中边距 */ + } + + /* 初始状态 */ + .quote-left { + transform: translateY(-30px); + } + + .quote-right { + transform: translateY(30px); + } + + .partner-section .partner-content { + max-width: clamp(700px, 85vw, 1000px); + gap: 0 !important; + align-items: center; + justify-content: center; + } + + .partner-section .partner-image { + margin-top: 0; + padding: 0; + width: clamp(200px, 25vw, 300px); + height: clamp(200px, 25vw, 300px); + flex-shrink: 0; + } + + /* 封面页优化并居中 */ + .cover-title p { + font-size: 1.4rem !important; + text-align: center !important; + /* 强制居中 */ + margin: 0 auto !important; + } + + .cover-info { + font-size: 0.8rem; + text-align: center !important; + /* 强制居中 */ + margin: 0 auto !important; + } + + /* 使命声明页优化并居中 */ + section .z-10 { + font-size: 1.2rem; + line-height: 1.8rem; + text-align: center !important; + /* 强制居中 */ + margin: 0 auto !important; + /* 强制居中 */ + max-width: 100%; + } + + /* 介绍页优化并居中 */ + .max-w-4xl { + font-size: 1rem; + line-height: 1.6rem; + text-align: center !important; + /* 强制居中 */ + margin: 0 auto !important; + /* 强制居中 */ + max-width: 95%; + } +} + +.line-static { + position: absolute; + top: 0; + left: 0; + height: 4px; +} + +/* 线条滚动触发动画样式 */ +.line-animated { + width: 0; + transition: width 0.8s ease-in-out; + .line-static(); +} + +.line-animated.animate-in { + width: 73px; + transition: width 0.8s ease-in-out; + .line-static(); +} + +.line-container { + position: relative; + height: 4px; + width: 73px; +} + + +/* 文字动画效果 - 确保所有文字都有动画 */ +.text-animate { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; +} + +.text-animate.animate-in { + opacity: 1; + transform: translateY(0); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; +} + +/* 投资案例页面样式 */ +.cases-content { + padding: 60px 20px; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + /* 移除min-height,让flex容器控制高度 */ +} + +.cases-grid { + display: flex; + flex-direction: column; + gap: 2rem; + width: 100%; + max-width: 900px; +} + +.cases-row { + display: flex; + justify-content: space-between; + align-items: center; + gap: 2rem; + transition: opacity 0.8s ease-out, transform 0.8s ease-out; +} + +.cases-row-2 { + justify-content: center; +} + +.cases-row.animate-in { + opacity: 1 !important; + transform: translateY(0) !important; +} + +.case-item { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + transition: transform 0.3s ease; + min-width: fit-content; +} + +.case-item:hover { + transform: scale(1.25); +} + +.case-item img { + max-width: 120px; + max-height: 60px; + width: auto; + height: auto; + object-fit: contain; + transition: transform 0.3s ease; +} + +/* 确保投资案例页面有足够的高度显示内容 */ +section:nth-child(6) { + /* 投资案例页是第6个section */ + min-height: fit-content; + padding: 2rem 0; +} + +/* 使命声明页样式 */ +.mission-text { + line-height: 50px; + padding: 0; +} + +.mission-line { + line-height: 1.5; + margin-left: 0.5rem; +} + +/* 介绍页样式 */ +.intro-text { + text-align: center; +} + +.intro-paragraph { + line-height: 1.8; +} + +@media (max-width: 768px) { + + /* 使命声明页竖屏 */ + .mission-text { + font-size: 1.125rem; + line-height: 1.5; + } + + .mission-line { + margin-bottom: 0.5rem; + } + + .mission-section .mt-4 { + margin-top: 0.5rem; + } + + /* 介绍页竖屏 */ + .intro-text { + font-size: 0.875rem; + line-height: 1.5; + } + + .intro-paragraph { + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } +} + +@media (min-width: 769px) { + .mission-text { + line-height: 50px; + } + + .intro-text { + text-align: left; + } +} + +/* 图片动画 */ +.partner-img-animation { + transition: transform 0.8s ease-out, opacity 0.8s ease-out; +} + +.partner-img-animation.animate-in { + opacity: 1 !important; + transform: translateY(0) !important; +} \ 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..e7927aa --- /dev/null +++ b/src/pages/index/Index.vue @@ -0,0 +1,698 @@ + + + + + diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..a922c0d --- /dev/null +++ b/src/style.css @@ -0,0 +1,238 @@ +: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; + } +} + +/* 竖屏响应式优化 */ +@media screen and (orientation: portrait) and (max-width: 768px) { + body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; + overflow: hidden; + } + + #app { + margin: 0 auto; + padding: 1rem; + text-align: center; + width: 100%; + height: 100%; + box-sizing: border-box; + } + + /* 文字大小自适应 */ + h1 { + font-size: 2.2em; + line-height: 1.2; + } + + h2 { + font-size: 1.8em; + } + + h3 { + font-size: 1.4em; + } + + p { + font-size: 1rem; + line-height: 1.6; + max-width: 100%; + margin: 0 auto; + padding: 0 1rem; + } + + /* 容器居中 */ + .partner-section, + .mission-section, + .intro-section { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 1rem; + } + + /* 合伙人内容居中 */ + .partner-content { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + max-width: 100%; + width: 100%; + } + + /* 合伙人文字放大 */ + .partner-text p { + font-size: 1.1rem; + line-height: 1.7; + max-width: 90%; + margin: 0.5rem auto; + } + + .partner-text .text-fxl { + font-size: 1.8rem; + margin-bottom: 1rem; + } + + /* 投资案例区域居中 */ + .cases-row { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + max-width: 100%; + margin: 0 auto; + } + + .case-item { + flex: 0 1 calc(33.333% - 1rem); + margin: 0.5rem; + display: flex; + justify-content: center; + align-items: center; + } + + /* 图片响应式 */ + img { + max-width: 100%; + height: auto; + object-fit: contain; + } + + /* 文字区域宽度自适应 */ + .text-center { + max-width: 95%; + margin: 0 auto; + padding: 0 1rem; + } +} + +/* 横屏优化 */ +@media screen and (orientation: landscape) and (max-height: 500px) { + body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; + overflow: hidden; + } + + #app { + margin: 0 auto; + padding: 0.5rem; + text-align: center; + width: 100%; + height: 100%; + } + + /* 文字大小调整 */ + h1 { + font-size: 2.5em; + line-height: 1.1; + } + + .partner-text p { + font-size: 0.95rem; + line-height: 1.5; + } + + .partner-text .text-fxl { + font-size: 1.5rem; + } + + /* 合伙人内容横向排列 */ + .partner-content { + flex-direction: row; + gap: 2rem; + max-width: 90%; + } +} \ 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..8b718a5 --- /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: './', + resolve: { + alias: { + '@': path.resolve(__dirname, 'src') + } + } +})