Files
reui-blocks/blocks/feature312.tsx
T

149 lines
6.0 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 { CirclePlus } from "lucide-react";
import { cn } from "@/lib/utils";
type StatCard = {
value: string;
label: string;
description?: string;
logos?: string[];
};
interface Feature312Props {
sectionLabel?: string;
heading: string;
subheading?: string;
descriptionHeading?: string;
description?: string;
image: string;
imageAlt?: string;
stats: StatCard[];
className?: string;
}
const Feature312 = ({
sectionLabel = "فرایند هوشمند",
heading = "فرایندها را استاندارد و سریع کنید",
subheading = "با هر رویداد مثل ثبت فرم یا تغییر وضعیت، اقدام بعدی را خودکار اجرا کنید.",
descriptionHeading = "مسیر متفاوت برای شرایط مختلف تعریف کنید و تصمیم‌گیری را سریع‌تر کنید.",
description = "قوانین ساده تعریف کنید تا وظایف تکراری بدون دخالت دست انجام شود. تیم روی تصمیم‌های مهم تمرکز می‌کند و سرعت اجرا بالاتر می‌رود.",
image = "/block-media/shadcnblocks/block/guri3/img9.jpeg",
imageAlt = "سازنده گردش‌کار",
stats = [
{
value: "اتوماسیون",
label: "گردش‌کار",
description:
"تیم را در لحظه از تغییر وضعیت باخبر کنید تا هیچ موردی رها نشود.",
},
{
value: "صرفه‌جویی زمان",
label: "فرایند هوشمند",
logos: [
"/block-media/shadcnblocks/block/logos/company/fictional-company-logo-3.svg",
"/block-media/shadcnblocks/block/logos/company/fictional-company-logo-2.svg",
"/block-media/shadcnblocks/block/logos/company/fictional-company-logo-1.svg",
],
},
],
className,
}: Feature312Props) => {
const logoAlts = ["اتوماسیون را در کل سازمان یکپارچه کنید", "اتوماسیون", "گردش‌کار"];
return (
<section dir="rtl" lang="fa" className={cn("bg-muted py-24", className)}>
<div className="container mx-auto flex max-w-7xl flex-col gap-2 md:gap-30">
<div className="flex flex-col gap-2 md:grid md:auto-rows-[minmax(0,1fr)] md:grid-cols-[repeat(4,minmax(50px,1fr))] md:grid-rows-[repeat(1,minmax(0,1fr))] md:gap-8">
<div className="flex items-center gap-2 text-xs font-bold md:text-sm">
<CirclePlus size={20} className="shrink-0" />
<span>{sectionLabel}</span>
</div>
<div className="col-span-3 max-w-3xl text-right">
<h2 className="text-xl leading-tight font-bold tracking-tight text-balance md:text-xl">
{heading}
<span className="block font-semibold text-muted-foreground">
{subheading}
</span>
</h2>
</div>
</div>
<div className="relative flex flex-col gap-4 md:grid md:auto-rows-[minmax(0,1fr)] md:grid-cols-[repeat(4,minmax(50px,1fr))] md:grid-rows-[repeat(1,minmax(0,1fr))] md:gap-10">
<div className="relative h-full w-full overflow-hidden rounded-2xl border-2 border-muted bg-background md:col-span-2">
<img
src={image}
alt={imageAlt}
className="aspect-video h-full w-full object-cover"
/>
<div className="absolute top-10 end-10">
<CirclePlus size={20} />
</div>
</div>
<div className="col-span-2 flex flex-col gap-16">
<div className="w-5/6">
<p className="col-span-3 text-right text-xl font-medium text-pretty">
{descriptionHeading}
<span className="text-muted-foreground">{description}</span>
</p>
</div>
<div className="grid grid-cols-1 gap-1 md:grid-cols-2">
<div className="order-1 rounded-2xl bg-background p-8 md:order-1">
<div className="flex items-start justify-between">
<div className="text-xs text-muted-foreground">۱</div>
<div className="text-3xl font-bold md:text-2xll">
{stats[0]?.value}
</div>
</div>
</div>
<div className="order-3 rounded-2xl bg-background p-8 md:order-2">
<div className="flex items-start justify-between">
<div className="text-xs text-muted-foreground">۲</div>
<div className="text-3xl font-bold md:text-2xll">
{stats[1]?.value}
</div>
</div>
</div>
<div className="order-2 flex min-h-80 flex-col justify-between gap-16 rounded-2xl bg-background p-8 md:order-3">
<div className="text-right">
<div className="text-lg font-bold text-pretty md:w-3/4">
{stats[0]?.label}
</div>
</div>
<div className="text-right text-pretty text-muted-foreground">
{stats[0]?.description}
</div>
</div>
<div className="order-4 flex h-80 h-full flex-col justify-between gap-16 rounded-2xl bg-background p-8 md:order-4">
<div className="text-right">
<div className="text-lg font-bold text-pretty md:w-3/4">
{stats[1]?.label}
</div>
</div>
<div className="flex justify-start gap-3 text-muted-foreground">
{stats[1]?.logos?.map((logo, index) => (
<div key={logo}>
<img
src={logo}
alt={logoAlts[index] ?? `لوگوی شرکت همکار ${index + 1}`}
className="h-6 w-14"
/>
</div>
))}
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
};
export { Feature312 };