From 852e3a7b4677d21dea4fd3ce95c0444f9336b531 Mon Sep 17 00:00:00 2001 From: veeso Date: Tue, 10 Dec 2024 10:40:27 +0100 Subject: [PATCH] fix: setup guide --- sitemap.xml | 40 ++++++ src/js/components/App/Routes.tsx | 6 + src/js/components/App/pages/Guide.tsx | 7 + src/js/components/App/pages/Guide/Wrapper.tsx | 121 ++++++++++++++++++ src/js/components/App/pages/Home.tsx | 2 +- src/js/components/App/pages/Home/Intro.tsx | 1 + src/js/components/App/pages/Home/Roadmap.tsx | 8 +- .../components/App/pages/Home/Tokenomics.tsx | 2 +- src/js/components/App/pages/Presale/Info.tsx | 15 +-- src/js/components/AppLayout.tsx | 28 ++-- src/js/components/Footer.tsx | 17 ++- src/js/components/Header/Desktop.tsx | 10 +- src/js/components/Header/Mobile.tsx | 12 +- src/js/utils/routes.ts | 10 ++ src/js/utils/seo.ts | 36 ++++++ 15 files changed, 281 insertions(+), 34 deletions(-) create mode 100644 src/js/components/App/pages/Guide.tsx create mode 100644 src/js/components/App/pages/Guide/Wrapper.tsx diff --git a/sitemap.xml b/sitemap.xml index ddccc9e..f141819 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -26,4 +26,44 @@ 2025-01-10 1.00 + + https://ekokedao.com/guide/faq + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/whitepaper + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/canisters/deferred-data + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/canisters/deferred-minter + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/contracts/deferred + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/contracts/ekoke + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/contracts/marketplace + 2025-01-10 + 1.00 + + + https://ekokedao.com/guide/contracts/reward-pool + 2025-01-10 + 1.00 + diff --git a/src/js/components/App/Routes.tsx b/src/js/components/App/Routes.tsx index 1b25c45..eb01586 100644 --- a/src/js/components/App/Routes.tsx +++ b/src/js/components/App/Routes.tsx @@ -23,6 +23,9 @@ const ProfileContracts = React.lazy( () => import('./pages/Profile/pages/Contracts'), ); +// Guide +const Guide = React.lazy(() => import('./pages/Guide')); + const AppRouter = () => ( <> @@ -52,6 +55,9 @@ const AppRouter = () => ( element={} /> + {/* Guide */} + } /> + {/* 404 */} } /> diff --git a/src/js/components/App/pages/Guide.tsx b/src/js/components/App/pages/Guide.tsx new file mode 100644 index 0000000..4c9cd15 --- /dev/null +++ b/src/js/components/App/pages/Guide.tsx @@ -0,0 +1,7 @@ +import * as React from 'react'; + +import Wrapper from './Guide/Wrapper'; + +const Guide = () => ; + +export default Guide; diff --git a/src/js/components/App/pages/Guide/Wrapper.tsx b/src/js/components/App/pages/Guide/Wrapper.tsx new file mode 100644 index 0000000..dbbbf0e --- /dev/null +++ b/src/js/components/App/pages/Guide/Wrapper.tsx @@ -0,0 +1,121 @@ +import * as React from 'react'; +import { useLocation } from 'react-router-dom'; +import * as IconMd from 'react-icons/md'; +import * as FaIcon from 'react-icons/fa6'; + +import { Route } from '../../../../utils/routes'; +import Container from '../../../reusable/Container'; +import Link from '../../../reusable/Link'; + +enum Item { + Architecture = Route.GUIDE_ARCHITECTURE, + Faq = Route.GUIDE_FAQ, + DeferredData = Route.GUIDE_CANISTERS_DATA, + DeferredMinter = Route.GUIDE_CANISTERS_MINTER, + DeferredContracts = Route.GUIDE_CONTRACTS_DEFERRED, + EkokeContracts = Route.GUIDE_CONTRACTS_EKOKE, + MarketplaceContracts = Route.GUIDE_CONTRACTS_MARKETPLACE, + RewardPoolContracts = Route.GUIDE_CONTRACTS_REWARD_POOL, + Whitepaper = Route.GUIDE_WHITEPAPER, +} + +const menu = { + [Item.Faq]: { + title: 'F.A.Q.', + url: Route.GUIDE_FAQ, + icon: , + }, + [Item.Architecture]: { + title: 'Architecture', + url: Route.GUIDE_ARCHITECTURE, + icon: , + }, + [Item.DeferredData]: { + title: 'Deferred Data', + url: Route.GUIDE_CANISTERS_DATA, + icon: , + }, + [Item.DeferredMinter]: { + title: 'Deferred Minter', + url: Route.GUIDE_CANISTERS_MINTER, + icon: , + }, + [Item.DeferredContracts]: { + title: 'Deferred Contracts', + url: Route.GUIDE_CONTRACTS_DEFERRED, + icon: , + }, + [Item.EkokeContracts]: { + title: 'Ekoke Contracts', + url: Route.GUIDE_CONTRACTS_EKOKE, + icon: , + }, + [Item.MarketplaceContracts]: { + title: 'Marketplace Contracts', + url: Route.GUIDE_CONTRACTS_MARKETPLACE, + icon: , + }, + [Item.RewardPoolContracts]: { + title: 'Reward Pool Contracts', + url: Route.GUIDE_CONTRACTS_REWARD_POOL, + icon: , + }, + [Item.Whitepaper]: { + title: 'Whitepaper', + url: Route.GUIDE_WHITEPAPER, + icon: , + }, +}; + +const routeToItems = { + [Route.url(Route.GUIDE_FAQ)]: Item.Faq, + [Route.url(Route.GUIDE_ARCHITECTURE)]: Item.Architecture, + [Route.url(Route.GUIDE_CANISTERS_DATA)]: Item.DeferredData, + [Route.url(Route.GUIDE_CANISTERS_MINTER)]: Item.DeferredMinter, + [Route.url(Route.GUIDE_CONTRACTS_DEFERRED)]: Item.DeferredContracts, + [Route.url(Route.GUIDE_CONTRACTS_EKOKE)]: Item.EkokeContracts, + [Route.url(Route.GUIDE_CONTRACTS_MARKETPLACE)]: Item.MarketplaceContracts, + [Route.url(Route.GUIDE_CONTRACTS_REWARD_POOL)]: Item.RewardPoolContracts, + [Route.url(Route.GUIDE_WHITEPAPER)]: Item.Whitepaper, +}; + +interface Props { + children?: React.ReactNode | React.ReactNode[] | string; +} + +const Wrapper = ({ children }: Props) => ( + + + + + + {children} + + +); + +const Menu = () => { + const { pathname } = useLocation(); + const current: Item = routeToItems[pathname]; + + return ( + + {Object.entries(menu).map(([key, value]) => ( + + + + {value.icon} + {value.title} + + + + ))} + + ); +}; + +export default Wrapper; diff --git a/src/js/components/App/pages/Home.tsx b/src/js/components/App/pages/Home.tsx index 97de6cd..b1acd50 100644 --- a/src/js/components/App/pages/Home.tsx +++ b/src/js/components/App/pages/Home.tsx @@ -10,7 +10,7 @@ import Presale from './Home/Presale'; const Home = () => ( - + diff --git a/src/js/components/App/pages/Home/Intro.tsx b/src/js/components/App/pages/Home/Intro.tsx index fc4077f..aa73064 100644 --- a/src/js/components/App/pages/Home/Intro.tsx +++ b/src/js/components/App/pages/Home/Intro.tsx @@ -28,6 +28,7 @@ const Intro = () => ( powered Deferred NFT system, buyers can pay for their homes in manageable installments. Each NFT represents a payment, and once all are completed, ownership of the property is fully transferred. + {' '} EKOKE DAO empowers members to invest in these NFTs, earning deflationary EKOKE tokens as{' '} rewards while supporting buyers with transparent and diff --git a/src/js/components/App/pages/Home/Roadmap.tsx b/src/js/components/App/pages/Home/Roadmap.tsx index 883c5ed..04af74a 100644 --- a/src/js/components/App/pages/Home/Roadmap.tsx +++ b/src/js/components/App/pages/Home/Roadmap.tsx @@ -14,7 +14,9 @@ const Roadmap = () => ( - 2025 + + 2025 + EKOKE Presale will be the first step to start the project. The goal @@ -48,7 +50,9 @@ const Roadmap = () => ( - 2026 + + 2026 + We aim to start building the real-estate network in the first diff --git a/src/js/components/App/pages/Home/Tokenomics.tsx b/src/js/components/App/pages/Home/Tokenomics.tsx index e5bf565..f59ceaa 100644 --- a/src/js/components/App/pages/Home/Tokenomics.tsx +++ b/src/js/components/App/pages/Home/Tokenomics.tsx @@ -59,7 +59,7 @@ const Tokenomics = () => ( - + ); diff --git a/src/js/components/App/pages/Presale/Info.tsx b/src/js/components/App/pages/Presale/Info.tsx index f84723f..f7b89d6 100644 --- a/src/js/components/App/pages/Presale/Info.tsx +++ b/src/js/components/App/pages/Presale/Info.tsx @@ -5,6 +5,7 @@ import Container from '../../../reusable/Container'; import Paragraph from '../../../reusable/Paragraph'; import Heading from '../../../reusable/Heading'; import Input from '../../../reusable/Input'; +import YoutubeVideo from '../../../reusable/YoutubeVideo'; const EKOKE_ADDRESS = '0x0'; @@ -18,17 +19,7 @@ const Info = () => { return ( - -