diff --git a/index.html b/index.html index 2d45a96..9dab3bb 100644 --- a/index.html +++ b/index.html @@ -3,9 +3,9 @@ - + - Vite + React + Rubix diff --git a/package-lock.json b/package-lock.json index 32dfcc0..88edb49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "rubix", "version": "0.0.0", "dependencies": { + "@chakra-ui/icons": "^2.1.1", "@chakra-ui/react": "^2.8.2", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.0", @@ -468,6 +469,18 @@ "react": ">=18" } }, + "node_modules/@chakra-ui/icons": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.1.1.tgz", + "integrity": "sha512-3p30hdo4LlRZTT5CwoAJq3G9fHI0wDc0pBaMHj4SUn0yomO+RcDRlzhdXqdr5cVnzax44sqXJVnf3oQG0eI+4g==", + "dependencies": { + "@chakra-ui/icon": "3.2.0" + }, + "peerDependencies": { + "@chakra-ui/system": ">=2.0.0", + "react": ">=18" + } + }, "node_modules/@chakra-ui/image": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.1.0.tgz", diff --git a/package.json b/package.json index f518c23..394e1ae 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@chakra-ui/icons": "^2.1.1", "@chakra-ui/react": "^2.8.2", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.0", diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/images/LearnCard1.png b/src/assets/images/LearnCard1.png new file mode 100644 index 0000000..1363f35 Binary files /dev/null and b/src/assets/images/LearnCard1.png differ diff --git a/src/assets/images/LearnCard2.png b/src/assets/images/LearnCard2.png new file mode 100644 index 0000000..5e609b9 Binary files /dev/null and b/src/assets/images/LearnCard2.png differ diff --git a/src/assets/images/LearnCard3.png b/src/assets/images/LearnCard3.png new file mode 100644 index 0000000..6aa07cc Binary files /dev/null and b/src/assets/images/LearnCard3.png differ diff --git a/src/assets/images/LearnCard4.png b/src/assets/images/LearnCard4.png new file mode 100644 index 0000000..c88207c Binary files /dev/null and b/src/assets/images/LearnCard4.png differ diff --git a/src/assets/images/LearnCard5.png b/src/assets/images/LearnCard5.png new file mode 100644 index 0000000..de2587e Binary files /dev/null and b/src/assets/images/LearnCard5.png differ diff --git a/src/assets/images/discord.png b/src/assets/images/discord.png new file mode 100644 index 0000000..1e59e69 Binary files /dev/null and b/src/assets/images/discord.png differ diff --git a/src/assets/images/fb.png b/src/assets/images/fb.png new file mode 100644 index 0000000..5238855 Binary files /dev/null and b/src/assets/images/fb.png differ diff --git a/src/assets/images/github.png b/src/assets/images/github.png new file mode 100644 index 0000000..4bbb2c2 Binary files /dev/null and b/src/assets/images/github.png differ diff --git a/src/assets/images/learnBanner.png b/src/assets/images/learnBanner.png new file mode 100644 index 0000000..7158be0 Binary files /dev/null and b/src/assets/images/learnBanner.png differ diff --git a/src/assets/images/linked.png b/src/assets/images/linked.png new file mode 100644 index 0000000..66b9afd Binary files /dev/null and b/src/assets/images/linked.png differ diff --git a/src/assets/images/reddit.png b/src/assets/images/reddit.png new file mode 100644 index 0000000..a5e0d8a Binary files /dev/null and b/src/assets/images/reddit.png differ diff --git a/src/assets/images/stacksmall.png b/src/assets/images/stacksmall.png new file mode 100644 index 0000000..c35c5ce Binary files /dev/null and b/src/assets/images/stacksmall.png differ diff --git a/src/assets/images/tele.png b/src/assets/images/tele.png new file mode 100644 index 0000000..b701dc5 Binary files /dev/null and b/src/assets/images/tele.png differ diff --git a/src/assets/images/whyRubix.png b/src/assets/images/whyRubix.png new file mode 100644 index 0000000..2585ce7 Binary files /dev/null and b/src/assets/images/whyRubix.png differ diff --git a/src/assets/images/x.png b/src/assets/images/x.png new file mode 100644 index 0000000..6ef4119 Binary files /dev/null and b/src/assets/images/x.png differ diff --git a/src/components/Card/LearnCard.jsx b/src/components/Card/LearnCard.jsx new file mode 100644 index 0000000..571d415 --- /dev/null +++ b/src/components/Card/LearnCard.jsx @@ -0,0 +1,80 @@ +/* eslint-disable react/prop-types */ +/* eslint-disable no-unused-vars */ +import { Box, Container, Text, Image, Button } from "@chakra-ui/react"; + +const LearnCard = ({ id, src, alt, text }) => { + return ( + + {/* {images.map((img) => ( + <> + ))} */} + + + + {alt} + + + + + {text} + + + + + + + + + ); +}; + +export default LearnCard; diff --git a/src/components/Footer/Footer.jsx b/src/components/Footer/Footer.jsx index 3063657..5a83c56 100644 --- a/src/components/Footer/Footer.jsx +++ b/src/components/Footer/Footer.jsx @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ /* eslint-disable react/no-unescaped-entities */ import { Box, @@ -6,8 +7,12 @@ import { Flex, Image, Input, + List, + ListItem, Text, + UnorderedList, } from "@chakra-ui/react"; +import { useMediaQuery } from "@chakra-ui/react"; import { FormControl, FormLabel, @@ -15,60 +20,281 @@ import { FormHelperText, } from "@chakra-ui/react"; import logo from "../../assets/images/rubix.png"; +import x from "../../assets/images/x.png"; +import linked from "../../assets/images/linked.png"; +import github from "../../assets/images/github.png"; +import tele from "../../assets/images/tele.png"; +import reddit from "../../assets/images/reddit.png"; +import fb from "../../assets/images/fb.png"; +import discord from "../../assets/images/discord.png"; const Footer = () => { + const [isSmallScreen] = useMediaQuery("(max-width: 996px)"); return ( - - - - - - - - - Stay up to date with Rubix - + <> + + + + - - - Sign up for our newsletter and receive the
latest updates. -
- - setEmail(e.target.value)} - /> - - + Sign up for our newsletter and receive the{" "} + {isSmallScreen ? null :
} latest updates. + + + setEmail(e.target.value)} + /> + + +
+ + + + Explore + + + Learn + Community + Wallet + Careers + + + + + Social + + + + + telegram + + + + Twitter + + + + GitHub + + + + Discord + + + + + + + + Reddit + + + + Facebook + + + + LinkedIn + + + +
-
-
-
+ + + + + + + + All rights reserved. + + + Privacy Policy + + + Terms Conditions + + + + ); }; diff --git a/src/components/HomePage/Client.jsx b/src/components/HomePage/Client.jsx index a582c7d..0b5fe58 100644 --- a/src/components/HomePage/Client.jsx +++ b/src/components/HomePage/Client.jsx @@ -32,6 +32,14 @@ const Client = () => { background={"#101015"} backgroundSize={"cover"} backgroundRepeat={"no-repeat"} + sx={{ + "@media (max-width: 1024px)": { + height: "auto", + }, + "@media (max-width: 996px)": { + paddingBottom: "3rem", + }, + }} > { textAlign={"center"} textTransform={"capitalize"} color={"#fff"} + sx={{ + "@media (max-width: 435px)": { + fontSize: "35px", + }, + "@media (max-width: 412px)": { + fontSize: "29px", + }, + }} > {Content.heading} @@ -50,6 +66,14 @@ const Client = () => { display={"grid"} placeContent={"center"} height={"65vh"} + sx={{ + "@media (max-width: 1024px)": { + height: "40vh", + }, + "@media (max-width: 996px)": { + height: "auto", + }, + }} > { alignItems={"center"} // flexWrap={"wrap"} marginBottom={"8rem"} + sx={{ + "@media (max-width: 996px)": { + flexDirection: "column", + rowGap: "3rem", + marginBottom: "3rem", + }, + }} > @@ -69,6 +100,12 @@ const Client = () => { // justifyContent={"space-between"} alignItems={"center"} // flexWrap={"wrap"} + sx={{ + "@media (max-width: 996px)": { + flexDirection: "column", + rowGap: "3rem", + }, + }} > diff --git a/src/components/HomePage/HomeBanner.jsx b/src/components/HomePage/HomeBanner.jsx index 20e2234..80160f5 100644 --- a/src/components/HomePage/HomeBanner.jsx +++ b/src/components/HomePage/HomeBanner.jsx @@ -25,6 +25,14 @@ const HomeBanner = () => { backgroundSize={"cover"} display={"grid"} placeContent={"center"} + sx={{ + "@media (max-width: 1024px)": { + height: "70vh", + }, + "@media (max-width: 600px)": { + height: "85vh", + }, + }} > {BannerContent.map((item, index) => { @@ -37,11 +45,17 @@ const HomeBanner = () => { textTransform={"upperCase"} color={"#DE858E"} sx={{ - "@media (max-width: 1024px)": {}, + "@media (max-width: 996px)": { + fontSize: "45px", + }, "@media (max-width: 600px)": { fontSize: "28px", marginBottom: "2rem", }, + "@media (max-width: 412px)": { + fontSize: "24px", + marginTop: "2rem", + }, }} > {item.heading1} @@ -62,7 +76,9 @@ const HomeBanner = () => { lineHeight={"37.5px"} fontFamily={"Poppins"} sx={{ - "@media (max-width: 1024px)": {}, + "@media (max-width: 1024px)": { + fontSize: "22px", + }, "@media (max-width: 600px)": { fontSize: "17px", }, @@ -75,13 +91,22 @@ const HomeBanner = () => { ); })} - + {BannerContent[2] && ( + + + ); }; export default LearnBanner; diff --git a/src/components/LearnPage/LearnDev.jsx b/src/components/LearnPage/LearnDev.jsx new file mode 100644 index 0000000..a4ae335 --- /dev/null +++ b/src/components/LearnPage/LearnDev.jsx @@ -0,0 +1,117 @@ +import { Box, Container, Text, Image, Button } from "@chakra-ui/react"; +import LearnCard from "../Card/LearnCard"; +import chainx from "../../assets/images/LearnCard2.png"; +import ensurity from "../../assets/images/LearnCard4.png"; +import exr from "../../assets/images/LearnCard5.png"; +import finalo from "../../assets/images/LearnCard1.png"; +import jupiter from "../../assets/images/LearnCard3.png"; + +// import { Badge } from "@chakra-ui/react"; + +const content = [ + { + id: 1, + src: `${chainx}`, + alt: "ChainX", + text: `Building a Web3 infrastructure to support nonprofit communities, starting with YMCA`, + }, + { + id: 2, + src: ensurity, + alt: "Ensurity", + text: `Building solutions for an easier transition from Web2 to Web3 for global enterprises with a focus on public sector companies.`, + }, + { + id: 3, + src: exr, + alt: "EXR", + text: `A metaverse, XR, and Web3 entity offering solutions that infuse gamification and tokenomics.`, + }, + { + id: 4, + src: finalo, + alt: "Finalo Education", + text: `Delivers KYC/DID solutions for banks, and financial institutions, a highly secure algorithm for quantum security and a password-less authentication process for secure scaling`, + }, + { + id: 5, + src: jupiter, + alt: "Jupiter", + text: `Mobile-based wallet that generates and stores private keys on a mobile device`, + }, +]; + +const Content = { + heading: `Enabling developers across a variety`, + span: `of applications`, +}; + +const LearnDev = () => { + return ( + + + + {Content.heading}
+ {Content.span} +
+
+ + + {content.map((item) => ( + + ))} + + +
+ ); +}; + +export default LearnDev; diff --git a/src/components/LearnPage/WhyRubix.jsx b/src/components/LearnPage/WhyRubix.jsx new file mode 100644 index 0000000..5499bef --- /dev/null +++ b/src/components/LearnPage/WhyRubix.jsx @@ -0,0 +1,82 @@ +import { Box, Container, Text } from "@chakra-ui/react"; +import { + Accordion, + AccordionItem, + AccordionButton, + AccordionPanel, + AccordionIcon, +} from "@chakra-ui/react"; +import bg from "../../assets/images/whyRubix.png"; + +const WhyRubix = () => { + return ( + + + + Why developers choose Rubix + + + + +

+ + + Section 1 title + + + +

+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + +
+ + +

+ + + Section 2 title + + + +

+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + +
+
+
+
+
+ ); +}; + +export default WhyRubix; diff --git a/src/components/MobileComponent/MobileSubnet.jsx b/src/components/MobileComponent/MobileSubnet.jsx new file mode 100644 index 0000000..26c6ea6 --- /dev/null +++ b/src/components/MobileComponent/MobileSubnet.jsx @@ -0,0 +1,138 @@ +import { Box, Image, ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import cube from "../../assets/images/cube.png"; +import MobileSubnet2 from "./MobileSubnet2"; +import MobileSubnet3 from "./MobileSubnet3"; + +const MobileSubnet = () => { + return ( + <> + + {/* Subnet1 */} + + + + decentralised Auto Syncing subnets + + + + + + + P2P + + + Only L1 powering full mobile nodes + + Mobile nodes with full state data will settle P2P . Consensus + provided by nearby node validators. + + + High scalability, Partition tolerance and portability + + + + + + + Self Sovereign + + + + Permissioned subnets with no oracles and
intermediaries +
+ INo block space ransom + + Zero risk of transactions being blocked out of
+ chain. +
+
+
+ + + + Easier + + + Leverage own infrastructure for block space + Smart contracts in Rust , GoLang and C/C++ + WASM compiler for smooth code migration + + + + + + cheaper + + + No GAS fees + Incremental and modular infrastructure ask + + No expensive re training of development
+ resources +
+
+
+
+
+
+ + + + ); +}; + +export default MobileSubnet; diff --git a/src/components/MobileComponent/MobileSubnet2.jsx b/src/components/MobileComponent/MobileSubnet2.jsx new file mode 100644 index 0000000..3a658a2 --- /dev/null +++ b/src/components/MobileComponent/MobileSubnet2.jsx @@ -0,0 +1,132 @@ +import { Box, Image, ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import cube from "../../assets/images/cube.png"; + +const MobileSubnet2 = () => { + return ( + + {/* Subnet1 */} + + + + With unmatched privacy and scalability + + + + + + + P2P + + + Only L1 powering full mobile nodes + + Mobile nodes with full state data will settle P2P . Consensus + provided by nearby node validators. + + + High scalability, Partition tolerance and portability + + + + + + + Self Sovereign + + + + Permissioned subnets with no oracles and
intermediaries +
+ INo block space ransom + + Zero risk of transactions being blocked out of
+ chain. +
+
+
+ + + + Easier + + + Leverage own infrastructure for block space + Smart contracts in Rust , GoLang and C/C++ + WASM compiler for smooth code migration + + + + + + cheaper + + + No GAS fees + Incremental and modular infrastructure ask + + No expensive re training of development
+ resources +
+
+
+
+
+
+ ); +}; + +export default MobileSubnet2; diff --git a/src/components/MobileComponent/MobileSubnet3.jsx b/src/components/MobileComponent/MobileSubnet3.jsx new file mode 100644 index 0000000..0b5cd4a --- /dev/null +++ b/src/components/MobileComponent/MobileSubnet3.jsx @@ -0,0 +1,151 @@ +import { Box, Image, ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import stack from "../../assets/images/stacksmall.png"; + +const MobileSubnet3 = () => { + return ( + + {/* Subnet1 */} + + + + All In One Composable Stack + + + + + + + Single Comprehensive Stack : + + + + Full Mobile node SDK, Smart Contracts, DIDs, Secondary tokens ( + FTs and NFTs) all in one place. + + + + + + High Partition Tolerance : + + + + Issues in one shard wont affect other shards performance + + + + + + Fully Deterministic : + + + Apps can bring Own Block space( BYOB) + + + + + Unique token/object based architecture : + + + Build unlimited FTs and NFTs all at L1!! + + + + + Green by the design : + + + + 100,000 Rubix transactions consume < 10 kWh < 100000 Visa + transactions + + + + + + + Fixed, hard capped supply of RBT at 51.4 Million + + + + + + ); +}; + +export default MobileSubnet3; diff --git a/src/components/MobileMenu/MobileMenu.jsx b/src/components/MobileMenu/MobileMenu.jsx new file mode 100644 index 0000000..35ddb3d --- /dev/null +++ b/src/components/MobileMenu/MobileMenu.jsx @@ -0,0 +1,149 @@ +import { HamburgerIcon } from "@chakra-ui/icons"; +import { + Menu, + MenuButton, + MenuList, + MenuItem, + // MenuItemOption, + // MenuGroup, + // MenuOptionGroup, + // MenuDivider, + IconButton, +} from "@chakra-ui/react"; +import { Box, Image } from "@chakra-ui/react"; +import { Link, useLocation } from "react-router-dom"; +// import { Button } from "@chakra-ui/react"; +// import { HashLink } from "react-router-hash-link"; +import logo from "../../assets/images/rubix.png"; +import { useEffect, useState } from "react"; + +export const MobileMenu = () => { + const [isScrolled, setIsScrolled] = useState(false); + const location = useLocation(); + + useEffect(() => { + const handleScroll = () => { + const scrollPosition = window.scrollY; + setIsScrolled(scrollPosition > 0); + }; + + window.addEventListener("scroll", handleScroll); + + return () => { + window.removeEventListener("scroll", handleScroll); + }; + }, []); + + const active = { + color: "#F46E15", + fontFamily: "Poppins", + fontSize: "14px", + fontStyle: "normal", + fontWeight: "500", + lineHeight: "normal", + marginBottom: "1rem", + }; + + const linkStyle = { + color: "#070707", + fontFamily: "Poppins", + fontSize: "14px", + fontStyle: "normal", + fontWeight: "500", + lineHeight: "normal", + marginBottom: "1rem", + }; + + return ( + + + + + + + + + + } + variant="outline" + backgroundColor={"#fff"} + /> + + {/* */} + + scrollToSection("about")} + style={location.pathname === "/About" ? active : linkStyle} + > + About us + + + + scrollToSection("offer")} + style={location.pathname === "/Services" ? active : linkStyle} + > + What we offer + + + + {" "} + scrollToSection("whyUs")} + style={location.pathname === "/Whyus" ? active : linkStyle} + > + Why Us + + + + {" "} + scrollToSection("weDo")} + style={location.pathname === "/whatWeDo" ? active : linkStyle} + > + What we do + + + + + + ); +}; diff --git a/src/components/NavBar/NavBar.jsx b/src/components/NavBar/NavBar.jsx index e9d2057..f0622f1 100644 --- a/src/components/NavBar/NavBar.jsx +++ b/src/components/NavBar/NavBar.jsx @@ -1,48 +1,104 @@ /* eslint-disable no-unused-vars */ -import { Box } from "@chakra-ui/react"; +import { Box, Image } from "@chakra-ui/react"; import { Outlet, Link, useLocation } from "react-router-dom"; +import { useEffect, useState } from "react"; +import logo from "../../assets/images/rubix.png"; +import { MobileMenu } from "../MobileMenu/MobileMenu"; const NavBar = () => { + const [isScrolled, setIsScrolled] = useState(false); + const [windowWidth, setWindowWidth] = useState(window.innerWidth); const location = useLocation(); + + useEffect(() => { + const handleScroll = () => { + const scrollPosition = window.scrollY; + setIsScrolled(scrollPosition > 0); + }; + const handleResize = () => { + setWindowWidth(window.innerWidth); + }; + + window.addEventListener("scroll", handleScroll); + window.addEventListener("resize", handleResize); + + return () => { + window.removeEventListener("scroll", handleScroll); + window.removeEventListener("resize", handleResize); + }; + }, []); + + const isMobile = windowWidth <= 996; + return ( <> - - - -

Rubix

-
- - + {!isMobile ? ( - Homepage - Learn + + + + + + + + LEARN + BUILD + USE CASES + COMMUNITY + FOUNDATION + CONTACT US + -
+ ) : ( + + )} ); diff --git a/src/components/SubnetsComponent/Component1.jsx b/src/components/SubnetsComponent/Component1.jsx index ccc211f..affaa64 100644 --- a/src/components/SubnetsComponent/Component1.jsx +++ b/src/components/SubnetsComponent/Component1.jsx @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ import { Box, Button, Image, Text, Grid, GridItem } from "@chakra-ui/react"; import { Container } from "@chakra-ui/react"; import { diff --git a/src/components/SubnetsComponent/SubnetPage2.jsx b/src/components/SubnetsComponent/SubnetPage2.jsx new file mode 100644 index 0000000..051c5af --- /dev/null +++ b/src/components/SubnetsComponent/SubnetPage2.jsx @@ -0,0 +1,103 @@ +/* eslint-disable react/prop-types */ +import { Box, Container, Image, Text } from "@chakra-ui/react"; +import cube from "../../assets/images/cube.png"; + +const SubnetPage2 = ({ click }) => { + return ( + + + With Unmatched Privacy and Scalability + + + + + + + + + + 01. Decentralisation + + + Rubix Decentralised Identity(DID) issued at L1 is the foundation + for building digital ownership enhancing applications + + + + + 01. Decentralisation + + + Rubix Decentralised Identity(DID) issued at L1 is the foundation + for building digital ownership enhancing applications + + + + + 01. Decentralisation + + + Rubix Decentralised Identity(DID) issued at L1 is the foundation + for building digital ownership enhancing applications + + + + + + + ); +}; + +export default SubnetPage2; diff --git a/src/pages/HomePage.jsx b/src/pages/HomePage.jsx index b203d28..fecbf3f 100644 --- a/src/pages/HomePage.jsx +++ b/src/pages/HomePage.jsx @@ -1,3 +1,4 @@ +import { useEffect, useState } from "react"; import Footer from "../components/Footer/Footer"; import Client from "../components/HomePage/Client"; import HomeBanner from "../components/HomePage/HomeBanner"; @@ -5,12 +6,29 @@ import Resources from "../components/HomePage/Resources"; import Stats from "../components/HomePage/Stats"; import Subnets from "../components/HomePage/Subnets"; import WhitePaper from "../components/HomePage/WhitePaper"; +import MobileSubnet from "../components/MobileComponent/MobileSubnet"; const HomePage = () => { + const [windowWidth, setWindowWidth] = useState(window.innerWidth); + + useEffect(() => { + const handleResize = () => { + setWindowWidth(window.innerWidth); + }; + + window.addEventListener("resize", handleResize); + + return () => { + window.removeEventListener("resize", handleResize); + }; + }, []); + + const isMobile = windowWidth <= 996; + return ( <> - + {!isMobile ? : } diff --git a/src/pages/LearnPage.jsx b/src/pages/LearnPage.jsx index d431725..b888af5 100644 --- a/src/pages/LearnPage.jsx +++ b/src/pages/LearnPage.jsx @@ -1,7 +1,15 @@ import LearnBanner from "../components/LearnPage/LearnBanner"; +import LearnDev from "../components/LearnPage/LearnDev"; +import WhyRubix from "../components/LearnPage/WhyRubix"; const LearnPage = () => { - return ; + return ( + <> + + + + + ); }; export default LearnPage;