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

{#- 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 -%}

<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,
    level: heading.level,
    size: heading.size,
    sizes: ["m", "l", "xl"],
    className: classNamesHeading,
    classPrefix: classNamesHeading ~ "--",
    classes: heading.classes,
    attributes: heading.attributes
  }) | trim | indent(2) }}
  {% if caller or params.html or params.text %}
  <div class="nhsuk-panel__body">
  {% if caller %}
    {{- caller() }}
  {% elif params.html %}
    {{ params.html | safe | trim | indent(4) }}
  {% elif params.text %}
    {{ params.text }}
  {% endif %}
  </div>
  {% endif %}
</div>
