{# Form component — HTMX form submission with loading state, no Alpine #} {% from 'macros/form_field.html' import render_field %} {% if form %}
{# Header #}

{{ form.title }}

{# Form — data-dz-form enables automatic submit button loading state #}
{# Form errors area (swapped by HTMX on validation failure) #}
{% include 'fragments/form_errors.html' %}
{# Fields #} {% for field in form.fields %} {{ render_field(field, form.initial_values) }} {% endfor %} {# Actions — loading state handled by dz.js via htmx events #}
Cancel
{% endif %}