P0: Status-Badge-Farben semantisch vereinheitlicht

Zentrales status_badge-Makro (status.html): neuheit/neu+abgeschlossen =
emerald, offen = slate, in_bearbeitung/planung = sky, warnung/konflikt/
pruefung = amber mit Warn-Icon, fehler = red, deaktiviert/archiviert =
slate. Angewendet in neuheiten, planung, archiv, dedup, Benutzerliste.
This commit is contained in:
Flo Hartmann
2026-08-26 08:38:56 +00:00
parent 14a4846948
commit b9444289b5
6 changed files with 36 additions and 21 deletions

View File

@@ -28,10 +28,11 @@
<td class="px-4 py-2">{{ b.display_name }}</td>
<td class="px-4 py-2">{{ rollen_anzeige[b.role] or b.role }}</td>
<td class="px-4 py-2">
{% from "status.html" import status_badge %}
{% if b.active %}
<span class="text-emerald-700">aktiv</span>
{{ status_badge("aktiv", "aktiv") }}
{% else %}
<span class="text-red-600">deaktiviert</span>
{{ status_badge("deaktiviert", "deaktiviert") }}
{% endif %}
</td>
<td class="px-4 py-2 text-slate-500">{{ b.created_at.strftime('%d.%m.%Y') if b.created_at else '&ndash;' }}</td>

View File

@@ -0,0 +1,26 @@
{# Einheitliche Status-Badges (semantisches Farbsystem).
Aufruf: {% from "status.html" import status_badge %}
{{ status_badge(eintrag.status) }} oder mit abweichendem Text:
{{ status_badge(eintrag.status, status_anzeige[eintrag.status]) }} #}
{% from "icons.html" import icon_warnung %}
{% macro status_badge(status, text=none, extra="") -%}
{% set farben = {
'neuheit': 'bg-emerald-100 text-emerald-800',
'neu': 'bg-emerald-100 text-emerald-800',
'offen': 'bg-slate-200 text-slate-800',
'in_bearbeitung': 'bg-sky-100 text-sky-800',
'planung': 'bg-sky-100 text-sky-800',
'abgeschlossen': 'bg-emerald-100 text-emerald-800',
'aktiv': 'bg-emerald-100 text-emerald-800',
'warnung': 'bg-amber-100 text-amber-800',
'konflikt': 'bg-amber-100 text-amber-800',
'pruefung': 'bg-amber-100 text-amber-800',
'fehler': 'bg-red-100 text-red-800',
'deaktiviert': 'bg-slate-200 text-slate-600',
'archiviert': 'bg-slate-200 text-slate-600',
} -%}
<span class="inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs whitespace-nowrap {{ farben.get(status, 'bg-slate-100 text-slate-700') }} {{ extra }}">
{%- if status in ('warnung', 'konflikt', 'pruefung') %}{{ icon_warnung("h-3.5 w-3.5") }} {% endif -%}
{{ text if text is not none else status }}
</span>
{%- endmacro %}