"use client"; import { useCallback } from "react"; import MediaContent from "@/components/shared/MediaContent"; import FillWidthText from "@/components/shared/FillWidthText/FillWidthText"; import TextAnimation from "@/components/text/TextAnimation"; import Button from "@/components/button/Button"; import { cls } from "@/lib/utils"; import { getButtonProps } from "@/lib/buttonUtils"; import { useTheme } from "@/providers/themeProvider/ThemeProvider"; import { useCarouselFullscreen } from "./useCarouselFullscreen"; import type { ButtonConfig } from "@/types/button"; const MASK_GRADIENT = "linear-gradient(to bottom, transparent, black 60%)"; interface CarouselSlide { imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string; } interface HeroCarouselLogoProps { logoText: string; description: string; buttons: ButtonConfig[]; slides: CarouselSlide[]; autoplayDelay?: number; showDimOverlay?: boolean; logoLineHeight?: number; ariaLabel?: string; className?: string; containerClassName?: string; contentContainerClassName?: string; descriptionClassName?: string; buttonContainerClassName?: string; buttonClassName?: string; buttonTextClassName?: string; logoContainerClassName?: string; logoClassName?: string; mediaWrapperClassName?: string; imageClassName?: string; blurClassName?: string; dimOverlayClassName?: string; progressBarClassName?: string; } const HeroCarouselLogo = ({ logoText, description, buttons, slides, autoplayDelay = 3000, showDimOverlay = false, logoLineHeight = 1.1, ariaLabel = "Hero section", className = "", containerClassName = "", contentContainerClassName = "", descriptionClassName = "", buttonContainerClassName = "", buttonClassName = "", buttonTextClassName = "", logoContainerClassName = "", logoClassName = "", mediaWrapperClassName = "", imageClassName = "", blurClassName = "", dimOverlayClassName = "", progressBarClassName = "", }: HeroCarouselLogoProps) => { const theme = useTheme(); const { currentSlide, progressRefs, goToSlide } = useCarouselFullscreen({ totalSlides: slides.length, autoplayDelay, }); const setProgressRef = useCallback( (el: HTMLDivElement | null, index: number) => { progressRefs.current[index] = el; }, [progressRefs] ); return (
{showDimOverlay && (
)} {slides.map((slide, index) => (
))}
); }; HeroCarouselLogo.displayName = "HeroCarouselLogo"; export default HeroCarouselLogo;