Merge remote-tracking branch 'origin/feature/ae-lottie'

main
guofei 2025-02-22 17:34:17 +08:00
commit 310dbbb495
16 changed files with 327 additions and 118 deletions

85
package-lock.json generated
View File

@ -12,17 +12,23 @@
"@emotion/styled": "^11.13.0", "@emotion/styled": "^11.13.0",
"@formatjs/intl-localematcher": "^0.5.5", "@formatjs/intl-localematcher": "^0.5.5",
"@mui/material": "^6.1.3", "@mui/material": "^6.1.3",
"lib-flexible": "^0.3.2",
"lottie-react": "^2.4.1",
"lottie-web": "^5.12.2",
"negotiator": "^0.6.3", "negotiator": "^0.6.3",
"next": "14.2.15", "next": "14.2.15",
"next-intl": "^3.21.1", "next-intl": "^3.21.1",
"postcss-pxtorem": "^6.1.0", "postcss-pxtorem": "^6.1.0",
"react": "^18", "react": "^18",
"react-dom": "^18" "react-dom": "^18",
"react-fast-marquee": "^1.6.5",
"react-lottie": "^1.2.10"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20", "@types/node": "^20",
"@types/react": "^18", "@types/react": "^18",
"@types/react-dom": "^18", "@types/react-dom": "^18",
"@types/react-lottie": "^1.2.10",
"eslint": "^8", "eslint": "^8",
"eslint-config-next": "14.2.15", "eslint-config-next": "14.2.15",
"postcss": "^8", "postcss": "^8",
@ -1183,6 +1189,15 @@
"@types/react": "*" "@types/react": "*"
} }
}, },
"node_modules/@types/react-lottie": {
"version": "1.2.10",
"resolved": "https://registry.npmmirror.com/@types/react-lottie/-/react-lottie-1.2.10.tgz",
"integrity": "sha512-rCd1p3US4ELKJlqwVnP0h5b24zt5p9OCvKUoNpYExLqwbFZMWEiJ6EGLMmH7nmq5V7KomBIbWO2X/XRFsL0vCA==",
"dev": true,
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/react-transition-group": { "node_modules/@types/react-transition-group": {
"version": "4.4.11", "version": "4.4.11",
"resolved": "https://registry.npmmirror.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", "resolved": "https://registry.npmmirror.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
@ -1742,6 +1757,20 @@
"npm": ">=6" "npm": ">=6"
} }
}, },
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"node_modules/babel-runtime/node_modules/regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
@ -1969,6 +1998,13 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"node_modules/cosmiconfig": { "node_modules/cosmiconfig": {
"version": "7.1.0", "version": "7.1.0",
"resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
@ -4095,6 +4131,11 @@
"node": ">= 0.8.0" "node": ">= 0.8.0"
} }
}, },
"node_modules/lib-flexible": {
"version": "0.3.2",
"resolved": "https://registry.npmmirror.com/lib-flexible/-/lib-flexible-0.3.2.tgz",
"integrity": "sha512-9yowMWA70tKhKdCJDaltY0mNQG4OWo7pWKScnTp9aiSxS7s20ZYlwBRE3335nweOf5qKXVC7sDxJwMPM8/MFZg=="
},
"node_modules/lilconfig": { "node_modules/lilconfig": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
@ -4146,6 +4187,23 @@
"loose-envify": "cli.js" "loose-envify": "cli.js"
} }
}, },
"node_modules/lottie-react": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/lottie-react/-/lottie-react-2.4.1.tgz",
"integrity": "sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw==",
"dependencies": {
"lottie-web": "^5.10.2"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/lottie-web": {
"version": "5.12.2",
"resolved": "https://registry.npmmirror.com/lottie-web/-/lottie-web-5.12.2.tgz",
"integrity": "sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg=="
},
"node_modules/lru-cache": { "node_modules/lru-cache": {
"version": "10.4.3", "version": "10.4.3",
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz",
@ -4965,12 +5023,37 @@
"react": "^18.3.1" "react": "^18.3.1"
} }
}, },
"node_modules/react-fast-marquee": {
"version": "1.6.5",
"resolved": "https://registry.npmmirror.com/react-fast-marquee/-/react-fast-marquee-1.6.5.tgz",
"integrity": "sha512-swDnPqrT2XISAih0o74zQVE2wQJFMvkx+9VZXYYNSLb/CUcAzU9pNj637Ar2+hyRw6b4tP6xh4GQZip2ZCpQpg==",
"peerDependencies": {
"react": ">= 16.8.0 || ^18.0.0",
"react-dom": ">= 16.8.0 || ^18.0.0"
}
},
"node_modules/react-is": { "node_modules/react-is": {
"version": "16.13.1", "version": "16.13.1",
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/react-lottie": {
"version": "1.2.10",
"resolved": "https://registry.npmmirror.com/react-lottie/-/react-lottie-1.2.10.tgz",
"integrity": "sha512-x0eWX3Z6zSx1XM5QSjnLupc6D22LlMCB0PH06O/N/epR2hsLaj1Vxd9RtMnbbEHjJ/qlsgHJ6bpN3vnZI92hjw==",
"dependencies": {
"babel-runtime": "^6.26.0",
"lottie-web": "^5.12.2",
"prop-types": "^15.6.1"
},
"funding": {
"url": "https://opencollective.com/react-lottie"
},
"peerDependencies": {
"react": ">=15.0.0"
}
},
"node_modules/react-transition-group": { "node_modules/react-transition-group": {
"version": "4.4.5", "version": "4.4.5",
"resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.5.tgz", "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.5.tgz",

View File

@ -14,22 +14,26 @@
"@formatjs/intl-localematcher": "^0.5.5", "@formatjs/intl-localematcher": "^0.5.5",
"@mui/material": "^6.1.3", "@mui/material": "^6.1.3",
"lib-flexible": "^0.3.2", "lib-flexible": "^0.3.2",
"lottie-react": "^2.4.1",
"lottie-web": "^5.12.2",
"negotiator": "^0.6.3", "negotiator": "^0.6.3",
"next": "14.2.15", "next": "14.2.15",
"next-intl": "^3.21.1", "next-intl": "^3.21.1",
"postcss-pxtorem": "^6.1.0", "postcss-pxtorem": "^6.1.0",
"react": "^18", "react": "^18",
"react-dom": "^18", "react-dom": "^18",
"react-fast-marquee": "^1.6.5" "react-fast-marquee": "^1.6.5",
"react-lottie": "^1.2.10"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20", "@types/node": "^20",
"@types/react": "^18", "@types/react": "^18",
"@types/react-dom": "^18", "@types/react-dom": "^18",
"@types/react-lottie": "^1.2.10",
"eslint": "^8", "eslint": "^8",
"eslint-config-next": "14.2.15", "eslint-config-next": "14.2.15",
"postcss": "^8", "postcss": "^8",
"tailwindcss": "^3.4.1", "tailwindcss": "^3.4.1",
"typescript": "^5" "typescript": "^5"
} }
} }

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

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

