{# Tables Component Template - Reusable table components for the dashboard #} {# Macro for rendering a data table wrapper #} {% macro data_table(table_id="", class="") %}
{{ caller() }}
{% endmacro %} {# Macro for table header #} {% macro table_header(columns) %} {% for col in columns %} {{ col.label }} {% endfor %} {% endmacro %} {# Macro for sortable table header #} {% macro sortable_header(columns, sort_by=None, sort_dir="asc") %} {% for col in columns %}
{{ col.label }} {% if col.sortable %} {% if sort_by == col.key %} {% if sort_dir == "asc" %} {% else %} {% endif %} {% else %} {% endif %} {% endif %}
{% endfor %} {% endmacro %} {# Macro for status badge cell #} {% macro status_cell(status) %} {{ status }} {% endmacro %} {# Macro for progress bar cell #} {% macro progress_cell(value, max=100, color="blue") %}
{{ value }}%
{% endmacro %} {# Macro for action buttons cell #} {% macro actions_cell(actions) %}
{% for action in actions %} {% endfor %}
{% endmacro %} {# Macro for empty state #} {% macro empty_state(message="No data available", icon="table") %}
{% if icon == 'table' %} {% elif icon == 'search' %} {% endif %}

{{ message }}

{% endmacro %} {# Macro for loading skeleton rows #} {% macro skeleton_rows(columns=5, rows=5) %} {% for _ in range(rows) %} {% for col in range(columns) %}
{% endfor %} {% endfor %} {% endmacro %} {# Macro for pagination #} {% macro pagination(current_page, total_pages, base_url) %}
{% if current_page > 1 %} Previous {% endif %} {% if current_page < total_pages %} Next {% endif %}
{% endmacro %} {# JavaScript for table interactions #} {% macro table_scripts() %} {% endmacro %}