<div class="carte-livre">
    <Couverture Url="@Livre.CoverUrl" Titre="@Livre.Titre"
                Classe="couverture-petite" Agrandissable="true" />

    <div class="carte-corps">
        <a class="carte-titre" href="@($"livres/{Livre.Id}")">@Livre.Titre</a>

        @if (Livre.Auteurs.Count > 0)
        {
            <p class="carte-auteur">
                @foreach (var (auteur, index) in Livre.Auteurs.Select((a, i) => (a, i)))
                {
                    @(index > 0 ? ", " : "")
                    <a class="lien-auteur" href="@($"?auteur={auteur.Id}")">@auteur.Nom</a>
                    @if (auteur.Role != RoleAuteur.NonPrecise)
                    {
                        <span class="role-auteur"> (@Libelles.RoleAuteur(auteur.Role).ToLowerInvariant())</span>
                    }
                }
            </p>
        }

        <p class="carte-details">
            @if (Livre.Format == Format.Numerique)
            {
                <span class="etiquette">@Libelles.Format(Livre.Format)</span>
            }
            @if (Livre.TypeDocument != TypeDocument.NonPrecise)
            {
                <span class="etiquette etiquette-type @Libelles.ClasseTypeDocument(Livre.TypeDocument)">
                    @Libelles.TypeDocument(Livre.TypeDocument)
                </span>
            }
            @if (Livre.Statut is { } statut)
            {
                <span class="etiquette etiquette-statut @Libelles.ClasseStatut(statut)">
                    @Libelles.Statut(statut)
                </span>
            }
            @if (Livre.PreteA is { } emprunteur)
            {
                <span class="etiquette etiquette-prete">Prêté à @emprunteur</span>
            }
            @if (!string.IsNullOrWhiteSpace(Livre.Editeur))
            {
                <span>@Livre.Editeur</span>
            }
        </p>

        @Actions
    </div>
</div>

@code {
    [Parameter, EditorRequired] public LivreDto Livre { get; set; } = default!;
    [Parameter] public RenderFragment? Actions { get; set; }
}
