guofei 2024-10-17 17:28:47 +08:00
commit 2f9f128f7d
49 changed files with 223 additions and 184 deletions

1
.gitignore vendored
View File

@ -12,7 +12,6 @@ deploy.js
# next.js
/.next/
/out/
# production
/build

View File

@ -1,15 +1,6 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
async redirects() {
return [
{
source: '/',
destination: '/zh/home',
permanent: true,
},
];
},
};
export default nextConfig;

1
out/404.html 100644

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-2b1e5691dd2d9302.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View File

@ -0,0 +1 @@
self.__SSG_MANIFEST=new Set(["\u002F[lang]\u002Fhome"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[958],{9238:function(e,t,n){Promise.resolve().then(n.bind(n,7168))},7168:function(e,t,n){"use strict";n.d(t,{default:function(){return c}});var r=n(881),s=n(6509),i=n(4149);function a(e){let{dict:t,lang:n}=e,[a,c]=(0,i.useState)(!1);return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("div",{className:"flex items-center w-[129px] h-[28px] bg-[#EEF1F6] border-[1px] border-[#eeeeee] rounded-[3px] px-[10px] mt-[18px] cursor-pointer",onClick:()=>c(!a),children:[(0,r.jsx)("img",{src:"/common/earth.png",width:16.5,height:16.5,alt:"logo"}),(0,r.jsx)("div",{className:"flex-1 text-[14px] text-[#333333] mx-[9px]",children:null==t?void 0:t.lang}),(0,r.jsx)("img",{className:"transition-transform duration-300 transform rotate-0 ".concat(a&&"rotate-180"),src:"/common/arrow.png",width:10,height:5,alt:"logo"})]}),(0,r.jsx)(s.default,{href:"zh"===n?"/en/home.html":"/index.html",children:(0,r.jsx)("div",{className:"absolute ".concat(!a&&"hidden"," top-[30px] w-[129px] h-[28px] \n bg-[#EEF1F6] text-center transition-all duration-300 origin-top group-hover:block"),children:(0,r.jsx)("div",{className:"text-[14px] text-[#333333]",children:null==t?void 0:t.lang1})})})]})})}function c(e){let{dict:t,lang:n}=e,[c,l]=(0,i.useState)(t.home),o=[{name:t.home,href:"#home"},{name:t.services,href:"#service"},{name:t.caseGallery,href:"#case"},{name:t.contactUs,href:"#contact "}];return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)("div",{className:"flex items-center px-[20px] h-[80px] border-b-1 border-solid border-[#D8D8D8]",style:{borderBottom:"1px solid #D8D8D8"},children:[(0,r.jsx)("img",{src:"/common/logo.png",width:180,height:47,alt:"logo"}),(0,r.jsx)("div",{className:"flex flex-1 items-end h-[80px] mx-[13px]",children:o.map(e=>(0,r.jsx)(s.default,{href:e.href,children:(0,r.jsxs)("div",{className:"text-center cursor-pointer",onClick:()=>l(e.name),children:[(0,r.jsx)("div",{className:"my-[10px] w-[144px] text-[18px]",children:e.name}),c===e.name?(0,r.jsx)("img",{src:"/common/tab_checked.png",width:144,height:8,alt:""}):(0,r.jsx)("div",{className:"h-[8px]"})]})},e.name))}),(0,r.jsx)("div",{className:"",children:(0,r.jsx)(a,{dict:t,lang:n})})]})})}}},function(e){e.O(0,[509,985,330,744],function(){return e(e.s=9238)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[409],{6325:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return n(9094)}])},9094:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}}),n(8806);let i=n(881);n(4149);let o={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},l={display:"inline-block"},r={display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},d={fontSize:14,fontWeight:400,lineHeight:"49px",margin:0};function s(){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("title",{children:"404: This page could not be found."}),(0,i.jsx)("div",{style:o,children:(0,i.jsxs)("div",{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,i.jsx)("h1",{className:"next-error-h1",style:r,children:"404"}),(0,i.jsx)("div",{style:l,children:(0,i.jsx)("h2",{style:d,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},function(e){e.O(0,[985,330,744],function(){return e(e.s=6325)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{62:function(e,a,_){Promise.resolve().then(_.t.bind(_,5418,23)),Promise.resolve().then(_.t.bind(_,2045,23)),Promise.resolve().then(_.t.bind(_,8226,23))},8226:function(){},2045:function(e){e.exports={style:{fontFamily:"'__geistMono_c3aa02', '__geistMono_Fallback_c3aa02'"},className:"__className_c3aa02",variable:"__variable_c3aa02"}},5418:function(e){e.exports={style:{fontFamily:"'__geistSans_1e4310', '__geistSans_Fallback_1e4310'"},className:"__className_1e4310",variable:"__variable_1e4310"}}},function(e){e.O(0,[473,985,330,744],function(){return e(e.s=62)}),_N_E=e.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{3030:function(e,n,t){Promise.resolve().then(t.t.bind(t,1013,23)),Promise.resolve().then(t.t.bind(t,8073,23)),Promise.resolve().then(t.t.bind(t,1626,23)),Promise.resolve().then(t.t.bind(t,6102,23)),Promise.resolve().then(t.t.bind(t,4262,23)),Promise.resolve().then(t.t.bind(t,2609,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[985,330],function(){return n(39),n(3030)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{9452:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return u(4820)}])}},function(n){var _=function(_){return n(n.s=_)};n.O(0,[774,179],function(){return _(9452),_(6699)}),_N_E=n.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{7022:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(3936)}])}},function(n){n.O(0,[888,774,179],function(){return n(n.s=7022)}),_N_E=n.O()}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(){"use strict";var e,t,n,r,o,u,i,c,f,a={},l={};function d(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete l[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],c=!0,f=0;f<n.length;f++)i>=o&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);d.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},d.d(o,u),o},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){},d.miniCssF=function(e){},d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",d.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,d.nc&&i.setAttribute("nonce",d.nc),i.setAttribute("data-webpack",o+n),i.src=d.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),c&&document.head.appendChild(i)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/_next/",i={272:0,473:0},d.f.j=function(e,t){var n=d.o(i,e)?i[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(272|473)$/.test(e))i[e]=0;else{var r=new Promise(function(t,r){n=i[e]=[t,r]});t.push(n[2]=r);var o=d.p+d.u(e),u=Error();d.l(o,function(t){if(d.o(i,e)&&(0!==(n=i[e])&&(i[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},d.O.j=function(e){return 0===i[e]},c=function(e,t){var n,r,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(n in u)d.o(u,n)&&(d.m[n]=u[n]);if(c)var a=c(d)}for(e&&e(t);f<o.length;f++)r=o[f],d.o(i,r)&&i[r]&&i[r][0](),i[r]=0;return d.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
out/common/logo.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

2
out/en/home.html 100644

File diff suppressed because one or more lines are too long

8
out/en/home.txt 100644

File diff suppressed because one or more lines are too long

BIN
out/favicon.ico 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
out/home/case_1.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
out/home/case_2.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
out/home/case_3.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

BIN
out/home/img_3.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

BIN
out/home/img_AB.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
out/home/qrcode.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

2
out/index.html 100644

File diff suppressed because one or more lines are too long

8
out/zh/home.txt 100644

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,9 @@
"dependencies": {
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0",
"@formatjs/intl-localematcher": "^0.5.5",
"@mui/material": "^6.1.3",
"negotiator": "^0.6.3",
"next": "14.2.15",
"next-intl": "^3.21.1",
"react": "^18",

View File

@ -14,9 +14,15 @@ importers:
'@emotion/styled':
specifier: ^11.13.0
version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.11)(react@18.3.1))(@types/react@18.3.11)(react@18.3.1)
'@formatjs/intl-localematcher':
specifier: ^0.5.5
version: 0.5.5
'@mui/material':
specifier: ^6.1.3
version: 6.1.3(@emotion/react@11.13.3(@types/react@18.3.11)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.11)(react@18.3.1))(@types/react@18.3.11)(react@18.3.1))(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
negotiator:
specifier: ^0.6.3
version: 0.6.3
next:
specifier: 14.2.15
version: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)

View File

@ -44,168 +44,172 @@ export default async function Home (props: PropsType) {
{ img: '/home/case_3.png' },
]
return <>
<div className="min-w-[1440px]">
<Header dict={dict} lang={lang} />
<section id="home">
<div className="w-full h-[770px] bg-[url('/home/img_header.png')] bg-right bg-no-repeat pt-[279px] pl-[172px]">
<div
className="text-[46px] leading-[62px] w-[368px] text-center"
>
<div className='w-full'>
<div className="w-[1440px] mx-auto">
<Header dict={dict} lang={lang} />
<section id="home">
<div className="w-full h-[770px] bg-[url('/home/img_header.png')] bg-right bg-no-repeat pt-[279px] pl-[172px]">
<div
className="font-black"
style={{
'background': 'linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)',
'backgroundClip': 'text',
'WebkitTextFillColor': 'transparent'
}}>
{dict.FocusingOnPlayableAds}
</div>
<div
className="font-black"
style={{
'background': 'linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)',
'backgroundClip': 'text',
'WebkitTextFillColor': 'transparent'
}}>
{dict.goOverseas}
</div>
</div>
</div>
</section>
<div className="w-full h-[428px] relative">
<img
src="/home/img_bg2.png"
width={745}
height={428}
alt=""
/>
<div className="absolute w-[770px] text-[32px] top-[184px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.customized }
</div>
</div>
<div className="w-full h-[403px] relative">
<img
className="absolute right-[0]"
src="/home/img_AB.png"
width={787}
height={403}
alt=""
/>
<div className="absolute w-[662px] text-[32px] top-[160px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.ABTesting}
</div>
<div className="absolute w-[680px] text-[32px] top-[204px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.iterateGameplay }
</div>
</div>
<div className="w-full h-[392px] relative">
<img
className="absolute"
src="/home/img_mutilan.png"
width={698}
height={392}
alt=""
/>
<div className="absolute w-[520px] text-[32px] top-[197px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.multiLanguage }
</div>
<div className="absolute w-[510px] text-[32px] top-[242px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.breakingGeographical }
</div>
</div>
<div className="w-full h-[317px] relative mt-[83px]">
<img
className="absolute right-[0]"
src="/home/img_Omnichannel.png"
width={742}
height={317}
alt=""
/>
<div className="absolute w-[680px] text-[32px] top-[124px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.allChannel }
</div>
<div className="absolute w-[680px] text-[32px] top-[169px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.expandInfluence }
</div>
</div>
<div className="w-full h-[317px] relative mt-[83px]">
<img
className="absolute"
src="/home/img_3.png"
width={881}
height={357}
alt=""
/>
<div className="absolute w-[610px] text-[32px] top-[100px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.lightweightDeployment }
</div>
<div className="absolute w-[600px] text-[32px] top-[145px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.simplifyProcess }
</div>
</div>
<section id="service">
<div className="w-full flex flex-col justify-center items-center mt-[98px]">
<div
className="leading-[34px] text-[36px] font-black w-[150px] mb-[11px]"
style={{
background: 'linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)',
backgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}
>{ dict.caseGallery }</div>
<div className="text-[19px] text-[#59676C]">{ dict.clickNow }</div>
</div>
</section>
<section id="case">
<div className="w-full px-[40px] flex flex-wrap justify-center gap-[50px] mt-[34px] mb-[83px]">
{
caseList.map((item: CaseType, index: number) => {
return <div key={'key'+index} className="cursor-pointer">
<img
className="hover:scale-[1.17] hover:shadow-[0px_0px_20px_8px_#0988FF] rounded-[60px]
transition ease-in-out duration-300"
src={item.img}
width={300}
height={300}
alt=""
/>
className="text-[46px] leading-[62px] w-[368px] text-center"
>
<div
className="font-black"
style={{
'background': 'linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)',
'backgroundClip': 'text',
'WebkitTextFillColor': 'transparent'
}}>
{dict.FocusingOnPlayableAds}
</div>
})
}
<div className="w-[300px] h-[300px] flex flex-col justify-center items-center
text-[30px] text-[#3d3d3d] cursor-pointer rounded-[60px]"
style={{background: 'radial-gradient(61% 61% at 50% 50%, #FFFFFF 46%, #E1E1E1 100%)'}}>
<div>{ dict.seeMore }</div>
<div>{ dict.contactUs! }</div>
<div
className="font-black"
style={{
'background': 'linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)',
'backgroundClip': 'text',
'WebkitTextFillColor': 'transparent'
}}>
{dict.goOverseas}
</div>
</div>
</div>
</section>
<section id="service">
<div className="w-full h-[428px] relative">
<img
src="/home/img_bg2.png"
width={745}
height={428}
alt=""
/>
<div className="absolute w-[770px] text-[32px] top-[184px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.customized }
</div>
</div>
</section>
<div className="w-full h-[403px] relative">
<img
className="absolute right-[0]"
src="/home/img_AB.png"
width={787}
height={403}
alt=""
/>
<div className="absolute w-[662px] text-[32px] top-[160px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.ABTesting}
</div>
<div className="absolute w-[680px] text-[32px] top-[204px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.iterateGameplay }
</div>
</div>
<div className="w-full h-[392px] relative">
<img
className="absolute"
src="/home/img_mutilan.png"
width={698}
height={392}
alt=""
/>
<div className="absolute w-[520px] text-[32px] top-[197px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.multiLanguage }
</div>
<div className="absolute w-[510px] text-[32px] top-[242px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.breakingGeographical }
</div>
</div>
<div className="w-full h-[317px] relative mt-[83px]">
<img
className="absolute right-[0]"
src="/home/img_Omnichannel.png"
width={742}
height={317}
alt=""
/>
<div className="absolute w-[680px] text-[32px] top-[124px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.allChannel }
</div>
<div className="absolute w-[680px] text-[32px] top-[169px] left-[165px] text-[#333333] text-left font-semibold">
{ dict.expandInfluence }
</div>
</div>
<div className="w-full h-[317px] relative mt-[83px]">
<img
className="absolute"
src="/home/img_3.png"
width={881}
height={357}
alt=""
/>
<div className="absolute w-[610px] text-[32px] top-[100px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.lightweightDeployment }
</div>
<div className="absolute w-[600px] text-[32px] top-[145px] right-[115px] text-[#333333] text-right font-semibold">
{ dict.simplifyProcess }
</div>
</div>
<div className="w-full flex flex-col justify-center items-center mt-[98px]">
<div
className="leading-[34px] text-[36px] font-black w-[150px] mb-[11px]"
style={{
background: 'linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)',
backgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}
>{ dict.caseGallery }</div>
<div className="text-[19px] text-[#59676C]">{ dict.clickNow }</div>
</div>
<section id="case">
<div className="w-full px-[40px] flex flex-wrap justify-center gap-[50px] mt-[34px] mb-[83px]">
{
caseList.map((item: CaseType, index: number) => {
return <div key={'key'+index} className="cursor-pointer">
<img
className="hover:scale-[1.17] hover:shadow-[0px_0px_20px_8px_#0988FF] rounded-[60px]
transition ease-in-out duration-300"
src={item.img}
width={300}
height={300}
alt=""
/>
</div>
})
}
<div className="w-[300px] h-[300px] flex flex-col justify-center items-center
text-[30px] text-[#3d3d3d] cursor-pointer rounded-[60px]"
style={{background: 'radial-gradient(61% 61% at 50% 50%, #FFFFFF 46%, #E1E1E1 100%)'}}>
<div>{ dict.seeMore }</div>
<div>{ dict.contactUs1 }</div>
</div>
</div>
</div>
</section>
<section id="contact">
<div className="w-full flex flex-col justify-center items-center mt-[98px] mb-[59px]">
<div
className="leading-[34px] text-[36px] font-black w-[150px] mb-[11px]"
style={{
background: 'linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)',
backgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}
>{ dict.contactUs }</div>
</div>
<div className="w-full mb-[60px]">
<Form />
</div>
<div className="w-full flex justify-center text-[19px] text-[#59676C] mb-[99px]">
{ dict.businessCooperation }info@soyootech.com
</div>
</section>
<div>
<Footer dict={dict} />
<section id="contact">
<div className="w-full flex flex-col justify-center items-center mt-[98px] mb-[59px]">
<div
className="leading-[34px] text-[36px] font-black w-[150px] mb-[11px]"
style={{
background: 'linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)',
backgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}
>{ dict.contactUs }</div>
</div>
<div className="w-full mb-[60px]">
<Form />
</div>
<div className="w-full flex justify-center text-[19px] text-[#59676C] pb-[52px] mb-[47px] border-b-1 border-solid border-[#D8D8D8]"
style={{ borderBottom: '1px solid #D8D8D8' }}
>
{ dict.businessCooperation }info@soyootech.com
</div>
</section>
<div>
<Footer dict={dict} />
</div>
</div>
</div>
</>

View File

@ -2,6 +2,7 @@
import Link from "next/link";
import { useState } from "react";
type NavType = {
name: string;
href: string;
@ -23,6 +24,7 @@ function SplitButton(props: {dict: Record<string, string>, lang: string}) {
/>
<div className="flex-1 text-[14px] text-[#333333] mx-[9px]">{ dict?.lang }</div>
<img
className={`transition-transform duration-300 transform rotate-0 ${show && 'rotate-180'}`}
src="/common/arrow.png"
width={10}
height={5}
@ -30,13 +32,12 @@ function SplitButton(props: {dict: Record<string, string>, lang: string}) {
/>
</div>
{
show && (
<Link href={lang === 'en' ? '/zh/home' : '/en/home'}>
<div className="absolute top-[30px] w-[129px] h-[28px] bg-[#EEF1F6] text-center">
<div>{dict?.lang1}</div>
<Link href={lang === 'zh' ? '/en/home.html' : '/index.html'}>
<div className={`absolute ${!show && 'hidden'} top-[30px] w-[129px] h-[28px]
bg-[#EEF1F6] text-center transition-all duration-300 origin-top group-hover:block`}>
<div className="text-[14px] text-[#333333]">{dict?.lang1}</div>
</div>
</Link>
)
}
</div>
</>
@ -63,7 +64,9 @@ export default function Header(props: {dict: Record<string, string>, lang: strin
},
]
return (<>
<div className={"flex items-center px-[20px] h-[80px]"}>
<div className={"flex items-center px-[20px] h-[80px] border-b-1 border-solid border-[#D8D8D8]"}
style={{ borderBottom: '1px solid #D8D8D8' }}
>
<img
src="/common/logo.png"
width={180}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -15,17 +15,11 @@ const geistMono = localFont({
});
export const metadata: Metadata = {
title: "soyoo",
title: "北京索游科技",
description: "Generated by create next app",
};
function RootLayout({ children }:{ children: ReactNode } ): ReactElement {
// const languages = navigator.languages;
// if(languages[0] === 'zh-CN') {
// redirect('/zh/home')
// } else {
// redirect('/en/home')
// }
return (
<html lang="en">
<body

View File

@ -18,7 +18,7 @@
"simplifyProcess": "Simplify the user decision-making process, easy to track the progress of each stage",
"clickNow": "Click on the icon to experience it now",
"seeMore": "Want to see more?",
"contactUs!": "Contact us!",
"contactUs1": "Contact us!",
"businessCooperation": "Business Cooperation/Job Hunting:",
"addWeChat": "Add WeChat to enjoy exclusive services",
"emailContact": "Email Contact",

View File

@ -18,7 +18,7 @@
"simplifyProcess": "简化用户决策流程,方便追踪各阶段进度",
"clickNow": "点击图标 立即体验",
"seeMore": "想看更多?",
"contactUs!": "联系我们!",
"contactUs1": "联系我们!",
"businessCooperation": "商务合作/求职:",
"addWeChat": "添加微信,享受专属服务",
"emailContact": "邮件联系",