"use client"; import React, { memo, useRef } from "react"; import { useScroll, useTransform, motion } from "motion/react"; import TextBox from "@/components/Textbox"; import MediaContent from "@/components/shared/MediaContent"; import { cls } from "@/lib/utils"; import type { LucideIcon } from "lucide-react"; import type { ButtonConfig } from "@/types/button"; interface HeroBillboardScrollProps { title: string; description: string; tag?: string; tagIcon?: LucideIcon; buttons?: ButtonConfig[]; imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string; ariaLabel?: string; className?: string; containerClassName?: string; textBoxClassName?: string; titleClassName?: string; descriptionClassName?: string; tagClassName?: string; buttonContainerClassName?: string; buttonClassName?: string; buttonTextClassName?: string; cardWrapperClassName?: string; cardInnerClassName?: string; imageClassName?: string; } const HeroBillboardScroll = ({ title, description, tag, tagIcon, buttons, imageSrc, videoSrc, imageAlt = "", videoAriaLabel = "Hero video", ariaLabel = "Hero section", className = "", containerClassName = "", textBoxClassName = "", titleClassName = "", descriptionClassName = "", tagClassName = "", buttonContainerClassName = "", buttonClassName = "", buttonTextClassName = "", cardWrapperClassName = "", cardInnerClassName = "", imageClassName = "", }: HeroBillboardScrollProps) => { const containerRef = useRef(null); const { scrollYProgress } = useScroll({ target: containerRef, }); const rotate = useTransform(scrollYProgress, [0, 1], [20, 0]); const scale = useTransform(scrollYProgress, [0, 1], [1.05, 1]); return (
); }; HeroBillboardScroll.displayName = "HeroBillboardScroll"; export default memo(HeroBillboardScroll);