Browse Source

'UI快完成一般'

main
hflllll 5 months ago
parent
commit
8887954b2d
26 changed files with 477 additions and 201 deletions
  1. BIN
      build/MOSEVideo.mp4
  2. +0
    -1
      build/assets/About-DHfW6jiL.js
  3. +0
    -1
      build/assets/Ecosystem-DbnhdMk1.css
  4. +0
    -1
      build/assets/Ecosystem-yQ_fTlJF.js
  5. +0
    -1
      build/assets/Home-C73PY1Y3.js
  6. BIN
      build/assets/MOSEVideo-DEngvMvl.mp4
  7. +0
    -1
      build/assets/NotFound-B14OkF4Z.js
  8. BIN
      build/assets/images-yNcdCt6j.png
  9. +0
    -1
      build/assets/index-DolG3GU9.css
  10. +0
    -40
      build/assets/index-Doz-m8QP.js
  11. BIN
      build/images.png
  12. +0
    -20
      build/index.html
  13. +0
    -1
      build/vite.svg
  14. +23
    -1
      package-lock.json
  15. +6
    -3
      package.json
  16. +49
    -0
      src/assets/animations.css
  17. +26
    -21
      src/components/layout/Footer.vue
  18. +33
    -16
      src/components/layout/NavBar.vue
  19. +67
    -0
      src/i18n/locales/en.json
  20. +67
    -0
      src/i18n/locales/ja.json
  21. +67
    -0
      src/i18n/locales/zh.json
  22. +6
    -0
      src/main.ts
  23. +55
    -38
      src/views/About.vue
  24. +55
    -39
      src/views/Ecosystem.vue
  25. +16
    -16
      src/views/Home.vue
  26. +7
    -0
      src/vite-env.d.ts

BIN
build/MOSEVideo.mp4 View File


+ 0
- 1
build/assets/About-DHfW6jiL.js
File diff suppressed because it is too large
View File


+ 0
- 1
build/assets/Ecosystem-DbnhdMk1.css View File

@ -1 +0,0 @@
.hover\:transform[data-v-6da6eaa8]:hover{transform:translateY(-5px)}

+ 0
- 1
build/assets/Ecosystem-yQ_fTlJF.js
File diff suppressed because it is too large
View File


+ 0
- 1
build/assets/Home-C73PY1Y3.js View File

@ -1 +0,0 @@
import{d as i,u as n,c as d,a as t,t as e,b as l,e as c,o as x}from"./index-Doz-m8QP.js";const u="/MOSE_Web/assets/MOSEVideo-DEngvMvl.mp4",p="/MOSE_Web/assets/images-yNcdCt6j.png",m={class:"bg-background min-h-screen"},b={class:"relative py-32 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden"},g={class:"container mx-auto relative z-10"},h={class:"max-w-3xl mx-auto text-center"},y={class:"flex flex-col sm:flex-row justify-center gap-4"},f={href:"#",class:"px-8 py-3 bg-transparent border border-primary-light text-primary-light rounded-lg hover:bg-primary-light hover:bg-opacity-10 transition-colors duration-300"},v={class:"py-20 px-6 md:px-12 lg:px-24 bg-primary bg-opacity-10 relative overflow-hidden"},_={class:"container mx-auto relative z-10"},w={class:"max-w-3xl mx-auto text-center"},k={class:"text-2xl md:text-3xl font-bold text-text mb-4"},E={class:"text-text-secondary mb-8"},B=i({__name:"Home",setup(M){const{t:s}=n(),a=c(),r=()=>{a.push("/ecosystem")};return(S,o)=>(x(),d("div",m,[t("section",b,[t("div",g,[t("div",h,[o[0]||(o[0]=t("h1",{class:"text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6"}," MOSE Blockchain ",-1)),o[1]||(o[1]=t("p",{class:"text-lg md:text-xl text-text-secondary mb-8"}," Next-generation blockchain platform for high performance, security, and scalability ",-1)),t("div",y,[t("button",{onClick:r,class:"px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button"},e(l(s)("ecosystem.title")),1),t("a",f,e(l(s)("ecosystem.resources.docs")),1)])])]),o[2]||(o[2]=t("div",{class:"absolute top-0 left-0 w-full h-full overflow-hidden opacity-10"},[t("div",{class:"absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl"}),t("div",{class:"absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl"}),t("div",{class:"absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl"})],-1))]),o[4]||(o[4]=t("section",{class:"py-16 px-6 md:px-12 lg:px-24"},[t("div",{class:"container mx-auto"},[t("div",{class:"max-w-4xl mx-auto bg-background-light rounded-2xl overflow-hidden shadow-card"},[t("video",{src:u,controls:"",class:"w-full h-auto",poster:p})])])],-1)),t("section",v,[t("div",_,[t("div",w,[t("h2",k,e(l(s)("ecosystem.join.title")),1),t("p",E,e(l(s)("ecosystem.join.subtitle")),1),t("button",{onClick:r,class:"inline-block px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button"},e(l(s)("ecosystem.title")),1)])]),o[3]||(o[3]=t("div",{class:"absolute top-0 left-0 w-full h-full overflow-hidden opacity-30"},[t("div",{class:"absolute top-0 right-0 w-64 h-64 rounded-full bg-primary blur-3xl"}),t("div",{class:"absolute bottom-0 left-0 w-80 h-80 rounded-full bg-primary blur-3xl"})],-1))])]))}});export{B as default};

BIN
build/assets/MOSEVideo-DEngvMvl.mp4 View File


+ 0
- 1
build/assets/NotFound-B14OkF4Z.js View File

@ -1 +0,0 @@
import{d as r,c as n,a as e,e as a,o as x}from"./index-Doz-m8QP.js";const l={class:"bg-background min-h-screen flex items-center justify-center px-6 py-24"},p=r({__name:"NotFound",setup(d){const o=a(),s=()=>{o.push("/")};return(m,t)=>(x(),n("div",l,[e("div",{class:"text-center"},[t[0]||(t[0]=e("h1",{class:"text-6xl md:text-8xl font-bold text-primary-light mb-4"},"404",-1)),t[1]||(t[1]=e("h2",{class:"text-2xl md:text-3xl font-bold text-text mb-6"},"页面未找到",-1)),t[2]||(t[2]=e("p",{class:"text-text-secondary mb-8 max-w-md mx-auto"}," 您访问的页面不存在或已被移除。请检查URL或返回首页。 ",-1)),e("button",{onClick:s,class:"px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button"}," 返回首页 ")])]))}});export{p as default};

BIN
build/assets/images-yNcdCt6j.png View File

Before After
Width: 225  |  Height: 225  |  Size: 4.7 KiB

+ 0
- 1
build/assets/index-DolG3GU9.css
File diff suppressed because it is too large
View File


+ 0
- 40
build/assets/index-Doz-m8QP.js
File diff suppressed because it is too large
View File


BIN
build/images.png View File

Before After
Width: 225  |  Height: 225  |  Size: 4.7 KiB

+ 0
- 20
build/index.html View File

@ -1,20 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/MOSE_Web/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="MOSE Blockchain - Next-generation blockchain platform for high performance, security, and scalability" />
<meta name="keywords" content="blockchain, crypto, MOSE, DeFi, NFT, DAO" />
<title>MOSE Blockchain</title>
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Montserrat:wght@500;600;700;800&display=swap" rel="stylesheet">
<script type="module" crossorigin src="/MOSE_Web/assets/index-Doz-m8QP.js"></script>
<link rel="stylesheet" crossorigin href="/MOSE_Web/assets/index-DolG3GU9.css">
</head>
<body class="bg-background">
<div id="app"></div>
</body>
</html>

