// src/components/billing/quota-notice.tsx — inline quota-exceeded feedback.
// Renders the localized Quota message for a QuotaExceeded payload returned by
// a server action, plus the "View plans" upgrade link to /settings/billing.
"use client";

import Link from "next/link";
import { useTranslations } from "next-intl";
import type { QuotaExceeded } from "@/lib/billing/quotas";

export function QuotaNotice({
  quota,
  kind = "limit",
  href,
}: {
  quota: QuotaExceeded;
  /** "import" → remaining-rows message; "limit" → per-resource message. */
  kind?: "limit" | "import";
  /**
   * Destination du lien de mise à niveau. Le défaut (`/settings/billing`) vaut
   * partout DANS le groupe (app) ; depuis le parcours d'entrée, il reboucle —
   * le layout (app) redirige vers /onboarding tant que les étapes requises
   * manquent, donc « Voir les forfaits » y ramènerait à l'étape 1 sans un mot.
   * Les appelants hors (app) passent `/onboarding/defer?to=…`, qui pose le
   * report avant de rediriger.
   */
  href?: string;
}) {
  const t = useTranslations("Quota");
  const message =
    kind === "import"
      ? t("importTooLarge", { remaining: quota.remaining })
      : quota.resource === "projects" ||
          quota.resource === "keywords" ||
          quota.resource === "seats" ||
          quota.resource === "backlinkRows"
        ? t(quota.resource, { limit: quota.limit })
        : t("importTooLarge", { remaining: quota.remaining });
  const linkClass = "font-medium underline underline-offset-4";
  return (
    <p className="text-destructive text-sm" role="alert">
      {message}{" "}
      {/* Ancre NUE quand la destination est fournie, jamais un <Link> : les
          destinations passées de l'extérieur visent la route de report, un GET
          à effet de bord (il pose le cookie). Le prefetch d'un <Link> le
          déclencherait au simple survol — le report serait posé sans que
          personne n'ait cliqué. Le cas par défaut, lui, reste une navigation
          client normale. */}
      {href ? (
        <a href={href} className={linkClass}>
          {t("upgradeCta")}
        </a>
      ) : (
        <Link href="/settings/billing" className={linkClass}>
          {t("upgradeCta")}
        </Link>
      )}
    </p>
  );
}
