{# Recursive macro for rendering a form item (Field, Section, or Fieldset). Import with context so _span_map, _cols_map, record, errors etc. are available. Section/Fieldset rendering is delegated to partials/sections/form/.html. To add a new section type, create that partial — no changes needed here. Usage: {% from "partials/macros/form_item.html" import render_item with context %} {{ render_item(item) }} #} {% macro render_item(item) %} {% if item.is_section %} {% include ["partials/sections/form/" + item.section_type + ".html", "partials/sections/form/styled.html"] %} {% elif item.field_type != 'hidden' %} {# ── Plain field ─────────────────────────────────────────── #} {% set field = item %} {% set span_class = _span_map[field.col_span] if field.col_span in _span_map else "" %} {% set current = record | field_value(field.key) if record else '' %} {% set has_error = errors and field.key in errors %} {% set base_input = "w-full px-3 py-2 text-sm border rounded-lg focus:outline-none focus:ring-2 focus:border-transparent dark:bg-secondary-700 dark:text-secondary-100 dark:placeholder-secondary-400 " %} {% set input_class = base_input + ("border-red-300 bg-red-50 dark:border-red-600 dark:bg-red-900/20" if has_error else "border-secondary-200 dark:border-secondary-600") %}
{% include ["partials/fields/form/" + field.field_type + ".html", "partials/fields/form/input.html"] %}
{% endif %} {% endmacro %}