"use client"; import Autoplay from "embla-carousel-autoplay"; import { ArrowRight, Blend, ChartNoAxesColumn, CircleDot, Diamond, } from "lucide-react"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, } from "@/components/ui/carousel"; import type { HeroFeatureIconsProps, Image } from "@/lib/hero-feature-icons"; import { cn } from "@/lib/utils"; // Extended Image type with optional label for carousel indicators type ImageWithLabel = Image & { label?: string }; const DEFAULT_FEATURES = [ { title: "گردش‌کارهای سفارشی", description: "پیشرفت وظایف را در گردش‌کارهای سفارشی تیم خود مدیریت کنید.", icon: CircleDot, }, { title: "نقاط عطف", description: "پروژه‌ها را به فازهای مشخص تقسیم کنید.", icon: Diamond, }, { title: "پروژه‌های بین‌تیمی", description: "همکاری میان تیم‌ها و واحدهای مختلف را ساده‌تر کنید.", icon: Blend, }, { title: "بینش پیشرفت", description: "وضعیت پروژه، سرعت اجرا و میزان پیشرفت را به‌صورت مستمر بررسی کنید.", icon: ChartNoAxesColumn, }, ]; const DEFAULT_IMAGES: [ImageWithLabel, ...ImageWithLabel[]] = [ { src: "/block-media/shadcnblocks/block/placeholder-1.svg", alt: "پیش‌نمایش کانبان", label: "کانبان", }, { src: "/block-media/shadcnblocks/block/placeholder-2.svg", alt: "پیش‌نمایش فهرست مسائل", label: "مسائل", }, { src: "/block-media/shadcnblocks/block/placeholder-3.svg", alt: "پیش‌نمایش افزودن مسئله", label: "افزودن مسئله", }, ]; const Hero187a = ({ heading = "بلاک‌های آماده برای پروژه بعدی شما", description = "ابزار مناسب برای برنامه‌ریزی و ساخت محصولات نرم‌افزاری مدرن.", buttonPrimary = { text: "شروع رایگان", href: "#" }, buttonSecondary = { text: "مستندات", href: "#" }, features = DEFAULT_FEATURES, images = DEFAULT_IMAGES, className, }: HeroFeatureIconsProps) => { const [currentSlide, setCurrentSlide] = useState(0); const [api, setApi] = useState(); useEffect(() => { if (!api) { return; } api.on("select", () => { setCurrentSlide(api.selectedScrollSnap()); }); }, [api]); const activeImages = images ?? DEFAULT_IMAGES; return (
{/* Carousel Section */}
{activeImages.map((image, index) => ( {image.alt} ))}
{/* Content Section */}

{heading}

{description}

{/* Features */}
4 && "grid-cols-1 md:grid-cols-2 lg:grid-cols-4", )} > {features?.map((feature) => { const Icon = feature.icon; return (

{feature.title}

{feature.description}

); })}
{buttonPrimary && ( )} {buttonSecondary && ( )}
); }; interface SlideIndicatorProps { currentSlide: number; images: ImageWithLabel[]; className?: string; api: CarouselApi | null; } const SlideIndicator = ({ currentSlide, images, className, api, }: SlideIndicatorProps) => { return (
{(currentSlide + 1).toLocaleString("fa-IR")} از{" "} {images.length.toLocaleString("fa-IR")} {" "} {images[currentSlide].label}
{images.map((_, index) => (
); }; export { Hero187a };