import { redirect } from "next/navigation"; import { auth } from "@/app/(auth)/auth"; import { PricingClient } from "@/components/pricing-client"; import { LIMITS, type Tier } from "@/lib/subscription/config"; import { ensureSubscription } from "@/lib/subscription/service"; export const dynamic = "force-dynamic"; export default async function PricingPage({ searchParams, }: { searchParams: Promise<{ upgraded?: string; canceled?: string }>; }) { const session = await auth(); if (!session?.user) { redirect("/api/auth/guest?redirectUrl=%2Fpricing"); } const sub = await ensureSubscription(session.user.id); const params = await searchParams; return (
← Back to chat

Pricing

You are currently on the {sub.tier} tier. {params.upgraded === "1" && ( Welcome to Pro — limits updated. )} {params.canceled === "1" && ( Checkout canceled. )}

); } function Plan({ tier, price, description, currentTier, }: { tier: Tier; price: string; description: string; currentTier: Tier; }) { const tierLimits = LIMITS[tier]; const isCurrent = tier === currentTier; return (
{tier}
{isCurrent && ( Current )}
{price}

{description}

); }