## Topnav single links
## if you want to list an external url, use external_url instead of url. the theme will apply a different link base.
#    - title: Sample
#      url: /mydoc/sample.html
#      audience: developers, consumers
#      platform: all
#      product: all
#      version: all
#      output: web


#            <li id="community">
#              <a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a>
#               <ul class="dropdown-menu dropdown-left">
#                <li><a href="/community">Get Involved</a></li>
#                <li><a href="/community-members">Who we are</a></li>
#               </ul>
#            </li>
#            <li><a href="{{ site.data.project.source_repository }}">GitHub</a></li>
#            <li id="apache">
#              <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
#               <ul class="dropdown-menu">
#                <li><a href="http://www.apache.org/foundation/how-it-works.html">Apache Software Foundation</a></li>
#                <li><a href="http://www.apache.org/licenses/">Apache License</a></li>
#                <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
#                <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
#                </ul>
#            </li>


topnav:

- title: Community
  subcategories:
  - title: Get Involved
    url: /community
  - title: Contributing
    url: /contributing
  - title: Contributing Extensions
    url: /contributing-extensions
  - title: Issue Tracker
    url: https://issues.apache.org/jira/browse/BAHIR
  - title: Source Code
    url: https://github.com/apache/bahir
  - title: Project Committers
    url: /community-members

- title: Documentation
  subcategories:
  - title: Bahir Spark Extensions - Current
    url: /docs/spark/current/documentation
  - title: Bahir Spark Extensions - 2.0.1
    url: /docs/spark/2.0.1/documentation
  - title: Bahir Spark Extensions - 2.0.0
    url: /docs/spark/2.0.0/documentation

- title: GitHub
  url: https://github.com/apache/bahir

- title: Apache
  subcategories:
  - title: Apache Software Foundation
    url: http://www.apache.org/foundation/how-it-works.html
  - title: Apache License
    url: http://www.apache.org/licenses/
  - title: Sponsorship
    url: http://www.apache.org/foundation/sponsorship
  - title: Thanks
    url: http://www.apache.org/foundation/thanks.html
  - title: Privacy Policy
    url: /privacy-policy