+ 0
- 1
build/vite.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

+ 23
- 1
package-lock.json View File

@ -9,10 +9,13 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@tailwindcss/vite": "^4.1.11", "@tailwindcss/vite": "^4.1.11",
"animate.css": "^4.1.1",
"tailwindcss": "^4.1.11", "tailwindcss": "^4.1.11",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-i18n": "^11.1.9", "vue-i18n": "^11.1.9",
"vue-router": "^4.5.1"
"vue-router": "^4.5.1",
"wow.js": "^1.2.2",
"wowjs": "^1.1.3"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^24.0.13", "@types/node": "^24.0.13",
@ -1280,6 +1283,11 @@
"integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==",
"dev": true "dev": true
}, },
"node_modules/animate.css": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz",
"integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
},
"node_modules/array-union": { "node_modules/array-union": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
@ -2564,6 +2572,20 @@
"typescript": ">=5.0.0" "typescript": ">=5.0.0"
} }
}, },
"node_modules/wow.js": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/wow.js/-/wow.js-1.2.2.tgz",
"integrity": "sha512-YTW9eiZimHCJDWofsiz2507txaPteUiQD461I/D8533AiRAn3+Y68/1LDuQ3OTgPjagGZLPYKrpoSgjzeQrO6A==",
"deprecated": "deprecated in favour of aos (Animate On Scroll)"
},
"node_modules/wowjs": {
"version": "1.1.3",
"resolved": "https://registry.npmmirror.com/wowjs/-/wowjs-1.1.3.tgz",
"integrity": "sha512-HQp1gi56wYmjOYYOMZ08TnDGpT+AO21RJVa0t1NJ3jU8l3dMyP+sY7TO/lilzVp4JFjW88bBY87RnpxdpSKofA==",
"dependencies": {
"animate.css": "latest"
}
},
"node_modules/yallist": { "node_modules/yallist": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz",


+ 6
- 3
package.json View File

@ -5,16 +5,19 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vue-tsc -b && vite build --base=/MOSE_Web",
"build": "vue-tsc -b && vite build",
"preview": "vite preview", "preview": "vite preview",
"deploy": "gh-pages -d build"
"gitBuild": "vue-tsc -b && vite build --base=/home"
}, },
"dependencies": { "dependencies": {
"@tailwindcss/vite": "^4.1.11", "@tailwindcss/vite": "^4.1.11",
"animate.css": "^4.1.1",
"tailwindcss": "^4.1.11", "tailwindcss": "^4.1.11",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-i18n": "^11.1.9", "vue-i18n": "^11.1.9",
"vue-router": "^4.5.1"
"vue-router": "^4.5.1",
"wow.js": "^1.2.2",
"wowjs": "^1.1.3"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^24.0.13", "@types/node": "^24.0.13",


+ 49
- 0
src/assets/animations.css View File

@ -0,0 +1,49 @@
/* 全局动画样式 */
/* 使WOW元素在加载前不可见 */
.wow {
visibility: hidden;
}
/* 自定义动画持续时间 */
.animate__animated.animate__duration-1s {
animation-duration: 1s;
}
.animate__animated.animate__duration-2s {
animation-duration: 2s;
}
.animate__animated.animate__duration-3s {
animation-duration: 3s;
}
/* 自定义动画延迟 */
.animate__animated.animate__delay-0-5s {
animation-delay: 0.5s;
}
.animate__animated.animate__delay-1s {
animation-delay: 1s;
}
.animate__animated.animate__delay-1-5s {
animation-delay: 1.5s;
}
.animate__animated.animate__delay-2s {
animation-delay: 2s;
}
/* 自定义动画重复次数 */
.animate__animated.animate__repeat-2 {
animation-iteration-count: 2;
}
.animate__animated.animate__repeat-3 {
animation-iteration-count: 3;
}
.animate__animated.animate__infinite {
animation-iteration-count: infinite;
}

+ 26
- 21
src/components/layout/Footer.vue View File

@ -21,23 +21,28 @@ const currentYear = new Date().getFullYear();
<!-- Footer Top Section --> <!-- Footer Top Section -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 mb-12"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 mb-12">
<!-- Logo & Description --> <!-- Logo & Description -->
<div>
<div class="wow animate__animated animate__fadeIn">
<div class="flex items-center mb-4"> <div class="flex items-center mb-4">
<img src="/public/vite.svg" alt="MOSE Logo" class="h-8 w-auto mr-2" /> <img src="/public/vite.svg" alt="MOSE Logo" class="h-8 w-auto mr-2" />
<span class="text-xl font-bold text-primary-light">MOSE</span> <span class="text-xl font-bold text-primary-light">MOSE</span>
</div> </div>
<p class="text-sm mb-6"> <p class="text-sm mb-6">
MOSE is a next-generation blockchain platform designed for high performance, security, and scalability.
{{ t('home.hero.subtitle') }}
</p> </p>
<!-- Social Links --> <!-- Social Links -->
<div class="flex space-x-4"> <div class="flex space-x-4">
<a <a
v-for="link in socialLinks"
v-for="(link, index) in socialLinks"
:key="link.name" :key="link.name"
:href="link.url" :href="link.url"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="text-text-secondary hover:text-primary-light transition-colors duration-200"
class="text-text-secondary hover:text-primary-light transition-colors duration-200 wow animate__animated animate__fadeIn"
:class="{
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2,
'animate__delay-1-5s': index === 3
}"
> >
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"> <svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24">
<!-- Simplified SVG icons for demo purposes --> <!-- Simplified SVG icons for demo purposes -->
@ -51,48 +56,48 @@ const currentYear = new Date().getFullYear();
</div> </div>
<!-- Quick Links --> <!-- Quick Links -->
<div>
<div class="wow animate__animated animate__fadeIn animate__delay-0-5s">
<h3 class="text-lg font-medium text-text mb-4">{{ t('nav.ecosystem') }}</h3> <h3 class="text-lg font-medium text-text mb-4">{{ t('nav.ecosystem') }}</h3>
<ul class="space-y-2"> <ul class="space-y-2">
<li><router-link to="/ecosystem/defi" class="hover:text-primary-light transition-colors duration-200">DeFi</router-link></li>
<li><router-link to="/ecosystem/nft" class="hover:text-primary-light transition-colors duration-200">NFT</router-link></li>
<li><router-link to="/ecosystem/dao" class="hover:text-primary-light transition-colors duration-200">DAO</router-link></li>
<li><router-link to="/ecosystem/gaming" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.categories.gaming') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp"><router-link to="/ecosystem/defi" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.categories.defi') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-0-5s"><router-link to="/ecosystem/nft" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.categories.nft') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-1s"><router-link to="/ecosystem/dao" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.categories.dao') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-1-5s"><router-link to="/ecosystem/gaming" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.categories.gaming') }}</router-link></li>
</ul> </ul>
</div> </div>
<!-- Resources --> <!-- Resources -->
<div>
<div class="wow animate__animated animate__fadeIn animate__delay-1s">
<h3 class="text-lg font-medium text-text mb-4">{{ t('nav.resources') }}</h3> <h3 class="text-lg font-medium text-text mb-4">{{ t('nav.resources') }}</h3>
<ul class="space-y-2"> <ul class="space-y-2">
<li><router-link to="/resources/docs" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.docs') }}</router-link></li>
<li><router-link to="/resources/github" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.github') }}</router-link></li>
<li><router-link to="/resources/grants" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.grants') }}</router-link></li>
<li><router-link to="/resources/community" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.community') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp"><router-link to="/resources/docs" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.docs') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-0-5s"><router-link to="/resources/github" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.github') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-1s"><router-link to="/resources/grants" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.grants') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-1-5s"><router-link to="/resources/community" class="hover:text-primary-light transition-colors duration-200">{{ t('ecosystem.resources.community') }}</router-link></li>
</ul> </ul>
</div> </div>
<!-- Contact --> <!-- Contact -->
<div>
<div class="wow animate__animated animate__fadeIn animate__delay-1-5s">
<h3 class="text-lg font-medium text-text mb-4">{{ t('nav.contact') }}</h3> <h3 class="text-lg font-medium text-text mb-4">{{ t('nav.contact') }}</h3>
<ul class="space-y-2"> <ul class="space-y-2">
<li><a href="mailto:info@mose.io" class="hover:text-primary-light transition-colors duration-200">info@mose.io</a></li>
<li><a href="mailto:support@mose.io" class="hover:text-primary-light transition-colors duration-200">support@mose.io</a></li>
<li><router-link to="/contact" class="hover:text-primary-light transition-colors duration-200">{{ t('nav.contact') }}</router-link></li>
<li class="wow animate__animated animate__fadeInUp"><a href="mailto:info@mose.io" class="hover:text-primary-light transition-colors duration-200">{{ t('contact.email.info') }}</a></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-0-5s"><a href="mailto:support@mose.io" class="hover:text-primary-light transition-colors duration-200">{{ t('contact.email.support') }}</a></li>
<li class="wow animate__animated animate__fadeInUp animate__delay-1s"><router-link to="/contact" class="hover:text-primary-light transition-colors duration-200">{{ t('nav.contact') }}</router-link></li>
</ul> </ul>
</div> </div>
</div> </div>
<!-- Footer Bottom --> <!-- Footer Bottom -->
<div class="pt-8 border-t border-background-light flex flex-col md:flex-row justify-between items-center"> <div class="pt-8 border-t border-background-light flex flex-col md:flex-row justify-between items-center">
<p class="text-sm mb-4 md:mb-0">
<p class="text-sm mb-4 md:mb-0 wow animate__animated animate__fadeIn">
&copy; {{ currentYear }} MOSE. {{ t('footer.rights') }}. &copy; {{ currentYear }} MOSE. {{ t('footer.rights') }}.
</p> </p>
<div class="flex space-x-6 text-sm"> <div class="flex space-x-6 text-sm">
<router-link to="/privacy" class="hover:text-primary-light transition-colors duration-200">
<router-link to="/privacy" class="hover:text-primary-light transition-colors duration-200 wow animate__animated animate__fadeIn animate__delay-0-5s">
{{ t('footer.privacy') }} {{ t('footer.privacy') }}
</router-link> </router-link>
<router-link to="/terms" class="hover:text-primary-light transition-colors duration-200">
<router-link to="/terms" class="hover:text-primary-light transition-colors duration-200 wow animate__animated animate__fadeIn animate__delay-1s">
{{ t('footer.terms') }} {{ t('footer.terms') }}
</router-link> </router-link>
</div> </div>


