Files
reui-blocks/blocks/pricing12.tsx
T

154 lines
5.9 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 { cn } from "@/lib/utils";
const formatPrice = (value: string | number) =>
`${(typeof value === "string" ? Number(value) : value).toLocaleString("fa-IR")} ریال`;
const featuredAddons = [
{
id: "addon-1",
title: "افزونه ۱",
description: "امکانات تکمیلی برای گسترش قابلیت‌های پایه حساب کاربری.",
price: 199000,
},
{
id: "addon-2",
title: "افزونه ۲",
description: "ابزارهای پیشرفته برای تیم‌های در حال رشد.",
price: 199000,
},
{
id: "addon-3",
title: "افزونه ۳",
description: "یکپارچه‌سازی و گزارش‌دهی حرفه‌ای برای کسب‌وکارها.",
price: 199000,
},
];
const otherAddons = [
{
id: "addon-4",
title: "افزونه ۴",
description: "افزودن فضای ذخیره‌سازی اضافه به حساب شما.",
price: 90000,
image: "/block-media/shadcnblocks/block/block-2.svg",
},
{
id: "addon-5",
title: "افزونه ۵",
description: "دسترسی به قالب‌ها و کامپوننت‌های آماده.",
price: 190000,
image: "/block-media/shadcnblocks/block/block-3.svg",
},
{
id: "addon-6",
title: "افزونه ۶",
description: "پشتیبانی اولویت‌دار و پاسخ‌گویی سریع‌تر.",
price: 190000,
priceFootnote: "این یک یادداشت توضیحی است.",
image: "/block-media/shadcnblocks/block/block-4.svg",
},
];
interface Pricing12Props {
className?: string;
}
const Pricing12 = ({ className }: Pricing12Props) => {
return (
<section className={cn("py-32", className)}>
<div className="container">
<div className="rounded-xl border border-border py-6 md:py-8 lg:pt-16 lg:pb-12">
<div className="px-6 md:px-8 lg:px-12">
<div className="mb-8 md:mb-10 md:flex md:justify-between lg:mb-9">
<div className="lg:w-2/3">
<h1 className="mb-4 text-xl font-medium md:text-3xl lg:text-xl">
افزونه‌های تکمیلی
</h1>
<p className="text-xs text-muted-foreground md:text-sm lg:text-base">
با افزودن ماژول‌های تکمیلی، امکانات حساب خود را متناسب با
نیازتان گسترش دهید.
</p>
</div>
<img
src="/block-media/shadcnblocks/block/block-1.svg"
alt="افزونه‌ها"
className="hidden size-24 md:block lg:size-32"
/>
</div>
<div className="flex flex-col gap-x-8 gap-y-3 xl:flex-row">
{featuredAddons.map((addon) => (
<div
key={addon.id}
className="flex flex-1 flex-col rounded-lg bg-accent p-6 lg:py-8"
>
<h2 className="mb-1.5 text-base font-medium lg:mb-2 lg:text-lg">
{addon.title}
</h2>
<div className="grid flex-1 grid-cols-1 gap-x-10 md:grid-cols-3 lg:grid-cols-1">
<p className="mb-8 max-w-xs text-xs text-muted-foreground md:col-span-2 md:mb-0 lg:mb-10 lg:text-base">
{addon.description}
</p>
<div className="col-span-1 md:mt-auto md:ms-auto lg:ms-0">
<p>
<span className="font-medium lg:text-xl">
{formatPrice(addon.price)}
</span>
<span className="text-xs font-medium text-muted-foreground">
{" "}
در ماه
</span>
</p>
</div>
</div>
</div>
))}
</div>
</div>
<div className="mt-6 border-t border-border md:mt-8 lg:mt-10">
<div className="divide-y divide-border px-6 md:px-8 lg:px-12">
{otherAddons.map((addon) => (
<div
key={addon.id}
className="flex flex-col gap-4 py-6 last:pb-0 md:flex-row md:items-center md:justify-between md:gap-x-12 lg:py-10"
>
<div className="flex items-center md:max-w-md md:gap-4 lg:max-w-full lg:gap-6">
<img
src={addon.image}
alt={addon.title}
className="hidden shrink-0 md:block md:size-16 lg:size-20"
/>
<div className="max-w-md space-y-1 lg:max-w-md lg:space-y-2">
<p className="mb-1.5 text-lg font-medium md:text-xl lg:mb-2 lg:text-xl">
{addon.title}
</p>
<p className="text-xs text-muted-foreground md:text-xs lg:text-base">
{addon.description}
</p>
</div>
</div>
<div className="shrink-0 md:self-end md:text-end">
<span className="text-xl font-medium md:text-3xl lg:text-xl">
{formatPrice(addon.price)}
</span>
<span className="text-xs text-muted-foreground">
{" "}
در ماه
</span>
{addon.priceFootnote && (
<div className="mt-1 text-xs font-medium text-muted-foreground md:max-w-[8rem] lg:max-w-full">
* {addon.priceFootnote}
</div>
)}
</div>
</div>
))}
</div>
</div>
</div>
</div>
</section>
);
};
export { Pricing12 };