{# Form field macros - renders the appropriate input for each field type #} {# Accessible version: aria-required, aria-invalid, aria-describedby #} {% macro render_field(field, values={}, errors={}) %} {% set value = values.get(field.name, field.default) if values else field.default %} {% set error = errors.get(field.name, "") if errors else "" %} {% set field_id = "field-" ~ field.name %} {% set error_id = "error-" ~ field.name %} {% set hint_id = "hint-" ~ field.name if field.hint is defined and field.hint else "" %} {% set described_by = ([error_id] if error else []) + ([hint_id] if hint_id else []) %}
{{ field.hint }}
{% endif %} {% if field.type == "textarea" %} {% elif field.type == "select" %} {% elif field.type == "date" %} {% elif field.type == "datetime" %} {% elif field.type == "money" %} {# Money widget: major-unit display input + hidden minor-unit value #} {% set minor_val = values.get(field.name ~ '_minor', '') if values else '' %} {% if field.extra.get('currency_fixed', true) %} {# Pinned currency — static prefix symbol, Alpine dzMoney #}{{ error }}
{% endif %}