<!DOCTYPE html>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ~ 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.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<html data-sly-use.type="org.apache.sling.hapi.TypeView" lang="${type.lang}">

    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- Bootstrap -->
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->

        <title>${type.title}</title>

    </head>
    <body>
        <div class="container">

            <h1>${type.title}</h1>
            <div>
                <p>${type.description}</p>
            </div>
            <h2 data-sly-test.parentUrl="${type.parentUrl}"> extends
                <a href="${parentUrl}" >${type.parentFqdn}</a>
            </h2>
            <h3 data-sly-test="${type.parameters}">Parameters: </h3>
                <ul data-sly-list.param="${type.parameters}" title="Parameters" class="list-inline">
                <li>${param}</li>
            </ul>
            <h3>Properties: </h3>
            <table class="table" data-sly-test.props="${type.props}">
                <thead>
                    <tr>
                        <th>Property</th>
                        <th>Expected Type</th>
                        <th>Multiple</th>
                        <th>Description</th>
                    </tr>
                </thead>
                <tbody data-sly-list.prop="${type.props}">
                    <tr>
                        <th>${prop.name}</th>
                        <td>
                            <a href="${prop.type.url}">${prop.type.name}</a>
                        </td>
                        <td>${prop.multiple}</td>
                        <td>${prop.description}</td>
                    </tr>
                </tbody>
            </table>
            <div data-sly-test="${!props}">None</div>
        </div>
    </body>
</html>
