{% from "nhsuk/macros/attributes.njk" import nhsukAttributes %}
{% from "../badge/large/macro.njk" import nhsappBadgeLarge %}
{% from "../../styles/icon/macro.njk" import nhsappIcon %}

{# Safe defaults for nested objects #}
{% set above = params.aboveContent if params.aboveContent is defined else {} %}
{% set footer = params.footer if params.footer is defined else {} %}
{% set badge = params.badgeLarge if params.badgeLarge is defined else {} %}
{% set badgeCount = badge.count if badge.count is defined else 0 %}
{% set hasBadgeLarge = badgeCount > 0 %}

{% set hasMedia = params.img is defined and params.img.src is defined %}
{% set imgAlt = params.img.alt if params.img.alt is defined else '' %}

{# Wrapper tag #}
{% set isListItem = params.isListItem if params.isListItem is defined else false %}
{% set wrapperTag = 'li' if isListItem else 'div' %}

<{{ wrapperTag }} {%- if params.id %} id="{{ params.id }}"{% endif %} class="nhsapp-card {{ 'nhsapp-card--with-media' if hasMedia }} {{ params.classes if params.classes }}" {{- nhsukAttributes(params.attributes) }}>

  {% if hasMedia %}
  <div class="nhsapp-card__media">
    <img class="nhsapp-card__img" src="{{ params.img.src }}" alt="{{ params.img.alt }}">
  </div>
  {% endif %}
  
  <div class="nhsapp-card__container {{ params.containerClasses if params.containerClasses }}">
    <div class="nhsapp-card__content">
      
      {%- if above.html -%}
        <div class="nhsapp-card__above">
          {{ above.html | safe }}
        </div>
      {%- endif -%}

      {%- if params.href -%}
        <a href="{{ params.href }}"
           class="nhsapp-card__link nhsuk-link--no-visited-state {{ params.titleClasses if params.titleClasses }}"
           {%- if params.linkAriaLabel %} aria-label="{{ params.linkAriaLabel }}"{% endif %}>
          {{ params.titleHtml | safe if params.titleHtml else params.title }}
        </a>
      {%- else -%}
        {%- if params.headingLevel -%}
          <h{{ params.headingLevel }} class="nhsapp-card__title {{ params.titleClasses if params.titleClasses }}">
            {{ params.titleHtml | safe if params.titleHtml else params.title }}
          </h{{ params.headingLevel }}>
        {%- else -%}
          <p class="nhsapp-card__title {{ params.titleClasses if params.titleClasses }}">{{ params.titleHtml | safe if params.titleHtml else params.title }}</p>
        {%- endif -%}
      {%- endif -%}

      {% if params.description %}
        <div class="nhsapp-card__below">
          <p class="nhsapp-card__description {{ params.descriptionClasses if params.descriptionClasses }}">{{ params.description }}</p>
        </div>
      {% elif params.descriptionHtml  %}
        {{ params.descriptionHtml | safe }}
      {% endif %}
    </div>

    {% if hasBadgeLarge %}
      {{ nhsappBadgeLarge({
        count: badgeCount,
        label: badge.label if badge.label is defined,
        id: badge.id if badge.id is defined,
        classes: badge.classes if badge.classes is defined,
        attributes: badge.attributes if badge.attributes is defined
      }) }}
    {% endif %}

    {%- if params.href -%}
      {{ nhsappIcon('chevronRight') }}
    {%- endif -%}
  </div>

  {%- if footer.html -%}
    <div class="nhsapp-card__footer">
      {{ footer.html | safe }}
    </div>
  {%- endif -%}
</{{ wrapperTag }}>
