Files
flatrender/src/components/sections/Pricing.tsx
T

49 lines
1.7 KiB
TypeScript
Raw Normal View History

"use client";
import { useState } from "react";
import { PricingBillingToggle } from "@/components/sections/PricingBillingToggle";
import { PricingCard } from "@/components/sections/PricingCard";
import { PricingCompareTable } from "@/components/sections/PricingCompareTable";
import { PricingFreeBanner } from "@/components/sections/PricingFreeBanner";
import { PricingSectionShell } from "@/components/sections/PricingBackground";
import { SectionReveal } from "@/components/sections/SectionReveal";
import type { BillingPeriod } from "@/components/sections/pricing-data";
import { PRICING_TIERS } from "@/components/sections/pricing-data";
export interface PricingProps {
className?: string;
}
export function Pricing({ className }: PricingProps) {
const [billing, setBilling] = useState<BillingPeriod>("annual");
return (
<PricingSectionShell className={className}>
<SectionReveal className="text-center">
<h2 className="font-heading text-3xl font-bold tracking-tight text-neutral-900 sm:text-4xl">
Choose your FlatRender plan
</h2>
</SectionReveal>
<SectionReveal className="mt-8">
<PricingFreeBanner />
</SectionReveal>
<SectionReveal className="mt-10 flex justify-center">
<PricingBillingToggle billing={billing} onChange={setBilling} />
</SectionReveal>
<SectionReveal className="mt-10 grid grid-cols-1 gap-6 lg:grid-cols-3 lg:gap-5">
{PRICING_TIERS.map((tier) => (
<PricingCard key={tier.id} tier={tier} billing={billing} />
))}
</SectionReveal>
<SectionReveal className="mt-16">
<PricingCompareTable billing={billing} onBillingChange={setBilling} />
</SectionReveal>
</PricingSectionShell>
);
}