"use client"; import useWindow from "@/app/(website)/hooks/useWindow"; import { HomeProject, Project } from "@payload-types"; import { RichText } from "@payloadcms/richtext-lexical/react"; import { motion, useScroll, useTransform } from "motion/react"; import Image from "next/image"; import Link from "next/link"; import { useRef, useState } from "react"; import PayloadImage from "../../PayloadImage"; export default function Projects({ text, projects, }: { text: HomeProject; projects: Project[]; }) { const containerRef = useRef(null); const { scrollYProgress } = useScroll({ target: containerRef, offset: ["start end", "start start"], }); const bannerHeight = useTransform(scrollYProgress, [0.6, 1], [0, 1]); const headerOpacity = useTransform(scrollYProgress, [0.8, 1], [0, 1]); const textOpacity = useTransform(scrollYProgress, [0.9, 1], [0, 1]); const [active, setActive] = useState(1); const { width } = useWindow(); const largeScreen = width >= 1024; return (
{text.projectsTitle} {text.projectsDescription && ( )}
{[...projects, ...projects].map((project, i) => ( setActive(i)} > {project.banner && typeof project.banner !== "number" && ( )} {(!largeScreen || active === i) && (

{project.title}

)}
))}

Have a project idea?

Get in touch >

); }