"use client"; import type { LucideIcon } from "lucide-react"; import { ArrowRight, Bell, Book, Brush, CalendarCheck2, CheckSquare, ClipboardList, Code, Database, FileText, GitBranch, GitPullRequest, LayoutGrid, LifeBuoy, MonitorSmartphone, PhoneCall, Server, Settings2, Slack, Users, Zap, } from "lucide-react"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import { cn } from "@/lib/utils"; const formatPrice = (value: string | number) => `${(typeof value === "string" ? Number(value) : value).toLocaleString("fa-IR")} ریال`; interface FeatureItem { icon: LucideIcon; text: string; } interface PricingPlan { name: string; priceMonthly: number; priceYearly: number; description: string; bestFor: string; features?: FeatureItem[]; mostPopular?: boolean; cta: { text: string; href: string; }; } const PLANS: PricingPlan[] = [ { name: "شروع", priceMonthly: 90000, priceYearly: 900000, description: "عالی برای توسعه‌دهندگان مستقل", bestFor: "فریلنسرهای تازه‌کار", features: [ { icon: Code, text: "دسترسی به کامپوننت‌های اصلی" }, { icon: LayoutGrid, text: "بلاک‌های چیدمان پایه" }, { icon: MonitorSmartphone, text: "قالب‌های طراحی واکنش‌گرا" }, { icon: FileText, text: "مستندات مقدماتی" }, { icon: GitBranch, text: "تاریخچه نسخه‌ها" }, { icon: LifeBuoy, text: "پشتیبانی انجمن" }, { icon: Book, text: "راهنمای رابط کاربری به‌صورت پی‌دی‌اف" }, ], cta: { text: "شروع رایگان", href: "#", }, }, { name: "حرفه‌ای", mostPopular: true, priceMonthly: 290000, priceYearly: 290000, description: "بهترین گزینه برای تیم‌های در حال رشد", bestFor: "تیم‌های کوچک توسعه و استارتاپ‌ها", features: [ { icon: Code, text: "کتابخانه پیشرفته بلاک رابط کاربری" }, { icon: Brush, text: "پشتیبانی از تم‌های سفارشی" }, { icon: Settings2, text: "ابزارهای سیستم طراحی" }, { icon: CheckSquare, text: "شامل تست کامپوننت‌ها" }, { icon: Zap, text: "بهبودهای عملکرد" }, { icon: Server, text: "میزبانی کامپوننت‌های مشترک" }, { icon: PhoneCall, text: "پشتیبانی ایمیل و چت" }, ], cta: { text: "شروع رایگان", href: "#", }, }, { name: "تیم", priceMonthly: 590000, priceYearly: 590000, description: "همکاری و رشد سریع", bestFor: "تیم‌های محصول با چند پروژه", features: [ { icon: Users, text: "کنترل دسترسی تیمی" }, { icon: GitPullRequest, text: "ادغام و بازبینی بلاک‌های رابط کاربری" }, { icon: CalendarCheck2, text: "نقشه راه اولویت‌دار" }, { icon: Bell, text: "اعلان به‌روزرسانی‌ها" }, { icon: Database, text: "تحلیل استفاده از کامپوننت‌ها" }, { icon: Slack, text: "یکپارچه‌سازی پیام‌رسان تیمی" }, { icon: ClipboardList, text: "کتابخانه قالب‌های پروژه" }, ], cta: { text: "شروع رایگان", href: "#", }, }, { name: "تجاری", priceMonthly: 990000, priceYearly: 990000, description: "کنترل و پشتیبانی کامل", bestFor: "آژانس‌ها و تیم‌های بزرگ", cta: { text: "شروع رایگان", href: "#", }, }, { name: "سازمانی", priceMonthly: 199000, priceYearly: 1990000, description: "راهکارهای سفارشی در مقیاس بزرگ", bestFor: "سازمان‌های بزرگ و پلتفرم‌های SaaS", cta: { text: "شروع رایگان", href: "#", }, }, ]; interface Pricing32Props { className?: string; } const Pricing32 = ({ className }: Pricing32Props) => { const [checked, setChecked] = useState(true); return (

طرحی برای هر پروژه‌ای که شروع می‌کنید

تا ۴۰٪ تخفیف با صورتحساب سالانه
{PLANS.map((plan, index) => ( PLANS.length - 3 ? "lg:col-span-3" : "lg:col-span-2" } /> ))}
); }; const PlanCard = ({ plan, monthly, className, }: { plan: PricingPlan; monthly: boolean; className?: string; }) => { return (
{plan.name}
{formatPrice(plan.priceMonthly)}
{formatPrice(plan.priceYearly)}
به ازای هر نفر در {monthly ? "ماه" : "سال"}
{plan.bestFor}
{plan.description}
{plan.features?.map((feature, index) => (
{feature.text}
))}
{plan.mostPopular && (
محبوب‌ترین
)}
); }; export { Pricing32 };