"use client"; import { motion, useInView } from "framer-motion"; import { CornerDownRight } from "lucide-react"; import React, { useEffect, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; // Custom hook to get previous value const usePrevious = (value: T): T | undefined => { const [prev, setPrev] = useState(undefined); const ref = useRef(value); useEffect(() => { setPrev(ref.current); ref.current = value; }, [value]); return prev; }; interface Process2Props { className?: string; } const Process2 = ({ className }: Process2Props) => { const process = [ { step: "۱", title: "کشف و تحقیق", image: "/block-media/shadcnblocks/block/guri4/img11.png", description: "با درک اهداف کسب‌وکار، مخاطب هدف و چالش‌های فعلی شما شروع می‌کنیم. این فاز شامل تحقیق، تحلیل و برنامه‌ریزی استراتژیک برای شناسایی فرصت‌هاست.", }, { step: "۲", title: "استراتژی و برنامه‌ریزی", image: "/block-media/shadcnblocks/block/guri4/img12.png", description: "بر اساس یافته‌ها، استراتژی جامعی متناسب با اهداف شما توسعه می‌دهیم. این شامل تعریف رویکرد، زمان‌بندی و نقاط عطف کلیدی برای موفقیت است.", }, { step: "۰۳", title: "اجرا و توسعه", image: "/block-media/shadcnblocks/block/guri4/img10.png", description: "استراتژی را از طریق پیاده‌سازی و توسعه دقیق به واقعیت تبدیل می‌کنیم. تیم ما به‌صورت همکاری کار می‌کند تا هر جزئیات با نیازها و استانداردهای شما هم‌خوان باشد.", }, { step: "۰۴", title: "بهینه‌سازی و بهبود", image: "/block-media/shadcnblocks/block/guri4/img9.png", description: "عملکرد را به‌طور مستمر پایش و بازخورد جمع‌آوری می‌کنیم تا راه‌حل را پالایش و بهبود دهیم. این فرآیند تکراری موفقیت و رشد بلندمدت را تضمین می‌کند.", }, ]; const [active, setActive] = useState(0); const previousActive = usePrevious(active); return (

فرآیند ما

از کشف نیازهای شما تا تحویل نهایی، هر مرحله با دقت و شفافیت پیش می‌رود تا بهترین نتیجه حاصل شود.

{previousActive !== undefined && (
{process[previousActive].title}
)} {process[active].title}
    {process.map((step, index) => ( ))}
); }; const ProcessCard = ({ step, index, setActive, }: { step: { step: string; title: string; image: string; description: string; }; index: number; setActive: (index: number) => void; }) => { const ref = useRef(null); const itemInView = useInView(ref, { amount: 0, margin: "0px 0px -60% 0px", }); useEffect(() => { if (itemInView) { setActive(index); } }, [itemInView, index, setActive]); return (
  • {step.step}

    {step.title}

    {step.description}

  • ); }; export { Process2 };