diff --git a/web/package-lock.json b/web/package-lock.json index 9be1e35..f2b83f7 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@vicons/ionicons5": "^0.13.0", + "@vueuse/core": "^13.6.0", "axios": "^1.9.0", "naive-ui": "^2.41.0", "vue": "^3.5.13", @@ -1122,6 +1123,12 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.35.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.1.tgz", @@ -1590,6 +1597,44 @@ } } }, + "node_modules/@vueuse/core": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.6.0.tgz", + "integrity": "sha512-DJbD5fV86muVmBgS9QQPddVX7d9hWYswzlf4bIyUD2dj8GC46R1uNClZhVAmsdVts4xb2jwp1PbpuiA50Qee1A==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "13.6.0", + "@vueuse/shared": "13.6.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.6.0.tgz", + "integrity": "sha512-rnIH7JvU7NjrpexTsl2Iwv0V0yAx9cw7+clymjKuLSXG0QMcLD0LDgdNmXic+qL0SGvgSVPEpM9IDO/wqo1vkQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.6.0.tgz", + "integrity": "sha512-pDykCSoS2T3fsQrYqf9SyF0QXWHmcGPQ+qiOVjlYSzlWd9dgppB2bFSM1GgKKkt7uzn0BBMV3IbJsUfHG2+BCg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", diff --git a/web/package.json b/web/package.json index ca71f75..ce7f98a 100644 --- a/web/package.json +++ b/web/package.json @@ -4,7 +4,14 @@ "version": "0.1.0", "description": "GPT Load Balancer Frontend - A modern Vue 3 frontend for GPT load balancing service", "type": "module", - "keywords": ["vue3", "typescript", "vite", "naive-ui", "gpt-load", "frontend"], + "keywords": [ + "vue3", + "typescript", + "vite", + "naive-ui", + "gpt-load", + "frontend" + ], "author": "tbphp", "license": "MIT", "repository": { @@ -32,6 +39,7 @@ }, "dependencies": { "@vicons/ionicons5": "^0.13.0", + "@vueuse/core": "^13.6.0", "axios": "^1.9.0", "naive-ui": "^2.41.0", "vue": "^3.5.13", diff --git a/web/src/components/AppFooter.vue b/web/src/components/AppFooter.vue index 86df4d2..15410d9 100644 --- a/web/src/components/AppFooter.vue +++ b/web/src/components/AppFooter.vue @@ -218,7 +218,7 @@ onMounted(() => { border-top: 1px solid rgba(0, 0, 0, 0.08); padding: 12px 24px; font-size: 14px; - height: 52px; + min-height: 52px; } .footer-container { @@ -231,7 +231,6 @@ onMounted(() => { align-items: center; justify-content: center; gap: 16px; - flex-wrap: wrap; line-height: 1.4; } @@ -269,6 +268,7 @@ onMounted(() => { font-weight: 500; font-size: 13px; color: #666; + white-space: nowrap; } .version-clickable { @@ -301,6 +301,7 @@ onMounted(() => { border-radius: 4px; transition: all 0.2s ease; font-size: 13px; + white-space: nowrap; } .footer-link:hover { @@ -345,6 +346,7 @@ onMounted(() => { @media (max-width: 768px) { .app-footer { padding: 10px 16px; + height: auto; } .footer-main { @@ -353,7 +355,7 @@ onMounted(() => { text-align: center; } - .divider { + .footer-main :deep(.n-divider) { display: none; } diff --git a/web/src/components/BaseInfoCard.vue b/web/src/components/BaseInfoCard.vue index 82047ce..d51f577 100644 --- a/web/src/components/BaseInfoCard.vue +++ b/web/src/components/BaseInfoCard.vue @@ -59,7 +59,7 @@ onMounted(() => {