import {
  Heart,
  MapPin,
  Package,
  RefreshCw,
  UserRound,
  type LucideIcon,
} from "lucide-react";

export type AccountNavItem = {
  href: string;
  label: string;
  hint: string;
  icon: LucideIcon;
};

export const accountNav: AccountNavItem[] = [
  {
    href: "/account",
    label: "Mi cuenta",
    hint: "Resumen de tu perfil Club 1976",
    icon: UserRound,
  },
  {
    href: "/account/orders",
    label: "Mis pedidos",
    hint: "Estado, guía y seguir tu envío",
    icon: Package,
  },
  {
    href: "/account/addresses",
    label: "Mis direcciones",
    hint: "Envíos a casa o a la cancha",
    icon: MapPin,
  },
  {
    href: "/account/favorites",
    label: "Mis favoritos",
    hint: "Las prendas que marcaste con ♥",
    icon: Heart,
  },
  {
    href: "/account/returns",
    label: "Cambio y devolución",
    hint: "Plazos y cómo gestionar un cambio",
    icon: RefreshCw,
  },
  {
    href: "/account/info",
    label: "Mi información",
    hint: "Nombre, correo y datos de cuenta",
    icon: UserRound,
  },
];

function capitalizeWord(value: string) {
  const clean = value.trim();
  if (!clean) return "";
  return clean.charAt(0).toUpperCase() + clean.slice(1).toLowerCase();
}

/** Nombre para el saludo: prioriza el de la cuenta; si no, el del correo. */
export function displayFirstName(customer: {
  first_name?: string | null;
  email: string;
}) {
  const first = customer.first_name?.trim();
  if (first) return capitalizeWord(first);

  const local = customer.email.split("@")[0] || "cuenta";
  const fromEmail = local
    .replace(/[0-9]+/g, " ")
    .split(/[._+\-]+/)
    .map((part) => part.trim())
    .find((part) => part.length >= 2);

  return capitalizeWord(fromEmail || "cuenta");
}
