{% macro onsModal(params) %}
    {% set modalId = params.id | default('dialog') %}
    <dialog
        class="ons-modal ons-js-modal {{ params.classes if params.classes }}"
        id="{{ modalId }}"
        role="dialog"
        aria-labelledby="ons-modal-title"
        {% if params.attributes %}{% for attribute, value in (params.attributes.items() if params.attributes is mapping and params.attributes.items else params.attributes) %}{{ ' ' }}{{ attribute }}="{{ value }}"{% endfor %}{% endif %}
    >
        <div class="ons-modal__content">
            <h2 id="ons-modal-title" class="ons-modal__title">{{ params.title }}</h2>
            <div class="ons-modal__body">{{ (params.body if params.body) | safe }}{{ caller() if caller }}</div>
            {% if params.btnText %}
                {% from "components/button/_macro.njk" import onsButton %}
                {{
                    onsButton({
                        "text": params.btnText,
                        "classes": "ons-js-modal-btn ons-u-mt-s"
                    })
                }}
            {% endif %}
        </div>
    </dialog>
{% endmacro %}
