<%
  add_gem_component_stylesheet("layout-header")
  add_gem_component_stylesheet("layout-super-navigation-header")

  logo_link ||= "https://www.gov.uk/"
  logo_link_title ||= t("components.layout_super_navigation_header.logo_link_title")
  logo_text = t("components.layout_super_navigation_header.logo_text")

  hide_logo_text ||= false
  hide_button_left_border ||= false
  blue_background ||= false
  large_navbar ||= false

  navigation_links_columns = t("components.layout_super_navigation_header.navigation_links_columns")
  navigation_menu_heading = t("components.layout_super_navigation_header.navigation_menu_heading")
  navigation_search_heading = t("components.layout_super_navigation_header.navigation_search_heading")
  navigation_search_subheading = t("components.layout_super_navigation_header.navigation_search_subheading")
  popular_links = t("components.layout_super_navigation_header.popular_links")
  popular_links_heading = t("components.layout_super_navigation_header.popular_links_heading")
  search_text = t("components.layout_super_navigation_header.search_text")

  hide_search_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.hide", :label => "search")
  show_search_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.show", :label => "search")
  hide_navigation_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.hide", :label => "navigation")
  show_navigation_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.show", :label => "navigation")

  top_toggle_button_classes = %w(gem-c-layout-super-navigation-header__navigation-top-toggle-button
  )
  top_toggle_button_classes << "gem-c-layout-super-navigation-header__navigation-top-toggle-button--blue-background" if blue_background
  top_toggle_button_classes << "gem-c-layout-super-navigation-header__navigation-top-toggle-button--large-navbar" if large_navbar

  top_toggle_button_inner_classes = %w(gem-c-layout-super-navigation-header__navigation-top-toggle-button-inner)
  top_toggle_button_inner_classes << "gem-c-layout-super-navigation-header__navigation-top-toggle-button-inner--no-left-border" if hide_button_left_border
  top_toggle_button_inner_classes << "gem-c-layout-super-navigation-header__navigation-top-toggle-button-inner--blue-background" if blue_background

  search_toggle_button_classes = %w(gem-c-layout-super-navigation-header__search-toggle-button)
  search_toggle_button_classes << "gem-c-layout-super-navigation-header__search-toggle-button--blue-background" if blue_background
  search_toggle_button_classes << "gem-c-layout-super-navigation-header__search-toggle-button--large-navbar" if large_navbar

  layout_super_navigation_header_classes = %w(gem-c-layout-super-navigation-header)
  layout_super_navigation_header_classes << "gem-c-layout-super-navigation-header--blue-background" if blue_background

  item_link_classes = %w(gem-c-layout-super-navigation-header__navigation-item-link)
  item_link_classes << "gem-c-layout-super-navigation-header__navigation-item-link--blue-background" if blue_background
  item_link_classes << "gem-c-layout-super-navigation-header__navigation-item-link--large-navbar" if large_navbar

  item_link_inner_classes = %w(
    gem-c-layout-super-navigation-header__navigation-item-link-inner
  )
  item_link_inner_classes << "gem-c-layout-super-navigation-header__navigation-item-link-inner--blue-background" if blue_background

  search_item_link_classes = %w(gem-c-layout-super-navigation-header__search-item-link)
  search_item_link_classes << "gem-c-layout-super-navigation-header__search-item-link--blue-background" if blue_background
  search_item_link_classes << "gem-c-layout-super-navigation-header__search-item-link--large-navbar" if large_navbar

  header_logo_classes = %w(gem-c-layout-super-navigation-header__header-logo)
  header_logo_classes << "gem-c-layout-super-navigation-header__header-logo--large-navbar" if large_navbar

  logotype_classes = %w(govuk-header__logotype-crown gem-c-layout-super-navigation-header__logotype-crown)
  logotype_classes << "gem-c-layout-super-navigation-header__logotype-crown--large-navbar" if large_navbar

  header_link_classes = %w(govuk-header__link govuk-header__link--homepage)
  header_link_classes << "gem-c-header__link--large-navbar" if large_navbar

  button_container_classes = %w(gem-c-layout-super-navigation-header__button-container)
  button_container_classes << "gem-c-layout-super-navigation-header__button-container--large-navbar" if large_navbar

  dropdown_menu_classes = %w(gem-c-layout-super-navigation-header__navigation-dropdown-menu)
  dropdown_menu_classes << "gem-c-layout-super-navigation-header__navigation-dropdown-menu--large-navbar" if large_navbar

  popular_links_heading_classes = %w(govuk-heading-m)
  popular_links_heading_classes << "gem-c-layout-super-navigation-header__popular-links-heading--large-navbar" if large_navbar
