<?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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.myfaces.tobago</groupId>
    <artifactId>tobago-theme</artifactId>
    <version>5.0.0-SNAPSHOT</version>
  </parent>
  <artifactId>tobago-theme-standard</artifactId>
  <packaging>jar</packaging>
  <name>Tobago Theme Standard</name>

  <properties>
    <theme.name>standard</theme.name>
    <frontend.skip>false</frontend.skip>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.myfaces.core</groupId>
      <artifactId>myfaces-api</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.test</groupId>
      <artifactId>myfaces-test20</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
      <artifactId>tobago-core</artifactId>
      <version>${project.version}</version>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.webjars</groupId>
      <artifactId>jquery</artifactId>
      <version>3.4.1</version>
    </dependency>
    <dependency>
      <groupId>org.webjars</groupId>
      <artifactId>bootstrap</artifactId>
      <version>4.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.webjars</groupId>
        <artifactId>tether</artifactId>
      <version>1.4.0</version>
    </dependency>
    <dependency>
      <groupId>org.webjars</groupId>
        <artifactId>font-awesome</artifactId>
      <version>4.7.0</version>
    </dependency>
    <dependency>
      <groupId>org.webjars</groupId>
        <artifactId>popper.js</artifactId>
      <version>1.14.3</version>
    </dependency>
    <dependency>
      <groupId>org.webjars</groupId>
        <artifactId>momentjs</artifactId>
      <version>2.24.0</version>
    </dependency>
    <dependency>
      <groupId>org.webjars.npm</groupId>
      <artifactId>webcomponents__custom-elements</artifactId>
      <version>1.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.tobago</groupId>
        <artifactId>tobago-pack-typeahead</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>

</project>
