// Shared client+server utility: deterministic gradient picker for poster/cover fallbacks.

const GRADIENTS: [string, string][] = [
  ["#7C3AED", "#EC4899"],
  ["#22D3EE", "#7C3AED"],
  ["#EC4899", "#F59E0B"],
  ["#10B981", "#22D3EE"],
  ["#7C3AED", "#22D3EE"],
  ["#EF4444", "#7C3AED"],
  ["#F59E0B", "#EC4899"],
  ["#0D1320", "#7C3AED"],
  ["#EC4899", "#22D3EE"],
  ["#22D3EE", "#10B981"],
  ["#7C3AED", "#0D1320"],
  ["#F59E0B", "#EF4444"],
];

export function gradientFor(seed: string): [string, string] {
  let h = 0;
  for (let i = 0; i < seed.length; i++) {
    h = (h * 31 + seed.charCodeAt(i)) >>> 0;
  }
  return GRADIENTS[h % GRADIENTS.length];
}

export function gradientCss(seed: string, angle = 135): string {
  const [a, b] = gradientFor(seed);
  return `linear-gradient(${angle}deg, ${a} 0%, ${b} 100%)`;
}

// Convert latin digits to Persian for display
export function toPersianDigits(input: string | number): string {
  const map = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
  return String(input).replace(/\d/g, (d) => map[Number(d)]);
}

export function formatViews(n: number): string {
  if (n >= 1_000_000) return toPersianDigits((n / 1_000_000).toFixed(1)) + " م";
  if (n >= 1_000) return toPersianDigits((n / 1_000).toFixed(1)) + " هزار";
  return toPersianDigits(n);
}

export function formatDuration(min: number): string {
  const h = Math.floor(min / 60);
  const m = min % 60;
  if (h > 0) return `${toPersianDigits(h)} ساعت و ${toPersianDigits(m)} دقیقه`;
  return `${toPersianDigits(m)} دقیقه`;
}

export function formatToman(n: number): string {
  return toPersianDigits(n.toLocaleString("en-US")) + " تومان";
}
