{# 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_field() %} {% include ["partials/sections/form/" + item.get_section_type() + ".html", "partials/sections/form/styled.html"] %} {% elif item.get_field_type() != 'hidden' %} {# ── Plain field ─────────────────────────────────────────── #} {% set field = item %} {% set span_class = _span_map[field.get_col_span()] if field.get_col_span() in _span_map else "" %} {% set current = record | field_value(field.get_key()) if record else '' %} {% set has_error = errors and field.get_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.get_field_type() + ".html", "partials/fields/form/input.html"] %}
{% endif %} {% endmacro %}