From 3d858e475e1da979c124d716521fbb39da53803f Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Fri, 22 Aug 2025 10:58:04 +0800 Subject: [PATCH] =?UTF-8?q?Feature:=20=E8=A7=A3=E5=86=B3=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=88=97=E8=A1=A8=20&=20=E7=BD=91=E9=A1=B5=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/assets/css/fonts.css | 26 ++++++ app/assets/scss/index.scss | 5 + app/components/JinshenHeader.vue | 26 ++++-- app/pages/about/contact-us.vue | 12 ++- app/pages/about/index.vue | 12 ++- app/pages/productions/[...slug].vue | 14 +-- app/pages/solutions/index.vue | 86 +++++++++++++++++- app/types/strapi/index.ts | 3 +- app/types/strapi/solution.ts | 13 +++ bun.lock | 63 +++++++++++-- i18n/locales/en.json | 3 +- i18n/locales/zh.json | 3 +- nuxt.config.ts | 1 + package.json | 1 + .../SourceHanSansCN-Bold-Alphabetic.woff | Bin 0 -> 4964 bytes .../SourceHanSansCN-Bold-Alphabetic.woff2 | Bin 0 -> 3672 bytes .../SourceHanSansCN-Light-Alphabetic.woff | Bin 0 -> 5044 bytes .../SourceHanSansCN-Light-Alphabetic.woff2 | Bin 0 -> 3752 bytes .../SourceHanSansCN-Regular-Alphabetic.woff | Bin 0 -> 4960 bytes .../SourceHanSansCN-Regular-Alphabetic.woff2 | Bin 0 -> 3660 bytes 20 files changed, 233 insertions(+), 35 deletions(-) create mode 100644 app/assets/css/fonts.css create mode 100644 app/types/strapi/solution.ts create mode 100644 public/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff create mode 100644 public/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff2 create mode 100644 public/fonts/source-han-sans/SourceHanSansCN-Light-Alphabetic.woff create mode 100644 public/fonts/source-han-sans/SourceHanSansCN-Light-Alphabetic.woff2 create mode 100644 public/fonts/source-han-sans/SourceHanSansCN-Regular-Alphabetic.woff create mode 100644 public/fonts/source-han-sans/SourceHanSansCN-Regular-Alphabetic.woff2 diff --git a/app/assets/css/fonts.css b/app/assets/css/fonts.css new file mode 100644 index 0000000..029e9e3 --- /dev/null +++ b/app/assets/css/fonts.css @@ -0,0 +1,26 @@ +@font-face { + font-family: "Source Han Sans CN"; + src: url("/fonts/source-han-sans/SourceHanSansCN-Regular-Alphabetic.woff2") format("woff2"), + url("/fonts/source-han-sans/SourceHanSansCN-Regular-Alphabetic.woff") format("woff"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Source Han Sans CN"; + src: url("/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff2") format("woff2"), + url("/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Source Han Sans CN"; + src: url("/fonts/source-han-sans/SourceHanSansCN-Light-Alphabetic.woff2") format("woff2"), + url("/fonts/source-han-sans/SourceHanSansCN-Light-Alphabetic.woff") format("woff"); + font-weight: 300; + font-style: normal; + font-display: swap; +} \ No newline at end of file diff --git a/app/assets/scss/index.scss b/app/assets/scss/index.scss index d91e60d..18852e2 100644 --- a/app/assets/scss/index.scss +++ b/app/assets/scss/index.scss @@ -3,6 +3,7 @@ body, #app { margin: 0; padding: 0; + font-family: var(--font-main); } html.dark { @@ -14,3 +15,7 @@ a { font-weight: 400; color: var(--el-color-primary); } + +:root { + --font-main: "Source Han Sans CN", "Noto Sans CJK SC", "Noto Sans CJK", sans-serif; +} \ No newline at end of file diff --git a/app/components/JinshenHeader.vue b/app/components/JinshenHeader.vue index 6df30f6..ba2131c 100644 --- a/app/components/JinshenHeader.vue +++ b/app/components/JinshenHeader.vue @@ -8,7 +8,9 @@ - + {{ $t('navigation.productions') }} @@ -52,7 +54,7 @@ const { setLocale } = useI18n(); const searchQuery = ref('') -const activeName = ref('') +const activeName = ref(undefined) const handleSearch = () => { if (searchQuery.value.trim()) { @@ -63,7 +65,7 @@ const handleSearch = () => { } } -onMounted(() => { +const refreshMenu = () => { const path = router.currentRoute.value.path; if (path.startsWith('/productions')) { activeName.value = 'productions'; @@ -74,9 +76,16 @@ onMounted(() => { } else if (path.startsWith('/about')) { activeName.value = 'about'; } else { - activeName.value = ''; + activeName.value = undefined; // 默认不激活任何菜单项 } - console.log('Current path:', path, 'Active menu:', activeName.value); +} + +onMounted(() => { + refreshMenu(); + // 监听路由变化以更新激活状态 + router.afterEach(() => { + refreshMenu(); + }); }) @@ -85,14 +94,16 @@ onMounted(() => { margin: 0 auto; padding: 0 10px; display: flex; + height: 80px; align-items: center; - /* border-bottom: 1px solid #e0e0e0; */ + border-bottom: 1px solid #e0e0e0; } .logo-section { display: flex; flex: 1; align-items: center; + margin-left: 20px; } .logo-link { @@ -102,7 +113,7 @@ onMounted(() => { } .website-logo { - height: 80px; + height: 64px; width: auto; } @@ -110,6 +121,7 @@ onMounted(() => { margin-right: 40px; border-bottom: none !important; width: auto; + --el-menu-horizontal-height: 100%; } .header-menu .el-menu-item { diff --git a/app/pages/about/contact-us.vue b/app/pages/about/contact-us.vue index 5547ed0..d9db3cd 100644 --- a/app/pages/about/contact-us.vue +++ b/app/pages/about/contact-us.vue @@ -2,11 +2,15 @@
- - {{ $t('navigation.home') }} + + + {{ $t('navigation.home') }} + - - {{ $t('navigation.contact-info') }} + + + {{ $t('navigation.contact-info') }} + diff --git a/app/pages/about/index.vue b/app/pages/about/index.vue index 68cdb55..3a4dc77 100644 --- a/app/pages/about/index.vue +++ b/app/pages/about/index.vue @@ -2,11 +2,15 @@
- - {{ $t('navigation.home') }} + + + {{ $t('navigation.home') }} + - - {{ $t('navigation.about-us') }} + + + {{ $t('navigation.about-us') }} + diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue index ee9a95b..ba9ae28 100644 --- a/app/pages/productions/[...slug].vue +++ b/app/pages/productions/[...slug].vue @@ -3,11 +3,13 @@
- {{ $t('navigation.home') - }} - {{ $t('navigation.productions') - }} - {{ production.title }} + + {{ $t('navigation.home') }} + + + {{ $t('navigation.productions') }} + + {{ production.title }} @@ -87,7 +89,7 @@ onMounted(async () => { production_image: { populate: '*', }, - }, + }, locale: strapiLocale, }) if (response.data) { diff --git a/app/pages/solutions/index.vue b/app/pages/solutions/index.vue index 6fb521a..4feaf2e 100644 --- a/app/pages/solutions/index.vue +++ b/app/pages/solutions/index.vue @@ -1,7 +1,7 @@ + + \ No newline at end of file diff --git a/app/types/strapi/index.ts b/app/types/strapi/index.ts index c04ebf1..79baa52 100644 --- a/app/types/strapi/index.ts +++ b/app/types/strapi/index.ts @@ -1,3 +1,4 @@ export * from './common'; export * from './production'; -export * from './singleTypes'; \ No newline at end of file +export * from './singleTypes'; +export * from './solution'; \ No newline at end of file diff --git a/app/types/strapi/solution.ts b/app/types/strapi/solution.ts new file mode 100644 index 0000000..b981377 --- /dev/null +++ b/app/types/strapi/solution.ts @@ -0,0 +1,13 @@ +import type { StrapiEntity, StrapiImage } from './common'; + +export interface SolutionType extends StrapiEntity { + type: string; +} + +export interface Solution extends StrapiEntity { + title: string; + summary: string; + cover: StrapiImage; + solution_type: SolutionType; + content: string; +} \ No newline at end of file diff --git a/bun.lock b/bun.lock index 3ab805f..d2ee92d 100644 --- a/bun.lock +++ b/bun.lock @@ -22,6 +22,7 @@ "markdown-it": "^14.1.0", "nuxt": "^4.0.3", "sass": "^1.90.0", + "sharp": "^0.34.3", "vue": "^3.5.18", "vue-router": "^4.5.1", }, @@ -221,6 +222,50 @@ "@iconify/vue": ["@iconify/vue@5.0.0", "", { "dependencies": { "@iconify/types": "^2.0.0" }, "peerDependencies": { "vue": ">=3" } }, "sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.0" }, "os": "darwin", "cpu": "arm64" }, "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.0" }, "os": "darwin", "cpu": "x64" }, "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.0", "", { "os": "linux", "cpu": "arm" }, "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA=="], + + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.0", "", { "os": "linux", "cpu": "x64" }, "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.0" }, "os": "linux", "cpu": "arm" }, "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.0" }, "os": "linux", "cpu": "arm64" }, "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA=="], + + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.0" }, "os": "linux", "cpu": "ppc64" }, "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.0" }, "os": "linux", "cpu": "s390x" }, "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.0" }, "os": "linux", "cpu": "x64" }, "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" }, "os": "linux", "cpu": "arm64" }, "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.3", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.0" }, "os": "linux", "cpu": "x64" }, "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.3", "", { "dependencies": { "@emnapi/runtime": "^1.4.4" }, "cpu": "none" }, "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.3", "", { "os": "win32", "cpu": "x64" }, "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g=="], + "@intlify/bundle-utils": ["@intlify/bundle-utils@10.0.1", "", { "dependencies": { "@intlify/message-compiler": "^11.1.2", "@intlify/shared": "^11.1.2", "acorn": "^8.8.2", "escodegen": "^2.1.0", "estree-walker": "^2.0.2", "jsonc-eslint-parser": "^2.3.0", "mlly": "^1.2.0", "source-map-js": "^1.0.1", "yaml-eslint-parser": "^1.2.2" } }, "sha512-WkaXfSevtpgtUR4t8K2M6lbR7g03mtOxFeh+vXp5KExvPqS12ppaRj1QxzwRuRI5VUto54A22BjKoBMLyHILWQ=="], "@intlify/core": ["@intlify/core@11.1.11", "", { "dependencies": { "@intlify/core-base": "11.1.11", "@intlify/shared": "11.1.11" } }, "sha512-cq3NnOQN9KSNJYcKV5YNj9IPEYi4GJbOUBy4gVbGKcxC83msSOcTvkpPq0pdMYZDqx6tPDIcr7xKT9qHjcJASQ=="], @@ -1039,7 +1084,7 @@ "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], - "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + "detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], "detective-amd": ["detective-amd@6.0.1", "", { "dependencies": { "ast-module-types": "^6.0.1", "escodegen": "^2.1.0", "get-amd-module-type": "^6.0.1", "node-source-walk": "^7.0.1" }, "bin": { "detective-amd": "bin/cli.js" } }, "sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g=="], @@ -1877,7 +1922,7 @@ "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - "sharp": ["sharp@0.32.6", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", "semver": "^7.5.4", "simple-get": "^4.0.1", "tar-fs": "^3.0.4", "tunnel-agent": "^0.6.0" } }, "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w=="], + "sharp": ["sharp@0.34.3", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.4", "semver": "^7.7.2" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.3", "@img/sharp-darwin-x64": "0.34.3", "@img/sharp-libvips-darwin-arm64": "1.2.0", "@img/sharp-libvips-darwin-x64": "1.2.0", "@img/sharp-libvips-linux-arm": "1.2.0", "@img/sharp-libvips-linux-arm64": "1.2.0", "@img/sharp-libvips-linux-ppc64": "1.2.0", "@img/sharp-libvips-linux-s390x": "1.2.0", "@img/sharp-libvips-linux-x64": "1.2.0", "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", "@img/sharp-libvips-linuxmusl-x64": "1.2.0", "@img/sharp-linux-arm": "0.34.3", "@img/sharp-linux-arm64": "0.34.3", "@img/sharp-linux-ppc64": "0.34.3", "@img/sharp-linux-s390x": "0.34.3", "@img/sharp-linux-x64": "0.34.3", "@img/sharp-linuxmusl-arm64": "0.34.3", "@img/sharp-linuxmusl-x64": "0.34.3", "@img/sharp-wasm32": "0.34.3", "@img/sharp-win32-arm64": "0.34.3", "@img/sharp-win32-ia32": "0.34.3", "@img/sharp-win32-x64": "0.34.3" } }, "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -2217,8 +2262,6 @@ "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "@mapbox/node-pre-gyp/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], - "@netlify/functions/is-stream": ["is-stream@4.0.1", "", {}, "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A=="], "@netlify/zip-it-and-ship-it/@babel/types": ["@babel/types@7.28.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg=="], @@ -2265,6 +2308,8 @@ "@nuxtjs/i18n/unplugin": ["unplugin@2.3.5", "", { "dependencies": { "acorn": "^8.14.1", "picomatch": "^4.0.2", "webpack-virtual-modules": "^0.6.2" } }, "sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw=="], + "@parcel/watcher/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + "@parcel/watcher-wasm/napi-wasm": ["napi-wasm@1.1.3", "", { "bundled": true }, "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="], "@poppinss/dumper/supports-color": ["supports-color@10.1.0", "", {}, "sha512-GBuewsPrhJPftT+fqDa9oI/zc5HNsG9nREqwzoSFDOIqf0NggOZbHQj2TE1P1CDJK8ZogFnlZY9hWoUiur7I/A=="], @@ -2375,6 +2420,8 @@ "ipx/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + "ipx/sharp": ["sharp@0.32.6", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", "semver": "^7.5.4", "simple-get": "^4.0.1", "tar-fs": "^3.0.4", "tunnel-agent": "^0.6.0" } }, "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w=="], + "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], "jsonc-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], @@ -2439,8 +2486,6 @@ "postcss-unique-selectors/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], - "prebuild-install/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], - "prebuild-install/tar-fs": ["tar-fs@2.1.3", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg=="], "precinct/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], @@ -2461,10 +2506,6 @@ "send/mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="], - "sharp/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], - - "sharp/node-addon-api": ["node-addon-api@6.1.0", "", {}, "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="], - "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "spdx-correct/spdx-expression-parse": ["spdx-expression-parse@3.0.1", "", { "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="], @@ -2645,6 +2686,8 @@ "glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "ipx/sharp/node-addon-api": ["node-addon-api@6.1.0", "", {}, "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="], + "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 2d3f368..7a16013 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -34,5 +34,6 @@ "no-content-available": "No detailed information available", "loading": "Loading...", "our-productions": "Our Productions", - "get-our-solutions": "Get Our Solutions" + "learn-our-solutions": "Learn Our Solutions", + "all": "All" } diff --git a/i18n/locales/zh.json b/i18n/locales/zh.json index 5705c85..3cdfa81 100644 --- a/i18n/locales/zh.json +++ b/i18n/locales/zh.json @@ -34,5 +34,6 @@ "no-content-available": "暂无详细信息", "loading": "加载中...", "our-productions": "我们的产品", - "get-our-solutions": "了解我们的解决方案" + "learn-our-solutions": "了解我们的解决方案", + "all": "全部" } diff --git a/nuxt.config.ts b/nuxt.config.ts index 487a4ad..9178363 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -22,6 +22,7 @@ export default defineNuxtConfig({ css: [ "@unocss/reset/tailwind.css", "~/assets/scss/index.scss", + "~/assets/css/fonts.css", "@mdi/font/css/materialdesignicons.min.css", ], diff --git a/package.json b/package.json index 6ea0303..22aadb8 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "markdown-it": "^14.1.0", "nuxt": "^4.0.3", "sass": "^1.90.0", + "sharp": "^0.34.3", "vue": "^3.5.18", "vue-router": "^4.5.1" }, diff --git a/public/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff b/public/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff new file mode 100644 index 0000000000000000000000000000000000000000..afcb7b7684dac16f666998b4b1c2a328f132b83f GIT binary patch literal 4964 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 literal 0 HcmV?d00001 diff --git a/public/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff2 b/public/fonts/source-han-sans/SourceHanSansCN-Bold-Alphabetic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b962c812f3c4c828637cc964bccca50c8de7c826 GIT binary patch literal 3672 zcmV-e4yW;VPew8T0RR9101j9H4*&oF02&wo01f^C0RR9100000000000000000000 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 YJYgW~QWlKFs1dq;gaY$?6z2f&e|!fvy#N3J literal 0 HcmV?d00001 diff --git a/public/fonts/source-han-sans/SourceHanSansCN-Light-Alphabetic.woff2 b/public/fonts/source-han-sans/SourceHanSansCN-Light-Alphabetic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d252580fae1768392ac31bd7071aadba68560937 GIT binary patch literal 3752 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 literal 0 HcmV?d00001 diff --git a/public/fonts/source-han-sans/SourceHanSansCN-Regular-Alphabetic.woff2 b/public/fonts/source-han-sans/SourceHanSansCN-Regular-Alphabetic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9e99864cdb179fa561d6f1c0433e4c353ce52206 GIT binary patch literal 3660 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 eJ_RP&`hOQK