279 lines
14 KiB
TypeScript
279 lines
14 KiB
TypeScript
import { Check, Info, TrendingUp, Users } from "lucide-react";
|
|
|
|
import { Alert, AlertTitle } from "@/components/ui/alert";
|
|
import { Button } from "@/components/ui/button";
|
|
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
|
|
import { Separator } from "@/components/ui/separator";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
const formatPrice = (value: string | number) =>
|
|
`${(typeof value === "string" ? Number(value) : value).toLocaleString("fa-IR")} ریال`;
|
|
|
|
const starterFeatures = [
|
|
"مدیریت شبکههای اجتماعی",
|
|
"تولید محتوا",
|
|
"تحلیلهای پایه",
|
|
"گزارشهای ماهانه",
|
|
];
|
|
|
|
const professionalFeatures = [
|
|
"بهینهسازی پیشرفته بهینهسازی جستجو",
|
|
"مدیریت تبلیغات حساب ابری",
|
|
"تبلیغات شبکه اجتماعی و شبکه تصویری",
|
|
"کمپینهای ایمیل مارکتینگ",
|
|
"استراتژی محتوا",
|
|
"تحلیل رقبا",
|
|
"بهینهسازی نرخ تبدیل",
|
|
"طراحی صفحه فرود",
|
|
"تولید محتوای ویدیویی",
|
|
"همکاری با اینفلوئنسرها",
|
|
"بیش از ۵۰۰ قالب بازاریابی",
|
|
"شامل همه امکانات Starter",
|
|
];
|
|
|
|
const enterpriseFeatures = [
|
|
"مدیریت نامحدود کمپین",
|
|
"مدیر موفقیت مشتری اختصاصی",
|
|
"پشتیبانی اولویتدار ۲۴/۷",
|
|
"شامل همه امکانات Professional",
|
|
];
|
|
|
|
interface Pricing38Props {
|
|
className?: string;
|
|
}
|
|
|
|
const Pricing38 = ({ className }: Pricing38Props) => {
|
|
return (
|
|
<section className={cn("py-32", className)}>
|
|
<div className="container px-4">
|
|
<div className="rounded-lg border border-border bg-muted/40 p-1">
|
|
<div className="grid gap-12 rounded-sm border border-border p-4 md:p-6 lg:grid-cols-2">
|
|
<div className="flex flex-col gap-12">
|
|
<div className="flex flex-col gap-4">
|
|
<p className="text-xs font-medium text-muted-foreground uppercase">
|
|
بستههای خدماتی
|
|
</p>
|
|
<h2 className="text-xl font-medium tracking-tight">
|
|
کسبوکار خود را با استراتژیهای اثباتشده رشد دهید.
|
|
</h2>
|
|
<p className="text-muted-foreground">
|
|
از بستههای جامع بازاریابی ما انتخاب کنید که برای رشد
|
|
کسبوکار از استارتاپ تا سطح سازمانی طراحی شدهاند.
|
|
</p>
|
|
<Alert className="w-fit items-center bg-muted/50 has-[>svg]:gap-x-2 [&>svg]:translate-y-0">
|
|
<Info />
|
|
<AlertTitle className="line-clamp-none text-xs">
|
|
همه بستهها شامل مشاوره رایگان و جلسه استراتژی هستند.
|
|
</AlertTitle>
|
|
</Alert>
|
|
</div>
|
|
<Separator className="data-[orientation=horizontal]:w-12" />
|
|
<div className="flex flex-col gap-4">
|
|
<p className="text-xs font-medium text-muted-foreground uppercase">
|
|
راهکارهای سفارشی
|
|
</p>
|
|
<h2 className="text-xl font-medium tracking-tight">
|
|
به رویکرد اختصاصی نیاز دارید؟
|
|
</h2>
|
|
<p className="text-muted-foreground">
|
|
<a href="#" className="transition-colors hover:text-primary">
|
|
تماس با ما
|
|
</a>{" "}
|
|
کنید برای راهکارهای بازاریابی سفارشی یا بحث درباره نیازهای
|
|
کمپین متناسب با اهداف کسبوکار شما.
|
|
</p>
|
|
</div>
|
|
<Separator className="data-[orientation=horizontal]:w-12" />
|
|
<div className="flex flex-col gap-4">
|
|
<p className="text-xs font-medium text-muted-foreground uppercase">
|
|
پشتیبانی
|
|
</p>
|
|
<h2 className="text-xl font-medium tracking-tight">
|
|
بهینهسازی مستمر
|
|
</h2>
|
|
<p className="text-muted-foreground">
|
|
کمپینهای شما را برای حداکثر بازگشت سرمایه بهطور مداوم
|
|
پایش و بهینه میکنیم. نیاز به تغییر دارید؟{" "}
|
|
<a href="#" className="transition-colors hover:text-primary">
|
|
تماس با ما
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div className="space-y-6">
|
|
<RadioGroup defaultValue="starter">
|
|
<label
|
|
htmlFor="starter"
|
|
className="group relative flex cursor-pointer flex-col gap-4 rounded-lg border border-border p-8 has-[[data-state=checked]]:border-ring has-[[data-state=checked]]:bg-background"
|
|
>
|
|
<RadioGroupItem
|
|
value="starter"
|
|
id="starter"
|
|
className="hidden"
|
|
/>
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex flex-col">
|
|
<h3 className="text-lg font-semibold">شروع</h3>
|
|
<p className="text-sm text-muted-foreground">
|
|
مناسب کسبوکارهای کوچک
|
|
</p>
|
|
</div>
|
|
<span className="text-xl font-bold">
|
|
{formatPrice(0)}
|
|
<span className="text-base font-normal text-muted-foreground">
|
|
در ماه
|
|
</span>
|
|
</span>
|
|
</div>
|
|
<Separator />
|
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
<div className="flex items-start gap-2">
|
|
<Users className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">
|
|
۳ پلتفرم شبکه اجتماعی
|
|
</p>
|
|
</div>
|
|
<div className="flex items-start gap-2">
|
|
<TrendingUp className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">
|
|
پیگیری عملکرد پایه
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Separator />
|
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
{starterFeatures.map((feature, index) => (
|
|
<div key={index} className="flex items-start gap-2">
|
|
<Check className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">{feature}</p>
|
|
</div>
|
|
))}
|
|
</div>
|
|
<span className="absolute -top-2 -end-2 z-10 flex size-5 items-center justify-center rounded-full bg-primary opacity-0 group-has-[[data-state=checked]]:opacity-100">
|
|
<Check className="size-3 text-background" />
|
|
</span>
|
|
<div className="max-h-0 overflow-hidden transition-all duration-300 ease-out group-has-[[data-state=checked]]:max-h-20">
|
|
<Button className="mt-4 w-full opacity-0 transition-opacity duration-300 group-has-[[data-state=checked]]:opacity-100">
|
|
شروع رایگان
|
|
</Button>
|
|
</div>
|
|
</label>
|
|
<label
|
|
htmlFor="pro"
|
|
className="group relative flex cursor-pointer flex-col gap-4 rounded-lg border border-border p-8 has-[[data-state=checked]]:border-ring has-[[data-state=checked]]:bg-background"
|
|
>
|
|
<RadioGroupItem value="pro" id="pro" className="hidden" />
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex flex-col">
|
|
<h3 className="text-lg font-semibold">حرفهای</h3>
|
|
<p className="text-sm text-muted-foreground">
|
|
راهکار کامل بازاریابی
|
|
</p>
|
|
</div>
|
|
<span className="text-xl font-bold">
|
|
{formatPrice(200000)}
|
|
<span className="text-base font-normal text-muted-foreground">
|
|
در ماه
|
|
</span>
|
|
</span>
|
|
</div>
|
|
<Separator />
|
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
<div className="flex items-start gap-2">
|
|
<Users className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">
|
|
شامل همه پلتفرمهای اصلی
|
|
</p>
|
|
</div>
|
|
<div className="flex items-start gap-2">
|
|
<TrendingUp className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">
|
|
تحلیلها و گزارشدهی پیشرفته
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Separator />
|
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
{professionalFeatures.map((feature, index) => (
|
|
<div key={index} className="flex items-start gap-2">
|
|
<Check className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">{feature}</p>
|
|
</div>
|
|
))}
|
|
</div>
|
|
<span className="absolute -top-2 -end-2 z-10 flex size-5 items-center justify-center rounded-full bg-primary opacity-0 group-has-[[data-state=checked]]:opacity-100">
|
|
<Check className="size-3 text-background" />
|
|
</span>
|
|
<div className="max-h-0 overflow-hidden transition-all duration-300 ease-out group-has-[[data-state=checked]]:max-h-20">
|
|
<Button className="mt-4 w-full opacity-0 transition-opacity duration-300 group-has-[[data-state=checked]]:opacity-100">
|
|
شروع رایگان
|
|
</Button>
|
|
</div>
|
|
</label>
|
|
<label
|
|
htmlFor="enterprise"
|
|
className="group relative flex cursor-pointer flex-col gap-4 rounded-lg border border-border p-8 has-[[data-state=checked]]:border-ring has-[[data-state=checked]]:bg-background"
|
|
>
|
|
<RadioGroupItem
|
|
value="enterprise"
|
|
id="enterprise"
|
|
className="hidden"
|
|
/>
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex flex-col">
|
|
<h3 className="text-lg font-semibold">سازمانی</h3>
|
|
<p className="text-sm text-muted-foreground">
|
|
پتانسیل رشد نامحدود
|
|
</p>
|
|
</div>
|
|
<span className="text-xl font-bold">
|
|
{formatPrice(990000)}
|
|
<span className="text-base font-normal text-muted-foreground">
|
|
در ماه
|
|
</span>
|
|
</span>
|
|
</div>
|
|
<Separator />
|
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
<div className="flex items-start gap-2">
|
|
<Users className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">
|
|
مدیریت نامحدود پلتفرم
|
|
</p>
|
|
</div>
|
|
<div className="flex items-start gap-2">
|
|
<TrendingUp className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">
|
|
پایش عملکرد بلادرنگ
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<Separator />
|
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
{enterpriseFeatures.map((feature, index) => (
|
|
<div key={index} className="flex items-start gap-2">
|
|
<Check className="mt-0.5 size-4 shrink-0 text-muted-foreground" />
|
|
<p className="text-sm text-primary/80">{feature}</p>
|
|
</div>
|
|
))}
|
|
</div>
|
|
<span className="absolute -top-2 -end-2 z-10 flex size-5 items-center justify-center rounded-full bg-primary opacity-0 group-has-[[data-state=checked]]:opacity-100">
|
|
<Check className="size-3 text-background" />
|
|
</span>
|
|
<div className="max-h-0 overflow-hidden transition-all duration-300 ease-out group-has-[[data-state=checked]]:max-h-20">
|
|
<Button className="mt-4 w-full opacity-0 transition-opacity duration-300 group-has-[[data-state=checked]]:opacity-100">
|
|
شروع رایگان
|
|
</Button>
|
|
</div>
|
|
</label>
|
|
</RadioGroup>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
};
|
|
|
|
export { Pricing38 };
|