import type { MetadataRoute } from "next";
import { locales } from "@/i18n/routing";

const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL || "http://localhost:3001";
const BASE_PATH = process.env.NEXT_PUBLIC_BASE_PATH || "";

// Public, indexable pages (locale-stripped). Auth utility pages (login,
// forgot/reset-password, verify-email) and all clinical routes are excluded.
const PUBLIC_PATHS = [
  "", // landing
  "/signup",
  "/contact",
  "/terms",
  "/privacy-policy",
  "/cookie-policy",
  "/disclaimer",
  "/safety",
  "/refund",
] as const;

export default function sitemap(): MetadataRoute.Sitemap {
  const lastModified = new Date();
  const entries: MetadataRoute.Sitemap = [];

  for (const path of PUBLIC_PATHS) {
    // hreflang alternates so search engines pair the en/es versions.
    const languages: Record<string, string> = {};
    for (const locale of locales) {
      languages[locale] = `${SITE_URL}${BASE_PATH}/${locale}${path}`;
    }
    for (const locale of locales) {
      entries.push({
        url: `${SITE_URL}${BASE_PATH}/${locale}${path}`,
        lastModified,
        changeFrequency: path === "" ? "weekly" : "monthly",
        priority: path === "" ? 1 : 0.6,
        alternates: { languages },
      });
    }
  }

  return entries;
}
