From 48894053f4ad451d5d28d859009fc50db8c8e646 Mon Sep 17 00:00:00 2001 From: hflllll Date: Sat, 12 Jul 2025 21:41:54 +0800 Subject: [PATCH] =?UTF-8?q?'=E8=A1=A5=E5=85=85=E5=8F=A6=E5=A4=96=E5=87=A0?= =?UTF-8?q?=E4=B8=AA=E9=A1=B5=E9=9D=A2=E5=AE=8C=E6=AF=95'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 223 +++++++++++++++++++++++++++ package.json | 2 + src/assets/animations.css | 163 ++++++++++++++++++-- src/components/layout/Footer.vue | 44 +++--- src/components/layout/NavBar.vue | 36 ++--- src/i18n/locales/en.json | 139 ++++++++++++++++- src/i18n/locales/ja.json | 139 ++++++++++++++++- src/i18n/locales/zh.json | 139 ++++++++++++++++- src/router/index.ts | 15 ++ src/views/About.vue | 44 +++--- src/views/Community.vue | 293 +++++++++++++++++++++++++++++++++++ src/views/Contact.vue | 286 ++++++++++++++++++++++++++++++++++ src/views/Ecosystem.vue | 63 ++++---- src/views/FAQ.vue | 267 ++++++++++++++++++++++++++++++++ src/views/Home.vue | 320 ++++++++++++++++++++++++++++++++++++--- 15 files changed, 2041 insertions(+), 132 deletions(-) create mode 100644 src/views/Community.vue create mode 100644 src/views/Contact.vue create mode 100644 src/views/FAQ.vue diff --git a/package-lock.json b/package-lock.json index 911fda4..4bc0c4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,10 @@ "version": "0.0.0", "dependencies": { "@tailwindcss/vite": "^4.1.11", + "@videojs-player/vue": "^1.0.0", "animate.css": "^4.1.1", "tailwindcss": "^4.1.11", + "video.js": "^8.23.3", "vue": "^3.5.13", "vue-i18n": "^11.1.9", "vue-router": "^4.5.1", @@ -69,6 +71,14 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.27.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { "version": "7.28.0", "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.0.tgz", @@ -1090,6 +1100,67 @@ "undici-types": "~7.8.0" } }, + "node_modules/@types/video.js": { + "version": "7.3.58", + "resolved": "https://registry.npmmirror.com/@types/video.js/-/video.js-7.3.58.tgz", + "integrity": "sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==", + "peer": true + }, + "node_modules/@videojs-player/vue": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@videojs-player/vue/-/vue-1.0.0.tgz", + "integrity": "sha512-WonTezRfKu3fYdQLt/ta+nuKH6gMZUv8l40Jke/j4Lae7IqeO/+lLAmBnh3ni88bwR+vkFXIlZ2Ci7VKInIYJg==", + "peerDependencies": { + "@types/video.js": "7.x", + "video.js": "7.x", + "vue": "3.x" + } + }, + "node_modules/@videojs/http-streaming": { + "version": "3.17.0", + "resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-3.17.0.tgz", + "integrity": "sha512-Ch1P3tvvIEezeZXyK11UfWgp4cWKX4vIhZ30baN/lRinqdbakZ5hiAI3pGjRy3d+q/Epyc8Csz5xMdKNNGYpcw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.1.1", + "aes-decrypter": "^4.0.2", + "global": "^4.4.0", + "m3u8-parser": "^7.2.0", + "mpd-parser": "^1.3.1", + "mux.js": "7.1.0", + "video.js": "^7 || ^8" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "video.js": "^8.19.0" + } + }, + "node_modules/@videojs/vhs-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz", + "integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/@videojs/xhr": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.7.0.tgz", + "integrity": "sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "global": "~4.4.0", + "is-function": "^1.0.1" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "5.2.4", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", @@ -1277,6 +1348,25 @@ } } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/aes-decrypter": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.2.tgz", + "integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.1.1", + "global": "^4.4.0", + "pkcs7": "^1.0.4" + } + }, "node_modules/alien-signals": { "version": "1.0.13", "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz", @@ -1384,6 +1474,11 @@ "node": ">=8" } }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, "node_modules/email-addresses": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/email-addresses/-/email-addresses-5.0.0.tgz", @@ -1634,6 +1729,15 @@ "node": ">= 6" } }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", @@ -1686,6 +1790,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", @@ -1956,6 +2065,16 @@ "node": ">=8" } }, + "node_modules/m3u8-parser": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-7.2.0.tgz", + "integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.1.1", + "global": "^4.4.0" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", @@ -2013,6 +2132,14 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", @@ -2061,12 +2188,42 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mpd-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-1.3.1.tgz", + "integrity": "sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.0.0", + "@xmldom/xmldom": "^0.8.3", + "global": "^4.4.0" + }, + "bin": { + "mpd-to-m3u8-json": "bin/parse.js" + } + }, "node_modules/muggle-string": { "version": "0.4.1", "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", "dev": true }, + "node_modules/mux.js": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-7.1.0.tgz", + "integrity": "sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "global": "^4.4.0" + }, + "bin": { + "muxjs-transmux": "bin/transmux.js" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", @@ -2160,6 +2317,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkcs7": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz", + "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", + "dependencies": { + "@babel/runtime": "^7.5.5" + }, + "bin": { + "pkcs7": "bin/cli.js" + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -2199,6 +2367,14 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2424,6 +2600,53 @@ "node": ">= 10.0.0" } }, + "node_modules/video.js": { + "version": "8.23.3", + "resolved": "https://registry.npmmirror.com/video.js/-/video.js-8.23.3.tgz", + "integrity": "sha512-Toe0VLlDZcUhiaWfcePS1OEdT3ATfktm0hk/PELfD7zUoPDHeT+cJf/wZmCy5M5eGVwtGUg25RWPCj1L/1XufA==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/http-streaming": "^3.17.0", + "@videojs/vhs-utils": "^4.1.1", + "@videojs/xhr": "2.7.0", + "aes-decrypter": "^4.0.2", + "global": "4.4.0", + "m3u8-parser": "^7.2.0", + "mpd-parser": "^1.3.1", + "mux.js": "^7.0.1", + "videojs-contrib-quality-levels": "4.1.0", + "videojs-font": "4.2.0", + "videojs-vtt.js": "0.15.5" + } + }, + "node_modules/videojs-contrib-quality-levels": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz", + "integrity": "sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==", + "dependencies": { + "global": "^4.4.0" + }, + "engines": { + "node": ">=16", + "npm": ">=8" + }, + "peerDependencies": { + "video.js": "^8" + } + }, + "node_modules/videojs-font": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-4.2.0.tgz", + "integrity": "sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==" + }, + "node_modules/videojs-vtt.js": { + "version": "0.15.5", + "resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz", + "integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==", + "dependencies": { + "global": "^4.3.1" + } + }, "node_modules/vite": { "version": "6.3.5", "resolved": "https://registry.npmmirror.com/vite/-/vite-6.3.5.tgz", diff --git a/package.json b/package.json index b576518..610dc9c 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,10 @@ }, "dependencies": { "@tailwindcss/vite": "^4.1.11", + "@videojs-player/vue": "^1.0.0", "animate.css": "^4.1.1", "tailwindcss": "^4.1.11", + "video.js": "^8.23.3", "vue": "^3.5.13", "vue-i18n": "^11.1.9", "vue-router": "^4.5.1", diff --git a/src/assets/animations.css b/src/assets/animations.css index be67ecd..b42b441 100644 --- a/src/assets/animations.css +++ b/src/assets/animations.css @@ -1,38 +1,66 @@ /* 全局动画样式 */ +:root { + --animation-speed-slow: 1.5s; /* 慢速 */ + --animation-speed-normal: 0.8s; /* 正常速度 */ + --animation-speed-fast: 0.5s; /* 快速 */ + --animation-speed-very-fast: 0.3s; /* 非常快 */ + + --animation-delay-xs: 0.1s; /* 极短延迟 */ + --animation-delay-sm: 0.2s; /* 短延迟 */ + --animation-delay-md: 0.3s; /* 中等延迟 */ + --animation-delay-lg: 0.5s; /* 长延迟 */ + + /* 按钮动画变量 */ + --btn-hover-transition: 0.3s; + --btn-scale-amount: 1.05; + --btn-pulse-scale: 1.03; + --btn-pulse-duration: 1.5s; + --btn-glow-color: rgba(255, 255, 255, 0.2); + --btn-glow-spread: 10px; +} + /* 使WOW元素在加载前不可见 */ .wow { visibility: hidden; } /* 自定义动画持续时间 */ -.animate__animated.animate__duration-1s { - animation-duration: 1s; +.animate__animated { + animation-duration: var(--animation-speed-normal) !important; +} + +.animate__animated.animate__duration-slow { + animation-duration: var(--animation-speed-slow) !important; +} + +.animate__animated.animate__duration-normal { + animation-duration: var(--animation-speed-normal) !important; } -.animate__animated.animate__duration-2s { - animation-duration: 2s; +.animate__animated.animate__duration-fast { + animation-duration: var(--animation-speed-fast) !important; } -.animate__animated.animate__duration-3s { - animation-duration: 3s; +.animate__animated.animate__duration-very-fast { + animation-duration: var(--animation-speed-very-fast) !important; } /* 自定义动画延迟 */ -.animate__animated.animate__delay-0-5s { - animation-delay: 0.5s; +.animate__animated.animate__delay-xs { + animation-delay: var(--animation-delay-xs) !important; } -.animate__animated.animate__delay-1s { - animation-delay: 1s; +.animate__animated.animate__delay-sm { + animation-delay: var(--animation-delay-sm) !important; } -.animate__animated.animate__delay-1-5s { - animation-delay: 1.5s; +.animate__animated.animate__delay-md { + animation-delay: var(--animation-delay-md) !important; } -.animate__animated.animate__delay-2s { - animation-delay: 2s; +.animate__animated.animate__delay-lg { + animation-delay: var(--animation-delay-lg) !important; } /* 自定义动画重复次数 */ @@ -46,4 +74,111 @@ .animate__animated.animate__infinite { animation-iteration-count: infinite; +} + +/* 按钮悬停动画效果 */ +.btn-hover-scale { + transition: transform var(--btn-hover-transition) ease; +} + +.btn-hover-scale:hover { + transform: scale(var(--btn-scale-amount)); +} + +.btn-hover-float { + transition: transform var(--btn-hover-transition) ease; +} + +.btn-hover-float:hover { + transform: translateY(-5px); +} + +.btn-hover-glow { + position: relative; + overflow: hidden; + transition: all var(--btn-hover-transition) ease; +} + +.btn-hover-glow:hover { + box-shadow: 0 0 var(--btn-glow-spread) var(--btn-glow-color); +} + +.btn-hover-glow:hover::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(120deg, transparent, var(--btn-glow-color), transparent); + transform: translateX(-100%); + animation: btn-glow-animation 1.5s infinite; +} + +@keyframes btn-glow-animation { + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(100%); + } +} + +.btn-hover-pulse { + animation: none; +} + +.btn-hover-pulse:hover { + animation: btn-pulse var(--btn-pulse-duration) infinite; +} + +@keyframes btn-pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(var(--btn-pulse-scale)); + } + 100% { + transform: scale(1); + } +} + +.btn-hover-rotate { + transition: transform var(--btn-hover-transition) ease; +} + +.btn-hover-rotate:hover { + transform: rotate(5deg); +} + +.btn-hover-shadow { + transition: box-shadow var(--btn-hover-transition) ease, transform var(--btn-hover-transition) ease; +} + +.btn-hover-shadow:hover { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); + transform: translateY(-3px); +} + +.btn-hover-border { + position: relative; + z-index: 1; + transition: all var(--btn-hover-transition) ease; +} + +.btn-hover-border::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background-color: currentColor; + transition: width var(--btn-hover-transition) ease; + z-index: -1; +} + +.btn-hover-border:hover::after { + width: 100%; } \ No newline at end of file diff --git a/src/components/layout/Footer.vue b/src/components/layout/Footer.vue index dafa9ab..6704ceb 100644 --- a/src/components/layout/Footer.vue +++ b/src/components/layout/Footer.vue @@ -21,7 +21,7 @@ const currentYear = new Date().getFullYear();
-
+
MOSE Logo MOSE @@ -37,11 +37,11 @@ const currentYear = new Date().getFullYear(); :href="link.url" target="_blank" rel="noopener noreferrer" - class="text-text-secondary hover:text-primary-light transition-colors duration-200 wow animate__animated animate__fadeIn" + class="text-text-secondary hover:text-primary-light transition-colors duration-200 wow animate__animated animate__fadeIn animate__duration-fast" :class="{ - 'animate__delay-0-5s': index === 1, - 'animate__delay-1s': index === 2, - 'animate__delay-1-5s': index === 3 + 'animate__delay-xs': index === 1, + 'animate__delay-sm': index === 2, + 'animate__delay-md': index === 3 }" > @@ -56,48 +56,48 @@ const currentYear = new Date().getFullYear();
-
+

{{ t('nav.ecosystem') }}

    -
  • {{ t('ecosystem.categories.defi') }}
  • -
  • {{ t('ecosystem.categories.nft') }}
  • -
  • {{ t('ecosystem.categories.dao') }}
  • -
  • {{ t('ecosystem.categories.gaming') }}
  • +
  • {{ t('ecosystem.categories.defi') }}
  • +
  • {{ t('ecosystem.categories.nft') }}
  • +
  • {{ t('ecosystem.categories.dao') }}
  • +
  • {{ t('ecosystem.categories.gaming') }}
-
+

{{ t('nav.resources') }}

    -
  • {{ t('ecosystem.resources.docs') }}
  • -
  • {{ t('ecosystem.resources.github') }}
  • -
  • {{ t('ecosystem.resources.grants') }}
  • -
  • {{ t('ecosystem.resources.community') }}
  • +
  • {{ t('ecosystem.resources.docs') }}
  • +
  • {{ t('ecosystem.resources.github') }}
  • +
  • {{ t('ecosystem.resources.grants') }}
  • +
  • {{ t('ecosystem.resources.community') }}
-
+

{{ t('nav.contact') }}

-

+

© {{ currentYear }} MOSE. {{ t('footer.rights') }}.

- + {{ t('footer.privacy') }} - + {{ t('footer.terms') }}
diff --git a/src/components/layout/NavBar.vue b/src/components/layout/NavBar.vue index 6e1f429..9a2b2e3 100644 --- a/src/components/layout/NavBar.vue +++ b/src/components/layout/NavBar.vue @@ -54,7 +54,7 @@ const emit = defineEmits(['changeLanguage']);
- + MOSE Logo MOSE @@ -65,22 +65,20 @@ const emit = defineEmits(['changeLanguage']); v-for="(item, index) in navItems" :key="item.path" :to="item.path" - class="text-text-secondary hover:text-text transition-colors duration-200 animate__animated animate__fadeInDown" + class="text-text-secondary hover:text-text transition-colors duration-200 animate__animated animate__fadeInDown animate__duration-fast" :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 + 'animate__delay-xs': index === 1, + 'animate__delay-sm': index === 2, + 'animate__delay-md': index === 3, + 'animate__delay-lg': index === 4 }" > {{ item.name }} -
+
+
+ + +
+ + + + + + +
+
+ + +
+
+ {{ t('faq.search.noresults') }} +
+ +
+
+ + +
+

{{ question.answer }}

+
+
+
+
+
+ + + +
+
+
+

+ {{ t('faq.more.title') }} +

+
+ + {{ t('faq.more.contact') }} + + + {{ t('faq.more.community') }} + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue index 552ae01..e1eec29 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -1,6 +1,7 @@ \ No newline at end of file + + + \ No newline at end of file