{# ═══════════════════════════════════════════════════ ASOK Admin — Core Macros All icons are inline SVG (no font dependency). ═══════════════════════════════════════════════════ #} {# ── Icons ──────────────────────────────────────────── #} {% macro icon(name, size=16, cls='') %} {% if name == 'dashboard' %} {% elif name == 'table' %} {% elif name == 'plus' %} {% elif name == 'edit' %} {% elif name == 'trash' %} {% elif name == 'search' %} {% elif name == 'log' %} {% elif name == 'logout' %} {% elif name == 'sun' %} {% elif name == 'moon' %} {% elif name == 'link' %} {% elif name == 'globe' %} {% elif name == 'chevron' %} {% elif name == 'check' %} {% elif name == 'x' %} {% elif name == 'history' %} {% elif name == 'upload' %} {% elif name == 'download' %} {% elif name == 'shield' %} {% elif name == 'user' %} {% elif name == 'info' %} {% elif name == 'warn' or name == 'alert' %} {% elif name == 'restore' %} {% elif name == 'menu' %} {% elif name == 'arrow-left' %} {% elif name == 'arrow-right' %} {% elif name == 'folder' %} {% elif name == 'image' %} {% elif name == 'arrow-up' %} {% elif name == 'arrow-down' %} {% elif name == 'file-plus' %} {% elif name == 'file-text' %} {% elif name == 'shield-off' %} {% elif name == 'home' %} {% elif name == 'log-in' %} {% elif name == 'refresh-cw' %} {% elif name == 'alert-triangle' %} {% elif name == 'x-circle' %} {% elif name == 'filter' %} {% elif name == 'copy' %} {% elif name == 'shield-check' %} {% else %} {% endif %} {% endmacro %} {# ── Badge ──────────────────────────────────────────── #} {% macro badge(text, type='info') %} {{ text }} {% endmacro %} {# ── Button ─────────────────────────────────────────── #} {% macro btn(label, variant='default', href=None, icon_name=None, extra_class='', type='button', **attrs) %} {% if href %} {% if icon_name %}{{ icon(icon_name) }}{% endif %} {% if label %}{{ label }}{% endif %} {% else %} {% endif %} {% endmacro %} {# ── Flash message ──────────────────────────────────── #} {% macro flash(msg, type='info', ttl=6000) %}
{% if type == 'success' %}{{ icon('check', 16) }} {% elif type == 'error' %}{{ icon('x', 16) }} {% elif type == 'warning' %}{{ icon('warn', 16) }} {% else %}{{ icon('info', 16) }}{% endif %} {{ msg }}
{% endmacro %} {# ── Form field row (Airy & Clean) ──────────────────── #} {% macro field_row(f, m, item) %} {% set is_cb = 'type="checkbox"' in str(f.input) %}
{% if is_cb %} {% else %} {% if m.is_file and m.file_value %}
{% if m.is_image %} {% endif %}
{{ m.file_value }}
{% endif %} {% if m.is_fk_autocomplete %}
{{ icon('search', 14, 'search-wrap fk') }}
{% elif m.wysiwyg %}
{{ (f.value or '') | safe }}
{% else %} {{ f.input }} {% endif %} {% endif %} {% if f._error %}
{{ icon('warn', 14) }}{{ f._error }}
{% endif %}
{% endmacro %} {# ── Multiple flashes ─────────────────────────────────── #} {% macro flashes() %} {% for f in get_flashed_messages() %} {{ flash(f.message, f.category | default('info')) }} {% endfor %} {% endmacro %}