<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<div class="main-navigation" data-plugin="menu">
  <div class="main-navigation__toggle" data-menu-closed>
    <i class="icon ion-md-menu"></i>
  </div>
  <div class="main-navigation__toggle main-navigation__toggle--opened" data-menu-opened>
    <i class="icon ion-md-close"></i>
  </div>
  <div class="main-navigation__inner">
    <div class="main-navigation__logo">
      <a href="/">
        <img class="main-navigation__logo-img" src="/img/samza-logo.png" srcset="/img/samza-logo.png 1x, /img/samza-logo@2x.png 2x"
          alt="Samza Logo" />
      </a>
    </div>
    <div class="main-navigation__items" data-menu-opened>
      <a class="main-navigation__item" href="/">Home</a>
      <a class="main-navigation__item" href="/learn/documentation/{{site.version}}/core-concepts/core-concepts.html">Docs</a>
      <a class="main-navigation__item" href="/powered-by/">Powered By</a>
      <a class="main-navigation__item" href="/startup/download/">Downloads</a>
      <a class="main-navigation__item" href="/blog/">Blog</a>
      <div class="main-navigation__item main-navigation__item--group">
        <div class="main-navigation__item-group-title">
          Community
          <i class="icon ion-md-arrow-dropdown"></i>
        </div>
        <div class="main-navigation__item-group-list">
          <a class="main-navigation__item" href="/community/contact-us.html">Contact Us</a>
          <a class="main-navigation__item" href="/contribute/contributors-corner.html">Contributor's Corner</a>
          <a class="main-navigation__item" href="/community/committers.html">PMC Members and committers</a>
          <a class="main-navigation__item" href="/meetups/">Talks and Meetups</a>
        </div>
      </div>
    </div>
  </div>
</div>