--- /** * Usage: * */ interface Tier { name: string; priceMonthly: number | null; features: string[]; highlighted?: boolean; ctaLabel: string; ctaHref: string; } interface Props { heading: string; subheading?: string; tiers: Tier[]; } const { heading = "Simple, transparent pricing", subheading = "Choose the plan that fits your agency's procurement needs.", tiers = [ { name: "Starter", priceMonthly: 299, features: [ "Up to 5 active solicitations", "Standard compliance checks", "Email support" ], ctaLabel: "Start free trial", ctaHref: "/pricing#starter" }, { name: "Professional", priceMonthly: 799, features: [ "Unlimited solicitations", "Advanced compliance automation", "Dedicated account manager", "API access" ], highlighted: true, ctaLabel: "Start free trial", ctaHref: "/pricing#professional" }, { name: "Enterprise", priceMonthly: null, features: [ "Everything in Professional", "Custom integrations", "On-premises deployment", "24/7 priority support", "SLA guarantees" ], ctaLabel: "Contact sales", ctaHref: "/contact" } ] } = Astro.props; const currencyFormatter = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 0, maximumFractionDigits: 0 }); function formatPrice(price: number | null): string { if (price === null) return "Contact us"; return currencyFormatter.format(price); } ---

{heading}

{subheading &&

{subheading}

}
{tiers.map((tier) => (
{tier.highlighted && ( Most popular )}

{tier.name}

{tier.priceMonthly !== null && ( {formatPrice(tier.priceMonthly)} )} {tier.priceMonthly !== null && ( /month )} {tier.priceMonthly === null && ( Contact us )}

    {tier.features.map((feature) => (
  • {feature}
  • ))}
{tier.ctaLabel}
))}