{% macro onsAccordion(params) %}
    {% from "components/details/_macro.njk" import onsDetails %}

    <div id="{{ params.id }}" class="ons-accordion{{ ' ' + params.classes if params.classes else '' }}">
        {% if params.allButton %}
            {% from "components/button/_macro.njk" import onsButton %}
            {% set attributes = params.allButton.attributes | default({}) %}
            {%
                set attributes = attributes | setAttributes({
                    "data-close-all": params.allButton.close,
                    "data-open-aria-label": params.allButton.openAriaLabel | default("Show all buttons"),
                    "data-close-aria-label": params.allButton.closeAriaLabel | default("Hide all buttons"),
                    "data-group": params.id
                })
            %}

            {{
                onsButton({
                    "type": "button",
                    "text": params.allButton.open,
                    "classes": "ons-accordion__toggle-all ons-u-mb-s ons-u-d-no",
                    "variants": ["secondary", "small"],
                    "innerClasses": "ons-accordion__toggle-all-inner",
                    "attributes": attributes
                })
            }}
        {% endif %}
        {% for item in params.itemsList %}
            {{
                onsDetails({
                    "isAccordion": true,
                    "id": params.id + "-" + (loop.index | string),
                    "attributes": item.attributes,
                    "headingAttributes": item.headingAttributes,
                    "contentAttributes": item.contentAttributes,
                    "title": item.title,
                    "headingLevel": item.headingLevel,
                    "content": item.content,
                    "group": params.id,
                    "saveState": params.saveState,
                    "open": params.open
                })
            }}
        {% endfor %}
    </div>
{% endmacro %}
