{% extends 'app/base.html.twig' %} {% block title %}Recettes{% endblock %} {% block body %}

Recettes

{{ total }} recette{{ total != 1 ? 's' : '' }}
Nouvelle recette
{# ── Filtres ──────────────────────────────────────────────────────────────── #}
Toutes {% set labels = {'entree': 'Entrée', 'plat': 'Plat', 'accompagnement': 'Accompagnement', 'laitage': 'Laitage', 'dessert': 'Dessert'} %} {% for cat in categories %} {{ labels[cat] ?? cat|capitalize }} {% endfor %}
{% if categorie %}{% endif %}
{# ── Grille ───────────────────────────────────────────────────────────────── #} {% if recettes is empty %}
Aucune recette trouvée
{% else %}
{% for r in recettes %} {% set allergenes = [] %} {% for a in ['gluten','crustaces','oeufs','poisson','arachides','soja','lactose','fruits_coque','celeri','moutarde','sesame','sulfites','lupin','mollusques'] %} {% if attribute(r, 'contient_' ~ a) %} {% set allergenes = allergenes|merge([a|replace({'_': ' '})|capitalize]) %} {% endif %} {% endfor %}
{{ r.nom }}
{% set catColors = {'entree': 'info', 'plat': 'primary', 'accompagnement': 'secondary', 'laitage': 'light', 'dessert': 'warning'} %} {{ labels[r.categorie] ?? (r.categorie ?: '—') }}
{{ r.portions_base }} portion{{ r.portions_base != 1 ? 's' : '' }} de base
{% if allergenes is not empty %}
{{ allergenes|join(', ') }}
{% endif %} {% if r.instructions %}

{{ r.instructions }}

{% endif %}
{% endfor %}
{% endif %} {# ── Modal import du web ──────────────────────────────────────────────────── #} {# Toast confirmation import #}
{% endblock %}