"use client"; import { ChevronUp } from "lucide-react"; import React, { useState, useEffect } from "react"; import Link from "next/link"; import { cn } from "@/lib/utils"; import { useContent } from "@/components/layout/content-provider"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const MOBILE_BREAKPOINT = 768; const AUTOPLAY_DELAY_MS = 3200; const FeatureCarousel = () => { const content = useContent(); const { featureCarousel } = content.pages.home; const carouselItems = featureCarousel.items; const [openCardIndex, setOpenCardIndex] = useState(null); const [isMobile, setIsMobile] = useState(false); const [carouselApi, setCarouselApi] = useState(null); useEffect(() => { const mq = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`); const handler = () => setIsMobile(mq.matches); handler(); mq.addEventListener("change", handler); return () => mq.removeEventListener("change", handler); }, []); useEffect(() => { if (!isMobile || !carouselApi) return; const timer = setInterval(() => { carouselApi.scrollNext(); }, AUTOPLAY_DELAY_MS); return () => clearInterval(timer); }, [isMobile, carouselApi]); const handleCardClick = (index: number) => { if (!isMobile) return; setOpenCardIndex((prev) => (prev === index ? null : index)); }; return (

{featureCarousel.heading}

{carouselItems.map((item, index) => (
handleCardClick(index)} role={isMobile ? "button" : undefined} aria-expanded={isMobile ? openCardIndex === index : undefined} >
{item.title} {/* Overlay: hover on desktop, open state on mobile */}
{/* Text overlay */}

{item.title}

{item.description}

e.stopPropagation()} className="pointer-events-auto group/cta mb-2 flex cursor-pointer flex-col items-center justify-center transition-transform duration-300 ease-out group-hover/cta:-translate-y-1" >

{featureCarousel.viewDetails}

))}
); }; export { FeatureCarousel }; const DottedDiv = ({ children, className, }: { children: React.ReactNode; className?: string; }) => (
{children}
);