{% extends 'base.html.twig' %} {% block title %}{% if mode == 'category' %}{{ category.name }} · {% endif %}Rechercher · LivreComment{% endblock %} {% block body_class %}page-search{% endblock %} {% block body %} {# Mode "subcategories" : breadcrumb retour vers /search #} {% if mode == 'category' %} Recherche

{{ category.name }}

{% if category.personalized ?? false %}

Des sélections faites pour toi, basées sur tes lectures.

{% endif %} {% else %}

Trouve un livre, un auteur, un ami

{% endif %} {% set scope_type = type|default('books') %} {# Mode 1 : grille des catégories principales #} {% if mode == 'categories' %}

Parcourir

{% for slug, cat in categories %} {% if cat.personalized ?? false %} Personnalisé {% endif %} {{ cat.name }} {% if cat.personalized ?? false %} {% elseif cat.cover ?? false %} {% endif %} {% endfor %}
{% endif %} {# Mode 2 : livres de la catégorie (BDD d'abord, puis « plus » par auteurs). Liste unifiée de ProviderBookResult rendue comme les résultats de recherche. #} {% if mode == 'category' %} {% if books|default([])|length > 0 %} {# « Voir plus » : le frame contient le bouton ; au clic il est remplacé (Turbo) par les livres restants du pool, qui s'ajoutent en dessous. Sans JS/Turbo, le lien mène à la même page avec les items rendus dans le frame -> dégradation propre. #} {% if has_more|default(false) %} {% if show_more_items|default(false) %} {% else %}
Voir plus
{% endif %}
{% endif %} {% else %}

Rien dans cette catégorie pour l'instant

Le catalogue s'enrichit. Essaie la recherche ci-dessus.

{% endif %} {% endif %} {# Mode "Pour vous" : recommandations content-based via ForYouService. Rendu via _provider_hit (mêmes cartes que le mode category). #} {% if mode == 'foryou' %}

Pour vous

D'après tes genres, tes auteurs et tes lectures notées.

{% if recommendations|length > 0 %} {% else %}

Pas encore de reco

Note quelques livres ou choisis des genres et auteurs pour qu'on affine tes recommandations.

{% endif %}
{% endif %} {# Mode 3 : résultats de recherche, wrappés dans un . Le type (Livres/Auteurs/Lecteurs) se choisit via le segmented control du formulaire ci-dessus (controller Stimulus search-type), AVANT de taper : on tape directement le bon backend. Branchement par type : - books : pipeline BookSearchService (GB + OL + cascade ISBN) - authors : Authors en BDD (LIKE name) - users : Users en BDD (LIKE username + displayName) #} {% if mode == 'results' %} {% set active_type = type|default('books') %} {# Les hits portent `data-turbo-frame="_top"` pour sortir du frame quand ils mènent à une fiche (/livres/{ulid}, /auteurs/..., /profil/{handle}). #} {% if active_type == 'books' %} {% if hits|default([])|length > 0 %} {% else %}

Aucun livre trouvé pour {{ query }}.
Essaie une autre orthographe, ou propose-le-nous.

{% endif %} {% elseif active_type == 'authors' %} {% if author_hits|default([])|length > 0 %} {% else %}

Aucun auteur trouvé pour {{ query }}.

{% endif %} {% elseif active_type == 'users' %} {% if user_hits|default([])|length > 0 %} {% else %}

Aucun lecteur trouvé pour {{ query }}.

{% endif %} {% endif %}
{% endif %} {% endblock %}