{# Profile card region — v0.61.55 (#892). Single-record identity panel: avatar (img or initials fallback) + primary name + secondary meta line + 3-up stat grid + bulleted facts list. Resolved server-side; the template is logic-less and relies on autoescape for safety. The region's `filter:` should narrow to one record (typically `id = current_context`); the runtime takes the first item. Card safety: region emits zero chrome + zero title. The dashboard slot owns both via region_card. v0.62 CSS refactor: inline Tailwind → semantic .dz-profile-* classes (components/regions.css). Stats grid responsive at 40rem container width. #} {% from 'macros/region_wrapper.html' import region_card %} {% call region_card(title) %}
{% if profile_card_data and (profile_card_data.primary or profile_card_data.avatar_url or profile_card_data.initials) %}
{# Identity row — avatar + name/meta #}
{% if profile_card_data.avatar_url %} {{ profile_card_data.primary }} {% elif profile_card_data.initials %} {% endif %}
{% if profile_card_data.primary %}

{{ profile_card_data.primary }}

{% endif %} {% if profile_card_data.secondary %}

{{ profile_card_data.secondary }}

{% endif %}
{# Stats grid — 1 col on mobile, 3 col at 40rem container width + #} {% if profile_card_data.stats and profile_card_data.stats | length > 0 %}
{% for stat in profile_card_data.stats %}
{{ stat.label }}
{{ stat.value or "—" }}
{% endfor %}
{% endif %} {# Facts list — bulleted, soft-wrap #} {% if profile_card_data.facts and profile_card_data.facts | length > 0 %} {% endif %}
{% else %}

{{ empty_message | default("No profile data available.") }}

{% endif %}
{% endcall %}