{# Product collection. The grid / list `view` state is provided by the Alpine wrapper in _search.html (it persists across htmx swaps and is shared with the sort + view-toggle row); `_card.html` reads the same `view` to switch its own layout between a vertical card and a horizontal row. #}
{% for product in products %} {% include "shop/_card.html" %} {% endfor %}