<%
  local_assigns[:heading_level] ||= 3
  shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
  heading_size = "m" unless shared_helper.valid_heading_size?(heading_size)

  id ||= nil
  title ||= nil
  borderless ||= false
  edit ||= {}
  delete ||= {}
  items ||= []
  block ||= yield
  wide_title ||= false
%>
<% if title || items.any? %>
  <%= tag.div class: "gem-c-summary-list #{"govuk-summary-list--no-border" if borderless} #{"gem-c-summary-list--wide-title" if wide_title}", id: id do %>
    <% if title %>
      <%= content_tag(shared_helper.get_heading_level, title, class: "govuk-heading-#{heading_size} gem-c-summary-list__group-title") %>

      <% if edit.any? %>
        <% edit_main_link = capture do %>
          <%
            edit_section_link_text = edit[:link_text] || t("components.summary_list.edit")
          %>
          <%= link_to edit.fetch(:href),
                    class: "govuk-link",
                    data: edit.fetch(:data_attributes, {}) do %>
            <%= edit_section_link_text %><%= tag.span " #{title}", class: "govuk-visually-hidden" unless edit[:link_text_no_enhance] -%>
          <% end %>
        <% end %>
      <% end %>

      <% if delete.any? %>
        <% delete_main_link = capture do %>
          <%
            delete_section_link_text = delete[:link_text] || t("components.summary_list.delete")
          %>
          <%= link_to delete.fetch(:href),
                    class: "govuk-link gem-link--destructive",
                    data: delete.fetch(:data_attributes, {}) do %>
            <%= delete_section_link_text %><%= tag.span " #{title}", class: "govuk-visually-hidden" unless delete[:link_text_no_enhance] -%>
          <% end %>
        <% end %>
      <% end %>

      <% if edit_main_link && delete_main_link %>
        <%= tag.ul class: "govuk-summary-list__actions-list gem-c-summary-list__group-actions-list" do %>
          <%- if edit.any? %>
            <%= tag.li class: "govuk-summary-list__actions-list-item" do -%>
              <%= edit_main_link %>
            <% end %>
          <% end %>
          <% if delete.any? %>
            <%= tag.li class: "govuk-summary-list__actions-list-item" do -%>
              <%= delete_main_link %>
            <% end %>
          <% end %>
        <% end %>
      <% else %>
        <%= tag.div class: "govuk-summary-list__actions-list gem-c-summary-list__group-actions-list" do %>
          <%= edit_main_link %>
          <%= delete_main_link %>
        <% end %>
      <% end %>

    <% end %>

    <% if items.any? %>
      <%= tag.dl class: "govuk-summary-list" do %>
        <% items.each do |item| %>
          <%= tag.div class: "govuk-summary-list__row" do %>

            <%= tag.dt item[:field], class: "govuk-summary-list__key" %>
            <%= tag.dd item[:value], class: "govuk-summary-list__value" %>

            <% if item.fetch(:edit, {}).any? %>
              <% edit_link = capture do %>
                <%
                  edit_link_text = item[:edit][:link_text] || t("components.summary_list.edit")
                %>
                <%= link_to item[:edit].fetch(:href),
                            class: "govuk-link",
                            data: item[:edit].fetch(:data_attributes, {}) do %>
                  <%= edit_link_text %><%= tag.span " #{item[:field]}", class: "govuk-visually-hidden" unless item[:edit][:link_text_no_enhance] -%>
                <% end %>
              <% end %>
            <% end %>

            <% if item.fetch(:delete, {}).any? %>
              <% delete_link = capture do %>
                <%
                  delete_link_text = item[:delete][:link_text] || t("components.summary_list.delete")
                %>
                <%= link_to item[:delete].fetch(:href),
                            class: "govuk-link gem-link--destructive",
                            data: item[:delete].fetch(:data_attributes, {}) do %>
                  <%= delete_link_text %><%= tag.span " #{item[:field]}", class: "govuk-visually-hidden" unless item[:delete][:link_text_no_enhance] -%>
                <% end %>
              <% end %>
            <% end %>

            <% if edit_link && delete_link %>
              <%= tag.dd class: "govuk-summary-list__actions" do %>
                <%= tag.ul class: "govuk-summary-list__actions-list" do %>
                  <% if item.fetch(:edit, {}).any? %>
                    <%= tag.li class: "govuk-summary-list__actions-list-item" do %>
                      <%= edit_link %>
                    <% end %>
                  <% end %>
                  <% if item.fetch(:delete, {}).any? %>
                    <%= tag.li class: "govuk-summary-list__actions-list-item" do %>
                      <%= delete_link %>
                    <% end %>
                  <% end %>
                <% end %>
              <% end %>
            <% else %>
              <%= tag.dd class: "govuk-summary-list__actions" do %>
                <%= edit_link %>
                <%= delete_link %>
              <% end %>
            <% end %>

          <% end %>
        <% end %>
      <% end %>
    <% end %>

    <%= tag.div block, class: "gem-c-summary__block" if block %>
  <% end %>
<% end %>