<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~ 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.
  -->
<project name="Apache Helix">
  <bannerLeft>
    <src>images/helix-logo.jpg</src>
    <href>https://helix.apache.org/</href>
  </bannerLeft>
  <bannerRight>
    <src>images/feather_small.gif</src>
    <href>https://www.apache.org/</href>
  </bannerRight>

  <publishDate position="none"/>
  <version position="none"/>

  <skin>
    <groupId>io.github.olamy.maven.skins</groupId>
    <artifactId>reflow-maven-skin</artifactId>
    <version>2.0.0</version>
  </skin>

<!--  <skin>-->
<!--    <groupId>org.apache.maven.skins</groupId>-->
<!--    <artifactId>maven-fluido-skin</artifactId>-->
<!--    <version>1.11.0-SNAPSHOT</version>-->
<!--  </skin>-->

  <body>

    <breadcrumbs position="left">
      <item name="Apache Helix" href="http://helix.apache.org/"/>
    </breadcrumbs>

    <menu name="Learn">
      <item name="Core Concepts" href="./Concepts.html"/>
      <item name="Architecture" href="./Architecture.html"/>
      <item name="Publications" href="./Publications.html"/>
      <item name="Client Libraries" href="./ClientLibraries.html"/>
    </menu>

    <menu name="Documentation">
      <item name="1.0.4" href="./1.0.4-docs/index.html"/>
      <item name="1.0.2" href="./1.0.2-docs/index.html"/>
      <item name="0.9.10 (0.9.9)" href="./0.9.9-docs/index.html"/>
      <item name="trunk" href="./trunk-docs/index.html"/>
    </menu>

    <menu name="Helix 1.0.4">
      <item name="Documentation" href="./1.0.4-docs/index.html"/>
      <item name="Quick Start" href="./1.0.4-docs/Quickstart.html"/>
      <item name="Tutorial" href="./1.0.4-docs/Tutorial.html"/>
      <item name="Download" href="./1.0.4-docs/download.html"/>
    </menu>

    <menu name="Helix 0.9.10 (0.9.9)">
      <item name="Documentation" href="./0.9.9-docs/index.html"/>
      <item name="Quick Start" href="./0.9.9-docs/Quickstart.html"/>
      <item name="Tutorial" href="./0.9.9-docs/Tutorial.html"/>
      <item name="Download" href="./0.9.9-docs/download.html"/>
    </menu>

    <menu name="Get Involved">
      <item name="IRC" href="./IRC.html"/>
      <item name="Mailing Lists" href="mail-lists.html"/>
      <item name="Issues" href="issue-tracking.html"/>
      <item name="Team" href="team-list.html"/>
      <item name="Sources" href="sources.html"/>
      <item name="Continuous Integration" href="integration.html"/>
      <item name="Building Guide" href="/involved/building.html"/>
      <item name="Release Guide" href="/releasing.html"/>
      <item name="Improve this Website" href="/involved/contribdocs.html"/>
    </menu>
<!--
    <menu ref="reports" inherit="bottom"/>
    <menu ref="modules" inherit="bottom"/>

-->
    <menu name="ASF">
      <item name="ASF Home" href="http://www.apache.org/"/>
      <item name="License" href="http://www.apache.org/licenses/"/>
      <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
      <item name="Security" href="http://www.apache.org/security/"/>
    </menu>
    <footer><![CDATA[
      <div class="row span16"><div>Apache Helix, Apache, the Apache feather logo, and the Apache Helix project logos are trademarks of The Apache Software Foundation.
        All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
        <a href="${project.url}/privacy-policy.html">Privacy Policy</a>
      </div>
    ]]></footer>


  </body>

  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <googleSearch></googleSearch>
      <twitter>
        <user>ApacheHelix</user>
        <showUser>true</showUser>
        <showFollowers>false</showFollowers>
      </twitter>
      <sideBarEnabled>true</sideBarEnabled>
    </fluidoSkin>
    <matomo>
      <siteId>15</siteId>
      <url>https://analytics.apache.org</url>
      <options>
        <disableCookies/>
        <trackPageView/>
        <enableLinkTracking/>
      </options>
    </matomo>
    <reflowSkin>
      <theme>site</theme>
      <localResources>true</localResources>
      <highlightJs>false</highlightJs>
      <brand>
        <name>Apache Helix</name>
        <href>https://helix.apache.org</href>
      </brand>
      <slogan>A cluster management framework for partitioned and replicated distributed resources</slogan>
      <bottomNav>
        <column>Learn</column>
        <column>Documentation|Helix 1.0.4|Helix 0.9.10</column>
        <column>Get Involved</column>
        <column>ASF</column>
      </bottomNav>
      <pages>
        <index>
          <sections>
            <body />
            <sidebar />
          </sections>
        </index>
      </pages>
    </reflowSkin>
  </custom>

</project>
