diff --git a/src/App.js b/src/App.js index 44a5f9c..cdd1469 100644 --- a/src/App.js +++ b/src/App.js @@ -1,4 +1,3 @@ -import Appbar from "./components/Appbar"; import { Box, useMediaQuery, useTheme } from "@mui/material"; import Home from "./pages/Home/Home"; import About from "./pages/About/About"; @@ -13,18 +12,16 @@ import retro from "./themes/retro"; import React, { useEffect, useRef } from 'react'; import useGsap, { appear } from "./hooks/useGsap"; import gsap from "gsap"; -import { ScrollTrigger } from "gsap/ScrollTrigger"; -import LogoText from "./assets/svg/logo_text.svg"; -import LogoMascot from "./assets/svg/logo_mascot.svg"; import Gallery from "./pages/Gallery/Gallery"; import Lenis from "@studio-freight/lenis"; import Contact from "./pages/Contact/Contact"; import Events from "./pages/Events/Events"; import Countdown from "./components/page/beforerelease"; import Ambassador from "./pages/Ambassadors"; -import BeforeReleaseLayout from "./components/page/layout"; import Team from './pages/Team/Team'; import Game from './pages/Game/Game'; +import ScrollTrigger from 'gsap/ScrollTrigger' + function App() { const root = useRef(); const theme = useTheme(); @@ -46,6 +43,7 @@ function App() { ease: "expo.out", }); + if (!mobile) timeline.fromTo( ".appbar .menu", @@ -75,13 +73,76 @@ function App() { requestAnimationFrame(raf); }); + + useEffect(() => { + + const sections = gsap.utils.toArray('section.section') + + gsap.to('.animateImage', { + scrollTrigger: { + scrub: true + }, + y: (i, target) => -ScrollTrigger.maxScroll(window) * target.dataset.speed, + ease: "none", + }); + + + + sections.forEach((section, index) => { + const box = section.querySelectorAll('.gradient-box') + const title = section.querySelector('.gradient-text') + const images = section.querySelectorAll('.animateImage') + + const timeline = gsap.timeline({ + ease: 'power4.out', + scrollTrigger: { + trigger: box, + start: 'top center', + end: 'bottom center', + toggleActions: 'play none none reverse', + } + }) + + + + + + + + + timeline.from(title,{ + opacity: 0 + }) + + + + + + timeline.fromTo( + box, + { + x: -100 + }, + { + x: 0, + stagger: 0.1, + duration: 0.5, + ease: 'power4.in', + }, '<' + ); + + + + + + + }) + }, []); return ( @@ -116,4 +177,10 @@ function App() { ); } +export const animateOnScroll = (trigger, target) => { + + +}; + + export default App; diff --git a/src/assets/gif/background.gif b/src/assets/gif/background.gif index 7f5bce8..17dd259 100644 Binary files a/src/assets/gif/background.gif and b/src/assets/gif/background.gif differ diff --git a/src/assets/jpg/bg-new.png b/src/assets/jpg/bg-new.png new file mode 100644 index 0000000..3105fee Binary files /dev/null and b/src/assets/jpg/bg-new.png differ diff --git a/src/assets/jpg/pattern.png b/src/assets/jpg/pattern.png new file mode 100644 index 0000000..e580285 Binary files /dev/null and b/src/assets/jpg/pattern.png differ diff --git a/src/assets/png/planet-2.png b/src/assets/png/planet-2.png new file mode 100644 index 0000000..b25bb00 Binary files /dev/null and b/src/assets/png/planet-2.png differ diff --git a/src/assets/png/planet.png b/src/assets/png/planet.png new file mode 100644 index 0000000..31d78b9 Binary files /dev/null and b/src/assets/png/planet.png differ diff --git a/src/assets/png/robot.png b/src/assets/png/robot.png new file mode 100644 index 0000000..106a7fb Binary files /dev/null and b/src/assets/png/robot.png differ diff --git a/src/assets/png/satelite.png b/src/assets/png/satelite.png new file mode 100644 index 0000000..9493326 Binary files /dev/null and b/src/assets/png/satelite.png differ diff --git a/src/assets/png/ship.png b/src/assets/png/ship.png new file mode 100644 index 0000000..9488ce6 Binary files /dev/null and b/src/assets/png/ship.png differ diff --git a/src/components/Appbar.js b/src/components/Appbar.js index d051e28..d06d0d9 100644 --- a/src/components/Appbar.js +++ b/src/components/Appbar.js @@ -58,26 +58,6 @@ const Appbar = ({ isGuest = false }) => { const color = theme.palette.text.primary; const ref = useRef(); - // useLayoutEffect(() => { - // const timeline = gsap.timeline({ - // scrollTrigger: { - // trigger: '.appbar-trigger', - // markers: true, - // start: 'top top', - // end: '+=1000', - // scrub: true, - // } - // }) - // - // timeline.from('.content', { - // scale: 1, - // left: 50, - // top: 0, - // duration: 2 - // }) - // - // }, []); - if (isGuest) navLinks = navLinks.filter( @@ -144,7 +124,6 @@ const FullscreenNav = () => { - @@ -194,7 +173,6 @@ const FullscreenNav = () => { - diff --git a/src/components/Spacer.js b/src/components/Spacer.js index 2046a0b..8baf950 100644 --- a/src/components/Spacer.js +++ b/src/components/Spacer.js @@ -21,7 +21,7 @@ const Spacer = ({ size }) => { const spacerSize = getSize(size); - return ; + return ; }; export default Spacer; diff --git a/src/components/common/footer.js b/src/components/common/footer.js index bb5db54..c55c04e 100644 --- a/src/components/common/footer.js +++ b/src/components/common/footer.js @@ -48,41 +48,6 @@ const Footer = () => { - useGsap('.footer', ()=> { - const timeline = gsap.timeline({ - scrollTrigger: { - trigger: '.footer', - // markers: true, - scrub: true, - } - }) - - timeline.from('.content', { - scale: 3, - left: 0, - top: 0, - rotateZ: 360, - duration: 2, - ease: 'expo.inOut' - }) - - }) - - useLayoutEffect(() => { - if (!layoutState || !q) return; - - const flip = Flip.from(layoutState, { - duration: 0.6, - // fade: true,/ - absolute: true, - targets: q(".content"), - }); - - return () => { - flip.kill(); - }; - }, [layoutState]); - const handleClick = () => { setToggle(prev => !prev) const containers = q(".content") @@ -101,7 +66,7 @@ const Footer = () => { className='footer' ref={ref} > - + Contact Us @@ -139,7 +104,6 @@ const Footer = () => { - Quick Links {linksData.map((link, index) => ( diff --git a/src/components/common/gradientbox.js b/src/components/common/gradientbox.js index 770094a..123e9cb 100644 --- a/src/components/common/gradientbox.js +++ b/src/components/common/gradientbox.js @@ -5,7 +5,7 @@ import barcode from '../../assets/png/barcode.webp' const GradientBox = ({ children, height = "auto", - background = "linear-gradient(to top left, #00b8ff, transparent 75%)", + background = "black linear-gradient(to top left, #00b8ff, transparent 75%)", img = null, rotate = "-20deg", size = "medium", @@ -15,6 +15,9 @@ const GradientBox = ({ }) => { return ( + + ); }; diff --git a/src/components/common/gradienttext.js b/src/components/common/gradienttext.js index 5103d03..c8087a8 100644 --- a/src/components/common/gradienttext.js +++ b/src/components/common/gradienttext.js @@ -22,6 +22,7 @@ const GradientText = ({ primary, secondary, ...props }) => { fontFamily="typography.fontFamily" letterSpacing="-1px" fontSize="48px" + className='gradient-text' lineHeight="1.2" // Adjust the line height as needed for better appearance sx={{ background: boxBackground, // Gradient colors from top left to bottom right diff --git a/src/components/common/patternbg.js b/src/components/common/patternbg.js index a53641d..7188989 100644 --- a/src/components/common/patternbg.js +++ b/src/components/common/patternbg.js @@ -1,13 +1,45 @@ import React from 'react'; import dots from '../../assets/png/dots-2.png'; -import { Box } from '@mui/material'; +import { Box, Container, Typography } from '@mui/material'; +import satelite from '../../assets/png/satelite.png' +import planet from '../../assets/png/planet.png' +import robot from '../../assets/png/ship.png' +import planet2 from '../../assets/png/planet-2.png' -const Patternbg = ({children}) => { +const Patternbg = ({ children }) => { return ( - - {children} + + + {/* Left-side divs */} + +
+ Random content 1 +
+
+ Random content 1 +
+
+ Random content 2 +
+ + {/* Right-side divs */} +
+ Random content 3 +
+
+ Random content 4 +
+ +
+ Random content 4 +
+ + {/* Main content */} + + {children} + +
+
); }; diff --git a/src/components/home/about.js b/src/components/home/about.js index 3fe357b..21615dd 100644 --- a/src/components/home/about.js +++ b/src/components/home/about.js @@ -1,11 +1,11 @@ -import { Container, Grid, Stack, Typography } from '@mui/material'; +import { Container, Grid, Skeleton, Stack, Typography } from '@mui/material'; import GradientText from '../common/gradienttext'; import Spacer from '../Spacer'; import GradientBox from '../common/gradientbox'; import Iphone12 from '../../assets/png/iPhone 12 _ 12 Pro.png'; import BoxContent from '../common/boxcontent'; import Samsung from '../../assets/png/Samsung Galaxy Note20 Ultra 5G.png'; -import React, { useRef } from 'react'; +import React, { useEffect, useRef } from 'react'; import styled from 'styled-components'; import Box from '@mui/material/Box'; import Home from '../../assets/svg/Dayflow Party Time.svg'; @@ -15,6 +15,7 @@ import gsap from 'gsap'; import EmblaCarousel from '../common/carousel'; import dots from '../../assets/png/dots-2.png' import Patternbg from '../common/patternbg'; +import { useTimeline } from '../../hooks/useTimeline'; const UserBoxContainer = styled(Box)` display: flex; @@ -59,50 +60,54 @@ const SocialMediaLink = styled(Typography)` const About = () => { const eventsRef = useRef(null); + const { data, isLoading, isError, isSuccess } = useTimeline() + + + useEffect(()=> { + if(isSuccess){ + const timeline = gsap.timeline({ + scrollTrigger: { + trigger: '.trigger', + start: 'top top', + end: '+=1000', //this was 2000 intially, changed to get it right for 1 card + pin: '.trigger', + pinSpacing: true, + scrub: 1, + immediateRender: false, + }, + }); + + // Calculate the height difference (scroll distance) for the left section + const scrollDistance = eventsRef.current.scrollWidth; + +// Create a new timeline to scroll the left section + timeline.to(eventsRef.current, { + x: -scrollDistance, // Use negative to scroll to the right + }); + } + }, [data]) - useGsap('#about-root', () => { - const timeline = gsap.timeline({ - scrollTrigger: { - trigger: '.trigger', - start: 'top top', - end: '+=500', //this was 2000 intially, changed to get it right for 1 card - pin: '.trigger', - pinSpacing: true, - scrub: 1, - immediateRender: false, - }, - }); - - // Calculate the height difference (scroll distance) for the left section - const scrollDistance = eventsRef.current.scrollHeight - window.innerHeight; - - // Create a new timeline to scroll the left section - timeline.to(eventsRef.current, { - y: -scrollDistance, - }); - animateOnScroll('.title', '.gradient-box'); - }); return ( + + - - - - - + + + + { + isSuccess && data.map((_) => ()) + + } + {' '} {' '} {' '} - +