You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
6.1 KiB
228 lines
6.1 KiB
import {
|
|
IParallax,
|
|
IParallaxLayer,
|
|
Parallax,
|
|
ParallaxLayer,
|
|
} from "@react-spring/parallax";
|
|
import { useScroll } from "@react-spring/web";
|
|
import React, { useEffect } from "react";
|
|
import { useRef } from "react";
|
|
import Introduction from "../shared/components/animated/Introduction";
|
|
import Footer from "../shared/components/Footer";
|
|
import Header from "../shared/components/Header";
|
|
import AboutSection from "../shared/components/home/AboutSection";
|
|
import RoadMap from "../shared/components/home/RoadMap";
|
|
import TokenomicsSection from "../shared/components/home/TokenomicsSection";
|
|
|
|
// Little helpers ...
|
|
const url = (name: string, wrap = false) =>
|
|
`${
|
|
wrap ? "url(" : ""
|
|
}https://awv3node-homepage.surge.sh/build/assets/${name}.svg${
|
|
wrap ? ")" : ""
|
|
}`;
|
|
|
|
function Animated() {
|
|
const parallax = useRef<IParallax>(null!);
|
|
const [isScrolled, setIsScrolled] = React.useState(false);
|
|
|
|
const onScroll = () => {
|
|
if (parallax.current.container.current.scrollTop > 0) {
|
|
setIsScrolled(true);
|
|
} else {
|
|
setIsScrolled(false);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
if (!parallax.current || !parallax.current.container) return;
|
|
parallax.current.container.current.onscroll = onScroll;
|
|
});
|
|
|
|
return (
|
|
<div className="w-full min-h-screen bg-[#253237]">
|
|
<Parallax ref={parallax} pages={4.2}>
|
|
<ParallaxLayer
|
|
sticky={{ start: 0, end: 4 }}
|
|
style={{ height: "fit-content" }}
|
|
>
|
|
<Header />
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer
|
|
offset={1}
|
|
speed={1}
|
|
style={{ backgroundColor: "#133955" }}
|
|
/>
|
|
<ParallaxLayer
|
|
offset={2}
|
|
speed={1}
|
|
style={{ backgroundColor: "#3A7575" }}
|
|
/>
|
|
|
|
<ParallaxLayer
|
|
offset={0}
|
|
speed={0}
|
|
factor={4}
|
|
style={{
|
|
backgroundImage: url("stars", true),
|
|
backgroundSize: "cover",
|
|
}}
|
|
/>
|
|
|
|
<ParallaxLayer offset={1} speed={0.8} style={{ opacity: 0.1 }}>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "20%", marginLeft: "55%" }}
|
|
/>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "10%", marginLeft: "15%" }}
|
|
/>
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer offset={1.75} speed={0.5} style={{ opacity: 0.1 }}>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "20%", marginLeft: "70%" }}
|
|
/>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "20%", marginLeft: "40%" }}
|
|
/>
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer offset={1} speed={0.2} style={{ opacity: 0.2 }}>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "10%", marginLeft: "10%" }}
|
|
/>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "20%", marginLeft: "75%" }}
|
|
/>
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer offset={1.6} speed={-0.1} style={{ opacity: 0.4 }}>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "20%", marginLeft: "60%" }}
|
|
/>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "25%", marginLeft: "30%" }}
|
|
/>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "10%", marginLeft: "80%" }}
|
|
/>
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer offset={2.6} speed={0.4} style={{ opacity: 0.6 }}>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "20%", marginLeft: "5%" }}
|
|
/>
|
|
<img
|
|
src={url("cloud")}
|
|
style={{ display: "block", width: "15%", marginLeft: "75%" }}
|
|
/>
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer
|
|
offset={2.5}
|
|
speed={-0.4}
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "center",
|
|
pointerEvents: "none",
|
|
}}
|
|
></ParallaxLayer>
|
|
|
|
{/* <ParallaxLayer
|
|
offset={2}
|
|
speed={-0.3}
|
|
style={{
|
|
backgroundSize: "80%",
|
|
backgroundPosition: "center",
|
|
backgroundImage: url("clients", true),
|
|
}}
|
|
/> */}
|
|
|
|
{/* section 1 */}
|
|
<ParallaxLayer
|
|
offset={0}
|
|
speed={0.1}
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "center",
|
|
}}
|
|
id="section1"
|
|
onClick={() => parallax.current.scrollTo(1)}
|
|
onScroll={(e) => {
|
|
console.log("e", e);
|
|
}}
|
|
>
|
|
<Introduction />
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer
|
|
offset={1}
|
|
speed={0.1}
|
|
onClick={() => parallax.current.scrollTo(2)}
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "center",
|
|
}}
|
|
>
|
|
<AboutSection />
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer
|
|
offset={2}
|
|
speed={-0}
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "center",
|
|
}}
|
|
onClick={() => parallax.current.scrollTo(3)}
|
|
>
|
|
<RoadMap />
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer
|
|
offset={3}
|
|
speed={-0}
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "center",
|
|
}}
|
|
onClick={() => parallax.current.scrollTo(0)}
|
|
>
|
|
<TokenomicsSection />
|
|
</ParallaxLayer>
|
|
|
|
<ParallaxLayer
|
|
offset={4}
|
|
speed={-0}
|
|
style={{
|
|
display: "flex",
|
|
alignItems: "start",
|
|
justifyContent: "center",
|
|
backgroundColor: "#000000",
|
|
}}
|
|
onClick={() => parallax.current.scrollTo(0)}
|
|
>
|
|
<Footer />
|
|
</ParallaxLayer>
|
|
</Parallax>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default Animated;
|
|
|