<?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-speyside</name>
  <ordering>
    <after>
      <name>tobago-theme-standard</name>
    </after>
  </ordering>
  <theme-definitions>
    <theme-definition>
      <name>speyside</name>
      <display-name>Speyside</display-name>
      <fallback>standard</fallback>
      <versioned>true</versioned>
      <resources production="true">
        <includes>
          <style name="/tobago/speyside/tobago-bootstrap/${project.version}/css/tobago.min.css"/>
        </includes>
        <excludes>
          <style name="/tobago/standard/tobago-bootstrap/${project.version}/css/tobago.min.css"/>
        </excludes>
      </resources>
      <resources production="false">
        <includes>
          <style name="/tobago/speyside/tobago-bootstrap/${project.version}/css/tobago.css"/>
        </includes>
        <excludes>
          <style name="/tobago/standard/tobago-bootstrap/${project.version}/css/tobago.css"/>
        </excludes>
      </resources>
    </theme-definition>
  </theme-definitions>
</tobago-config>
