<?xml version="1.0" encoding="UTF-8"?>
<!--
   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 xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Karaf WebConsole</title>
</head>

<body>

    <wicket:extend>
        <div id="userbox" class="grid_2">
            <img wicket:id="avatar" class="avatar" alt="User avatar" />
            <span id="details">
                Welcome <span wicket:id="username">admin</span>

                <a href="#" wicket:id="logoutLink"><span wicket:id="logoutTranslatedLink"/></a>
                <a href="#" wicket:id="preferencesLink">Preferences</a>
            </span>
        </div>

        <div class="grid_12">
            <div wicket:id="navigationPanel">Navigation goes here</div>
        </div>
        <div class="clear"></div>

        <wicket:child />
    </wicket:extend>

</body>
</html>