"use client" import { useState } from "react" import Link from "next/link" import { motion } from "framer-motion" import { Check, X, Zap, ShieldCheck } from "lucide-react" import { cn } from "@/lib/utils" const PLANS = [ { key: "starter", name: "Starter", monthlyPrice: 0, description: "For landlords just getting started.", highlight: false, cta: "Get started free", ctaHref: "/signup", features: ["1 property", "Up to 3 tenants", "100 MB storage", "Rent tracking", "Maintenance portal", "Lease tracking", "Tenant portal"], }, { key: "pro", name: "Pro", monthlyPrice: 29, description: "For active landlords growing their portfolio.", highlight: true, badge: "Most popular", cta: "Start Pro", ctaHref: "/signup", features: ["10 properties", "Unlimited tenants", "5 GB storage", "50 AI calls/mo", "Email reminders", "Stripe payment links", "Lease expiry alerts", "CSV export"], }, { key: "landlord", name: "Landlord", monthlyPrice: 59, description: "For serious portfolios at scale.", highlight: false, cta: "Start Landlord", ctaHref: "/signup", features: ["Unlimited properties", "Unlimited tenants", "25 GB storage", "200 AI calls/mo", "Team access", "White-label portal", "Priority support"], }, { key: "lifetime", name: "Lifetime", monthlyPrice: null, fixedPrice: 199, description: "Pay once, own it forever.", highlight: false, badge: "Best value", cta: "Get lifetime access", ctaHref: "/signup", features: ["Everything in Landlord", "No recurring fees — ever", "All future updates", "White-label portal", "Team access", "25 GB storage"], }, ] const COMPARISON = [ { feature: "Properties", starter: "1", pro: "10", landlord: "Unlimited", lifetime: "Unlimited" }, { feature: "Tenants", starter: "3", pro: "Unlimited", landlord: "Unlimited", lifetime: "Unlimited" }, { feature: "Storage", starter: "100 MB", pro: "5 GB", landlord: "25 GB", lifetime: "25 GB" }, { feature: "AI calls / month", starter: false, pro: "50", landlord: "200", lifetime: "200" }, { feature: "Email reminders", starter: false, pro: true, landlord: true, lifetime: true }, { feature: "Stripe payment links", starter: false, pro: true, landlord: true, lifetime: true }, { feature: "Team access", starter: false, pro: false, landlord: true, lifetime: true }, { feature: "White-label portal", starter: false, pro: false, landlord: true, lifetime: true }, { feature: "CSV export", starter: true, pro: true, landlord: true, lifetime: true }, { feature: "Lease expiry alerts", starter: true, pro: true, landlord: true, lifetime: true }, ] function Cell({ val }: { val: string | boolean }) { if (val === true) return if (val === false) return return {val} } export function PricingSection() { const [annual, setAnnual] = useState(false) const DISCOUNT = 0.8 return (
{/* Section background */}
{/* Header */}

Pricing

Simple, honest pricing

Start free, upgrade when you grow. No per-unit fees, ever.

{/* Toggle */}
{/* Plan cards */}
{PLANS.map((plan, i) => { const isLifetime = plan.fixedPrice !== undefined const displayPrice = isLifetime ? `$${plan.fixedPrice}` : plan.monthlyPrice === 0 ? "Free" : annual ? `$${Math.round(plan.monthlyPrice! * DISCOUNT * 12)}` : `$${plan.monthlyPrice}` const interval = isLifetime ? " one-time" : plan.monthlyPrice === 0 ? "" : annual ? "/yr" : "/mo" return ( {plan.badge && (
{plan.badge}
)} {/* Plan name + price */}

{plan.name}

{displayPrice} {interval && {interval}}
{annual && !isLifetime && plan.monthlyPrice! > 0 && (

Saves ${Math.round(plan.monthlyPrice! * 12 * 0.2)}/year

)}

{plan.description}

{/* CTA */} {plan.cta} {/* Features */}
    {plan.features.map((f) => (
  • {f}
  • ))}
) })}
{/* Money-back guarantee */} 30-day money-back guarantee on all paid plans. No questions asked. {/* Comparison table */}

Full feature comparison

{[ { name: "Starter", highlight: false }, { name: "Pro", highlight: true }, { name: "Landlord", highlight: false }, { name: "Lifetime", highlight: false }, ].map((h) => ( ))} {COMPARISON.map((row, i) => ( ))}
Feature {h.name}
{row.feature}
) }