MaBibli 1.0.0

Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts,
scan de code-barres, consultation hors-ligne.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Mathieu Limonier
2026-08-22 22:36:16 +02:00
co-authored by Claude Opus 5
commit 6a6d745af4
207 changed files with 35543 additions and 0 deletions
@@ -0,0 +1,61 @@
<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>
}
@foreach (var theme in Livre.Themes)
{
<span class="etiquette">@theme</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; }
}