{% set attributes = create_attribute({
  'label': label,
  'name': name,
  'select-id': select_id,
}) %}
{% if default_value %}
  {% do attributes.setAttribute('default-value', default_value) %}
{% endif %}
{% if disabled %}
  {% do attributes.setAttribute('disabled', true) %}
{% endif %}
{% if error_message %}
  {% do attributes.setAttribute('error-message', error_message) %}
{% endif %}
{% if hint %}
  {% do attributes.setAttribute('hint', hint) %}
{% endif %}
{% if lang %}
  {% do attributes.setAttribute('lang', lang) %}
{% endif %}
{% if required %}
  {% do attributes.setAttribute('required', true) %}
{% endif %}
{% if validate_on %}
  {% do attributes.setAttribute('validate-on', validate_on) %}
{% endif %}
{% if value %}
  {% do attributes.setAttribute('value', value) %}
{% endif %}
{% if class %}
  {% do attributes.setAttribute('class', class|join(' ')) %}
{% endif %}
{% if slot %}
  {% do attributes.setAttribute('slot', slot) %}
{% endif %}
<gcds-select{{ attributes }}>
  {% block default %}
    {# Based on core/modules/system/templates/select.html.twig. #}
    {% for option in options %}
      {% if option.type == 'optgroup' %}
        <optgroup label="{{ option.label }}">
          {% for sub_option in option.options %}
            <option value="{{ sub_option.value }}">{{ sub_option.label }}</option>
          {% endfor %}
        </optgroup>
      {% elseif option.type == 'option' %}
        <option value="{{ option.value }}">{{ option.label }}</option>
      {% endif %}
    {% endfor %}
  {% endblock %}
</gcds-select>
