{# Cart contents, swapped in via htmx on quantity change / removal so the page never does a full reload. Rendered inside
in cart.html and returned on its own by /cart/update and /cart/remove. #} {% import "macros/ui.html" as ui %} {% if items | length > 0 %}
{{ ui::th(label=t(key="product", lang=lang | default(value='sk'))) }} {{ ui::th(label=t(key="price", lang=lang | default(value='sk'))) }} {{ ui::th(label=t(key="quantity", lang=lang | default(value='sk'))) }} {{ ui::th(label=t(key="cart-total", lang=lang | default(value='sk')), align="text-right") }} {{ ui::th(label="") }} {% for item in items %} {% endfor %}
{{ item.name }} {{ item.price }} {{ item.currency }} {# Changing the quantity posts via htmx (custom `cartchange` event) and swaps only #cart-body. Dropping to 0 asks for confirmation first, reverting to the previous quantity if the customer cancels. #}
{{ item.line_total }} {{ item.currency }}
{{ ui::button(variant="ghost-danger", label=t(key="cart-remove", lang=lang | default(value='sk')), type="submit", size="px-2 py-1 text-xs") }}
{{ t(key="cart-total", lang=lang | default(value='sk')) }} {{ total }} {{ currency }}
{{ ui::button(variant="outline-secondary", label=t(key="cart-continue", lang=lang | default(value='sk')), href="/shop") }} {{ ui::button(label=t(key="cart-checkout", lang=lang | default(value='sk')), href="/checkout", size="px-5 py-2 text-sm", attrs='hx-boost="false"') }}
{% else %}

{{ t(key="cart-empty", lang=lang | default(value='sk')) }}

{{ ui::button(label=t(key="cart-continue", lang=lang | default(value='sk')), href="/shop", extra="mt-4") }}
{% endif %}