Pricing Page

Clean pricing page with pricing tiers, FAQs, and feature comparison using SectionBlocks.

Pricing PageUnsaved changes
import { SectionBlock } from "./components/ui/section-block"
import { CardBlock } from "./components/ui/card-block"
import { FAQBlock } from "./components/ui/faq-block"
import { Button } from "./components/ui/button"
import { Badge } from "./components/ui/badge"
import { Check, Zap, Building2, Rocket } from "lucide-react"

export default function PricingPage() {
  return (
    <div className="min-h-screen">
      {/* Hero Section */}
      <SectionBlock
        padding="xl"
        background="gradient"
        alignment="center"
        titleSize="xl"
        fullBleed
        title="Simple, transparent pricing"
        subtitle="Choose the perfect plan for your business. No hidden fees, cancel anytime."
      />

      {/* Pricing Tiers */}
      <SectionBlock
        padding="lg"
        background="transparent"
        alignment="center"
      >
        <div className="grid gap-6 md:grid-cols-3 max-w-6xl mx-auto">
          {/* Starter Plan */}
          <div className="bg-card border border-border rounded-lg p-6 space-y-6">
            <div className="space-y-2">
              <div className="flex items-center gap-2">
                <Zap className="h-5 w-5 text-primary" />
                <h3 className="text-2xl font-bold">Starter</h3>
              </div>
              <p className="text-sm text-muted-foreground">
                Perfect for small businesses getting started
              </p>
            </div>

            <div className="space-y-1">
              <div className="flex items-baseline gap-1">
                <span className="text-4xl font-bold">$49</span>
                <span className="text-muted-foreground">/month</span>
              </div>
              <p className="text-xs text-muted-foreground">Billed monthly</p>
            </div>

            <Button className="w-full" variant="outline">
              Get Started
            </Button>

            <div className="space-y-3 pt-4 border-t border-border">
              <p className="text-sm font-semibold">Includes:</p>
              <ul className="space-y-2">
                {[
                  "Up to 3 sites",
                  "50 devices",
                  "Real-time monitoring",
                  "Basic analytics",
                  "Email support",
                  "7-day data retention",
                ].map((feature, i) => (
                  <li key={i} className="flex items-start gap-2 text-sm">
                    <Check className="h-4 w-4 text-primary mt-0.5 flex-shrink-0" />
                    <span>{feature}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

          {/* Professional Plan */}
          <div className="bg-primary text-primary-foreground border-2 border-primary rounded-lg p-6 space-y-6 relative shadow-lg">
            <Badge className="absolute -top-3 left-1/2 -translate-x-1/2 bg-accent text-accent-foreground">
              Most Popular
            </Badge>

            <div className="space-y-2">
              <div className="flex items-center gap-2">
                <Building2 className="h-5 w-5" />
                <h3 className="text-2xl font-bold">Professional</h3>
              </div>
              <p className="text-sm opacity-90">
                For growing businesses with multiple sites
              </p>
            </div>

            <div className="space-y-1">
              <div className="flex items-baseline gap-1">
                <span className="text-4xl font-bold">$149</span>
                <span className="opacity-90">/month</span>
              </div>
              <p className="text-xs opacity-75">Billed monthly or $1,428/year</p>
            </div>

            <Button className="w-full" variant="secondary">
              Start Free Trial
            </Button>

            <div className="space-y-3 pt-4 border-t border-primary-foreground/20">
              <p className="text-sm font-semibold">Everything in Starter, plus:</p>
              <ul className="space-y-2">
                {[
                  "Up to 20 sites",
                  "Unlimited devices",
                  "Advanced analytics",
                  "Custom reports",
                  "Priority support",
                  "90-day data retention",
                  "API access",
                  "Team collaboration",
                ].map((feature, i) => (
                  <li key={i} className="flex items-start gap-2 text-sm">
                    <Check className="h-4 w-4 mt-0.5 flex-shrink-0" />
                    <span>{feature}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>

          {/* Enterprise Plan */}
          <div className="bg-card border border-border rounded-lg p-6 space-y-6">
            <div className="space-y-2">
              <div className="flex items-center gap-2">
                <Rocket className="h-5 w-5 text-primary" />
                <h3 className="text-2xl font-bold">Enterprise</h3>
              </div>
              <p className="text-sm text-muted-foreground">
                For large organizations with custom needs
              </p>
            </div>

            <div className="space-y-1">
              <div className="text-4xl font-bold">Custom</div>
              <p className="text-xs text-muted-foreground">Tailored to your requirements</p>
            </div>

            <Button className="w-full" variant="default">
              Contact Sales
            </Button>

            <div className="space-y-3 pt-4 border-t border-border">
              <p className="text-sm font-semibold">Everything in Professional, plus:</p>
              <ul className="space-y-2">
                {[
                  "Unlimited sites",
                  "Unlimited devices",
                  "Custom integrations",
                  "Dedicated support",
                  "SLA guarantees",
                  "Unlimited data retention",
                  "White-label options",
                  "Custom training",
                  "On-premise deployment",
                ].map((feature, i) => (
                  <li key={i} className="flex items-start gap-2 text-sm">
                    <Check className="h-4 w-4 text-primary mt-0.5 flex-shrink-0" />
                    <span>{feature}</span>
                  </li>
                ))}
              </ul>
            </div>
          </div>
        </div>
      </SectionBlock>

      {/* Feature Comparison */}
      <SectionBlock
        padding="lg"
        background="muted"
        alignment="center"
        title="Compare plans"
        subtitle="Find the right fit for your organization"
      >
        <div className="max-w-4xl mx-auto overflow-x-auto">
          <table className="w-full border-collapse">
            <thead>
              <tr className="border-b border-border">
                <th className="text-left py-4 px-4 font-semibold">Feature</th>
                <th className="text-center py-4 px-4 font-semibold">Starter</th>
                <th className="text-center py-4 px-4 font-semibold bg-primary/5">Professional</th>
                <th className="text-center py-4 px-4 font-semibold">Enterprise</th>
              </tr>
            </thead>
            <tbody>
              {[
                { feature: "Sites", starter: "3", pro: "20", enterprise: "Unlimited" },
                { feature: "Devices", starter: "50", pro: "Unlimited", enterprise: "Unlimited" },
                { feature: "Data Retention", starter: "7 days", pro: "90 days", enterprise: "Unlimited" },
                { feature: "API Access", starter: "—", pro: "✓", enterprise: "✓" },
                { feature: "Custom Reports", starter: "—", pro: "✓", enterprise: "✓" },
                { feature: "Priority Support", starter: "—", pro: "✓", enterprise: "✓" },
                { feature: "SLA", starter: "—", pro: "—", enterprise: "99.9%" },
                { feature: "White-label", starter: "—", pro: "—", enterprise: "✓" },
              ].map((row, i) => (
                <tr key={i} className="border-b border-border">
                  <td className="py-3 px-4 text-sm">{row.feature}</td>
                  <td className="py-3 px-4 text-sm text-center text-muted-foreground">{row.starter}</td>
                  <td className="py-3 px-4 text-sm text-center bg-primary/5 font-medium">{row.pro}</td>
                  <td className="py-3 px-4 text-sm text-center text-muted-foreground">{row.enterprise}</td>
                </tr>
              ))}
            </tbody>
          </table>
        </div>
      </SectionBlock>

      {/* FAQs */}
      <SectionBlock
        padding="lg"
        background="transparent"
        alignment="center"
        title="Frequently asked questions"
        subtitle="Everything you need to know about our pricing"
      >
        <FAQBlock
          maxWidth="narrow"
          items={[
            {
              question: "Can I change plans later?",
              answer: "Yes, you can upgrade or downgrade your plan at any time. Changes take effect immediately, and we'll prorate any billing adjustments.",
            },
            {
              question: "What payment methods do you accept?",
              answer: "We accept all major credit cards (Visa, MasterCard, American Express) and bank transfers for Enterprise plans. All payments are processed securely through Stripe.",
            },
            {
              question: "Is there a free trial?",
              answer: "Yes! We offer a 14-day free trial on all Professional and Enterprise plans. No credit card required to start.",
            },
            {
              question: "What happens to my data if I cancel?",
              answer: "You can export all your data before canceling. We retain your data for 30 days after cancellation in case you change your mind, then it's permanently deleted.",
            },
            {
              question: "Do you offer discounts for annual billing?",
              answer: "Yes! Save 20% by paying annually on Professional and Enterprise plans. That's like getting 2+ months free.",
            },
            {
              question: "Can I add more sites or devices to my plan?",
              answer: "For Starter and Professional plans, you can upgrade to the next tier. Enterprise customers can add sites and devices with custom pricing.",
            },
          ]}
        />
      </SectionBlock>

      {/* CTA Section */}
      <SectionBlock
        padding="xl"
        background="primary"
        alignment="center"
        fullBleed
        title="Start saving on energy costs today"
        subtitle="Join thousands of businesses optimizing their energy management"
        cta1={{ text: "Start Free Trial", variant: "secondary", href: "#" }}
        cta2={{ text: "Contact Sales", variant: "outline", href: "#" }}
      />
    </div>
  )
}