{# Every sentence comes from the view, in pass_heading and pass_copy; this template writes no words. Each button has a fixed id, because the status area is replaced every second and htmx restores focus only by id. Scan next's id is keyed on the question, not the job row, which can lag it. The row is a wrapping flex row, not Pico's button group, which never wraps. hx-confirm sits on the Abort button only: it is inherited, so on a container every button would confirm. A Finish the question does not offer stays in place, really disabled, with its reason as visible text. No disclosure widget: the swap every second would close it. autofocus moves focus only once, because an unchanged poll is answered 204; the full page leaves it off (page_render). #} {% set button_ids = { "NEXT": "mp-retry" if pass_prompt.wait == "RETRY" else "mp-next", "FINISH": "mp-finish", "RESCAN": "mp-rescan", "ABORT": "mp-abort", "SKIP_BLANKS": "mp-skip", "KEEP_BLANKS": "mp-keep", } %} {% set button_classes = { "FINISH": "outline", "RESCAN": "secondary outline", "ABORT": "secondary", "KEEP_BLANKS": "secondary", } %}

{{ pass_heading }}

{% if pass_copy.alert %}

⚠ {{ pass_copy.alert }}

{% if pass_copy.detail %}

{{ pass_copy.detail }}

{% endif %}

{{ pass_copy.headline }}{% if pass_copy.instruction %} {{ pass_copy.instruction }}{% endif %}

{% else %}

{{ pass_copy.headline }}

{% if pass_copy.instruction %}

{{ pass_copy.instruction }}

{% endif %} {% endif %}
{% for answer, label in pass_copy.buttons %} {% endfor %}
{% if pass_copy.finish_blocked %}{{ pass_copy.finish_blocked }}{% endif %} {% for note in pass_copy.notes %} {{ note }} {% endfor %}