%>
<%= content_tag("header",
  {
    role: "banner",
    class: layout_super_navigation_header_classes,
    data: {
      module: "gem-track-click ga4-event-tracker ga4-link-tracker",
      "track-links-only": '',
      "ga4-expandable": '',
    }
}) do %>
  <div class="gem-c-layout-super-navigation-header__container govuk-clearfix">
    <div class="govuk-width-container">
      <%= content_tag(:div, {
        class: header_logo_classes
      }) do %>
        <%= link_to logo_link, {
          class: header_link_classes,
          data: {
            "track-action": "logoLink",
            "track-category": "headerClicked",
            "track-label": logo_link,
            "track-dimension": logo_text,
            "track-dimension-index": "29",
            "ga4-link": {
              "event_name": "navigation",
              "type": "header menu bar",
              "external": "false",
              "text": "GOV.UK",
              "section": "Logo",
              "index_link": 1,
              "index_section": 0,
              "index_section_count": 2,
              "index_total": 1
            }.to_json
          },
          id: "logo",
          aria: {
            label: logo_link_title,
          }
        } do %>
          <% if hide_logo_text %>
            <span class="govuk-visually-hidden">
              <%= logo_text %>
            </span>
          <% end %>
          <span class="govuk-header__logotype">
            <!--[if gt IE 8]><!-->
            <%= content_tag(:svg, {
              aria: {
                hidden: true,
              },
              class: logotype_classes,
              height: "30",
              width: "36",
              focusable: "false",
              viewBox: "0 0 132 97",
              xmlns: "http://www.w3.org/2000/svg",
            }) do %>
              <path
                d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"
                fill="currentColor"
                fill-rule="evenodd"
              >
              </path>
            <% end %>
            <!--<![endif]-->
            <!--[if IE 8]>
            <img src="<%= asset_path('govuk-logotype-crown.png') %>" alt="" class="govuk-header__logotype-crown-fallback-image" width="36" height="32">
            <![endif]-->
            <% unless hide_logo_text %>
              <span class="govuk-header__logotype-text">
                <%= logo_text %>
              </span>
            <% end %>
          </span>
        <% end %>
      <% end %>
    </div>
    <nav
      aria-labelledby="super-navigation-menu-heading"
      class="gem-c-layout-super-navigation-header__content"
      data-module="super-navigation-mega-menu"
    >
      <h2 id="super-navigation-menu-heading" class="govuk-visually-hidden">
        <%= navigation_menu_heading %>
      </h2>

      <%
        link = t("components.layout_super_navigation_header.navigation_link")
        unique_id = SecureRandom.hex(4)
        show_menu_text = show_navigation_menu_text
        hide_menu_text = hide_navigation_menu_text
        tracking_label = link[:label].downcase.gsub(/\s+/, "")
      %>

      <div class="govuk-width-container gem-c-layout-super-navigation-header__button-width-container">
        <%= content_tag(:div, {
          class: button_container_classes
        }) do %>
          <div class="gem-c-layout-super-navigation-header__navigation-item">
            <%= link_to link[:href], {
              class: item_link_classes,
              data: {
                track_action: "#{tracking_label}Link",
                track_category: "headerClicked",
                track_label: link[:href],
                track_dimension: link[:label],
                track_dimension_index: "29",
              }
            } do %>
              <% content_tag(:span, {
                class: item_link_inner_classes
              }) do %>
                <%= link[:label] %>
              <% end %>
            <% end %>

            <%= content_tag(:button, {
              aria: {
                controls: "super-navigation-menu-#{unique_id}",
                expanded: false,
                label: show_menu_text,
              },
              class: top_toggle_button_classes,
              data: {
                text_for_hide: hide_menu_text,
                text_for_show: show_menu_text,
                toggle_desktop_group: "top",
                toggle_mobile_group: "top",
                tracking_key: tracking_label,
                ga4_event: {
                  event_name: "select_content",
                  type: "header menu bar",
                  text: link[:label],
                  index_section: 1,
                  index_section_count: 2,
                  section: link[:label]
                }
              },
              hidden: true,
              id: "super-navigation-menu-#{unique_id}-toggle",
              type: "button",
            }) do %>
              <%= tag.span link[:label], class: top_toggle_button_inner_classes %>
            <% end %>
          </div>

          <div class="gem-c-layout-super-navigation-header__search-item">
            <%= content_tag(:button, {
              id: "super-search-menu-toggle",
              class: search_toggle_button_classes,
              aria: {
                controls: "super-search-menu",
                expanded: "true",
                label: hide_search_menu_text,
              },
              data: {
                "text-for-hide": hide_search_menu_text,
                "text-for-show": show_search_menu_text,
                "toggle-mobile-group": "top",
                "toggle-desktop-group": "top",
                "tracking-key": "search",
                "ga4-event": "#{{
                  "event_name": "select_content",
                  "type": "header menu bar",
                  "text": "Search",
                  "index_section": 2,
                  "index_section_count": 2,
                  "section": "Search"
                  }.to_json
                }"
              },
              hidden: true,
              type: "button",
            }) do %>
              <span class="govuk-visually-hidden">
                <%= search_text %>
              </span>
              <%=
                render "govuk_publishing_components/components/search/search_icon", {
                  classes: %w[gem-c-layout-super-navigation-header__search-toggle-button-link-icon],
                }
              %>
              <span
                aria-hidden="true"
                class="gem-c-layout-super-navigation-header__navigation-top-toggle-close-icon"
                focusable="false"
              >
                &times;
              </span>
            <% end %>

            <%= link_to "/search", {
              class: search_item_link_classes
            } do %>
              <span class="govuk-visually-hidden">
                <%= search_text %>
              </span>
              <%=
                render "govuk_publishing_components/components/search/search_icon", {
                  classes: %w[gem-c-layout-super-navigation-header__search-item-link-icon],
                }
              %>
            <% end %>
          </div>
        <% end %>
      </div>

      <%= content_tag(:div, {
        id: "super-navigation-menu-#{unique_id}",
        hidden: "",
        class: dropdown_menu_classes,
      }) do %>
        <div class="govuk-width-container">
          <div class="govuk-grid-row gem-c-layout-super-navigation-header__navigation-items">

            <% navigation_links_columns.each_with_index do | column, column_index | %>
              <%
                case column[:size]
                when 2
                  width_class = "govuk-grid-column-two-thirds-from-desktop"
                when 3
                  width_class = "govuk-grid-column-full-from-desktop"
                else
                  width_class = "govuk-grid-column-one-third-from-desktop"
                end
              %>

              <div class="<%= width_class %> gem-c-layout-super-navigation-header__column--<%= column[:label].downcase.gsub(" ", "-") %>">
                <h3 class="govuk-heading-m gem-c-layout-super-navigation-header__column-header">
                  <%= column[:label] %>
                </h3>
                <ul class="gem-c-layout-super-navigation-header__navigation-second-items gem-c-layout-super-navigation-header__navigation-second-items--<%= column[:label].downcase.gsub(" ", "-") %>">
                  <% index_total = column[:menu_contents].length %>
                  <% column[:menu_contents].each_with_index do | item, index | %>
                      <%
                        has_description = item[:description].present?
                        link_classes = %w[govuk-link gem-c-layout-super-navigation-header__navigation-second-item-link]
                        link_classes << "gem-c-layout-super-navigation-header__navigation-second-item-link--with-description" if has_description
                        tracking_label = column[:label].downcase.gsub(/\s+/, "")
                      %>
                      <li class="gem-c-layout-super-navigation-header__dropdown-list-item">
                        <%= link_to item[:label], item[:href], {
                          class: link_classes,
                          data: {
                            track_action: "#{tracking_label}Link",
                            track_category: "headerClicked",
                            track_label: item[:href],
                            track_dimension: item[:label],
                            track_dimension_index: "29",
                            ga4_link: {
                              "event_name": "navigation",
                              "type": "header menu bar",
                              "index_section": column_index + 1,
                              "index_link": index + 1,
                              "index_section_count": 4,
                              "index_total": index_total,
                              "section": column[:label],
                            }
                          }
                        } %>
                        <%= tag.p item[:description], class: "gem-c-layout-super-navigation-header__navigation-second-item-description" if has_description %>
                      </li>
                  <% end %>
                </ul>
              </div>
            <% end %>
          </div>
        </div>
      <% end %>

      <%= content_tag(:div, {
        id: "super-search-menu",
        hidden: "",
        class: dropdown_menu_classes,
      }) do %>        
        <div class="govuk-width-container gem-c-layout-super-navigation-header__search-container gem-c-layout-super-navigation-header__search-items">
          <h3 class="govuk-visually-hidden">
            <%= navigation_search_subheading %>
          </h3>
          <div class="govuk-grid-row">
            <div class="govuk-grid-column-full">
              <form
                class="gem-c-layout-super-navigation-header__search-form"
                id="search"
                data-module="ga4-form-tracker"
                data-ga4-form='{ "event_name": "search", "type": "header menu bar", "section": "Search GOV.UK", "action": "search", "url": "/search/all" }'
                data-ga4-form-include-text
                data-ga4-form-no-answer-undefined
                action="/search"
                method="get"
                role="search"
                aria-label="Site-wide"
              >
                <%= render "govuk_publishing_components/components/search", {
                  inline_label: false,
                  label_size: "m",
                  label_text: search_text,
                  label_custom_class: "gem-c-layout-super-navigation-header__search-label--large-navbar",
                  size: "large",
                  margin_bottom: 0,
                  data_attributes: {
                    track_category: "headerClicked",
                    track_action: "searchSubmitted",
                    track_label: "/search/all",
                    track_dimension: t("components.search_box.label"),
                    track_dimension_index: 29,
                  },
                } %>
              </form>
            </div>
          </div>
          <div class="govuk-grid-row">
            <div class="govuk-grid-column-full">
              <%= content_tag(:h3, {
                class: popular_links_heading_classes
              }) do %>
                <%= popular_links_heading %>
              <% end %>
              <ul class="govuk-list">
                <% index_total = popular_links.length %>
                <% popular_links.each_with_index do | popular_link, index | %>
                  <li class="gem-c-layout-super-navigation-header__popular-item">
                    <%= link_to popular_link[:label], popular_link[:href], {
                      class: [
                        "govuk-link",
                        "gem-c-layout-super-navigation-header__popular-link",
                      ],
                      data: {
                        track_action: "popularLink",
                        track_category: "headerClicked",
                        track_label: popular_link[:href],
                        track_dimension: popular_link[:label],
                        track_dimension_index: "29",
                        ga4_link: {
                          "event_name": "navigation",
                          "type": "header menu bar",
                          "index_section": 4,
                          "index_link": index + 1,
                          "index_section_count": 4,
                          "index_total": index_total,
                          "section": popular_links_heading,
                        }
                      }
                    } %>
                  </li>
                <% end %>
              </ul>
            </div>
          </div>
        </div>
      <% end %>
    </nav>
  </div>
<% end %>