{# Table rows fragment — no Alpine, column visibility via data-dz-col #} {% if table and table.rows %} {% for item in table.rows %} {% if table.bulk_actions %} {% endif %} {% for col in table.columns %} {% if col.type == "badge" %} {{ item[col.key] | default("") }} {% elif col.type == "bool" %} {{ item[col.key] | bool_icon }} {% elif col.type == "date" %} {{ item[col.key] | dateformat }} {% elif col.type == "currency" %} {{ item[col.key] | currency(col.currency_code or "GBP") }} {% elif col.type == "percentage" %} {{ item[col.key] | default("") }}% {% else %} {{ item[col.key] | default("") | truncate_text }} {% endif %} {% endfor %} {# Row action dropdown — uses DaisyUI details-based dropdown, no JS #} {% endfor %} {% else %} {{ table.empty_message | default("No items found.") if table else "No items found." }} {% endif %}