DUi_enI&C zG8`lDd8*Kj8a4R0s;aoS*sL!U9``JuZ70iYJSAb$ynAbX-8;i7qorC0E!4<1RyiDc zJe5Jf?CaxodOD41zf+ak4B+TbOdU{w7TRy5T&9|rZw6@9tzJvr*kJIx{lRXx@$&ff z_4Q(1)9I#|xjZwY=ztftSfN3zpK0T4n!T{u`;?~x5V4-0R^>6$X z6ciSkE+5P5>l5GJynuxQF`vv3)6v1*b- * =$1>ch- zKp!3+CM755C+&T`Uw2;~rW)ih+Hdg!J0e857ZO-zkR&q$pIb3~@5@H)T1~ilRwZdA zef=$U9i8^NrlzN=wY9Zo@fe)Pw}a8d<>7tDh9%7uh@QD(nYhg++f4kpVW?hHhu{51 zM^o84(R#GwbzxW!ALVKlBZp46ij=>Nuz(=c<;2^9w1IMi%P+EBkCBs;8?@F;5#uE& zt*nf;WF3n{r@`QRJxDC2)oqCfHbH<7VErr2g%)GJ#46)rvpp3!Ucbi*1IN$D<$9B0 zgkRRyj(8HlT zE-jXf?T4IE3XCIEG#UPu%xq-{|{qdSMJ?B_Pc!{yf-~yoUtkm z-hrW+fejby&2e1LM>m5EehD?eK?j1LI&faRZoK+9?&1$qF`M?BD{;mKFJ<`fPhYIo zFKei&HCAdjp851MdR){F^ZReQE`J_GvrMf#teC`&DpI-PL5 -yXdPNXq` z6{F2sCJhaV1H WK zk`Nv%O49yk)Raz;Jrh3(1lYjbnt7rmySko-$ cDYE7c*3Q()#=utK{d}0e*y_X` zuLELRky15{$z(|8y5oLoH9?ZB&T77-6$tU|pHqC#8$bWU@w5sv9Bc?^sF8;_=T3$Z zmd$!o%>A@LE|73Cl4&%U-7Yj|wJ}=>eJFd51eJr2fz*#ooH;qSy?w3gzUlgH4P-xi zR~MIP(3h|0?(h3)zo+_R(ZX4q8_(}8Z7MPTTtuiV>>i-je?;Ye9Q@p#(U#C#UX0xb zYOS5Ry80D_mvgJGmW)i)=H{latC*OWI}vz^Rh{qq6RKV7VTy16YHU8e3*(pI$_E>l z*JK9UG$8c6t$cyh+SV3dz;SP&G)~~_#a`fXLB&l=3p;jyW_{h7PP^fx8aQ%R2EDci zuYmTew)15LzQ+YrczAd|@23l@>hyii9LR-*1vDm(%t@z*SqbO;7>+upL+OU4wP73B z5aHPy`2CEC^ET7^)jjK~s;YgJvV|$JC=A~#j_%h<1KRPuWDR|-|LV@3< 1L mAU#yA%0|2HGD>N|NkpFf7^=J3(5Uv1_X!u@z`2Ds# zk9{8pP!)6qET-_-?YAmP6Gn(eV0Iw$fK(t#5@?md?Jysy)hj9bbg|lR!GE7#YT$KR zoE;Mrqw*=%X*X9S<^Kbtzq^Ua{Ytm%KKt6|?2in+rz_A={4`@uuRL!{6fGKKjPB@` ztTw`$%Hi|IAWIyDooB7J&6Hv2Y+&^N^7#ZlAC0ZPyu7@ b|t6i@(l?lk7E%VN2j z>#~9WXPb3(>rosqty(r%kU)uR_uK05tO)$Q&v~m{k^#&};`iHfw;!vA d@clTHY1ekj6%a<~_cC-k zUz&TdZxir3^@m*MZ)N4jNf5-3w!+zyYy4p;*&JR^XW+)p_>ds^`{~K;>1y*mRg>1u zv1h=2+c$M=OnPj5eAJYgGqztz0>ANVKKJXP80ZK3>M9Ft%WG %h6Wyo`ycC}JJMWj03ioIEu(74-}Z$c;K#*}nVp$+h@eD+SnUVoIB! zq`Vspb>f9ebEm98W+1f4^?kZ$F`w{oU2n3r0G4$O9+y1}pEk!oM%dq9pn1#deA=mX z<2H~lUBLfqZ) wxz{{g!pIwJ!ISn!or z=bxcQh8Yw e3%W z%HChbb=-~7WVx+b=`ghH1a0$vf7~yF0Zmr6W}7@vN_qV6k0!lA>7$_izwUDdz86#! zeED09DAD>@<$%ND VI-}!1h{sQ9f3NENwSq> h&E-Tig^B5M%cp?k73?y jI=mgy~aBQ6fB=o+D|hU*2nn z3Et%y bKSDqQYY2HE`)JfF^MDSkG0ozJ!n&mz*AegM1*iOq>!u`kHUh-0SbW^- zKO>RzqsdJ8enw!xfwgKO!htT_lP9x St-CA(a3R72#!Ps_ z#0ipUyQ7YHPOZ91=k0B66Y~lJ*%7EeaZX(_T)5@ 4&%G)9v7$T zd$|LaL0)l)LWG6VG4(x&fes~g+jUuQnLAdcx{)64m-LJ_P?UyZa8uikGOWLxfifCR zz~}Y)a=TA69D}>Owz$aV2DG8)`?s7bC9#@WGij1G>JbI zj!J;t+*n&%i_R!JKk=^2Q4TbjkDkZbVM}j0z$WEL96#hvR< O6R+o Date: Wed, 13 Aug 2025 16:14:17 +0800 Subject: [PATCH 02/40] =?UTF-8?q?Feature:=20=E6=B7=BB=E5=8A=A0=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E6=A8=A1=E5=BC=8F=20&=20404=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.vue | 3 +-- app/pages/[...all].vue | 17 +++++++++++++++++ app/pages/index.vue | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 app/pages/[...all].vue create mode 100644 app/pages/index.vue diff --git a/app/app.vue b/app/app.vue index 09f935b..2b1be09 100644 --- a/app/app.vue +++ b/app/app.vue @@ -1,6 +1,5 @@ -diff --git a/app/pages/[...all].vue b/app/pages/[...all].vue new file mode 100644 index 0000000..fc2f0a3 --- /dev/null +++ b/app/pages/[...all].vue @@ -0,0 +1,17 @@ + +- + + + + + \ No newline at end of file diff --git a/app/pages/index.vue b/app/pages/index.vue new file mode 100644 index 0000000..fc0f635 --- /dev/null +++ b/app/pages/index.vue @@ -0,0 +1,5 @@ + ++ ++Not found++ ++++ \ No newline at end of file From 06035330146c61ac28473b9b09fabe3cf751e854 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Wed, 13 Aug 2025 16:41:58 +0800 Subject: [PATCH 03/40] =?UTF-8?q?Feature:=20=E6=B7=BB=E5=8A=A0i18n?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/pages/[...all].vue | 4 +- bun.lock | 213 +++++++++++++++++++++++++++++++++-------- i18n/locales/en.json | 4 + i18n/locales/zh.json | 4 + nuxt.config.ts | 11 ++- package.json | 1 + 6 files changed, 193 insertions(+), 44 deletions(-) create mode 100644 i18n/locales/en.json create mode 100644 i18n/locales/zh.json diff --git a/app/pages/[...all].vue b/app/pages/[...all].vue index fc2f0a3..86e7fe7 100644 --- a/app/pages/[...all].vue +++ b/app/pages/[...all].vue @@ -3,10 +3,10 @@+ -Not found+{{ $t('not-found') }}diff --git a/bun.lock b/bun.lock index 4087338..90e20f4 100644 --- a/bun.lock +++ b/bun.lock @@ -10,6 +10,7 @@ "@nuxt/icon": "2.0.0", "@nuxt/image": "1.11.0", "@nuxt/test-utils": "3.19.2", + "@nuxtjs/i18n": "10.0.5", "@pinia/nuxt": "^0.11.2", "@unocss/nuxt": "^66.4.2", "@vueuse/nuxt": "^13.6.0", @@ -216,6 +217,24 @@ "@iconify/vue": ["@iconify/vue@5.0.0", "", { "dependencies": { "@iconify/types": "^2.0.0" }, "peerDependencies": { "vue": ">=3" } }, "sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg=="], + "@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=="], + + "@intlify/core-base": ["@intlify/core-base@11.1.11", "", { "dependencies": { "@intlify/message-compiler": "11.1.11", "@intlify/shared": "11.1.11" } }, "sha512-1Z0N8jTfkcD2Luq9HNZt+GmjpFe4/4PpZF3AOzoO1u5PTtSuXZcfhwBatywbfE2ieB/B5QHIoOFmCXY2jqVKEQ=="], + + "@intlify/h3": ["@intlify/h3@0.7.1", "", { "dependencies": { "@intlify/core": "^11.0.0", "@intlify/utils": "^0.13.0" } }, "sha512-D/9+L7IzPrOa7e6R/ztepXayAq+snfzBYIwAk3RbaQsLEXwVNjC5c+WKXjni1boc/plGRegw4/m33SaFwvdEpg=="], + + "@intlify/message-compiler": ["@intlify/message-compiler@11.1.11", "", { "dependencies": { "@intlify/shared": "11.1.11", "source-map-js": "^1.0.2" } }, "sha512-7PC6neomoc/z7a8JRjPBbu0T2TzR2MQuY5kn2e049MP7+o32Ve7O8husylkA7K9fQRe4iNXZWTPnDJ6vZdtS1Q=="], + + "@intlify/shared": ["@intlify/shared@11.1.11", "", {}, "sha512-RIBFTIqxZSsxUqlcyoR7iiC632bq7kkOwYvZlvcVObHfrF4NhuKc4FKvu8iPCrEO+e3XsY7/UVpfgzg+M7ETzA=="], + + "@intlify/unplugin-vue-i18n": ["@intlify/unplugin-vue-i18n@6.0.8", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@intlify/bundle-utils": "^10.0.1", "@intlify/shared": "^11.1.2", "@intlify/vue-i18n-extensions": "^8.0.0", "@rollup/pluginutils": "^5.1.0", "@typescript-eslint/scope-manager": "^8.13.0", "@typescript-eslint/typescript-estree": "^8.13.0", "debug": "^4.3.3", "fast-glob": "^3.2.12", "js-yaml": "^4.1.0", "json5": "^2.2.3", "pathe": "^1.0.0", "picocolors": "^1.0.0", "source-map-js": "^1.0.2", "unplugin": "^1.1.0", "vue": "^3.4" }, "peerDependencies": { "petite-vue-i18n": "*", "vue-i18n": "*" }, "optionalPeers": ["petite-vue-i18n", "vue-i18n"] }, "sha512-Vvm3KhjE6TIBVUQAk37rBiaYy2M5OcWH0ZcI1XKEsOTeN1o0bErk+zeuXmcrcMc/73YggfI8RoxOUz9EB/69JQ=="], + + "@intlify/utils": ["@intlify/utils@0.13.0", "", {}, "sha512-8i3uRdAxCGzuHwfmHcVjeLQBtysQB2aXl/ojoagDut5/gY5lvWCQ2+cnl2TiqE/fXj/D8EhWG/SLKA7qz4a3QA=="], + + "@intlify/vue-i18n-extensions": ["@intlify/vue-i18n-extensions@8.0.0", "", { "dependencies": { "@babel/parser": "^7.24.6", "@intlify/shared": "^10.0.0", "@vue/compiler-dom": "^3.2.45", "vue-i18n": "^10.0.0" }, "peerDependencies": { "vue": "^3.0.0" }, "optionalPeers": ["vue"] }, "sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ=="], + "@ioredis/commands": ["@ioredis/commands@1.3.0", "", {}, "sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ=="], "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], @@ -240,6 +259,8 @@ "@mdi/font": ["@mdi/font@7.4.47", "", {}, "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw=="], + "@miyaneee/rollup-plugin-json5": ["@miyaneee/rollup-plugin-json5@1.2.0", "", { "dependencies": { "@rollup/pluginutils": "^5.1.0", "json5": "^2.2.3" }, "peerDependencies": { "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" } }, "sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.3", "", { "dependencies": { "@emnapi/core": "^1.4.5", "@emnapi/runtime": "^1.4.5", "@tybys/wasm-util": "^0.10.0" } }, "sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q=="], "@netlify/binary-info": ["@netlify/binary-info@1.0.0", "", {}, "sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw=="], @@ -260,7 +281,7 @@ "@nodelib/fs.scandir": ["@nodelib/fs.scandir@4.0.1", "", { "dependencies": { "@nodelib/fs.stat": "4.0.0", "run-parallel": "^1.2.0" } }, "sha512-vAkI715yhnmiPupY+dq+xenu5Tdf2TBQ66jLvBIcCddtz+5Q8LbMKaf9CIJJreez8fQ8fgaY+RaywQx8RJIWpw=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@4.0.0", "", {}, "sha512-ctr6bByzksKRCV0bavi8WoQevU6plSp2IkllIsEqaiKe2mwNNnaluhnRhcsgGZHrrHk57B3lf95MkLMO3STYcg=="], + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], "@nodelib/fs.walk": ["@nodelib/fs.walk@3.0.1", "", { "dependencies": { "@nodelib/fs.scandir": "4.0.1", "fastq": "^1.15.0" } }, "sha512-nIh/M6Kh3ZtOmlY00DaUYB4xeeV6F3/ts1l29iwl3/cfyY/OuCfUx+v08zgx8TKPTifXRcjjqVQ4KB2zOYSbyw=="], @@ -296,6 +317,8 @@ "@nuxt/vite-builder": ["@nuxt/vite-builder@4.0.3", "", { "dependencies": { "@nuxt/kit": "4.0.3", "@rollup/plugin-replace": "^6.0.2", "@vitejs/plugin-vue": "^6.0.1", "@vitejs/plugin-vue-jsx": "^5.0.1", "autoprefixer": "^10.4.21", "consola": "^3.4.2", "cssnano": "^7.1.0", "defu": "^6.1.4", "esbuild": "^0.25.8", "escape-string-regexp": "^5.0.0", "exsolve": "^1.0.7", "get-port-please": "^3.2.0", "h3": "^1.15.4", "jiti": "^2.5.1", "knitwork": "^1.2.0", "magic-string": "^0.30.17", "mlly": "^1.7.4", "mocked-exports": "^0.1.1", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "postcss": "^8.5.6", "rollup-plugin-visualizer": "^6.0.3", "std-env": "^3.9.0", "ufo": "^1.6.1", "unenv": "^2.0.0-rc.19", "vite": "^7.0.6", "vite-node": "^3.2.4", "vite-plugin-checker": "^0.10.2", "vue-bundle-renderer": "^2.1.2" }, "peerDependencies": { "vue": "^3.3.4" } }, "sha512-1eKm51V3Ine4DjxLUDnPIKewuIZwJjGh1oMvY3sAJ5RtdSngRonqkaoGV4EWtLH7cO+oTBbbdVg5O95chYYcLQ=="], + "@nuxtjs/i18n": ["@nuxtjs/i18n@10.0.5", "", { "dependencies": { "@intlify/core": "^11.1.11", "@intlify/h3": "^0.7.1", "@intlify/shared": "^11.1.11", "@intlify/unplugin-vue-i18n": "^6.0.8", "@intlify/utils": "^0.13.0", "@miyaneee/rollup-plugin-json5": "^1.2.0", "@nuxt/kit": "^4.0.3", "@rollup/plugin-yaml": "^4.1.2", "@vue/compiler-sfc": "^3.5.18", "cookie-es": "^2.0.0", "defu": "^6.1.4", "devalue": "^5.1.1", "h3": "^1.15.3", "knitwork": "^1.2.0", "magic-string": "^0.30.17", "mlly": "^1.7.4", "nuxt-define": "^1.0.0", "oxc-parser": "^0.81.0", "oxc-transform": "^0.81.0", "oxc-walker": "^0.4.0", "pathe": "^2.0.3", "typescript": "^5.9.2", "ufo": "^1.6.1", "unplugin": "^2.3.5", "unplugin-vue-router": "^0.14.0", "unstorage": "^1.16.1", "vue-i18n": "^11.1.11", "vue-router": "^4.5.1" } }, "sha512-rLQc/nEVWL0xMJf1a6+ndUpdQtxPBFzm4jeqG4o7HuXtDLn4HOe1dPdu7AsaIqq7EcsEjZ5T4mX4X8XnB8cT0Q=="], + "@oxc-minify/binding-android-arm64": ["@oxc-minify/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-OLelUqrLkSJwNyjLZHgpKy9n0+zHQiMX8A0GFovJIwhgfPxjT/mt2JMnGkSoDlTnf9cw6nvALFzCsJZLTyl8gg=="], "@oxc-minify/binding-darwin-arm64": ["@oxc-minify/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7vJjhKHGfFVit3PCerbnrXQI0XgmmgV5HTNxlNsvxcmjPRIoYVkuwwRkiBsxO4RiBwvRRkAFPop3fY/gpuflJA=="], @@ -326,67 +349,67 @@ "@oxc-minify/binding-win32-x64-msvc": ["@oxc-minify/binding-win32-x64-msvc@0.80.0", "", { "os": "win32", "cpu": "x64" }, "sha512-PjMi5B3MvOmfZk5LTie6g3RHhhujFwgR4VbCrWUNNwSzdxzy3dULPT4PWGVbpTas/QLJzXs/CXlQfnaMeJZHKQ=="], - "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-H0S4QTRFhct1uO1ZOnzGQAoHSJVHCyZa+oivovHkbqA0z271ppRkXmJuLfjW+9CBW0577JNAhjTflKUDpCO4lg=="], + "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.81.0", "", { "os": "android", "cpu": "arm64" }, "sha512-nGcfHGLkpy2R4Dm1TcpDDifVIZ0q50pvFkHgcbqLpdtbyM9NDlQp1SIgRdGtKPUXAVJz3LDV8hLYvCss8Bb5wg=="], - "@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cVGI6NeGs1u1Ev8yO7I+zXPQuduCwwhYXd/K64uygx+OFp7fC7zSIlkGpoxFRUuSxqyipC813foAfUOwM1Y0PA=="], + "@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.81.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Xl0sB6UcAbU36d1nUs/JfPnihq0JD62xP7sFa/pML+ksxcwAEMMGzifOxNyQkInDzFp+Ql63GD7iJGbavPc5/w=="], - "@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.80.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-h7wRo10ywI2vLz9VljFeIaUh9u7l2l3kvF6FAteY3cPqbCA6JYUZGJaykhMqTxJoG6wrzf35sMA2ubvq67iAMA=="], + "@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.81.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-OyHZuZjHBnZ6SOXe8fDD3i0Vf+Q0oVuaaWu2+ZtxRYDcIDTG67uMN6tg+JkCkYU7elMEJp+Tgw38uEPQWnt3eg=="], - "@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.80.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-KcJ+8w/wVwd/XfDmgA9QZJAWML3vPu2O2Y8XRkf3U9VsN5n8cZ5PXMbH4NBSb3O7ctdDSvwnnuApLOz3sTHsUw=="], + "@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.81.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-FLkXVaHT3PQSHEZkSB99s3Bz/E03tXu2jvspmwu34tlmLaEk3dqoAvYS/uZcBtetGXa3Y48sW/rtBwW6jE811w=="], - "@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-5OCRxV5fX5RkVqsag55m4EFeudSZ0nSMYXgdtfR/5JZSiYmIYyPycafNNa52liqC2gx27vzrDRE4FdlG+5fhww=="], + "@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.81.0", "", { "os": "linux", "cpu": "arm" }, "sha512-c4IXIYDmzMeuYaTtyWl9fj7L90BAN7KZ3eKKDWnmB+ekZd1QduKT8MJiLfv7/pSecxQFwzMTpZ0el++ccRprTQ=="], - "@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-kMa2PeA2GHMhvV617WdFzDAWCo2A00knPEe6rxFUO/Gr8TTLv1/LlEY6UqGseWrRfkkhFiAO496nRPW/6B5DCg=="], + "@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.81.0", "", { "os": "linux", "cpu": "arm" }, "sha512-Jahl5EPtdF3z8Lv8/ErCgy5tF+324nPAaFxFC+xFjOE2NdS9e8IMeWR/WbkO5pOSueEGq76GrjOX9uj9SsKqCw=="], - "@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-y2NEhbFfKPdOkf3ZR/3xwJFJVji6IKxwXKHUN4bEdqpcO0tkXSCiP0MzTxjEY6ql2/MXdkqK0Ym92dYsRsgsyg=="], + "@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.81.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-ufLjqUhcMMyIOzvI7BeRGWyhS5bBsuu2Mkks2wBVlpcs9dFbtlnvKv8SToiM/TTP/DFRu9SrKMVUyD0cuKVlcw=="], - "@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j3tKausSXwHS/Ej6ct2dmKJtw0UIME2XJmj6QfPT6LyUSNTndj4yXRXuMSrCOrX9/0qH9GhmqeL9ouU27dQRFw=="], + "@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.81.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-U4pce3jsMe1s8/BLrCJPqNFdm8IJRhk9Mwf0qw4D6KLa14LT/j32b7kASnFxpy+U0X8ywHGsir8nwPEcWsvrzA=="], - "@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.80.0", "", { "os": "linux", "cpu": "none" }, "sha512-h+uPvyTcpTFd946fGPU57sZeec2qHPUYQRZeXHB2uuZjps+9pxQ5zIz0EBM/JgBtnwdtoR93RAu1YNAVbqY5Zw=="], + "@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.81.0", "", { "os": "linux", "cpu": "none" }, "sha512-AjjSbkoy0oHQaGMsLg7O+gY/Vbx12K7IWbxheDO1BNL0eIwiL3xRrhKdTtaHU1KcHm2/asTtwYdndAzXQX5Jyw=="], - "@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.80.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-+u74hV+WwCPL4UBNOJaIGRozTCfZ7pM5JCEe8zAlMkKexftUzbtvW02314bVD9bqoRAL3Gg6jcZrjNjwDX2FwQ=="], + "@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.81.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Dx4tOdUekDMa3k18MjogWLy+b9z3RmLBf4OUSwJs5iGkr/nc7kph/N8IPI4thVw4KbhEPZOq6SKUp7Q6FhPRzA=="], - "@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-N9UGnWVWMlOJH+6550tqyBxd9qkMd0f4m+YRA0gly6efJTuLbPQpjkJm7pJbMu+GULcvSJ/Y0bkMAIQTtwP0vQ=="], + "@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.81.0", "", { "os": "linux", "cpu": "x64" }, "sha512-B4RwYZqmgZJg2AV3YWR8/zyjg2t/2GwEIdd5WS4NkDxX9NzHNv1tz1uwGurPyFskO9/S0PoXDFGeESCI5GrkuA=="], - "@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-l2N/GlFEri27QBMi0e53V/SlpQotIvHbz+rZZG/EO+vn58ZEr0eTG+PjJoOY/T8+TQb8nrCtRe4S/zNDpV6zSQ=="], + "@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.81.0", "", { "os": "linux", "cpu": "x64" }, "sha512-VvZlPOG03uKRYPgynVcIvR42ygNRo4kiLKaoKWdpQESSfc1uRD6fNQI5V/O9dAfEmZuTM9dhpgszr9McCeRK6A=="], - "@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.80.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.1" }, "cpu": "none" }, "sha512-5iEwQqMXU1HiRlWuD3f+8N2O3qWhS+nOFEAWgE3sjMUnTtILPJETYhaGBPqqPWg1iRO3+hE1lEBCdI91GS1CUQ=="], + "@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.81.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.1" }, "cpu": "none" }, "sha512-uGGqDuiO9JKWq5CiNDToZJPTQx6zqp0Wlj5zsKlKuN7AslvhdyzITCAyY+mtRcNEPl+k7j5uR7aIWFFhGuqycA=="], - "@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.80.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-HedSH/Db7OFR2SugTbuawaV1vjgUjCXzxPquow/1FLtpRT2wASbMaRRbyD/h2n4DJ8V2zGqnV8Q+vic+VNvnKg=="], + "@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.81.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-rWL3ieNa8nNk4XHRQ58Hrt249UanJhmzsuBOei3l5xmMleTAnTsvUxKMK4eiFw4Cdku7C5C5VJFgq7+9yPwn8Q=="], - "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.80.0", "", { "os": "win32", "cpu": "x64" }, "sha512-SSiM0m7jG5yxVf0ivy1rF8OuTJo8ITgp1ccp2aqPZG6Qyl5QiVpf8HI1X5AvPFxts2B4Bv8U3Dip+FobqBkwcw=="], + "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.81.0", "", { "os": "win32", "cpu": "x64" }, "sha512-XZCXKi5SW4ekpIY6O4yDZJHiLeVCJgvr6aT+vyQbNMlSEXKOieFTUZPsp9QiohvkXZE60ZEUqX3TP+8z9A7RRQ=="], - "@oxc-project/types": ["@oxc-project/types@0.80.0", "", {}, "sha512-xxHQm8wfCv2e8EmtaDwpMeAHOWqgQDAYg+BJouLXSQt5oTKu9TIXrgNMGSrM2fLvKmECsRd9uUFAAD+hPyootA=="], + "@oxc-project/types": ["@oxc-project/types@0.81.0", "", {}, "sha512-CnOqkybZK8z6Gx7Wb1qF7AEnSzbol1WwcIzxYOr8e91LytGOjo0wCpgoYWZo8sdbpqX+X+TJayIzo4Pv0R/KjA=="], - "@oxc-transform/binding-android-arm64": ["@oxc-transform/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-HAK6zIUOteptOsSRqoGu41cez7kj/OPJqBGdgdP6FFh2RFcRfh0vqefjgF69af7TjzsRxVF8itiWvFsJHrIFoA=="], + "@oxc-transform/binding-android-arm64": ["@oxc-transform/binding-android-arm64@0.81.0", "", { "os": "android", "cpu": "arm64" }, "sha512-Lli18mT/TaUsQSXL7Q08xatbOySqKhruNpI/mGvSbIHXX7TfznNbQ/zbzNftKa4tvbJnDUXz7SV9JO1wXOoYSw=="], - "@oxc-transform/binding-darwin-arm64": ["@oxc-transform/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-sVcK4tjXbCfexlhquKVcwoKQrekQWDzRXtDwOWxm3CV1k5qGUm/rl5RAQLnXYtZVgu0U2dGEct9tNms+dzbACA=="], + "@oxc-transform/binding-darwin-arm64": ["@oxc-transform/binding-darwin-arm64@0.81.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-EseJY9FQa1Ipow4quJ36i+1C5oEbrwJ3eKGZPw48/H5/5S+JFMHwPaE3NOF/aSLw8lkH6ghY6qKWanal2Jh8bA=="], - "@oxc-transform/binding-darwin-x64": ["@oxc-transform/binding-darwin-x64@0.80.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-MWmDTJszdO3X2LvbvIZocdfJnb/wjr3zhU99IlruwxsFfVNHbl03091bXi1ABsV5dyU+47V/A5jG3xOtg5X0vQ=="], + "@oxc-transform/binding-darwin-x64": ["@oxc-transform/binding-darwin-x64@0.81.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-L12EE6d/TveVsPKAaqqgW5IAA3xCh64RmsmJwxIJ7fBrnUg0qHfqENcxLfaFDwjDQe5mrZczuSYfOCwhoKWZdA=="], - "@oxc-transform/binding-freebsd-x64": ["@oxc-transform/binding-freebsd-x64@0.80.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fKuwj/iBfjfGePjcR9+j2TQ/7RlrUIT4ir/OAcHWYJ/kvxp4XY/juKYXo4lks/MW/dwe+UR1Lp6xiCQBuxpyIg=="], + "@oxc-transform/binding-freebsd-x64": ["@oxc-transform/binding-freebsd-x64@0.81.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-l1LbYOq+q6VVI+lIMFd+ehkqLokMj2Zjeyza4PSMzAfXYeaIFHDGiQBn1KE+IXMNN/E4Dwj6b3LwtvdB/uLpeQ=="], - "@oxc-transform/binding-linux-arm-gnueabihf": ["@oxc-transform/binding-linux-arm-gnueabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-R0QdfKiV+ZFiM28UnyylOEtTBFjAb4XuHvQltUSUpylXXIbGd+0Z1WF5lY3Z776Vy00HWhYj/Vo03rhvjdVDTA=="], + "@oxc-transform/binding-linux-arm-gnueabihf": ["@oxc-transform/binding-linux-arm-gnueabihf@0.81.0", "", { "os": "linux", "cpu": "arm" }, "sha512-8xmYvtpi1GDvsp5nmvnKyjceHLyxLIn2Esolm7GFTGrLxmcPo+ZUn2huAZCuOzSbjAqNRV/nU8At/2N93tLphg=="], - "@oxc-transform/binding-linux-arm-musleabihf": ["@oxc-transform/binding-linux-arm-musleabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-hIfp4LwyQMRhsY9ptx4UleffoY9wZofTmnHFhZTMdb/hoE97Vuqw7Ub2cLcWMu0FYHIX8zXCMd1CJjs2MV1X3w=="], + "@oxc-transform/binding-linux-arm-musleabihf": ["@oxc-transform/binding-linux-arm-musleabihf@0.81.0", "", { "os": "linux", "cpu": "arm" }, "sha512-YaLHLoaWVyI458zaF3yEBKq2YIoYFftmnEHJ7mvbYwhfvH6SDwQez2TnjZEoB/UD+LX9XQfiIfX6VP35RAPHUQ=="], - "@oxc-transform/binding-linux-arm64-gnu": ["@oxc-transform/binding-linux-arm64-gnu@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-mOYGji1m55BD2vV5m1qnrXbdqyPp/AU9p1Rn+0hM2zkE3pVkETCPvLevSvt4rHQZBZFIWeRGo47QNsNQyaZBsg=="], + "@oxc-transform/binding-linux-arm64-gnu": ["@oxc-transform/binding-linux-arm64-gnu@0.81.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-jFTlu6KrTq/z9z/HfdsntxQz6lmrIyIOXC3iZVxyoz2MDulXHhYotKypRqBPPyblyKeMbX1BCPwwKiIyYfiXMQ=="], - "@oxc-transform/binding-linux-arm64-musl": ["@oxc-transform/binding-linux-arm64-musl@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-kBBCQwr1GCkr/b0iXH+ijsg+CSPCAMSV2tu4LmG2PFaxBnZilMYfUyWHCAiskbbUADikecUfwX6hHIaQoMaixg=="], + "@oxc-transform/binding-linux-arm64-musl": ["@oxc-transform/binding-linux-arm64-musl@0.81.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Tk0fOSFxYN/CH2yZLF1Cy8rKHboW7OMubGULd9HUh3Mdi25yBngmc3sOdcLscLvBvutqgdSNn7e/gdPaodDlmw=="], - "@oxc-transform/binding-linux-riscv64-gnu": ["@oxc-transform/binding-linux-riscv64-gnu@0.80.0", "", { "os": "linux", "cpu": "none" }, "sha512-8CGJhHoD2Ttw8HtCNd/IWnGtL0Nsn448L2hZJtbDDGVUZUF4bbZFdXPnRt0QrEbupywoH6InN6q2imLous6xnw=="], + "@oxc-transform/binding-linux-riscv64-gnu": ["@oxc-transform/binding-linux-riscv64-gnu@0.81.0", "", { "os": "linux", "cpu": "none" }, "sha512-8JWsRm8tR0DDLb+1UuZM/E46MscCGlklH5hMpKQpF2cH6NzED7184S7yMmamoIIuMQEGF6coOAToukoW0ItSzQ=="], - "@oxc-transform/binding-linux-s390x-gnu": ["@oxc-transform/binding-linux-s390x-gnu@0.80.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-V/Lb6m5loWzvdB/qo6eYvVXidQku/PA706JbeE/PPCup8At+BwOXnZjktv7LDxrpuqnO32tZDHUUc9Y3bzOEBw=="], + "@oxc-transform/binding-linux-s390x-gnu": ["@oxc-transform/binding-linux-s390x-gnu@0.81.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Tb08GTZR0inR0hMXoP7MQx4G5YCTObJ8GEbBHKWMtL71RJhJGnJIn63DY3uvfPbi1XNW7uSJSzQ0mWMzelPAgg=="], - "@oxc-transform/binding-linux-x64-gnu": ["@oxc-transform/binding-linux-x64-gnu@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-03hHW04MQNb+ak27xo79nUkMjVu6146TNgeSapcDRATH4R0YMmXB2oPQK1K2nuBJzVZjBjH7Bus/I7tR3JasAg=="], + "@oxc-transform/binding-linux-x64-gnu": ["@oxc-transform/binding-linux-x64-gnu@0.81.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RalVuZu/iDzGJeQpyQ3KaJLsD11kvb/SLqKt0MXMkq2lBfIB4A1Pdx4JL0RuvcqjLPEgEWq8GcAPiyVeTYEtVQ=="], - "@oxc-transform/binding-linux-x64-musl": ["@oxc-transform/binding-linux-x64-musl@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-BkXniuuHpo9cR2S3JDKIvmUrNvmm335owGW4rfp07HjVUsbq9e7bSnvOnyA3gXGdrPR2IgCWGi5nnXk2NN5Q0A=="], + "@oxc-transform/binding-linux-x64-musl": ["@oxc-transform/binding-linux-x64-musl@0.81.0", "", { "os": "linux", "cpu": "x64" }, "sha512-EdbKDZ4gA5jD5YKT15HgYMCcoHGYEqO5oFGn6uREWvc4BcJ6cDrK9oyttT5CO6Y35tgnSQElHVKDWXyTMIbQlA=="], - "@oxc-transform/binding-wasm32-wasi": ["@oxc-transform/binding-wasm32-wasi@0.80.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.1" }, "cpu": "none" }, "sha512-jfRRXLtfSgTeJXBHj6qb+HHUd6hmYcyUNMBcTY8/k+JVsx0ThfrmCIufNlSJTt1zB+ugnMVMuQGeB0oF+aa86w=="], + "@oxc-transform/binding-wasm32-wasi": ["@oxc-transform/binding-wasm32-wasi@0.81.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.1" }, "cpu": "none" }, "sha512-NCAj6b7fQvxM9U3UkbfFxelx458w8t7CnyRNvxlFpQjESCaYZ6hUzxHL57TGKUq6P7jKt6xjDdoFnVwZ36SR6w=="], - "@oxc-transform/binding-win32-arm64-msvc": ["@oxc-transform/binding-win32-arm64-msvc@0.80.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-bofcVhlAV1AKzbE0TgDH+h813pbwWwwRhN6tv/hD4qEuWh/qEjv8Xb3Ar15xfBfyLI53FoJascuaJAFzX+IN9A=="], + "@oxc-transform/binding-win32-arm64-msvc": ["@oxc-transform/binding-win32-arm64-msvc@0.81.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-zwZMMQAwfRM0uk5iMHf6q1fXG8qCcKU30qOhzdrxfO/rD+2Xz/ZfRTkGJzxG2cXAaJ3TRUzYdTr6YLxgGfTIbQ=="], - "@oxc-transform/binding-win32-x64-msvc": ["@oxc-transform/binding-win32-x64-msvc@0.80.0", "", { "os": "win32", "cpu": "x64" }, "sha512-MT6hQo9Kw/VuQUfX0fc0OpUdZesQruT0UNY9hxIcqcli7pbxMrvFBjkXo7oUb2151s/n+F4fyQOWvaR6zwxtDA=="], + "@oxc-transform/binding-win32-x64-msvc": ["@oxc-transform/binding-win32-x64-msvc@0.81.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Y86Doj1eOkiY9Y+W51iJ3+/D9L+0eZ5Fl5AIQfQcHSGAjlF9geHeHxUsILZWEav12yuE/zeB5gO3AgJ801aJyQ=="], "@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="], @@ -450,6 +473,8 @@ "@rollup/plugin-terser": ["@rollup/plugin-terser@0.4.4", "", { "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", "terser": "^5.17.4" }, "peerDependencies": { "rollup": "^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A=="], + "@rollup/plugin-yaml": ["@rollup/plugin-yaml@4.1.2", "", { "dependencies": { "@rollup/pluginutils": "^5.0.1", "js-yaml": "^4.1.0", "tosource": "^2.0.0-alpha.3" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw=="], + "@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="], "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.46.2", "", { "os": "android", "cpu": "arm" }, "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA=="], @@ -654,7 +679,7 @@ "@volar/source-map": ["@volar/source-map@2.4.22", "", {}, "sha512-L2nVr/1vei0xKRgO2tYVXtJYd09HTRjaZi418e85Q+QdbbqA8h7bBjfNyPPSsjnrOO4l4kaAo78c8SQUAdHvgA=="], - "@vue-macros/common": ["@vue-macros/common@3.0.0-beta.16", "", { "dependencies": { "@vue/compiler-sfc": "^3.5.17", "ast-kit": "^2.1.1", "local-pkg": "^1.1.1", "magic-string-ast": "^1.0.0", "unplugin-utils": "^0.2.4" }, "peerDependencies": { "vue": "^2.7.0 || ^3.2.25" }, "optionalPeers": ["vue"] }, "sha512-8O2gWxWFiaoNkk7PGi0+p7NPGe/f8xJ3/INUufvje/RZOs7sJvlI1jnR4lydtRFa/mU0ylMXUXXjSK0fHDEYTA=="], + "@vue-macros/common": ["@vue-macros/common@3.0.0-beta.15", "", { "dependencies": { "@vue/compiler-sfc": "^3.5.17", "ast-kit": "^2.1.0", "local-pkg": "^1.1.1", "magic-string-ast": "^1.0.0", "unplugin-utils": "^0.2.4" }, "peerDependencies": { "vue": "^2.7.0 || ^3.2.25" }, "optionalPeers": ["vue"] }, "sha512-DMgq/rIh1H20WYNWU7krIbEfJRYDDhy7ix64GlT4AVUJZZWCZ5pxiYVJR3A3GmWQPkn7Pg7i3oIiGqu4JGC65w=="], "@vue/babel-helper-vue-transform-on": ["@vue/babel-helper-vue-transform-on@1.5.0", "", {}, "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA=="], @@ -1380,6 +1405,8 @@ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + "jsonc-eslint-parser": ["jsonc-eslint-parser@2.4.0", "", { "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^3.0.0", "espree": "^9.0.0", "semver": "^7.3.5" } }, "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg=="], + "junk": ["junk@4.0.1", "", {}, "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ=="], "jwt-decode": ["jwt-decode@4.0.0", "", {}, "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA=="], @@ -1502,7 +1529,7 @@ "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="], - "nanoid": ["nanoid@5.1.5", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw=="], + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "nanotar": ["nanotar@0.2.0", "", {}, "sha512-9ca1h0Xjvo9bEkE4UOxgAzLV0jHKe6LMaxo37ND2DAhhAtd0j8pR1Wxz+/goMrZO8AEZTWCmyaOsFI/W5AdpCQ=="], @@ -1554,6 +1581,8 @@ "nuxt": ["nuxt@4.0.3", "", { "dependencies": { "@nuxt/cli": "^3.27.0", "@nuxt/devalue": "^2.0.2", "@nuxt/devtools": "^2.6.2", "@nuxt/kit": "4.0.3", "@nuxt/schema": "4.0.3", "@nuxt/telemetry": "^2.6.6", "@nuxt/vite-builder": "4.0.3", "@unhead/vue": "^2.0.13", "@vue/shared": "^3.5.18", "c12": "^3.2.0", "chokidar": "^4.0.3", "compatx": "^0.2.0", "consola": "^3.4.2", "cookie-es": "^2.0.0", "defu": "^6.1.4", "destr": "^2.0.5", "devalue": "^5.1.1", "errx": "^0.1.0", "esbuild": "^0.25.8", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "exsolve": "^1.0.7", "h3": "^1.15.4", "hookable": "^5.5.3", "ignore": "^7.0.5", "impound": "^1.0.0", "jiti": "^2.5.1", "klona": "^2.0.6", "knitwork": "^1.2.0", "magic-string": "^0.30.17", "mlly": "^1.7.4", "mocked-exports": "^0.1.1", "nanotar": "^0.2.0", "nitropack": "^2.12.4", "nypm": "^0.6.1", "ofetch": "^1.4.1", "ohash": "^2.0.11", "on-change": "^5.0.1", "oxc-minify": "^0.80.0", "oxc-parser": "^0.80.0", "oxc-transform": "^0.80.0", "oxc-walker": "^0.4.0", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.2.0", "radix3": "^1.1.2", "scule": "^1.3.0", "semver": "^7.7.2", "std-env": "^3.9.0", "strip-literal": "^3.0.0", "tinyglobby": "0.2.14", "ufo": "^1.6.1", "ultrahtml": "^1.6.0", "uncrypto": "^0.1.3", "unctx": "^2.4.1", "unimport": "^5.2.0", "unplugin": "^2.3.5", "unplugin-vue-router": "^0.15.0", "unstorage": "^1.16.1", "untyped": "^2.0.0", "vue": "^3.5.18", "vue-bundle-renderer": "^2.1.2", "vue-devtools-stub": "^0.1.0", "vue-router": "^4.5.1" }, "peerDependencies": { "@parcel/watcher": "^2.1.0", "@types/node": ">=18.12.0" }, "optionalPeers": ["@parcel/watcher", "@types/node"], "bin": { "nuxi": "bin/nuxt.mjs", "nuxt": "bin/nuxt.mjs" } }, "sha512-skRFoxY/1nphk+viF5ZEDLNEMJse0J/U5+wAYtJfYQ86EcEpLMm9v78FwdCc5IioKpgmSda6ZlLxY1DgK+6SDw=="], + "nuxt-define": ["nuxt-define@1.0.0", "", {}, "sha512-CYZ2WjU+KCyCDVzjYUM4eEpMF0rkPmkpiFrybTqqQCRpUbPt2h3snswWIpFPXTi+osRCY6Og0W/XLAQgDL4FfQ=="], + "nypm": ["nypm@0.6.1", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], @@ -1578,9 +1607,9 @@ "oxc-minify": ["oxc-minify@0.80.0", "", { "optionalDependencies": { "@oxc-minify/binding-android-arm64": "0.80.0", "@oxc-minify/binding-darwin-arm64": "0.80.0", "@oxc-minify/binding-darwin-x64": "0.80.0", "@oxc-minify/binding-freebsd-x64": "0.80.0", "@oxc-minify/binding-linux-arm-gnueabihf": "0.80.0", "@oxc-minify/binding-linux-arm-musleabihf": "0.80.0", "@oxc-minify/binding-linux-arm64-gnu": "0.80.0", "@oxc-minify/binding-linux-arm64-musl": "0.80.0", "@oxc-minify/binding-linux-riscv64-gnu": "0.80.0", "@oxc-minify/binding-linux-s390x-gnu": "0.80.0", "@oxc-minify/binding-linux-x64-gnu": "0.80.0", "@oxc-minify/binding-linux-x64-musl": "0.80.0", "@oxc-minify/binding-wasm32-wasi": "0.80.0", "@oxc-minify/binding-win32-arm64-msvc": "0.80.0", "@oxc-minify/binding-win32-x64-msvc": "0.80.0" } }, "sha512-kMMb3dC8KlQ+Bzf/UhepYsq1ukorCOJu038rSxF7kTbsCLx1Ojet9Hc9gKqKR/Wpih5GWnOA2DvLe20ZtxbJ2Q=="], - "oxc-parser": ["oxc-parser@0.80.0", "", { "dependencies": { "@oxc-project/types": "^0.80.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm64": "0.80.0", "@oxc-parser/binding-darwin-arm64": "0.80.0", "@oxc-parser/binding-darwin-x64": "0.80.0", "@oxc-parser/binding-freebsd-x64": "0.80.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.80.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.80.0", "@oxc-parser/binding-linux-arm64-gnu": "0.80.0", "@oxc-parser/binding-linux-arm64-musl": "0.80.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.80.0", "@oxc-parser/binding-linux-s390x-gnu": "0.80.0", "@oxc-parser/binding-linux-x64-gnu": "0.80.0", "@oxc-parser/binding-linux-x64-musl": "0.80.0", "@oxc-parser/binding-wasm32-wasi": "0.80.0", "@oxc-parser/binding-win32-arm64-msvc": "0.80.0", "@oxc-parser/binding-win32-x64-msvc": "0.80.0" } }, "sha512-lTEUQs+WBOXPUzMR/tWY4yT9D7xXwnENtRR7Epw/QcuYpV4fRveEA+zq8IGUwyyuWecl8jHrddCCuadw+kZOSA=="], + "oxc-parser": ["oxc-parser@0.81.0", "", { "dependencies": { "@oxc-project/types": "^0.81.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm64": "0.81.0", "@oxc-parser/binding-darwin-arm64": "0.81.0", "@oxc-parser/binding-darwin-x64": "0.81.0", "@oxc-parser/binding-freebsd-x64": "0.81.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.81.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.81.0", "@oxc-parser/binding-linux-arm64-gnu": "0.81.0", "@oxc-parser/binding-linux-arm64-musl": "0.81.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.81.0", "@oxc-parser/binding-linux-s390x-gnu": "0.81.0", "@oxc-parser/binding-linux-x64-gnu": "0.81.0", "@oxc-parser/binding-linux-x64-musl": "0.81.0", "@oxc-parser/binding-wasm32-wasi": "0.81.0", "@oxc-parser/binding-win32-arm64-msvc": "0.81.0", "@oxc-parser/binding-win32-x64-msvc": "0.81.0" } }, "sha512-iceu9s70mZyjKs6V2QX7TURkJj1crnKi9csGByWvOWwrR5rwq0U0f49yIlRAzMP4t7K2gRC1MnyMZggMhiwAVg=="], - "oxc-transform": ["oxc-transform@0.80.0", "", { "optionalDependencies": { "@oxc-transform/binding-android-arm64": "0.80.0", "@oxc-transform/binding-darwin-arm64": "0.80.0", "@oxc-transform/binding-darwin-x64": "0.80.0", "@oxc-transform/binding-freebsd-x64": "0.80.0", "@oxc-transform/binding-linux-arm-gnueabihf": "0.80.0", "@oxc-transform/binding-linux-arm-musleabihf": "0.80.0", "@oxc-transform/binding-linux-arm64-gnu": "0.80.0", "@oxc-transform/binding-linux-arm64-musl": "0.80.0", "@oxc-transform/binding-linux-riscv64-gnu": "0.80.0", "@oxc-transform/binding-linux-s390x-gnu": "0.80.0", "@oxc-transform/binding-linux-x64-gnu": "0.80.0", "@oxc-transform/binding-linux-x64-musl": "0.80.0", "@oxc-transform/binding-wasm32-wasi": "0.80.0", "@oxc-transform/binding-win32-arm64-msvc": "0.80.0", "@oxc-transform/binding-win32-x64-msvc": "0.80.0" } }, "sha512-hWusSpynsn4MZP1KJa7e254xyVmowTUshvttpk7JfTt055YEJ+ad6memMJ9GJqPeeyydfnwwKkLy6eiwDn12xA=="], + "oxc-transform": ["oxc-transform@0.81.0", "", { "optionalDependencies": { "@oxc-transform/binding-android-arm64": "0.81.0", "@oxc-transform/binding-darwin-arm64": "0.81.0", "@oxc-transform/binding-darwin-x64": "0.81.0", "@oxc-transform/binding-freebsd-x64": "0.81.0", "@oxc-transform/binding-linux-arm-gnueabihf": "0.81.0", "@oxc-transform/binding-linux-arm-musleabihf": "0.81.0", "@oxc-transform/binding-linux-arm64-gnu": "0.81.0", "@oxc-transform/binding-linux-arm64-musl": "0.81.0", "@oxc-transform/binding-linux-riscv64-gnu": "0.81.0", "@oxc-transform/binding-linux-s390x-gnu": "0.81.0", "@oxc-transform/binding-linux-x64-gnu": "0.81.0", "@oxc-transform/binding-linux-x64-musl": "0.81.0", "@oxc-transform/binding-wasm32-wasi": "0.81.0", "@oxc-transform/binding-win32-arm64-msvc": "0.81.0", "@oxc-transform/binding-win32-x64-msvc": "0.81.0" } }, "sha512-Sfb7sBZJoA7GPNlgeVvwqSS+fKFG5Lu2N4CJIlKPdkBgMDwVqUPOTVrEXHYaoYilA2x0VXVwLWqjcW3CwrfzSA=="], "oxc-walker": ["oxc-walker@0.4.0", "", { "dependencies": { "estree-walker": "^3.0.3", "magic-regexp": "^0.10.0" }, "peerDependencies": { "oxc-parser": ">=0.72.0" } }, "sha512-x5TJAZQD3kRnRBGZ+8uryMZUwkTYddwzBftkqyJIcmpBOXmoK/fwriRKATjZroR2d+aS7+2w1B0oz189bBTwfw=="], @@ -1950,6 +1979,8 @@ "toml": ["toml@3.0.0", "", {}, "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w=="], + "tosource": ["tosource@2.0.0-alpha.3", "", {}, "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug=="], + "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], @@ -2004,7 +2035,7 @@ "unplugin-utils": ["unplugin-utils@0.2.5", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg=="], - "unplugin-vue-router": ["unplugin-vue-router@0.15.0", "", { "dependencies": { "@vue-macros/common": "3.0.0-beta.16", "@vue/language-core": "^3.0.1", "ast-walker-scope": "^0.8.1", "chokidar": "^4.0.3", "json5": "^2.2.3", "local-pkg": "^1.1.1", "magic-string": "^0.30.17", "mlly": "^1.7.4", "muggle-string": "^0.4.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "scule": "^1.3.0", "tinyglobby": "^0.2.14", "unplugin": "^2.3.5", "unplugin-utils": "^0.2.4", "yaml": "^2.8.0" }, "peerDependencies": { "@vue/compiler-sfc": "^3.5.17", "vue-router": "^4.5.1" }, "optionalPeers": ["vue-router"] }, "sha512-PyGehCjd9Ny9h+Uer4McbBjjib3lHihcyUEILa7pHKl6+rh8N7sFyw4ZkV+N30Oq2zmIUG7iKs3qpL0r+gXAaQ=="], + "unplugin-vue-router": ["unplugin-vue-router@0.14.0", "", { "dependencies": { "@vue-macros/common": "3.0.0-beta.15", "ast-walker-scope": "^0.8.1", "chokidar": "^4.0.3", "fast-glob": "^3.3.3", "json5": "^2.2.3", "local-pkg": "^1.1.1", "magic-string": "^0.30.17", "mlly": "^1.7.4", "pathe": "^2.0.3", "picomatch": "^4.0.2", "scule": "^1.3.0", "unplugin": "^2.3.5", "unplugin-utils": "^0.2.4", "yaml": "^2.8.0" }, "peerDependencies": { "@vue/compiler-sfc": "^3.5.17", "vue-router": "^4.5.1" }, "optionalPeers": ["vue-router"] }, "sha512-ipjunvS5e2aFHBAUFuLbHl2aHKbXXXBhTxGT9wZx66fNVPdEQzVVitF8nODr1plANhTTa3UZ+DQu9uyLngMzoQ=="], "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], @@ -2060,6 +2091,8 @@ "vue-flow-layout": ["vue-flow-layout@0.2.0", "", {}, "sha512-zKgsWWkXq0xrus7H4Mc+uFs1ESrmdTXlO0YNbR6wMdPaFvosL3fMB8N7uTV308UhGy9UvTrGhIY7mVz9eN+L0Q=="], + "vue-i18n": ["vue-i18n@11.1.11", "", { "dependencies": { "@intlify/core-base": "11.1.11", "@intlify/shared": "11.1.11", "@vue/devtools-api": "^6.5.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "sha512-LvyteQoXeQiuILbzqv13LbyBna/TEv2Ha+4ZWK2AwGHUzZ8+IBaZS0TJkCgn5izSPLcgZwXy9yyTrewCb2u/MA=="], + "vue-router": ["vue-router@4.5.1", "", { "dependencies": { "@vue/devtools-api": "^6.6.4" }, "peerDependencies": { "vue": "^3.2.0" } }, "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw=="], "watchpack": ["watchpack@2.4.4", "", { "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" } }, "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA=="], @@ -2106,6 +2139,8 @@ "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], + "yaml-eslint-parser": ["yaml-eslint-parser@1.3.0", "", { "dependencies": { "eslint-visitor-keys": "^3.0.0", "yaml": "^2.0.0" } }, "sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA=="], + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], @@ -2142,6 +2177,14 @@ "@iconify/utils/globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], + "@intlify/bundle-utils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "@intlify/unplugin-vue-i18n/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + + "@intlify/vue-i18n-extensions/@intlify/shared": ["@intlify/shared@10.0.8", "", {}, "sha512-BcmHpb5bQyeVNrptC3UhzpBZB/YHHDoEREOUERrmF2BRxsyOEuRrq+Z96C/D4+2KJb8kuHiouzAei7BXlG0YYw=="], + + "@intlify/vue-i18n-extensions/vue-i18n": ["vue-i18n@10.0.8", "", { "dependencies": { "@intlify/core-base": "10.0.8", "@intlify/shared": "10.0.8", "@vue/devtools-api": "^6.5.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "sha512-mIjy4utxMz9lMMo6G9vYePv7gUFt4ztOMhY9/4czDJxZ26xPeJ49MAGa9wBAE3XuXbYCrtVPmPxNjej7JJJkZQ=="], + "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], "@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=="], @@ -2162,6 +2205,8 @@ "@netlify/zip-it-and-ship-it/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], + "@nodelib/fs.scandir/@nodelib/fs.stat": ["@nodelib/fs.stat@4.0.0", "", {}, "sha512-ctr6bByzksKRCV0bavi8WoQevU6plSp2IkllIsEqaiKe2mwNNnaluhnRhcsgGZHrrHk57B3lf95MkLMO3STYcg=="], + "@nuxt/devtools/which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], "@nuxt/eslint/@nuxt/kit": ["@nuxt/kit@4.0.3", "", { "dependencies": { "c12": "^3.2.0", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", "errx": "^0.1.0", "exsolve": "^1.0.7", "ignore": "^7.0.5", "jiti": "^2.5.1", "klona": "^2.0.6", "mlly": "^1.7.4", "ohash": "^2.0.11", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "scule": "^1.3.0", "semver": "^7.7.2", "std-env": "^3.9.0", "tinyglobby": "^0.2.14", "ufo": "^1.6.1", "unctx": "^2.4.1", "unimport": "^5.2.0", "untyped": "^2.0.0" } }, "sha512-9+lwvP4n8KhO91azoebO0o39smESGzEV4HU6nef9HIFyt04YwlVMY37Pk63GgZn0WhWVjyPWcQWs0rUdZUYcPw=="], @@ -2186,6 +2231,12 @@ "@nuxt/vite-builder/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + "@nuxtjs/i18n/@nuxt/kit": ["@nuxt/kit@4.0.3", "", { "dependencies": { "c12": "^3.2.0", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", "errx": "^0.1.0", "exsolve": "^1.0.7", "ignore": "^7.0.5", "jiti": "^2.5.1", "klona": "^2.0.6", "mlly": "^1.7.4", "ohash": "^2.0.11", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "scule": "^1.3.0", "semver": "^7.7.2", "std-env": "^3.9.0", "tinyglobby": "^0.2.14", "ufo": "^1.6.1", "unctx": "^2.4.1", "unimport": "^5.2.0", "untyped": "^2.0.0" } }, "sha512-9+lwvP4n8KhO91azoebO0o39smESGzEV4HU6nef9HIFyt04YwlVMY37Pk63GgZn0WhWVjyPWcQWs0rUdZUYcPw=="], + + "@nuxtjs/i18n/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + + "@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-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=="], @@ -2238,6 +2289,8 @@ "@vue/compiler-sfc/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + "@vue/devtools-core/nanoid": ["nanoid@5.1.5", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw=="], + "@vueuse/nuxt/@nuxt/kit": ["@nuxt/kit@4.0.3", "", { "dependencies": { "c12": "^3.2.0", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", "errx": "^0.1.0", "exsolve": "^1.0.7", "ignore": "^7.0.5", "jiti": "^2.5.1", "klona": "^2.0.6", "mlly": "^1.7.4", "ohash": "^2.0.11", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "scule": "^1.3.0", "semver": "^7.7.2", "std-env": "^3.9.0", "tinyglobby": "^0.2.14", "ufo": "^1.6.1", "unctx": "^2.4.1", "unimport": "^5.2.0", "untyped": "^2.0.0" } }, "sha512-9+lwvP4n8KhO91azoebO0o39smESGzEV4HU6nef9HIFyt04YwlVMY37Pk63GgZn0WhWVjyPWcQWs0rUdZUYcPw=="], "@whatwg-node/fetch/urlpattern-polyfill": ["urlpattern-polyfill@10.1.0", "", {}, "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw=="], @@ -2272,8 +2325,6 @@ "extract-zip/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], - "fast-glob/@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], - "fast-glob/@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -2298,6 +2349,10 @@ "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=="], + + "jsonc-eslint-parser/espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + "lambda-local/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "lambda-local/dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], @@ -2334,11 +2389,15 @@ "nuxt/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + "nuxt/oxc-parser": ["oxc-parser@0.80.0", "", { "dependencies": { "@oxc-project/types": "^0.80.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm64": "0.80.0", "@oxc-parser/binding-darwin-arm64": "0.80.0", "@oxc-parser/binding-darwin-x64": "0.80.0", "@oxc-parser/binding-freebsd-x64": "0.80.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.80.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.80.0", "@oxc-parser/binding-linux-arm64-gnu": "0.80.0", "@oxc-parser/binding-linux-arm64-musl": "0.80.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.80.0", "@oxc-parser/binding-linux-s390x-gnu": "0.80.0", "@oxc-parser/binding-linux-x64-gnu": "0.80.0", "@oxc-parser/binding-linux-x64-musl": "0.80.0", "@oxc-parser/binding-wasm32-wasi": "0.80.0", "@oxc-parser/binding-win32-arm64-msvc": "0.80.0", "@oxc-parser/binding-win32-x64-msvc": "0.80.0" } }, "sha512-lTEUQs+WBOXPUzMR/tWY4yT9D7xXwnENtRR7Epw/QcuYpV4fRveEA+zq8IGUwyyuWecl8jHrddCCuadw+kZOSA=="], + + "nuxt/oxc-transform": ["oxc-transform@0.80.0", "", { "optionalDependencies": { "@oxc-transform/binding-android-arm64": "0.80.0", "@oxc-transform/binding-darwin-arm64": "0.80.0", "@oxc-transform/binding-darwin-x64": "0.80.0", "@oxc-transform/binding-freebsd-x64": "0.80.0", "@oxc-transform/binding-linux-arm-gnueabihf": "0.80.0", "@oxc-transform/binding-linux-arm-musleabihf": "0.80.0", "@oxc-transform/binding-linux-arm64-gnu": "0.80.0", "@oxc-transform/binding-linux-arm64-musl": "0.80.0", "@oxc-transform/binding-linux-riscv64-gnu": "0.80.0", "@oxc-transform/binding-linux-s390x-gnu": "0.80.0", "@oxc-transform/binding-linux-x64-gnu": "0.80.0", "@oxc-transform/binding-linux-x64-musl": "0.80.0", "@oxc-transform/binding-wasm32-wasi": "0.80.0", "@oxc-transform/binding-win32-arm64-msvc": "0.80.0", "@oxc-transform/binding-win32-x64-msvc": "0.80.0" } }, "sha512-hWusSpynsn4MZP1KJa7e254xyVmowTUshvttpk7JfTt055YEJ+ad6memMJ9GJqPeeyydfnwwKkLy6eiwDn12xA=="], + "nuxt/unplugin": ["unplugin@2.3.5", "", { "dependencies": { "acorn": "^8.14.1", "picomatch": "^4.0.2", "webpack-virtual-modules": "^0.6.2" } }, "sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw=="], - "pinia/@vue/devtools-api": ["@vue/devtools-api@7.7.7", "", { "dependencies": { "@vue/devtools-kit": "^7.7.7" } }, "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg=="], + "nuxt/unplugin-vue-router": ["unplugin-vue-router@0.15.0", "", { "dependencies": { "@vue-macros/common": "3.0.0-beta.16", "@vue/language-core": "^3.0.1", "ast-walker-scope": "^0.8.1", "chokidar": "^4.0.3", "json5": "^2.2.3", "local-pkg": "^1.1.1", "magic-string": "^0.30.17", "mlly": "^1.7.4", "muggle-string": "^0.4.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "scule": "^1.3.0", "tinyglobby": "^0.2.14", "unplugin": "^2.3.5", "unplugin-utils": "^0.2.4", "yaml": "^2.8.0" }, "peerDependencies": { "@vue/compiler-sfc": "^3.5.17", "vue-router": "^4.5.1" }, "optionalPeers": ["vue-router"] }, "sha512-PyGehCjd9Ny9h+Uer4McbBjjib3lHihcyUEILa7pHKl6+rh8N7sFyw4ZkV+N30Oq2zmIUG7iKs3qpL0r+gXAaQ=="], - "postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "pinia/@vue/devtools-api": ["@vue/devtools-api@7.7.7", "", { "dependencies": { "@vue/devtools-kit": "^7.7.7" } }, "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg=="], "postcss-calc/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=="], @@ -2440,10 +2499,14 @@ "xss/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "yaml-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "@intlify/vue-i18n-extensions/vue-i18n/@intlify/core-base": ["@intlify/core-base@10.0.8", "", { "dependencies": { "@intlify/message-compiler": "10.0.8", "@intlify/shared": "10.0.8" } }, "sha512-FoHslNWSoHjdUBLy35bpm9PV/0LVI/DSv9L6Km6J2ad8r/mm0VaGg06C40FqlE8u2ADcGUM60lyoU7Myo4WNZQ=="], + "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], @@ -2510,6 +2573,8 @@ "@nuxt/vite-builder/@nuxt/kit/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@nuxtjs/i18n/@nuxt/kit/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], "@unocss/cli/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -2558,6 +2623,70 @@ "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + "nuxt/oxc-parser/@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-H0S4QTRFhct1uO1ZOnzGQAoHSJVHCyZa+oivovHkbqA0z271ppRkXmJuLfjW+9CBW0577JNAhjTflKUDpCO4lg=="], + + "nuxt/oxc-parser/@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cVGI6NeGs1u1Ev8yO7I+zXPQuduCwwhYXd/K64uygx+OFp7fC7zSIlkGpoxFRUuSxqyipC813foAfUOwM1Y0PA=="], + + "nuxt/oxc-parser/@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.80.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-h7wRo10ywI2vLz9VljFeIaUh9u7l2l3kvF6FAteY3cPqbCA6JYUZGJaykhMqTxJoG6wrzf35sMA2ubvq67iAMA=="], + + "nuxt/oxc-parser/@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.80.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-KcJ+8w/wVwd/XfDmgA9QZJAWML3vPu2O2Y8XRkf3U9VsN5n8cZ5PXMbH4NBSb3O7ctdDSvwnnuApLOz3sTHsUw=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-5OCRxV5fX5RkVqsag55m4EFeudSZ0nSMYXgdtfR/5JZSiYmIYyPycafNNa52liqC2gx27vzrDRE4FdlG+5fhww=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-kMa2PeA2GHMhvV617WdFzDAWCo2A00knPEe6rxFUO/Gr8TTLv1/LlEY6UqGseWrRfkkhFiAO496nRPW/6B5DCg=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-y2NEhbFfKPdOkf3ZR/3xwJFJVji6IKxwXKHUN4bEdqpcO0tkXSCiP0MzTxjEY6ql2/MXdkqK0Ym92dYsRsgsyg=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j3tKausSXwHS/Ej6ct2dmKJtw0UIME2XJmj6QfPT6LyUSNTndj4yXRXuMSrCOrX9/0qH9GhmqeL9ouU27dQRFw=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.80.0", "", { "os": "linux", "cpu": "none" }, "sha512-h+uPvyTcpTFd946fGPU57sZeec2qHPUYQRZeXHB2uuZjps+9pxQ5zIz0EBM/JgBtnwdtoR93RAu1YNAVbqY5Zw=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.80.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-+u74hV+WwCPL4UBNOJaIGRozTCfZ7pM5JCEe8zAlMkKexftUzbtvW02314bVD9bqoRAL3Gg6jcZrjNjwDX2FwQ=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-N9UGnWVWMlOJH+6550tqyBxd9qkMd0f4m+YRA0gly6efJTuLbPQpjkJm7pJbMu+GULcvSJ/Y0bkMAIQTtwP0vQ=="], + + "nuxt/oxc-parser/@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-l2N/GlFEri27QBMi0e53V/SlpQotIvHbz+rZZG/EO+vn58ZEr0eTG+PjJoOY/T8+TQb8nrCtRe4S/zNDpV6zSQ=="], + + "nuxt/oxc-parser/@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.80.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.1" }, "cpu": "none" }, "sha512-5iEwQqMXU1HiRlWuD3f+8N2O3qWhS+nOFEAWgE3sjMUnTtILPJETYhaGBPqqPWg1iRO3+hE1lEBCdI91GS1CUQ=="], + + "nuxt/oxc-parser/@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.80.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-HedSH/Db7OFR2SugTbuawaV1vjgUjCXzxPquow/1FLtpRT2wASbMaRRbyD/h2n4DJ8V2zGqnV8Q+vic+VNvnKg=="], + + "nuxt/oxc-parser/@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.80.0", "", { "os": "win32", "cpu": "x64" }, "sha512-SSiM0m7jG5yxVf0ivy1rF8OuTJo8ITgp1ccp2aqPZG6Qyl5QiVpf8HI1X5AvPFxts2B4Bv8U3Dip+FobqBkwcw=="], + + "nuxt/oxc-parser/@oxc-project/types": ["@oxc-project/types@0.80.0", "", {}, "sha512-xxHQm8wfCv2e8EmtaDwpMeAHOWqgQDAYg+BJouLXSQt5oTKu9TIXrgNMGSrM2fLvKmECsRd9uUFAAD+hPyootA=="], + + "nuxt/oxc-transform/@oxc-transform/binding-android-arm64": ["@oxc-transform/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-HAK6zIUOteptOsSRqoGu41cez7kj/OPJqBGdgdP6FFh2RFcRfh0vqefjgF69af7TjzsRxVF8itiWvFsJHrIFoA=="], + + "nuxt/oxc-transform/@oxc-transform/binding-darwin-arm64": ["@oxc-transform/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-sVcK4tjXbCfexlhquKVcwoKQrekQWDzRXtDwOWxm3CV1k5qGUm/rl5RAQLnXYtZVgu0U2dGEct9tNms+dzbACA=="], + + "nuxt/oxc-transform/@oxc-transform/binding-darwin-x64": ["@oxc-transform/binding-darwin-x64@0.80.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-MWmDTJszdO3X2LvbvIZocdfJnb/wjr3zhU99IlruwxsFfVNHbl03091bXi1ABsV5dyU+47V/A5jG3xOtg5X0vQ=="], + + "nuxt/oxc-transform/@oxc-transform/binding-freebsd-x64": ["@oxc-transform/binding-freebsd-x64@0.80.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fKuwj/iBfjfGePjcR9+j2TQ/7RlrUIT4ir/OAcHWYJ/kvxp4XY/juKYXo4lks/MW/dwe+UR1Lp6xiCQBuxpyIg=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-arm-gnueabihf": ["@oxc-transform/binding-linux-arm-gnueabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-R0QdfKiV+ZFiM28UnyylOEtTBFjAb4XuHvQltUSUpylXXIbGd+0Z1WF5lY3Z776Vy00HWhYj/Vo03rhvjdVDTA=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-arm-musleabihf": ["@oxc-transform/binding-linux-arm-musleabihf@0.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-hIfp4LwyQMRhsY9ptx4UleffoY9wZofTmnHFhZTMdb/hoE97Vuqw7Ub2cLcWMu0FYHIX8zXCMd1CJjs2MV1X3w=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-arm64-gnu": ["@oxc-transform/binding-linux-arm64-gnu@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-mOYGji1m55BD2vV5m1qnrXbdqyPp/AU9p1Rn+0hM2zkE3pVkETCPvLevSvt4rHQZBZFIWeRGo47QNsNQyaZBsg=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-arm64-musl": ["@oxc-transform/binding-linux-arm64-musl@0.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-kBBCQwr1GCkr/b0iXH+ijsg+CSPCAMSV2tu4LmG2PFaxBnZilMYfUyWHCAiskbbUADikecUfwX6hHIaQoMaixg=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-riscv64-gnu": ["@oxc-transform/binding-linux-riscv64-gnu@0.80.0", "", { "os": "linux", "cpu": "none" }, "sha512-8CGJhHoD2Ttw8HtCNd/IWnGtL0Nsn448L2hZJtbDDGVUZUF4bbZFdXPnRt0QrEbupywoH6InN6q2imLous6xnw=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-s390x-gnu": ["@oxc-transform/binding-linux-s390x-gnu@0.80.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-V/Lb6m5loWzvdB/qo6eYvVXidQku/PA706JbeE/PPCup8At+BwOXnZjktv7LDxrpuqnO32tZDHUUc9Y3bzOEBw=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-x64-gnu": ["@oxc-transform/binding-linux-x64-gnu@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-03hHW04MQNb+ak27xo79nUkMjVu6146TNgeSapcDRATH4R0YMmXB2oPQK1K2nuBJzVZjBjH7Bus/I7tR3JasAg=="], + + "nuxt/oxc-transform/@oxc-transform/binding-linux-x64-musl": ["@oxc-transform/binding-linux-x64-musl@0.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-BkXniuuHpo9cR2S3JDKIvmUrNvmm335owGW4rfp07HjVUsbq9e7bSnvOnyA3gXGdrPR2IgCWGi5nnXk2NN5Q0A=="], + + "nuxt/oxc-transform/@oxc-transform/binding-wasm32-wasi": ["@oxc-transform/binding-wasm32-wasi@0.80.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.1" }, "cpu": "none" }, "sha512-jfRRXLtfSgTeJXBHj6qb+HHUd6hmYcyUNMBcTY8/k+JVsx0ThfrmCIufNlSJTt1zB+ugnMVMuQGeB0oF+aa86w=="], + + "nuxt/oxc-transform/@oxc-transform/binding-win32-arm64-msvc": ["@oxc-transform/binding-win32-arm64-msvc@0.80.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-bofcVhlAV1AKzbE0TgDH+h813pbwWwwRhN6tv/hD4qEuWh/qEjv8Xb3Ar15xfBfyLI53FoJascuaJAFzX+IN9A=="], + + "nuxt/oxc-transform/@oxc-transform/binding-win32-x64-msvc": ["@oxc-transform/binding-win32-x64-msvc@0.80.0", "", { "os": "win32", "cpu": "x64" }, "sha512-MT6hQo9Kw/VuQUfX0fc0OpUdZesQruT0UNY9hxIcqcli7pbxMrvFBjkXo7oUb2151s/n+F4fyQOWvaR6zwxtDA=="], + + "nuxt/unplugin-vue-router/@vue-macros/common": ["@vue-macros/common@3.0.0-beta.16", "", { "dependencies": { "@vue/compiler-sfc": "^3.5.17", "ast-kit": "^2.1.1", "local-pkg": "^1.1.1", "magic-string-ast": "^1.0.0", "unplugin-utils": "^0.2.4" }, "peerDependencies": { "vue": "^2.7.0 || ^3.2.25" }, "optionalPeers": ["vue"] }, "sha512-8O2gWxWFiaoNkk7PGi0+p7NPGe/f8xJ3/INUufvje/RZOs7sJvlI1jnR4lydtRFa/mU0ylMXUXXjSK0fHDEYTA=="], + "postcss-svgo/svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], "prebuild-install/tar-fs/tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], @@ -2594,6 +2723,8 @@ "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@intlify/vue-i18n-extensions/vue-i18n/@intlify/core-base/@intlify/message-compiler": ["@intlify/message-compiler@10.0.8", "", { "dependencies": { "@intlify/shared": "10.0.8", "source-map-js": "^1.0.2" } }, "sha512-DV+sYXIkHVd5yVb2mL7br/NEUwzUoLBsMkV3H0InefWgmYa34NLZUvMCGi5oWX+Hqr2Y2qUxnVrnOWF4aBlgWg=="], + "@unocss/cli/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "@unocss/vite/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], diff --git a/i18n/locales/en.json b/i18n/locales/en.json new file mode 100644 index 0000000..bf4e90b --- /dev/null +++ b/i18n/locales/en.json @@ -0,0 +1,4 @@ +{ + "back": "back", + "not-found": "Not found" +} diff --git a/i18n/locales/zh.json b/i18n/locales/zh.json new file mode 100644 index 0000000..4dfbadc --- /dev/null +++ b/i18n/locales/zh.json @@ -0,0 +1,4 @@ +{ + "back": "返回", + "not-found": "页面不存在" +} \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts index ed2b610..a1b2a1e 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -54,6 +54,14 @@ export default defineNuxtConfig({ themes: ["dark"], }, + i18n: { + locales: [ + { code: 'en', language: 'en-US', name: 'English', file: 'en.json' }, + { code: 'zh', language: 'zh-CN', name: '简体中文', file: 'zh.json' }, + ], + defaultLocale: 'zh', + }, + modules: [ "@nuxt/eslint", "@nuxt/fonts", @@ -64,5 +72,6 @@ export default defineNuxtConfig({ "@pinia/nuxt", "@unocss/nuxt", "@element-plus/nuxt", + "@nuxtjs/i18n", ], -}); +}); \ No newline at end of file diff --git a/package.json b/package.json index 288d16a..9f3fd51 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@nuxt/icon": "2.0.0", "@nuxt/image": "1.11.0", "@nuxt/test-utils": "3.19.2", + "@nuxtjs/i18n": "10.0.5", "@pinia/nuxt": "^0.11.2", "@unocss/nuxt": "^66.4.2", "@vueuse/nuxt": "^13.6.0", From 3e32e0f59b9ee7d1dcb441bd70cc9e5a204e9ade Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Wed, 13 Aug 2025 17:01:58 +0800 Subject: [PATCH 04/40] =?UTF-8?q?Fix:=20=E7=A7=BB=E9=99=A4=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- uno.config.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/uno.config.ts b/uno.config.ts index d024e38..b4ab86b 100644 --- a/uno.config.ts +++ b/uno.config.ts @@ -4,7 +4,7 @@ import { presetIcons, presetTypography, presetUno, - presetWebFonts, + // presetWebFonts, transformerDirectives, transformerVariantGroup, } from 'unocss' @@ -21,13 +21,14 @@ export default defineConfig({ scale: 1.2, }), presetTypography(), - presetWebFonts({ - fonts: { - sans: 'DM Sans', - serif: 'DM Serif Display', - mono: 'DM Mono', - }, - }), + // presetWebFonts({ + // provider: 'none', + // fonts: { + // sans: 'DM Sans', + // serif: 'DM Serif Display', + // mono: 'DM Mono', + // }, + // }), ], transformers: [ transformerDirectives(), From 2fa89460ebecc2b8577b4f25f6ab91daf5356ea7 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Thu, 14 Aug 2025 13:30:32 +0800 Subject: [PATCH 05/40] =?UTF-8?q?Feature:=20=E6=B7=BB=E5=8A=A0Layout?= =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.vue | 4 +++- app/components/JinshenHeader.vue | 22 ++++++++++++---------- app/layouts/default.vue | 10 ++++++++++ i18n/locales/en.json | 7 ++++++- i18n/locales/zh.json | 11 ++++++++--- 5 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 app/layouts/default.vue diff --git a/app/app.vue b/app/app.vue index 2b1be09..8e7f33e 100644 --- a/app/app.vue +++ b/app/app.vue @@ -1,5 +1,7 @@-diff --git a/app/components/JinshenHeader.vue b/app/components/JinshenHeader.vue index 6f079ed..c98d003 100644 --- a/app/components/JinshenHeader.vue +++ b/app/components/JinshenHeader.vue @@ -7,32 +7,32 @@+ + + - 产品中心 + {{ $t('productions') }} - 解决方案 + {{ $t('solutions') }} - 服务支持 + {{ $t('support') }} - 关于我们 + {{ $t('about-us') }} - +v-model="searchQuery" class="search-input" :placeholder="$t('search-placeholder')" + :prefix-icon="Search" clearable @keyup.enter="handleSearch" /> + @@ -43,6 +43,8 @@ v-model="searchQuery" class="search-input" placeholder="搜索..." :prefix-icon= \ No newline at end of file diff --git a/app/components/JinshenHeader.vue b/app/components/JinshenHeader.vue index c98d003..32a23ad 100644 --- a/app/components/JinshenHeader.vue +++ b/app/components/JinshenHeader.vue @@ -31,7 +31,7 @@ v-model="searchQuery" class="search-input" :placeholder="$t('search-placeholder' - 中文 -English +中文 +English - @@ -51,7 +51,7 @@ const handleSearch = () => { if (searchQuery.value.trim()) { // 这里可以添加搜索逻辑,例如导航到搜索结果页面 console.log('Searching for:', searchQuery.value); - // 示例:导航到搜索结果页面 +// 示例:导航到搜索结果页面 // router.push({ path: '/search', query: { q: searchQuery.value } }); } } diff --git a/i18n/i18n.config.ts b/i18n/i18n.config.ts new file mode 100644 index 0000000..7aa410a --- /dev/null +++ b/i18n/i18n.config.ts @@ -0,0 +1,5 @@ +export default defineI18nConfig(() => ({ + legacy: false, + locale: 'zh', + fallbackLocale: 'zh', +})) \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts index a1b2a1e..4cc0cf7 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -55,11 +55,17 @@ export default defineNuxtConfig({ }, i18n: { + detectBrowserLanguage: { + useCookie: true, + cookieKey: 'i18n_redirected', + redirectOn: 'root' + }, locales: [ { code: 'en', language: 'en-US', name: 'English', file: 'en.json' }, { code: 'zh', language: 'zh-CN', name: '简体中文', file: 'zh.json' }, ], defaultLocale: 'zh', + langDir: 'locales' }, modules: [ From 1c06b377d08896622cefdfebd0e3fcf597aba0c1 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Fri, 15 Aug 2025 14:20:49 +0800 Subject: [PATCH 07/40] =?UTF-8?q?Feature:=E4=BA=A7=E5=93=81=E6=80=BB?= =?UTF-8?q?=E8=A7=88=E9=A1=B5=20&=20Strapi=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/JinshenFooter.vue | 275 ++++++++++++++++++++++++++++++ app/components/ProductionCard.vue | 29 ++++ app/layouts/default.vue | 3 + app/pages/index.vue | 77 ++++++++- app/pages/productions/index.vue | 62 +++++++ bun.lock | 5 + i18n.config.ts | 6 + i18n/locales/en.json | 26 ++- i18n/locales/zh.json | 22 ++- nuxt.config.ts | 26 ++- package.json | 1 + 11 files changed, 518 insertions(+), 14 deletions(-) create mode 100644 app/components/JinshenFooter.vue create mode 100644 app/components/ProductionCard.vue create mode 100644 app/pages/productions/index.vue create mode 100644 i18n.config.ts diff --git a/app/components/JinshenFooter.vue b/app/components/JinshenFooter.vue new file mode 100644 index 0000000..ec23c7a --- /dev/null +++ b/app/components/JinshenFooter.vue @@ -0,0 +1,275 @@ + + + + + + + diff --git a/app/components/ProductionCard.vue b/app/components/ProductionCard.vue new file mode 100644 index 0000000..fcf247e --- /dev/null +++ b/app/components/ProductionCard.vue @@ -0,0 +1,29 @@ + +中文 +简体中文 English + + + + + + + \ No newline at end of file diff --git a/app/layouts/default.vue b/app/layouts/default.vue index 4dc3181..c97a897 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -6,5 +6,8 @@+ + + + {{ name }} ++ +{{ description }}+ ++ + \ No newline at end of file diff --git a/app/pages/index.vue b/app/pages/index.vue index fc0f635..1ec4404 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,5 +1,76 @@ -+ -+ ++ + + \ No newline at end of file diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue new file mode 100644 index 0000000..74cca43 --- /dev/null +++ b/app/pages/productions/index.vue @@ -0,0 +1,62 @@ + ++- \ No newline at end of file + +{{ $t('company-name') }}
+{{ $t('company-description') }}
++ {{ $t('learn-more') }} + ++++ +{{ $t('productions') }}
+{{ $t('productions-desc') }}
+++ +{{ $t('solutions') }}
+{{ $t('solutions-desc') }}
+++{{ $t('support') }}
+{{ $t('support-desc') }}
+++ + + + + + + + \ No newline at end of file diff --git a/bun.lock b/bun.lock index 90e20f4..0ac2248 100644 --- a/bun.lock +++ b/bun.lock @@ -11,6 +11,7 @@ "@nuxt/image": "1.11.0", "@nuxt/test-utils": "3.19.2", "@nuxtjs/i18n": "10.0.5", + "@nuxtjs/strapi": "2.1.1", "@pinia/nuxt": "^0.11.2", "@unocss/nuxt": "^66.4.2", "@vueuse/nuxt": "^13.6.0", @@ -319,6 +320,8 @@ "@nuxtjs/i18n": ["@nuxtjs/i18n@10.0.5", "", { "dependencies": { "@intlify/core": "^11.1.11", "@intlify/h3": "^0.7.1", "@intlify/shared": "^11.1.11", "@intlify/unplugin-vue-i18n": "^6.0.8", "@intlify/utils": "^0.13.0", "@miyaneee/rollup-plugin-json5": "^1.2.0", "@nuxt/kit": "^4.0.3", "@rollup/plugin-yaml": "^4.1.2", "@vue/compiler-sfc": "^3.5.18", "cookie-es": "^2.0.0", "defu": "^6.1.4", "devalue": "^5.1.1", "h3": "^1.15.3", "knitwork": "^1.2.0", "magic-string": "^0.30.17", "mlly": "^1.7.4", "nuxt-define": "^1.0.0", "oxc-parser": "^0.81.0", "oxc-transform": "^0.81.0", "oxc-walker": "^0.4.0", "pathe": "^2.0.3", "typescript": "^5.9.2", "ufo": "^1.6.1", "unplugin": "^2.3.5", "unplugin-vue-router": "^0.14.0", "unstorage": "^1.16.1", "vue-i18n": "^11.1.11", "vue-router": "^4.5.1" } }, "sha512-rLQc/nEVWL0xMJf1a6+ndUpdQtxPBFzm4jeqG4o7HuXtDLn4HOe1dPdu7AsaIqq7EcsEjZ5T4mX4X8XnB8cT0Q=="], + "@nuxtjs/strapi": ["@nuxtjs/strapi@2.1.1", "", { "dependencies": { "@nuxt/kit": "^3.17.5", "defu": "^6.1.4", "graphql": "^16.11.0", "qs": "^6.14.0", "ufo": "^1.6.1" } }, "sha512-CNcsEqkhto4P5SEA4ZuRrGdfOT7swsZp/hvR7SNG3OW3J8eHJythE68P1LaszCq5uvYlg7j90Iue534sEdedtQ=="], + "@oxc-minify/binding-android-arm64": ["@oxc-minify/binding-android-arm64@0.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-OLelUqrLkSJwNyjLZHgpKy9n0+zHQiMX8A0GFovJIwhgfPxjT/mt2JMnGkSoDlTnf9cw6nvALFzCsJZLTyl8gg=="], "@oxc-minify/binding-darwin-arm64": ["@oxc-minify/binding-darwin-arm64@0.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7vJjhKHGfFVit3PCerbnrXQI0XgmmgV5HTNxlNsvxcmjPRIoYVkuwwRkiBsxO4RiBwvRRkAFPop3fY/gpuflJA=="], @@ -1277,6 +1280,8 @@ "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], + "graphql": ["graphql@16.11.0", "", {}, "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw=="], + "gzip-size": ["gzip-size@7.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA=="], "h3": ["h3@1.15.4", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ=="], diff --git a/i18n.config.ts b/i18n.config.ts new file mode 100644 index 0000000..2486bd1 --- /dev/null +++ b/i18n.config.ts @@ -0,0 +1,6 @@ +// @ts-expect-error - defineI18nConfig is provided by @nuxtjs/i18n +export default defineI18nConfig(() => ({ + legacy: false, + locale: 'zh', + fallbackLocale: 'zh' +})) diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 8616473..b4b9992 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -1,9 +1,29 @@ { - "back": "back", - "not-found": "Not found", + "back": "Back", + "not-found": "Page Not Found", "productions": "Productions", "solutions": "Solutions", "support": "Support", "about-us": "About Us", - "search-placeholder": "Search..." + "search-placeholder": "Search...", + "company-name": "Jinshen Machinary Manufacturing Co., Ltd.", + "company-description": "We specialize in manufacturing a range of paper tube and can equipment, integrating design, manufacturing, sales, and service.", + "learn-more": "Learn More", + "productions-desc": "We provide high-quality product solutions to meet various business needs.", + "solutions-desc": "Providing customized technology solutions for enterprises to accelerate digital transformation.", + "support-desc": "24/7 professional technical support to ensure stable operation of your business.", + "quick-links": "Quick Links", + "navigation": { + "home": "Home" + }, + "contact-info": "Contact Us", + "telephone": "Telephone", + "email": "Email", + "address": "Address", + "company-address": "No. 689 Qiushi Road, Wutong Industrial Zone, Tongxiang City, Zhejiang Province, China", + "follow-us": "Follow Us", + "all-rights-reserved": "All rights reserved", + "privacy-policy": "Privacy Policy", + "terms-of-service": "Terms of Service", + "sitemap": "Sitemap" } diff --git a/i18n/locales/zh.json b/i18n/locales/zh.json index c19e0f7..08dd0ce 100644 --- a/i18n/locales/zh.json +++ b/i18n/locales/zh.json @@ -5,5 +5,25 @@ "solutions": "解决方案", "support": "服务支持", "about-us": "关于我们", - "search-placeholder": "搜索..." + "search-placeholder": "搜索...", + "company-name": "金申机械制造有限公司", + "company-description": "专业生产一系列纸管、纸罐设备,集设计、制造、销售、服务于一体。", + "learn-more": "了解更多", + "productions-desc": "我们提供高质量的产品解决方案,满足各种业务需求。", + "solutions-desc": "为企业提供定制化的技术解决方案,助力数字化转型。", + "support-desc": "7x24小时专业技术支持,确保您的业务稳定运行。", + "quick-links": "快速链接", + "navigation": { + "home": "首页" + }, + "contact-info": "联系我们", + "telephone": "电话", + "email": "邮箱", + "address": "地址", + "company-address": "浙江省桐乡市梧桐工业区秋实路689号", + "follow-us": "关注我们", + "all-rights-reserved": "版权所有", + "privacy-policy": "隐私政策", + "terms-of-service": "服务条款", + "sitemap": "网站地图" } diff --git a/nuxt.config.ts b/nuxt.config.ts index 4cc0cf7..2fc0e3d 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -57,17 +57,28 @@ export default defineNuxtConfig({ i18n: { detectBrowserLanguage: { useCookie: true, - cookieKey: 'i18n_redirected', - redirectOn: 'root' + cookieKey: "i18n_redirected", + redirectOn: "root", }, locales: [ - { code: 'en', language: 'en-US', name: 'English', file: 'en.json' }, - { code: 'zh', language: 'zh-CN', name: '简体中文', file: 'zh.json' }, + { code: "en", language: "en-US", name: "English", file: "en.json" }, + { code: "zh", language: "zh-CN", name: "简体中文", file: "zh.json" }, ], - defaultLocale: 'zh', - langDir: 'locales' + defaultLocale: "zh", + langDir: "locales", }, + strapi: { + url: process.env.STRAPI_URL || "http://localhost:1337", + token: process.env.STRAPI_TOKEN || undefined, + prefix: "/api", + admin: "/admin", + version: "v5", + cookie: {}, + cookieName: "strapi_jwt", + }, + + modules: [ "@nuxt/eslint", "@nuxt/fonts", @@ -79,5 +90,6 @@ export default defineNuxtConfig({ "@unocss/nuxt", "@element-plus/nuxt", "@nuxtjs/i18n", + "@nuxtjs/strapi", ], -}); \ No newline at end of file +}); diff --git a/package.json b/package.json index 9f3fd51..17a91cd 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@nuxt/image": "1.11.0", "@nuxt/test-utils": "3.19.2", "@nuxtjs/i18n": "10.0.5", + "@nuxtjs/strapi": "2.1.1", "@pinia/nuxt": "^0.11.2", "@unocss/nuxt": "^66.4.2", "@vueuse/nuxt": "^13.6.0", From c77b2282da413212455f20325d849fe6e729d2f0 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Fri, 15 Aug 2025 16:00:55 +0800 Subject: [PATCH 08/40] =?UTF-8?q?Feature:=20=E4=BA=A7=E5=93=81=E9=A1=B5?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/JinshenHeader.vue | 17 ++- app/components/ProductionCard.vue | 55 +++++++- app/pages/productions/[...slug].vue | 194 ++++++++++++++++++++++++++++ app/pages/productions/example.vue | 95 ++++++++++++++ app/pages/productions/index.vue | 54 ++++---- i18n/locales/en.json | 8 +- i18n/locales/zh.json | 8 +- 7 files changed, 397 insertions(+), 34 deletions(-) create mode 100644 app/pages/productions/[...slug].vue create mode 100644 app/pages/productions/example.vue diff --git a/app/components/JinshenHeader.vue b/app/components/JinshenHeader.vue index 32a23ad..3df3556 100644 --- a/app/components/JinshenHeader.vue +++ b/app/components/JinshenHeader.vue @@ -1,8 +1,11 @@+ -- +- +++ ++ @@ -51,7 +54,7 @@ const handleSearch = () => { if (searchQuery.value.trim()) { // 这里可以添加搜索逻辑,例如导航到搜索结果页面 console.log('Searching for:', searchQuery.value); -// 示例:导航到搜索结果页面 + // 示例:导航到搜索结果页面 // router.push({ path: '/search', query: { q: searchQuery.value } }); } } @@ -72,6 +75,12 @@ const handleSearch = () => { align-items: center; } +.logo-link { + display: flex; + align-items: center; + text-decoration: none; +} + .website-logo { height: 64px; width: auto; diff --git a/app/components/ProductionCard.vue b/app/components/ProductionCard.vue index fcf247e..e7e4ae8 100644 --- a/app/components/ProductionCard.vue +++ b/app/components/ProductionCard.vue @@ -1,5 +1,5 @@ - + @@ -14,16 +14,59 @@ \ No newline at end of file diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue new file mode 100644 index 0000000..bcdaf4c --- /dev/null +++ b/app/pages/productions/[...slug].vue @@ -0,0 +1,194 @@ + + ++ + + + + diff --git a/app/pages/productions/example.vue b/app/pages/productions/example.vue new file mode 100644 index 0000000..53c4457 --- /dev/null +++ b/app/pages/productions/example.vue @@ -0,0 +1,95 @@ + ++ ++ + ++ + + +{{ $t('navigation.home') + }} +{{ $t('productions') + }} +{{ production.title }} +++ + ++++ ++{{ production.title }}
+{{ production.summary }}
++++ ++ +{{ production.title }}
+{{ production.summary }}
++ + ++ + +{{ $t('loading') }} ++++ + ++ {{ $t('back-to-productions') }} + + +++ + + + + \ No newline at end of file diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue index 74cca43..bbd4f2d 100644 --- a/app/pages/productions/index.vue +++ b/app/pages/productions/index.vue @@ -1,10 +1,15 @@+++ + + ++ {{ $t('navigation.home') }} + ++ {{ $t('productions') }} + ++ 示例 + +++ ++++ ++产品名称
+产品描述...
++++ ++ +这里是产品的详细描述内容...
++ +这里是产品的技术规格内容...
++ +这里是产品的常见问题内容...
++ +这里是产品的相关资料内容...
+- @@ -15,38 +20,43 @@ const { find } = useStrapi() const baseUrl = 'http://192.168.86.5:1337'; class ProductionInfo { + id: number; title: string; summary: string; image_url: string; + slug?: string; - constructor(title: string, summary: string, image_url: string) { + constructor(id: number, title: string, summary: string, image_url: string, slug?: string) { + this.id = id; this.title = title; this.summary = summary; this.image_url = baseUrl + image_url; + this.slug = slug; } } -interface StrapiProduction { - title: string; - summary: string; - production_image?: { - url: string; - }; -} - const productions = ref+ v-for="production in productions" + :id="production.id" + :key="production.id" + :slug="production.slug" + :image-url="production.image_url" + :name="production.title" + :description="production.summary" + /> (); onMounted(async () => { - const response = await find ('productions', { - populate: '*', - }) - productions.value = response.data.map((item: StrapiProduction) => { - return new ProductionInfo( - item.title, - item.summary, - item.production_image?.url || '' - ); - }); + try { + + const response = await find('productions', { + populate: '*', + }) as any + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + productions.value = response.data.map((item: any) => { + return new ProductionInfo( + item.id, + item.title, + item.summary, + item.production_image?.url || '', + item.documentId ? item.documentId : undefined + ); + }); + } catch (error) { + console.error('Failed to fetch productions:', error) + } }); diff --git a/i18n/locales/en.json b/i18n/locales/en.json index b4b9992..5339534 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -25,5 +25,11 @@ "all-rights-reserved": "All rights reserved", "privacy-policy": "Privacy Policy", "terms-of-service": "Terms of Service", - "sitemap": "Sitemap" + "sitemap": "Sitemap", + "product-details": "Product Details", + "product-not-found": "Product Not Found", + "product-not-found-desc": "Sorry, the product you are looking for does not exist or has been removed.", + "back-to-productions": "Back to Products", + "no-content-available": "No detailed information available", + "loading": "Loading..." } diff --git a/i18n/locales/zh.json b/i18n/locales/zh.json index 08dd0ce..501db3d 100644 --- a/i18n/locales/zh.json +++ b/i18n/locales/zh.json @@ -25,5 +25,11 @@ "all-rights-reserved": "版权所有", "privacy-policy": "隐私政策", "terms-of-service": "服务条款", - "sitemap": "网站地图" + "sitemap": "网站地图", + "product-details": "产品详情", + "product-not-found": "产品未找到", + "product-not-found-desc": "抱歉,您访问的产品不存在或已被删除。", + "back-to-productions": "返回产品列表", + "no-content-available": "暂无详细信息", + "loading": "加载中..." } From daa91ac56f9f7c62298e90c4101e65d2976ce94a Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Sat, 16 Aug 2025 13:57:17 +0800 Subject: [PATCH 09/40] =?UTF-8?q?Feature:=20=E9=A1=B5=E9=9D=A2=E5=86=85Mar?= =?UTF-8?q?kdown=E6=B8=B2=E6=9F=93=20&=20=E8=A7=84=E6=A0=BC=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.vue | 19 +++++++++++ app/components/MarkdownRenderer.vue | 36 +++++++++++++++++++++ app/components/ProductionCard.vue | 7 ++-- app/components/SpecTable.vue | 43 +++++++++++++++++++++++++ app/layouts/default.vue | 32 +++++++++++++++--- app/pages/productions/[...slug].vue | 50 ++++++++++++++++------------- app/pages/productions/index.vue | 29 +++++++++++++---- app/utils/markdown.ts | 15 +++++++++ bun.lock | 23 +++++++++++++ package.json | 3 ++ 10 files changed, 221 insertions(+), 36 deletions(-) create mode 100644 app/components/MarkdownRenderer.vue create mode 100644 app/components/SpecTable.vue create mode 100644 app/utils/markdown.ts diff --git a/app/app.vue b/app/app.vue index b5e4de5..8dc70d3 100644 --- a/app/app.vue +++ b/app/app.vue @@ -13,6 +13,8 @@ import { ElConfigProvider } from 'element-plus'; import zhCn from 'element-plus/es/locale/lang/zh-cn'; import en from 'element-plus/es/locale/lang/en'; +const { login } = useStrapiAuth(); + const { locale } = useI18n(); const elementPlusLocales = { @@ -21,4 +23,21 @@ const elementPlusLocales = { } const elementPlusLocale = computed(() => elementPlusLocales[locale.value] || zhCn); + +onMounted(() => { + // 检查用户是否已登录 + const user = useStrapiUser(); + if (!user.value) { + // 如果未登录,重定向到登录页面 + login({ identifier: 'remilia', password: 'huanshuo51' }) + .then(() => { + console.log('Login successful'); + }) + .catch((error) => { + console.error('Login failed:', error); + }); + } else { + console.log('User is already logged in:', user.value); + } +}); \ No newline at end of file diff --git a/app/components/MarkdownRenderer.vue b/app/components/MarkdownRenderer.vue new file mode 100644 index 0000000..e48fc98 --- /dev/null +++ b/app/components/MarkdownRenderer.vue @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/components/ProductionCard.vue b/app/components/ProductionCard.vue index e7e4ae8..9eff76f 100644 --- a/app/components/ProductionCard.vue +++ b/app/components/ProductionCard.vue @@ -1,7 +1,7 @@ - + @@ -36,10 +36,11 @@ const handleClick = () => { \ No newline at end of file diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue index bcdaf4c..3517f05 100644 --- a/app/pages/productions/[...slug].vue +++ b/app/pages/productions/[...slug].vue @@ -13,7 +13,7 @@-+ {{ production.title }}
@@ -25,10 +25,11 @@@@ -36,7 +37,7 @@- +{{ production.title }}
-{{ production.summary }}
++ + - -@@ -53,20 +54,23 @@ diff --git a/app/composables/useLocalizations.ts b/app/composables/useLocalizations.ts new file mode 100644 index 0000000..ce613f8 --- /dev/null +++ b/app/composables/useLocalizations.ts @@ -0,0 +1,39 @@ +import type { StrapiLocale } from '@nuxtjs/strapi'; +import type { Language as ElementLanguage } from 'element-plus/es/locale'; +import zhCn from 'element-plus/es/locale/lang/zh-cn'; +import en from 'element-plus/es/locale/lang/en'; + +// Strapi本地化映射 +export const strapiLocales: Record{{ $t('loading') }} + {{ $t('loading') }}= { + 'zh': 'zh-Hans', + 'en': 'en' +} + +// Element Plus本地化映射 +export const elementPlusLocales: Record = { + 'zh': zhCn, + 'en': en +} + +export const useLocalizations = () => { + const { locale } = useI18n(); + + // 获取Strapi本地化代码 + const getStrapiLocale = (nuxtLocale?: string): StrapiLocale => { + const currentLocale = nuxtLocale || locale.value; + return strapiLocales[currentLocale] || 'zh-Hans'; + } + + // 获取Element Plus本地化 + const getElementPlusLocale = (nuxtLocale?: string) => { + const currentLocale = nuxtLocale || locale.value; + const elementPlusLocale = elementPlusLocales[currentLocale] || elementPlusLocales['zh']; + return elementPlusLocale; + } + + return { + locale: readonly(locale), + getStrapiLocale, + getElementPlusLocale, + } +} \ No newline at end of file diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue index 3517f05..0cb88c1 100644 --- a/app/pages/productions/[...slug].vue +++ b/app/pages/productions/[...slug].vue @@ -28,7 +28,7 @@ - + @@ -37,7 +37,12 @@ - {{ $t('loading') }} +@@ -69,6 +74,9 @@ interface ProductionDetails { const route = useRoute() const { findOne } = useStrapi() +const { getStrapiLocale } = useLocalizations() + +const strapiLocale = getStrapiLocale() const production = ref+ + ++ + (null) const pending = ref(true) @@ -78,11 +86,29 @@ const activeName = ref('details') // 默认选中概览标签 // 获取路由参数(slug 或 id) const productionParam = computed(() => route.params.slug as string) +const parsedSpecs = computed(() => { + if (!production.value?.production_specs) return JSON.parse('{}') + + const specs = production.value.production_specs + + if (typeof specs === 'string') { + try { + return JSON.parse(specs) + } catch (error) { + console.error('Failed to parse production_specs:', error) + return specs + } + } + + return specs +}) + onMounted(async () => { try { const response = await findOne ('productions', productionParam.value, { populate: '*', + locale: strapiLocale, }) if (response.data) { @@ -95,8 +121,8 @@ onMounted(async () => { production_specs: item.production_specs || '', production_image: { url: item.production_image?.url - ? `http://192.168.86.5:1337${item.production_image.url}` - : '' + ? `http://192.168.86.5:1337${item.production_image.url}` + : '' }, documentId: item.documentId || '', } @@ -176,7 +202,7 @@ useHead({ display: flex; justify-content: center; align-items: center; - height: 300px; + margin-top: 1rem; } .not-found { diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue index 5ffe81a..76745a3 100644 --- a/app/pages/productions/index.vue +++ b/app/pages/productions/index.vue @@ -15,10 +15,10 @@ \ No newline at end of file diff --git a/app/pages/productions/example.vue b/app/pages/productions/example.vue deleted file mode 100644 index 53c4457..0000000 --- a/app/pages/productions/example.vue +++ /dev/null @@ -1,95 +0,0 @@ - - -- - - - - \ No newline at end of file diff --git a/app/types/strapi/index.ts b/app/types/strapi/index.ts index 45240a7..c04ebf1 100644 --- a/app/types/strapi/index.ts +++ b/app/types/strapi/index.ts @@ -1,2 +1,3 @@ export * from './common'; -export * from './production'; \ No newline at end of file +export * from './production'; +export * from './singleTypes'; \ No newline at end of file diff --git a/app/types/strapi/singleTypes.ts b/app/types/strapi/singleTypes.ts new file mode 100644 index 0000000..77c5d3f --- /dev/null +++ b/app/types/strapi/singleTypes.ts @@ -0,0 +1,3 @@ +export interface StrapiCompanyProfile extends StrapiEntity { + content: string; +} \ No newline at end of file diff --git a/app/utils/markdown.ts b/app/utils/markdown.ts index 583f0a9..43431e8 100644 --- a/app/utils/markdown.ts +++ b/app/utils/markdown.ts @@ -1,5 +1,4 @@ import MarkdownIt from 'markdown-it'; -import DOMPurify from 'dompurify'; const md = new MarkdownIt({ html: true, @@ -10,6 +9,13 @@ const md = new MarkdownIt({ export function renderMarkdown(content: string): string { const dirtyHtml = md.render(content); - return DOMPurify.sanitize(dirtyHtml) + + if (typeof window !== 'undefined') { + import('dompurify').then((DOMPurify => { + return DOMPurify.default.sanitize(dirtyHtml) + })) + } + + return dirtyHtml } From 14152310b5ed34413a8df81fe727fe534f23bd6d Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Wed, 20 Aug 2025 11:24:59 +0800 Subject: [PATCH 16/40] =?UTF-8?q?Feature:=20=E8=81=94=E7=B3=BB=E6=88=91?= =?UTF-8?q?=E4=BB=AC=E7=95=8C=E9=9D=A2=20&=20=E4=BA=A7=E5=93=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E6=B7=BBCMS=E7=AD=9B=E9=80=89=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/pages/about/contact-us.vue | 61 +++++++++++++++++++++++++++++++-- app/pages/productions/index.vue | 21 ++++++------ app/types/strapi/production.ts | 1 + app/types/strapi/singleTypes.ts | 4 +++ 4 files changed, 75 insertions(+), 12 deletions(-) diff --git a/app/pages/about/contact-us.vue b/app/pages/about/contact-us.vue index 6f89abe..06f70a2 100644 --- a/app/pages/about/contact-us.vue +++ b/app/pages/about/contact-us.vue @@ -1,3 +1,60 @@ ---- - - -- {{ $t('navigation.home') }} - -- {{ $t('productions') }} - -- 示例 - --- ---- --产品名称
-产品描述...
---- -- -这里是产品的详细描述内容...
-- -这里是产品的技术规格内容...
-- -这里是产品的常见问题内容...
-- -这里是产品的相关资料内容...
-还没做
- \ No newline at end of file +++ + + + + \ No newline at end of file diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue index 453cbdf..9ac65df 100644 --- a/app/pages/productions/index.vue +++ b/app/pages/productions/index.vue @@ -1,14 +1,9 @@+ + ++ {{ $t('navigation.home') }} + ++ {{ $t('contact-info') }} + ++++ @@ -26,7 +21,12 @@ onMounted(async () => { try { const response = await find+v-for="production in productions" :id="production.id" :key="production.id" + :slug="production.documentId" :image-url="useStrapiMedia(production?.production_image?.url || '')" + :name="production.title" :description="production.summary || ''" /> ('productions', { populate: '*', - locale: strapiLocale, // 使用简体中文 + filters: { + show_in_production_list: { + $eq: true, // 只获取在产品列表中显示的产品 + }, + }, + locale: strapiLocale, }) productions.value = response.data.map((item: Production) => ({ title: item.title, @@ -35,7 +35,8 @@ onMounted(async () => { production_image: item.production_image, production_details: item.production_details, production_specs: item.production_specs, - documentId: item.documentId + documentId: item.documentId, + show_in_production_list: item.show_in_production_list, })) } catch (error) { console.error('Failed to fetch productions:', error) diff --git a/app/types/strapi/production.ts b/app/types/strapi/production.ts index b5dcc0e..7addc89 100644 --- a/app/types/strapi/production.ts +++ b/app/types/strapi/production.ts @@ -12,4 +12,5 @@ export interface Production extends StrapiEntity { production_details?: string; production_specs?: string | object; documents?: StrapiMedia[]; + show_in_production_list?: boolean; } \ No newline at end of file diff --git a/app/types/strapi/singleTypes.ts b/app/types/strapi/singleTypes.ts index 77c5d3f..d4da025 100644 --- a/app/types/strapi/singleTypes.ts +++ b/app/types/strapi/singleTypes.ts @@ -1,3 +1,7 @@ export interface StrapiCompanyProfile extends StrapiEntity { content: string; +} + +export interface StrapiContactInfo extends StrapiEntity { + content: string; } \ No newline at end of file From 8944054609913e1434ef93dfba7eac8fe4583958 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Wed, 20 Aug 2025 16:54:51 +0800 Subject: [PATCH 17/40] =?UTF-8?q?Fix:=20=E4=BF=AE=E6=AD=A3=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E8=A7=84=E6=A0=BC=E5=8F=82=E6=95=B0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/SpecTable.vue | 32 +++--------- app/pages/productions/[...slug].vue | 47 +++++++----------- app/pages/productions/index.vue | 77 +++++++++++++++++++++++------ app/types/strapi/common.ts | 36 +++++++------- app/types/strapi/production.ts | 24 ++++++--- 5 files changed, 123 insertions(+), 93 deletions(-) diff --git a/app/components/SpecTable.vue b/app/components/SpecTable.vue index 1e85218..dacd7c6 100644 --- a/app/components/SpecTable.vue +++ b/app/components/SpecTable.vue @@ -1,19 +1,10 @@ -- + + @@ -24,20 +15,13 @@ \ No newline at end of file diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue index 42f76ef..3e6c7cf 100644 --- a/app/pages/productions/[...slug].vue +++ b/app/pages/productions/[...slug].vue @@ -13,7 +13,9 @@ - - - {{ subValue }} ---+-
-- - {{ index }}: {{ item }} -
-+ {{ subItem.value }} -+ diff --git a/app/components/JinshenHeader.vue b/app/components/JinshenHeader.vue index d31f081..1083f90 100644 --- a/app/components/JinshenHeader.vue +++ b/app/components/JinshenHeader.vue @@ -10,16 +10,16 @@{{ production.title }}
@@ -28,7 +30,7 @@- + @@ -59,10 +61,11 @@ \ No newline at end of file diff --git a/app/types/strapi/common.ts b/app/types/strapi/common.ts index a6c1c52..6979b7e 100644 --- a/app/types/strapi/common.ts +++ b/app/types/strapi/common.ts @@ -1,19 +1,19 @@ export interface StrapiEntity { - id?: number; - documentId?: string; - createdAt?: string; - updatedAt?: string; - publishedAt?: string; - locale?: string; + id: number; + documentId: string; + createdAt: string; + updatedAt: string; + publishedAt: string; + locale: string; } export interface StrapiMedia { id: number; url: string; - ext?: string; - name?: string; - alternativeText?: string; - caption?: string; + ext: string; + name: string; + alternativeText: string; + caption: string; } export interface StrapiImageFormat { @@ -24,19 +24,19 @@ export interface StrapiImageFormat { } export interface StrapiImage extends StrapiMedia { - width?: number; - height?: number; - formats?: { - small?: StrapiImageFormat; - medium?: StrapiImageFormat; - thumbnail?: StrapiImageFormat; + width: number; + height: number; + formats: { + small: StrapiImageFormat; + medium: StrapiImageFormat; + thumbnail: StrapiImageFormat; } } export interface StrapiResponse { data: T; - meta?: { - pagination?: { + meta: { + pagination: { page: number; pageSize: number; pageCount: number; diff --git a/app/types/strapi/production.ts b/app/types/strapi/production.ts index 7addc89..84bf80e 100644 --- a/app/types/strapi/production.ts +++ b/app/types/strapi/production.ts @@ -4,13 +4,23 @@ export interface ProductionType extends StrapiEntity { type: string; } +export interface ProductionSpecItem { + label: string; + value: string; +} + +export interface ProductionSpecGroup { + title: string; + items: ProductionSpecItem[]; +} + export interface Production extends StrapiEntity { title: string; - summary?: string; - production_type?: ProductionType; - production_image?: StrapiImage; - production_details?: string; - production_specs?: string | object; - documents?: StrapiMedia[]; - show_in_production_list?: boolean; + summary: string; + production_type: ProductionType; + production_image: StrapiImage; + production_details: string; + production_specs: ProductionSpecGroup[]; + documents: StrapiMedia[]; + show_in_production_list: boolean; } \ No newline at end of file From 0a31a1fa85a143ceda5e1646d0ebc8f7a9637d58 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Thu, 21 Aug 2025 13:22:38 +0800 Subject: [PATCH 18/40] =?UTF-8?q?Fix:=20=E4=BC=98=E5=8C=96=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/pages/productions/[...slug].vue | 2 -- app/pages/productions/index.vue | 9 ++++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue index 3e6c7cf..9972f6b 100644 --- a/app/pages/productions/[...slug].vue +++ b/app/pages/productions/[...slug].vue @@ -95,9 +95,7 @@ onMounted(async () => { production.value = { ...item, } - console.log('Production details:', production.value) } - console.log('Parsed production:', production.value?.production_specs) } catch (error) { console.error('Failed to fetch production:', error) } finally { diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue index 517b759..455cbcc 100644 --- a/app/pages/productions/index.vue +++ b/app/pages/productions/index.vue @@ -48,7 +48,14 @@ const groupedProductions = computed(() => { onMounted(async () => { try { const response = await find ('productions', { - populate: '*', + populate: { + production_image: { + populate: '*', + }, + production_type: { + populate: '*', + } + }, filters: { show_in_production_list: { $eq: true, // 只获取在产品列表中显示的产品 From 2fe87975518a01a4e18babc0cdd9e1f3ed64cec5 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Thu, 21 Aug 2025 14:26:58 +0800 Subject: [PATCH 19/40] =?UTF-8?q?Feature:=20=E4=BA=A7=E5=93=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E9=A1=B5=E5=A4=B4=20&=20Markdown?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=99=A8=E5=A2=9E=E5=8A=A0=E5=9B=BE=E5=83=8F?= =?UTF-8?q?Url=E8=BD=AC=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/JinshenFooter.vue | 8 ++--- app/components/JinshenHeader.vue | 8 ++--- app/components/MarkdownRenderer.vue | 18 ++++++---- app/pages/productions/index.vue | 52 ++++++++++++++++++++++------- app/utils/markdown.ts | 13 ++++++++ i18n/locales/en.json | 13 ++++---- i18n/locales/zh.json | 13 ++++---- 7 files changed, 86 insertions(+), 39 deletions(-) diff --git a/app/components/JinshenFooter.vue b/app/components/JinshenFooter.vue index f2c6ea8..d065f20 100644 --- a/app/components/JinshenFooter.vue +++ b/app/components/JinshenFooter.vue @@ -20,16 +20,16 @@ {{ $t('navigation.home') }} - {{ $t('productions') }} +{{ $t('navigation.productions') }} - {{ $t('solutions') }} +{{ $t('navigation.solutions') }} - {{ $t('support') }} +{{ $t('navigation.support') }} - {{ $t('about-us') }} +{{ $t('navigation.about-us') }} diff --git a/app/components/MarkdownRenderer.vue b/app/components/MarkdownRenderer.vue index 8c09014..eb09b74 100644 --- a/app/components/MarkdownRenderer.vue +++ b/app/components/MarkdownRenderer.vue @@ -1,7 +1,7 @@ - + \ No newline at end of file diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue index 455cbcc..0377ac5 100644 --- a/app/pages/productions/index.vue +++ b/app/pages/productions/index.vue @@ -1,18 +1,31 @@ - - {{ $t('productions') }} + {{ $t('navigation.productions') }} - {{ $t('solutions') }} + {{ $t('navigation.solutions') }} - {{ $t('support') }} + {{ $t('navigation.support') }} - {{ $t('about-us') }} + {{ $t('navigation.about-us') }} -@@ -78,6 +91,21 @@ onMounted(async () => { \ No newline at end of file diff --git a/app/pages/index.vue b/app/pages/index.vue index 1ec4404..a54d75b 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,29 +1,6 @@- + ++{{ $t('our-productions') }}
++ ++ +{{ $t('navigation.home') }} ++ +{{ $t('navigation.productions') }} +++ +- +-++ +- - + :slug="production.documentId" + :image-url="useStrapiMedia(production?.production_image?.url || '')" + :name="production.title" :description="production.summary || ''" /> +- -@@ -32,43 +9,6 @@ padding: 2rem; } -.hero-section { - text-align: center; - padding: 4rem 0; - background: linear-gradient(135deg, var(--el-color-primary-light-3), var(--el-color-primary)); - border-radius: 8px; - margin-bottom: 3rem; - color: white; -} - -.hero-section h1 { - font-size: 3rem; - margin-bottom: 1rem; -} - -.hero-section p { - font-size: 1.2rem; - margin-bottom: 2rem; -} - -.content-sections { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); - gap: 2rem; -} - -.section { - padding: 2rem; - background: var(--el-bg-color); - border-radius: 8px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); -} - -.section h2 { - color: var(--el-color-primary); - margin-bottom: 1rem; -} - .section p { color: var(--el-text-color-regular); line-height: 1.6; diff --git a/app/pages/productions/[...slug].vue b/app/pages/productions/[...slug].vue index 9972f6b..ee9a95b 100644 --- a/app/pages/productions/[...slug].vue +++ b/app/pages/productions/[...slug].vue @@ -5,7 +5,7 @@-- -{{ $t('company-name') }}
-{{ $t('company-description') }}
-- {{ $t('learn-more') }} - --+-- -{{ $t('productions') }}
-{{ $t('productions-desc') }}
--- -{{ $t('solutions') }}
-{{ $t('solutions-desc') }}
---{{ $t('support') }}
-{{ $t('support-desc') }}
-主页还没做^^
diff --git a/app/pages/productions/index.vue b/app/pages/productions/index.vue index 0377ac5..c63baa4 100644 --- a/app/pages/productions/index.vue +++ b/app/pages/productions/index.vue @@ -3,10 +3,10 @@ {{ $t('navigation.home') }} -{{ $t('productions') + {{ $t('navigation.productions') }} {{ production.title }} {{ $t('our-productions') }}
- @@ -91,15 +91,19 @@ onMounted(async () => { \ No newline at end of file diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 26f0bc9..2d3f368 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -14,7 +14,8 @@ "productions": "Productions", "solutions": "Solutions", "support": "Support", - "about-us": "About Us" + "about-us": "About Us", + "contact-info": "Contact Info" }, "contact-info": "Contact Us", "telephone": "Telephone", @@ -32,5 +33,6 @@ "back-to-productions": "Back to Products", "no-content-available": "No detailed information available", "loading": "Loading...", - "our-productions": "Our Productions" + "our-productions": "Our Productions", + "get-our-solutions": "Get Our Solutions" } diff --git a/i18n/locales/zh.json b/i18n/locales/zh.json index 6bc4dcb..5705c85 100644 --- a/i18n/locales/zh.json +++ b/i18n/locales/zh.json @@ -14,7 +14,8 @@ "productions": "产品中心", "solutions": "解决方案", "support": "服务支持", - "about-us": "关于我们" + "about-us": "关于我们", + "contact-info": "联系信息" }, "contact-info": "联系我们", "telephone": "电话", @@ -32,5 +33,6 @@ "back-to-productions": "返回产品列表", "no-content-available": "暂无详细信息", "loading": "加载中...", - "our-productions": "我们的产品" + "our-productions": "我们的产品", + "get-our-solutions": "了解我们的解决方案" } 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 21/40] =?UTF-8?q?Feature:=20=E8=A7=A3=E5=86=B3=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E5=88=97=E8=A1=A8=20&=20=E7=BD=91=E9=A1=B5=E5=AD=97?= =?UTF-8?q?=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.home') }} + {{ $t('navigation.productions') }} + {{ $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 @@ - 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.contact-info') }} + + + {{ $t('navigation.contact-info') }} + - 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.home') }} + - {{ $t('navigation.about-us') }} + + + {{ $t('navigation.about-us') }} + - @@ -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 @@{{ $t('navigation.home') - }} -{{ $t('navigation.productions') - }} -{{ production.title }} ++ +{{ $t('navigation.home') }} ++ +{{ $t('navigation.productions') }} +{{ production.title }} + + \ 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 zcmZu#XE-+{{ $t('get-our-solutions') }}
+{{ $t('learn-our-solutions') }}
{{ $t('navigation.home') }} @@ -11,9 +11,87 @@++ ++ ++++ + ++++ 0jC=-I{C2Ew2L<>^&L b=Xwa&iRzV`le) H zsze955S>I{0+F*5!E;#|M(cw0^(Sgj5;^WK6n6P;dfay)=0UoNoTvqOd9C}_V(t8i z?_dd$BZ=Syf`Esfc33B(9zBuo5o7($l8fVB_kDbc_5H1Fl(+_}Tx)_7_pdJE?;f~` z;33z)@(A~@E`p!P<%qxuU|C%J#~sj)Xf!Z)#Ts|Kb0%%eTr0< lJFNT?L6}~7zfRstK0Px`>uZ64w>O>g;QuOygKvu8|OaTiZj1Vc%2=oK{ zz%O7uL=l96VIU1S3Q~h3U>fKK27@vHJ!k>igGJyp(Z2*{fL|bVU==tERR+r-FsMA> z0?vZ3z@K0y#F@BG8!;;ra0JVUoaR6KLZh8S(abPS7>yUW%hVFY0HfmUgS}>E&OEmy zB%fU5h0Qk2g=ldSVrQvM6=_hP#5rZJ5>G4Jjsgb|?-H?W;eV$w5C_x(Gr$qCK6TIr z#1X5h0XxAH2sh*|#2?ZKS%gYJ)uC?CIA}ZcfP{fWn8cnWourXuo0OMSpR|m0kaQJB z2SdROVBxU0uwgh1E(^a4PlbPhPr{GLP-OOGsbuf{$F0rCtq@B!d3$}1;bDw)8EBQT z3Joz*5w7+tG(+BN(U&rc21p~gi!EqNIgN`%j2XA%>f`8D>*CH$ON>pe_yvvsG*0N1 zYPkO@GOB)W`XQ=!NnY~F)WjhL7ryu5!NqZ&B&A&eb9AQD4rNdGi %3zrFnt |_rsZ?>H_sHZ&X|kAg_T$#k{=MSVugafDMeyXopNGAN z`zWDCXGIapy+VU5SNC=(I6IBrp_C&&XDKv~!Z&U(tLb|xnAOMN&abXT2%*r(BdgNm zysOg``{OcFcRp8BWTCfrU}Rr1A8(%B7~h$oIC1H!n@C81E|~C!!Qlb=`VVc{#I$0H zSvlK=7E5*(eF#`IV <)XJnr|DSoNC3U-Xe(heB5?-9=T6vVwf!=u$NVLB?A zO^>o^_h{k+_&XH*2^R_^5#^WXS6i9XTJ_y>ZogZsTaTzB#9a1y3^X;hRjgGbiZjks zLSUuW+!~Y>b>`0BSV!u(9$gBz7#Wa?N`7;gTmL$_VN&(NSo`P_)+ygs -0!$+2{I0Z1-D%rnbS@?~GL%$gOM^I7>}&xeVdx?S}-O z>28#_K~c`{LeQ5$GgiXFV#jYt$EE78KfJ7Za Hhs=qD!&7#7RGzFd}dPHDCX#5-a39$ z6Dv+K`<1I99n;Hg5&Mrn=3IU$eYOy^{3;&iP3lwarmUZD83jqDSlQntokdioCF6Dn zlj6T8RfaKXJT&^s7r(mK0%Yi23fV4r&OcqmY2Yp2-VywT71qEh8ThP(n$GH6yqMeS zeLAXCE!&sNz%=12m4F~EKV8)w+{}g}<+Z6XS+>e7B{%cbpAb>0z~(<{uv-XEHGC!C z^@S(W^Q>f%*9Y?~v%QmQkcC;UknWbX&zKoqq~htVDjzC>X!`1gaKNU>T~V4UPMiTC z-7ht#QNzn|;#9Z*3M=~@M3-beDtEP!vZx&pY%b$u_v8Oy&Jof0MH0;PMk+TT3#kd8 zKPTvukk-gV#@bk(=8T$HD8}Q49bPatI}Lbx)zy-iT+Q4p4Zgn<>!jA)vAG#P?dx}Y z?~tm+2)x~eN}zXVGFvXN8=3R{tfnKqykasq7-MKVv}Qatj>^@e%eAuYYU|M`YLDgN zZF@SdO@mjgK?u5v{L)1>9__Xd&5NN#+cqt4MkYE|4feto%4}Zn%wdFn*a>tpaNlW( zyKjmRW`(qrh?^$do sNZ^3V(uo<8(sIQRmk3o8z0jk4&?kO-TpXOwwat8N6eDb=Sa`HLvQy>dJEpgk@Y1 zFB3s4(tjT_YdxaeRJ*Oannj;bY5J11cTLoZ(b(XC;hI%)$MCym$vW=Q8D`ATA^IuJ zhv5Ld4W0Dnl;N0DOgP74D06hb(!M(DSH^FAV@y2;ANziiW<<~L Ymmv|`6bE`2`4@tDG;oJGZA^J8_)+XPJHPUv zVEKcZIC=MMqm=hrU9gJA`s}F7%c4v*QeK%ky!|^6RB72rHX95cOg*(vBO+VQoKH3^ zRR~^uP45rKU&T|kNajitstaQ#JEnqI;6+JRs@F~wMx^IY3i}=xjG(KdrhlRbPX)og zzDQBG&@ouoVZ-|3(GOLU^VNbt%cG859CS%G&v~Q!=A$3MTK9gD#nNXBGsIRaOZOUW z+`JqwO*f?ZMnud_9QDKUYg?ysu{J&`T-*)v6qU(p~0)9Z>!{)5sZ@V92oOBr`K= zWLQYUR<@DZbAcCb<{>RPmX38TNo7miB3&mh`Rz{`ewg$GCz mj8DdXQQoBOl zIaQkunuU< 3`z`ny#>5*-nSb-LYGnt)w^q}Qu2(r$i zt%Fc;M|?({@^-euDEX%q%a<&B)E=V30^P%&_{Bcob2C;KNkVYXJo^JNLu64|&s&4a z(#h#CX-#jZnjApOPWB^~L;=QW3=8+QQ*3Aut8R2>?>_YC{b>=rqUIFvJ?4qx_(1cq z|4_uR>y>v5*Ue0G`#h6EE)zsGavtqZyx5_y=BCXbrb*1=X!yLKg_Ug1xX=%ISzS6* z|N2ollyU{PWmeT7Ay+Jm2}xuqP`xu&r>Mkz#_w@jsNg=*b7xR--to^ltSU@0IZya_ zgV5=7mq*@=v9A9gKV2Xv6Pe38t#Y4@<*R+yP+iOmGj}$TnDe!-|1^yXXC9`WqzSN6 zn6afp@Gj%&Y+n{MqRdX-T_eY|cBKjljg}*pvJi6)LU}#4=BJaky2i0mI#5-&Q>GKD z$i!Yxo4{AN{b9f2jGI(Bc!p^||A~4`-%)p#s_TnrQ9a(xAgvG3yqF_$NBv&eln)Ut zOl}g~Nv-;tJAtw%n{R#obf~1q3Mp LI?R{8yzF1l}y2L$l>%FiT}Gq-6M(+CG(=WJrs~qY9BJQHuj~S5l7K zGDroYGy3}Oznp&{$t$ =zi$%mfLv~ ztrV?Yo4(jUrkz+U+j|Yw%1-9%Qa3uLJ0X#(8%G ;DPtKlD@R2~H#0T5&j4N5ZqK82VlNdAovZQWnj{Fx zaPj;hkoR=mO0X#mp6X}cjMvR!^nce>S^3RJUt-tmialeByAiAUr`FVYWmmy_X)c7{ z3#-35%sM7Bo-ynd^q4=@Di@U~7b=+M73HXwd)ZT*Dc A?wXYQb9D_1 zACJ;B+70c~r+xidYCHCCau2qi?_&+tG#)8Q1=zPZik2&Qo~Pxh`yIcab--4K>n8Yd ztUjPO58or_E%FLC6coI66cCTv*QE6RX+7$mmg-h+sr>$O?eneIIr7yby2wyHt(7X* zH|+a65yLM{zJKk{{dGrV75h#+NMiMwKg1@G{{bsx`WDp%udK_~gO%so0~$>b$%fYf z_&PdLFXV=h;CMY3^jYRzty_g6`#&?Z HPe zr;Up|G7 4LY+UroUC4#fkxeAjYmgq7(SiNv zr0|)?Ksd+i!iX+)VUc#LE^RqFpAC;v0f|VNVqOZ{FF!j7w|74T*t>CWh|KTu|1x3| zJ{rR1n~oo9G^+m$l{rnMubncS#FjWF#8a&;;-6SjnP@ik2 })P)K{&H0^=6Ve(a#y(P3Rpo9@%68tIJ?iIs zPY4SB*;aS7?EiQ$LVKjt&e73UNnuMr{;lB$=t%$#AweV1V$EjWS&E+PcI?!bG1)nR z_Ng08Ut7edI&7p28d#!7f{wDKJ-3u?owgM4u8KOGCqkQR1YhKuDEXh(H#MOHRZ4kB zRpvgbiN>On(-qbvV+Ts^`nnnP1M%!q{OiB(QEkBQf0kc~5xinB|LvWZ2?a%N)+wo! z+g34k(o$+v(yMQNU?=YC&_SOLVL}37&%k(n3jA~7y2T~ { Bf3iN%RFO*qh zTaj{aDs*HiupWN`gf2A6i}Y|;50%6wKDi2Q>C>(3G) 38-q+SFkC8bgX@rKY!*!9 l|U!vo> zwR5IZQUJp}$0tsA?>Qy R~@r*zQKi zkzTtZMc5o&(sGLy$ECaHzqxBse38h4^?NmNQc!;5TMBP=-a6kY{_&^(nZwowFR@9A z|C#OF|4pXD358KLz0#^5jnd<*Gw`yB#}EFtGeBZr3G%mhf<`+6;aYpuzf|_qB!8J3 z-CzZDFmUC6`zG{g^y71_NMhfmO_`&UrzU`sk}`p^JCqa%r6QU8+oPCAqv;(12sN1~ z*vf=@@=EXNk$C1@0){D*X&`L-;yLHR1>(XGg$g_BergAu_aPwx!ZeU)!~*^gfMxha 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 z0000#Mn+Uk90pbZf=UPk5eN#RP?}o{Z~y@|0we==1Rw>2P6vcA7bF;V8>$qeqMWQo z$o^`9n hpM*1@B^Xb2lmzR5l{y-XU!%dguu5*kf5PL1%kK* z^91uyg{F?UU8y3Xtphcq+#i$%>)qwxe|4s0OeFm{E&+}-Oon5aT6VlRcb(#csl+Su zNTVbN4zO?U)>5c<-=t~ 3xEI(G+v&PA%`g7ti~}4 zx8NKx3vTRJj5u93go IxPz1rCRmOR;=Cj*1#vR$2ntiO3>B4R+SSo@zFDD& zq7sdLmqQ5gq$r`N$R~(LhxNRak`ODLi!zEO%KBDX5(Er0hS{OXQI%m!OK6~G=@2kI z+^vAYWOy!O2B0_{(({E_q*P5vMVvR#3vd=Xda4vFbSShCnc96@?51~ e}T(2oBh|-U(g@3 wy=gR{{6hUYWD|y^Sh-T73H7^MX zTH#Io(H73Dn}n!;(fK$MYmnS|r_;@P7}UlI23B}toc!d;mk;v80Z-B*oKMKwngyK0 z@b5ynm*=}3Fu+bT93paeP>`~WO)&akP*n<|VyI3#2lcmylW0=$8{r}t3q>_Ctd&-x zpr;Z}^e0|8 {ud-j4&6~u@ciB*_M%HU zBq+SYtq=^_32oi1!% ^M- zrv{5C21cdrVNk8KZk{Z7uF~7;g{p72weLAD^=WXvY5S}+t)|UZJ5Z&qk=CdM-W0O! z){{{5_=gZD1f`8d8kWFQD#NX{Q~|`4n$ddt=%7`Zkm^UeNm9bFtSj}qWYxoDEh?&! z`x^;(FEY3Tw$r=GP9HLLGw+F9LLS}boGN(!Ya080F3zOKLM*2*lf57~eapfZGT26E zEq4jVz~)R6|L)!xl`NLXib#HAGL988ZLeI{xpaLfs!zRDz%<%P*ab(5O1uHnz{Zr$ zcrI1%
LF7%oSwr7Q2V?Hgs@hd2I_n-0lwEka42yw@I{7}-XBcpNOaiH(AR zizD>Yy*+U<3)3PIt;b%BH%^q?eDI1Tw7vTuVR^2xtakjv2dD!!=ES(7=W2Jn#L!^e ziI)R1euJ&Msbcta%bA>n5tXZ{AP8*CBdjlhY6ohC{~dq|urUQ$f9B~Q=m&vW46#Eh zXnEw~>7MS(GRrf^BbwD$$6H6NbZQM_RzyU9{ubh68Qv1NIA!wNspV-GBmf(e>^0y; zW $!qu4RF?JhAKFG?yDsDirK9DR%n;oATI5-JVOCllCwGY)tt! ztbeN;pS#p}iQ`i59$ypaxODEkJOJ$UEnD@4zpW>f@cXvYiZToKwlBkfvHgTCK0ks# zu|qg9Cjuv_G<6ZK0UJ|EVq9d-6My2=u7||v|9TaPddV4AJRi>@)`PuL*AMi8*g%M! znvFgi5hXP>&KJ_uNC=%AkCf_+&2K)2&D#>+{ 1L;fHo6 zO9cO&j=M1wG4ciiVk-{3UV3y3k}WF@JENo~$N54V8~8$}$D^e>m6S_RYN`&ODOX)X zNE+{Bl~&Kq{E|A@`o%vpx52-4xN#Dm0~?c^wAk?IeT8gwoJ)kZfDU>0VQ=E)3lC|% zyI=ssP78WcM8`94oBw>zF L&p36){+7v{Hv!1 z(q5S-NLpK}oGcAcFcG#8jFW$5QLj4kxO&R!0D|^dEXNUG9qfTViCDC5*VgRL-DiG^ zTI)lrrOKQ4dUAI(Z`y;kq%%{0bM2@8Q-yM(C0>L=(-)>}tSLz*Fd?3Qm#Loj`s^n) z1jp||vH5fIHOzb>I63I@m~)-}F0)(uiNw#(Oq%$~PtiDvm-$Xg9Qz3#;$LtJ>-ODx z>uzP=aNhUM+|$!r*bx7MahtO92zj)O8}qJ{9JGTFB@%Vmus_DE%K08HCh=c!!`>Ke zQvI+Jv~?*u>3?ShcPcvR=^TK{M`HW)fx@xyxk_O+uWR9nd8_oODfUXv9d`J;W=|jm z|E!k2mRE7*O*j6nHpNlfFi;;%^oc8Z*?5t2e*u;zSIyDYmpbtSqs@`y`2Xy(5la6) zqkZsheb&9yyzA#S>7HQfN9>YFZ{h7t5Bt_xxZ!Y%y`eH=;Br8I{oGhp&E#-RMeVtZ zWByLNE}$_&{3>b0o$9exP}J{4i>cGK)Zu(sC F8AM=A( zS =vz5o^!BI)DwI?pV-Cn(?I20b{>uwc)*7&29 zpb>8pFN84m2$gsr=PADnEb2^<&wOYCV{u-(i4hb-yOnm0AlG!&KRQ%9%fLvF0G}9J zg5?}E$`ilD+3C&q^IA>U!lFW~uj|?v62L5mxVh@kT1fjwpnY#GTy?;P?}l%;ylWIL zAE>Xb7#0%#ebv^(N;hED_V_MwxEefm2;Ml1n&bFqZrPY)%tY=vj>Z^t(e;+T2Tf^r z(z8?Pn~~mNSKAZC`7rPL^9^AgfmFA(g5n`c@N9i17m@x0uxjc>b)odVQ0Kbyt$pCft% zQmX%`u{K#fspk`K(=uc i&ACdqGt(y>AyK8t#9+( zdImXjes)4yUm2?XhIjZ)B bYPq_O%ccjY0jDaS^I5%6CFUOv_a_f}_G-f<=7> zMh6zThTF0u$aDF^BvFfyhX8FpxP8erMf!% Bba$L!fk+g| zl4n9w6cjg+Ff>w!oAVciBHv6rBeuwSvG|pW6#Rs`=%q-$N(KBjW;Zh~IFLjG+V>xc z26O)?3f?Q;$d+72;@d^oqd$18EZ{QhiW4ui++?6ClvRhPKgWp!N||>9Wnq0wXpV=$ z5X4bU0|F=nel0YDLD!j9k&4g`;IB3#J-kR!-Zgc}cDd S+wPM*G44I(V}{)?w;_xc=NEU|syek{jo0j};2-ttc7zSw)vCoE^i zf(3X5csrXrS!4B(Sbl=7javya{Bd>h@B{#gzq;etHH52`rir}&)uq(M=Gd^{z#pTU z_x@Lx5~~e7!opkN;%<-clqJ#%i3FAs>Lc=&&YjvGxOxZ&cch5S`aOS?*SWeUbo$V- zL`Dz~La7V`9P5cG0pP#S@LylXn&aU?@IP0ZBdug`1OSIV$ToK2|JH?VU9FKe0Emml z#tMj*5MB>~0;IdZ(ZBT-Bof})@vWo7VenB(NQf4RoQRpNvL%HD5@~_7v5~<8 eMk0%`(<0nb5opaxJcm>tXvrUUhYcENg}3$QpO9<&S&fP4np zz#`Zx6Q~c|iCqO3%n4cr8o-30MKJh3?}bF#1S9Ei6>-U2L5H-Ruc&c}S-#^I)6r$z z7+oh`+~$QWwl4)Kv0T4dB+-3LCR}r$1 YMd(}z@eMwQCO5=saj!;^bf# &g& zVTz(W&|UK$*5>UNa$>2@#2MDy$7!fOVnT@~B~c*2`9;<*R<3&91n3Cz&zqrC^^F-y z?pM79su^G04xhchgFan^QzAMCvwY1cH3e)WNJo`N_#QN0eacwcX7M-_kMOf6={L?P z*ms%AQp05z@F6Pch9_`CuVICGPiA7X2_BcJhlFbI>#twQmQtx93FGRBcU)|SC!?OT zKzD=hdX}heC5*ak*k_V RIvg8{__>cK!Cz6s<1};Vuyi(0g zo@rppVsu_c8w*Eeu!R qRt28)}aQeSbsDF1covNPm<*pt<*<<#YrO zv$i@kakTK17C!~C%Rz7*nLls(R)4nE>}?OThj_}h1w|g4$7-zfN^Hf^+;Iap2T&rDMg`C(kSAPwPp(wGz>$# z2D|-)D`u@%PiMB65mwE|>t_4S*n+%ln~2k=C-4(4WX+?|_Ays*du}H2bIp` *^lm61nDo66FGualISQ8gw(cl-AC# 2Wv%@{YY+uHd$K&a;;91xcIk >G9@04==4L{{wQf2|7M9T6vdBpY+9< zDRKrHSKN!^{IH2g2evQ>4qCBvNv>EW$rM_Z8u&BAgAgXn2rG48r#l*y4?0Jz%($}f!9qzl4#N$_9)kOpLj)8WqQgIh!b3qJ%%2Dq zo3a*ZCs;DYSSJ#@fc>?9S|l!#0);%TPcHYIqf?8~^fh`SgOeL#=fw7b_a+kZk*dO_ zHj_r|(0C2iS2ByFdOZz{Qk3`5-#*69(Z-6jhEdhl;#edWk4qa U+wA)9?w zT`v7^W!I)vF1?aW6a%W`DaGq{9OtUiunoctT=ARp;4#)a0`Na4u@-D) *^xSgtvsrf-s3*Ppo&6I@zH70Zd@P5M5T!u z(5diHZ6o)wb=UQAk`T-i!`(5H*Q>veGw>JQ#$YDxD^OOZ?o(Gg15sQ`3YlJXZE0Eu z64g5`?xOb7 KDe`FkS19>eM5>59xL{8`lfg-S!FcLNa!MZs93&ABK`_ z(z8MIT}%HkdHiJWXjj+3eWG5wsA!qX7op}?wADZFFBr)}-i-VE4 _ep;|7g<_%-@nnt)NfGj^HDLU z*k5Tol!}Ml5}!@%t4O0J6&Y5OEsar zv9zG>ltBj_5dp>xOhp~}B&bj)3&o`xZZgX-fuIQN+a5kdN-#!spj1oOn&;}&L5DZ3 zCI;jN=oQjT!8!Sk91}4(? 1mMnzEr!ntjV3 z+b1!1BY;D_cT%ZG)_ii*zveCUGTh2x$z%9EZKNo9J2KWD#^UFfVfpGU!oR1vy9=7m ze(!m1rX6vX=0=w2t%?Qa`Hu-dv1yY^C9$h0a?0U%4$2V4yD%R3^9PN(?0sliJVycf za!9GIg*q0t5=AL0CoOv#YFN;+`jB2b1sLu$ax%48Hte>`1>sFT#FVmY(DTW7?_Y0i zQ8-ZOj}E2jJ!|CHQP_3&_UU(4J--yGRyH0in;Y(;Z7ubo4PLLKzv+5Cb^rB1L?dP| zZ)d0fSc}nK(&O|frLQGOnC+5hpvpx#hR%aT<4ViOAgeYHR+XPP6r`>Y9lJm?_!#Oj z92Cj!1Jro&=qa%v6)Oa#(;NmM DGI@pxq?$bS} z^+P^qHIaeIKw^OAX~(M2x{CkV_0#x)Zww5L4S)eE@<}F>5r#t2Cx}ePUgttR9z{iT z%r|j1S=lDy;r+YWaoO~CG`x4!$oZhpJN;f|g^^*yw24lNq;)n|i9m(?lCni#Lha)* zf6-7jdQEnz Um2lQ7j z!p)OsLNnWxWRvr6p0cwa8_pTb@W1@^@spOE@i?!6 X@x%C0BHRjrbzcX$>{oYf{QJ26)8x_i1b4s*NP zr>)MZW@e#&t0|HS`>N9EkO}hPvm-=vYwmpGqVg=v(6q3}yQX$J4}-_j*PSGj@t1Vt z{=oBd8Nb^%J9rkV*p_K&C&hKN*?QKKc37w<)VuN=!$T24w8B8b&W2hHq4_F5cchW| zn~#zW&D+v=RS}!-d$cIQ S z2vxYH+Q*ZS1)2C5C`Ib$^*+@XWo0kYrCcn;1p*Gk1p_RU5kBbFr7u&_l;d+BdD`2C z04d$DIPafCDw@Ydip@+%qxrDqj?obOgdI+e_B{HVtWD*10p{M KF6jgiphiy35R#HY5pOv zKyBX82@mI*sY=>yI-w0~gV3}2w#(?7jGB{IvU8oH9Efk%y?zS=%S-AG;W_$S`_x5- z-j+{CK2BsyS5a)4YWFm4WC?Eji3}y RVb3QyPlNMhf#X)fwU2<2Mw-;IgOYNB3TEjyp>}dMMo@UCjjj z1lh>?kMA_&1HKX(c`e%pUs3ymx{wBYRIZ`izCaU8oVC;e5e+_~HBdz #B$IiUovMpbn#I+%3*ksF8PaM9OCpGy^wN2iNouL_hP`=xg4+QJSg zUf&iiJJ$2V!ci7ql3YGfDXDmk6A)N_WQHyO9GfqSmTG9zGeZltH2tZ$Y*Q-T=ZMo2 zyhds2x>!#n1yG%#OMTCxH%3jB#huWr45LaCToVy<+!HyFxp@WpUV_&f%dA7J#i%Xl zInsBFWt`ECyn;?htA?9)c(^Dk7f)Vn@v^q?eiFs0wo)%nyKd!3hS!HU>dqUg#w(_0 zFB(ws^2w&hTF3)cq3Q^lp1fXaVd9B0GwXt#T+^8khJL|)(ohvBtptUCCfjUJa8iuh z&+D$jHJ5lIidkzit`&6gFU~TVjr=KM-Ix6%j)+`AHEI!b5R-EY{j>6a3MZIwCvJtU zoLP5+>M2-#6^It}n}rSuP*+3S2p^lVAb>B 1Ue~}A>U-GgtEsFP zt}TTiEQ!)444E7K%oS3@t3r6gdz;bTrSko&DyiUh+obs3cOusTJkT}WLH|*3U+clc z1%k6qyAB<-&y)-^Gxl@FTme#RDd`|h-=%;Kow+bPF z zjbK9Q1IeZ;ZCizSn%Qy10S%k9Hwdq)tnwi0lvo4R!HUuLd#VjJ%{J#17Aif%o|W(J zRX?bD-B_O0MaR%<<2-UPv*Mg{E_$@%&Ttc7PM#HB`{Rq=bO4 v%{6%n&gSIydhdB7 2-$wck%Efx}7l@OpO~qvQ~I-}~Lmf)YK$iraX4 zC$IeBi^A$hzmmD?^R~G!zXsO)FPwFuU4>@u{4eb1{%_KrO-qf-saDpFwTVq_F5p#7 z2fF>WM?hGg3jEiLK_abyP^F{#S()Si_&UshN+O=pzdj5Mi8MXp4#xU8-ScK~vyLT1 zL_~2!{lPdu>T{eQf6r$biG*1JU=sXYysihr(fOCjf2=c>)EJ43)r?uLZrR^_N0NrK 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 zcmV;Z4p;GaPew8T0RR9101l`C4*&oF02*Kb01iw50RR9100000000000000000000 z0000#Mn+Uk90pbZf=UPk5eN#S5Ss!EZ~y@|0we==1Rw>2R|kYJ7bF;V8`=~j5hk0J zA^WQYp3L<|c~}pp2#Yd1@I<9oMd-~4m5zM-aP0T<{5JpGC*Tt+F;TZx%m9>OL}3(R z&abR7suqn~qu)iO!9o{V{IAZm?4Z6Bov%m};4%^zj$tZC(Gu9~xSeq9>qIcM!*uP| zK0)9Jw(bDtY!^^gZ7pL?9RB=>pbbc1Ao#Jdb!n^j6dg_{W#Ct~9OdWtzxEoroBSI< zHag12n0fPe&-pJC1Sp^|RX{@36R>coVpN6k6$a2&XxDSi$_QIJIijo;)Qpu=u>Y>q z7yv-M@M!H~wn%t#xgqaH@&Vxh=Ya@7v?KNbAY-wZOoC@7HQ1%{Hz60{E?z=9AG5XNFMS6RGFR)=Pard60J{bddi2>=1BWf9fQ z5GRw#_HZ)u3_owel>qroCSE{82xe)G@tjcswqG;NcI}ee!tgnw51T;1aWw@6gZgzK zcz+N^Gy7U~$n6iBJ8uW_z?t}9Y|lO2ciGM_3OlCUHlyrdZ?-MByZc Y-|k6wpug6?HPQfa^3)cV{StZq8k zV2D>{X-MfQ1vj} Ii&V_Oxbne-lQ4B3Pkhj4u=K`UV(H-5Jbj*GiXzd0wyEd>k2KSx4KtK_L5KN1 zEF54NoNJxsWqpY$6iG+(umIaL5H~HYR9;;hRZ5k5sT-TP#F)FYo5s3qSd5hAn+~0z z{J;TTtxo3~jV+sHdN(ZltLfCW_JJ$XXM}XK1dZm=-kO5FwnZ&6o=R>B(Rc0DUqd=m zrH)n>iK9T{TA;Ccr8E$h*=u>c7Uq*oVLeeh?yIEphkF@!f!x1)amAz*m$_)Y8Y&ox z0yGf|{;O5FqvYTrj7{U2F&op11n{!fN1dCKkOv(;qk3B)+1jSfz1oFu&zgMq-cVxedP7(=W7$!P<)Ir!)S7yPwx*{; z)$2f;tw_yG@!J-z&FC~iqrG6SVIF^bBvqOV;#|5l%tDUv?2MlNtj-sQv(#WM{V&yl zh->hf?L{}dGRKHKn}IL-AeLSqo1KB~*XlTY40~Z}8uxq%@N;>p>vnW8{8r($g(aAN zqRzutb7&Td4TeMkxihuL=CgnpMdd%_yWYK5dTFt9=SmyqE|FH8`n=`z=O+=_eEm+5 zMH#NS>nvbEls?wc+H?57728+MA#c?iKiKtn-c<(0&fi6LU)0(&z4~J)5S5E{zIGg3 z`@4<81)uAbVI{%gb6nG%NnKk4nqOuH2l@rGy-x?{>jq|7EcWNC{y4JNFNmA-Js0i+ zQQA<~RFkxWqj~JC1^2XGE-uCrH;ThwcUpu8hv5(oMCrJIZn#UZYiYayRz}}~hsQqt zz7xP^7|ezrIhb >}>Ant_=?rIdHuE)uq!qEx$Xv>u@Db@oSWnwQ-D|JmyxV^bk z#{$~?;%!al`y )fUu;U&-hTQ`S)-z>;8n?{v~YdhtVq+U{qkP< zwlroMuE0p6*)sECJ`kmEJzMs?xOP={W_Rng^}-E!>|Mt2yV^Igz+@PVEnLRu21ap` zRP)+Tyy-8uH;?j Wlh$)Ut22OE*q*~#maKXZh7QPL*Oil;$(KkyL!Z<^ju zK|=K=Ji1w@H{!!%rQu!zI!9xq>cO E z)50+M^D7hoTgSo~e-CZ*TJC&b4~MyLxZrY}lC_1-tLKb~j*ZU+mPx^q Hk-El5#S=Qn2D$^W`;e?e#OSq%=cNQnGPBDSKjxs{7 z>?iE0OuD_X`Bu>Kr<>Q)LwXx_P2$9BHwb9@%%*O)u!AGu-fHkt--axTz1`h*KCB>r zCq0vepFJo9Qev8Nt^DZ5n>nXW?JU_>edxeHmGjphW58liHYrzaB<&QX++N#qDMavE zL*=D)%qVtF@w@c)dVxjMp%oKr0#8g_|3B|oO8Gbp-e<=zAuqde{pr N)O^*uG z?Q__Hej@*+CN~ckSM;!E)jP&3_iPremTX;9A=$cGB-yOck$erU=SEetn^d!y>RaPP z8Pm(a2}p^;OLAXwlWu0N96xz;;-FA0Zd>1;^M6utmJOU?m9b#dD}&*Y!|=>tc; LlBAjjdTYL7>%J1)zgfaMFnj`}#Tm*q@-Nn(`SR~2)W$yS zZa*8Ecj#0lR(-zE_V`Egt*piC6PFKoad$o+DNSabWI{CasoWqwd133!E6QTEHF0-( z+s=jM@pm(lm bhf*-;5m!3DFPq7Z_aiI2X1cj$y7`406f{7`Z zBO`@IT5Pb?b>97_l4q``50Wh^tT#NDRK1YYMJg#gpr3wlPg0^IVfW3pE~H<7M`lf% zXH7Q(dBnAvTy `vsYo~S1EcH&=Ao*)X{g#_lsC?~n%P{?fTYhhw zgUB?Q%8C?O3_0`OA0V^BCVwal35`#mY2yRtWmi1(FtfoMj2I5i0CuLm2&~-q$rIqM z?OqabhWN-~MBL@viIh=ILVrR*X|)J|uls7R!15GT_pi7j4sWKjv;O`nJ4hwbfCFZs zDNZTn8b?wNODkC~0eb^1D8FU(1<2|dP^%k6=qm|f1p8liL82}}heVRO+_ z7{kcuA%+1004G=ia&H(-V7Z9_v^SIuS%64`8kmI{a^Ma-Gl-ywupSanQ7CjHf&yR= z0FWUEWnh;<1RZ#Fw q(T~GN`1MI4)6;mvHas#Oj_pB z+#WXMLtYk(qZdIoWC9gzfd yK)_orb`ZHdW|on;v~X7T*crG!C={(T| fjCWqPY**Fl0yVUL?k4SaHN39ND(O^ zWu$^sks4A*8b}jqA#J3CbdesSAbn(j43QBsMka`g))9gc6eAExWD1o=XE0f84wqMc z-alR|0vaGN1PX&AkT|$_C^W{g0Rs>i0)@d5NXG^&Kwt d#87 XFYe{{p@|tbN0ID&)orfYH9!o;0FQ;Q2e!5Y5qR{zoDjfPX_>~ zm+>(sJeX^wl s1yKP83F(*Q7*1OKOQ*RI^Z=-@i}-cKvJ|G zdFKJ1#B)h_p9K$Y@_iWL12^A5yapNG_x}qe^XrbT9`^V=$ROUwYXP2~slM87wt@I} zum ?j8yURrcLk^rFi2JHWfFC&q8U0ol#x?DcWq(?>?kSpJ`ani7-wnHNAkd7!tID}|5 z0&{8L>U=rI;9u)2DgY2ND3t&XI>d31Z9oMt13;?(eh^R@+y+a)A&4x*4s-zvzzc8> z+=qC8vfxXQ9|FUJ2&@BR@Hr0vSuh>U23sK{5CVLp9-M~AgNqP)s2BJJq7RJ$3LrFK zGlT$agcO0t;0}J}5ReUSfEWnuKXoCIs7FXfm>P`I6WnL$4yA)#VIP5&F*0UfSm095 zE(;?UJC`EV*>Q1; n*t>zhOR=!AZQcEZ=O&?nDDYagT%P0?tV=J zO{Sr0b(HF)pT(f%$wz|iof9hF`Q?JkyvrG%ixA;E*`iN4yy}9;h6i)LtaK&im~yOT zv(9^4`#aeYYVBP&`jqg-acPT0nqoDcmi_&$YYlhx(1uKEGcV!G Vz= zN$(y{9l1(_J%bQ~;(&`;2zoAY-A|6xNW+t!xXqfgEOUnU?Ai)>zOs+X#FsUadHo3L zSy|XzVy@~MJ58_hExU5A2~m_(sj7JS#8V&Ng_UICh4n6Hr7fm~-L>-G6R1rQ6T#>s zrw{%1D~DG*RD2Wz&bQ9C>KRv08fVYxh0^^p!ZPnwyz^El#4X55qI!=H{ctw}aunu< zM1cwutI)=p6fYD*PFpPfuM?vnhS2=4`(KKDoHG2Ax^L;bky@U4VW*ob$X91Zf)zw; zgGU7JdUUN{yuSJCm5np?i>`O=Oj+O12{Uqzbm)?l4Uxm)w2W`WhT*R{D?0`?yRQi) zsaT@tkU^UZ0?g6!o{wJ_Srj(eo++nd8YIo&vv(=R vPY_(&olgH$bU%S3?Fhw>=li5-wqc{1FOT>>DXRnjd5Yf9;6=A9*{z)GR`*v29 z?ChKa=2jKlf@9|@`AlqpTzf*~c&eh__>NZ!xuAK84fn@$TDgt 6L*%coI_TP{G7?!c_})yX>dY3&_IHhCDRV4`pzkO43Kwx% zm|R9Ur}5i}*&uZ|{U=&WQyK$ZW7STx!g`vT0Q#o&e&H8Xf1>ER2GwH~soqsrA1Kax z+RO())f93&f>xx?8V*(;=l2^=PbR mbZ*5&EH5kCH~czprF=T>m9)KjSbK_ID307e{dfAu 1X(@;ebUo44?`Mm8!n$EZexZU2mZ_mtAbA?(bO z5m|d{<;sK03I~r}2M>Kh><^ AbOz2Z}OeNhx5!= zx$urk ^x>g*(RI*DYu*}|I6lv=EkNr#6?$tXJ^2#fwz0Ci zwkZALTg&i~U7@tJfS-oSE>m1AY@!H}>+TXmBc(Ibljc I zf%@xSDXRxKiRUwX!nyJ{xZL*BoaRY=4u*XayNr%>|J10Gma#7BKS%9 rq%zaB I21<;(r@r Gj>96TV zQD>W_pJt@hgWr6e8>Sa_Rc2YEnny@i*}P&kWOU`?)4b7~X){{TW5^J``Kt<3nAd#T zURm7gxkEVOUR(Y0aWP{|u3_+|upBnsFhS E%Vfl%jcY%&ffAF7w&htVh5+UBGA7# z=?%89q9|zp_Tj*Wkc=%e%Q99eXFS1dv8C4N@Qc%Mg82lFNu1s65YHiOgn+SRoOlhJY#r%d|sq0js8}7>DTqD zLr(41lkuu{115!ve9y$-ch7I2ODuwUe~OJBH_Q3divRG_f0EK`+K~gGs>?pc(X8)E zoZcq*Va!z|wf{>dKpxd!gfaJCkVYXrer0~p`LlUtY >l}xtj3knOdIanfOnGIY*MN1-8E+qGy~%VI63Z)NpnuXF!Fx2c}L!2 zsJGZmLtk$m1CxVc3&V$3AC3nI@>?fkBul58YtY6-JQ(%c;Q_@h#xnNb{Y n9Y z^C8^FGy=V&-9v}ePoAd*JjkY0w>*E4>o8nlk8}PqF;N1s6CGRDZhmevG1)MpcN8QW zh^}af-`Z~4JRD+n-@W!-ObY%1(Q=eT+FPVf!_O=w_FM{WX2@?su0TqTJ(#=%9lpHC zYN)M34JSucZ=$Dl9A}o&>D|#9Wj8TjS!Yb_+<7oTW;}*bkqZ}lWJ}Xpd3}*v6s}&m z%=^as#zOq5;rv4K*m~;jk}QiN@(5}wo+wJG*clYELjV)%vr}3=S4YOTut _ZUeOm8n-{~RSbMu3k)>L+9^6HYgI)xz$7w8mxf9WOHP&AhEf#U5qN9uIiHLt=$ zmD@_ZbE&TmqwksZq#q0%bPBdlt8{Q2>~qKw|5Uy5!SvwVs !xkEXjo`gVo6xrff}t0|As1urkszpU9xoj33Il+ z$_VwwmOOW+SFk*WvcVUzEUv!Zds3R!^m8^~Z~Xe#)7_AW5LA-P_tbnzf9L%+)5^|= zS)c9_7t%7Z9?wmk=C%!UDob)RRko$Dy$T@vpfhU}t5BHmf`7PiU2doPrSmat Itg>m6-S>`cm-y@5Wa~mE 2)`yF{1x zLUamh=L8er$!Q|=ck;VqWsV*DT>6Sa;P({W+VL*&=FXxX9i~nfr|S6jmEg^cKpQd@ z=G;g#l~&$`?<1>5g^8=TKfkTJQT;1TI?_UL+w$UoX||ZVp_3?t_;Y9wGq%NayYF1} zk$B$}1+YF9*#glLsl3RwMbx-$SKcz2eZ(_yA93#~?N{GUCB~BaF?hcEwvN&*HSOP- z+f t!+&c2N(#L8oHja|bFh$HGlt<#GRT@Gmm&hZ~?!`dX zd760dRGov~@;#hs=XEVh{&Au^-$+@|J!(gJrLS3^#hcxem79DUAWSc`%n-g;HLFW~ zRw*>qf@&{=FR?^>8eHC