{% from "nhsuk/components/heading/macro.njk" import heading as nhsukHeading %}
{% from "nhsuk/macros/attributes.njk" import nhsukAttributes %}
{% from "nhsuk/macros/content.njk" import nhsukContent %}

{#- Set variant for this component #}
{%- set variant = params.variant %}

{#- Set classes for this component #}
{%- set classNames = "nhsuk-panel" %}
{%- set classNamesHeading = "nhsuk-panel__heading" %}

{#- Support heading as string (with deprecated options) #}
{%- set heading = params.heading if params.heading is mapping and params.heading is not escaped else {
  text: params.heading if params.heading is string else params.titleText,
  html: params.heading if params.heading is escaped else params.titleHtml,
  level: params.headingLevel,
  size: params.titleSize,
  classes: params.titleClasses
} %}

{%- if variant == "interruption" and (not params.classes or not "nhsuk-panel--interruption" in params.classes) %}
  {%- set classNames = classNames ~ " nhsuk-panel--" ~ variant %}
{%- endif %}

{%- if params.classes %}
  {%- set classNames = classNames ~ " " ~ params.classes %}
{%- endif -%}

{%- set content = {
  text: params.text,
  html: params.html
} -%}

<div class="{{ classNames }}" {%- if params.id %} id="{{ params.id }}"{% endif %} {{- nhsukAttributes(params.attributes) }}>
  {{ nhsukHeading({
    id: heading.id,
    text: heading.text,
    html: heading.html,
    visuallyHiddenText: heading.visuallyHiddenText,
    caption: heading.caption,
    href: heading.href,
    openInNewTab: heading.openInNewTab,
    level: heading.level,
    size: heading.size,
    sizes: ["m", "l", "xl"],
    className: classNamesHeading,
    classPrefix: classNamesHeading ~ "--",
    classes: heading.classes,
    attributes: heading.attributes,
    slots: heading.slots
  }) | trim | indent(2) }}
  {% if caller or content.html or content.text %}
  <div class="nhsuk-panel__body">
  {% if caller %}
    {%- set outerCaller = caller %}
    {%- call nhsukContent(content) %}
      {{- outerCaller() }}
    {% endcall %}
  {% else %}
    {{ nhsukContent(content) | trim | indent(4) }}
  {% endif %}
  </div>
  {% endif %}
</div>
