{#
/**
 * @file
 * Theme implementation for a fieldset element optionally using GCDS.
 *
 * If use_gcds is TRUE, this will theme with GCDS. Otherwise, it will theme like
 * core/modules/system/templates/fieldset.html.twig.
 *
 * Available variables:
 * - attributes: HTML attributes for the <fieldset> element.
 * - errors: (optional) Any errors for this <fieldset> element, may not be set.
 * - required: Boolean indicating whether the <fieldset> element is required.
 * - legend: The <legend> element containing the following properties:
 *   - title: Title of the <fieldset>, intended for use as the text
       of the <legend>.
 *   - attributes: HTML attributes to apply to the <legend> element.
 * - legend_size: The header element for styling the legend, 'h2' to 'h6'.
 * - description: The description element containing the following properties:
 *   - content: The description content of the <fieldset>.
 *   - attributes: HTML attributes to apply to the description container.
 * - description_display: Description display setting. It can have these values:
 *   - before: The description is output before the element.
 *   - after: The description is output after the element (default).
 *   - invisible: The description is output after the element, hidden visually
 *     but available to screen readers.
 * - children: The rendered child elements of the <fieldset>.
 * - prefix: The content to add before the <fieldset> children.
 * - suffix: The content to add after the <fieldset> children.
 *
 * @see template_preprocess_fieldset()
 *
 * @ingroup themeable
 */
#}
{%
  set classes = [
    'js-form-item',
    'form-item',
    'js-form-wrapper',
    'form-wrapper',
  ]
%}
{% set content %}
  {% if prefix %}
    <span class="field-prefix">{{ prefix }}</span>
  {% endif %}
  {{ children }}
  {% if suffix %}
    <span class="field-suffix">{{ suffix }}</span>
  {% endif %}
{% endset %}
{% if use_gcds %}
  {% do attributes.addClass(classes) %}
  {% if required %}
    {% do attributes.addClass(['form-required']) %}
  {% endif %}
  {% if errors %}
    {% set content %}
      <div>
        {{ errors }}
      </div>
      {{ content }}
    {% endset %}
  {% endif %}
  {{ include('gcds:gcds-fieldset', {
    'legend': legend.title,
    'legend_size': legend_size ?: 'h6',
    'hint': description.content,
    'class': attributes.class,
    'id': attributes.id,
    'default': content,
  }, with_context = false) }}
{% else %}
  <fieldset{{ attributes.addClass(classes) }}>
    {%
      set legend_span_classes = [
        'fieldset-legend',
        required ? 'js-form-required',
        required ? 'form-required',
      ]
    %}
    {# Always wrap fieldset legends in a <span> for CSS positioning. #}
    <legend{{ legend.attributes }}>
      <span{{ legend_span.attributes.addClass(legend_span_classes) }}>{{ legend.title }}</span>
    </legend>
    <div class="fieldset-wrapper">
      {% if description_display == 'before' and description.content %}
        <div{{ description.attributes.addClass('description') }}>{{ description.content }}</div>
      {% endif %}
      {% if errors %}
        <div>
          {{ errors }}
        </div>
      {% endif %}
      {{ content }}
      {% if description_display in ['after', 'invisible'] and description.content %}
        <div{{ description.attributes.addClass('description') }}>{{ description.content }}</div>
      {% endif %}
    </div>
  </fieldset>
{% endif %}