@ -2,124 +2,147 @@ import { getDictionary } from "@/dictionaries";
import Form from "./components/form"; import Form from "./components/form";
import Header from "@/app/components/header"; import Header from "@/app/components/header";
import Footer from "@/app/components/footer"; import Footer from "@/app/components/footer";
import Examples from "../components/Examples"; import Examples from "../components/Examples";
import ChannelSwiper from "../components/ChannelSwiper"; import ChannelSwiper from "../components/ChannelSwiper";
import Anim1 from "../components/lottieAnims/Anim1";
import CustomAnim from "../components/lottieAnims/Anim2";
import ABAnim from "../components/lottieAnims/Anim3";
import MultiLanguage from "../components/lottieAnims/MultiLanguage";
import MultiChannel from "../components/lottieAnims/MultiChannel";
import LightWeight from "../components/lottieAnims/LightWeight";
export default async function Home(props: { params: { lang: string[] } }) { export default async function Home(props: { params: { lang: string[] } }) {
const lang = props.params.lang || ["zh"]; const lang = props.params.lang || ["zh"];
const dict = await getDictionary(lang[0]); const dict = await getDictionary(lang[0]);
return ( return (
<> <>
<div className="w-full flex flex-col items-center"> <div className="w-full flex flex-col items-center">
<Header dict={dict} lang={lang} /> <Header dict={dict} lang={lang} />
<div className="w-[1440px] relative pt-[80px]"> <div className="w-[1440px] relative pt-[80px]">
<div className="main"> <div className="main">
<div className="w-full h-[740px] pl-[72px] relative" id="home"> <div className="w-full h-[740px] pl-[72px] relative" id="home">
<img className="absolute right-[-40px] w-[1520px] " src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_header.png" alt="" /> {/* <img className="absolute right-[-40px] w-[1520px] " src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_header.png" alt="" /> */}
<div className="text-[46px] leading-[62px] w-[639px] text-center pt-[279px] absolute"> <Anim1 />
<h2
className="font-black"
style={{
background: "linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)",
backgroundClip: "text",
WebkitTextFillColor: "transparent",
backgroundSize: "contain",
}}>
{dict.FocusingOnPlayableAds}
</h2>
<h2
className="font-black"
style={{
background: "linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)",
backgroundClip: "text",
WebkitTextFillColor: "transparent",
}}>
{dict.goOverseas}
</h2>
</div>
</div>
<div className="w-full h-[428px] relative" id="service">
<img className="absolute left-[-214px] w-[969px] h-[428px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_bg2.png" alt="" />
<h2 className="absolute w-[770px] text-[32px] top-[184px] right-[95px] text-[#333333] text-right font-semibold">{dict.customized}</h2>
</div>
<div className="w-full h-[403px] relative "> <div className="text-[46px] leading-[62px] w-[639px] text-center pt-[279px] absolute">
<img className="absolute right-[-100px] w-[888px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_AB.png" alt="" /> <h2
<h2 className="absolute w-[662px] text-[32px] top-[160px] left-[105px] text-[#333333] text-left font-semibold">{dict.ABTesting}</h2> className="font-black"
<h2 className="absolute w-[680px] text-[32px] top-[204px] left-[105px] text-[#333333] text-left font-semibold">{dict.iterateGameplay}</h2> style={{
</div> background: "linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)",
<div className="w-full h-[392px] relative"> backgroundClip: "text",
<img className="absolute w-[731px] left-[-33px] top-[-20px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_mutilan.png" alt="" /> WebkitTextFillColor: "transparent",
<h2 className="absolute w-[520px] text-[32px] top-[197px] right-[95px] text-[#333333] text-right font-semibold">{dict.multiLanguage}</h2> backgroundSize: "contain",
<h2 className="absolute w-[520px] text-[32px] top-[242px] right-[95px] text-[#333333] text-right font-semibold">{dict.breakingGeographical}</h2> }}
</div> >
<div className="w-full h-[317px] relative mt-[83px]"> {dict.FocusingOnPlayableAds}
<img className="absolute right-0 w-[742px] h-[317px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_Omnichannel.png" alt="" /> </h2>
<h2 className="absolute w-[680px] text-[32px] top-[124px] left-[105px] text-[#333333] text-left font-semibold">{dict.allChannel}</h2> <h2
<h2 className="absolute w-[680px] text-[32px] top-[169px] left-[105px] text-[#333333] text-left font-semibold">{dict.expandInfluence}</h2> className="font-black"
</div> style={{
background: "linear-gradient(106deg, #8EC2EA 0%, #4174ED 93%)",
backgroundClip: "text",
WebkitTextFillColor: "transparent",
}}
>
{dict.goOverseas}
</h2>
</div>
</div>
<div className="w-full h-[428px] relative" id="service">
{/* <img className="absolute left-[-214px] w-[969px] h-[428px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_bg2.png" alt="" /> */}
<CustomAnim />
<h2 className="absolute w-[770px] text-[32px] top-[184px] right-[95px] text-[#6F95EB] text-right font-semibold">{dict.customized}</h2>
<h2 className="absolute w-[770px] text-[28px] top-[244px] right-[95px] text-[#737373] text-right">{dict.customizedSubTitle}</h2>
<h2 className="absolute w-[770px] text-[28px] top-[282px] right-[95px] text-[#737373] text-right">{dict.customizedSubTitle1}</h2>
</div>
<div className="w-full h-[317px] relative mt-[120px]"> <div className="w-full h-[403px] relative ">
<img className="absolute w-[908px] h-[356px] left-[-40px] top-[-30px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_3.png" alt="" /> {/* <img className="absolute right-[-100px] w-[888px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_AB.png" alt="" /> */}
<h2 className="absolute w-[691px] text-[32px] top-[100px] right-[95px] text-[#333333] text-right font-semibold">{dict.lightweightDeployment}</h2> <ABAnim />
<h2 className="absolute w-[712px] text-[32px] top-[145px] right-[95px] text-[#333333] text-right font-semibold">{dict.simplifyProcess}</h2> <h2 className="absolute w-[662px] text-[32px] top-[160px] left-[105px] text-[#6F95EB] text-left font-semibold">{dict.ABTesting}</h2>
</div> <h2 className="absolute w-[662px] text-[32px] top-[210px] left-[105px] text-[#737373] text-left">{dict.iterateGameplay1}</h2>
<h2 className="absolute w-[680px] text-[32px] top-[249px] left-[105px] text-[#737373] text-left">{dict.iterateGameplay2}</h2>
</div>
<div className="w-full h-[392px] relative">
{/* <img className="absolute w-[731px] left-[-33px] top-[-20px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_mutilan.png" alt="" /> */}
<MultiLanguage />
<h2 className="absolute w-[520px] text-[32px] top-[197px] right-[95px] text-[#6F95EB] text-right font-semibold">{dict.multiLanguage}</h2>
<h2 className="absolute w-[520px] text-[32px] top-[247px] right-[95px] text-[#737373] text-right">{dict.multiLanguage1}</h2>
<h2 className="absolute w-[520px] text-[32px] top-[289px] right-[95px] text-[#737373] text-right">{dict.multiLanguage2}</h2>
</div>
<div className="w-full h-[317px] relative mt-[83px]">
{/* <img className="absolute right-0 w-[742px] h-[317px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_Omnichannel.png" alt="" /> */}
<MultiChannel />
<h2 className="absolute w-[680px] text-[32px] top-[124px] left-[105px] text-[#6F95EB] text-left font-semibold">{dict.allChannel}</h2>
<h2 className="absolute w-[680px] text-[32px] top-[170px] left-[105px] text-[#737373] text-left">{dict.allChannel1}</h2>
<h2 className="absolute w-[680px] text-[32px] top-[210px] left-[105px] text-[#737373] text-left">{dict.allChannel2}</h2>
</div>
<div className="w-full flex flex-col justify-center items-center mt-[98px] mb-[50px]"> <div className="w-full h-[317px] relative mt-[120px]">
<h2 {/* <img className="absolute w-[908px] h-[356px] left-[-40px] top-[-30px]" src="https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/home/img_3.png" alt="" /> */}
className="leading-[42px] text-[36px] font-black w-[350px] mb-[11px] text-center" <LightWeight />
style={{ <h2 className="absolute w-[691px] text-[32px] top-[100px] right-[95px] text-[#6F95EB] text-right font-semibold">{dict.lightweightDeployment}</h2>
background: "linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)", <h2 className="absolute w-[712px] text-[32px] top-[150px] right-[95px] text-[#737373] text-right">{dict.lightweightDeployment1}</h2>
backgroundClip: "text", <h2 className="absolute w-[712px] text-[32px] top-[190px] right-[95px] text-[#737373] text-right">{dict.lightweightDeployment2}</h2>
WebkitTextFillColor: "transparent", </div>
}}> <div className="w-full flex flex-col justify-center items-center mt-[98px] mb-[50px]">
{dict.channel} <h2
</h2> className="leading-[42px] text-[36px] font-black w-[350px] mb-[11px] text-center"
</div> style={{
<ChannelSwiper /> background: "linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)",
backgroundClip: "text",
WebkitTextFillColor: "transparent",
}}
>
{dict.channel}
</h2>
</div>
<ChannelSwiper />
<div className="w-full flex flex-col justify-center items-center mt-[98px]" id="case"> <div className="w-full flex flex-col justify-center items-center mt-[98px]" id="case">
<h2 <h2
className="leading-[42px] text-[36px] font-black w-[300px] mb-[11px] text-center" className="leading-[42px] text-[36px] font-black w-[300px] mb-[11px] text-center"
style={{ style={{
background: "linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)", background: "linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)",
backgroundClip: "text", backgroundClip: "text",
WebkitTextFillColor: "transparent", WebkitTextFillColor: "transparent",
}}> }}
{dict.caseGallery} >
</h2> {dict.caseGallery}
{/* <div className="text-[19px] text-[#59676C]">{ dict.clickNow }</div> */} </h2>
</div> {/* <div className="text-[19px] text-[#59676C]">{ dict.clickNow }</div> */}
<Examples dict={dict} lang={lang} /> </div>
<Examples dict={dict} lang={lang} />
<div className="w-full flex flex-col justify-center items-center mt-[98px] mb-[59px]" id="contact"> <div className="w-full flex flex-col justify-center items-center mt-[98px] mb-[59px]" id="contact">
<h2 <h2
className="leading-[34px] text-[36px] font-black w-[300px] mb-[11px] text-center" className="leading-[34px] text-[36px] font-black w-[300px] mb-[11px] text-center"
style={{ style={{
background: "linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)", background: "linear-gradient(90deg, #93BBE6 0%, #4C76E4 100%)",
backgroundClip: "text", backgroundClip: "text",
WebkitTextFillColor: "transparent", WebkitTextFillColor: "transparent",
}}> }}
{dict.contactUs} >
</h2> {dict.contactUs}
</div> </h2>
<div className="w-full mb-[60px]"> </div>
<Form /> <div className="w-full mb-[60px]">
</div> <Form />
<div </div>
className="w-full flex justify-center text-[19px] text-[#59676C] pb-[52px] mb-[47px] border-b-1 border-solid border-[#D8D8D8]" <div
style={{ borderBottom: "1px solid #D8D8D8" }}> className="w-full flex justify-center text-[19px] text-[#59676C] pb-[52px] mb-[47px] border-b-1 border-solid border-[#D8D8D8]"
{dict.businessCooperation}info@soyootech.com style={{ borderBottom: "1px solid #D8D8D8" }}
</div> >
<div> {dict.businessCooperation}info@soyootech.com
<Footer dict={dict} /> </div>
</div> <div>
</div> <Footer dict={dict} />
</div> </div>
</div> </div>
</> </div>
); </div>
</>
);
} }

