import static de.fayard.refreshVersions.core.Versions.versionFor

plugins {
    id 'com.android.application'
    id "org.jetbrains.kotlin.android"
}

android {
    namespace 'com.airbnb.lottie.issues.compose'
    compileSdk 34
    defaultConfig {
        applicationId "com.airbnb.lottie.issues.compose"
        minSdk 21
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler)
    }
}

dependencies {
    implementation project(':lottie-compose')
    implementation libs.androidx.appcompat
    implementation libs.androidx.activity.compose
    implementation platform(libs.compose.bom)
    implementation libs.compose.ui
    implementation libs.compose.material
    implementation libs.compose.material.icons.extended
    implementation libs.compose.ui.tooling
}
