Traiter le lot A d'IDEES.md : CSS onglets, pastilles, identité visuelle, couverture cassée, cache couvertures

- A1 : forcer la revalidation HTTP (Cache-Control: no-cache) sur les fichiers statiques,
  pour empêcher un navigateur de garder indéfiniment un CSS/JS périmé quand le service
  worker ne s'active pas.
- A2 : le filtre du catalogue (statut, type de document) reprend les mêmes pastilles
  colorées que les cartes (Libelles.ClasseStatut / nouvelle Libelles.ClasseTypeDocument).
- A3 : remplacement du logo par défaut de Blazor par un pictogramme de livre ouvert
  (favicon, icônes PWA, logo du bandeau, logo mabibli_ynh).
- A4 : une couverture cassée désactive aussi son bouton d'agrandissement.
- A5 : cache IndexedDB des couvertures pour la consultation hors-ligne, sans ralentir
  l'affichage en ligne (mise en cache en tâche de fond). L'allègement (redimensionnement,
  WebP) reste hors scope, à mesurer avant de s'y engager.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
LIMONIER Mathieu
2026-08-20 13:03:14 +02:00
co-authored by Copilot
parent ce58294fd1
commit 5d45eb492e
16 changed files with 318 additions and 74 deletions
+7 -3
View File
@@ -65,7 +65,8 @@
@onclick="() => FiltrerType(null)">Tous</button>
@foreach (var type in Enum.GetValues<TypeDocument>())
{
<button type="button" class="segment @(_type == type ? "segment-actif" : null)"
<button type="button"
class="segment @Libelles.ClasseTypeDocument(type) @(_type == type ? "segment-actif" : null)"
@onclick="() => FiltrerType(type)">@Libelles.TypeDocument(type)</button>
}
</div>
@@ -79,7 +80,8 @@
@onclick="() => FiltrerStatut(null)">Tous</button>
@foreach (var statut in Enum.GetValues<Statut>())
{
<button type="button" class="segment @(_statut == statut ? "segment-actif" : null)"
<button type="button"
class="segment @Libelles.ClasseStatut(statut) @(_statut == statut ? "segment-actif" : null)"
@onclick="() => FiltrerStatut(statut)">@Libelles.Statut(statut)</button>
}
</div>
@@ -150,7 +152,9 @@ else if (_livres is not null)
« Non précisé » n'apprendrait rien et serait sur presque chaque ligne. *@
@if (livre.TypeDocument != TypeDocument.NonPrecise)
{
<span class="etiquette">@Libelles.TypeDocument(livre.TypeDocument)</span>
<span class="etiquette etiquette-type @Libelles.ClasseTypeDocument(livre.TypeDocument)">
@Libelles.TypeDocument(livre.TypeDocument)
</span>
}
@* Personnel : ce que montre cette pastille est MA lecture, pas celle du foyer.