import { Button } from "@/components/ui/button";
import Icon from "@/components/ui/icon";
import { cn } from "@/lib/utils";
export interface PricingTier {
name: string;
price: string;
priceAnnual: string;
period: string;
periodAnnual: string;
description: string;
tagline: string;
features: string[];
cta: string;
highlighted: boolean;
}
export function PricingCard({
tier,
billingPeriod,
onCtaClick,
disabled = false,
loading = false,
}: {
tier: PricingTier;
billingPeriod: "monthly" | "annual";
onCtaClick: () => void;
disabled?: boolean;
loading?: boolean;
}) {
return (
{tier.highlighted && (
{tier.tagline}
)}
{tier.name}
{billingPeriod === "annual" ? tier.priceAnnual : tier.price}
{billingPeriod === "annual" ? tier.periodAnnual : tier.period}
{tier.description}
{tier.features.map((feature) => (
-
{feature}
))}
);
}
export const pricingTiers: PricingTier[] = [
{
name: "Starter",
price: "£0",
priceAnnual: "£0",
period: "Free forever",
periodAnnual: "Free forever",
description: "Perfect for side projects and solo developers",
tagline: "For solo devs and small projects",
features: [
"1 organisation (owned or joined)",
"1 project",
"5 sprints",
"100 issues",
"Up to 5 team members",
"Static avatars only",
"Pixel icon style",
"Email support",
],
cta: "Get started free",
highlighted: false,
},
{
name: "Pro",
price: "£11.99",
priceAnnual: "£9.99",
period: "per user/month",
periodAnnual: "per user/month",
description: "For growing teams and professionals",
tagline: "Most Popular",
features: [
"Everything in starter",
"Unlimited organisations",
"Unlimited projects",
"Unlimited sprints",
"Unlimited issues",
"Animated avatars",
"Custom icon styles",
"Feature toggling",
"Advanced time tracking & reports",
"Custom issue statuses",
"Priority email support",
],
cta: "Upgrade to Pro",
highlighted: true,
},
];