{% from "../../macros/attributes.njk" import govukAttributes -%}
{% from "../button/macro.njk" import govukButton -%}

{% set headingLevel = params.headingLevel if params.headingLevel else 1 -%}

{%- set isInterruption = params.classes and ("govuk-panel--interruption" in params.classes) -%}

{#- The Panel component defaults to the Confirmation variant -#}
{%- set defaultModifierClassName = "govuk-panel--confirmation" if not isInterruption -%}

{%- macro _panelAction(action) -%}
  {%- if not action.href or action.type == "button" -%}
    {{ govukButton({
      "text": action.text,
      "type": action.type if action.type else "button",
      "classes": "govuk-button--inverse" + (" " + action.classes if action.classes),
      "href": action.href,
      "attributes": action.attributes
    }) }}
  {%- else -%}
    <a class="govuk-link govuk-link--inverse {%- if action.classes %} {{ action.classes }}{% endif %}" href="{{ action.href }}"
      {{- govukAttributes(action.attributes) }}>
      {{- action.text -}}
    </a>
  {%- endif -%}
{%- endmacro -%}

<div class="govuk-panel
  {%- if defaultModifierClassName %} {{ defaultModifierClassName }}{% endif %}
  {%- if params.classes %} {{ params.classes }}{% endif -%}"
  {{- govukAttributes(params.attributes) }}>
  <h{{ headingLevel }} class="govuk-panel__title">
    {{ params.titleHtml | safe if params.titleHtml else params.titleText }}
  </h{{ headingLevel }}>
  {% if caller or params.html or params.text %}
  <div class="govuk-panel__body">
    {{ caller() if caller else (params.html | safe | trim | indent(4) if params.html else params.text) }}
  </div>
  {% endif %}
  {% if isInterruption and params.actions %}
  {% set actions = params.actions %}
  <div class="govuk-panel__actions
    {%- if actions.classes %} {{ actions.classes }}{% endif -%}"
    {{- govukAttributes(actions.attributes) }}>

    {%- if actions.items.length -%}
    <div class="govuk-button-group">
    {% for action in actions.items %}
      {{ _panelAction(action) | safe | trim | indent(6) }}
    {% endfor %}
    </div>
    {%- endif -%}

  </div>
  {% endif %}
</div>
