"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { Button, Container, SectionTitle } from "@/components/ui"; import { loadCommercialBundles, loadCommercialPricing } from "@/modules/commercial/adapters"; import type { AdapterResult, CommercialBundle, CommercialPricingItem } from "@/modules/commercial/types"; import { BundleCard, CommercialEmptyState } from "@/modules/commercial/components"; export default function PricingPage() { const [pricing, setPricing] = useState | null>(null); const [bundles, setBundles] = useState | null>(null); useEffect(() => { void Promise.all([loadCommercialPricing(), loadCommercialBundles()]).then(([p, b]) => { setPricing(p); setBundles(b); }); }, []); return (

قیمت‌گذاری

تمام مبالغ و مدل‌ها از کاتالوگ تجاری runtime — بدون قیمت ثابت در frontend.

{pricing?.availability === "ready" && pricing.data.length ? (
    {pricing.data.map((item) => (
  • {item.display_name}

    {item.pricing_model || "—"} ·{" "} {item.amount_minor != null ? `${item.amount_minor} ${item.currency || ""}` : "مبلغ از بک‌اند"}

    {item.trial_days != null ? (

    Trial {item.trial_days} روز

    ) : null} {item.tax_class_code ? (

    مالیات: {item.tax_class_code}

    ) : null}
  • ))}
) : ( )}
{bundles?.availability === "ready" && bundles.data.length ? (
{bundles.data.map((b) => ( ))}
) : ( )}
); }