// Tons de statut centralisés : paires bg/text et couleurs de point, partagées par
// BaseBadge (pastille générique) et SessionStateBadge (état de session live).
// Évite la duplication historique des classes amber/sky/emerald/zinc/red.

export type Tone = 'zinc' | 'emerald' | 'amber' | 'sky' | 'red';

/** Classe fond + texte de la pastille pour chaque ton. */
export const TONE_BADGE: Record<Tone, string> = {
  zinc: 'bg-zinc-800 text-zinc-400',
  emerald: 'bg-emerald-950 text-emerald-400',
  amber: 'bg-amber-950 text-amber-300',
  sky: 'bg-sky-950 text-sky-300',
  red: 'bg-red-950 text-red-400',
};

/** Classe de couleur du point d'état pour chaque ton. */
export const TONE_DOT: Record<Tone, string> = {
  zinc: 'bg-zinc-500',
  emerald: 'bg-emerald-400',
  amber: 'bg-amber-300',
  sky: 'bg-sky-300',
  red: 'bg-red-400',
};

/** Activité fine d'une session live (P3-B) : busy / waiting / idle (null = idle). */
export type SessionActivityTone = 'busy' | 'waiting' | 'idle' | null;

/** Mappe l'activité live d'une session vers un ton : waiting -> amber, busy -> sky, idle -> emerald. */
export function activityTone(activity: SessionActivityTone): Tone {
  if (activity === 'waiting') return 'amber';
  if (activity === 'busy') return 'sky';
  return 'emerald';
}

/** L'état busy/waiting mérite un point pulsé (activité en cours) ; idle reste fixe. */
export function activityPulses(activity: SessionActivityTone): boolean {
  return activity === 'waiting' || activity === 'busy';
}
