{% macro hmpoRadios(ctx, params, base) %}
    {%- set params = hmpoGetParams(ctx, params, base) %}

    {%- set value = hmpoGetValue(ctx, params) %}

    {%- set classes = params.classes if params.classes else "" %}
    {%- set classes = classes + " govuk-radios--inline" if params.inline else classes %}

    {%- set pageHeading = {
        legend: {
            isPageHeading: true,
            classes: "govuk-fieldset__legend--l"
        }
    } if params.isPageHeading %}

    {%- set attributes = params.attributes %}
    {%- if params.multiConditional %}
        {%- set attributes = merge({ "data-multi-conditional": "true" }, params.attributes) %}
    {%- endif %}

    {% if params.conditionals and params.inline %}
        {% for key, conditional in params.conditionals %}
            {% if not conditional.id %}
                {% set id = set(conditional, "id", "conditional-" + params.id + "-" + key) %}
            {% endif %}
        {% endfor %}
    {% endif %}

    {%- set args = {
        idPrefix: params.id,
        attributes: attributes,
        name: params.id,
        fieldset: merge(pageHeading, {
            legend: hmpoGetOptions(ctx, params, "legend", true) or hmpoGetOptions(ctx, params, "label"),
            attributes: {
                id: params.id + "-fieldset",
                "aria-required": hmpoGetValidatorAttribute(ctx, params, "required", null, false)
            } | filter
        }, params.fieldset),
        hint: hmpoGetOptions(ctx, params, "hint", true),
        errorMessage: hmpoGetError(ctx, params),
        type: params.type,
        classes: classes,
        formGroup: params.formGroup,
        items: hmpoGetItems(ctx, params, value, false, true, [ { value: true }, { value: false} ])
    } %}

    {%- for item in args.items %}
        {%- if not item.conditional and not params.conditionals[item.value] %}
            {%- set contentKey = "fields." + (params.contentKey or params.id) %}
            {%- set key = contentKey + ".items." + item.value + ".reveal" %}
            {%- set reveal = ctx().translate(key, { self: false }) %}
            {%- if reveal %}
                {% from "hmpo-html/macro.njk" import hmpoHtml %}
                {%- set conditionalId = "conditional-" + params.id + "-" + item.value %}
                {%- set conditional = { html: hmpoHtml(reveal), id: conditionalId } %}
                {%- if params.inline %}
                    {%- set itemAttribs = set(item, 'attributes', params.attributes | default({})) %}
                    {%- set itemAttribs = set(item.attributes, 'aria-controls', conditionalId) %}
                    {%- set paramConditionals = set(params, 'conditionals', params.conditionals | default({})) %}
                    {%- set paramConditionals = set(params.conditionals, item.value, conditional) %}
                {%- else %}
                    {%- set item = set(item, 'conditional', conditional) %}
                {%- endif %}
            {%- endif %}
        {%- endif %}
    {%- endfor %}

    {%- if args.fieldset.legend.attributes %}
        {% set legendHtml %}
            <span {%- for attribute, value in args.fieldset.legend.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
              {{ args.fieldset.legend.html | safe if args.fieldset.legend.html else args.fieldset.legend.text }}
            </span>
        {% endset %}
        {%- set args = merge(args, { fieldset: { legend: { html: legendHtml } } }) %}
    {%- endif %}

    {%- from "govuk/components/radios/macro.njk" import govukRadios %}
    {{- govukRadios(args) }}
    {% if params.conditionals and params.inline %}
        {% for key, conditional in params.conditionals %}
            {% if conditional.html %}
                <div id="{{ conditional.id | default("conditional-" + params.id + "-" + key) }}"
                    class="govuk-radios__conditional{% if conditional.removeInset %} govuk-radios__removeInset{% endif %}{% if conditional.classes %} {{ conditional.classes }}{% endif %}">
                    {{ conditional.html | safe }}
                </div>
            {% endif %}
        {% endfor %}
    {% endif %}

{% endmacro %}
