'use client' import { Plan, PlanFeatures } from '@/types/database' import { formatFeatureValue, formatPrice, FEATURE_LABELS, getPlanBadgeColor } from '@/lib/plans' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card' import { switchPlan } from '@/app/actions/subscription' import { useTransition } from 'react' import { useRouter } from 'next/navigation' interface PlanCardProps { plan: Plan isCurrentPlan: boolean onPlanChange?: () => void } export function PlanCard({ plan, isCurrentPlan, onPlanChange }: PlanCardProps) { const [isPending, startTransition] = useTransition() const router = useRouter() const features = plan.features as PlanFeatures function handleSwitchPlan() { startTransition(async () => { const result = await switchPlan(plan.id) if (result.success) { router.refresh() if (onPlanChange) { onPlanChange() } } }) } // Highlight features to show const displayFeatures: (keyof PlanFeatures)[] = [ 'posts_per_month', 'social_accounts', 'ai_models', 'image_generation', 'automation', ] return ( {isCurrentPlan && (
Piano attuale
)}
{plan.display_name_it}
{formatPrice(plan.price_monthly)} {plan.name === 'free' && 'Perfetto per iniziare'} {plan.name === 'creator' && 'Per creator seri'} {plan.name === 'pro' && 'Per professionisti'}
{isCurrentPlan ? ( ) : ( )}
) }