# 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.

## 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: writers, designers
#      platform: all
#      product: all
#      version: all
#      output: web


githubrepos_dropdowns:
- title: GitHub Repos dropdowns
  subcategories:
    - title: GitHub Repos
      audience: writers, designers
      platform: all
      product: all
      version: all
      output: web
      items:
        - title: Source code
          external_url: https://github.com/apache/incubator-edgent
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

        - title: Website/Documentation
          external_url: https://github.com/apache/incubator-edgent-website
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

javadoc_dropdowns:
- title: Javadoc dropdowns
  subcategories:
    - title: Javadoc
      audience: writers, designers
      platform: all
      product: all
      version: all
      output: web
      items:
        - title: latest
          url: /..\/javadoc\/latest
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

        - title: 1.1.0
          url: /..\/javadoc\/r1.1.0
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

        - title: 1.0.0
          url: /..\/javadoc\/r1.0.0
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

        - title: 0.4.0
          url: /..\/javadoc\/r0.4.0
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

#Topnav dropdowns
topnav_dropdowns:
- title: Topnav dropdowns
  subcategories:
    - title: Edgent Resources
      audience: writers, designers
      platform: all
      product: all
      version: all
      output: web
      items:
        - title: Download
          url: downloads
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

        - title: FAQ
          url: faq
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web

        - title: edgent.apache.org
          url: /
          audience: writers, designers
          platform: all
          product: all
          version: all
          output: web
