/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * 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.
 */


import androidx.build.LibraryType

plugins {
    id("AndroidXPlugin")
    id("AndroidXComposePlugin")
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
}

dependencies {
    api(libs.kotlinStdlib)

    def composeVersion = '1.5.3'
    def composeBetaVersion = "1.5.0-beta01"

    api("androidx.compose.animation:animation:$composeVersion")
    api("androidx.compose.material:material-icons-core:$composeVersion")
    api(project(":tv:tv-foundation"))

    implementation(libs.kotlinStdlibCommon)
    implementation("androidx.profileinstaller:profileinstaller:1.3.1")

    androidTestImplementation(libs.truth)

    androidTestImplementation(project(":compose:ui:ui-test"))
    androidTestImplementation(project(":compose:ui:ui-test-junit4"))
    androidTestImplementation(project(":compose:test-utils"))
    androidTestImplementation(project(":test:screenshot:screenshot"))
    androidTestImplementation(project(":compose:material:material-icons-core"))
    androidTestImplementation(libs.testRunner)

    samples(project(":tv:tv-samples"))
}

android {
    namespace "androidx.tv.material"
    defaultConfig {
        minSdkVersion 21
    }
    sourceSets.androidTest.assets.srcDirs +=
             project.rootDir.absolutePath + "/../../golden/tv/compose/material3"
}

androidx {
    name = "TV Material"
    type = LibraryType.PUBLISHED_LIBRARY
    inceptionYear = "2022"
    description = "build TV applications using controls that adhere to Material Design Language."
    targetsJavaConsumers = false
}
