{% from "chirpui/badge.html" import badge %}
{% from "chirpui/layout.html" import cluster %}
{#-
Status badges for a documented element.
Field paths verified against Bengal's autodoc extractors:
element_type -> element.element_type (e.g. "function", "class")
deprecated -> element.deprecated (DocElement-level notice string)
is_async -> element.metadata.is_async (Python function flag)
is_property -> element.metadata.is_property
is_classmethod -> element.metadata.is_classmethod
is_staticmethod -> element.metadata.is_staticmethod
required -> element.metadata.required (CLI option / OpenAPI param flag)
Deprecation is a DocElement-level field, not a metadata flag; the page hero
(header.html) reads metadata.is_deprecated for OpenAPI elements, so both
spellings are honored here for safety.
-#}
{% let meta = element?.metadata ?? {} %}
{% let is_deprecated = (element?.deprecated ?? none) or (meta?.is_deprecated ?? false) %}
{% let show_reference_badges = is_deprecated or (meta?.is_async ?? false) or (meta?.is_property ?? false) or (meta?.is_classmethod ?? false) or (meta?.is_staticmethod ?? false) or (meta?.required ?? false) %}
{% if show_reference_badges %}
{% call cluster(gap="xs", cls="chirp-theme-reference-badges") %}
{% if is_deprecated %}{{ badge("deprecated", variant="error") }}{% end %}
{% if meta?.is_async ?? false %}{{ badge("async", variant="info") }}{% end %}
{% if meta?.is_property ?? false %}{{ badge("property", variant="muted") }}{% end %}
{% if meta?.is_classmethod ?? false %}{{ badge("classmethod", variant="muted") }}{% end %}
{% if meta?.is_staticmethod ?? false %}{{ badge("staticmethod", variant="muted") }}{% end %}
{% if meta?.required ?? false %}{{ badge("required", variant="warning") }}{% end %}
{% end %}
{% end %}