+ 33
- 16
src/components/layout/NavBar.vue View File

@ -19,14 +19,14 @@ const changeLanguage = (lang: string) => {
// //
const languages = [ const languages = [
{ code: 'en', name: 'English' },
{ code: 'zh', name: '中文' },
{ code: 'ja', name: '日本語' }
{ code: 'en', name: t('language.en') },
{ code: 'zh', name: t('language.zh') },
{ code: 'ja', name: t('language.ja') }
]; ];
// //
const currentLanguage = computed(() => { const currentLanguage = computed(() => {
return languages.find(lang => lang.code === locale.value)?.name || 'English';
return languages.find(lang => lang.code === locale.value)?.name || t('language.en');
}); });
// //
@ -54,7 +54,7 @@ const emit = defineEmits(['changeLanguage']);
<header class="bg-background-dark text-text py-4 px-6 md:px-12 lg:px-24 fixed w-full z-50"> <header class="bg-background-dark text-text py-4 px-6 md:px-12 lg:px-24 fixed w-full z-50">
<div class="container mx-auto flex justify-between items-center"> <div class="container mx-auto flex justify-between items-center">
<!-- Logo --> <!-- Logo -->
<router-link to="/" class="flex items-center">
<router-link to="/" class="flex items-center animate__animated animate__fadeIn">
<img src="/public/vite.svg" alt="MOSE Logo" class="h-8 w-auto mr-2" /> <img src="/public/vite.svg" alt="MOSE Logo" class="h-8 w-auto mr-2" />
<span class="text-xl font-bold text-primary-light">MOSE</span> <span class="text-xl font-bold text-primary-light">MOSE</span>
</router-link> </router-link>
@ -62,17 +62,25 @@ const emit = defineEmits(['changeLanguage']);
<!-- Desktop Navigation --> <!-- Desktop Navigation -->
<nav class="hidden md:flex items-center space-x-6"> <nav class="hidden md:flex items-center space-x-6">
<router-link <router-link
v-for="item in navItems"
v-for="(item, index) in navItems"
:key="item.path" :key="item.path"
:to="item.path" :to="item.path"
class="text-text-secondary hover:text-text transition-colors duration-200"
:class="{ 'text-primary-light font-medium': $route.path === item.path }"
class="text-text-secondary hover:text-text transition-colors duration-200 animate__animated animate__fadeInDown"
:class="{
'text-primary-light font-medium': $route.path === item.path,
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2,
'animate__delay-1-5s': index === 3,
'animate__delay-2s': index === 4,
'animate__delay-2-5s': index === 5,
'animate__delay-3s': index === 6
}"
> >
{{ item.name }} {{ item.name }}
</router-link> </router-link>
<!-- Language Selector --> <!-- Language Selector -->
<div class="relative">
<div class="relative animate__animated animate__fadeInDown animate__delay-3-5s">
<button <button
@click="toggleLangDropdown" @click="toggleLangDropdown"
class="flex items-center text-text-secondary hover:text-text" class="flex items-center text-text-secondary hover:text-text"
@ -85,7 +93,7 @@ const emit = defineEmits(['changeLanguage']);
<div <div
v-show="isLangDropdownOpen" v-show="isLangDropdownOpen"
class="absolute right-0 mt-2 w-40 bg-background-light rounded-md shadow-lg py-1 z-10"
class="absolute right-0 mt-2 w-40 bg-background-light rounded-md shadow-lg py-1 z-10 animate__animated animate__fadeIn animate__faster"
> >
<button <button
v-for="lang in languages" v-for="lang in languages"
@ -103,7 +111,7 @@ const emit = defineEmits(['changeLanguage']);
<!-- Mobile Menu Button --> <!-- Mobile Menu Button -->
<button <button
@click="toggleMenu" @click="toggleMenu"
class="md:hidden text-text-secondary hover:text-text focus:outline-none"
class="md:hidden text-text-secondary hover:text-text focus:outline-none animate__animated animate__fadeIn"
> >
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
@ -133,22 +141,31 @@ const emit = defineEmits(['changeLanguage']);
<!-- Mobile Menu --> <!-- Mobile Menu -->
<div <div
v-show="isMenuOpen" v-show="isMenuOpen"
class="md:hidden bg-background-light mt-4 rounded-lg py-4 px-6 shadow-lg"
class="md:hidden bg-background-light mt-4 rounded-lg py-4 px-6 shadow-lg animate__animated"
:class="{'animate__fadeIn': isMenuOpen, 'animate__fadeOut': !isMenuOpen}"
> >
<div class="flex flex-col space-y-4"> <div class="flex flex-col space-y-4">
<router-link <router-link
v-for="item in navItems"
v-for="(item, index) in navItems"
:key="item.path" :key="item.path"
:to="item.path" :to="item.path"
class="text-text-secondary hover:text-text py-2"
:class="{ 'text-primary-light font-medium': $route.path === item.path }"
class="text-text-secondary hover:text-text py-2 animate__animated animate__fadeInRight"
:class="{
'text-primary-light font-medium': $route.path === item.path,
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2,
'animate__delay-1-5s': index === 3,
'animate__delay-2s': index === 4,
'animate__delay-2-5s': index === 5,
'animate__delay-3s': index === 6
}"
@click="isMenuOpen = false" @click="isMenuOpen = false"
> >
{{ item.name }} {{ item.name }}
</router-link> </router-link>
<!-- Mobile Language Selector --> <!-- Mobile Language Selector -->
<div class="py-2 border-t border-background">
<div class="py-2 border-t border-background animate__animated animate__fadeInUp animate__delay-3-5s">
<p class="text-text-secondary mb-2">{{ t('language.en') }}</p> <p class="text-text-secondary mb-2">{{ t('language.en') }}</p>
<div class="flex flex-col space-y-2"> <div class="flex flex-col space-y-2">
<button <button


