"use client"; import { cn } from "@app/lib/cn"; import { useSubscriptionStatusContext } from "@app/hooks/useSubscriptionStatusContext"; import { useParams } from "next/navigation"; import Link from "next/link"; import { ClockIcon, ArrowRight } from "lucide-react"; import { ProgressBackwards } from "@app/components/ui/progress-backwards"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@app/components/ui/tooltip"; import { useTranslations } from "next-intl"; const TRIAL_DURATION_DAYS = 10; export default function ShowTrialCard({ isCollapsed }: { isCollapsed?: boolean; }) { const context = useSubscriptionStatusContext(); const params = useParams(); const orgId = params?.orgId as string | undefined; const t = useTranslations(); const trialExpiresAt = context?.trialExpiresAt ?? null; if (trialExpiresAt == null) return null; const now = Date.now(); const remainingMs = trialExpiresAt - now; const remainingDays = Math.max(0, Math.ceil(remainingMs / (1000 * 60 * 60 * 24))); const totalMs = TRIAL_DURATION_DAYS * 24 * 60 * 60 * 1000; const progressPct = Math.min(100, Math.max(0, ((now - (trialExpiresAt - totalMs)) / totalMs) * 100)); // Inverted: full bar at start, drains to empty as trial ends const displayPct = 100 - progressPct; const billingHref = orgId ? `/${orgId}/settings/billing` : "/"; if (isCollapsed) { return (

{remainingDays === 0 ? t("trialExpired") : t("trialDaysLeftShort", { days: remainingDays })}

); } return (

{remainingDays === 0 ? t("trialExpired") : t("trialActive")}

{remainingDays === 0 ? t("trialHasEnded") : t("trialDaysRemaining", { count: remainingDays })}
{t("trialGoToBilling")}
); }