import { Check, ChevronRight } from "lucide-react"; import { PlusSigns } from "../icons/plus-signs"; import { Button } from "../ui/button"; import { cn } from "@/lib/utils"; type PricingTier = { name: string; price: string; description: string; features: string[]; cta: { text: string; href: string; }; }; const ITEMS: PricingTier[] = [ { name: "STARTER", price: "$0", description: "Free for everyone", features: ["Unlimited members", "250 transactions", "No support"], cta: { text: "Start for free", href: "/signup", }, }, { name: "BASIC", price: "$29.99", description: "per user per month", features: [ "All free plan features and...", "Mainline AI", "Unlimited teams", ], cta: { text: "7 days free", href: "/signup", }, }, { name: "ENTERPRISE", price: "$ENT", description: "Custom pricing", features: [ "All basic plan features and...", "Advanced security controls", "Migration support", ], cta: { text: "Book a demo", href: "/contact", }, }, ]; const PricingCards = () => { return (

Pricing

Use Charter for free with your whole team. Upgrade to enable enhanced features.

{/* Background and layout wrapper */}
{ITEMS.map((tier, index) => ( ))}
); }; export default PricingCards; function PricingCard({ tier, isHighlighted, }: { tier: PricingTier; isHighlighted: boolean; }) { const styles = { card: cn( "flex flex-col gap-6 rounded-xl p-6 sm:rounded-2xl md:rounded-none lg:p-8", // Mobile styles isHighlighted ? "max-md:from-primary-900 max-md:to-primary/90 max-md:bg-linear-to-r" : "bg-background max-md:border", // Desktop styles "md:bg-transparent", ), title: cn( "font-mono text-sm tracking-widest", // Mobile styles isHighlighted ? "text-background/70" : "text-foreground/70", // Desktop styles "md:text-background/70", ), price: cn( "text-5xl font-semibold tracking-tight", // Mobile styles isHighlighted ? "text-background" : "text-foreground", // Desktop styles "md:text-background", ), description: cn( "mt-2 text-xl font-medium", // Mobile styles isHighlighted ? "text-background/70" : "text-foreground/70", // Desktop styles "md:text-background/70", ), features: cn( "space-y-3 text-sm", // Mobile styles isHighlighted ? "text-background/70" : "text-foreground/70", // Desktop styles "md:text-background/70", ), button: cn( "group border-foreground/20 relative w-full", // inset shadow "after:from-border after:via-border after:absolute after:inset-0 after:bg-linear-to-t after:to-transparent after:content-[''] after:group-hover:opacity-100", // Desktop styles "md:border-background/40 md:text-background md:bg-transparent", isHighlighted && "md:bg-background md:text-primary hover:md:bg-background/90", ), }; return (

{tier.name}

{tier.price}

{tier.description}

); }