+ 67
- 0
src/i18n/locales/en.json View File

@ -51,5 +51,72 @@
"en": "English", "en": "English",
"zh": "中文", "zh": "中文",
"ja": "日本語" "ja": "日本語"
},
"home": {
"hero": {
"title": "MOSE Blockchain",
"subtitle": "Next-generation blockchain platform for high performance, security, and scalability"
},
"video": {
"title": "Watch Our Video"
},
"cta": {
"explore": "Explore Ecosystem",
"docs": "Documentation"
}
},
"about": {
"hero": {
"title": "About Us",
"subtitle": "Learn about MOSE's vision, mission, and team"
},
"story": {
"title": "Our Story",
"paragraph1": "MOSE is a project dedicated to building a high-performance, secure, and scalable blockchain platform. Our mission is to provide powerful infrastructure for decentralized applications, enabling developers to build the next generation of blockchain applications.",
"paragraph2": "Our team consists of blockchain technology experts, experienced developers, and industry leaders working together to advance blockchain technology development and applications.",
"paragraph3": "MOSE's core values include decentralization, security, scalability, and community-driven development. We believe that guided by these values, we can build a more open, fair, and efficient blockchain ecosystem."
},
"team": {
"title": "Our Team",
"positions": {
"ceo": "CEO & Founder",
"cto": "CTO",
"lead_dev": "Lead Developer",
"marketing": "Marketing Director"
}
},
"milestones": {
"title": "Milestones",
"founded": "MOSE Founded",
"founded_desc": "MOSE was founded with a vision to create a high-performance blockchain platform.",
"testnet": "Testnet Launch",
"testnet_desc": "Successfully launched our testnet with key features and functionalities.",
"mainnet": "Mainnet Beta",
"mainnet_desc": "Released the beta version of our mainnet with improved performance and security.",
"growth": "Ecosystem Growth",
"growth_desc": "Expanded our ecosystem with various projects and partnerships."
}
},
"projects": {
"mose_swap": "Decentralized exchange with low fees and high liquidity",
"mose_nft": "Trade unique digital assets on the MOSE blockchain",
"mose_dao": "Decentralized governance for the MOSE ecosystem",
"mose_gaming": "Play-to-earn games built on MOSE",
"mose_bridge": "Cross-chain bridge for MOSE assets",
"mose_social": "Decentralized social network",
"mose_lending": "Decentralized lending protocol",
"mose_staking": "Stake your MOSE tokens for rewards"
},
"contact": {
"email": {
"info": "info@mose.io",
"support": "support@mose.io"
}
},
"common": {
"loading": "Loading...",
"error": "An error occurred",
"success": "Success!",
"linkedin": "LinkedIn"
} }
} }

+ 67
- 0
src/i18n/locales/ja.json View File

@ -51,5 +51,72 @@
"en": "English", "en": "English",
"zh": "中文", "zh": "中文",
"ja": "日本語" "ja": "日本語"
},
"home": {
"hero": {
"title": "MOSEブロックチェーン",
"subtitle": "高性能、セキュリティ、スケーラビリティを備えた次世代ブロックチェーンプラットフォーム"
},
"video": {
"title": "動画を見る"
},
"cta": {
"explore": "エコシステムを探索",
"docs": "ドキュメント"
}
},
"about": {
"hero": {
"title": "私たちについて",
"subtitle": "MOSEのビジョン、ミッション、チームについて知る"
},
"story": {
"title": "私たちの物語",
"paragraph1": "MOSEは、高性能、セキュア、スケーラブルなブロックチェーンプラットフォームの構築に取り組むプロジェクトです。私たちのミッションは、分散型アプリケーションのための強力なインフラストラクチャを提供し、開発者が次世代のブロックチェーンアプリケーションを構築できるようにすることです。",
"paragraph2": "私たちのチームは、ブロックチェーン技術の専門家、経験豊富な開発者、業界のリーダーで構成されており、ブロックチェーン技術の発展と応用を推進するために協力しています。",
"paragraph3": "MOSEの核となる価値観には、分散化、セキュリティ、スケーラビリティ、コミュニティ主導の開発が含まれます。これらの価値観に導かれることで、より開かれた、公平で効率的なブロックチェーンエコシステムを構築できると信じています。"
},
"team": {
"title": "私たちのチーム",
"positions": {
"ceo": "CEO&創設者",
"cto": "CTO",
"lead_dev": "リード開発者",
"marketing": "マーケティングディレクター"
}
},
"milestones": {
"title": "マイルストーン",
"founded": "MOSE設立",
"founded_desc": "MOSEは高性能なブロックチェーンプラットフォームを作るというビジョンを持って設立されました。",
"testnet": "テストネット立ち上げ",
"testnet_desc": "主要な機能を備えたテストネットを成功裏に立ち上げました。",
"mainnet": "メインネットベータ",
"mainnet_desc": "性能とセキュリティが向上したメインネットのベータ版をリリースしました。",
"growth": "エコシステムの成長",
"growth_desc": "様々なプロジェクトとパートナーシップによりエコシステムを拡大しました。"
}
},
"projects": {
"mose_swap": "低手数料と高流動性を備えた分散型取引所",
"mose_nft": "MOSEブロックチェーン上でユニークなデジタル資産を取引",
"mose_dao": "MOSEエコシステムの分散型ガバナンス",
"mose_gaming": "MOSE上に構築されたPlay-to-Earnゲーム",
"mose_bridge": "MOSE資産のためのクロスチェーンブリッジ",
"mose_social": "分散型ソーシャルネットワーク",
"mose_lending": "分散型貸付プロトコル",
"mose_staking": "MOSEトークンをステーキングして報酬を獲得"
},
"contact": {
"email": {
"info": "info@mose.io",
"support": "support@mose.io"
}
},
"common": {
"loading": "読み込み中...",
"error": "エラーが発生しました",
"success": "成功!",
"linkedin": "LinkedIn"
} }
} }

+ 67
- 0
src/i18n/locales/zh.json View File

