"use client"; import { ArrowLeft, ArrowRight } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { Carousel, CarouselApi, CarouselContent, CarouselItem, } from "@/components/ui/carousel"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { cn } from "@/lib/utils"; const items = [ { title: ( <> کشف
ویژگی‌های اصلی ما ), description: ( <> به عمق قابلیت‌های قدرتمندی بروید که برای ساده‌سازی گردش کار شما طراحی شده‌اند. از طراحی شهودی، یکپارچه‌سازی روان و گزینه‌های سفارشی‌سازی قدرتمند بهره ببرید.

ببینید پلتفرم ما چگونه با نیازهای در حال تغییر شما سازگار می‌شود و ارزش و کارایی بلندمدت را تضمین می‌کند. ), note: "مستندات جامع و کانال‌های پشتیبانی اختصاصی برای همراهی با شما در دسترس است.", image: "/block-media/shadcnblocks/block/placeholder-1.svg", category: "ویژگی‌ها", }, { title: ( <> راهکار برای
هر سناریو ), description: ( <>

ببینید پلتفرم ما چگونه چالش‌های متنوع در حوزه‌های مختلف را پاسخ می‌دهد:

ابزارهای سازگار برای بستر منحصربه‌فرد شما ارائه می‌دهیم.

), note: "از تخصص ما در یکپارچه‌سازی و توسعه سفارشی برای نیازهای خاص بهره ببرید.", image: "/block-media/shadcnblocks/block/placeholder-2.svg", category: "راهکارها", }, { title: ( <> ساخت
آینده با هم ), description: ( <>

نگاهی به تعهد مداوم ما به نوآوری و بهبود بیندازید:

ما بر اساس بازخورد کاربران و روندهای صنعت دائماً در حال تکامل هستیم.

), note: "تیم تحقیق و توسعه اختصاصی ما بر ارائه راهکارهای پیشرفته متمرکز است.", image: "/block-media/shadcnblocks/block/placeholder-3.svg", category: "نقشه راه", }, ]; interface Gallery16Props { className?: string; } const Gallery16 = ({ className }: Gallery16Props) => { const [api, setApi] = useState(); const [current, setCurrent] = useState(items[0].category); const [canScrollPrev, setCanScrollPrev] = useState(false); const [canScrollNext, setCanScrollNext] = useState(false); const tabRefs = useRef<(HTMLButtonElement | null)[]>([]); const [indicatorStyle, setIndicatorStyle] = useState({ width: 0, insetInlineStart: 0, }); useEffect(() => { const currentIndex = items.findIndex((item) => item.category === current); const activeTab = tabRefs.current[currentIndex]; if (activeTab) { const { offsetWidth, offsetLeft } = activeTab; setIndicatorStyle({ width: offsetWidth, insetInlineStart: offsetLeft, }); } }, [current]); useEffect(() => { if (!api) { return; } const currentIndex = items.findIndex((item) => item.category === current); api.scrollTo(currentIndex); const onSelect = () => { const idx = api.selectedScrollSnap(); setCurrent(items[idx].category); setCanScrollPrev(api.canScrollPrev()); setCanScrollNext(api.canScrollNext()); }; setCanScrollPrev(api.canScrollPrev()); setCanScrollNext(api.canScrollNext()); api.on("select", onSelect); return () => { api.off("select", onSelect); }; }, [api, current]); useEffect(() => { if (!api) { return; } api.reInit(); }, [api]); return (
{items.map((item, idx) => ( { tabRefs.current[idx] = el; }} value={item.category} className="border-none !bg-background text-base transition-all duration-700 ease-out [&[data-state=active]]:shadow-none" > {item.category} ))}
{items.map((item, idx) => (

{item.title}

{item.description}

{item.note}

{item.category}
))}
); }; export { Gallery16 };