View File

@ -0,0 +1,14 @@
"use client";
import React from "react";
import Lottie from "lottie-react";
import animationData from "public/aeJson/logoAnim.json";
const logoAnim = () => {
return (
<div className="absolute w-[908px] h-[356px] right-[-40px]" style={{ transform: "translate(-40px, 4px)" }}>
<Lottie animationData={animationData} loop={true} autoplay />
</div>
);
};
export default logoAnim;

View File

@ -0,0 +1,14 @@
"use client";
import React from "react";
import Lottie from "lottie-react";
import animationData from "public/aeJson/custom.json";
const Anim1 = () => {
return (
<div className="absolute top-[30px]">
<Lottie animationData={animationData} loop={true} autoplay className="translate-x-[24px] translate-y-[3 0px]" />
</div>
);
};
export default Anim1;

View File

@ -0,0 +1,14 @@
"use client";
import React from "react";
import Lottie from "lottie-react";
import ABData from "public/aeJson/AB.json";
const Anim1 = () => {
return (
<div className="absolute right-[-100px] w-[888px]">
<Lottie animationData={ABData} loop={true} autoplay className="translate-x-[-93px] translate-y-[-12px]" />
</div>
);
};
export default Anim1;

View File

@ -0,0 +1,14 @@
"use client";
import React from "react";
import Lottie from "lottie-react";
import LightWeight from "public/aeJson/LightWeight.json";
const LightWeightAnim = () => {
return (
<div className="absolute w-[908px] h-[356px] left-[-40px] top-[-30px]">
<Lottie animationData={LightWeight} loop={true} autoplay style={{ transform: "scale(0.98) translate(10px, 0)" }} />
</div>
);
};
export default LightWeightAnim;

