Close menu

Pattern Library

<!-- Navbar -->
<nav
  id="navbar"
  class="
    fixed left-0 top-[-1px] z-20 w-full duration-200 navbar

    xl:absolute
    xl:bg-transparent

    {% block extra_classes %}
      {% if is_transparent %}navbar--transparent{% endif %}
      {% if is_on_dark_background %}navbar--on-dark-bg{% endif %}
    {% endblock %}
  "
>
  <div class="container--wide py-3 xl:py-6 flex justify-between items-center">

    <div class="flex items-center xl:items-start">
      <!-- BEGIN Logo-->
      <a href="{{ logo_url }}" class="z-20 xl:mt-2 hover:no-underline">
        {% block navbar_logo_images %}
          <img class="navbar__logo--white w-[150px] lg:w-[180px]" src="{{ white_logo_image_url }}" alt="">
          <img class="navbar__logo--black w-[150px] lg:w-[180px]" src="{{ black_logo_image_url }}" alt="">
        {% endblock %}
      </a>
      <!-- END Logo -->
    </div>

    <div class="flex-col gap-3 xl:flex hidden">

      <!-- BEGIN Social media-->
      <div class="flex gap-7 justify-end items-center">
        <div class="flex gap-5 text-lg">
          {% for social_media in social_media_links %}
            <a href="{{ social_media.url }}" class="hover:no-underline">
              <i class="{{ social_media.icon }}"></i>
            </a>
          {% endfor %}
        </div>

        {% block desktop_search %}
          {% include 'patterns/atoms/form_fields/form_input_backgroundless.html' with placeholder='Hledej' classes='text-black px-2 py-1 w-60' %}
        {% endblock %}

        {% block after_desktop_search %}{% endblock %}
      </div>
      <!-- END Social media -->

      <!-- BEGIN Menu -->
      <div
        class="flex text-2xl gap-4 font-alt items-center justify-end"
      >
        {% if important_item %}
          <a
            href="{{ important_item_url }}"
            class="
              __js-root mx-2 flex gap-1 items-center decoration-1 underline-offset-4
              
              {% if selected_item == important_item %}navbar__menu-item--selected{% endif %}
            "
          >
            <div class="mb-1">
              {% if not is_transparent or is_on_dark_background %}
                {% include 'patterns/atoms/icons/arrow.html' with width='27' height='28.35' fill='#fff' %}
              {% else %}
                <ui-animated-arrow
                  mobile-width="38.1"
                  mobile-height="40"

                  desktop-width="27"
                  desktop-height="28.35"
                ></ui-animated-arrow>
              {% endif %}
            </div>

            <span>
              {{ important_item }}
            </span>
          </a>
        {% endif %}

        {% block menu_items %}
          {% for item in menu_items %}
            <a
              href="{{ item.url }}"
              class="
                decoration-1 underline-offset-4 mx-2
                
                {% if item == selected_item %}navbar__menu-item--selected{% endif %}
              "
            >{{ item.name }}</a>
          {% endfor %}
        {% endblock %}

        {% if menu_button %}
          {% if additional_buttons or menu_button_url %}
            {% block navbar_menu_button %}
              <div
                class="group uppercase cursor-pointer relative"
              >
                <div class="w-24 h-11 min-w-[9rem]">
                  <{% if menu_button_url %}a{% else %}div{% endif %}
                    class="
                      navbar__border-button

                      flex items-center justify-center border-none border-4 w-24 h-11 py-4 px-6 duration-150

                      hover:no-underline

                      xl:w-auto
                    "

                    {% if menu_button_url %}href="{{ menu_button_url }}"{% endif %}
                  >
                    {{ menu_button }}
                  </{% if menu_button_url %}a{% else %}div{% endif %}>
                </div>

                {% if additional_buttons %}
                  <div
                    class="
                      absolute w-full top-[2.75rem] left-0 opacity-0 duration-150 pointer-events-none

                      group group-hover:opacity-100 group-hover:pointer-events-auto
                    "
                  >
                    {% block navbar_menu_button_additional_buttons %}
                      {% for button in additional_buttons %}
                        {% include 'patterns/molecules/navbar/additional_button.html' %}
                      {% endfor %}
                    {% endblock %}
                  </div>
                {% endif %}
              </div>
            {% endblock %}
          {% endif %}
        {% endif %}
      </div>
      <!-- END Menu -->

    </div>

    <!-- Hamburger Icon -->
    <input class="hidden navbar__mobile-menu__toggle" type="checkbox" id="navbar__mobile-menu__toggle">

    <label class="z-30 hamb text-black xl:hidden" for="navbar__mobile-menu__toggle">
      <span>
        <span class="bar1"></span>
        <span class="bar2"></span>
        <span class="bar3"></span>
      </span>
    </label>

    <div
      class="
        navbar__mobile-menu

        absolute top-0 left-0 w-full bg-grey-100 text-black pb-16 font-alt text-4xl drop-shadow-lg
        flex-col gap-3
      "
    >
      <div class="grid-container">
        <div class="grid-left-side">
          {% block popout_logo_image %}
            <img
              class="w-[150px] mt-3"
              src="../../../../../static/images/logo-full-black.svg"
              alt=""
            >
          {% endblock %}
        </div>
      </div>

      <div
        class="
          flex flex-col gap-8 md:flex-row pt-6 px-8
          md:justify-between
          xl:pl-32
        "
      >
        <div class="flex flex-col gap-1.5 items-start">
          {% block mobile_search %}
            <div class="w-full mb-8 flex">
              {% include 'patterns/atoms/form_fields/form_input_backgroundless.html' with placeholder='Hledej' classes='w-full text-black px-2 py-1' %}
            </div>
          {% endblock %}

          {% if important_item %}
            <a
              href="{{ important_item_url }}"
              class="
                __js-root flex items-center decoration-1 underline-offset-4

                navbar__menu-item

                {% if selected_item == important_item %}navbar__menu-item--selected{% endif %}
              "
            >
              <div class="mb-1">
                <ui-animated-arrow
                  :mobile-width="40"
                  :mobile-height="42"
                ></ui-animated-arrow>
              </div>

              {{ important_item }}
            </a>
          {% endif %}

          {% for item in menu_items %}
            <a
              href="{{ item.url }}"
              class="
                decoration-1 underline-offset-4

                navbar__menu-item

                {% if item == selected_item %}navbar__menu-item--selected{% endif %}
              "
            >{{ item.name }}</a>
          {% endfor %}

          {% if additional_buttons %}
            <div class="mt-8 mb-6 flex flex-col gap-1.5">
              {% for button in additional_buttons %}
                <a
                  href="{{ button.url }}"
                  class="
                    decoration-1 underline-offset-4

                    navbar__menu-item

                    {% if button == selected_item %}navbar__menu-item--selected{% endif %}
                  "
                >{{ button.name }}</a>
              {% endfor %}
            </div>
          {% endif %}

          {% if menu_button and not additional_buttons and menu_button_url %}
            <div class="mt-8 mb-6 flex flex-col gap-1.5">
              <a
                href="{{ menu_button_url }}"
                class="
                  decoration-1 underline-offset-4

                  navbar__menu-item

                  {% if menu_button == selected_item %}navbar__menu-item--selected{% endif %}
                "
              >{{ menu_button }}</a>
            </div>
          {% endif %}
        </div>

        <div class="flex gap-5 text-lg md:justify-end">
          {% for social_media in social_media_links %}
            <a href="{{ social_media.url }}" class="hover:no-underline">
              <i class="{{ social_media.icon }}"></i>
            </a>
          {% endfor %}
        </div>
      </div>
    </div>
  </div>
