
<!--
Copyright 2017-present Open Networking Foundation

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


<div class="row">
  <div class="col-xs-12">
    <h1>Xos Sample GUI Extension</h1>
  </div>
  <div class="col-xs-12">
    <p>This page is loaded from an external container!</p>
  </div>
  <div class="col-xs-12">
    From this extension you can use all the features provided by the core. <br/>
    For example, you can toggle the side panel by injecting custom content. <br/>
    You can also create custom keyboard shortcuts. Try pressing "p" on your keyboard <br/>
    <br/>
    <br/>
    <a ng-click="vm.togglePanel()" class="btn btn-success">Open Side Panel</a>
  </div>
</div>