{# Inbox list partial — the dropcards plus an optional ``Load more`` button. Used in two places: 1. Inline from ``inbox.html`` for the first render (full page). 2. As the standalone HTMX response when the user clicks ``Load more``; the button's ``hx-swap="outerHTML"`` + ``hx-target="this"`` means the server-returned fragment (next page of dropcards + the next button, or just dropcards on the final page) replaces the clicked button in place. New cards appear before the new button — scroll position is preserved naturally because we never touch existing DOM above. Required context: * ``drops`` — iterable of Drop ORM rows for this page * ``next_cursor`` — opaque token, or ``None`` when this is the last page * ``state``, ``source``, ``q`` — preserved on the ``Load more`` URL so pagination stays scoped to the active filter #} {% from "_inbox_macros.html" import dropcard %} {% for drop in drops %} {{ dropcard(drop, drop.created_at|time_ago) }} {% endfor %} {% if next_cursor %} {%- set parts = ["cursor=" ~ next_cursor] -%} {%- if state and state != "all" -%}{%- set _ = parts.append("state=" ~ state) -%}{%- endif -%} {%- if source -%}{%- set _ = parts.append("source=" ~ source) -%}{%- endif -%} {%- if q -%}{%- set _ = parts.append("q=" ~ q) -%}{%- endif -%} {% endif %}