export interface MonthGridCell {
  date: string | null;
  inMonth: boolean;
}

/**
 * Genera la cuadricula mensual con inicio en lunes (ISO week).
 *
 * @param year  Año completo (ej: 2026).
 * @param month Mes 1-12 (Enero = 1).
 * @returns Array de celdas con longitud multiplo de 7.
 *          Celdas de padding tienen date=null e inMonth=false.
 *          Celdas del mes tienen date="YYYY-MM-DD" e inMonth=true.
 */
export function monthGrid(year: number, month: number): MonthGridCell[] {
  // getDay() devuelve 0=Dom..6=Sab. Convertir a 0=Lun..6=Dom.
  const firstDow = (new Date(year, month - 1, 1).getDay() + 6) % 7;
  const lastDay = new Date(year, month, 0).getDate();

  const cells: MonthGridCell[] = [];

  // Padding inicial
  for (let i = 0; i < firstDow; i++) {
    cells.push({ date: null, inMonth: false });
  }

  // Dias del mes
  for (let d = 1; d <= lastDay; d++) {
    const mm = String(month).padStart(2, "0");
    const dd = String(d).padStart(2, "0");
    cells.push({ date: `${year}-${mm}-${dd}`, inMonth: true });
  }

  // Padding final hasta multiplo de 7
  while (cells.length % 7 !== 0) {
    cells.push({ date: null, inMonth: false });
  }

  return cells;
}
