{#- chirp-ui: Badge component Small status indicators with semantic variants and optional icons. Usage: from "chirpui/badge.html" import badge badge("Active", variant="success") badge("Grass", color="#78c850") badge("Fire", color="fire", fill="solid") badge("Tag", href="/tags/x") -#} {% def badge(text, variant="primary", appearance="", tone="", icon=none, cls="", color=none, fill="subtle", href=none) %} {# @consumes _card_variant from: card, _surface_variant from: panel, surface — falls back to "" #} {% set _inherited = consume("_card_variant", "") or consume("_surface_variant", "") %} {% set _variant = variant if variant != "primary" else (_inherited if _inherited else variant) %} {% set _appearance = appearance | validate_appearance_block("badge", "") %} {% set _tone = tone | validate_tone_block("badge", "") %} {% set fill = fill | validate_variant(("subtle", "solid"), "subtle") %} {% set resolved = color | resolve_color %} {% set use_variant = ("custom-solid" if (resolved and fill == "solid") else ("custom" if resolved else (_variant | validate_variant_block("badge", "primary")))) %} {% set style_attr = ("--chirpui-badge-color: " ~ resolved ~ ("; --chirpui-badge-text: " ~ (resolved | contrast_text) if fill == "solid" else "")) if resolved else "" %} {% set badge_class = "badge" | bem(variant=use_variant, appearance=_appearance, tone=_tone, cls=cls) %} {% if href %} {% if icon %} {{ icon | icon }} {% end %} {{ text }} {% else %} {% if icon %} {{ icon | icon }} {% end %} {{ text }} {% end %} {% end %}