{% comment %} The history page's rows, swapped in by the filter controls. Args: notifications, page, has_next, has_previous, selected_* (for the pager's hx-get, which has to carry the current filters forward). {% endcomment %} {% comment %} The page the reader is on, so the container's refresh returns it rather than snapping back to page 1. It lives in this partial because this partial is what gets re-rendered, so the value is always the one just served. {% endcomment %} {% if notifications %} {% if has_previous or has_next %}
{% if has_previous %} {% else %}{% endif %} {% if has_next %} {% else %}{% endif %}
{% endif %} {% else %}
{% include "partials/_nav_icon.html" with name="bell" %}

Nothing here

{% if selected_event_types or selected_read_state %}No notifications match this filter.{% else %}Notifications about your flows, channels and broadcasts will appear here.{% endif %}

{% endif %} {% comment %} No _badge.html include here. This partial is rendered BOTH as an htmx response and inline by list.html on the full-page path, and _badge.html carries `id="notification-badge"` and `id="nav-badge-notifications"` with hx-swap-oob — which on the full page would be a second copy of ids the shell already renders, and an out-of-band swap resolves its target by id. The badge now travels with the write responses instead, where it is unambiguously a response fragment. {% endcomment %}