{% set SECTION_DEFAULTS = {
  sectionTitleClassName: '',
  tag: 'section',
  title: 'Section title',
  titleTag: 'h2',
  titleClassName: '',
  teaser: '',
  titleButtons: [],
  sectionButtons: [],
  sectionButtonsClassName: '',
  className: '',
  containerClassName: 'container',
  backgroundImage: '',
  backgroundImageSources: [
    { media: '460', size: '460x460' },
    { media: '768', size: '768x768' },
    { media: '992', size: '992x992' },
    { media: '1200', size: '1200x1200' }
  ],
  content: '',
  attrs: {}
} %}

{% macro Section(settings = {}) %}
  {% set settings = merge(SECTION_DEFAULTS, settings) %}

  <{{ settings.tag }} class="section {{ settings.className }}" {{ Helpers.setAttributes(settings.attrs) }}>
    {% call Helpers.templateWrapper(settings.containerClassName) %}
      {% if settings.title or settings.teaser %}
        <div class="section__heading">
          {% if settings.title %}
            <div class="section__title {{ settings.sectionTitleClassName }}">
              {{ Title({
                className: settings.titleClassName,
                tag: settings.titleTag,
                text: settings.title
              }) }}
            </div>
          {% endif %}
          {% if settings.teaser %}
            <div class="section__teaser">
              <p class="text-lg">
                {{ settings.teaser | safe }}
              </p>
            </div>
          {% endif %}
        </div>
      {% endif %}
      {% if settings.content !== false or settings.content !== '' %}
        <div class='section__content'>
          {{ settings.content | safe if settings.content }}
          {{ caller() if caller }}
        </div>
      {% endif %}
      {% if settings.sectionButtons | length %}
        <div class="section__actions {{ settings.sectionButtonsClassName }}">
          {{ RenderButtonsList(settings.sectionButtons) }}
        </div>
      {% endif %}
    {% endcall %}
  </{{ settings.tag }}>
{% endmacro %}

{% set CONTENT_SECTION_DEFAULTS = {
  title: '',
  teaser: '',
  tag: 'div'
} %}

{% macro ContentSection(settings = {}) %}
  {% set content %}
    {{ caller() | trim }}
  {% endset %}

  {% set settings = merge(CONTENT_SECTION_DEFAULTS, settings, {
    className: (settings.className if settings.className) + ' section--content',
    content: content
  }) %}

  {{ Section(settings) }}
{% endmacro %}
