"use client"; import { AnimatePresence, motion } from "framer-motion"; import React, { useState } from "react"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; import { cn } from "@/lib/utils"; const SLIDES = [ { name: "کاوه مرادی", content: "Laravel نحوه ساخت اپلیکیشن‌های وب ما را کاملاً متحول کرد. نحو زیبا، قابلیت‌های قدرتمند و مستندات عالی، توسعه را لذت‌بخش کرده است.", logo: "/block-media/shadcnblocks/block/logos/laravel-wordmark.svg", logoAlt: "لوگوی Laravel", logoClass: "h-10 md:h-12", imageAlt: "نمونه کار توسعه وب با Laravel", images: [ { src: "/block-media/shadcnblocks/block/photos/fabian-centeno-njeVb6E3XB8-unsplash.jpg", position: 2, }, { src: "/block-media/shadcnblocks/block/photos/israel-andrade-YI_9SivVt_s-unsplash.jpg", position: 4, }, { src: "/block-media/shadcnblocks/block/photos/studio-kealaula-IVZ_XAoZF3s-unsplash.jpg", position: 7, }, ], }, { name: "مهسا نوری", content: "همکاری با این تیم کسب‌وکار ما را کاملاً متحول کرد. توجه به جزئیات و راهکارهای نوآورانه آن‌ها باعث شد در تنها شش ماه، درآمدمان ۴۰٪ افزایش یابد.", logo: "/block-media/shadcnblocks/block/logos/tailwind-wordmark.svg", logoAlt: "لوگوی Tailwind CSS", logoClass: "h-6 md:h-8", imageAlt: "نمونه کار طراحی رابط کاربری", images: [ { src: "/block-media/shadcnblocks/block/photos/annie-spratt-AkftcHujUmk-unsplash.jpg", position: 1, }, { src: "/block-media/shadcnblocks/block/photos/nastuh-abootalebi-yWwob8kwOCk-unsplash.jpg", position: 3, }, { src: "/block-media/shadcnblocks/block/photos/alvin-engler-bIhpiQA009k-unsplash.jpg", position: 5, }, ], }, { name: "امیر محمدی", content: "این محصول فراتر از تمام انتظارات ما بود. شهودی، قدرتمند و دقیقاً همان چیزی که برای ساده‌سازی فرآیندهایمان نیاز داشتیم. برای هر کسب‌وکاری توصیه می‌شود.", logo: "/block-media/shadcnblocks/block/logos/vercel-wordmark.svg", logoAlt: "لوگوی Vercel", logoClass: "h-6 md:h-8", imageAlt: "نمونه کار استقرار و زیرساخت ابری", images: [ { src: "/block-media/shadcnblocks/block/photos/redd-f-5U_28ojjgms-unsplash.jpg", position: 0, }, { src: "/block-media/shadcnblocks/block/photos/nubelson-fernandes-tAJYoec13xk-unsplash.jpg", position: 4, }, { src: "/block-media/shadcnblocks/block/photos/nubelson-fernandes-xxa7qYObMrI-unsplash.jpg", position: 7, }, ], }, ]; interface CaseStudies5Props { className?: string; } const CaseStudies5 = ({ className }: CaseStudies5Props) => { const [currentIndex, setCurrentIndex] = useState(0); const [carouselApi, setCarouselApi] = useState(); React.useEffect(() => { if (!carouselApi) { return; } const onSelect = () => { setCurrentIndex(carouselApi.selectedScrollSnap()); }; carouselApi.on("select", onSelect); return () => { carouselApi.off("select", onSelect); }; }, [carouselApi]); const renderGrid = ( images: (typeof SLIDES)[0]["images"], imageAlt: string, ) => { return (
{Array.from({ length: 9 }).map((_, index) => { const image = images.find((img) => img.position === index); const isImage = Boolean(image); return (
{isImage && image?.src && ( {imageAlt} )}
); })}
); }; return (
{SLIDES.map((testimonial, index) => (
{renderGrid(testimonial.images, testimonial.imageAlt)}
))}
{SLIDES[currentIndex].logoAlt} {SLIDES[currentIndex].content}
); }; export { CaseStudies5 };