View File

@ -0,0 +1,14 @@
"use client";
import React from "react";
import Lottie from "lottie-react";
import MultiChannl from "public/aeJson/MultiChannl.json";
const Anim1 = () => {
return (
<div className="absolute right-0 w-[742px] h-[317px]">
<Lottie animationData={MultiChannl} loop={true} autoplay style={{ transform: "translate(-45px, 4px)" }} />
</div>
);
};
export default Anim1;

View File

@ -0,0 +1,14 @@
"use client";
import React from "react";
import Lottie from "lottie-react";
import MultiLanguage from "public/aeJson/MultiLanguage.json";
const Anim1 = () => {
return (
<div className="absolute w-[731px] left-[-33px] top-[-20px]">
<Lottie animationData={MultiLanguage} loop={true} autoplay style={{ transform: "translate(35px, 74px)" }} />
</div>
);
};
export default Anim1;

View File

@ -7,14 +7,23 @@
"contactUs": "联系我们", "contactUs": "联系我们",
"FocusingOnPlayableAds": "聚焦试玩广告", "FocusingOnPlayableAds": "聚焦试玩广告",
"goOverseas": "全面助力游戏出海", "goOverseas": "全面助力游戏出海",
"customized": "100%内容定制,根据项目需求量身打造试玩广告方案 确保完全符合产品形象与市场定位", "customized": "100%内容定制",
"ABTesting": "支持 A/B 测试,通过优化素材内容", "customizedSubTitle": "根据项目需求量身打造试玩广告方案",
"iterateGameplay": "迭代游戏玩法,全面提升提升转化率与用户体验", "customizedSubTitle1": "确保完全符合产品形象与市场定位",
"multiLanguage": "多语言支持,覆盖全球多种语言版本", "ABTesting": "支持 A/B 测试",
"iterateGameplay1": "通过优化素材内容,迭代游戏玩法",
"iterateGameplay2": "全面提升提升转化率与用户体验",
"multiLanguage": "多语言支持",
"multiLanguage1": "覆盖全球多种语言版本",
"multiLanguage2": "打破地域限制,实现国际化布局",
"breakingGeographical": "打破地域限制,实现国际化布局", "breakingGeographical": "打破地域限制,实现国际化布局",
"allChannel": "全渠道适配,接入各大主流分发渠道", "allChannel": "全渠道适配",
"allChannel1": "接入各大主流分发渠道",
"allChannel2": "让您的产品触达更多潜在用户,扩大品牌影响力",
"expandInfluence": "让您的产品触达更多潜在用户,扩大品牌影响力", "expandInfluence": "让您的产品触达更多潜在用户,扩大品牌影响力",
"lightweightDeployment": "轻量化部署,提供便捷的产品效果预览方案", "lightweightDeployment": "轻量化部署",
"lightweightDeployment1": "提供便捷的产品效果预览方案",
"lightweightDeployment2": "简化用户决策流程,方便追踪各阶段进度",
"simplifyProcess": "简化用户决策流程,方便追踪各阶段进度", "simplifyProcess": "简化用户决策流程,方便追踪各阶段进度",
"clickNow": "点击图标 立即体验", "clickNow": "点击图标 立即体验",
"seeMore": "想看更多?", "seeMore": "想看更多?",