main
Thuong_e 2 years ago
parent 9fe7b4e40a
commit 9fbee934fc
  1. 1
      src/App.tsx
  2. 115
      src/i18n/en/qna.json
  3. 57
      src/i18n/en/roadmap.json
  4. 28
      src/i18n/i18n.ts
  5. 3
      src/i18n/vi/aboutSection.json
  6. 115
      src/i18n/vi/qna.json
  7. 35
      src/i18n/vi/roadmap.json
  8. 92
      src/shared/components/Header.tsx
  9. 6
      src/shared/components/animated/QnASection.css
  10. 51
      src/shared/components/animated/RoadmadAnimation.tsx
  11. 4
      src/shared/components/animated/TypingText.tsx
  12. 34
      src/shared/components/home/AboutSection.tsx
  13. 14
      src/shared/components/home/FirstSection.tsx
  14. 38
      src/shared/components/home/QnASection.tsx
  15. 17
      src/shared/components/home/RoadMap.tsx
  16. 26
      src/shared/components/home/TokenomicsSection.tsx
  17. 541
      src/shared/components/home/text

@ -1,3 +1,4 @@
import { useTranslation } from "react-i18next";
import RouterProviderComponent from "./shared/providers/RouterProviderComponent"; import RouterProviderComponent from "./shared/providers/RouterProviderComponent";
function App() { function App() {

@ -0,0 +1,115 @@
{
"data": [
{
"id": 1,
"title": "What is Fight Out?",
"bgcolor": "bg-[#CC99FF]",
"contents": [
{
"id": 1,
"content": "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
"bgcolor": "bg-[#9999FF]"
},
{
"id": 2,
"content": "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
"bgcolor": "bg-[#6699FF]"
},
{
"id": 3,
"content": "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
"bgcolor": "bg-[#3399FF]"
},
{
"id": 4,
"content": "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
"bgcolor": "bg-[#0099FF]"
}
]
},
{
"id": 2,
"title": "Abcd",
"bgcolor": "bg-[#CC66FF]",
"contents": [
{
"id": 1,
"bgcolor": "bg-[#9966FF]",
"content": "ádasffjk12"
},
{
"id": 2,
"bgcolor": "bg-[#6666FF]",
"content": "ádasffj1k"
},
{
"id": 3,
"bgcolor": "bg-[#3366FF]",
"content": "ádasffj12k"
},
{
"id": 4,
"bgcolor": "bg-[#0066FF]",
"content": "ádasffj123k"
}
]
},
{
"id": 3,
"title": "Abcd",
"bgcolor": "bg-[#CC66FF]",
"contents": [
{
"id": 1,
"bgcolor": "bg-[#9966FF]",
"content": "ádasffjk12"
},
{
"id": 2,
"bgcolor": "bg-[#6666FF]",
"content": "ádasffj1k"
},
{
"id": 3,
"bgcolor": "bg-[#3366FF]",
"content": "ádasffj12k"
},
{
"id": 4,
"bgcolor": "bg-[#0066FF]",
"content": "ádasffj123k"
}
]
},
{
"id": 4,
"title": "Abcd",
"bgcolor": "bg-[#CC66FF]",
"contents": [
{
"id": 1,
"bgcolor": "bg-[#9966FF]",
"content": "ádasffjk12"
},
{
"id": 2,
"bgcolor": "bg-[#6666FF]",
"content": "ádasffj1k"
},
{
"id": 3,
"bgcolor": "bg-[#3366FF]",
"content": "ádasffj12k"
},
{
"id": 4,
"bgcolor": "bg-[#0066FF]",
"content": "ádasffj123k"
}
]
}
]
}

@ -0,0 +1,57 @@
{
"array": [
{
"phase": "Phase 1",
"listTitle": [
"Development of CEO Ideology",
"Website Development and Release",
"Whitepaper Launch",
"Subscription Presale",
"Marketing Partners Advisory Board Formed"
]
},
{
"phase": "Phase 2",
"listTitle": [
"CEO DEX Token Launch",
"Massive Marketing Campaign",
"Real Time Suprise Buybacks",
"NFT Staking and APR Staking Launch",
"5 Million Marketcap Milestone CoinGecko Listing"
]
},
{
"phase": "Phase 3",
"listTitle": [
"Swap Development and Launch",
"Merchandise Launch",
"Tier 1 CEX Listings",
"CEO Bridge to ETH, Arbitrium and Polygon",
"10 Million MarketCap Milestone",
"CEOAI Bot Creator and integration with AI."
]
},
{
"phase": "Phase 4",
"listTitle": [
"Swap Development and Launch",
"Merchandise Launch",
"Tier 1 CEX Listings",
"CEO Bridge to ETH, Arbitrium and Polygon",
"10 Million MarketCap Milestone",
"CEOAI Bot Creator and integration with AI."
]
},
{
"phase": "Phase 5",
"listTitle": [
"Swap Development and Launch",
"Merchandise Launch",
"Tier 1 CEX Listings",
"CEO Bridge to ETH, Arbitrium and Polygon",
"10 Million MarketCap Milestone",
"CEOAI Bot Creator and integration with AI."
]
}
]
}

@ -1,18 +1,30 @@
import i18n from "i18next"; import i18n from "i18next";
import { useTranslation, initReactI18next } from "react-i18next"; import { useTranslation, initReactI18next } from "react-i18next";
import FirstSection_EN from "./en/firstSection.json" import FirstSection_EN from "./en/firstSection.json";
import FirstSection_VI from "./vi/firstSection.json" import FirstSection_VI from "./vi/firstSection.json";
import AboutSection_EN from "./en/aboutSection.json";
import AboutSection_VI from "./vi/aboutSection.json";
import RoadMap_EN from "./en/roadmap.json";
import RoadMap_VI from "./vi/roadmap.json";
import QnA_EN from "./en/qna.json";
import QnA_VI from "./vi/qna.json";
export const locales = { export const locales = {
en: 'English', en: "English",
vi: 'Việt Nam' vi: "Việt Nam",
} };
export const resources = { export const resources = {
en: { en: {
firstSection: FirstSection_EN firstSection: FirstSection_EN,
aboutSection: AboutSection_EN,
roadmap: RoadMap_EN,
qna: QnA_EN,
}, },
vi: { vi: {
firstSection: FirstSection_VI firstSection: FirstSection_VI,
aboutSection: AboutSection_VI,
roadmap: RoadMap_VI,
qna: QnA_VI,
}, },
}; };
i18n.use(initReactI18next).init({ i18n.use(initReactI18next).init({

@ -1,7 +1,6 @@
{ {
"title1": "SGPT là gì?", "title1": "SGPT là gì?",
"title2": "Giải pháp SGPT ", "title2": "Giải pháp SGPT ",
"content1": "SGPT Token là mã thông báo bổ sung được tạo trên nền tảng chuỗi khối để cung cấp nền tảng cho các doanh nghiệp vừa và nhỏ (SMBs) tạo và quản lý hệ thống hỏi đáp nội bộ. SGPT token sẽ được sử dụng để thực hiện các giao dịch trên nền tảng và cung cấp lợi ích cho các thành viên của hệ thống hỏi đáp nội bộ. SGPT token cũng sẽ được sử dụng để thưởng cho các thành viên có đóng góp tích cực cho hệ thống.", "content1": "SGPT Token là một mã thông báo bổ sung được tạo trên nền tảng chuỗi khối để cung cấp nền tảng cho các doanh nghiệp vừa và nhỏ (SMBs) tạo và quản lý hệ thống hỏi đáp nội bộ. SGPT Token sẽ được sử dụng để thực hiện các giao dịch trên nền tảng và cung cấp lợi ích cho các thành viên của hệ thống hỏi đáp nội bộ. SGPT Token cũng sẽ được sử dụng để thưởng cho các thành viên có đóng góp tích cực cho hệ thống.",
"content2": "SGPT Token là một giải pháp cho các vấn đề liên quan đến phương thức thanh toán truyền thống cho các dịch vụ chatbot trò chuyện. Mã thông báo được xây dựng trên công nghệ chuỗi khối, đảm bảo rằng các giao dịch diễn ra nhanh chóng, an toàn và minh bạch. Hơn nữa, việc sử dụng SGPT Token giúp loại bỏ nhu cầu về các phương thức thanh toán truyền thống, thường tốn kém và bất tiện." "content2": "SGPT Token là một giải pháp cho các vấn đề liên quan đến phương thức thanh toán truyền thống cho các dịch vụ chatbot trò chuyện. Mã thông báo được xây dựng trên công nghệ chuỗi khối, đảm bảo rằng các giao dịch diễn ra nhanh chóng, an toàn và minh bạch. Hơn nữa, việc sử dụng SGPT Token giúp loại bỏ nhu cầu về các phương thức thanh toán truyền thống, thường tốn kém và bất tiện."
} }

@ -0,0 +1,115 @@
{
"data": [
{
"id": 1,
"title": "Fight Out là gì?",
"bgcolor": "bg-[#CC99FF]",
"contents": [
{
"id": 1,
"content": "Fight Out đang thay đổi kế hoạch chi tiết cho metaverse. Về bản chất, Fight Out là một nền tảng trò chơi thưởng cho người dùng khi thi đấu và giành chiến thắng trong nhiều chế độ thi đấu. Khả năng cạnh tranh của người chơi và số tiền họ được thưởng được xác định một phần bởi các thuộc tính của hình đại diện của họ. Chỉ số được tăng lên thông qua ứng dụng Fight Out bằng cách luyện tập ngoài đời thực.",
"bgcolor": "bg-[#9999FF]"
},
{
"id": 2,
"content": "Fight Out đang thay đổi kế hoạch chi tiết cho metaverse. Về bản chất, Fight Out là một nền tảng trò chơi thưởng cho người dùng khi thi đấu và giành chiến thắng trong nhiều chế độ thi đấu. Khả năng cạnh tranh của người chơi và số tiền họ được thưởng được xác định một phần bởi các thuộc tính của hình đại diện của họ. Chỉ số được tăng lên thông qua ứng dụng Fight Out bằng cách luyện tập ngoài đời thực.",
"bgcolor": "bg-[#6699FF]"
},
{
"id": 3,
"content": "Fight Out đang thay đổi kế hoạch chi tiết cho metaverse. Về bản chất, Fight Out là một nền tảng trò chơi thưởng cho người dùng khi thi đấu và giành chiến thắng trong nhiều chế độ thi đấu. Khả năng cạnh tranh của người chơi và số tiền họ được thưởng được xác định một phần bởi các thuộc tính của hình đại diện của họ. Chỉ số được tăng lên thông qua ứng dụng Fight Out bằng cách luyện tập ngoài đời thực.",
"bgcolor": "bg-[#3399FF]"
},
{
"id": 4,
"content": "Fight Out đang thay đổi kế hoạch chi tiết cho metaverse. Về bản chất, Fight Out là một nền tảng trò chơi thưởng cho người dùng khi thi đấu và giành chiến thắng trong nhiều chế độ thi đấu. Khả năng cạnh tranh của người chơi và số tiền họ được thưởng được xác định một phần bởi các thuộc tính của hình đại diện của họ. Chỉ số được tăng lên thông qua ứng dụng Fight Out bằng cách luyện tập ngoài đời thực.",
"bgcolor": "bg-[#0099FF]"
}
]
},
{
"id": 2,
"title": "Abcd",
"bgcolor": "bg-[#CC66FF]",
"contents": [
{
"id": 1,
"bgcolor": "bg-[#9966FF]",
"content": "ádasffjk12"
},
{
"id": 2,
"bgcolor": "bg-[#6666FF]",
"content": "ádasffj1k"
},
{
"id": 3,
"bgcolor": "bg-[#3366FF]",
"content": "ádasffj12k"
},
{
"id": 4,
"bgcolor": "bg-[#0066FF]",
"content": "ádasffj123k"
}
]
},
{
"id": 3,
"title": "Abcd",
"bgcolor": "bg-[#CC66FF]",
"contents": [
{
"id": 1,
"bgcolor": "bg-[#9966FF]",
"content": "ádasffjk12"
},
{
"id": 2,
"bgcolor": "bg-[#6666FF]",
"content": "ádasffj1k"
},
{
"id": 3,
"bgcolor": "bg-[#3366FF]",
"content": "ádasffj12k"
},
{
"id": 4,
"bgcolor": "bg-[#0066FF]",
"content": "ádasffj123k"
}
]
},
{
"id": 4,
"title": "Abcd",
"bgcolor": "bg-[#CC66FF]",
"contents": [
{
"id": 1,
"bgcolor": "bg-[#9966FF]",
"content": "ádasffjk12"
},
{
"id": 2,
"bgcolor": "bg-[#6666FF]",
"content": "ádasffj1k"
},
{
"id": 3,
"bgcolor": "bg-[#3366FF]",
"content": "ádasffj12k"
},
{
"id": 4,
"bgcolor": "bg-[#0066FF]",
"content": "ádasffj123k"
}
]
}
]
}

@ -0,0 +1,35 @@
{
"array": [
{
"phase": "Giai đoạn 1",
"listTitle": [
"Sự phát triển của tư tưởng CEO",
"Phát triển và phát hành trang web",
"Ra mắt Whitepaper",
"Đăng ký bán trước",
"Ban cố vấn đối tác tiếp thị được thành lập"
]
},
{
"phase": "Giai đoạn 2",
"listTitle": [
"CEO DEX ra mắt Token",
"Chiến dịch tiếp thị lớn",
"Mua lại theo thời gian thực",
"Ra mắt NFT Staking và APR Staking",
"Cột mốc 5 triệu vốn hóa thị trường niêm yết CoinGecko"
]
},
{
"phase": "Giai đoạn 3",
"listTitle": [
"Phát triển và triển khai hoán đổi",
"Ra mắt Merchandise",
"Tier 1 CEX Listings",
"Cầu nối CEO tới ETH, Arbitrium và Polygon",
"Cột mốc vốn hóa thị trường 10 triệu",
"CEOAI Bot Creator và tích hợp với AI."
]
}
]
}

@ -37,10 +37,8 @@ const Header = (props: Props) => {
const [isOpenMenu, setIsOpenMenu] = React.useState(false); const [isOpenMenu, setIsOpenMenu] = React.useState(false);
const [isMobile, setIsMobile] = React.useState(false); const [isMobile, setIsMobile] = React.useState(false);
const { i18n } = useTranslation(); const { i18n } = useTranslation();
const currentLanguage = locales[i18n.language as keyof typeof locales ] const currentLanguage = locales[i18n.language as keyof typeof locales];
const languages = Object.keys(resources) const languages = Object.keys(resources);
console.log(Object.keys(resources));
console.log(currentLanguage);
React.useEffect(() => { React.useEffect(() => {
// check is mobile // check is mobile
if (window.innerWidth <= 768) { if (window.innerWidth <= 768) {
@ -68,6 +66,7 @@ const Header = (props: Props) => {
const element = document.getElementById(section); const element = document.getElementById(section);
if (element) { if (element) {
element.scrollIntoView({ behavior: "smooth" }); element.scrollIntoView({ behavior: "smooth" });
setIsOpenMenu(!isOpenMenu);
} }
}; };
const backToHome = () => { const backToHome = () => {
@ -82,13 +81,13 @@ const Header = (props: Props) => {
window.open(pdf); window.open(pdf);
}; };
const changeLanguage = (lng: string) => { const changeLanguage = (lng: string) => {
i18n.changeLanguage(lng) i18n.changeLanguage(lng);
} };
return ( return (
<> <>
{isScrolled ? ( {isScrolled ? (
<div className="fixed w-full z-30 p-4 transition-all duration-150 bg-gray-800"> <div className="fixed w-full z-30 p-4 transition-all duration-150 bg-gray-800">
<div className="container mx-auto flex justify-between items-center "> <div className="container md:gap-2 mx-auto flex justify-between items-center ">
<div <div
className="flex gap-2 items-center cursor-pointer hover:text-orange-400" className="flex gap-2 items-center cursor-pointer hover:text-orange-400"
onClick={() => backToHome()} onClick={() => backToHome()}
@ -117,8 +116,30 @@ const Header = (props: Props) => {
<div className="w-6 h-1 bg-white rounded-full"></div> <div className="w-6 h-1 bg-white rounded-full"></div>
</div> </div>
) : ( ) : (
<div className="flex gap-10 items-center"> <>
<ul className="flex gap-10"> <div className="flex text-white items-center gap-x-2 cursor-pointer group relative">
<MdLanguage className="text-[24px]" />
<span className="group-hover:text-orange-400">
{currentLanguage}
</span>
<div className=" h-40 w-[140px] absolute top-3"></div>
<ul className="hidden group-hover:flex animate-show-list-language absolute top-10 flex-col gap-y-4 bg-slate-800 w-[120px] rounded">
{languages.map((lng, index) => (
<>
<li
key={lng + index}
className="lng-item relative group/lng-item w-fit hover:text-orange-400 animate-show pl-2 mr-4 my-2"
onClick={() => changeLanguage(lng)}
>
{locales[lng as keyof typeof locales]}
<div className="absolute bottom-0 bg-white h-[1px] w-0 animate-show group-hover/lng-item:w-full group-hover/lng-item:bg-orange-400"></div>
</li>
</>
))}
</ul>
</div>
<div className="flex md:gap-4 gap-10 items-center">
<ul className="flex md:gap-4 lg:gap-10">
{menuItems.map((item) => ( {menuItems.map((item) => (
<li <li
className="inline-block " className="inline-block "
@ -147,22 +168,23 @@ const Header = (props: Props) => {
</Button> </Button>
</div> </div>
</div> </div>
</>
) )
} }
{ {
// Mobile menu // Mobile menu
isMobile && isOpenMenu ? ( isMobile && isOpenMenu ? (
<div className="fixed top-12 right-0 py-4 pl-6 pr-10 bg-gray-800 z-40 rounded-xl"> <div className="fixed top-12 right-0 py-4 w-[200px] bg-gray-800 z-40 rounded-xl">
<div className="flex flex-col items-center justify-center h-full"> <div className="flex flex-col pl-[20px] h-full">
<ul className="flex flex-col gap-3 "> <ul className="flex flex-col gap-3 ">
{menuItems.map((item) => ( {menuItems.map((item, index) => (
<li <li
className="inline-block" className="inline-block"
key={item.path} key={item.path}
onClick={() => jumpToSection(item.id)} onClick={() => jumpToSection(item.id)}
> >
<p className="text-white text-md transition-all duration-150 cursor-pointer"> <p className="text-white text-md transition-all duration-150 cursor-pointer hover:text-orange-400">
{item.name} {item.name}
</p> </p>
</li> </li>
@ -171,15 +193,38 @@ const Header = (props: Props) => {
className="inline-block" className="inline-block"
onClick={() => openLocalPdf()} onClick={() => openLocalPdf()}
> >
<p className="text-white text-md transition-all duration-150 cursor-pointer"> <p className="text-white text-md transition-all duration-150 cursor-pointer hover:text-orange-400">
Whitepaper Whitepaper
</p> </p>
</li> </li>
<li className="inline-block"> <li className="inline-block">
<p className="text-white text-md transition-all duration-150 cursor-pointer"> <p className="text-white text-md transition-all duration-150 cursor-pointer hover:text-orange-400">
Audit Audit
</p> </p>
</li> </li>
<div className="flex flex-col text-white gap-y-2 cursor-pointer group relative">
<div className="flex flex-row gap-x-1">
<MdLanguage className="text-[24px]" />
<span className="group-hover:text-orange-400">
{currentLanguage}
</span>
</div>
{/* <div className=" h-40 w-[140px] absolute top-3"></div> */}
<ul className="hidden group-hover:flex animate-show-list-language flex-col gap-y-4 ">
{languages.map((lng, index) => (
<>
<li
className="lng-item relative group/lng-item w-fit hover:text-orange-400 animate-show"
key={index}
onClick={() => changeLanguage(lng)}
>
{locales[lng as keyof typeof locales]}
<div className="absolute bottom-0 bg-white h-[1px] w-0 animate-show group-hover/lng-item:w-full group-hover/lng-item:bg-orange-400"></div>
</li>
</>
))}
</ul>
</div>
</ul> </ul>
</div> </div>
</div> </div>
@ -204,26 +249,31 @@ const Header = (props: Props) => {
</div> </div>
<div className="flex text-white items-center gap-x-2 cursor-pointer group relative"> <div className="flex text-white items-center gap-x-2 cursor-pointer group relative">
<MdLanguage className="text-[24px]" /> <MdLanguage className="text-[24px]" />
<span className="group-hover:text-orange-400">{currentLanguage}</span> <span className="group-hover:text-orange-400">
{currentLanguage}
</span>
<div className=" h-40 w-[140px] absolute top-3"></div> <div className=" h-40 w-[140px] absolute top-3"></div>
<ul className="hidden group-hover:flex animate-show-list-language absolute top-10 flex-col gap-y-4 "> <ul className="hidden group-hover:flex animate-show-list-language absolute top-10 flex-col gap-y-4 ">
{languages.map((lng)=>( {languages.map((lng, index) => (
<> <>
<li className="lng-item relative group/lng-item w-fit hover:text-orange-400 animate-show" onClick={()=>changeLanguage(lng)}> <li
key={index}
className="lng-item relative group/lng-item w-fit hover:text-orange-400 animate-show"
onClick={() => changeLanguage(lng)}
>
{locales[lng as keyof typeof locales]} {locales[lng as keyof typeof locales]}
<div className="absolute bottom-0 bg-white h-[1px] w-0 animate-show group-hover/lng-item:w-full group-hover/lng-item:bg-orange-400"></div> <div className="absolute bottom-0 bg-white h-[1px] w-0 animate-show group-hover/lng-item:w-full group-hover/lng-item:bg-orange-400"></div>
</li> </li>
</> </>
))} ))}
</ul> </ul>
</div> </div>
<div className="flex gap-10 items-center"> <div className="flex gap-10 items-center">
<ul className="flex gap-10"> <ul className="flex gap-10">
{menuItems.map((item) => ( {menuItems.map((item, index) => (
<li <li
className="inline-block " className="inline-block "
key={item.path} key={item.path + index}
onClick={() => jumpToSection(item.id)} onClick={() => jumpToSection(item.id)}
> >
<p className="text-white text-md transition-all duration-150 cursor-pointer hover:text-orange-400"> <p className="text-white text-md transition-all duration-150 cursor-pointer hover:text-orange-400">

@ -10,10 +10,8 @@
.listItem__QnA { .listItem__QnA {
max-height: 0; max-height: 0;
overflow: hidden; overflow: hidden;
transition: all 1.5s ease; transition: all 1.5s ease-in-out;
} }
.listItem__QnA-active { .listItem__QnA-active {
max-height: 100vh; max-height: 150vh;
} }

@ -0,0 +1,51 @@
function qs(selector: any, all = false) {
return all
? document.querySelectorAll(selector)
: document.querySelector(selector);
}
const sections = qs(".section", true);
const timeline = qs(".timeline");
const line = qs(".line");
line.style.bottom = `calc(100% - 20px)`;
let prevScrollY = window.scrollY;
let up, down;
let full = false;
let set = 0;
const targetY = window.innerHeight * 0.8;
function scrollHandler(e?: any) {
const { scrollY } = window;
up = scrollY < prevScrollY;
down = !up;
const timelineRect = timeline.getBoundingClientRect();
const lineRect = line.getBoundingClientRect(); // const lineHeight = lineRect.bottom - lineRect.top;
const dist = targetY - timelineRect.top;
console.log(dist);
if (down && !full) {
set = Math.max(set, dist);
line.style.bottom = `calc(100% - ${set}px)`;
}
if (dist > timeline.offsetHeight + 50 && !full) {
full = true;
line.style.bottom = `-50px`;
}
sections.forEach((item: any) => {
// console.log(item);
const rect = item.getBoundingClientRect(); // console.log(rect);
if (rect.top + item.offsetHeight / 5 < targetY) {
item.classList.add("show-me");
}
}); // console.log(up, down);
prevScrollY = window.scrollY;
}
scrollHandler();
line.style.display = "block";
window.addEventListener("scroll", scrollHandler);

@ -18,11 +18,11 @@ const TypingText = ({ children, ...props }: Props) => {
const timeoutId = setTimeout(() => { const timeoutId = setTimeout(() => {
setTypedText(text.slice(0, typedText.length + 1)); setTypedText(text.slice(0, typedText.length + 1));
}, 70); }, 50);
return () => clearTimeout(timeoutId); return () => clearTimeout(timeoutId);
}, [text, typedText]); }, [text, typedText]);
return <h1> {typedText}</h1>; return <span>{typedText}</span>;
}; };
export default TypingText; export default TypingText;

@ -1,4 +1,6 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import { useTranslation } from "react-i18next";
import aboutImage from "../../../assets/images/robot32.png"; import aboutImage from "../../../assets/images/robot32.png";
import VideoSGPT from "../../../assets/sgpt.mp4"; import VideoSGPT from "../../../assets/sgpt.mp4";
import MysteriousText from "../animated/MysteriousText"; import MysteriousText from "../animated/MysteriousText";
@ -6,13 +8,15 @@ import TypingText from "../animated/TypingText";
type Props = {}; type Props = {};
const AboutSection = (props: Props) => { const AboutSection = (props: Props) => {
const { t } = useTranslation("aboutSection");
const copyToClipboard = (address: string) => { const copyToClipboard = (address: string) => {
navigator.clipboard.writeText(address); navigator.clipboard.writeText(address);
}; };
return ( return (
<div <div
className="container mx-auto text-white py-2 lg:flex-row flex-col flex relative " className="container mx-auto text-white py-2 lg:flex-row flex-col flex relative scroll-mt-16 "
id="about" id="about"
style={{ style={{
backgroundImage: `url(https://awv3node-homepage.surge.sh/build/assets/stars.svg)}`, backgroundImage: `url(https://awv3node-homepage.surge.sh/build/assets/stars.svg)}`,
@ -21,40 +25,20 @@ const AboutSection = (props: Props) => {
<div className="flex flex-col justify-center gap-10 lg:w-1/2 w-full px-8 pt-2 order-1"> <div className="flex flex-col justify-center gap-10 lg:w-1/2 w-full px-8 pt-2 order-1">
<div className="flex flex-col gap-8"> <div className="flex flex-col gap-8">
<h4 className="text-3xl uppercase font-bold hover:text-orange-400"> <h4 className="text-3xl uppercase font-bold hover:text-orange-400">
What is SGPT? {t("title1")}
</h4> </h4>
{/* <div>
<h1>{typedText}</h1>
</div> */}
<p className="text-gray-100 w-full md:w-full lg:w-4/5 text-lg min-h-[255px] text-justify"> <p className="text-gray-100 w-full md:w-full lg:w-4/5 text-lg min-h-[255px] text-justify">
<TypingText> <TypingText>{t("content1")}</TypingText>
SGPT Token is a complementary token created on the blockchain
platform to provide a platform for small and medium-sized
businesses (SMBs) to create and manage an internal Q&A system.
SGPT Token will be used to conduct transactions on the platform
and provide benefits to members of the internal Q&A system. SGPT
Token will also be used to reward members who make positive
contributions to the system.
</TypingText>
{/* <MysteriousText>
</MysteriousText> */}
</p> </p>
</div> </div>
<div className="flex flex-col gap-4"> <div className="flex flex-col gap-4">
<h4 className="text-3xl uppercase font-bold hover:text-orange-400"> <h4 className="text-3xl uppercase font-bold hover:text-orange-400">
SGPT Solution {t("title2")}
</h4> </h4>
<p className="text-gray-100 w-full md:w-full lg:w-4/5 text-lg min-h-[225px] text-justify"> <p className="text-gray-100 w-full md:w-full lg:w-4/5 text-lg min-h-[225px] text-justify">
{/* <h1>{typedText}</h1> */} {/* <h1>{typedText}</h1> */}
<TypingText> <TypingText>{t("content2")}</TypingText>
The SGPT Token is a solution to the problems associated with
traditional payment methods for chat bot services. The token is
built on blockchain technology, which ensures that transactions
are fast, secure, and transparent. Moreover, the use of the SGPT
Token eliminates the need for traditional payment methods, which
are often costly and inconvenient.
</TypingText>
{/* <MysteriousText> {/* <MysteriousText>
</MysteriousText> */} </MysteriousText> */}

@ -52,7 +52,7 @@ const socials = [
]; ];
const FirstSection = () => { const FirstSection = () => {
const {t} = useTranslation('firstSection') const { t } = useTranslation("firstSection");
const address = "0x3c97331438e90680a17c35905ffc2b8ef760f844"; const address = "0x3c97331438e90680a17c35905ffc2b8ef760f844";
const truncateAddress = (address: string) => { const truncateAddress = (address: string) => {
return address.slice(0, 5) + "......" + address.slice(-5); return address.slice(0, 5) + "......" + address.slice(-5);
@ -91,19 +91,17 @@ const FirstSection = () => {
<div className="lg:w-4/5 w-[99%] sm:w-full flex flex-col justify-center lg:pb-0 gap-16 pb-20 z-50 px-1"> <div className="lg:w-4/5 w-[99%] sm:w-full flex flex-col justify-center lg:pb-0 gap-16 pb-20 z-50 px-1">
<div className="flex flex-col gap-10 "> <div className="flex flex-col gap-10 ">
<h4 className="lg:w-3/4 lg:text-5xl md:text-5xl text-3xl font-bold hover:text-orange-400"> <h4 className="lg:w-3/4 lg:text-5xl md:text-5xl text-3xl font-bold hover:text-orange-400">
{t('title')} {t("title")}
{/* A digital currency payment for chat bot services */} {/* A digital currency payment for chat bot services */}
</h4> </h4>
<p className="lg:w-2/3 w-full font-body"> <p className="lg:w-2/3 w-full font-body">{t("content")}</p>
{t('content')}
</p>
</div> </div>
<div className=" flex flex-col gap-y-8 "> <div className=" flex flex-col gap-y-8 ">
<div className=" flex items-center justify-around flex-wrap lg:w-3/4"> <div className=" flex items-center justify-around flex-wrap lg:w-3/4">
<div className="flex rounded items-center gap-4"> <div className="flex rounded items-center gap-4">
<TbAddressBook className="text-orange-500" size={22} /> <TbAddressBook className="text-orange-500" size={22} />
<h2 className="text-gray-100 text-2xl font-bold hover:text-orange-400"> <h2 className="text-gray-100 text-2xl font-bold hover:text-orange-400">
{t('addressBSC')} {t("addressBSC")}
</h2> </h2>
<TbAddressBook className="text-orange-500" size={22} /> <TbAddressBook className="text-orange-500" size={22} />
</div> </div>
@ -120,10 +118,10 @@ const FirstSection = () => {
</div> </div>
</div> </div>
<div className="border sm:w-full border-orange-500 p-4 pb-6 pt-0 rounded-md lg:w-3/4"> <div className="border sm:w-full border-orange-500 p-4 pb-6 pt-0 rounded-md lg:w-3/4">
<div className="flex justify-start rounded md:animate-slide-loop items-center gap-4 py-6"> <div className="flex justify-start rounded w-fit animate-slide-loop items-center gap-4 py-6">
<BsRocketFill className="text-orange-500" size={22} /> <BsRocketFill className="text-orange-500" size={22} />
<h2 className=" sm:text-3xl font-bold hover:text-orange-400"> <h2 className=" sm:text-3xl font-bold hover:text-orange-400">
{t('Community')} {t("joinOur")}
</h2> </h2>
<BsRocketFill className="text-orange-500" size={22} /> <BsRocketFill className="text-orange-500" size={22} />
</div> </div>

@ -1,5 +1,7 @@
import { useSpring, animated } from "@react-spring/web"; import { useSpring, animated } from "@react-spring/web";
import React, { useEffect, useRef, useState } from "react"; import React, { useEffect, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { import {
VscArrowDown, VscArrowDown,
VscChevronDown, VscChevronDown,
@ -13,8 +15,7 @@ const QnASection = (props: Props) => {
const listQnA = [ const listQnA = [
{ {
id: 1, id: 1,
title: title: "What is Fight Out?",
"What is Fight Out?",
bgcolor: "bg-[#CC99FF]", bgcolor: "bg-[#CC99FF]",
contents: [ contents: [
{ {
@ -128,6 +129,8 @@ const QnASection = (props: Props) => {
], ],
}, },
]; ];
const { t } = useTranslation("qna");
const [qnaData, setQnaData] = useState([]);
const showListItem = (id: string, iconDropDown: string) => { const showListItem = (id: string, iconDropDown: string) => {
const iconDropDownid = document.getElementById(`${iconDropDown}`); const iconDropDownid = document.getElementById(`${iconDropDown}`);
// const ulhidden = document.querySelector(`#${id} ul`); // const ulhidden = document.querySelector(`#${id} ul`);
@ -142,6 +145,7 @@ const QnASection = (props: Props) => {
const [isVisible, setIsVisible] = useState(false); const [isVisible, setIsVisible] = useState(false);
useEffect(() => { useEffect(() => {
setQnaData(t("data", { returnObjects: true }));
const section = document.querySelector("#qna"); const section = document.querySelector("#qna");
const observer = new IntersectionObserver( const observer = new IntersectionObserver(
([entry]) => { ([entry]) => {
@ -158,7 +162,7 @@ const QnASection = (props: Props) => {
return () => { return () => {
observer.unobserve(section); observer.unobserve(section);
}; };
}, []); }, [t]);
useEffect(() => { useEffect(() => {
console.log("isVisible", isVisible); console.log("isVisible", isVisible);
@ -200,44 +204,38 @@ const QnASection = (props: Props) => {
}} }}
> >
<ul className="flex flex-col items-center gap-4 lg:w-full w-full"> <ul className="flex flex-col items-center gap-4 lg:w-full w-full">
{listQnA.map((item, index) => { {qnaData.map((item: any, index: any) => {
return ( return (
<li <li
id={"title" + item.id} id={"title" + item.id}
key={item.id} key={item.id}
className="w-full md:w-3/4 lg:w-full items-center flex flex-col pl-3 pr-3 h-full cursor-pointer" className="w-full md:w-3/4 lg:w-full items-center flex flex-col pl-3 pr-3 h-full cursor-pointer border border-orange-500 rounded"
onClick={() => onClick={() =>
showListItem("title" + item.id, index + item.title) showListItem("title" + item.id, index + item.title)
} }
> >
<div className="w-full min-h-[52px] flex justify-between items-center bg-slate-200 p-3 z-10 relative "> <div className="w-full min-h-[20px] flex justify-between items-center p-2 z-10 relative ">
<div {/* <div
className={`absolute h-full left-0 top-0 w-2 ${item.bgcolor}`} className={`absolute h-full left-0 top-0 w-2 ${item.bgcolor}`}
></div> ></div> */}
<span className="text-2xl pl-2 font-bold text-gray-700"> <span className="sm:text-xl md:text-2xl w-full pl-2 font-semibold borde text-white">
{item.title} {item.title}
</span> </span>
<div <div className="listQnA h-6 w-6 flex cursor-pointer ">
className="listQnA h-6 w-6 flex cursor-pointer "
>
<VscChevronDown <VscChevronDown
id={index + item.title} id={index + item.title}
className="iconDropDown iconActive hover:text-2xl m-auto text-gray-700" className="iconDropDown iconActive hover:text-2xl m-auto text-orange-500"
/> />
</div> </div>
</div> </div>
<ul className="listItem__QnA flex-col w-full list-answer "> <ul className="listItem__QnA flex-col w-full list-answer ">
{item.contents.map((list, index) => { {item.contents.map((list: any, index: any) => {
return ( return (
<li <li
key={list.id} key={list.id}
className=" w-full min-h-10 flex items-center p-3 bg-slate-200 relative" className=" w-full min-h-10 flex items-center p-3 relative first:border-t first:border-orange-500 "
> >
<div <span className="text-lg pl-2 font-bold text-white">
className={`absolute h-full left-0 top-0 w-2 ${list.bgcolor}`}
></div>
<span className="text-lg pl-2 font-bold text-gray-700">
{list.content} {list.content}
</span> </span>
</li> </li>

@ -1,6 +1,8 @@
import { useSpring, animated } from "@react-spring/web"; import { useSpring, animated } from "@react-spring/web";
import React, { useEffect, useRef, useState } from "react"; import React, { useEffect, useRef, useState } from "react";
import { VscDebugBreakpointLog } from "react-icons/vsc"; import { VscDebugBreakpointLog } from "react-icons/vsc";
import { useTranslation } from "react-i18next";
type Props = {}; type Props = {};
const roadMapData = [ const roadMapData = [
@ -63,8 +65,11 @@ const roadMapData = [
const RoadMap = (props: Props) => { const RoadMap = (props: Props) => {
const [isVisible, setIsVisible] = useState(false); const [isVisible, setIsVisible] = useState(false);
const { t } = useTranslation("roadmap");
const [roadMapData, setRoadmapData] = useState([]);
useEffect(() => { useEffect(() => {
setRoadmapData(t("array", { returnObjects: true }));
const section = document.getElementById("roadmap"); const section = document.getElementById("roadmap");
const observer = new IntersectionObserver( const observer = new IntersectionObserver(
([entry]) => { ([entry]) => {
@ -81,7 +86,7 @@ const RoadMap = (props: Props) => {
return () => { return () => {
observer.unobserve(section); observer.unobserve(section);
}; };
}, []); }, [t]);
useEffect(() => { useEffect(() => {
console.log("isVisible", isVisible); console.log("isVisible", isVisible);
@ -104,19 +109,19 @@ const RoadMap = (props: Props) => {
return ( return (
<div <div
className="container mx-auto text-white md:min-h-[60vh] animate-on-scroll py-20 relative" className="container mx-auto text-white md:min-h-[60vh] animate-on-scroll my-20 relative"
id="roadmap" id="roadmap"
> >
<animated.div <animated.div
style={{ ...styles1 }} style={{ ...styles1 }}
className="absolute top-[200px] rounded-lg left-[50%] translate-x-[50%] w-2 h-[80%] lg:h-[89%] bg-gradient-to-b from-violet-500 to-fuchsia-500" className="absolute top-[10%] rounded-lg left-[50%] translate-x-[50%] w-2 h-[80%] lg:h-[85%] bg-gradient-to-b from-violet-500 to-fuchsia-500"
></animated.div> ></animated.div>
<h1 className="text-4xl font-bold text-center hover:text-orange-400 pb-20"> <h1 className="text-4xl font-bold text-center hover:text-orange-400 pb-20 relative">
Road Map Road Map
</h1> </h1>
{/* <div className="flex flex-col lg:flex-row gap-10 mt-20 justify-center px-10 lg:px-0"> */} {/* <div className="flex flex-col lg:flex-row gap-10 mt-20 justify-center px-10 lg:px-0"> */}
<animated.div style={{ ...styles }} className="px-3 "> <animated.div style={{ ...styles }} className="px-3 ">
{roadMapData.map((item, index) => { {roadMapData.map((item: any, index: any) => {
return ( return (
<div <div
key={index} key={index}
@ -131,7 +136,7 @@ const RoadMap = (props: Props) => {
{item.phase} {item.phase}
</h4> </h4>
<ol className="flex flex-col gap-2"> <ol className="flex flex-col gap-2">
{item.listTitle.map((listItem, index) => { {item.listTitle.map((listItem: any, index: any) => {
return ( return (
<li <li
key={index} key={index}

@ -28,56 +28,56 @@ const tokenomics = [
{ {
name: "Private Sale", name: "Private Sale",
title: "Private Sale - 17% 3,400,000 SGPT", title: "Private Sale - 17% 3,400,000 SGPT",
description: " ",
precent: "17", precent: "17",
description: " ",
color: "#5dbdd3", color: "#5dbdd3",
bgcolor: "bg-[#5dbdd3]", bgcolor: "bg-[#5dbdd3]",
}, },
{ {
name: "Stacking & Farming", name: "Stacking & Farming",
title: "Stacking & Farming - 15% 3,000,000 SGPT", title: "Stacking & Farming - 15% 3,000,000 SGPT",
description: " ",
precent: "15", precent: "15",
description: " ",
color: "#4591b8", color: "#4591b8",
bgcolor: "bg-[#4591b8]", bgcolor: "bg-[#4591b8]",
}, },
{ {
name: "Marketing & Promotion", name: "Marketing & Promotion",
title: "Marketing & Promotion - 15% 3,000,000 SGPT", title: "Marketing & Promotion - 15% 3,000,000 SGPT",
description: " ",
precent: "15", precent: "15",
description: " ",
color: "#3b6696", color: "#3b6696",
bgcolor: "bg-[#3b6696]", bgcolor: "bg-[#3b6696]",
}, },
{ {
name: "Public Sale", name: "Public Sale",
title: "Public Sale - 14% 2,800,000 SGPT", title: "Public Sale - 14% 2,800,000 SGPT",
description: " ",
precent: "14", precent: "14",
description: " ",
color: "#353c6e", color: "#353c6e",
bgcolor: "bg-[#353c6e]", bgcolor: "bg-[#353c6e]",
}, },
{ {
name: "Reward & Q&A", name: "Reward & Q&A",
title: "Reward & Q&A - 10% 2,000,000 SGPT", title: "Reward & Q&A - 10% 2,000,000 SGPT",
description: " ",
precent: "10", precent: "10",
description: " ",
color: "#705788", color: "#705788",
bgcolor: "bg-[#705788]", bgcolor: "bg-[#705788]",
}, },
{ {
name: "Advisor", name: "Advisor",
title: "Advisor - 10% 2,000,000 SGPT", title: "Advisor - 10% 2,000,000 SGPT",
description: " ",
precent: "10", precent: "10",
description: " ",
color: "#a5769e", color: "#a5769e",
bgcolor: "bg-[#a5769e]", bgcolor: "bg-[#a5769e]",
}, },
{ {
name: "Treasury", name: "Treasury",
title: "Treasury - 14% 2,800,000 SGPT", title: "Treasury - 14% 2,800,000 SGPT",
description: " ",
precent: "14", precent: "14",
description: " ",
color: "#d59ab3", color: "#d59ab3",
bgcolor: "bg-[#d59ab3]", bgcolor: "bg-[#d59ab3]",
}, },
@ -116,11 +116,9 @@ const TokenomicsSection = (props: Props) => {
}, },
}); });
const plugins = { const plugins = {
id: "textCenter", id: "textCenter",
datalabels: {}, datalabels: {},
}; };
const [userData, setUserData] = useState({ const [userData, setUserData] = useState({
labels: tokenomics.map((data) => data.name), labels: tokenomics.map((data) => data.name),
@ -166,8 +164,8 @@ const TokenomicsSection = (props: Props) => {
}, },
datalabels: { datalabels: {
font: { font: {
size:
size: window.innerWidth > 1024 ? 20 : window.innerWidth > 768 ? 16 : 10, window.innerWidth > 1024 ? 20 : window.innerWidth > 768 ? 16 : 10,
}, },
color: "#fff", color: "#fff",
formatter: (context: any, agrs: any) => { formatter: (context: any, agrs: any) => {
@ -186,16 +184,16 @@ const TokenomicsSection = (props: Props) => {
}; };
ChartJS.register(ChartDataLabels); ChartJS.register(ChartDataLabels);
return ( return (
<div className="w-full pb-24" id="tokenomics"> <div className="w-full pb-24 scroll-mt-16" id="tokenomics">
<div className="container mx-auto"> <div className="container mx-auto">
<h1 className="text-4xl text-white font-bold text-center mb-20 hover:text-orange-400"> <h1 className="text-4xl text-white font-bold text-center mb-16 hover:text-orange-400">
Tokenomics Tokenomics
</h1> </h1>
<div className="w-full flex justify-center items-center lg:justify-between lg:flex-row"> <div className="w-full flex justify-center items-center lg:justify-between lg:flex-row">
<div className="w-full flex justify-center"> <div className="w-full flex justify-center">
<animated.div <animated.div
style={{ ...styles }} style={{ ...styles }}
className="w-[300px] sm:w-[350px] md:w-[500px] lg:w-[700px]" className="w-[300px] sm:w-[350px] md:w-[500px] lg:w-[550px]"
> >
<Pie <Pie
data={userData as any} data={userData as any}

@ -1,541 +0,0 @@
// <!-- <div>
// <div className="timeline">
// <div className="timeline-container primary">
// <div className="timeline-icon">
// {index + 1}
// {/* <i className="far fa-grin-wink"></i> */}
// </div>
// <div className="timeline-body">
// <h4 className="timeline-title">{item.phase}</h4>
// <ol className="flex flex-col gap-2">
// {item.listTitle.map((listItem, index) => {
// return (
// <li
// key={index}
// className="flex items-center gap-3 text-lg"
// >
// <VscDebugBreakpointLog />
// <p className="font-medium font-body">{listItem}</p>
// </li>
// );
// })}
// </ol>
// </div>
// </div>
// </div>
// </div>
// -->
// <!-- roadmap -->
// <!-- [&:nth-child(odd)>div]:right-[-25%] md:[&:nth-child(odd)]:float-left md:[&:nth-child(odd)]:clear-right md:[&:nth-child(odd)]:translate-x-[-30px] md:[&:nth-child(even)]:float-right md:[&:nth-child(even)]:clear-left md:[&:nth-child(even)]:translate-x-1 -->
// <!-- token -->
// import { useSpring, animated } from "@react-spring/web";
// import { useEffect, useState } from "react";
// import { Pie } from "react-chartjs-2";
// import "chart.js/auto";
// import {
// Chart as ChartJS,
// ArcElement,
// Tooltip,
// Legend,
// ChartData,
// } from "chart.js";
// import ChartDataLabels from "chartjs-plugin-datalabels";
// import { Context } from "chartjs-plugin-datalabels";
// import tokenomicChart from "../../../assets/images/tokenomic-chart.png";
// import "animate.css";
// type Props = {};
// ChartJS.register(ArcElement, Tooltip, Legend);
// const tokenomics = [
// {
// name: "Liquidity",
// title: "Liquidity - 5% 1,000,000 SGPT",
// precent: "5",
// description: " ",
// color: "#86eae9",
// bgcolor: "bg-[#86eae9]",
// },
// {
// name: "Private Sale",
// title: "Private Sale - 17% 3,400,000 SGPT",
// description: " ",
// precent: "17",
// color: "#5dbdd3",
// bgcolor: "bg-[#5dbdd3]",
// },
// {
// name: "Stacking & Farming",
// title: "Stacking & Farming - 15% 3,000,000 SGPT",
// description: " ",
// precent: "15",
// color: "#4591b8",
// bgcolor: "bg-[#4591b8]",
// },
// {
// name: "Marketing & Promotion",
// title: "Marketing & Promotion - 15% 3,000,000 SGPT",
// description: " ",
// precent: "15",
// color: "#3b6696",
// bgcolor: "bg-[#3b6696]",
// },
// {
// name: "Public Sale",
// title: "Public Sale - 14% 2,800,000 SGPT",
// description: " ",
// precent: "14",
// color: "#353c6e",
// bgcolor: "bg-[#353c6e]",
// },
// {
// name: "Reward & Q&A",
// title: "Reward & Q&A - 10% 2,000,000 SGPT",
// description: " ",
// precent: "10",
// color: "#705788",
// bgcolor: "bg-[#705788]",
// },
// {
// name: "Advisor",
// title: "Advisor - 10% 2,000,000 SGPT",
// description: " ",
// precent: "10",
// color: "#a5769e",
// bgcolor: "bg-[#a5769e]",
// },
// {
// name: "Treasury",
// title: "Treasury - 14% 2,800,000 SGPT",
// description: " ",
// precent: "14",
// color: "#d59ab3",
// bgcolor: "bg-[#d59ab3]",
// },
// ];
// const TokenomicsSection = (props: Props) => {
// const [isVisible, setIsVisible] = useState(false);
// useEffect(() => {
// const section = document.getElementById("tokenomics");
// const observer = new IntersectionObserver(
// ([entry]) => {
// setIsVisible(entry.isIntersecting);
// },
// { threshold: 0 }
// );
// if (!section) {
// return;
// }
// observer.observe(section);
// return () => {
// observer.unobserve(section);
// };
// }, []);
// useEffect(() => {
// console.log("isVisible", isVisible);
// }, [isVisible]);
// const styles = useSpring({
// opacity: isVisible ? 1 : 0,
// transform: isVisible ? "scaleX(1)" : "scaleX(0.5)",
// config: {
// duration: 300,
// },
// });
// const styles1 = useSpring({
// opacity: isVisible ? 1 : 0,
// transform: isVisible ? "scaleX(1)" : "scaleX(0.3)",
// config: {
// duration: 500,
// },
// });
// const plugins = {
// id: "textCenter",
// // beforeDatasetsDraw(chart: any, arg: any, pluginsOptions: any) {
// // const { ctx, data } = chart;
// // ctx.save();
// // ctx.fillStyle = "#fff";
// // ctx.font = "bolder 30px sen";
// // ctx.textAlign = "center";
// // ctx.textBaseline = "middle";
// // ctx.fillText(
// // `TOTAL SUPPLE`,
// // chart.getDatasetMeta(0).data[0].x,
// // chart.getDatasetMeta(0).data[0].y - 20
// // );
// // ctx.fillText(
// // `20,000,000 SGPT`,
// // chart.getDatasetMeta(0).data[0].x,
// // chart.getDatasetMeta(0).data[0].y + 25
// // );
// // },
// };
// const [userData, setUserData] = useState({
// labels: tokenomics.map((data) => data.name),
// datasets: [
// {
// label: "text",
// data: tokenomics.map((data) => data.precent),
// backgroundColor: tokenomics.map((data) => data.color),
// // cutout: "40%",
// borderWidth: 1,
// datalabels: {
// font: {
// weight: "bold",
// },
// anchor: "end",
// align: "start",
// offset: -30,
// },
// },
// ],
// });
// const options = {
// layout: {
// padding: {
// top: 50,
// bottom: 50,
// right: 50,
// left: 50,
// },
// },
// hoverBorderWidth: 4,
// plugins: {
// legend: {
// display: false,
// },
// datalabels: {
// font: {
// size: 22,
// },
// color: "#fff",
// formatter: (context: any, agrs: any) => {
// const index = agrs.dataIndex;
// console.log(agrs);
// return agrs.chart.data.labels[index];
// },
// },
// tooltip: {
// callbacks: {
// label: (context: any) => {
// const num = ((20000000 * context.parsed) / 100).toLocaleString(
// "en-us"
// );
// return ` ${context.label} ${context.parsed}% - ${num} SGPT`;
// },
// },
// },
// },
// };
// ChartJS.register(ChartDataLabels);
// return (
// <div className="w-full pb-24" id="tokenomics">
// <div className="container mx-auto">
// <h1 className="text-4xl text-white font-bold text-center mb-20">
// Tokenomics
// </h1>
// <div className="w-full flex justify-center items-center lg:justify-between flex-col gap-y-12 gap-x-4 lg:flex-row">
// <div className="w-full flex justify-center">
// <animated.div
// style={{ ...styles }}
// className="w-[400px] md:w-[500px] lg:w-[700px]"
// >
// <Pie
// data={userData as any}
// plugins={[plugins]}
// options={options}
// />
// </animated.div>
// </div>
// {/* <div className="w-full justify-center">
// <ul className="flex flex-col items-end justify-center h-full gap-3 px-3 max-sm:pt-10 cursor-pointer">
// {tokenomics.map((item, index) => {
// return (
// <animated.li
// key={index}
// className={`text-center w-full lg:w-3/4 bg-slate-200 py-3 relative animate__backInDown`}
// style={{ ...styles1 }}
// >
// <div
// className={`absolute h-full top-0 w-2 ${item.bgcolor}`}
// ></div>
// <h4 className="text-xl font-bold text-gray-700">
// {item.title}
// </h4>
// <p className="text-gray-500">{item.description}</p>
// </animated.li>
// );
// })}
// </ul>
// </div> */}
// </div>
// </div>
// </div>
// );
// };
// export default TokenomicsSection; -->
// // Qna
// // import { useSpring, animated } from "@react-spring/web";
// // import React, { useEffect, useRef, useState } from "react";
// // import {
// // VscArrowDown,
// // VscChevronDown,
// // VscDebugBreakpointLog,
// // VscDiffAdded,
// // } from "react-icons/vsc";
// // import "../animated/QnASection.css";
// // type Props = {};
// // const QnASection = (props: Props) => {
// // const listQnA = [
// // {
// // id: 1,
// // title:
// // "What is Fight Out dfgbdjka dfgh dfsgdfsh dfhsdf dfhjfsgjrt eryery dfhdfh jytjrty dfhdfh sdgsdg?",
// // bgcolor: "bg-[#CC99FF]",
// // contents: [
// // {
// // id: 1,
// // content:
// // "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
// // bgcolor: "bg-[#9999FF]",
// // },
// // {
// // id: 2,
// // content:
// // "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
// // bgcolor: "bg-[#6699FF]",
// // },
// // {
// // id: 3,
// // content:
// // "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
// // bgcolor: "bg-[#3399FF]",
// // },
// // {
// // id: 4,
// // content:
// // "Fight Out is changing the blueprint for metaverses. At its heart, Fight Out is a gaming platform that rewards users for competing and winning in a variety of contest modes. A player's ability to compete and how much they are rewarded is determined in part by their avatar’s attributes. Stats are increased through the Fight Out app by training in real -life.",
// // bgcolor: "bg-[#0099FF]",
// // },
// // ],
// // },
// // {
// // id: 2,
// // title: "Abcd",
// // bgcolor: "bg-[#CC66FF]",
// // contents: [
// // {
// // id: 1,
// // bgcolor: "bg-[#9966FF]",
// // content: "ádasffjk12",
// // },
// // {
// // id: 2,
// // bgcolor: "bg-[#6666FF]",
// // content: "ádasffj1k",
// // },
// // {
// // id: 3,
// // bgcolor: "bg-[#3366FF]",
// // content: "ádasffj12k",
// // },
// // {
// // id: 4,
// // bgcolor: "bg-[#0066FF]",
// // content: "ádasffj123k",
// // },
// // ],
// // },
// // {
// // id: 3,
// // title: "Abcd",
// // bgcolor: "bg-[#CC66FF]",
// // contents: [
// // {
// // id: 1,
// // bgcolor: "bg-[#9966FF]",
// // content: "ádasffjk12",
// // },
// // {
// // id: 2,
// // bgcolor: "bg-[#6666FF]",
// // content: "ádasffj1k",
// // },
// // {
// // id: 3,
// // bgcolor: "bg-[#3366FF]",
// // content: "ádasffj12k",
// // },
// // {
// // id: 4,
// // bgcolor: "bg-[#0066FF]",
// // content: "ádasffj123k",
// // },
// // ],
// // },
// // {
// // id: 4,
// // title: "Abcd",
// // bgcolor: "bg-[#CC66FF]",
// // contents: [
// // {
// // id: 1,
// // bgcolor: "bg-[#9966FF]",
// // content: "ádasffjk12",
// // },
// // {
// // id: 2,
// // bgcolor: "bg-[#6666FF]",
// // content: "ádasffj1k",
// // },
// // {
// // id: 3,
// // bgcolor: "bg-[#3366FF]",
// // content: "ádasffj12k",
// // },
// // {
// // id: 4,
// // bgcolor: "bg-[#0066FF]",
// // content: "ádasffj123k",
// // },
// // ],
// // },
// // ];
// // const showListItem = (id: string, iconDropDown: string) => {
// // const iconDropDownid = document.getElementById(`${iconDropDown}`);
// // // const ulhidden = document.querySelector(`#${id} ul`);
// // const ulhidden = document.querySelector(`#${id}>ul`);
// // console.log(ulhidden);
// // ulhidden?.classList.toggle("block");
// // ulhidden?.classList.toggle("showListQnA");
// // ulhidden?.classList.toggle("hiddenListQnA");
// // iconDropDownid?.classList.toggle("iconDropUp");
// // iconDropDownid?.classList.toggle("iconDropDown");
// // };
// // const [isVisible, setIsVisible] = useState(false);
// // useEffect(() => {
// // const section = document.querySelector("#qna");
// // const observer = new IntersectionObserver(
// // ([entry]) => {
// // setIsVisible(entry.isIntersecting);
// // },
// // { threshold: 0.2 }
// // );
// // if (!section) {
// // return;
// // }
// // observer.observe(section);
// // return () => {
// // observer.unobserve(section);
// // };
// // }, []);
// // useEffect(() => {
// // console.log("isVisible", isVisible);
// // }, [isVisible]);
// // const styles = useSpring({
// // opacity: isVisible ? 1 : 0,
// // from: {
// // opacity: 0,
// // },
// // to: {
// // opacity: isVisible ? 1 : 0,
// // },
// // config: {
// // duration: 1000,
// // },
// // });
// // return (
// // <div
// // className="container animate-[5s_ease] min-h-[400px] mb-[100px] lg:justify-center lg:flex mx-auto py-2 text-white "
// // id="qna"
// // >
// // <div className="w-full lg:w-[50%] min-h-[100px]">
// // <h1 className="text-4xl font-bold text-center hover:text-orange-400">
// // FAQS
// // </h1>
// // <h2 className="text-center ">
// // See some of the most frequently asked questions about Fight
// // {/* Out here. Got a question that’s not on the list? Let us know
// // below! */}
// // </h2>
// // </div>
// // <animated.div
// // className="w-full lg:w-[50%] mx-auto overflow-hidden"
// // style={{
// // ...styles,
// // }}
// // >
// // <ul className="flex flex-col items-center gap-4 lg:w-full w-full">
// // {listQnA.map((item, index) => {
// // return (
// // <li
// // id={"title" + item.id}
// // key={item.id}
// // className="w-full md:w-3/4 lg:w-full items-center flex flex-col pl-3 pr-3 h-full"
// // >
// // <div className="w-full min-h-[52px] flex justify-between items-center bg-slate-200 p-3 z-10 relative ">
// // <div
// // className={`absolute h-full left-0 top-0 w-2 ${item.bgcolor}`}
// // ></div>
// // <span className="text-2xl pl-2 font-bold text-gray-700">
// // {item.title}
// // </span>
// // <div
// // className="listQnA h-6 w-6 flex cursor-pointer "
// // onClick={() =>
// // showListItem("title" + item.id, index + item.title)
// // }
// // >
// // <VscChevronDown
// // id={index + item.title}
// // className="iconDropDown iconActive hover:text-2xl m-auto text-gray-700"
// // />
// // </div>
// // </div>
// // <ul className="flex-col w-full list-answer hiddenListQnA">
// // {item.contents.map((list, index) => {
// // return (
// // <li
// // key={list.id}
// // className=" w-full min-h-10 flex items-center p-3 bg-slate-200 relative"
// // >
// // <div
// // className={`absolute h-full left-0 top-0 w-2 ${list.bgcolor}`}
// // ></div>
// // <span className="text-lg pl-2 font-bold text-gray-700">
// // {list.content}
// // </span>
// // </li>
// // );
// // })}
// // </ul>
// // </li>
// // );
// // })}
// // </ul>
// // </animated.div>
// // </div>
// // );
// // };
// // export default QnASection;
Loading…
Cancel
Save