"use client"; import { type MotionValue, motion, useScroll, useSpring, useTransform, } from "framer-motion"; import Image from "next/image"; import Link from "next/link"; import React from "react"; interface HeroParallaxProps { products: product[]; children?: React.ReactNode; } interface product { title: string; link: string; thumbnail: string; } export const HeroParallax = ({ products, children }: HeroParallaxProps) => { const firstRow = products.slice(0, 5); const secondRow = products.slice(5, 10); const thirdRow = products.slice(10, 15); const ref = React.useRef(null); const { scrollYProgress } = useScroll({ target: ref, offset: ["start start", "end start"], }); const springConfig = { stiffness: 300, damping: 30, bounce: 100 }; const translateX = useSpring( useTransform(scrollYProgress, [0, 1], [0, 1000]), springConfig, ); const translateXReverse = useSpring( useTransform(scrollYProgress, [0, 1], [0, -1000]), springConfig, ); const rotateX = useSpring( useTransform(scrollYProgress, [0, 0.2], [15, 0]), springConfig, ); const opacity = useSpring( useTransform(scrollYProgress, [0, 0.2], [0.2, 1]), springConfig, ); const rotateZ = useSpring( useTransform(scrollYProgress, [0, 0.2], [20, 0]), springConfig, ); const translateY = useSpring( useTransform(scrollYProgress, [0, 0.2], [-700, 500]), springConfig, ); return (
{children} {firstRow.map((product) => ( ))} {secondRow.map((product) => ( ))} {thirdRow.map((product) => ( ))}
); }; export const ProductCard = ({ product, translate, }: { product: { title: string; link: string; thumbnail: string; }; translate: MotionValue; }) => { return ( {product.title}

{product.title}

); };