@ -51,5 +51,72 @@
"en": "English", "en": "English",
"zh": "中文", "zh": "中文",
"ja": "日本語" "ja": "日本語"
},
"home": {
"hero": {
"title": "MOSE区块链",
"subtitle": "下一代高性能、安全和可扩展的区块链平台"
},
"video": {
"title": "观看我们的视频"
},
"cta": {
"explore": "探索生态系统",
"docs": "文档"
}
},
"about": {
"hero": {
"title": "关于我们",
"subtitle": "了解MOSE的愿景、使命和团队"
},
"story": {
"title": "我们的故事",
"paragraph1": "MOSE是一个致力于构建高性能、安全和可扩展区块链平台的项目。我们的使命是为去中心化应用提供强大的基础设施,使开发者能够构建下一代的区块链应用。",
"paragraph2": "我们的团队由区块链技术专家、经验丰富的开发者和行业领导者组成,共同致力于推动区块链技术的发展和应用。",
"paragraph3": "MOSE的核心价值观包括去中心化、安全、可扩展性和社区驱动。我们相信通过这些价值观的指导,我们可以构建一个更加开放、公平和高效的区块链生态系统。"
},
"team": {
"title": "我们的团队",
"positions": {
"ceo": "首席执行官 & 创始人",
"cto": "首席技术官",
"lead_dev": "首席开发工程师",
"marketing": "市场总监"
}
},
"milestones": {
"title": "发展历程",
"founded": "MOSE成立",
"founded_desc": "MOSE成立,愿景是创建一个高性能的区块链平台。",
"testnet": "测试网上线",
"testnet_desc": "成功上线测试网,具备关键功能和特性。",
"mainnet": "主网Beta版",
"mainnet_desc": "发布主网Beta版,性能和安全性得到提升。",
"growth": "生态系统扩展",
"growth_desc": "通过各种项目和合作伙伴关系扩展我们的生态系统。"
}
},
"projects": {
"mose_swap": "低手续费、高流动性的去中心化交易所",
"mose_nft": "在MOSE区块链上交易独特的数字资产",
"mose_dao": "MOSE生态系统的去中心化治理",
"mose_gaming": "基于MOSE构建的边玩边赚游戏",
"mose_bridge": "MOSE资产的跨链桥",
"mose_social": "去中心化社交网络",
"mose_lending": "去中心化借贷协议",
"mose_staking": "质押您的MOSE代币获取奖励"
},
"contact": {
"email": {
"info": "info@mose.io",
"support": "support@mose.io"
}
},
"common": {
"loading": "加载中...",
"error": "发生错误",
"success": "成功!",
"linkedin": "领英"
} }
} }

+ 6
- 0
src/main.ts View File

@ -1,11 +1,17 @@
import { createApp } from 'vue' import { createApp } from 'vue'
import './style.css' import './style.css'
import 'animate.css'
import './assets/animations.css'
import WOW from 'wow.js'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
import i18n from './i18n' import i18n from './i18n'
const app = createApp(App) const app = createApp(App)
// 初始化WOW.js
new WOW().init()
app.use(router) app.use(router)
app.use(i18n) app.use(i18n)


+ 55
- 38
src/views/About.vue View File

