{# Status Badge macro — canonical renderer (cycle 238 → CSS refactor). Single source of truth for every status/enum/state rendering across the template set. 19 import sites; one macro touches all of them. v0.62 CSS refactor: this macro previously emitted Tailwind arbitrary-value classes (`bg-[hsl(var(--success)/0.12)]`) that the Tailwind JIT couldn't see when downstream consumers built their bundles. Now emits semantic class names (`.dz-badge` plus a `data-dz-tone` attribute) styled by `components/badge.css`. Usage: {% from 'macros/status_badge.html' import render_status_badge %} {{ render_status_badge(value="todo") }} {{ render_status_badge(value="done", size="sm") }} {{ render_status_badge(value=item.priority, bordered=true, display="URGENT") }} Arguments: value — raw enum / state / boolean value (e.g. "in_progress"). Resolves to a tone via the `badge_tone` filter; also used for the aria-label fallback. Empty/None renders an em-dash placeholder. tone — optional tone override. One of: "neutral" | "success" | "warning" | "info" | "destructive" size — "sm" | "md" (default "md"). bordered — when true, adds a 1px border in the same tone. display — optional override for the visible text. Defaults to value|humanize. #} {% macro render_status_badge(value, tone=None, size="md", bordered=False, display=None) -%} {%- if value in (None, "", "—") -%} {%- else -%} {%- set _tone = tone or (value | badge_tone) -%} {%- set _label = display if display is not none else (value | humanize) -%} {%- set _size_class = "dz-badge-sm" if size == "sm" else "" -%} {%- set _border_class = "bordered" if bordered else "" -%} {{ _label }} {%- endif -%} {%- endmacro -%}