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

<tobago-config
    xmlns="http://myfaces.apache.org/tobago/tobago-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://myfaces.apache.org/tobago/tobago-config http://myfaces.apache.org/tobago/tobago-config-5.0.xsd"
    version="5.0">

  <name>tobago-theme-standard</name>

  <ordering>
    <after>
      <name>tobago-core</name>
    </after>
  </ordering>

  <theme-definitions>
    <theme-definition>
      <name>standard</name>
      <display-name>Standard Theme</display-name>
      <resources production="true">
        <includes>
          <script name="/webjars/webcomponents__custom-elements/1.2.1/custom-elements.min.js"/>
          <script name="/webjars/tether/1.4.0/js/tether.min.js"/>
          <script name="/webjars/popper.js/1.14.3/umd/popper.min.js"/>
          <script name="/tobago/standard/${project.version}/js/jsf.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-polyfill.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago.min.js"/>
          <style name="/webjars/tether/1.4.0/css/tether.min.css"/>
          <style name="/tobago/standard/${project.version}/css/tobago.min.css"/>
          <style name="/webjars/font-awesome/4.7.0/css/font-awesome.min.css"/>
        </includes>
      </resources>
      <resources production="false">
        <includes>
          <script name="/webjars/webcomponents__custom-elements/1.2.1/externs/custom-elements.js"/>
          <script name="/webjars/tether/1.4.0/js/tether.js"/>
          <script name="/webjars/popper.js/1.14.3/umd/popper.js"/>
          <script name="/tobago/standard/${project.version}/js/jsf-development.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-polyfill.js"/>
          <script type="module" name="/tobago/standard/${project.version}/js/bundle.js"/>
<!--
          <script name="/tobago/standard/${project.version}/js/ext-bootstrap.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-listener.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-core.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-dropdown.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-date.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-command.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-file.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-focus.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-header-footer.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-in.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-jsf.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-overlay.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-panel.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-popover.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-popup.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-reload.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-scroll.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-select-....js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-sheet.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-split-layout.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-stars.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-suggest.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-tab.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-tree.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-tree-listbox.js"/>
          <script name="/tobago/standard/${project.version}/js/tobago-utils.js"/>
-->
          <style name="/webjars/tether/1.4.0/css/tether.css"/>
          <style name="/tobago/standard/${project.version}/css/tobago.css"/>
          <style name="/webjars/font-awesome/4.7.0/css/font-awesome.css"/>
        </includes>
      </resources>
    </theme-definition>
  </theme-definitions>
</tobago-config>