@ -1,35 +1,35 @@
<script setup lang="ts"> <script setup lang="ts">
// import { useI18n } from 'vue-i18n';
import { useI18n } from 'vue-i18n';
// const { t } = useI18n();
const { t } = useI18n();
// //
const teamMembers = [ const teamMembers = [
{ {
id: 1, id: 1,
name: 'John Doe', name: 'John Doe',
position: 'CEO & Founder',
position: t('about.team.positions.ceo'),
image: '/public/images.png', image: '/public/images.png',
linkedin: 'https://linkedin.com' linkedin: 'https://linkedin.com'
}, },
{ {
id: 2, id: 2,
name: 'Jane Smith', name: 'Jane Smith',
position: 'CTO',
position: t('about.team.positions.cto'),
image: '/public/images.png', image: '/public/images.png',
linkedin: 'https://linkedin.com' linkedin: 'https://linkedin.com'
}, },
{ {
id: 3, id: 3,
name: 'Mike Johnson', name: 'Mike Johnson',
position: 'Lead Developer',
position: t('about.team.positions.lead_dev'),
image: '/public/images.png', image: '/public/images.png',
linkedin: 'https://linkedin.com' linkedin: 'https://linkedin.com'
}, },
{ {
id: 4, id: 4,
name: 'Sarah Williams', name: 'Sarah Williams',
position: 'Marketing Director',
position: t('about.team.positions.marketing'),
image: '/public/images.png', image: '/public/images.png',
linkedin: 'https://linkedin.com' linkedin: 'https://linkedin.com'
} }
@ -39,23 +39,23 @@ const teamMembers = [
const milestones = [ const milestones = [
{ {
year: '2021', year: '2021',
title: 'MOSE Founded',
description: 'MOSE was founded with a vision to create a high-performance blockchain platform.'
title: t('about.milestones.founded'),
description: t('about.milestones.founded_desc')
}, },
{ {
year: '2022', year: '2022',
title: 'Testnet Launch',
description: 'Successfully launched our testnet with key features and functionalities.'
title: t('about.milestones.testnet'),
description: t('about.milestones.testnet_desc')
}, },
{ {
year: '2023', year: '2023',
title: 'Mainnet Beta',
description: 'Released the beta version of our mainnet with improved performance and security.'
title: t('about.milestones.mainnet'),
description: t('about.milestones.mainnet_desc')
}, },
{ {
year: '2024', year: '2024',
title: 'Ecosystem Growth',
description: 'Expanded our ecosystem with various projects and partnerships.'
title: t('about.milestones.growth'),
description: t('about.milestones.growth_desc')
} }
]; ];
</script> </script>
@ -66,20 +66,20 @@ const milestones = [
<section class="relative py-24 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden"> <section class="relative py-24 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden">
<div class="container mx-auto relative z-10"> <div class="container mx-auto relative z-10">
<div class="max-w-3xl mx-auto text-center"> <div class="max-w-3xl mx-auto text-center">
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6">
关于我们
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6 wow animate__animated animate__fadeInDown">
{{ t('about.hero.title') }}
</h1> </h1>
<p class="text-lg md:text-xl text-text-secondary mb-8">
了解MOSE的愿景使命和团队
<p class="text-lg md:text-xl text-text-secondary mb-8 wow animate__animated animate__fadeIn animate__delay-0-5s">
{{ t('about.hero.subtitle') }}
</p> </p>
</div> </div>
</div> </div>
<!-- Background Decoration --> <!-- Background Decoration -->
<div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10"> <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10">
<div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl"></div>
<div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl"></div>
<div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl"></div>
<div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl wow animate__animated animate__pulse animate__infinite"></div>
<div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-1s"></div>
<div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-2s"></div>
</div> </div>
</section> </section>
@ -87,16 +87,16 @@ const milestones = [
<section class="py-16 px-6 md:px-12 lg:px-24"> <section class="py-16 px-6 md:px-12 lg:px-24">
<div class="container mx-auto"> <div class="container mx-auto">
<div class="max-w-3xl mx-auto"> <div class="max-w-3xl mx-auto">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-6">我们的故事</h2>
<h2 class="text-2xl md:text-3xl font-bold text-text mb-6 wow animate__animated animate__fadeInUp">{{ t('about.story.title') }}</h2>
<div class="space-y-6 text-text-secondary"> <div class="space-y-6 text-text-secondary">
<p>
MOSE是一个致力于构建高性能安全和可扩展区块链平台的项目我们的使命是为去中心化应用提供强大的基础设施使开发者能够构建下一代的区块链应用
<p class="wow animate__animated animate__fadeInUp">
{{ t('about.story.paragraph1') }}
</p> </p>
<p>
我们的团队由区块链技术专家经验丰富的开发者和行业领导者组成共同致力于推动区块链技术的发展和应用
<p class="wow animate__animated animate__fadeInUp animate__delay-0-5s">
{{ t('about.story.paragraph2') }}
</p> </p>
<p>
MOSE的核心价值观包括去中心化安全可扩展性和社区驱动我们相信通过这些价值观的指导我们可以构建一个更加开放公平和高效的区块链生态系统
<p class="wow animate__animated animate__fadeInUp animate__delay-1s">
{{ t('about.story.paragraph3') }}
</p> </p>
</div> </div>
</div> </div>
@ -106,15 +106,20 @@ const milestones = [
<!-- Team Section --> <!-- Team Section -->
<section class="py-16 px-6 md:px-12 lg:px-24 bg-background-light"> <section class="py-16 px-6 md:px-12 lg:px-24 bg-background-light">
<div class="container mx-auto"> <div class="container mx-auto">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10 text-center">
我们的团队
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10 text-center wow animate__animated animate__fadeInUp">
{{ t('about.team.title') }}
</h2> </h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
<div <div
v-for="member in teamMembers"
v-for="(member, index) in teamMembers"
:key="member.id" :key="member.id"
class="bg-background rounded-xl overflow-hidden shadow-card hover:shadow-lg transition-all duration-300"
class="bg-background rounded-xl overflow-hidden shadow-card hover:shadow-lg transition-all duration-300 wow animate__animated animate__fadeInUp"
:class="{
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2,
'animate__delay-1-5s': index === 3
}"
> >
<img :src="member.image" :alt="member.name" class="w-full h-48 object-cover" /> <img :src="member.image" :alt="member.name" class="w-full h-48 object-cover" />
<div class="p-5"> <div class="p-5">
@ -129,7 +134,7 @@ const milestones = [
<svg class="h-4 w-4 mr-1" fill="currentColor" viewBox="0 0 24 24"> <svg class="h-4 w-4 mr-1" fill="currentColor" viewBox="0 0 24 24">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
</svg> </svg>
LinkedIn
{{ t('common.linkedin') }}
</a> </a>
</div> </div>
</div> </div>
@ -140,26 +145,38 @@ const milestones = [
<!-- Milestones Section --> <!-- Milestones Section -->
<section class="py-16 px-6 md:px-12 lg:px-24"> <section class="py-16 px-6 md:px-12 lg:px-24">
<div class="container mx-auto"> <div class="container mx-auto">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10 text-center">
发展历程
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10 text-center wow animate__animated animate__fadeInUp">
{{ t('about.milestones.title') }}
</h2> </h2>
<div class="max-w-4xl mx-auto"> <div class="max-w-4xl mx-auto">
<div class="relative"> <div class="relative">
<!-- Timeline Line --> <!-- Timeline Line -->
<div class="absolute top-0 left-6 md:left-1/2 w-0.5 h-full bg-primary-light transform -translate-x-1/2"></div>
<div class="absolute top-0 left-6 md:left-1/2 w-0.5 h-full bg-primary-light transform -translate-x-1/2 wow animate__animated animate__height"></div>
<!-- Timeline Items --> <!-- Timeline Items -->
<div class="space-y-12"> <div class="space-y-12">
<div <div
v-for="(milestone, index) in milestones" v-for="(milestone, index) in milestones"
:key="index" :key="index"
class="relative"
class="relative wow animate__animated"
:class="{
'animate__fadeInLeft': index % 2 === 0,
'animate__fadeInRight': index % 2 !== 0,
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2,
'animate__delay-1-5s': index === 3
}"
> >
<div class="flex flex-col md:flex-row items-center"> <div class="flex flex-col md:flex-row items-center">
<!-- Year Bubble --> <!-- Year Bubble -->
<div <div
class="absolute left-6 md:left-1/2 w-12 h-12 bg-primary rounded-full flex items-center justify-center transform -translate-x-1/2 z-10"
class="absolute left-6 md:left-1/2 w-12 h-12 bg-primary rounded-full flex items-center justify-center transform -translate-x-1/2 z-10 wow animate__animated animate__zoomIn"
:class="{
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2,
'animate__delay-1-5s': index === 3
}"
> >
<span class="text-text font-bold text-sm">{{ milestone.year }}</span> <span class="text-text font-bold text-sm">{{ milestone.year }}</span>
</div> </div>


+ 55
- 39
src/views/Ecosystem.vue View File

@ -23,7 +23,7 @@ const projects = [
{ {
id: 1, id: 1,
name: 'MOSE Swap', name: 'MOSE Swap',
description: 'Decentralized exchange with low fees and high liquidity',
description: t('projects.mose_swap'),
category: 'defi', category: 'defi',
image: '/public/images.png', image: '/public/images.png',
url: 'https://moseswap.io', url: 'https://moseswap.io',
@ -32,7 +32,7 @@ const projects = [
{ {
id: 2, id: 2,
name: 'MOSE NFT Marketplace', name: 'MOSE NFT Marketplace',
description: 'Trade unique digital assets on the MOSE blockchain',
description: t('projects.mose_nft'),
category: 'nft', category: 'nft',
image: '/public/images.png', image: '/public/images.png',
url: 'https://mosenft.io', url: 'https://mosenft.io',
@ -41,7 +41,7 @@ const projects = [
{ {
id: 3, id: 3,
name: 'MOSE DAO', name: 'MOSE DAO',
description: 'Decentralized governance for the MOSE ecosystem',
description: t('projects.mose_dao'),
category: 'dao', category: 'dao',
image: '/public/images.png', image: '/public/images.png',
url: 'https://mosedao.io', url: 'https://mosedao.io',
@ -50,7 +50,7 @@ const projects = [
{ {
id: 4, id: 4,
name: 'MOSE Gaming', name: 'MOSE Gaming',
description: 'Play-to-earn games built on MOSE',
description: t('projects.mose_gaming'),
category: 'gaming', category: 'gaming',
image: '/public/images.png', image: '/public/images.png',
url: 'https://mosegaming.io', url: 'https://mosegaming.io',
@ -59,7 +59,7 @@ const projects = [
{ {
id: 5, id: 5,
name: 'MOSE Bridge', name: 'MOSE Bridge',
description: 'Cross-chain bridge for MOSE assets',
description: t('projects.mose_bridge'),
category: 'infrastructure', category: 'infrastructure',
image: '/public/images.png', image: '/public/images.png',
url: 'https://mosebridge.io', url: 'https://mosebridge.io',
@ -68,7 +68,7 @@ const projects = [
{ {
id: 6, id: 6,
name: 'MOSE Social', name: 'MOSE Social',
description: 'Decentralized social network',
description: t('projects.mose_social'),
category: 'social', category: 'social',
image: '/public/images.png', image: '/public/images.png',
url: 'https://mosesocial.io', url: 'https://mosesocial.io',
@ -77,7 +77,7 @@ const projects = [
{ {
id: 7, id: 7,
name: 'MOSE Lending', name: 'MOSE Lending',
description: 'Decentralized lending protocol',
description: t('projects.mose_lending'),
category: 'defi', category: 'defi',
image: '/public/images.png', image: '/public/images.png',
url: 'https://moselending.io', url: 'https://moselending.io',
@ -86,7 +86,7 @@ const projects = [
{ {
id: 8, id: 8,
name: 'MOSE Staking', name: 'MOSE Staking',
description: 'Stake your MOSE tokens for rewards',
description: t('projects.mose_staking'),
category: 'defi', category: 'defi',
image: '/public/images.png', image: '/public/images.png',
url: 'https://mosestaking.io', url: 'https://mosestaking.io',
@ -160,10 +160,10 @@ const selectCategory = (category: string) => {
<section class="relative py-24 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden"> <section class="relative py-24 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden">
<div class="container mx-auto relative z-10"> <div class="container mx-auto relative z-10">
<div class="max-w-3xl mx-auto text-center"> <div class="max-w-3xl mx-auto text-center">
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6">
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6 wow animate__animated animate__fadeInDown">
{{ t('ecosystem.title') }} {{ t('ecosystem.title') }}
</h1> </h1>
<p class="text-lg md:text-xl text-text-secondary mb-8">
<p class="text-lg md:text-xl text-text-secondary mb-8 wow animate__animated animate__fadeIn animate__delay-0-5s">
{{ t('ecosystem.subtitle') }} {{ t('ecosystem.subtitle') }}
</p> </p>
</div> </div>
@ -171,9 +171,9 @@ const selectCategory = (category: string) => {
<!-- Background Decoration --> <!-- Background Decoration -->
<div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10"> <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10">
<div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl"></div>
<div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl"></div>
<div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl"></div>
<div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl wow animate__animated animate__pulse animate__infinite"></div>
<div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-1s"></div>
<div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-2s"></div>
</div> </div>
</section> </section>
@ -181,19 +181,23 @@ const selectCategory = (category: string) => {
<section class="py-16 px-6 md:px-12 lg:px-24"> <section class="py-16 px-6 md:px-12 lg:px-24">
<div class="container mx-auto"> <div class="container mx-auto">
<div class="flex justify-between items-center mb-10"> <div class="flex justify-between items-center mb-10">
<h2 class="text-2xl md:text-3xl font-bold text-text">
<h2 class="text-2xl md:text-3xl font-bold text-text wow animate__animated animate__fadeInUp">
{{ t('ecosystem.projects.featured') }} {{ t('ecosystem.projects.featured') }}
</h2> </h2>
<a href="#all-projects" class="text-primary-light hover:text-primary-dark transition-colors duration-200">
<a href="#all-projects" class="text-primary-light hover:text-primary-dark transition-colors duration-200 wow animate__animated animate__fadeInUp">
{{ t('ecosystem.projects.viewAll') }} {{ t('ecosystem.projects.viewAll') }}
</a> </a>
</div> </div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<div <div
v-for="project in featuredProjects"
v-for="(project, index) in featuredProjects"
:key="project.id" :key="project.id"
class="bg-background-light rounded-xl overflow-hidden shadow-card hover:transform hover:scale-105 transition-all duration-300"
class="bg-background-light rounded-xl overflow-hidden shadow-card hover:transform hover:scale-105 transition-all duration-300 wow animate__animated animate__fadeInUp"
:class="{
'animate__delay-0-5s': index === 1,
'animate__delay-1s': index === 2
}"
> >
<img :src="project.image" :alt="project.name" class="w-full h-48 object-cover" /> <img :src="project.image" :alt="project.name" class="w-full h-48 object-cover" />
<div class="p-6"> <div class="p-6">
@ -221,12 +225,12 @@ const selectCategory = (category: string) => {
<!-- All Projects Section --> <!-- All Projects Section -->
<section id="all-projects" class="py-16 px-6 md:px-12 lg:px-24 bg-background-light"> <section id="all-projects" class="py-16 px-6 md:px-12 lg:px-24 bg-background-light">
<div class="container mx-auto"> <div class="container mx-auto">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10 wow animate__animated animate__fadeInUp">
{{ t('ecosystem.title') }} {{ t('ecosystem.title') }}
</h2> </h2>
<!-- Categories Filter --> <!-- Categories Filter -->
<div class="flex flex-wrap gap-2 mb-10">
<div class="flex flex-wrap gap-2 mb-10 wow animate__animated animate__fadeInUp animate__delay-0-5s">
<button <button
v-for="category in categories" v-for="category in categories"
:key="category.id" :key="category.id"
@ -243,9 +247,14 @@ const selectCategory = (category: string) => {
<!-- Projects Grid --> <!-- Projects Grid -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
<div <div
v-for="project in filteredProjects"
v-for="(project, index) in filteredProjects"
:key="project.id" :key="project.id"
class="bg-background rounded-xl overflow-hidden shadow-card hover:shadow-lg transition-all duration-300"
class="bg-background rounded-xl overflow-hidden shadow-card hover:shadow-lg transition-all duration-300 wow animate__animated animate__fadeIn"
:class="{
'animate__delay-0-5s': index % 4 === 1,
'animate__delay-1s': index % 4 === 2,
'animate__delay-1-5s': index % 4 === 3
}"
> >
<img :src="project.image" :alt="project.name" class="w-full h-40 object-cover" /> <img :src="project.image" :alt="project.name" class="w-full h-40 object-cover" />
<div class="p-5"> <div class="p-5">
@ -274,22 +283,29 @@ const selectCategory = (category: string) => {
<section class="py-16 px-6 md:px-12 lg:px-24"> <section class="py-16 px-6 md:px-12 lg:px-24">
<div class="container mx-auto"> <div class="container mx-auto">
<div class="text-center mb-12"> <div class="text-center mb-12">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-4">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-4 wow animate__animated animate__fadeInUp">
{{ t('ecosystem.partners.title') }} {{ t('ecosystem.partners.title') }}
</h2> </h2>
<p class="text-text-secondary max-w-2xl mx-auto">
<p class="text-text-secondary max-w-2xl mx-auto wow animate__animated animate__fadeInUp animate__delay-0-5s">
{{ t('ecosystem.partners.subtitle') }} {{ t('ecosystem.partners.subtitle') }}
</p> </p>
</div> </div>
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8"> <div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8">
<a <a
v-for="partner in partners"
v-for="(partner, index) in partners"
:key="partner.id" :key="partner.id"
:href="partner.url" :href="partner.url"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="flex items-center justify-center p-6 bg-background-light rounded-lg hover:bg-background-dark transition-colors duration-300"
class="flex items-center justify-center p-6 bg-background-light rounded-lg hover:bg-background-dark transition-colors duration-300 wow animate__animated animate__fadeIn"
:class="{
'animate__delay-0-5s': index % 6 === 1,
'animate__delay-1s': index % 6 === 2,
'animate__delay-1-5s': index % 6 === 3,
'animate__delay-2s': index % 6 === 4,
'animate__delay-2-5s': index % 6 === 5
}"
> >
<img :src="partner.logo" :alt="partner.name" class="max-h-12 max-w-full" /> <img :src="partner.logo" :alt="partner.name" class="max-h-12 max-w-full" />
</a> </a>
@ -301,15 +317,15 @@ const selectCategory = (category: string) => {
<section class="py-20 px-6 md:px-12 lg:px-24 bg-primary bg-opacity-10 relative overflow-hidden"> <section class="py-20 px-6 md:px-12 lg:px-24 bg-primary bg-opacity-10 relative overflow-hidden">
<div class="container mx-auto relative z-10"> <div class="container mx-auto relative z-10">
<div class="max-w-3xl mx-auto text-center"> <div class="max-w-3xl mx-auto text-center">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-4">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-4 wow animate__animated animate__fadeInUp">
{{ t('ecosystem.join.title') }} {{ t('ecosystem.join.title') }}
</h2> </h2>
<p class="text-text-secondary mb-8">
<p class="text-text-secondary mb-8 wow animate__animated animate__fadeInUp animate__delay-0-5s">
{{ t('ecosystem.join.subtitle') }} {{ t('ecosystem.join.subtitle') }}
</p> </p>
<a <a
href="#" href="#"
class="inline-block px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button"
class="inline-block px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button wow animate__animated animate__fadeInUp animate__delay-1s"
> >
{{ t('ecosystem.join.cta') }} {{ t('ecosystem.join.cta') }}
</a> </a>
@ -318,68 +334,68 @@ const selectCategory = (category: string) => {
<!-- Background Decoration --> <!-- Background Decoration -->
<div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-30"> <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-30">
<div class="absolute top-0 right-0 w-64 h-64 rounded-full bg-primary blur-3xl"></div>
<div class="absolute bottom-0 left-0 w-80 h-80 rounded-full bg-primary blur-3xl"></div>
<div class="absolute top-0 right-0 w-64 h-64 rounded-full bg-primary blur-3xl wow animate__animated animate__pulse animate__infinite"></div>
<div class="absolute bottom-0 left-0 w-80 h-80 rounded-full bg-primary blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-1s"></div>
</div> </div>
</section> </section>
<!-- Developer Resources --> <!-- Developer Resources -->
<section class="py-16 px-6 md:px-12 lg:px-24"> <section class="py-16 px-6 md:px-12 lg:px-24">
<div class="container mx-auto"> <div class="container mx-auto">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-10 wow animate__animated animate__fadeInUp">
{{ t('ecosystem.resources.title') }} {{ t('ecosystem.resources.title') }}
</h2> </h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
<a <a
href="#" href="#"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300 wow animate__animated animate__zoomIn"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" /> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
</svg> </svg>
<h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.docs') }}</h3> <h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.docs') }}</h3>
<p class="text-text-secondary text-sm"> <p class="text-text-secondary text-sm">
Comprehensive documentation for developers
{{ t('ecosystem.resources.docs') }}
</p> </p>
</a> </a>
<a <a
href="#" href="#"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300 wow animate__animated animate__zoomIn animate__delay-0-5s"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" /> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" />
</svg> </svg>
<h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.github') }}</h3> <h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.github') }}</h3>
<p class="text-text-secondary text-sm"> <p class="text-text-secondary text-sm">
Open source code repositories
{{ t('ecosystem.resources.github') }}
</p> </p>
</a> </a>
<a <a
href="#" href="#"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300 wow animate__animated animate__zoomIn animate__delay-1s"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg> </svg>
<h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.grants') }}</h3> <h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.grants') }}</h3>
<p class="text-text-secondary text-sm"> <p class="text-text-secondary text-sm">
Funding for innovative projects
{{ t('ecosystem.resources.grants') }}
</p> </p>
</a> </a>
<a <a
href="#" href="#"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300"
class="bg-background-light p-6 rounded-xl flex flex-col items-center text-center hover:bg-background-dark transition-colors duration-300 wow animate__animated animate__zoomIn animate__delay-1-5s"
> >
<svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-primary-light mb-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" /> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
</svg> </svg>
<h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.community') }}</h3> <h3 class="text-lg font-bold text-text mb-2">{{ t('ecosystem.resources.community') }}</h3>
<p class="text-text-secondary text-sm"> <p class="text-text-secondary text-sm">
Join our developer community
{{ t('ecosystem.resources.community') }}
</p> </p>
</a> </a>
</div> </div>


+ 16
- 16
src/views/Home.vue View File

@ -16,24 +16,24 @@ const goToEcosystem = () => {
<section class="relative py-32 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden"> <section class="relative py-32 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden">
<div class="container mx-auto relative z-10"> <div class="container mx-auto relative z-10">
<div class="max-w-3xl mx-auto text-center"> <div class="max-w-3xl mx-auto text-center">
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6">
MOSE Blockchain
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6 wow animate__animated animate__fadeInDown">
{{ t('home.hero.title') }}
</h1> </h1>
<p class="text-lg md:text-xl text-text-secondary mb-8">
Next-generation blockchain platform for high performance, security, and scalability
<p class="text-lg md:text-xl text-text-secondary mb-8 wow animate__animated animate__fadeIn animate__delay-1s">
{{ t('home.hero.subtitle') }}
</p> </p>
<div class="flex flex-col sm:flex-row justify-center gap-4">
<div class="flex flex-col sm:flex-row justify-center gap-4 wow animate__animated animate__fadeInUp animate__delay-1-5s">
<button <button
@click="goToEcosystem" @click="goToEcosystem"
class="px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button" class="px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button"
> >
{{ t('ecosystem.title') }}
{{ t('home.cta.explore') }}
</button> </button>
<a <a
href="#" href="#"
class="px-8 py-3 bg-transparent border border-primary-light text-primary-light rounded-lg hover:bg-primary-light hover:bg-opacity-10 transition-colors duration-300" class="px-8 py-3 bg-transparent border border-primary-light text-primary-light rounded-lg hover:bg-primary-light hover:bg-opacity-10 transition-colors duration-300"
> >
{{ t('ecosystem.resources.docs') }}
{{ t('home.cta.docs') }}
</a> </a>
</div> </div>
</div> </div>
@ -41,16 +41,16 @@ const goToEcosystem = () => {
<!-- Background Decoration --> <!-- Background Decoration -->
<div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10"> <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10">
<div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl"></div>
<div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl"></div>
<div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl"></div>
<div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl wow animate__animated animate__pulse animate__infinite"></div>
<div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-1s"></div>
<div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-2s"></div>
</div> </div>
</section> </section>
<!-- Video Section --> <!-- Video Section -->
<section class="py-16 px-6 md:px-12 lg:px-24"> <section class="py-16 px-6 md:px-12 lg:px-24">
<div class="container mx-auto"> <div class="container mx-auto">
<div class="max-w-4xl mx-auto bg-background-light rounded-2xl overflow-hidden shadow-card">
<div class="max-w-4xl mx-auto bg-background-light rounded-2xl overflow-hidden shadow-card wow animate__animated animate__fadeIn animate__duration-2s">
<video <video
src="/public/MOSEVideo.mp4" src="/public/MOSEVideo.mp4"
controls controls
@ -65,15 +65,15 @@ const goToEcosystem = () => {
<section class="py-20 px-6 md:px-12 lg:px-24 bg-primary bg-opacity-10 relative overflow-hidden"> <section class="py-20 px-6 md:px-12 lg:px-24 bg-primary bg-opacity-10 relative overflow-hidden">
<div class="container mx-auto relative z-10"> <div class="container mx-auto relative z-10">
<div class="max-w-3xl mx-auto text-center"> <div class="max-w-3xl mx-auto text-center">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-4">
<h2 class="text-2xl md:text-3xl font-bold text-text mb-4 wow animate__animated animate__fadeInUp">
{{ t('ecosystem.join.title') }} {{ t('ecosystem.join.title') }}
</h2> </h2>
<p class="text-text-secondary mb-8">
<p class="text-text-secondary mb-8 wow animate__animated animate__fadeInUp animate__delay-0-5s">
{{ t('ecosystem.join.subtitle') }} {{ t('ecosystem.join.subtitle') }}
</p> </p>
<button <button
@click="goToEcosystem" @click="goToEcosystem"
class="inline-block px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button"
class="inline-block px-8 py-3 bg-primary text-text rounded-lg hover:bg-primary-dark transition-colors duration-300 shadow-button wow animate__animated animate__fadeInUp animate__delay-1s"
> >
{{ t('ecosystem.title') }} {{ t('ecosystem.title') }}
</button> </button>
@ -82,8 +82,8 @@ const goToEcosystem = () => {
<!-- Background Decoration --> <!-- Background Decoration -->
<div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-30"> <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-30">
<div class="absolute top-0 right-0 w-64 h-64 rounded-full bg-primary blur-3xl"></div>
<div class="absolute bottom-0 left-0 w-80 h-80 rounded-full bg-primary blur-3xl"></div>
<div class="absolute top-0 right-0 w-64 h-64 rounded-full bg-primary blur-3xl wow animate__animated animate__pulse animate__infinite"></div>
<div class="absolute bottom-0 left-0 w-80 h-80 rounded-full bg-primary blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-1s"></div>
</div> </div>
</section> </section>
</div> </div>

+ 7
- 0
src/vite-env.d.ts View File

@ -1 +1,8 @@
/// <reference types="vite/client" /> /// <reference types="vite/client" />
declare module 'wow.js' {
export default class WOW {
constructor(options?: any);
init(): void;
}
}

Loading…
Cancel
Save