diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..5995f9a --- /dev/null +++ b/.env.development @@ -0,0 +1 @@ +VITE_API_BASE_URL = 'https://opencomputing.ai' \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..f4aef46 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + 开元云元境 - 一站式AI创作平台 + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9799d16 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3653 @@ +{ + "name": "yuanjing", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "yuanjing", + "version": "0.0.0", + "dependencies": { + "@yeger/vue-masonry-wall": "^6.1.0", + "antd": "^6.3.3", + "axios": "^1.13.6", + "element-plus": "^2.13.5", + "less": "^4.5.1", + "less-loader": "^12.3.1", + "pinia": "^3.0.4", + "pinia-plugin-persistedstate": "^4.7.1", + "router": "^2.2.0", + "swiper": "^12.1.2", + "vue": "^3.5.13", + "vue-router": "^5.0.3", + "vue-waterfall-plugin-next": "^3.0.1" + }, + "devDependencies": { + "@types/node": "^25.4.0", + "@types/swiper": "^6.0.0", + "@vitejs/plugin-vue": "^5.2.3", + "@vue/tsconfig": "^0.7.0", + "typescript": "~5.8.3", + "vite": "^6.3.5", + "vue-tsc": "^2.2.12" + } + }, + "node_modules/@ant-design/colors": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-8.0.1.tgz", + "integrity": "sha512-foPVl0+SWIslGUtD/xBr1p9U4AKzPhNYEseXYRRo5QSzGACYZrQbe11AYJbYfAWnWSpGBx6JjBmSeugUsD9vqQ==", + "dependencies": { + "@ant-design/fast-color": "^3.0.0" + } + }, + "node_modules/@ant-design/cssinjs": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-2.1.2.tgz", + "integrity": "sha512-2Hy8BnCEH31xPeSLbhhB2ctCPXE2ZnASdi+KbSeS79BNbUhL9hAEe20SkUk+BR8aKTmqb6+FKFruk7w8z0VoRQ==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@emotion/hash": "^0.8.0", + "@emotion/unitless": "^0.7.5", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "stylis": "^4.3.4" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/cssinjs-utils": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@ant-design/cssinjs-utils/-/cssinjs-utils-2.1.2.tgz", + "integrity": "sha512-5fTHQ158jJJ5dC/ECeyIdZUzKxE/mpEMRZxthyG1sw/AKRHKgJBg00Yi6ACVXgycdje7KahRNvNET/uBccwCnA==", + "dependencies": { + "@ant-design/cssinjs": "^2.1.2", + "@babel/runtime": "^7.23.2", + "@rc-component/util": "^1.4.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@ant-design/fast-color": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@ant-design/fast-color/-/fast-color-3.0.1.tgz", + "integrity": "sha512-esKJegpW4nckh0o6kV3Tkb7NPIZYbPnnFxmQDUmL08ukXZAvV85TZBr70eGuke/CIArLaP6aw8lt9KILjnWuOw==", + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@ant-design/icons": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@ant-design/icons/-/icons-6.1.0.tgz", + "integrity": "sha512-KrWMu1fIg3w/1F2zfn+JlfNDU8dDqILfA5Tg85iqs1lf8ooyGlbkA+TkwfOKKgqpUmAiRY1PTFpuOU2DAIgSUg==", + "dependencies": { + "@ant-design/colors": "^8.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz", + "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==" + }, + "node_modules/@ant-design/react-slick": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-2.0.0.tgz", + "integrity": "sha512-HMS9sRoEmZey8LsE/Yo6+klhlzU12PisjrVcydW3So7RdklyEd2qehyU6a7Yp+OYN72mgsYs3NFCyP2lCPFVqg==", + "dependencies": { + "@babel/runtime": "^7.28.4", + "clsx": "^2.1.1", + "json2mq": "^0.2.0", + "throttle-debounce": "^5.0.0" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz", + "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.8", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz", + "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rc-component/async-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@rc-component/async-validator/-/async-validator-5.1.0.tgz", + "integrity": "sha512-n4HcR5siNUXRX23nDizbZBQPO0ZM/5oTtmKZ6/eqL0L2bo747cklFdZGRN2f+c9qWGICwDzrhW0H7tE9PptdcA==", + "dependencies": { + "@babel/runtime": "^7.24.4" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/@rc-component/cascader": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/@rc-component/cascader/-/cascader-1.14.0.tgz", + "integrity": "sha512-Ip9356xwZUR2nbW5PRVGif4B/bDve4pLa/N+PGbvBaTnjbvmN4PFMBGQSmlDlzKP1ovxaYMvwF/dI9lXNLT4iQ==", + "dependencies": { + "@rc-component/select": "~1.6.0", + "@rc-component/tree": "~1.2.0", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/checkbox": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@rc-component/checkbox/-/checkbox-2.0.0.tgz", + "integrity": "sha512-3CXGPpAR9gsPKeO2N78HAPOzU30UdemD6HGJoWVJOpa6WleaGB5kzZj3v6bdTZab31YuWgY/RxV3VKPctn0DwQ==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/collapse": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@rc-component/collapse/-/collapse-1.2.0.tgz", + "integrity": "sha512-ZRYSKSS39qsFx93p26bde7JUZJshsUBEQRlRXPuJYlAiNX0vyYlF5TsAm8JZN3LcF8XvKikdzPbgAtXSbkLUkw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/color-picker": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@rc-component/color-picker/-/color-picker-3.1.1.tgz", + "integrity": "sha512-OHaCHLHszCegdXmIq2ZRIZBN/EtpT6Wm8SG/gpzLATHbVKc/avvuKi+zlOuk05FTWvgaMmpxAko44uRJ3M+2pg==", + "dependencies": { + "@ant-design/fast-color": "^3.0.1", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/context": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@rc-component/context/-/context-2.0.1.tgz", + "integrity": "sha512-HyZbYm47s/YqtP6pKXNMjPEMaukyg7P0qVfgMLzr7YiFNMHbK2fKTAGzms9ykfGHSfyf75nBbgWw+hHkp+VImw==", + "dependencies": { + "@rc-component/util": "^1.3.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/dialog": { + "version": "1.8.4", + "resolved": "https://registry.npmmirror.com/@rc-component/dialog/-/dialog-1.8.4.tgz", + "integrity": "sha512-Ay6PM7phkTkquplG8fWfUGFZ2GTLx9diTl4f0d8Eqxd7W1u1KjE9AQooFQHOHnhZf0Ya3z51+5EKCWHmt/dNEw==", + "dependencies": { + "@rc-component/motion": "^1.1.3", + "@rc-component/portal": "^2.1.0", + "@rc-component/util": "^1.9.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/drawer": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@rc-component/drawer/-/drawer-1.4.2.tgz", + "integrity": "sha512-1ib+fZEp6FBu+YvcIktm+nCQ+Q+qIpwpoaJH6opGr4ofh2QMq+qdr5DLC4oCf5qf3pcWX9lUWPYX652k4ini8Q==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/portal": "^2.1.3", + "@rc-component/util": "^1.9.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/dropdown": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@rc-component/dropdown/-/dropdown-1.0.2.tgz", + "integrity": "sha512-6PY2ecUSYhDPhkNHHb4wfeAya04WhpmUSKzdR60G+kMNVUCX2vjT/AgTS0Lz0I/K6xrPMJ3enQbwVpeN3sHCgg==", + "dependencies": { + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.11.0", + "react-dom": ">=16.11.0" + } + }, + "node_modules/@rc-component/form": { + "version": "1.7.2", + "resolved": "https://registry.npmmirror.com/@rc-component/form/-/form-1.7.2.tgz", + "integrity": "sha512-5C90rXH7aZvvvxB4M5ew+QxROvimdL/lqhSshR8NsyiR7HKOoGQYSitxdfENnH6/0KNFxEy2ranVe2LrTnHZIw==", + "dependencies": { + "@rc-component/async-validator": "^5.1.0", + "@rc-component/util": "^1.6.2", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/image": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@rc-component/image/-/image-1.6.0.tgz", + "integrity": "sha512-tSfn2ZE/oP082g4QIOxeehkmgnXB7R+5AFj/lIFr4k7pEuxHBdyGIq9axoCY9qea8NN0DY6p4IB/F07tLqaT5A==", + "dependencies": { + "@rc-component/motion": "^1.0.0", + "@rc-component/portal": "^2.1.2", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/input": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@rc-component/input/-/input-1.1.2.tgz", + "integrity": "sha512-Q61IMR47piUBudgixJ30CciKIy9b1H95qe7GgEKOmSJVJXvFRWJllJfQry9tif+MX2cWFXWJf/RXz4kaCeq/Fg==", + "dependencies": { + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@rc-component/input-number": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/@rc-component/input-number/-/input-number-1.6.2.tgz", + "integrity": "sha512-Gjcq7meZlCOiWN1t1xCC+7/s85humHVokTBI7PJgTfoyw5OWF74y3e6P8PHX104g9+b54jsodFIzyaj6p8LI9w==", + "dependencies": { + "@rc-component/mini-decimal": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mentions": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@rc-component/mentions/-/mentions-1.6.0.tgz", + "integrity": "sha512-KIkQNP6habNuTsLhUv0UGEOwG67tlmE7KNIJoQZZNggEZl5lQJTytFDb69sl5CK3TDdISCTjKP3nGEBKgT61CQ==", + "dependencies": { + "@rc-component/input": "~1.1.0", + "@rc-component/menu": "~1.2.0", + "@rc-component/textarea": "~1.1.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/menu": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@rc-component/menu/-/menu-1.2.0.tgz", + "integrity": "sha512-VWwDuhvYHSnTGj4n6bV3ISrLACcPAzdPOq3d0BzkeiM5cve8BEYfvkEhNoM0PLzv51jpcejeyrLXeMVIJ+QJlg==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/overflow": "^1.0.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mini-decimal": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@rc-component/mini-decimal/-/mini-decimal-1.1.3.tgz", + "integrity": "sha512-bk/FJ09fLf+NLODMAFll6CfYrHPBioTedhW6lxDBuuWucJEqFUd4l/D/5JgIi3dina6sYahB8iuPAZTNz2pMxw==", + "dependencies": { + "@babel/runtime": "^7.18.0" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@rc-component/motion": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@rc-component/motion/-/motion-1.3.1.tgz", + "integrity": "sha512-Wo1mkd0tCcHtvYvpPOmlYJz546z16qlsiwaygmW7NPJpOZOF9GBjhGzdzZSsC2lEJ1IUkWLF4gMHlRA1aSA+Yw==", + "dependencies": { + "@rc-component/util": "^1.2.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mutate-observer": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@rc-component/mutate-observer/-/mutate-observer-2.0.1.tgz", + "integrity": "sha512-AyarjoLU5YlxuValRi+w8JRH2Z84TBbFO2RoGWz9d8bSu0FqT8DtugH3xC3BV7mUwlmROFauyWuXFuq4IFbH+w==", + "dependencies": { + "@rc-component/util": "^1.2.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/notification": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@rc-component/notification/-/notification-1.2.0.tgz", + "integrity": "sha512-OX3J+zVU7rvoJCikjrfW7qOUp7zlDeFBK2eA3SFbGSkDqo63Sl4Ss8A04kFP+fxHSxMDIS9jYVEZtU1FNCFuBA==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/overflow": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@rc-component/overflow/-/overflow-1.0.0.tgz", + "integrity": "sha512-GSlBeoE0XTBi5cf3zl8Qh7Uqhn7v8RrlJ8ajeVpEkNe94HWy5l5BQ0Mwn2TVUq9gdgbfEMUmTX7tJFAg7mz0Rw==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@rc-component/resize-observer": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/pagination": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@rc-component/pagination/-/pagination-1.2.0.tgz", + "integrity": "sha512-YcpUFE8dMLfSo6OARJlK6DbHHvrxz7pMGPGmC/caZSJJz6HRKHC1RPP001PRHCvG9Z/veD039uOQmazVuLJzlw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/picker": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@rc-component/picker/-/picker-1.9.1.tgz", + "integrity": "sha512-9FBYYsvH3HMLICaPDA/1Th5FLaDkFa7qAtangIdlhKb3ZALaR745e9PsOhheJb6asS4QXc12ffiAcjdkZ4C5/g==", + "dependencies": { + "@rc-component/overflow": "^1.0.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/trigger": "^3.6.15", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=12.x" + }, + "peerDependencies": { + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@rc-component/portal": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@rc-component/portal/-/portal-2.2.0.tgz", + "integrity": "sha512-oc6FlA+uXCMiwArHsJyHcIkX4q6uKyndrPol2eWX8YPkAnztHOPsFIRtmWG4BMlGE5h7YIRE3NiaJ5VS8Lb1QQ==", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=12.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/progress": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@rc-component/progress/-/progress-1.0.2.tgz", + "integrity": "sha512-WZUnH9eGxH1+xodZKqdrHke59uyGZSWgj5HBM5Kwk5BrTMuAORO7VJ2IP5Qbm9aH3n9x3IcesqHHR0NWPBC7fQ==", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/qrcode": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@rc-component/qrcode/-/qrcode-1.1.1.tgz", + "integrity": "sha512-LfLGNymzKdUPjXUbRP+xOhIWY4jQ+YMj5MmWAcgcAq1Ij8XP7tRmAXqyuv96XvLUBE/5cA8hLFl9eO1JQMujrA==", + "dependencies": { + "@babel/runtime": "^7.24.7" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/rate": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@rc-component/rate/-/rate-1.0.1.tgz", + "integrity": "sha512-bkXxeBqDpl5IOC7yL7GcSYjQx9G8H+6kLYQnNZWeBYq2OYIv1MONd6mqKTjnnJYpV0cQIU2z3atdW0j1kttpTw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/resize-observer": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@rc-component/resize-observer/-/resize-observer-1.1.1.tgz", + "integrity": "sha512-NfXXMmiR+SmUuKE1NwJESzEUYUFWIDUn2uXpxCTOLwiRUUakd62DRNFjRJArgzyFW8S5rsL4aX5XlyIXyC/vRA==", + "dependencies": { + "@rc-component/util": "^1.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/segmented": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@rc-component/segmented/-/segmented-1.3.0.tgz", + "integrity": "sha512-5J/bJ01mbDnoA6P/FW8SxUvKn+OgUSTZJPzCNnTBntG50tzoP7DydGhqxp7ggZXZls7me3mc2EQDXakU3iTVFg==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@rc-component/select": { + "version": "1.6.15", + "resolved": "https://registry.npmmirror.com/@rc-component/select/-/select-1.6.15.tgz", + "integrity": "sha512-SyVCWnqxCQZZcQvQJ/CxSjx2bGma6ds/HtnpkIfZVnt6RoEgbqUmHgD6vrzNarNXwbLXerwVzWwq8F3d1sst7g==", + "dependencies": { + "@rc-component/overflow": "^1.0.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "@rc-component/virtual-list": "^1.0.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/slider": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@rc-component/slider/-/slider-1.0.1.tgz", + "integrity": "sha512-uDhEPU1z3WDfCJhaL9jfd2ha/Eqpdfxsn0Zb0Xcq1NGQAman0TWaR37OWp2vVXEOdV2y0njSILTMpTfPV1454g==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/steps": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@rc-component/steps/-/steps-1.2.2.tgz", + "integrity": "sha512-/yVIZ00gDYYPHSY0JP+M+s3ZvuXLu2f9rEjQqiUDs7EcYsUYrpJ/1bLj9aI9R7MBR3fu/NGh6RM9u2qGfqp+Nw==", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/switch": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@rc-component/switch/-/switch-1.0.3.tgz", + "integrity": "sha512-Jgi+EbOBquje/XNdofr7xbJQZPYJP+BlPfR0h+WN4zFkdtB2EWqEfvkXJWeipflwjWip0/17rNbxEAqs8hVHfw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/table": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@rc-component/table/-/table-1.9.1.tgz", + "integrity": "sha512-FVI5ZS/GdB3BcgexfCYKi3iHhZS3Fr59EtsxORszYGrfpH1eWr33eDNSYkVfLI6tfJ7vftJDd9D5apfFWqkdJg==", + "dependencies": { + "@rc-component/context": "^2.0.1", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.1.0", + "@rc-component/virtual-list": "^1.0.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/tabs": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/@rc-component/tabs/-/tabs-1.7.0.tgz", + "integrity": "sha512-J48cs2iBi7Ho3nptBxxIqizEliUC+ExE23faspUQKGQ550vaBlv3aGF8Epv/UB1vFWeoJDTW/dNzgIU0Qj5i/w==", + "dependencies": { + "@rc-component/dropdown": "~1.0.0", + "@rc-component/menu": "~1.2.0", + "@rc-component/motion": "^1.1.3", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/textarea": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@rc-component/textarea/-/textarea-1.1.2.tgz", + "integrity": "sha512-9rMUEODWZDMovfScIEHXWlVZuPljZ2pd1LKNjslJVitn4SldEzq5vO1CL3yy3Dnib6zZal2r2DPtjy84VVpF6A==", + "dependencies": { + "@rc-component/input": "~1.1.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tooltip": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@rc-component/tooltip/-/tooltip-1.4.0.tgz", + "integrity": "sha512-8Rx5DCctIlLI4raR0I0xHjVTf1aF48+gKCNeAAo5bmF5VoR5YED+A/XEqzXv9KKqrJDRcd3Wndpxh2hyzrTtSg==", + "dependencies": { + "@rc-component/trigger": "^3.7.1", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/tour": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@rc-component/tour/-/tour-2.3.0.tgz", + "integrity": "sha512-K04K9r32kUC+auBSQfr+Fss4SpSIS9JGe56oq/ALAX0p+i2ylYOI1MgR83yBY7v96eO6ZFXcM/igCQmubps0Ow==", + "dependencies": { + "@rc-component/portal": "^2.2.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.7.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tree": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@rc-component/tree/-/tree-1.2.4.tgz", + "integrity": "sha512-5Gli43+m4R7NhpYYz3Z61I6LOw9yI6CNChxgVtvrO6xB1qML7iE6QMLVMB3+FTjo2yF6uFdAHtqWPECz/zbX5w==", + "dependencies": { + "@rc-component/motion": "^1.0.0", + "@rc-component/util": "^1.8.1", + "@rc-component/virtual-list": "^1.0.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=10.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/tree-select": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/@rc-component/tree-select/-/tree-select-1.8.0.tgz", + "integrity": "sha512-iYsPq3nuLYvGqdvFAW+l+I9ASRIOVbMXyA8FGZg2lGym/GwkaWeJGzI4eJ7c9IOEhRj0oyfIN4S92Fl3J05mjQ==", + "dependencies": { + "@rc-component/select": "~1.6.0", + "@rc-component/tree": "~1.2.0", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/trigger": { + "version": "3.9.0", + "resolved": "https://registry.npmmirror.com/@rc-component/trigger/-/trigger-3.9.0.tgz", + "integrity": "sha512-X8btpwfrT27AgrZVOz4swclhEHTZcqaHeQMXXBgveagOiakTa36uObXbdwerXffgV8G9dH1fAAE0DHtVQs8EHg==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/portal": "^2.2.0", + "@rc-component/resize-observer": "^1.1.1", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/upload": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@rc-component/upload/-/upload-1.1.0.tgz", + "integrity": "sha512-LIBV90mAnUE6VK5N4QvForoxZc4XqEYZimcp7fk+lkE4XwHHyJWxpIXQQwMU8hJM+YwBbsoZkGksL1sISWHQxw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/util": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/@rc-component/util/-/util-1.10.0.tgz", + "integrity": "sha512-aY9GLBuiUdpyfIUpAWSYer4Tu3mVaZCo5A0q9NtXcazT3MRiI3/WNHCR+DUn5VAtR6iRRf0ynCqQUcHli5UdYw==", + "dependencies": { + "is-mobile": "^5.0.0", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/virtual-list": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@rc-component/virtual-list/-/virtual-list-1.0.2.tgz", + "integrity": "sha512-uvTol/mH74FYsn5loDGJxo+7kjkO4i+y4j87Re1pxJBs0FaeuMuLRzQRGaXwnMcV1CxpZLi2Z56Rerj2M00fjQ==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@rc-component/resize-observer": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.24", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "25.4.0", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-25.4.0.tgz", + "integrity": "sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==", + "dev": true, + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/swiper": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@types/swiper/-/swiper-6.0.0.tgz", + "integrity": "sha512-QPZRgxZ+ivXXtzV43B3LxpXUIC7FE/EoKM+rtxngmgt2M7eeUYypZhyqZD8UxJtlBcUDw/ATGoVeSNpvBBrz2w==", + "deprecated": "This is a stub types definition. swiper provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "swiper": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.15.tgz", + "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.15" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.15.tgz", + "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.15", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.15.tgz", + "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.15", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue-macros/common": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@vue-macros/common/-/common-3.1.2.tgz", + "integrity": "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==", + "dependencies": { + "@vue/compiler-sfc": "^3.5.22", + "ast-kit": "^2.1.2", + "local-pkg": "^1.1.2", + "magic-string-ast": "^1.0.2", + "unplugin-utils": "^0.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/vue-macros" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.30.tgz", + "integrity": "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.30", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.30.tgz", + "integrity": "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==", + "dependencies": { + "@vue/compiler-core": "3.5.30", + "@vue/shared": "3.5.30" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.30.tgz", + "integrity": "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/compiler-core": "3.5.30", + "@vue/compiler-dom": "3.5.30", + "@vue/compiler-ssr": "3.5.30", + "@vue/shared": "3.5.30", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.8", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.30.tgz", + "integrity": "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==", + "dependencies": { + "@vue/compiler-dom": "3.5.30", + "@vue/shared": "3.5.30" + } + }, + "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/devtools-api": { + "version": "8.0.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-8.0.7.tgz", + "integrity": "sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==", + "dependencies": { + "@vue/devtools-kit": "^8.0.7" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "8.0.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-8.0.7.tgz", + "integrity": "sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==", + "dependencies": { + "@vue/devtools-shared": "^8.0.7", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "8.0.7", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-8.0.7.tgz", + "integrity": "sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==" + }, + "node_modules/@vue/language-core": { + "version": "2.2.12", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.12.tgz", + "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.15", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^1.0.3", + "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.30", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.30.tgz", + "integrity": "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==", + "dependencies": { + "@vue/shared": "3.5.30" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.30.tgz", + "integrity": "sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==", + "dependencies": { + "@vue/reactivity": "3.5.30", + "@vue/shared": "3.5.30" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.30.tgz", + "integrity": "sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==", + "dependencies": { + "@vue/reactivity": "3.5.30", + "@vue/runtime-core": "3.5.30", + "@vue/shared": "3.5.30", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.30.tgz", + "integrity": "sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==", + "dependencies": { + "@vue/compiler-ssr": "3.5.30", + "@vue/shared": "3.5.30" + }, + "peerDependencies": { + "vue": "3.5.30" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.30.tgz", + "integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.7.0.tgz", + "integrity": "sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==", + "dev": true, + "peerDependencies": { + "typescript": "5.x", + "vue": "^3.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vueuse/core": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.0.0.tgz", + "integrity": "sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "12.0.0", + "@vueuse/shared": "12.0.0", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.0.0.tgz", + "integrity": "sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.0.0.tgz", + "integrity": "sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@yeger/debounce": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/@yeger/debounce/-/debounce-2.0.17.tgz", + "integrity": "sha512-wz9ARkGnY25yToyaZaCz887aRxsIg96uI/waBLkV/Qfh9/VHP+C6uAFpOg8FPba0KMS2QYo2dhCOqPvCoDigyA==" + }, + "node_modules/@yeger/vue-masonry-wall": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@yeger/vue-masonry-wall/-/vue-masonry-wall-6.1.0.tgz", + "integrity": "sha512-7rDZyvCRPSIkR90v1lX0e611LjADrlQ5CqrbcJocw0NxBr36QbzNKz1naXE5EMbVpt6xJaN/CeOQUGXkwGIxng==", + "dependencies": { + "@yeger/debounce": "2.0.17" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/alien-signals": { + "version": "1.0.13", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz", + "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", + "dev": true + }, + "node_modules/antd": { + "version": "6.3.3", + "resolved": "https://registry.npmmirror.com/antd/-/antd-6.3.3.tgz", + "integrity": "sha512-T8FAQelw36zS96cZw2U/qEjpYny5yFc7hg+1W7DvVr8xMoSXWvyB8WvmiDVH0nS0LPYV4y2sxetsJoGZt7rhhw==", + "dependencies": { + "@ant-design/colors": "^8.0.1", + "@ant-design/cssinjs": "^2.1.2", + "@ant-design/cssinjs-utils": "^2.1.2", + "@ant-design/fast-color": "^3.0.1", + "@ant-design/icons": "^6.1.0", + "@ant-design/react-slick": "~2.0.0", + "@babel/runtime": "^7.28.4", + "@rc-component/cascader": "~1.14.0", + "@rc-component/checkbox": "~2.0.0", + "@rc-component/collapse": "~1.2.0", + "@rc-component/color-picker": "~3.1.1", + "@rc-component/dialog": "~1.8.4", + "@rc-component/drawer": "~1.4.2", + "@rc-component/dropdown": "~1.0.2", + "@rc-component/form": "~1.7.2", + "@rc-component/image": "~1.6.0", + "@rc-component/input": "~1.1.2", + "@rc-component/input-number": "~1.6.2", + "@rc-component/mentions": "~1.6.0", + "@rc-component/menu": "~1.2.0", + "@rc-component/motion": "^1.3.1", + "@rc-component/mutate-observer": "^2.0.1", + "@rc-component/notification": "~1.2.0", + "@rc-component/pagination": "~1.2.0", + "@rc-component/picker": "~1.9.1", + "@rc-component/progress": "~1.0.2", + "@rc-component/qrcode": "~1.1.1", + "@rc-component/rate": "~1.0.1", + "@rc-component/resize-observer": "^1.1.1", + "@rc-component/segmented": "~1.3.0", + "@rc-component/select": "~1.6.14", + "@rc-component/slider": "~1.0.1", + "@rc-component/steps": "~1.2.2", + "@rc-component/switch": "~1.0.3", + "@rc-component/table": "~1.9.1", + "@rc-component/tabs": "~1.7.0", + "@rc-component/textarea": "~1.1.2", + "@rc-component/tooltip": "~1.4.0", + "@rc-component/tour": "~2.3.0", + "@rc-component/tree": "~1.2.4", + "@rc-component/tree-select": "~1.8.0", + "@rc-component/trigger": "^3.9.0", + "@rc-component/upload": "~1.1.0", + "@rc-component/util": "^1.9.0", + "clsx": "^2.1.1", + "dayjs": "^1.11.11", + "scroll-into-view-if-needed": "^3.1.0", + "throttle-debounce": "^5.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ant-design" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", + "dependencies": { + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/ast-walker-scope/-/ast-walker-scope-0.8.3.tgz", + "integrity": "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==", + "dependencies": { + "@babel/parser": "^7.28.4", + "ast-kit": "^2.1.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "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/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==" + }, + "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/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/element-plus": { + "version": "2.13.5", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.13.5.tgz", + "integrity": "sha512-dmY24fhSREfZN/PuUt0YZigMso7wWzl+B5o+YKNN15kQIn/0hzamsPU+ebj9SES0IbUqsLX1wkrzYmzU8VrVOQ==", + "dependencies": { + "@ctrl/tinycolor": "^4.2.0", + "@element-plus/icons-vue": "^2.3.2", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.17.20", + "@types/lodash-es": "^4.17.12", + "@vueuse/core": "12.0.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.19", + "lodash": "^4.17.23", + "lodash-es": "^4.17.23", + "lodash-unified": "^1.0.3", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.3.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "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/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "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/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "optional": true + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "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.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-mobile": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-mobile/-/is-mobile-5.0.0.tgz", + "integrity": "sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ==" + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "dependencies": { + "string-convert": "^0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less": { + "version": "4.5.1", + "resolved": "https://registry.npmmirror.com/less/-/less-4.5.1.tgz", + "integrity": "sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==", + "hasInstallScript": true, + "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/less-loader": { + "version": "12.3.1", + "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-12.3.1.tgz", + "integrity": "sha512-JZZmG7gMzoDP3VGeEG8Sh6FW5wygB5jYL7Wp29FFihuRTsIBacqO3LbRPr2yStYD11riVf13selLm/CPFRDBRQ==", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magic-string-ast": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/magic-string-ast/-/magic-string-ast-1.0.3.tgz", + "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==", + "dependencies": { + "magic-string": "^0.30.19" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mlly": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.8.1.tgz", + "integrity": "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "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==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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.npmmirror.com/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" + }, + "node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinia": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-3.0.4.tgz", + "integrity": "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==", + "dependencies": { + "@vue/devtools-api": "^7.7.7" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.5.0", + "vue": "^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "4.7.1", + "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.7.1.tgz", + "integrity": "sha512-WHOqh2esDlR3eAaknPbqXrkkj0D24h8shrDPqysgCFR6ghqP/fpFfJmMPJp0gETHsvrh9YNNg6dQfo2OEtDnIQ==", + "dependencies": { + "defu": "^6.1.4" + }, + "peerDependencies": { + "@nuxt/kit": ">=3.0.0", + "@pinia/nuxt": ">=0.10.0", + "pinia": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@pinia/nuxt": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/@vue/devtools-api": { + "version": "7.7.9", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-7.7.9.tgz", + "integrity": "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==", + "dependencies": { + "@vue/devtools-kit": "^7.7.9" + } + }, + "node_modules/pinia/node_modules/@vue/devtools-kit": { + "version": "7.7.9", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz", + "integrity": "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==", + "dependencies": { + "@vue/devtools-shared": "^7.7.9", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/pinia/node_modules/@vue/devtools-shared": { + "version": "7.7.9", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz", + "integrity": "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/pinia/node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==" + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "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.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ] + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmmirror.com/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "node_modules/sax": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", + "optional": true, + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "peer": true + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "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/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmmirror.com/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" + }, + "node_modules/superjson": { + "version": "2.2.6", + "resolved": "https://registry.npmmirror.com/superjson/-/superjson-2.2.6.tgz", + "integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==", + "dependencies": { + "copy-anything": "^4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/superjson/node_modules/copy-anything": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-4.0.5.tgz", + "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", + "dependencies": { + "is-what": "^5.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/superjson/node_modules/is-what": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-5.5.0.tgz", + "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/swiper": { + "version": "12.1.2", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-12.1.2.tgz", + "integrity": "sha512-4gILrI3vXZqoZh71I1PALqukCFgk+gpOwe1tOvz5uE9kHtl2gTDzmYflYCwWvR4LOvCrJi6UEEU+gnuW5BtkgQ==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/throttle-debounce": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz", + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", + "engines": { + "node": ">=12.22" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==" + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true + }, + "node_modules/unplugin": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-3.0.0.tgz", + "integrity": "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.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 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true + }, + "node_modules/vue": { + "version": "3.5.30", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.30.tgz", + "integrity": "sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==", + "dependencies": { + "@vue/compiler-dom": "3.5.30", + "@vue/compiler-sfc": "3.5.30", + "@vue/runtime-dom": "3.5.30", + "@vue/server-renderer": "3.5.30", + "@vue/shared": "3.5.30" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-5.0.3.tgz", + "integrity": "sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==", + "dependencies": { + "@babel/generator": "^7.28.6", + "@vue-macros/common": "^3.1.1", + "@vue/devtools-api": "^8.0.6", + "ast-walker-scope": "^0.8.3", + "chokidar": "^5.0.0", + "json5": "^2.2.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "muggle-string": "^0.4.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "scule": "^1.3.0", + "tinyglobby": "^0.2.15", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1", + "yaml": "^2.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@pinia/colada": ">=0.21.2", + "@vue/compiler-sfc": "^3.5.17", + "pinia": "^3.0.4", + "vue": "^3.5.0" + }, + "peerDependenciesMeta": { + "@pinia/colada": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, + "node_modules/vue-tsc": { + "version": "2.2.12", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.12.tgz", + "integrity": "sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==", + "dev": true, + "dependencies": { + "@volar/typescript": "2.4.15", + "@vue/language-core": "2.2.12" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/vue-waterfall-plugin-next": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/vue-waterfall-plugin-next/-/vue-waterfall-plugin-next-3.0.1.tgz", + "integrity": "sha512-ggtP0LkDRKABsTflya9l0YE/D2S6MYG+VBgvkVmCwqLanJy6STYCPFumYCujV9/ansxd81GBgwPe6DUegRDT+w==" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6b28298 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "yuanjing", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@yeger/vue-masonry-wall": "^6.1.0", + "antd": "^6.3.3", + "axios": "^1.13.6", + "element-plus": "^2.13.5", + "less": "^4.5.1", + "less-loader": "^12.3.1", + "pinia": "^3.0.4", + "pinia-plugin-persistedstate": "^4.7.1", + "router": "^2.2.0", + "swiper": "^12.1.2", + "vue": "^3.5.13", + "vue-router": "^5.0.3", + "vue-waterfall-plugin-next": "^3.0.1" + }, + "devDependencies": { + "@types/node": "^25.4.0", + "@types/swiper": "^6.0.0", + "@vitejs/plugin-vue": "^5.2.3", + "@vue/tsconfig": "^0.7.0", + "typescript": "~5.8.3", + "vite": "^6.3.5", + "vue-tsc": "^2.2.12" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e70d805 Binary files /dev/null and b/public/favicon.ico differ diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..aad14ea --- /dev/null +++ b/src/App.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/apis/Model.ts b/src/apis/Model.ts new file mode 100644 index 0000000..ef069db --- /dev/null +++ b/src/apis/Model.ts @@ -0,0 +1,15 @@ +import {get, post} from '../utlis/request' + +// 文生视频 +export const textvideo = (data:D):Promise =>post('/api/llmage/vidu_inference.dspy',data) +// 获取所有模型 +export const AllModel = (data:D):Promise =>get('/api/llmage/get_type_llms.dspy',data) + +// 查询当前模型价格 +export const queryModelPrice = (data:D):Promise =>post('/api/platformbiz/product_query_price.dspy',data) + +// 获取当天任务列表 +export const getTodayTask = ():Promise =>get('/api/llmage/get_my_asynctasks.dspy') + +// 获取任务状态 +export const getAsyncTaskStatus = (data:D):Promise =>get('/api/llmage/get_asynctask_status.dspy',data) \ No newline at end of file diff --git a/src/apis/home.ts b/src/apis/home.ts new file mode 100644 index 0000000..f3430f3 --- /dev/null +++ b/src/apis/home.ts @@ -0,0 +1,12 @@ +import {get, post} from '../utlis/request' + +// 获取视频列表 +export const getVideos = (data:D):Promise =>get('http://180.76.111.84:9028/v1/feed/list',data) + +// 充值 +export const recharge = (data:D):Promise =>post('/api/unipay/user_recharge.dspy',data) + +// 开户 +export const openAccount = ():Promise =>post('/api/accounting/open_customer_accounts.dspy') +// 余额 +export const balance = ():Promise =>get('/api/accounting/mybalance.dspy') \ No newline at end of file diff --git a/src/apis/login.ts b/src/apis/login.ts new file mode 100644 index 0000000..2db1e16 --- /dev/null +++ b/src/apis/login.ts @@ -0,0 +1,5 @@ +import {get, post} from '@/utlis/request' + +export const Code = (data:D):Promise =>get('/api/rbac/gen_sms_code.dspy',data) + +export const LoginApi = (data:D):Promise =>post('/api/rbac/phone_login.dspy',data) \ No newline at end of file diff --git a/src/assets/css/iconfont/demo.css b/src/assets/css/iconfont/demo.css new file mode 100644 index 0000000..a67054a --- /dev/null +++ b/src/assets/css/iconfont/demo.css @@ -0,0 +1,539 @@ +/* Logo 字体 */ +@font-face { + font-family: "iconfont logo"; + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); +} + +.logo { + font-family: "iconfont logo"; + font-size: 160px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* tabs */ +.nav-tabs { + position: relative; +} + +.nav-tabs .nav-more { + position: absolute; + right: 0; + bottom: 0; + height: 42px; + line-height: 42px; + color: #666; +} + +#tabs { + border-bottom: 1px solid #eee; +} + +#tabs li { + cursor: pointer; + width: 100px; + height: 40px; + line-height: 40px; + text-align: center; + font-size: 16px; + border-bottom: 2px solid transparent; + position: relative; + z-index: 1; + margin-bottom: -1px; + color: #666; +} + + +#tabs .active { + border-bottom-color: #f00; + color: #222; +} + +.tab-container .content { + display: none; +} + +/* 页面布局 */ +.main { + padding: 30px 100px; + width: 960px; + margin: 0 auto; +} + +.main .logo { + color: #333; + text-align: left; + margin-bottom: 30px; + line-height: 1; + height: 110px; + margin-top: -50px; + overflow: hidden; + *zoom: 1; +} + +.main .logo a { + font-size: 160px; + color: #333; +} + +.helps { + margin-top: 40px; +} + +.helps pre { + padding: 20px; + margin: 10px 0; + border: solid 1px #e7e1cd; + background-color: #fffdef; + overflow: auto; +} + +.icon_lists { + width: 100% !important; + overflow: hidden; + *zoom: 1; +} + +.icon_lists li { + width: 100px; + margin-bottom: 10px; + margin-right: 20px; + text-align: center; + list-style: none !important; + cursor: default; +} + +.icon_lists li .code-name { + line-height: 1.2; +} + +.icon_lists .icon { + display: block; + height: 100px; + line-height: 100px; + font-size: 42px; + margin: 10px auto; + color: #333; + -webkit-transition: font-size 0.25s linear, width 0.25s linear; + -moz-transition: font-size 0.25s linear, width 0.25s linear; + transition: font-size 0.25s linear, width 0.25s linear; +} + +.icon_lists .icon:hover { + font-size: 100px; +} + +.icon_lists .svg-icon { + /* 通过设置 font-size 来改变图标大小 */ + width: 1em; + /* 图标和文字相邻时,垂直对齐 */ + vertical-align: -0.15em; + /* 通过设置 color 来改变 SVG 的颜色/fill */ + fill: currentColor; + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 + normalize.css 中也包含这行 */ + overflow: hidden; +} + +.icon_lists li .name, +.icon_lists li .code-name { + color: #666; +} + +/* markdown 样式 */ +.markdown { + color: #666; + font-size: 14px; + line-height: 1.8; +} + +.highlight { + line-height: 1.5; +} + +.markdown img { + vertical-align: middle; + max-width: 100%; +} + +.markdown h1 { + color: #404040; + font-weight: 500; + line-height: 40px; + margin-bottom: 24px; +} + +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + color: #404040; + margin: 1.6em 0 0.6em 0; + font-weight: 500; + clear: both; +} + +.markdown h1 { + font-size: 28px; +} + +.markdown h2 { + font-size: 22px; +} + +.markdown h3 { + font-size: 16px; +} + +.markdown h4 { + font-size: 14px; +} + +.markdown h5 { + font-size: 12px; +} + +.markdown h6 { + font-size: 12px; +} + +.markdown hr { + height: 1px; + border: 0; + background: #e9e9e9; + margin: 16px 0; + clear: both; +} + +.markdown p { + margin: 1em 0; +} + +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { + width: 80%; +} + +.markdown ul>li { + list-style: circle; +} + +.markdown>ul li, +.markdown blockquote ul>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown>ul li p, +.markdown>ol li p { + margin: 0.6em 0; +} + +.markdown ol>li { + list-style: decimal; +} + +.markdown>ol li, +.markdown blockquote ol>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown code { + margin: 0 3px; + padding: 0 5px; + background: #eee; + border-radius: 3px; +} + +.markdown strong, +.markdown b { + font-weight: 600; +} + +.markdown>table { + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + border: 1px solid #e9e9e9; + width: 95%; + margin-bottom: 24px; +} + +.markdown>table th { + white-space: nowrap; + color: #333; + font-weight: 600; +} + +.markdown>table th, +.markdown>table td { + border: 1px solid #e9e9e9; + padding: 8px 16px; + text-align: left; +} + +.markdown>table th { + background: #F7F7F7; +} + +.markdown blockquote { + font-size: 90%; + color: #999; + border-left: 4px solid #e9e9e9; + padding-left: 0.8em; + margin: 1em 0; +} + +.markdown blockquote p { + margin: 0; +} + +.markdown .anchor { + opacity: 0; + transition: opacity 0.3s ease; + margin-left: 8px; +} + +.markdown .waiting { + color: #ccc; +} + +.markdown h1:hover .anchor, +.markdown h2:hover .anchor, +.markdown h3:hover .anchor, +.markdown h4:hover .anchor, +.markdown h5:hover .anchor, +.markdown h6:hover .anchor { + opacity: 1; + display: inline-block; +} + +.markdown>br, +.markdown>p>br { + clear: both; +} + + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/* 代码高亮 */ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre)>code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/src/assets/css/iconfont/demo_index.html b/src/assets/css/iconfont/demo_index.html new file mode 100644 index 0000000..7ae109a --- /dev/null +++ b/src/assets/css/iconfont/demo_index.html @@ -0,0 +1,579 @@ + + + + + iconfont Demo + + + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    余额
    +
    &#xe615;
    +
  • + +
  • + +
    支付宝支付
    +
    &#xe634;
    +
  • + +
  • + +
    警告
    +
    &#xe84f;
    +
  • + +
  • + +
    +
    &#xe716;
    +
  • + +
  • + +
    验证码
    +
    &#xe623;
    +
  • + +
  • + +
    003_手机号-53
    +
    &#xe61c;
    +
  • + +
  • + +
    数字人
    +
    &#xe603;
    +
  • + +
  • + +
    音频生成
    +
    &#xe604;
    +
  • + +
  • + +
    +
    &#xe622;
    +
  • + +
  • + +
    +
    &#xe60f;
    +
  • + +
  • + +
    img2video
    +
    &#xe600;
    +
  • + +
  • + +
    image-edit
    +
    &#xe601;
    +
  • + +
  • + +
    无限画布
    +
    &#xe602;
    +
  • + +
  • + +
    图片生成
    +
    &#xe636;
    +
  • + +
  • + +
    首页
    +
    &#xe62e;
    +
  • + +
  • + +
    个人中心
    +
    &#xe63c;
    +
  • + +
  • + +
    发现
    +
    &#xe605;
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1774432601927') format('woff2'),
+       url('iconfont.woff?t=1774432601927') format('woff'),
+       url('iconfont.ttf?t=1774432601927') format('truetype');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="iconfont">&#x33;</span>
+
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + 余额 +
    +
    .icon-yue +
    +
  • + +
  • + +
    + 支付宝支付 +
    +
    .icon-zhifubaozhifu +
    +
  • + +
  • + +
    + 警告 +
    +
    .icon-jinggao +
    +
  • + +
  • + +
    + 加 +
    +
    .icon-jia +
    +
  • + +
  • + +
    + 验证码 +
    +
    .icon-yanzhengma +
    +
  • + +
  • + +
    + 003_手机号-53 +
    +
    .icon-a-003_shoujihao-53 +
    +
  • + +
  • + +
    + 数字人 +
    +
    .icon-a-387845729 +
    +
  • + +
  • + +
    + 音频生成 +
    +
    .icon-a-387846145 +
    +
  • + +
  • + +
    + 左 +
    +
    .icon-zuo +
    +
  • + +
  • + +
    + 右 +
    +
    .icon-you +
    +
  • + +
  • + +
    + img2video +
    +
    .icon-img2video +
    +
  • + +
  • + +
    + image-edit +
    +
    .icon-image-edit +
    +
  • + +
  • + +
    + 无限画布 +
    +
    .icon-a-386885351 +
    +
  • + +
  • + +
    + 图片生成 +
    +
    .icon-tupianshengcheng +
    +
  • + +
  • + +
    + 首页 +
    +
    .icon-shouye +
    +
  • + +
  • + +
    + 个人中心 +
    +
    .icon-gerenzhongxin +
    +
  • + +
  • + +
    + 发现 +
    +
    .icon-faxian +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont icon-xxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    余额
    +
    #icon-yue
    +
  • + +
  • + +
    支付宝支付
    +
    #icon-zhifubaozhifu
    +
  • + +
  • + +
    警告
    +
    #icon-jinggao
    +
  • + +
  • + +
    +
    #icon-jia
    +
  • + +
  • + +
    验证码
    +
    #icon-yanzhengma
    +
  • + +
  • + +
    003_手机号-53
    +
    #icon-a-003_shoujihao-53
    +
  • + +
  • + +
    数字人
    +
    #icon-a-387845729
    +
  • + +
  • + +
    音频生成
    +
    #icon-a-387846145
    +
  • + +
  • + +
    +
    #icon-zuo
    +
  • + +
  • + +
    +
    #icon-you
    +
  • + +
  • + +
    img2video
    +
    #icon-img2video
    +
  • + +
  • + +
    image-edit
    +
    #icon-image-edit
    +
  • + +
  • + +
    无限画布
    +
    #icon-a-386885351
    +
  • + +
  • + +
    图片生成
    +
    #icon-tupianshengcheng
    +
  • + +
  • + +
    首页
    +
    #icon-shouye
    +
  • + +
  • + +
    个人中心
    +
    #icon-gerenzhongxin
    +
  • + +
  • + +
    发现
    +
    #icon-faxian
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/src/assets/css/iconfont/iconfont.css b/src/assets/css/iconfont/iconfont.css new file mode 100644 index 0000000..806075e --- /dev/null +++ b/src/assets/css/iconfont/iconfont.css @@ -0,0 +1,83 @@ +@font-face { + font-family: "iconfont"; /* Project id 5136943 */ + src: url('iconfont.woff2?t=1774432601927') format('woff2'), + url('iconfont.woff?t=1774432601927') format('woff'), + url('iconfont.ttf?t=1774432601927') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-yue:before { + content: "\e615"; +} + +.icon-zhifubaozhifu:before { + content: "\e634"; +} + +.icon-jinggao:before { + content: "\e84f"; +} + +.icon-jia:before { + content: "\e716"; +} + +.icon-yanzhengma:before { + content: "\e623"; +} + +.icon-a-003_shoujihao-53:before { + content: "\e61c"; +} + +.icon-a-387845729:before { + content: "\e603"; +} + +.icon-a-387846145:before { + content: "\e604"; +} + +.icon-zuo:before { + content: "\e622"; +} + +.icon-you:before { + content: "\e60f"; +} + +.icon-img2video:before { + content: "\e600"; +} + +.icon-image-edit:before { + content: "\e601"; +} + +.icon-a-386885351:before { + content: "\e602"; +} + +.icon-tupianshengcheng:before { + content: "\e636"; +} + +.icon-shouye:before { + content: "\e62e"; +} + +.icon-gerenzhongxin:before { + content: "\e63c"; +} + +.icon-faxian:before { + content: "\e605"; +} + diff --git a/src/assets/css/iconfont/iconfont.js b/src/assets/css/iconfont/iconfont.js new file mode 100644 index 0000000..e913090 --- /dev/null +++ b/src/assets/css/iconfont/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_5136943='',(c=>{var l=(a=(a=document.getElementsByTagName("script"))[a.length-1]).getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var t,i,o,e,h,n=function(l,a){a.parentNode.insertBefore(l,a)};if(l&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,a=document.createElement("div");a.innerHTML=c._iconfont_svg_string_5136943,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(l=document.body).firstChild?n(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),t()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=t,e=c.document,h=!1,s(),e.onreadystatechange=function(){"complete"==e.readyState&&(e.onreadystatechange=null,d())})}function d(){h||(h=!0,o())}function s(){try{e.documentElement.doScroll("left")}catch(l){return void setTimeout(s,50)}d()}})(window); \ No newline at end of file diff --git a/src/assets/css/iconfont/iconfont.json b/src/assets/css/iconfont/iconfont.json new file mode 100644 index 0000000..2ad52b9 --- /dev/null +++ b/src/assets/css/iconfont/iconfont.json @@ -0,0 +1,128 @@ +{ + "id": "5136943", + "name": "yuanjing", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "2681721", + "name": "余额", + "font_class": "yue", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "1486848", + "name": "支付宝支付", + "font_class": "zhifubaozhifu", + "unicode": "e634", + "unicode_decimal": 58932 + }, + { + "icon_id": "8288853", + "name": "警告", + "font_class": "jinggao", + "unicode": "e84f", + "unicode_decimal": 59471 + }, + { + "icon_id": "16350239", + "name": "加", + "font_class": "jia", + "unicode": "e716", + "unicode_decimal": 59158 + }, + { + "icon_id": "5022863", + "name": "验证码", + "font_class": "yanzhengma", + "unicode": "e623", + "unicode_decimal": 58915 + }, + { + "icon_id": "36126728", + "name": "003_手机号-53", + "font_class": "a-003_shoujihao-53", + "unicode": "e61c", + "unicode_decimal": 58908 + }, + { + "icon_id": "47059243", + "name": "数字人", + "font_class": "a-387845729", + "unicode": "e603", + "unicode_decimal": 58883 + }, + { + "icon_id": "47059246", + "name": "音频生成", + "font_class": "a-387846145", + "unicode": "e604", + "unicode_decimal": 58884 + }, + { + "icon_id": "8483536", + "name": "左", + "font_class": "zuo", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "13000530", + "name": "右", + "font_class": "you", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "45643295", + "name": "img2video", + "font_class": "img2video", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "46889707", + "name": "image-edit", + "font_class": "image-edit", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "47046108", + "name": "无限画布", + "font_class": "a-386885351", + "unicode": "e602", + "unicode_decimal": 58882 + }, + { + "icon_id": "45825147", + "name": "图片生成", + "font_class": "tupianshengcheng", + "unicode": "e636", + "unicode_decimal": 58934 + }, + { + "icon_id": "2675009", + "name": "首页", + "font_class": "shouye", + "unicode": "e62e", + "unicode_decimal": 58926 + }, + { + "icon_id": "5532917", + "name": "个人中心", + "font_class": "gerenzhongxin", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "11200583", + "name": "发现", + "font_class": "faxian", + "unicode": "e605", + "unicode_decimal": 58885 + } + ] +} diff --git a/src/assets/css/iconfont/iconfont.ttf b/src/assets/css/iconfont/iconfont.ttf new file mode 100644 index 0000000..d14ba51 Binary files /dev/null and b/src/assets/css/iconfont/iconfont.ttf differ diff --git a/src/assets/css/iconfont/iconfont.woff b/src/assets/css/iconfont/iconfont.woff new file mode 100644 index 0000000..59a6b4a Binary files /dev/null and b/src/assets/css/iconfont/iconfont.woff differ diff --git a/src/assets/css/iconfont/iconfont.woff2 b/src/assets/css/iconfont/iconfont.woff2 new file mode 100644 index 0000000..cda55aa Binary files /dev/null and b/src/assets/css/iconfont/iconfont.woff2 differ diff --git a/src/assets/images/favicon.png b/src/assets/images/favicon.png new file mode 100644 index 0000000..e70d805 Binary files /dev/null and b/src/assets/images/favicon.png differ diff --git a/src/assets/images/login.mp4 b/src/assets/images/login.mp4 new file mode 100644 index 0000000..1a38cc7 Binary files /dev/null and b/src/assets/images/login.mp4 differ diff --git a/src/assets/images/preparation.png b/src/assets/images/preparation.png new file mode 100644 index 0000000..dfb9e3d Binary files /dev/null and b/src/assets/images/preparation.png differ diff --git a/src/assets/less/Header/header.css b/src/assets/less/Header/header.css new file mode 100644 index 0000000..5568ba6 --- /dev/null +++ b/src/assets/less/Header/header.css @@ -0,0 +1,262 @@ +.header-container { + position: relative; + z-index: 100; +} +.header { + width: 100%; + height: 80px; + display: flex; + justify-content: space-between; + align-items: center; + padding-right: 2rem; + background: rgba(10, 14, 20, 0.8); + backdrop-filter: blur(12px); +} +@media (max-width: 768px) { + .header { + padding: 0 1rem; + height: 70px; + } +} +.logo { + display: flex; + align-items: center; + gap: 12px; +} +.logo img { + width: 48px; + height: 48px; + border-radius: 12px; + transition: all 0.3s ease; +} +.logo .header-title { + font-family: "Microsoft Yahei", "PingFang SC", sans-serif; + font-size: 28px; + font-weight: 600; + color: #fff; + transform: skew(-8deg); + -webkit-transform: skew(-12deg); + text-shadow: 0 0 10px rgba(0, 255, 204, 0.3); +} +@media (max-width: 768px) { + .logo .header-title { + font-size: 24px; + } +} +.header-actions { + display: flex; + align-items: center; + gap: 20px; +} +@media (max-width: 768px) { + .header-actions { + gap: 12px; + } +} +.balance-recharge-combo { + height: 44px; + padding: 0 20px; + display: flex; + align-items: center; + gap: 8px; + font-size: 15px; + font-weight: 500; + color: #fff; + background: rgba(255, 142, 83, 0.1); + border: 1px solid rgba(255, 142, 83, 0.4); + border-radius: 22px; + cursor: pointer; + transition: all 0.3s ease; +} +.balance-recharge-combo .iconfont { + font-size: 16px; + color: #ff8e53; +} +.balance-recharge-combo .balance-text { + font-weight: 600; + color: #ff8e53; +} +.balance-recharge-combo .recharge-text { + height: 100%; + width: 60px; + display: flex; + justify-content: center; + align-items: center; + border-radius: 10px; + font-size: 13px; + color: #ff8e53; + font-weight: 600; +} +.balance-recharge-combo:hover { + background: rgba(255, 142, 83, 0.15); + box-shadow: 0 4px 12px rgba(255, 142, 83, 0.2); +} +@media (max-width: 768px) { + .balance-recharge-combo { + height: 36px; + padding: 0 14px; + font-size: 13px; + gap: 6px; + } + .balance-recharge-combo .recharge-text { + padding: 1px 6px; + font-size: 12px; + } +} +.btn { + min-width: 120px; + height: 48px; + font-size: 16px; + background-image: linear-gradient(270deg, #00f2fe 11.11%, #4facfe); + border-radius: 24px; + display: flex; + justify-content: center; + align-items: center; + font-weight: 600; + color: #0a1428; + cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 12px rgba(0, 242, 254, 0.3); +} +.btn:hover { + background-image: linear-gradient(270deg, #4facfe 11.11%, #00f2fe); + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(0, 242, 254, 0.4); +} +@media (max-width: 768px) { + .btn { + min-width: 100px; + height: 40px; + font-size: 14px; + } +} +.user-profile { + position: relative; + display: inline-block; +} +.user-trigger { + display: flex; + align-items: center; + gap: 8px; + padding: 0 20px; + height: 44px; + background: rgba(255, 255, 255, 0.1); + border-radius: 22px; + color: #fff; + cursor: pointer; + transition: all 0.3s ease; + border: 1px solid transparent; +} +.user-trigger:hover { + background: rgba(255, 255, 255, 0.15); + border-color: rgba(0, 255, 204, 0.3); + box-shadow: 0 0 15px rgba(0, 255, 204, 0.2); +} +.user-trigger .user-name { + font-size: 15px; + font-weight: 500; + max-width: 120px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.user-trigger .dropdown-icon { + width: 16px; + height: 16px; + transition: transform 0.3s ease; + color: rgba(255, 255, 255, 0.8); +} +.user-trigger:hover .dropdown-icon { + transform: rotate(180deg); + color: #00ffcc; +} +@media (max-width: 768px) { + .user-trigger { + height: 36px; + padding: 0 14px; + } + .user-trigger .user-name { + max-width: 80px; + font-size: 13px; + } +} +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 8px; + width: 220px; + background: rgba(10, 14, 20, 0.95); + backdrop-filter: blur(12px); + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); + overflow: hidden; + z-index: 1000; +} +.user-dropdown::before { + content: ''; + position: absolute; + top: -8px; + right: 20px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-bottom: 8px solid rgba(10, 14, 20, 0.95); +} +.dropdown-item { + display: flex; + align-items: center; + padding: 12px 16px; + color: #fff; + transition: all 0.2s ease; + cursor: pointer; +} +.dropdown-item:hover { + background: rgba(0, 255, 204, 0.1); +} +.dropdown-item.user-id { + justify-content: space-between; + font-size: 14px; +} +.dropdown-item.user-id .item-label { + color: rgba(255, 255, 255, 0.7); +} +.dropdown-item.user-id .item-value { + color: #00ffcc; + font-family: monospace; + font-size: 13px; +} +.dropdown-item.logout { + gap: 8px; + font-size: 14px; +} +.dropdown-item.logout .item-icon { + width: 16px; + height: 16px; + color: rgba(255, 255, 255, 0.8); +} +.dropdown-item.logout:hover { + color: #ff6b6b; +} +.dropdown-item.logout:hover .item-icon { + color: #ff6b6b; +} +.dropdown-divider { + height: 1px; + background: rgba(255, 255, 255, 0.1); + margin: 4px 0; +} +.dropdown-enter-active, +.dropdown-leave-active { + transition: all 0.3s ease; +} +.dropdown-enter-from { + opacity: 0; + transform: translateY(-10px) scale(0.95); +} +.dropdown-leave-to { + opacity: 0; + transform: translateY(-10px) scale(0.95); +} diff --git a/src/assets/less/Header/header.less b/src/assets/less/Header/header.less new file mode 100644 index 0000000..39f4adc --- /dev/null +++ b/src/assets/less/Header/header.less @@ -0,0 +1,316 @@ +// 头部容器 +.header-container { + position: relative; + z-index: 100; +} + +// 头部主容器 +.header { + width: 100%; + height: 80px; + display: flex; + justify-content: space-between; + align-items: center; + padding-right: 2rem; + background: rgba(10, 14, 20, 0.8); + backdrop-filter: blur(12px); + + @media (max-width: 768px) { + padding: 0 1rem; + height: 70px; + } +} + +// Logo样式 +.logo { + display: flex; + align-items: center; + gap: 12px; + + img { + width: 48px; + height: 48px; + border-radius: 12px; + transition: all 0.3s ease; + } + + .header-title { + font-family: "Microsoft Yahei", "PingFang SC", sans-serif; + font-size: 28px; + font-weight: 600; + color: #fff; + transform: skew(-8deg); + -webkit-transform: skew(-12deg); + text-shadow: 0 0 10px rgba(0, 255, 204, 0.3); + + @media (max-width: 768px) { + font-size: 24px; + } + } +} + +// 操作区 +.header-actions { + display: flex; + align-items: center; + gap: 20px; + + @media (max-width: 768px) { + gap: 12px; + } +} + +// ============================================== +// 【一体化】余额 + 充值按钮(核心修改) +// ============================================== +.balance-recharge-combo { + height: 44px; + padding: 0 20px; + display: flex; + align-items: center; + gap: 8px; + font-size: 15px; + font-weight: 500; + color: #fff; + background: rgba(255, 142, 83, 0.1); + border: 1px solid rgba(255, 142, 83, 0.4); + border-radius: 22px; + cursor: pointer; + transition: all 0.3s ease; + + // 图标 + .iconfont { + font-size: 16px; + color: #ff8e53; + } + + // 余额数字 + .balance-text { + font-weight: 600; + color: #ff8e53; + } + + // 充值文字 + .recharge-text { + height: 100%; + width: 60px; + display: flex; + justify-content: center; + align-items: center; + border-radius: 10px; + font-size: 13px; + color: #ff8e53; + font-weight: 600; + } + + &:hover { + background: rgba(255, 142, 83, 0.15); + box-shadow: 0 4px 12px rgba(255, 142, 83, 0.2); + + + } + + @media (max-width: 768px) { + height: 36px; + padding: 0 14px; + font-size: 13px; + gap: 6px; + + .recharge-text { + padding: 1px 6px; + font-size: 12px; + } + } +} + +// 登录按钮 +.btn { + min-width: 120px; + height: 48px; + font-size: 16px; + background-image: linear-gradient(270deg, #00f2fe 11.11%, #4facfe); + border-radius: 24px; + display: flex; + justify-content: center; + align-items: center; + font-weight: 600; + color: #0a1428; + cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 12px rgba(0, 242, 254, 0.3); + + &:hover { + background-image: linear-gradient(270deg, #4facfe 11.11%, #00f2fe); + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(0, 242, 254, 0.4); + } + + @media (max-width: 768px) { + min-width: 100px; + height: 40px; + font-size: 14px; + } +} + +// 用户个人信息区域 +.user-profile { + position: relative; + display: inline-block; +} + +// 下拉菜单打开时,箭头保持指向上 +.user-profile.dropdown-open .user-trigger .dropdown-icon { + transform: rotate(180deg); + color: #00ffcc; +} + +// 用户触发区域 +.user-trigger { + display: flex; + align-items: center; + gap: 8px; + padding: 0 20px; + height: 44px; + background: rgba(255, 255, 255, 0.1); + border-radius: 22px; + color: #fff; + cursor: pointer; + transition: all 0.3s ease; + border: 1px solid transparent; + + &:hover { + background: rgba(255, 255, 255, 0.15); + border-color: rgba(0, 255, 204, 0.3); + box-shadow: 0 0 15px rgba(0, 255, 204, 0.2); + } + + .user-name { + font-size: 15px; + font-weight: 500; + max-width: 120px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .dropdown-icon { + width: 16px; + height: 16px; + transition: transform 0.3s ease; + color: rgba(255, 255, 255, 0.8); + } + + &:hover .dropdown-icon { + transform: rotate(180deg); + color: #00ffcc; + } + + @media (max-width: 768px) { + height: 36px; + padding: 0 14px; + + .user-name { + max-width: 80px; + font-size: 13px; + } + } +} + +// 用户下拉菜单 +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 8px; + width: 220px; + background: rgba(10, 14, 20, 0.95); + backdrop-filter: blur(12px); + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); + overflow: hidden; + z-index: 1000; + + &::before { + content: ''; + position: absolute; + top: -8px; + right: 20px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-bottom: 8px solid rgba(10, 14, 20, 0.95); + } +} + +// 下拉菜单项 +.dropdown-item { + display: flex; + align-items: center; + padding: 12px 16px; + color: #fff; + transition: all 0.2s ease; + cursor: pointer; + + &:hover { + background: rgba(0, 255, 204, 0.1); + } + + &.user-id { + justify-content: space-between; + font-size: 14px; + + .item-label { + color: rgba(255, 255, 255, 0.7); + } + + .item-value { + color: #00ffcc; + font-family: monospace; + font-size: 13px; + } + } + + &.logout { + gap: 8px; + font-size: 14px; + + .item-icon { + width: 16px; + height: 16px; + color: rgba(255, 255, 255, 0.8); + } + + &:hover { + color: #ff6b6b; + + .item-icon { + color: #ff6b6b; + } + } + } +} + +// 下拉菜单分隔线 +.dropdown-divider { + height: 1px; + background: rgba(255, 255, 255, 0.1); + margin: 4px 0; +} + +// 下拉菜单动画 +.dropdown-enter-active, +.dropdown-leave-active { + transition: all 0.3s ease; +} + +.dropdown-enter-from { + opacity: 0; + transform: translateY(-10px) scale(0.95); +} + +.dropdown-leave-to { + opacity: 0; + transform: translateY(-10px) scale(0.95); +} \ No newline at end of file diff --git a/src/assets/less/Img/ImgBox.css b/src/assets/less/Img/ImgBox.css new file mode 100644 index 0000000..79490d2 --- /dev/null +++ b/src/assets/less/Img/ImgBox.css @@ -0,0 +1,144 @@ +.container { + width: 100%; + height: 100%; +} +.Topcard { + background-color: #1a1c20; + border-radius: 12px; + padding: 16px; + border: 0; +} +.Bottomcard { + background-color: #1a1c20; + border-radius: 12px; + padding: 16px; + border: 0; + margin-top: 12px; +} +.card-top { + display: flex; + justify-content: space-between; +} +.card-top img { + width: 163px; +} +.card-top .top-left h2 { + font-size: 24px; + font-weight: 600; + color: #fff; +} +.card-top .top-left .desc { + font-size: 14px; + margin-top: 4px; + color: #ffffff7a; +} +.card-top .top-left .iconfont { + font-size: 12px; + padding-right: 4px; +} +.card-top .top-left .add { + display: flex; + gap: 10px; + margin-top: 16px; +} +.card-top .top-left .add-item { + font-size: 14px; + gap: 4px; + border-radius: 8px; + color: #fff; + padding: 6px 12px; + background-color: #ffffff0a; +} +.card-bottom { + margin-top: 16px; +} +:deep(.el-textarea) .el-textarea__inner { + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 0 !important; + padding: 12px 0 !important; + font-size: 14px; + line-height: 1.5; + color: #fff !important; + resize: vertical; + outline: none !important; + border-radius: 10px !important; + color: #fff; + backdrop-filter: blur(30px); + padding: 14px 16px !important; +} +:deep(.el-textarea) .el-textarea__inner:focus { + border: none !important; + box-shadow: none !important; + outline: none !important; +} +:deep(.el-textarea) .el-textarea__inner::placeholder { + color: #ffffff7a !important; + font-size: 14px; +} +:deep(.el-textarea) .el-input__count { + background: transparent; + color: #ffffff7a; +} +:deep(.el-select__wrapper) { + width: 100% !important; + height: 100%!important; + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 0 !important; + font-size: 14px; + color: #fff !important; + resize: vertical; + outline: none !important; + border-radius: 10px !important; + color: #fff; +} +:deep(.el-select__selected-item) { + color: #fff !important; +} +.select { + display: flex; + flex-direction: column; +} +.select .select-item { + width: 100%; + display: flex; + align-items: center; +} +.select .select-item .title { + width: 50%; + font-size: 14px; + color: #fff; + padding-right: 12px; +} +.select .select-item .content { + flex: 1; +} +.border { + height: 1px; + margin: 12px 0; +} +.quantity-buttons { + display: flex; + gap: 8px; +} +.quantity-buttons .quantity-btn { + flex: 1; + padding: 8px 0; + background-color: rgba(0, 0, 0, 0.32); + border: none; + border-radius: 10px; + color: #fff; + font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; +} +.quantity-buttons .quantity-btn:hover { + background-color: rgba(255, 255, 255, 0.1); +} +.quantity-buttons .quantity-btn.active { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; +} diff --git a/src/assets/less/Img/ImgBox.less b/src/assets/less/Img/ImgBox.less new file mode 100644 index 0000000..8a5a9a0 --- /dev/null +++ b/src/assets/less/Img/ImgBox.less @@ -0,0 +1,177 @@ +.container { + width: 100%; + height: 100%; +} + +.Topcard { + background-color: #1a1c20; + border-radius: 12px; + padding: 16px; + border: 0; +} + +.Bottomcard { + background-color: #1a1c20; + border-radius: 12px; + padding: 16px; + border: 0; + margin-top: 12px; +} + +.card-top { + display: flex; + justify-content: space-between; + + img { + width: 163px; + } + + .top-left { + h2 { + font-size: 24px; + font-weight: 600; + color: #fff; + } + + .desc { + font-size: 14px; + margin-top: 4px; + color: #ffffff7a; + } + + .iconfont { + font-size: 12px; + padding-right: 4px; + } + + .add { + display: flex; + gap: 10px; + margin-top: 16px; + } + + .add-item { + font-size: 14px; + gap: 4px; + border-radius: 8px; + color: #fff; + padding: 6px 12px; + background-color: #ffffff0a; + } + } +} + +.card-bottom { + margin-top: 16px; +} + +:deep(.el-textarea) { + + .el-textarea__inner { + + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 0 !important; + padding: 12px 0 !important; + font-size: 14px; + line-height: 1.5; + color: #fff !important; + resize: vertical; + outline: none !important; + border-radius: 10px !important; + color: #fff; + backdrop-filter: blur(30px); + padding: 14px 16px !important; + + &:focus { + border: none !important; + box-shadow: none !important; + outline: none !important; + } + + &::placeholder { + color: #ffffff7a !important; + font-size: 14px; + } + } + + // 确保没有任何附加的边框或装饰出现 + .el-input__count { + background: transparent; + color: #ffffff7a; + } +} + :deep(.el-select__wrapper) { + + width: 100% !important; + height: 100%!important; + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 0 !important; + font-size: 14px; + color: #fff !important; + resize: vertical; + outline: none !important; + border-radius: 10px !important; + color: #fff; + } + + :deep(.el-select__selected-item) { + color: #fff !important; + } +.select { + display: flex; + flex-direction: column; + + .select-item { + width: 100%; + display: flex; + align-items: center; + + .title { + width: 50%; + font-size: 14px; + color: #fff; + padding-right: 12px; + } + + .content { + flex: 1; + + + } + } +} + +.border { + height: 1px; + margin: 12px 0; +} + +.quantity-buttons { + display: flex; + gap: 8px; + + .quantity-btn { + flex: 1; + padding: 8px 0; + background-color: rgba(0, 0, 0, 0.32); + border: none; + border-radius: 10px; + color: #fff; + font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; + + &:hover { + background-color: rgba(255, 255, 255, 0.1); + } + + &.active { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + } +} diff --git a/src/assets/less/Login/Login.css b/src/assets/less/Login/Login.css new file mode 100644 index 0000000..3b92847 --- /dev/null +++ b/src/assets/less/Login/Login.css @@ -0,0 +1,151 @@ +.login { + width: 100%; + height: 100vh; + overflow: hidden; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} +.background-video-stack { + position: absolute; + inset: 0; + z-index: 0; +} +.background-video { + position: absolute; + inset: 0; + height: 100%; + width: 100%; + object-fit: cover; + opacity: 1; + pointer-events: none; + transition: opacity 0.4s ease-in-out; +} +.form-card { + position: relative; + left: 25%; + z-index: 1; + width: 400px; + max-width: 90%; + padding: 40px 30px; + background: rgba(255, 255, 255, 0.15); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border-radius: 24px; + border: 1px solid rgba(255, 255, 255, 0.3); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); + color: #fff; +} +.form-top { + text-align: center; + margin-bottom: 10%; +} +.form-title { + margin-bottom: 8px; + font-weight: 400; + letter-spacing: 2px; + color: #fff; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} +.form-text { + font-size: 14px; +} +.login-form :deep(.el-input__wrapper) { + background: rgba(255, 255, 255, 0.2); + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.3) inset; + border-radius: 12px; + transition: all 0.3s; +} +.login-form :deep(.el-input__wrapper):hover { + background: rgba(255, 255, 255, 0.3); +} +.login-form :deep(.el-input__wrapper).is-focus { + background: rgba(255, 255, 255, 0.35); + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset; +} +.login-form :deep(.el-input__inner) { + color: #fff; +} +.login-form :deep(.el-input__inner)::placeholder { + color: rgba(255, 255, 255, 0.6); +} +.login-form :deep(.el-input__prefix) { + color: rgba(255, 255, 255, 0.9); +} +.captcha-wrapper { + margin-top: 16px; + display: flex; + gap: 12px; +} +.captcha-wrapper .captcha-input { + flex: 1; +} +.glass-btn { + background: rgba(255, 255, 255, 0.2) !important; + backdrop-filter: blur(10px) !important; + -webkit-backdrop-filter: blur(10px) !important; + border: 1px solid rgba(255, 255, 255, 0.3) !important; + color: #fff !important; + font-weight: 400; + border-radius: 12px; + transition: all 0.3s ease; +} +.glass-btn:hover:not(:disabled) { + background: rgba(255, 255, 255, 0.35) !important; + border-color: rgba(255, 255, 255, 0.5) !important; + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); +} +.glass-btn:active:not(:disabled) { + transform: translateY(0); + background: rgba(255, 255, 255, 0.45) !important; +} +.glass-btn:disabled { + background: rgba(255, 255, 255, 0.1) !important; + border-color: rgba(255, 255, 255, 0.15) !important; + color: rgba(255, 255, 255, 0.5) !important; + backdrop-filter: blur(5px) !important; + cursor: not-allowed; +} +.captcha-btn { + min-width: 160px; + font-size: 14px; + padding: 12px 16px; + height: 40px; +} +.submit-btn { + width: 100%; + margin-top: 30px; + background: rgba(255, 255, 255, 0.25) !important; + font-size: 16px; + padding: 14px 0; +} +.form-bottom { + text-align: center; + font-size: 12px; + margin-top: 20%; +} +/* 账号选择弹窗样式 */ +.account-list .account-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px; + border-bottom: 1px solid #f0f0f0; +} +.account-list .account-item:last-child { + border-bottom: none; +} +.account-list .account-item .account-info .account-name { + font-size: 16px; + font-weight: 500; + margin-bottom: 4px; +} +.account-list .account-item .account-info .account-phone { + font-size: 14px; + color: #909399; +} +.account-list .account-item:hover { + background-color: #f5f7fa; +} diff --git a/src/assets/less/Login/Login.less b/src/assets/less/Login/Login.less new file mode 100644 index 0000000..0ee5e3c --- /dev/null +++ b/src/assets/less/Login/Login.less @@ -0,0 +1,183 @@ +.login { + width: 100%; + height: 100vh; + overflow: hidden; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.background-video-stack { + position: absolute; + inset: 0; + z-index: 0; +} + +.background-video { + position: absolute; + inset: 0; + height: 100%; + width: 100%; + object-fit: cover; + opacity: 1; + pointer-events: none; + transition: opacity 0.4s ease-in-out; +} + +.form-card { + position: relative; + left: 25%; + z-index: 1; + width: 400px; + max-width: 90%; + padding: 40px 30px; + background: rgba(255, 255, 255, 0.15); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border-radius: 24px; + border: 1px solid rgba(255, 255, 255, 0.3); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); + color: #fff; +} + +.form-top { + text-align: center; + margin-bottom: 10%; +} + +.form-title { + margin-bottom: 8px; + font-weight: 400; + letter-spacing: 2px; + color: #fff; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.form-text { + font-size: 14px; +} + +.login-form { + :deep(.el-input__wrapper) { + background: rgba(255, 255, 255, 0.2); + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.3) inset; + border-radius: 12px; + transition: all 0.3s; + + &:hover { + background: rgba(255, 255, 255, 0.3); + } + + &.is-focus { + background: rgba(255, 255, 255, 0.35); + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5) inset; + } + } + + :deep(.el-input__inner) { + color: #fff; + + &::placeholder { + color: rgba(255, 255, 255, 0.6); + } + } + + :deep(.el-input__prefix) { + color: rgba(255, 255, 255, 0.9); + } +} + +.captcha-wrapper { + margin-top: 16px; + display: flex; + gap: 12px; + + .captcha-input { + flex: 1; + } +} + +.glass-btn { + background: rgba(255, 255, 255, 0.2) !important; + backdrop-filter: blur(10px) !important; + -webkit-backdrop-filter: blur(10px) !important; + border: 1px solid rgba(255, 255, 255, 0.3) !important; + color: #fff !important; + font-weight: 400; + border-radius: 12px; + transition: all 0.3s ease; + + &:hover:not(:disabled) { + background: rgba(255, 255, 255, 0.35) !important; + border-color: rgba(255, 255, 255, 0.5) !important; + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); + } + + &:active:not(:disabled) { + transform: translateY(0); + background: rgba(255, 255, 255, 0.45) !important; + } + + &:disabled { + background: rgba(255, 255, 255, 0.1) !important; + border-color: rgba(255, 255, 255, 0.15) !important; + color: rgba(255, 255, 255, 0.5) !important; + backdrop-filter: blur(5px) !important; + cursor: not-allowed; + } +} + +.captcha-btn { + min-width: 160px; + font-size: 14px; + padding: 12px 16px; + height: 40px; +} + +.submit-btn { + width: 100%; + margin-top: 30px; + background: rgba(255, 255, 255, 0.25) !important; + font-size: 16px; + padding: 14px 0; +} + +.form-bottom { + text-align: center; + font-size: 12px; + margin-top: 20%; +} + +/* 账号选择弹窗样式 */ +.account-list { + .account-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px; + border-bottom: 1px solid #f0f0f0; + + &:last-child { + border-bottom: none; + } + + .account-info { + .account-name { + font-size: 16px; + font-weight: 500; + margin-bottom: 4px; + } + + .account-phone { + font-size: 14px; + color: #909399; + } + } + + &:hover { + background-color: #f5f7fa; + } + } +} \ No newline at end of file diff --git a/src/assets/less/RightResult/RightResult.css b/src/assets/less/RightResult/RightResult.css new file mode 100644 index 0000000..628f225 --- /dev/null +++ b/src/assets/less/RightResult/RightResult.css @@ -0,0 +1,278 @@ +.rig { + padding: 14px; + width: 100%; + height: calc(100vh - 100px); + border: 0; + background-color: #1a1c20; + color: #fff; + border-radius: 12px; + display: flex; + flex-direction: column; +} +.rig :deep(.el-card__body) { + height: 100%; + display: flex; + flex-direction: column; +} +.top { + display: flex; + align-items: center; + gap: 20px; + padding: 0 0 12px 0; +} +.top :deep(.el-select__wrapper) { + border: none; + background-color: rgba(0, 0, 0, 0.32); + border-radius: 10px; + font-size: 14px; + color: #fff; +} +.top :deep(.el-checkbox__label) { + color: #fff; +} +.content { + flex: 1; + overflow-y: auto; + background-color: #1E1E22; + border-radius: 8px; + padding: 12px; +} +.content::-webkit-scrollbar { + width: 6px; +} +.content::-webkit-scrollbar-track { + background: #0F0F19; + border-radius: 3px; +} +.content::-webkit-scrollbar-thumb { + background: #2A2A32; + border-radius: 3px; +} +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + gap: 16px; + color: rgba(255, 255, 255, 0.5); +} +.empty { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + height: 100%; + gap: 20px; +} +.empty img { + width: 30%; + opacity: 0.6; +} +.empty .title { + font-size: 14px; + color: rgba(255, 255, 255, 0.6); +} +/* 任务卡片样式 - 完全对齐参考 */ +.task-list { + display: flex; + flex-direction: column; + gap: 16px; +} +.task-item { + background: #1A1C20; + border-radius: 12px; + padding: 16px; + transition: all 0.2s; +} +.task-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 12px; +} +.task-header .task-title { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: #fff; +} +.task-header .task-title .title-icon { + width: 20px; + height: 20px; + color: rgba(255, 255, 255, 0.7); +} +.task-header .task-time { + font-size: 12px; + color: rgba(255, 255, 255, 0.4); +} +.task-prompt-wrapper { + margin-bottom: 12px; +} +.task-prompt-wrapper .prompt-content { + display: flex; + align-items: center; + gap: 12px; +} +.task-prompt-wrapper .video-preview { + width: 40px; + height: 40px; + flex-shrink: 0; +} +.task-prompt-wrapper .video-preview .preview-bg { + width: 100%; + height: 100%; + border-radius: 8px; + overflow: hidden; + position: relative; + background: #343C48; +} +.task-prompt-wrapper .video-preview .preview-bg::before { + content: ''; + position: absolute; + inset: 0; + background-image: var(--bg-image-url); + background-size: cover; + background-position: center; + opacity: 0.48; + filter: blur(30px); + z-index: 0; +} +.task-prompt-wrapper .video-preview .preview-bg .preview-video { + width: 100%; + height: 100%; + object-fit: contain; + position: relative; + z-index: 1; +} +.task-prompt-wrapper .prompt-text { + flex: 1; + font-size: 14px; + color: rgba(255, 255, 255, 0.8); + display: flex; + align-items: center; + gap: 8px; +} +.task-prompt-wrapper .prompt-text .tag { + display: inline-flex; + align-items: center; + gap: 4px; + background: rgba(0, 0, 0, 0.4); + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 6px; + padding: 2px 6px; + font-size: 12px; + white-space: nowrap; +} +.task-prompt-wrapper .prompt-text .tag .tag-icon { + width: 12px; + height: 12px; + color: #AB8DFF; +} +.task-prompt-wrapper .model-info { + font-size: 12px; + color: rgba(255, 255, 255, 0.4); + display: flex; + align-items: center; + gap: 8px; +} +.task-prompt-wrapper .model-info .split { + color: rgba(255, 255, 255, 0.1); +} +.video-player { + margin-bottom: 12px; +} +.video-player .player-container { + width: 100%; + aspect-ratio: 16 / 9; + background: #000; + border-radius: 8px; + overflow: hidden; +} +.video-player .player-container .task-video { + width: 100%; + height: 100%; + object-fit: contain; +} +.task-actions { + display: flex; + align-items: center; + justify-content: space-between; +} +.task-actions .action-left { + display: flex; + gap: 8px; +} +.task-actions .action-left .action-btn { + height: 32px; + background: #2A2A32; + border: none; + color: #fff; + border-radius: 8px; + font-size: 14px; + display: flex; + align-items: center; + gap: 6px; +} +.task-actions .action-left .action-btn:hover { + background: #3A3A42; +} +.task-actions .action-left .action-btn .action-icon { + width: 16px; + height: 16px; +} +.task-actions .action-right { + display: flex; + align-items: center; + gap: 4px; + background: #2A2A32; + border-radius: 8px; + padding: 4px; +} +.task-actions .action-right .icon-btn { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + cursor: pointer; + color: rgba(255, 255, 255, 0.7); + transition: all 0.2s; +} +.task-actions .action-right .icon-btn:hover { + background: #3A3A42; + color: #fff; +} +.task-actions .action-right .icon-btn svg { + width: 18px; + height: 18px; +} +/* 未登录样式 */ +.login-require { + flex: 1; + display: flex; + justify-content: center; + align-items: center; +} +.login-require-content { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 24px; +} +.login-require-content .message { + font-size: 16px; + color: rgba(255, 255, 255, 0.7); +} +.login-require-content .login-btn { + width: 140px; + height: 44px; + border-radius: 12px; + font-size: 16px; + background: linear-gradient(270deg, #94d8ff 11.11%, #e0ddff); + border: none; + color: #000; +} diff --git a/src/assets/less/RightResult/RightResult.less b/src/assets/less/RightResult/RightResult.less new file mode 100644 index 0000000..8a4ea4f --- /dev/null +++ b/src/assets/less/RightResult/RightResult.less @@ -0,0 +1,378 @@ + +.rig { + padding: 14px; + width: 100%; + height: calc(100vh - 100px); + border: 0; + background-color: #1a1c20; + color: #fff; + border-radius: 12px; + display: flex; + flex-direction: column; + + :deep(.el-card__body) { + height: 100%; + display: flex; + flex-direction: column; + } +} + +.top { + display: flex; + align-items: center; + gap: 20px; + padding: 0 0 12px 0; + + :deep(.el-select__wrapper) { + border: none; + background-color: rgba(0, 0, 0, 0.32); + border-radius: 10px; + font-size: 14px; + color: #fff; + } + + :deep(.el-checkbox__label) { + color: #fff; + } +} + +.content { + flex: 1; + overflow-y: auto; + background-color: #1E1E22; + border-radius: 8px; + padding: 12px; + + &::-webkit-scrollbar { width: 6px; } + &::-webkit-scrollbar-track { background: #0F0F19; border-radius: 3px; } + &::-webkit-scrollbar-thumb { background: #2A2A32; border-radius: 3px; } +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + gap: 16px; + color: rgba(255, 255, 255, 0.5); +} + +.empty { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + height: 100%; + gap: 20px; + + img { + width: 30%; + opacity: 0.6; + } + .title { + font-size: 14px; + color: rgba(255, 255, 255, 0.6); + } +} + +/* 任务卡片样式 - 完全对齐参考 */ +.task-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.task-item { + background: #1A1C20; + border-radius: 12px; + padding: 16px; + transition: all 0.2s; +} + +.task-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 12px; + + .task-title { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: #fff; + + .title-icon { + width: 20px; + height: 20px; + color: rgba(255,255,255,0.7); + } + } + + .task-status { + display: flex; + align-items: center; + } + + .task-time { + font-size: 12px; + color: rgba(255,255,255,0.4); + } +} + +.task-prompt-wrapper { + margin-bottom: 12px; + + .prompt-content { + display: flex; + align-items: center; + gap: 12px; + } + + .video-preview { + width: 40px; + height: 40px; + flex-shrink: 0; + + .preview-bg { + width: 100%; + height: 100%; + border-radius: 8px; + overflow: hidden; + position: relative; + background: #343C48; + + &::before { + content: ''; + position: absolute; + inset: 0; + background-image: var(--bg-image-url); + background-size: cover; + background-position: center; + opacity: 0.48; + filter: blur(30px); + z-index: 0; + } + + .preview-video { + width: 100%; + height: 100%; + object-fit: contain; + position: relative; + z-index: 1; + } + } + } + + .prompt-text { + flex: 1; + font-size: 14px; + color: rgba(255,255,255,0.8); + display: flex; + align-items: center; + gap: 8px; + + .tag { + display: inline-flex; + align-items: center; + gap: 4px; + background: rgba(0,0,0,0.4); + border: 1px solid rgba(255,255,255,0.12); + border-radius: 6px; + padding: 2px 6px; + font-size: 12px; + white-space: nowrap; + + .tag-icon { + width: 12px; + height: 12px; + color: #AB8DFF; + } + } + } + + .model-info { + font-size: 12px; + color: rgba(255,255,255,0.4); + display: flex; + align-items: center; + gap: 8px; + + .split { + color: rgba(255,255,255,0.1); + } + } + + .task-meta { + font-size: 12px; + color: rgba(255, 255, 255, 0.5); + display: flex; + align-items: center; + gap: 8px; + + .split { + color: rgba(255, 255, 255, 0.1); + } + + .task-time { + color: rgba(255, 255, 255, 0.6); + } + } +} + +.video-player { + margin-bottom: 12px; + + .player-container { + width: 100%; + aspect-ratio: 16 / 9; + background: #000; + border-radius: 8px; + overflow: hidden; + + .task-video { + width: 100%; + height: 100%; + object-fit: contain; + } + } +} + +.task-actions { + display: flex; + align-items: center; + justify-content: space-between; + + .action-left { + display: flex; + gap: 8px; + + .action-btn { + height: 32px; + background: #2A2A32; + border: none; + color: #fff; + border-radius: 8px; + font-size: 14px; + display: flex; + align-items: center; + gap: 6px; + + &:hover { + background: #3A3A42; + } + + .action-icon { + width: 16px; + height: 16px; + } + } + } + + .action-right { + display: flex; + align-items: center; + gap: 4px; + background: #2A2A32; + border-radius: 8px; + padding: 4px; + + .icon-btn { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + cursor: pointer; + color: rgba(255,255,255,0.7); + transition: all 0.2s; + + &:hover { + background: #3A3A42; + color: #fff; + } + + svg { + width: 18px; + height: 18px; + } + } + } +} + +/* 未登录样式 */ +.login-require { + flex: 1; + display: flex; + justify-content: center; + align-items: center; +} + +.login-require-content { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 24px; + + .message { + font-size: 16px; + color: rgba(255, 255, 255, 0.7); + } + + .login-btn { + width: 140px; + height: 44px; + border-radius: 12px; + font-size: 16px; + background: linear-gradient(270deg, #94d8ff 11.11%, #e0ddff); + border: none; + color: #000; + } +} + +/* 状态徽章样式 */ +.status-badge { + padding: 4px 12px; + border-radius: 12px; + font-size: 12px; + font-weight: 500; + + &.status-created { + background-color: rgba(148, 216, 255, 0.2); + color: #94D8FF; + } + + &.status-processing { + background-color: rgba(255, 193, 7, 0.2); + color: #FFC107; + animation: pulse 2s infinite; + } + + &.status-queueing { + background-color: rgba(255, 255, 255, 0.1); + color: #FFFFFF; + } + + &.status-succeeded, + &.status-completed { + background-color: rgba(76, 175, 80, 0.2); + color: #4CAF50; + } + + &.status-failed { + background-color: rgba(244, 67, 54, 0.2); + color: #F44336; + } +} + +@keyframes pulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: 0.5; + } +} diff --git a/src/assets/less/Video/text.css b/src/assets/less/Video/text.css new file mode 100644 index 0000000..7a4ff43 --- /dev/null +++ b/src/assets/less/Video/text.css @@ -0,0 +1,186 @@ +.reference-to-video { + height: 100%; + display: flex; + flex-direction: column; + gap: 16px; + /* 卡片间距,可按需调整 */ +} +/* 提示词卡片:自动填充剩余高度 */ +.card { + flex: 1; + /* 关键:占据剩余空间 */ + min-height: 0; + /* 允许收缩,防止溢出 */ + background-color: #1a1c20; + border: none; + border-radius: 12px; + display: flex; + flex-direction: column; + overflow: hidden; + padding: 16px; +} +.card :deep(.el-card__body) { + flex: 1; + display: flex; + flex-direction: column; + padding: 12px 16px; + height: 100%; + overflow: hidden; +} +.reference-container { + flex: 1; + display: flex; + flex-direction: column; + gap: 20px; + color: #fff; + overflow: hidden; +} +.input { + flex: 1; + width: 100%; + display: flex; + flex-direction: column; +} +.input :deep(.el-textarea) { + flex: 1; + display: flex; + flex-direction: column; +} +.input :deep(.el-textarea__inner) { + flex: 1; + min-height: 150px; + resize: vertical; +} +/* 底部卡片:高度由内容决定,不伸缩 */ +.btmcard { + flex-shrink: 0; + /* 不参与剩余空间分配 */ + background-color: #1a1c20; + border: none; + border-radius: 12px; + padding: 16px; + margin-top: 0; + /* 间距已由 .reference-to-video 的 gap 控制 */ +} +.btmcard :deep(.el-card__body) { + padding: 12px 16px; +} +/* 其余原有样式保持不变 */ +.select { + display: flex; + flex-direction: column; + gap: 16px; +} +.select-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 0; +} +.select-title { + width: 50%; + font-size: 14px; + color: #fff; + padding-right: 12px; +} +.select-content { + width: 50%; + display: flex; + gap: 8px; +} +.required-star { + color: #f56c6c; + margin-left: 4px; +} +.audio-wrapper { + display: flex; + gap: 8px; + width: 100%; +} +.audio-wrapper .el-input { + flex: 1; +} +.audio-wrapper .upload-btn { + background-color: rgba(255, 255, 255, 0.08); + border: none; + color: #fff; + height: 32px; + padding: 0 12px; +} +.audio-wrapper .upload-btn:hover { + background-color: rgba(255, 255, 255, 0.16); +} +/* 全局深度样式 */ +:deep(.el-select__wrapper) { + width: 100% !important; + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 10px !important; + font-size: 14px; + color: #fff !important; + outline: none !important; +} +:deep(.el-select__selected-item) { + color: #fff !important; +} +:deep(.el-textarea) .el-textarea__inner { + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 10px !important; + font-size: 14px; + line-height: 1.5; + color: #fff !important; + resize: vertical; + outline: none !important; + backdrop-filter: blur(30px); + padding: 14px 16px !important; +} +:deep(.el-textarea) .el-textarea__inner:focus { + border: none !important; + box-shadow: none !important; + outline: none !important; +} +:deep(.el-textarea) .el-textarea__inner::placeholder { + color: #ffffff7a !important; + font-size: 14px; +} +:deep(.el-textarea) .el-input__count { + background: transparent; + color: #ffffff7a; +} +:deep(.el-input-number) { + width: 100%; +} +:deep(.el-input-number) .el-input__wrapper { + background-color: rgba(0, 0, 0, 0.32) !important; + border: none !important; + box-shadow: none !important; + border-radius: 10px !important; +} +:deep(.el-input-number) .el-input__inner { + color: #fff !important; + background-color: transparent !important; +} +:deep(.el-input-number) .el-input-number__decrease, +:deep(.el-input-number) .el-input-number__increase { + background-color: rgba(255, 255, 255, 0.08); + color: #fff; + border: none; +} +:deep(.el-input__wrapper) { + width: 100% !important; + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 10px !important; + font-size: 14px; + color: #fff !important; + outline: none !important; +} +.offpeak-switch { + display: flex; + align-items: center; + height: 32px; +} diff --git a/src/assets/less/Video/text.less b/src/assets/less/Video/text.less new file mode 100644 index 0000000..8834a29 --- /dev/null +++ b/src/assets/less/Video/text.less @@ -0,0 +1,213 @@ + +.reference-to-video { + height: 100%; + display: flex; + flex-direction: column; + gap: 16px; /* 卡片间距,可按需调整 */ +} + +/* 提示词卡片:自动填充剩余高度 */ +.card { + flex: 1; /* 关键:占据剩余空间 */ + min-height: 0; /* 允许收缩,防止溢出 */ + background-color: #1a1c20; + border: none; + border-radius: 12px; + display: flex; + flex-direction: column; + overflow: hidden; + padding: 16px; +} + +.card :deep(.el-card__body) { + flex: 1; + display: flex; + flex-direction: column; + padding: 12px 16px; + height: 100%; + overflow: hidden; +} + +.reference-container { + flex: 1; + display: flex; + flex-direction: column; + gap: 20px; + color: #fff; + overflow: hidden; +} + +.input { + flex: 1; + width: 100%; + display: flex; + flex-direction: column; +} + +.input :deep(.el-textarea) { + flex: 1; + display: flex; + flex-direction: column; +} + +.input :deep(.el-textarea__inner) { + flex: 1; + min-height: 150px; + resize: vertical; +} + +/* 底部卡片:高度由内容决定,不伸缩 */ +.btmcard { + flex-shrink: 0; /* 不参与剩余空间分配 */ + background-color: #1a1c20; + border: none; + border-radius: 12px; + padding: 16px; + margin-top: 0; /* 间距已由 .reference-to-video 的 gap 控制 */ +} + +.btmcard :deep(.el-card__body) { + padding: 12px 16px; +} + +/* 其余原有样式保持不变 */ +.select { + display: flex; + flex-direction: column; + gap: 16px; +} + +.select-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 0; +} + +.select-title { + width: 50%; + font-size: 14px; + color: #fff; + padding-right: 12px; +} + +.select-content { + width: 50%; + display: flex; + gap: 8px; +} + +.required-star { + color: #f56c6c; + margin-left: 4px; +} + +.audio-wrapper { + display: flex; + gap: 8px; + width: 100%; + + .el-input { + flex: 1; + } + + .upload-btn { + background-color: rgba(255, 255, 255, 0.08); + border: none; + color: #fff; + height: 32px; + padding: 0 12px; + + &:hover { + background-color: rgba(255, 255, 255, 0.16); + } + } +} + +/* 全局深度样式 */ +:deep(.el-select__wrapper) { + width: 100% !important; + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 10px !important; + font-size: 14px; + color: #fff !important; + outline: none !important; +} + +:deep(.el-select__selected-item) { + color: #fff !important; +} + +:deep(.el-textarea) { + .el-textarea__inner { + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 10px !important; + font-size: 14px; + line-height: 1.5; + color: #fff !important; + resize: vertical; + outline: none !important; + backdrop-filter: blur(30px); + padding: 14px 16px !important; + + &:focus { + border: none !important; + box-shadow: none !important; + outline: none !important; + } + + &::placeholder { + color: #ffffff7a !important; + font-size: 14px; + } + } + + .el-input__count { + background: transparent; + color: #ffffff7a; + } +} + +:deep(.el-input-number) { + width: 100%; + + .el-input__wrapper { + background-color: rgba(0, 0, 0, 0.32) !important; + border: none !important; + box-shadow: none !important; + border-radius: 10px !important; + } + + .el-input__inner { + color: #fff !important; + background-color: transparent !important; + } + + .el-input-number__decrease, + .el-input-number__increase { + background-color: rgba(255, 255, 255, 0.08); + color: #fff; + border: none; + } +} + +:deep(.el-input__wrapper) { + width: 100% !important; + border: none !important; + background-color: rgba(0, 0, 0, 0.32) !important; + box-shadow: none !important; + border-radius: 10px !important; + font-size: 14px; + color: #fff !important; + outline: none !important; +} + +.offpeak-switch { + display: flex; + align-items: center; + height: 32px; +} 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/Header/Header.vue b/src/components/Header/Header.vue new file mode 100644 index 0000000..a5aa9ef --- /dev/null +++ b/src/components/Header/Header.vue @@ -0,0 +1,144 @@ + + + + + \ No newline at end of file diff --git a/src/components/Recharge/Recharge.vue b/src/components/Recharge/Recharge.vue new file mode 100644 index 0000000..db4972c --- /dev/null +++ b/src/components/Recharge/Recharge.vue @@ -0,0 +1,724 @@ + + + + + \ No newline at end of file diff --git a/src/components/RightResult/RightResult.vue b/src/components/RightResult/RightResult.vue new file mode 100644 index 0000000..c48a41d --- /dev/null +++ b/src/components/RightResult/RightResult.vue @@ -0,0 +1,618 @@ + + + + + \ No newline at end of file diff --git a/src/components/img/ImgLeft.vue b/src/components/img/ImgLeft.vue new file mode 100644 index 0000000..59aa81d --- /dev/null +++ b/src/components/img/ImgLeft.vue @@ -0,0 +1,108 @@ + + + \ No newline at end of file diff --git a/src/components/img/ImgTap.vue b/src/components/img/ImgTap.vue new file mode 100644 index 0000000..3208aed --- /dev/null +++ b/src/components/img/ImgTap.vue @@ -0,0 +1,84 @@ + + + \ No newline at end of file diff --git a/src/components/img/ReferenceImg.vue b/src/components/img/ReferenceImg.vue new file mode 100644 index 0000000..b4c0703 --- /dev/null +++ b/src/components/img/ReferenceImg.vue @@ -0,0 +1,170 @@ + + + + + + \ No newline at end of file diff --git a/src/components/img/TextImg.vue b/src/components/img/TextImg.vue new file mode 100644 index 0000000..5012d38 --- /dev/null +++ b/src/components/img/TextImg.vue @@ -0,0 +1,156 @@ + + + + + + \ No newline at end of file diff --git a/src/components/index/AIMode.vue b/src/components/index/AIMode.vue new file mode 100644 index 0000000..50a19e6 --- /dev/null +++ b/src/components/index/AIMode.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/src/components/index/Stencil.vue b/src/components/index/Stencil.vue new file mode 100644 index 0000000..4feff5a --- /dev/null +++ b/src/components/index/Stencil.vue @@ -0,0 +1,691 @@ + + + + \ No newline at end of file diff --git a/src/components/index/top.vue b/src/components/index/top.vue new file mode 100644 index 0000000..5fb7141 --- /dev/null +++ b/src/components/index/top.vue @@ -0,0 +1,485 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/left/Menu.vue b/src/components/left/Menu.vue new file mode 100644 index 0000000..c16e52a --- /dev/null +++ b/src/components/left/Menu.vue @@ -0,0 +1,297 @@ + + + + + \ No newline at end of file diff --git a/src/components/video/ImgVideo.vue b/src/components/video/ImgVideo.vue new file mode 100644 index 0000000..e4ef8a1 --- /dev/null +++ b/src/components/video/ImgVideo.vue @@ -0,0 +1,333 @@ + + + + \ No newline at end of file diff --git a/src/components/video/ReferenceVideo.vue b/src/components/video/ReferenceVideo.vue new file mode 100644 index 0000000..72150c5 --- /dev/null +++ b/src/components/video/ReferenceVideo.vue @@ -0,0 +1,468 @@ + + + + + + + diff --git a/src/components/video/TextVideo.vue b/src/components/video/TextVideo.vue new file mode 100644 index 0000000..8a0181e --- /dev/null +++ b/src/components/video/TextVideo.vue @@ -0,0 +1,471 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/video/VideoLeft.vue b/src/components/video/VideoLeft.vue new file mode 100644 index 0000000..576a68a --- /dev/null +++ b/src/components/video/VideoLeft.vue @@ -0,0 +1,269 @@ + + + + + + \ No newline at end of file diff --git a/src/components/video/VideoTab.vue b/src/components/video/VideoTab.vue new file mode 100644 index 0000000..20f8a3b --- /dev/null +++ b/src/components/video/VideoTab.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..4b4f80a --- /dev/null +++ b/src/main.ts @@ -0,0 +1,25 @@ +import { createApp } from 'vue' +import App from './App.vue' + +// 路由 +import router from './router' +// element-ui +import ElementPlus from 'element-plus' +// element-ui css +import 'element-plus/dist/index.css' +import 'element-plus/theme-chalk/index.css' +// pinia持久化 +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' +// pinia +import { createPinia } from 'pinia' +// icon +import './assets/css/iconfont/iconfont.css' + + +const pinia = createPinia() +pinia.use(piniaPluginPersistedstate) +const app = createApp(App) +app.use(router) +app.use(ElementPlus) +app.use(pinia) +app.mount('#app') \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..a242f88 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,89 @@ +import { createRouter, createWebHashHistory } from 'vue-router' + +const router = createRouter({ + history: createWebHashHistory(), + routes: [ + { + path: '/', + redirect: '/home' + }, + { + path: '/home', + name: 'home', + component: () => import('@/views/Home.vue') + }, + // 登录 + { + path: '/login', + name: 'login', + component: () => import('@/views/login/Login.vue') + }, + // 首页 + { + path: '/Homeindex', + name: 'homeindex', + component: () => import('@/views/Homeindex.vue'), + children: [ + { + path: '/index', + name: 'index', + component: () => import('@/views/index/index.vue') + }, + // ImgGenerate + { + path: '/ImgGenerate', + name: 'ImgGenerate', + component: () => import('@/views/ImgGenerate/ImgGenerate.vue'), + children: [ + { + path: 'reference', + name: 'ImgGenerateReference', + component: () => import('@/views/ImgGenerate/ImgGenerate.vue') + }, + { + path: 'text', + name: 'ImgGenerateText', + component: () => import('@/views/ImgGenerate/ImgGenerate.vue') + } + ] + }, + // videoGenerate + { + path: '/videoGenerate', + name: 'videoGenerate', + component: () => import('@/views/videoGenerate/videoGenerate.vue'), + children: [ + { + path: 'reference', + name: 'VideoGenerateReference', + component: () => import('@/views/videoGenerate/videoGenerate.vue') + }, + { + path: 'image', + name: 'VideoGenerateImage', + component: () => import('@/views/videoGenerate/videoGenerate.vue') + }, + { + path: 'text', + name: 'VideoGenerateText', + component: () => import('@/views/videoGenerate/videoGenerate.vue') + } + ] + }, + + + // 素材广场 + { + path: '/material-square', + name: 'material-square', + component: () => import('@/views/videoGenerate/videoGenerate.vue') + } + + ] + }, + + ] +}) + + +export default router \ No newline at end of file diff --git a/src/store/LoginStore.ts b/src/store/LoginStore.ts new file mode 100644 index 0000000..06e729e --- /dev/null +++ b/src/store/LoginStore.ts @@ -0,0 +1,166 @@ +import { ref } from 'vue'; +import { ElMessage } from 'element-plus'; +import { defineStore } from 'pinia'; +import router from '@/router'; +import type { LoginResult, LoginParams, LoginUser } from '@/types/login'; +import { LoginApi } from '@/apis/login'; +import { openAccount } from '@/apis/home'; + +export const useLoginStore = defineStore( + 'loginStore', + () => { + // 登录状态 + const isLoggedIn = ref(false); + // 当前用户信息 + const userInfo = ref<{ user: LoginUser } | null>(null); + // 多账号列表 + const accountList = ref([]); + // 是否显示账号选择弹窗 + const showAccountSelect = ref(false); + // 登录时间戳(用于精确计算剩余时间,可选) + const loginTimestamp = ref(null); + // 过期前的当前页面路径 + const redirectPath = ref(null); + + // 定时器 ID,用于管理自动登出 + let autoLogoutTimer: ReturnType | null = null; + + // 开户 + const openAccounts = async () => { + const res = await openAccount(); + console.log('开户', res); + }; + + // 清除自动登出计时器 + const clearAutoLogoutTimer = () => { + if (autoLogoutTimer) { + clearTimeout(autoLogoutTimer); + autoLogoutTimer = null; + } + }; + + // 启动自动登出计时器(基于剩余时间) + const startAutoLogoutTimer = () => { + clearAutoLogoutTimer(); + if (!loginTimestamp.value) { + console.log('没有登录时间戳,不启动计时器'); + return; + } + + const now = Date.now(); + const elapsed = now - loginTimestamp.value; + const remaining = Math.max(0, 20 * 60 * 1000 - elapsed); + + console.log('启动自动登出计时器,剩余时间(毫秒):', remaining); + + autoLogoutTimer = setTimeout(() => { + console.log('计时器触发,执行自动登出'); + logoutS(); + }, remaining); + }; + + // 核心登录方法(统一处理) + const doLogin = async (params: LoginParams) => { + const res = await LoginApi(params); + + if (res.status === 'ok') { + openAccounts(); + // 登录成功 + isLoggedIn.value = true; + userInfo.value = res.data as { user: LoginUser }; + // 记录登录时间戳并启动计时器 + loginTimestamp.value = Date.now(); + startAutoLogoutTimer(); + ElMessage.success('登录成功'); + // 跳转到之前保存的路径或默认路径 + const path = redirectPath.value || '/'; + redirectPath.value = null; + router.push(path); + return res; + } + + if (res.status === 'choose') { + // 需要选择账号 + let users: LoginUser[] = []; + const data = res.data; + if (Array.isArray(data)) { + users = data; + } else if (data && 'users' in data) { + users = (data as { users: LoginUser[] }).users; + } + accountList.value = users; + showAccountSelect.value = true; + return res; + } + + // 其他失败情况 + ElMessage.error(res.message || '登录失败'); + return res; + }; + + // 登录(首次) + const Login = (params: LoginParams) => doLogin(params); + + // 选择账号后登录(携带 selected_id) + const loginWithSelectedAccount = async ( + selectedId: string, + params: Omit + ) => { + showAccountSelect.value = false; + return doLogin({ ...params, selected_id: selectedId }); + }; + const logoutS = () => { + console.log('自动登出触发'); + // 保存当前路径 + redirectPath.value = router.currentRoute.value.path; + clearAutoLogoutTimer(); + isLoggedIn.value = false; + userInfo.value = null; + accountList.value = []; + showAccountSelect.value = false; + loginTimestamp.value = null; + router.push('/login'); + ElMessage.error('身份验证过期请重新登录'); + }; + // 登出 + const logout = () => { + clearAutoLogoutTimer(); + isLoggedIn.value = false; + userInfo.value = null; + accountList.value = []; + showAccountSelect.value = false; + loginTimestamp.value = null; + router.push('/login'); + }; + + // 初始化自动登出(页面刷新后调用,恢复计时器) + const initAutoLogout = () => { + console.log('初始化自动登出,当前登录状态:', isLoggedIn.value); + console.log('登录时间戳:', loginTimestamp.value); + if (isLoggedIn.value) { + // 如果没有时间戳(可能因为持久化缺少),用当前时间作为基准 + if (!loginTimestamp.value) { + console.log('没有登录时间戳,使用当前时间作为基准'); + loginTimestamp.value = Date.now(); + } + startAutoLogoutTimer(); + } + }; + + return { + isLoggedIn, + userInfo, + accountList, + showAccountSelect, + redirectPath, + Login, + loginWithSelectedAccount, + logout, + logoutS, + initAutoLogout, + }; + }, + { + persist: true, // 持久化登录状态、userInfo、loginTimestamp 等 + } +); \ No newline at end of file diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..f691315 --- /dev/null +++ b/src/style.css @@ -0,0 +1,79 @@ +:root { + font-family: 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; +} + +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: 2rem; + text-align: center; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/types/home.ts b/src/types/home.ts new file mode 100644 index 0000000..8702463 --- /dev/null +++ b/src/types/home.ts @@ -0,0 +1,288 @@ +// type/home.ts + +// 创作者信息 +export interface Creator { + id: string; + nick_name: string; + avatar: string; + user_medal?: string; + is_following: boolean; +} + +// 尺寸信息 +export interface Size { + width: number; + height: number; + ratio: string; +} + +// 视频创作信息 +export interface Creation { + uri: string; + cover_uri: string; + size: Size; + duration: number; + uris: Record; + cover_uris: Record; + origin_task_type: string; +} + +// 互动信息 +export interface ReactInfo { + voted: boolean; + vote_count: number; + play_count: string; + collected: boolean; + collect_count: number; +} + +// 短剧类型 +export interface ShortFilm { + id: string; + creation: Creation; + title: string; + detail: string; + creator: Creator; + created_at: string; + react_info: ReactInfo; + type: string; + episode_num: number; + phase: string; + latest_episode_num: number; + source: string; + award: Record | null; +} + +// 教程类型 +export interface Tutorial { + id: string; + creation: Creation; + title: string; + detail: string; + creator: Creator; + created_at: string; + react_info: ReactInfo; + type: string; + episode_num: number; + phase: string; + latest_episode_num: number; + source: string; + award: Record | null; +} + +// 媒体资源类型(图生视频、文生视频等) +export interface MediaAsset { + id: string; + tag: string; + creation: Creation; + brief: string; + detail: string; + creator: Creator; + created_at: string; + react_info: ReactInfo; + creation_id: string; + type: string; + recreate_count: number; + award: Record | null; +} + +// 联合类型:列表中的每一项可能是短剧、教程或媒体资源 +export interface FeedItem { + type: 'short_film' | 'tutorial' | 'media_asset'; + short_film: ShortFilm | null; + tutorial: Tutorial | null; + media_asset: MediaAsset | null; + image_asset: Record | null; // 根据实际情况细化 + mini_video: Record | null; // 根据实际情况细化 +} + +// 接口返回的完整数据结构 +export interface FeedResponse { + list: FeedItem[]; + next_page_token: string; + activities: Record[] | null; +} + +// ==================== Share Elements 数据格式 ==================== + +// Share Elements 创建者信息 +export interface ShareElementCreator { + id: string; + nick_name: string; + avatar: string; + is_following: boolean; +} + +// Share Elements 视频信息 +export interface ShareElementVideo { + duration: number; + fps: number; + resolution: { + width: number; + height: number; + resolution: string; + }; + ratio: string; +} + +// Share Elements 创作信息 +export interface ShareElementCreation { + id: string; + task_id: string; + type: string; + grade: string; + uri: string; + download_uri: string; + cover_uri: string; + resolution: { + width: number; + height: number; + resolution: string; + }; + vote: string; + is_favor: boolean; + src_video_duration: number; + creator_id: string; + video: ShareElementVideo; + is_deleted: boolean; + err_code: string; + created_at: string; + origin_task_type: string; + style: string; + duration: number; + has_audio: boolean; + is_asset: boolean; + is_work: boolean; + asset_selected: boolean; + nomark_uri: string; + source_creation: Record | null; + origin_creation: Record | null; + err_info: { + err_code: string; + err_msg: string; + }; + file_name: string; + is_posted: boolean; + has_copyright: boolean; +} + +// Share Elements 互动信息 +export interface ShareElementReactInfo { + voted: boolean; + vote_count: number; + play_count: string; + collected: boolean; + collect_count: number; +} + +// Share Elements 分享信息 +export interface ShareElementShare { + id: string; + element_id: string; + status: string; + category: string[]; + series: string; + copy_count: number; + use_count: number; + creator: ShareElementCreator; + introduce: string; + creations: ShareElementCreation[]; + allow_copy: boolean; + created_at: string; + react_info: ShareElementReactInfo; + cid_to_task: Record; + operate_tag: string; + category_display: string[]; + creator_rank: number; + element_labels: string[]; +} + +// Share Elements 元素信息 +export interface ShareElement { + id: string; + name: string; + type: string; + components: Record[]; + version: string; + labels: Record[]; + creator_id: string; + recaption: { + style: string; + description: string; + }; + created_at: string; + updated_at: string; + share_meta: { + id: string; + status: string; + creator: ShareElementCreator; + }; + voice: { + id: string; + url?: string; + name?: string; + }; + pay_info: { + pay_required: boolean; + }; + modality: string; + creator: ShareElementCreator; +} + +// Share Elements 列表项 +export interface ShareElementItem { + element: ShareElement; + share: ShareElementShare; +} + +// Share Elements 响应数据 +export interface ShareElementsResponse { + share_elements: ShareElementItem[]; + next_page_token: string; + categories: { + code: string; + display_name: string; + display_tag: string; + }[]; + has_liked: boolean; + topics: { + code: string; + display_name: string; + display_tag: string; + }[]; + has_collected: boolean; + tags: { + code: string; + type: string; + display_name: string; + display_tag: string; + extra: { + cover_uri: string; + flag: string; + }; + }[]; +} + +// 转换后 Stencil 组件需要的卡片格式 +export interface StencilItem { + id: string; + type: 'video'; + src: string; + poster: string; + aspectRatio: string; + avatar: string; + userName: string; + likes: number; + averageColor?: string; +} + +// 余额 +interface BalanceData { + account: string; + balance: number; +}; + +export interface BalanceResult { + status: string; + data: Array< BalanceData >; +}; \ No newline at end of file diff --git a/src/types/login.ts b/src/types/login.ts new file mode 100644 index 0000000..924e5a6 --- /dev/null +++ b/src/types/login.ts @@ -0,0 +1,54 @@ +// 验证码返回数据 +export interface CodeData { + message: string; + key: string; +} + +export interface CodeResult { + status: string; + data: CodeData; +} + +// 用户信息 +export interface LoginUser { + id: string; + username: string; + password: string; + email: string; + orgid: string; + nick_name: string | null; + address: string | null; + mobile: string; + user_status: string; + // 可选字段,用于显示 + name?: string; + cellphone?: string; +} + +// 登录成功时的数据 +export interface LoginData { + user: LoginUser; +} + +// 登录返回结果 +// 注意:多账号选择时,后端可能直接返回 { status: 'choose', data: LoginUser[] } +// 或返回 { status: 'choose', data: { users: LoginUser[] } } +// 这里我们使用联合类型,并在 store 中根据实际情况处理 +export interface LoginResult { + status: string; + data: LoginData | LoginUser[] | { users: LoginUser[] }; // 兼容多种结构 + message?: string; +} + +// 登录参数 +export interface LoginParams { + cellphone: string; + key: string; + sms_code: string; + selected_id?: string; // 选择账号时传入 +} + +// 验证码参数 +export interface CaptchaParams { + cellphone: string; +} \ No newline at end of file diff --git a/src/types/model.ts b/src/types/model.ts new file mode 100644 index 0000000..50c2e8d --- /dev/null +++ b/src/types/model.ts @@ -0,0 +1,230 @@ +interface Data { + value: string; + text: string; +}; + +interface Input_field { + name: string; + required?: boolean; + uitype: string; + label?: string; + defaultvalue?: number; + data?: Array< Data >; + lable?: string; +}; + +interface ModelData { + id: string; + name: string; + model: string; + description: string; + llmcatelogid: string; + iconid: string; + upappid: string; + apiname: string; + providerid: string; + ownerid: string; + enabled_date: string; + expired_date: string; + query_apiname: string; + query_period: number; + ppid: string; + input_fields: Array< Input_field >; +}; + +export interface ModelResult{ + status: string; + data: Array< ModelData >; +}; + +export interface Model { + type: string; +} + + +/** + * 模型配置字段 + */ +export interface InputField { + name: string; // 字段名 + label: string; // 显示标签 + uitype: string; // 控件类型: code, text, int, audio 等 + required?: boolean; // 是否必填 + defaultvalue?: string | number | boolean | null; // 默认值 + data?: Array<{ value: string; text?: string }>; // 下拉选项 + max?: number; // 最大值(int 类型) + textField?: string; // 下拉选项显示字段 +} + +/** + * 模型对象 + */ +export interface Model { + id: string; + name: string; + model: string; + description: string; + llmcatelogid: string; + iconid: string; + upappid: string; + apiname: string; + providerid: string; + ownerid: string; + enabled_date: string; + expired_date: string; + query_apiname: string; + query_period: number; + ppid: string; + input_fields: InputField[]; +} + +/** + * 获取模型列表响应 + */ +export interface AllModelResponse { + status: string + data: Model[]; +} + +/** + * 价格查询请求参数 + */ +export interface PriceQueryParams { + product_type: 'llm'; + product_id: string; + config_data: { + action: string; + [key: string]: unknown; + }; +} + +/** + * 价格查询响应 + */ +export interface PriceQueryResponse { + status: string + data: { + amount: number; // 价格 + original_amount?: number | null; + }; +} + +/** + * 文生视频请求参数 + */ +export interface TextVideoParams { + llmid: string; + prompt: string; + duration?: number; + ratio?: string; + resolution?: string; + audio?: boolean; + [key: string]: unknown; +} + +/** + * 文生视频响应 + */ +export interface TextVideoResponse { + taskid: string | undefined; + status: string; + message?: string; + data?: { taskid: string } | null; +} + +/** + * 任务列表响应 - 后端实际返回类型 + */ +export interface TaskResult { + status: string; + data: ItemData; +} + +export interface ItemData { + tasks: Array; +} + +export interface Tasks { + id: string; + llmid: string; + use_date: string; + use_time: string; + userid: string; + usages: null; + ioinfo: Ioinfo; + transno: string; + responsed_seconds: number; + finish_seconds: number; + status: string; + taskid: string; + amount: number; + cost: number; + userorgid: string; + ownerid: null; + accounting_status: string; +} + +export interface Ioinfo { + input: Input; + output: Array; +} + +export interface Input { + llmid: string; + prompt: string; + duration: number; + ratio: string; + resolution: string; + audio: boolean; + transno: string; + model: string; + callbackurl: string; +} + +export interface Usage { + action: string; + credits: number; + type: string; + model: string; + resolution: string; + off_peak: boolean; + duration: number; +} + +export interface Output { + taskid?: string; + status: string; + credits?: number; + usage?: Usage; + type?: string; + image?: string; + video?: string; +} + +/** + * 任务列表响应 - 前端使用的简化类型(保持向后兼容) + */ +export interface TaskListResponse { + status: string; + data: TaskItem[]; +} + +/** + * 任务项 - 前端显示用的简化格式 + */ +export interface TaskItem { + taskid: string; + status: string; + llmid?: string; + prompt?: string; + created_at?: string; + updated_at?: string; + video_url?: string; + cover_url?: string; + duration?: number; + resolution?: string; + error_msg?: string; + model?: string; + use_time?: string; + action?: string; +} \ No newline at end of file diff --git a/src/utlis/request.ts b/src/utlis/request.ts new file mode 100644 index 0000000..930a9ea --- /dev/null +++ b/src/utlis/request.ts @@ -0,0 +1,125 @@ + +import axios from 'axios' +import { ElMessage } from 'element-plus' +// import { ElMessage } from 'element-plus' +import { useLoginStore } from '@/store/LoginStore' +// 请求拦截器 +// 添加请求拦截器 +axios.interceptors.request.use( + function (config) { + // console.log('=== 请求拦截器 ===') + // console.log('请求 URL:', config.url) + // console.log('请求方法:', config.method) + // console.log('请求参数 (params):', config.params) + // console.log('请求数据 (data):', config.data) + // console.log('请求头:', config.headers) + + // config.baseURL = import.meta.env.VITE_API_BASE_URL + + + const Store = useLoginStore() + if (Store.userInfo && Store.userInfo.user && Store.userInfo.user.id) { + config.headers.Authorization = Store.userInfo.user.id + } + return config +}, + function (error) { + // 对请求错误做些什么 + return Promise.reject(error) + }, +) + +// 添加响应拦截器 + +axios.interceptors.response.use( + function (response) { + // 放行的状态列表 + const allowedStatuses = ['ok', 'PENDING', 'created', 'processing', 'queueing', 'succeeded', 'completed', 'failed']; + + // 检查响应数据中的状态 + const responseData = response.data; + const status = responseData?.status || responseData?.data?.resposne?.status; + + // 如果状态在放行列表中,直接返回 + if (status && allowedStatuses.includes(status)) { + return response; + } + + // 如果状态不在放行列表中,也返回(兼容其他状态) + return response; + }, function (error) { + // 只有在确实有错误消息时才显示 ElMessage + if (error?.response?.data?.message) { + ElMessage({ + message: error.response.data.message, + type: 'error', + duration: 2 * 1000 + }) + } + return Promise.reject(error); +}); +const http = (url: string, data?: D, params?: P, method: 'get' | 'PUT' |'Delete'|'post' = 'get'): Promise => { + return new Promise((resolve, reject) => { + axios({ + method, + url, + data, + params, + }) + .then((response) => { + resolve(response.data as T) + }) + + .catch(function (error) { + reject(error) + }) + }) +} + +export const get = (url: string, params?: P): Promise => { + return http(url, undefined, params, 'get') +} +export const post = (url: string, data?: D): Promise => { + return http(url, data, undefined, 'post') +} + +export const Delete = (url: string, data?: D): Promise => { + return http(url, data, undefined, 'Delete') +} +export const PUT = (url: string, data?: D): Promise => { + return http(url, data, undefined, 'PUT') +} + + + + + + + + + +export const uploadFile=async(file:File, uploadUrl:string, additionalData: Record = {})=> { + const formData = new FormData(); + formData.append('file', file); // 'file'是后端接收文件的字段名 + + // 如果需要附加其他数据 + Object.keys(additionalData).forEach(key => { + formData.append(key, additionalData[key]); + }); + + try { + const response = await axios.post(uploadUrl, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + + console.log("000",response.data); + + return response.data; + } catch (error) { + console.error('文件上传失败:', error); + throw error; + } +} + diff --git a/src/utlis/transform.ts b/src/utlis/transform.ts new file mode 100644 index 0000000..90d8753 --- /dev/null +++ b/src/utlis/transform.ts @@ -0,0 +1,98 @@ +// utils/transform.ts +import type { FeedItem, StencilItem, ShareElementItem, ShortFilm, Tutorial, MediaAsset } from '../types/home'; + +type FeedItemData = ShortFilm | Tutorial | MediaAsset; + +export function transformFeedItem(item: FeedItem): StencilItem | null { + // 根据 type 确定实际数据来源 + let data: FeedItemData | null = null; + if (item.type === 'short_film' && item.short_film) { + data = item.short_film; + } else if (item.type === 'tutorial' && item.tutorial) { + data = item.tutorial; + } else if (item.type === 'media_asset' && item.media_asset) { + data = item.media_asset; + } else { + return null; + } + + if (!data) return null; + + const creation = data.creation; + if (!creation) return null; + + // 构建宽高比字符串(CSS 支持 "宽/高" 格式) + const { width, height } = creation.size; + const aspectRatio = `${width}/${height}`; + + return { + id: data.id, + type: 'video', // 当前所有项都是视频,可根据实际情况调整 + src: creation.uri, + poster: creation.cover_uri, + aspectRatio, + avatar: data.creator?.avatar ?? '', + userName: data.creator?.nick_name ?? '', + likes: data.react_info?.vote_count ?? 0, + }; +} + +/** + * 转换 Share Elements 数据格式为 StencilItem 格式 + */ +export function transformShareElementItem(item: ShareElementItem): StencilItem | null { + const element = item.element; + const share = item.share; + + if (!element || !share) return null; + + // 尝试从 creations 中获取第一个视频/图片 + const firstCreation = share.creations?.[0]; + let src = ''; + let poster = ''; + let aspectRatio = '1/1'; + + if (firstCreation) { + // 从 creation 获取 + src = firstCreation.uri; + poster = firstCreation.cover_uri; + + // 计算宽高比 + const width = firstCreation.resolution?.width || 1920; + const height = firstCreation.resolution?.height || 1080; + aspectRatio = `${width}/${height}`; + } else if (element.components?.[0]) { + // 从 components 获取(降级方案) + const component = element.components[0]; + src = component.content; + poster = component.cover_uri || component.src_img; + + // 尝试从 selected_region 获取宽高 + if (component.selected_region) { + const { x: x1, y: y1 } = component.selected_region.top_left; + const { x: x2, y: y2 } = component.selected_region.bottom_right; + const width = x2 - x1; + const height = y2 - y1; + if (width > 0 && height > 0) { + aspectRatio = `${width}/${height}`; + } + } + } + + // 如果仍然没有数据,返回 null + if (!src) return null; + + // 如果没有 poster,使用 src 作为 poster + if (!poster) poster = src; + + return { + id: element.id, + type: 'video', + src, + poster, + aspectRatio, + avatar: element.creator?.avatar ?? '', + userName: element.creator?.nick_name ?? '', + likes: share.react_info?.vote_count ?? 0, + }; +} \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue new file mode 100644 index 0000000..66caa1b --- /dev/null +++ b/src/views/Home.vue @@ -0,0 +1,309 @@ + + + + + \ No newline at end of file diff --git a/src/views/Homeindex.vue b/src/views/Homeindex.vue new file mode 100644 index 0000000..327379b --- /dev/null +++ b/src/views/Homeindex.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/views/ImgGenerate/ImgGenerate.vue b/src/views/ImgGenerate/ImgGenerate.vue new file mode 100644 index 0000000..fae09b7 --- /dev/null +++ b/src/views/ImgGenerate/ImgGenerate.vue @@ -0,0 +1,72 @@ + + + + diff --git a/src/views/index/index.vue b/src/views/index/index.vue new file mode 100644 index 0000000..eb4602c --- /dev/null +++ b/src/views/index/index.vue @@ -0,0 +1,28 @@ + + + \ No newline at end of file diff --git a/src/views/login/Login.vue b/src/views/login/Login.vue new file mode 100644 index 0000000..3a7083a --- /dev/null +++ b/src/views/login/Login.vue @@ -0,0 +1,249 @@ + + + + + \ No newline at end of file diff --git a/src/views/videoGenerate/videoGenerate.vue b/src/views/videoGenerate/videoGenerate.vue new file mode 100644 index 0000000..2d10f20 --- /dev/null +++ b/src/views/videoGenerate/videoGenerate.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..323c78a --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,7 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..b5f94c8 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "baseUrl": ".", + "paths": { + "@/*": [ + "src/*" + ] + }, + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "src/**/*.d.ts" + ] +} \ 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..9728af2 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..47b8e02 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,30 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import { fileURLToPath, URL } from 'node:url' + + + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [vue(),], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + server: { + host: 'localhost', + port: 5173, + // 配置代理解决跨域问题 + proxy: { + '/api': { + target: 'https://opencomputing.ai', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, ''), + } + } + }, + // optimizeDeps: { + // exclude: ['@techui/scifi'] + // }, +})