import type { DeltaTone, WeekCountersView } from '@/domain/counters/week'; import { cx } from '@/lib/cx'; const DELTA_TONES: Record = { flat: 'text-ink-1', over: 'bg-warn-soft text-warn-soft-ink', under: 'bg-danger-soft text-danger-soft-ink', none: 'text-ink-3', }; export interface CounterStripProps { counters: WeekCountersView; /** Vrai si le contrat est au forfait jours : pas de comparaison horaire. */ forfaitJours?: boolean; /** Ligne des besoins sans titulaire : il n'y a pas de contrat à comparer. */ unassigned?: boolean; className?: string; } function Cell({ label, value }: { label: string; value: string }) { return ( {label} {value} ); } /** * Les cinq compteurs d'une ligne salarié : contrat, planifié, absences, écart, * dimanches et repos. Rendus depuis `computeWeekCounters`, jamais recalculés * localement. */ export function CounterStrip({ counters, forfaitJours = false, unassigned = false, className, }: CounterStripProps) { // Un besoin non couvert n'a pas de contrat : afficher un écart le compare à // zéro et fait lire « +14 h » comme un dépassement, alors que c'est // simplement le volume à pourvoir. if (unassigned) { return (
À pourvoir {counters.plannedLabel}
); } if (forfaitJours) { return (
Forfait jours
); } return (
· {counters.deltaLabel}
); }