</nav>

{% block observer_script %}
  <script>
    const navbar = document.querySelector("#navbar")

    const transparentClass = "{% block observer_script_toggled_class %}navbar--transparent{% endblock %}"
    let initiallyHadTransparentClass = false

    if (navbar.classList.contains(transparentClass)) {
      initiallyHadTransparentClass = true
    }

    console.log(initiallyHadTransparentClass)

    window.onscroll = () => {
      const screenWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0)

      if (screenWidth > 1199) {
        return
      }

      if (window.scrollY === 0) {
        if (initiallyHadTransparentClass) {
          navbar.classList.add(transparentClass)
        }
      } else {
        navbar.classList.remove(transparentClass)
      }
    }

    const menuItems = document.querySelectorAll(".navbar__menu-item")

    menuItems.forEach(
      (element) => {
        element.addEventListener(
          "click",
          (event) => {
            document.getElementById("navbar__mobile-menu__toggle").checked = false
          }
        )
      }
    )
  </script>
{% endblock %}
context:
  menu_button: 'Zapojte se'
  logo_url: '#'

  additional_buttons:
    -
      name: 'Nalodění'
      url: '#'
    -
      name: 'Dary'
      url: '#'
    -
      name: 'E-shop'
      url: '#'

  has_background: false

  menu_items:
    -
      name: 'Aktuality'
      url: '#'
    -
      name: 'Program'
      url: '#'
    -
      name: 'Kdo jsme'
      url: '#'
    -
      name: 'Kontakty'
      url: '#'

  important_item: 'Evropské volby'
  important_item_url: 'https://example.com'

  social_media_links:
    -
      icon: 'ico--facebook'
      url: '#'
    -
      icon: 'ico--instagram'
      url: '#'
    -
      icon: 'ico--feed'
      url: '#'
    -
      icon: 'ico--twitter'
      url: '#'
    -
      icon: 'ico--youtube'
      url: '#'

  white_logo_image_url: '../../../../../static/images/logo-full-white.svg'
  black_logo_image_url: '../../../../../static/images/logo-full-black.svg'