<!--
  ~ 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.
  -->

<!DOCTYPE html>
<html lang="en"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

<h:head>
    <h:outputStylesheet library="style" name="text.css" />
    <h:outputStylesheet library="style" name="animation.css" />
    <h:outputStylesheet library="style" name="box.css" />
    <h:outputStylesheet library="style" name="common.css" />

    <meta charset="utf-8" />
    <title>Apache Myfaces Html5 Component Library Demo</title>
</h:head>
<h:body style="align:center;" class="nodecorate">
	<div style="text-align:center; float: center; padding-left:15%; padding-right:15%; padding-top:100px; position: relative;">
	   <h1>Apache Myfaces Html5 Component Library Demo</h1>
	   <ul style="line-height:30px; list-style: upper-roman; font-size: 30px;" class="fontedHeader">
	        <li>
                    <h:link outcome="slides" value="Slide View"/>
	        </li>
	        <li>
	            <h:link outcome="multiPage" value="Multiple Page View"/>
	        </li>
	    </ul>
	    <h5>Demo available online at : <a href="http://bit.ly/myfaces-html5-demo">http://bit.ly/myfaces-html5-demo</a></h5>
        <h6>Please use a modern browser to experiment features.</h6>
	</div>

</h:body>
</html>
