{# Coffee House Data Table — Responsive table wrapper with zebra striping and empty state. Usage: {% set table_headers = ["Name", "Email", "Role"] %} {% set table_empty_message = "No users found" %} {% set table_rows = users %} {% include "components/data_table.html" %} Or use as a wrapper: {% call(slot) data_table_wrap(headers=["Name","Role"], empty=not users, empty_msg="No users") %} {% for u in users %} {{ u.name }}{{ u.role }} {% endfor %} {% endcall %} Expected context (simple mode): - table_headers: list[str] — column headers - table_empty: bool — whether to show empty state - table_empty_message: str (optional, default: "No data found") - table_empty_cta_label: str (optional) — CTA button text - table_empty_cta_href: str (optional) — CTA button link #}
{% if table_headers is defined and table_headers %} {% for header in table_headers %} {% endfor %} {% endif %} {% if table_empty is defined and table_empty %} {% else %} {% block table_body %}{% endblock %} {% endif %}
{{ header }}

{{ table_empty_message | default("No data found") }}

{% if table_empty_cta_label is defined and table_empty_cta_label %} {{ table_empty_cta_label }} {% endif %}