Files
reui-blocks/blocks/process1.tsx
T

120 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Asterisk, CornerDownRight } from "lucide-react";
import React from "react";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
interface Process1Props {
className?: string;
}
const Process1 = ({ className }: Process1Props) => {
const process = [
{
step: "۱",
title: "کشف و تحقیق",
description:
"با درک اهداف کسب‌وکار، مخاطب هدف و چالش‌های فعلی شما شروع می‌کنیم. این فاز شامل تحقیق، تحلیل و برنامه‌ریزی استراتژیک برای شناسایی فرصت‌هاست.",
},
{
step: "۲",
title: "استراتژی و برنامه‌ریزی",
description:
"بر اساس یافته‌ها، استراتژی جامعی متناسب با اهداف شما توسعه می‌دهیم. این شامل تعریف رویکرد، زمان‌بندی و نقاط عطف کلیدی برای موفقیت است.",
},
{
step: "۰۳",
title: "اجرا و توسعه",
description:
"استراتژی را از طریق پیاده‌سازی و توسعه دقیق به واقعیت تبدیل می‌کنیم. تیم ما به‌صورت همکاری کار می‌کند تا هر جزئیات با نیازها و استانداردهای شما هم‌خوان باشد.",
},
{
step: "۰۴",
title: "بهینه‌سازی و بهبود",
description:
"عملکرد را به‌طور مستمر پایش و بازخورد جمع‌آوری می‌کنیم تا راه‌حل را پالایش و بهبود دهیم. این فرآیند تکراری موفقیت و رشد بلندمدت را تضمین می‌کند.",
},
];
return (
<section dir="rtl" lang="fa" className={cn("py-32", className)}>
<div className="container">
<div className="grid grid-cols-1 gap-5 lg:grid-cols-6 lg:gap-20">
<div className="top-10 col-span-2 h-fit w-fit gap-3 space-y-7 py-8 lg:sticky">
<div className="relative w-fit text-2xll font-semibold tracking-tight lg:text-2xll">
<h1 className="w-fit">فرآیند ما</h1>
<Asterisk className="absolute -top-2 -left-2 size-5 text-orange-500 md:size-10 lg:-left-14" />
</div>
<p className="text-start text-base text-foreground/50">
از کشف نیازهای شما تا تحویل نهایی، هر مرحله با دقت و شفافیت پیش
می‌رود تا بهترین نتیجه حاصل شود.
</p>
<Button
variant="ghost"
className="flex items-center justify-start gap-2"
>
<CornerDownRight className="text-orange-500 rtl:rotate-180" />
تماس بگیرید
</Button>
</div>
<ul className="relative col-span-4 w-full lg:ps-22">
{process.map((step, index) => (
<li
key={index}
className="relative flex flex-col justify-between gap-10 border-t py-8 md:flex-row lg:py-10"
>
<Illustration className="absolute top-4 left-0" />
<div className="flex size-12 items-center justify-center bg-muted px-4 py-1 tracking-tighter">
{step.step}
</div>
<div>
<h3 className="mb-4 text-start text-xl font-semibold tracking-tighter lg:text-3xl">
{step.title}
</h3>
<p className="text-start text-foreground/50">
{step.description}
</p>
</div>
</li>
))}
</ul>
</div>
</div>
</section>
);
};
export { Process1 };
const Illustration = (props: React.SVGProps<SVGSVGElement>) => {
return (
<svg
width="22"
height="20"
viewBox="0 0 22 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<line
x1="0.607422"
y1="2.57422"
x2="21.5762"
y2="2.57422"
stroke="#FF0000"
strokeWidth="4"
/>
<line
x1="19.5762"
y1="19.624"
x2="19.5762"
y2="4.57422"
stroke="#FF0000"
strokeWidth="4"
/>
</svg>
);
};