@*
    Sélecteur du statut de lecture.

    Le statut est PERSONNEL (CLAUDE.md) : ce que montrent ces boutons est la lecture de la
    personne connectée, pas celle du foyer. « Non commencé » n'est pas une valeur de plus dans
    l'énumération, c'est l'absence de ligne en base — d'où le bouton qui remet la valeur à null.
*@
<div class="segments @(Compact ? "segments-compacts" : null)" role="group" aria-label="Statut de lecture">
    <button type="button"
            class="segment @(Valeur is null ? "segment-actif" : null)"
            disabled="@Desactive"
            @onclick="() => Choisir(null)">
        Non commencé
    </button>

    @foreach (var statut in Statuts)
    {
        <button type="button"
                class="segment @Libelles.ClasseStatut(statut) @(Valeur == statut ? "segment-actif" : null)"
                disabled="@Desactive"
                @onclick="() => Choisir(statut)">
            @Libelles.Statut(statut)
        </button>
    }
</div>

@code {
    private static readonly Statut[] Statuts = Enum.GetValues<Statut>();

    [Parameter] public Statut? Valeur { get; set; }

    [Parameter] public EventCallback<Statut?> ValeurChanged { get; set; }

    [Parameter] public bool Desactive { get; set; }

    [Parameter] public bool Compact { get; set; }

    private Task Choisir(Statut? statut) =>
        statut == Valeur ? Task.CompletedTask : ValeurChanged.InvokeAsync(statut);
}
