"use client"; import { ArrowRight, ChevronDown } from "lucide-react"; import { useEffect, useState } from "react"; import { cn } from "@/lib/utils"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, } from "@/components/ui/carousel"; const features = [ { id: "feature-1", title: "Feature 1", description: "Nam vitae molestie arcu. Quisque eu libero orci. Aliquam imperdiet magna nec massa consectetur, id interdum ante congue.", href: "#", image: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/placeholder-1.svg", }, { id: "feature-2", title: "Feature 2", description: "Nam vitae molestie arcu. Quisque eu libero orci. Aliquam imperdiet magna nec massa consectetur, id interdum ante congue.", href: "#", image: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/placeholder-2.svg", }, { id: "feature-3", title: "Feature 3", description: "Nam vitae molestie arcu. Quisque eu libero orci. Aliquam imperdiet magna nec massa consectetur, id interdum ante congue.", href: "#", image: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/placeholder-3.svg", }, ]; interface FeatureCarouselGridProps { className?: string; } const FeatureCarouselGrid = ({ className }: FeatureCarouselGridProps) => { const [selection, setSelection] = useState(0); const [carouselApi, setCarouselApi] = useState(); useEffect(() => { if (!carouselApi) { return; } carouselApi.scrollTo(selection); }, [carouselApi, selection]); useEffect(() => { if (!carouselApi) { return; } const updateSelection = () => { setSelection(carouselApi.selectedScrollSnap()); }; carouselApi.on("select", updateSelection); return () => { carouselApi.off("select", updateSelection); }; }, [carouselApi]); return (
{features.map((feature) => ( {feature.title} ))}

Features

Lorem ipsum dolor sit amet consectetur adipisicing elit. Elig doloremque mollitia fugiat omnis! Porro facilis quo animi consequatur. Explicabo.

    {features.map((feature, i) => (
  • setSelection(i)} >
    {feature.title}

    {feature.description}

    Learn more{" "}
  • ))}
); }; export { FeatureCarouselGrid };