feat: Apple-style scroll-driven landing page

- Add ScrollAnimations component (ScrollReveal, ParallaxLayer, FadeOnScroll)
- Add CinematicShowcase for scroll-driven product reveals
- Update Tuxedo page with cinematic product showcase and parallax layers
- Update main HeroSection with same premium scroll animations
- Add scroll progress bar, staggered reveals, counter animations
- Apply consistent Apple-style UX across landing and Tuxedo pages

Features:
- Sections pin and reveal content progressively on scroll
- Parallax depth effects on decorative elements
- Counter animations triggered by scroll
- Smooth hover states and transitions
- GSAP + Framer Motion for smooth animations
This commit is contained in:
2026-06-02 15:41:48 +00:00
parent bf4dc09e65
commit 2db3375f87
4 changed files with 526 additions and 714 deletions
-19
View File
@@ -2,8 +2,6 @@
import { useEffect, useRef } from "react";
import HeroSection from "@/components/landing/HeroSection";
import FeaturesAndStats from "@/components/landing/FeaturesAndStats";
import TestimonialsAndCTA from "@/components/landing/TestimonialsAndCTA";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
@@ -20,21 +18,6 @@ export default function LandingPageClient() {
if (typeof window === "undefined" || !mainRef.current) return;
const ctx = gsap.context(() => {
// Parallax sections
const parallaxElements = gsap.utils.toArray<Element>(".parallax-section");
parallaxElements.forEach((el) => {
gsap.to(el, {
y: -50,
ease: "none",
scrollTrigger: {
trigger: el,
start: "top bottom",
end: "bottom top",
scrub: 1,
},
});
});
// Reveal animations for sections
const revealElements = gsap.utils.toArray<Element>(".scroll-reveal");
revealElements.forEach((el) => {
@@ -62,8 +45,6 @@ export default function LandingPageClient() {
return (
<div ref={mainRef}>
<HeroSection />
<FeaturesAndStats />
<TestimonialsAndCTA />
</div>
);
}