import type { ChecklistState } from '@siop/shared';

/** Progression d'une grille : cochée OU non-applicable = traitée (même
 *  règle que la garde de clôture R2). */
export function progression(items: readonly { state: ChecklistState }[]): {
  faits: number;
  total: number;
  pct: number;
} {
  const total = items.length;
  const faits = items.filter((i) => i.state !== 'PENDING').length;
  return { faits, total, pct: total ? faits / total : 0 };
}

/** Le geste au pouce : appui simple PENDING ⇄ DONE ; le N/A passe par
 *  l'appui long (assumé à l'écran). Depuis NA, un appui revient à DONE. */
export function prochainEtat(actuel: ChecklistState): ChecklistState {
  return actuel === 'PENDING' ? 'DONE' : actuel === 'DONE' ? 'PENDING' : 'DONE';
}
