{#-
Class Properties Component

Renders class properties with safe error boundaries.
Handles property signatures and descriptions safely.
-#}

{% from 'macros/safe_macros.md.jinja2' import safe_section, safe_render, safe_for, rubric_shell %}
{% from 'macros/code_blocks.md.jinja2' import signature_block %}

{% set properties = item.children | selectattr('metadata.is_property', 'equalto', true) | list %}

{% if properties %}
{% call safe_section("class_properties") %}
{% call rubric_shell() %}
:::{rubric} Properties
:class: rubric-properties
:::
{% endcall %}

{% call(prop_item) safe_for(properties, "*No properties found.*") %}
{% call safe_render("property", prop_item) %}

#### `{{ prop_item.name }}` @property

{{ signature_block(prop_item.metadata.signature | default(''), 'property') }}

{%- if prop_item.description -%}
{{- prop_item.description -}}

{%- else -%}
*No property description provided.*

{%- endif -%}

{% endcall %}
{% endcall %}
{% endcall %}
{% endif %}
