{# Shared askama macros. Import into a template with `{% import "_macros.html" as ui %}`, then call e.g. `{% call ui::icon("dashboard") %}{% endcall %}` (askama 0.16 requires the closing `endcall` even when the macro takes no caller body). #} {# Render an embedded Lucide icon by its sprite id (see `src/web/icons.rs`). Decorative by default: aria-hidden + focusable="false" keep it out of the accessibility tree and tab order. Pair with adjacent text or an aria-label on the parent for meaning. #} {# `width`/`height="1em"` are set as attributes (not only via .sgt-icon CSS) so the icon can never balloon to the SVG default 300×150 if the stylesheet is missing or stale (e.g. an immutable-cached app.css from before this rule existed). #} {% macro icon(name) -%} {%- endmacro %}