├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── anim │ │ │ │ ├── slide_in_right.xml │ │ │ │ └── slide_out_left.xml │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── drawable │ │ │ │ ├── ic_dark.xml │ │ │ │ ├── ic_newzz_error.xml │ │ │ │ ├── ic_general.xml │ │ │ │ ├── ic_tech.xml │ │ │ │ ├── ic_light.xml │ │ │ │ ├── ic_business.xml │ │ │ │ └── ic_launcher_background.xml │ │ │ └── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── akash │ │ │ │ └── newzz_compose │ │ │ │ ├── NewzzApplication.kt │ │ │ │ ├── ui │ │ │ │ ├── newzzappui │ │ │ │ │ ├── ArticleListUiState.kt │ │ │ │ │ ├── BottomBar.kt │ │ │ │ │ ├── TopAppBar.kt │ │ │ │ │ ├── NewzzAppUI.kt │ │ │ │ │ ├── NewzzListContainer.kt │ │ │ │ │ └── ArticleList.kt │ │ │ │ ├── style │ │ │ │ │ ├── TextStyle.kt │ │ │ │ │ └── Theme.kt │ │ │ │ ├── NewzzActivity.kt │ │ │ │ └── commoncomposable │ │ │ │ │ └── CommonComposables.kt │ │ │ │ ├── di │ │ │ │ ├── RepositoryModule.kt │ │ │ │ └── NewzzActivityModule.kt │ │ │ │ ├── other │ │ │ │ └── Category.kt │ │ │ │ ├── util │ │ │ │ └── CustomTabUtil.kt │ │ │ │ └── viewmodel │ │ │ │ └── NewzzViewModel.kt │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── akash │ │ │ └── newzz_compose │ │ │ └── ExampleUnitTest.kt │ └── androidTest │ │ └── java │ │ └── com │ │ └── akash │ │ └── newzz_compose │ │ └── ExampleInstrumentedTest.kt ├── proguard-rules.pro └── build.gradle ├── data ├── .gitignore ├── consumer-rules.pro ├── src │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── akash │ │ │ └── newzz │ │ │ └── data │ │ │ ├── Constants.kt │ │ │ ├── response │ │ │ ├── NewsSource.kt │ │ │ ├── NewsError.kt │ │ │ ├── NewsResponse.kt │ │ │ └── NewsArticle.kt │ │ │ ├── Result.kt │ │ │ ├── repository │ │ │ ├── NewsRepository.kt │ │ │ └── NewsRepositoryImpl.kt │ │ │ ├── BaseApplication.kt │ │ │ └── apiservice │ │ │ └── NewzzApiService.kt │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── akash │ │ │ └── newzz │ │ │ └── data │ │ │ └── ExampleUnitTest.kt │ └── androidTest │ │ └── java │ │ └── com │ │ └── akash │ │ └── newzz │ │ └── data │ │ └── ExampleInstrumentedTest.kt ├── proguard-rules.pro └── build.gradle ├── .idea ├── .name ├── dictionaries │ └── nbt762.xml ├── compiler.xml ├── vcs.xml ├── render.experimental.xml ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml ├── runConfigurations.xml ├── gradle.xml ├── jarRepositories.xml └── codeStyles ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── README.md ├── gradle.properties ├── gradlew.bat └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /data/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /data/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Newzz-Compose -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':data' 2 | include ':app' 3 | rootProject.name = "Newzz-Compose" -------------------------------------------------------------------------------- /.idea/dictionaries/nbt762.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akashkamble/Newzz-Compose/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/render.experimental.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_in_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_out_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /data/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | / 5 | 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 05 18:29:18 IST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip 7 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/Constants.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data 2 | 3 | /** 4 | * Created by Akash on 06/06/20 5 | */ 6 | object Constants { 7 | val API_KEY: String 8 | get() = BuildConfig.API_KEY 9 | val COUNTRY: String 10 | get() = "in" 11 | } 12 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/response/NewsSource.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data.response 2 | 3 | import com.squareup.moshi.JsonClass 4 | 5 | /** 6 | * Created by Akash on 06/06/20 7 | */ 8 | 9 | @JsonClass(generateAdapter = true) 10 | data class NewsSource( 11 | val name: String? 12 | ) 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Newzz-Compose 3 | General 4 | Business 5 | Technology 6 | Retry 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/Result.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data 2 | 3 | /** 4 | * Created by Akash on 02/07/20 5 | */ 6 | 7 | sealed class Result { 8 | data class Success(val data: T) : Result() 9 | data class Error(val errorMessage: String, val showRetry: Boolean = true) : Result() 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #6200EE 4 | #3700B3 5 | #03DAC5 6 | #FF121212 7 | #FF4a148c 8 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/response/NewsError.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data.response 2 | 3 | import com.squareup.moshi.JsonClass 4 | 5 | /** 6 | * Created by Akash on 06/06/20 7 | */ 8 | 9 | @JsonClass(generateAdapter = true) 10 | data class NewsError( 11 | val code: String, 12 | 13 | val message: String, 14 | 15 | val status: String 16 | ) 17 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/response/NewsResponse.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data.response 2 | 3 | import com.squareup.moshi.JsonClass 4 | 5 | /** 6 | * Created by Akash on 06/06/20 7 | */ 8 | @JsonClass(generateAdapter = true) 9 | data class NewsResponse( 10 | val articles: List, 11 | 12 | var status: String, 13 | 14 | val totalResults: Int 15 | ) 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/akash/newzz_compose/NewzzApplication.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose 2 | 3 | import com.akash.newzz.data.BaseApplication 4 | import dagger.hilt.android.HiltAndroidApp 5 | 6 | /** 7 | * Created by Akash on 28/08/20 8 | */ 9 | @HiltAndroidApp 10 | class NewzzApplication : BaseApplication() { 11 | override fun onCreate() { 12 | super.onCreate() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/repository/NewsRepository.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data.repository 2 | 3 | import com.akash.newzz.data.Result 4 | import com.akash.newzz.data.response.NewsResponse 5 | 6 | /** 7 | * Created by Akash on 06/06/20 8 | */ 9 | interface NewsRepository { 10 | suspend fun getArticlesByCategoryAsync(category: String, page: Int): Result 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/akash/newzz_compose/ui/newzzappui/ArticleListUiState.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose.ui.newzzappui 2 | 3 | import com.akash.newzz.data.Result 4 | import com.akash.newzz.data.response.NewsArticle 5 | 6 | /** 7 | * Created by Akash on 29/08/20 8 | */ 9 | 10 | data class ArticleListUiState( 11 | val isLoading: Boolean = true, 12 | val list: List? = emptyList(), 13 | val error: Result.Error? = null 14 | ) 15 | -------------------------------------------------------------------------------- /data/src/test/java/com/akash/newzz/data/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/test/java/com/akash/newzz_compose/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /data/src/main/java/com/akash/newzz/data/response/NewsArticle.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data.response 2 | 3 | import com.squareup.moshi.JsonClass 4 | 5 | /** 6 | * Created by Akash on 06/06/20 7 | */ 8 | 9 | @JsonClass(generateAdapter = true) 10 | data class NewsArticle( 11 | val publishedAt: String, 12 | 13 | val source: NewsSource, 14 | 15 | val title: String, 16 | 17 | val description: String? = null, 18 | 19 | val url: String? = null, 20 | 21 | val urlToImage: String? = null 22 | ) 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/akash/newzz_compose/di/RepositoryModule.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose.di 2 | 3 | import com.akash.newzz.data.repository.NewsRepository 4 | import com.akash.newzz.data.repository.NewsRepositoryImpl 5 | import dagger.Binds 6 | import dagger.Module 7 | import dagger.hilt.InstallIn 8 | import dagger.hilt.components.SingletonComponent 9 | 10 | @Module 11 | @InstallIn(SingletonComponent::class) 12 | abstract class RepositoryModule { 13 | 14 | @Binds 15 | abstract fun bindNewsRepo( 16 | newsRepository: NewsRepositoryImpl 17 | ): NewsRepository 18 | } 19 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/akash/newzz_compose/di/NewzzActivityModule.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose.di 2 | 3 | import com.akash.newzz.data.apiservice.NewzzApiService 4 | import com.squareup.moshi.Moshi 5 | import dagger.Module 6 | import dagger.Provides 7 | import dagger.hilt.InstallIn 8 | import dagger.hilt.components.SingletonComponent 9 | import javax.inject.Singleton 10 | 11 | /** 12 | * Created by Akash on 28/08/20 13 | */ 14 | 15 | @Module 16 | @InstallIn(SingletonComponent::class) 17 | object NewzzActivityModule { 18 | 19 | @Provides 20 | @Singleton 21 | fun provideMoshi(): Moshi = Moshi.Builder().build() 22 | 23 | @Provides 24 | @Singleton 25 | fun provideNewsApiService(): NewzzApiService = NewzzApiService.invoke() 26 | } 27 | -------------------------------------------------------------------------------- /data/src/androidTest/java/com/akash/newzz/data/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz.data 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.akash.newzz.data.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/androidTest/java/com/akash/newzz_compose/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.akash.newzz_compose", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/main/java/com/akash/newzz_compose/ui/style/TextStyle.kt: -------------------------------------------------------------------------------- 1 | package com.akash.newzz_compose.ui.style 2 | 3 | import androidx.compose.ui.graphics.Color 4 | import androidx.compose.ui.text.TextStyle 5 | import androidx.compose.ui.text.font.FontWeight 6 | import androidx.compose.ui.unit.sp 7 | 8 | /** 9 | * Created by Akash on 28/08/20 10 | */ 11 | 12 | val categoryTitleStyle = TextStyle( 13 | fontWeight = FontWeight.SemiBold, 14 | fontSize = 20.sp, 15 | letterSpacing = 1.1.sp, 16 | color = Color.White 17 | ) 18 | 19 | val articleTitleStyle = TextStyle( 20 | fontWeight = FontWeight.Medium, 21 | fontSize = 16.sp 22 | ) 23 | 24 | val sourceTextStyle = TextStyle( 25 | fontSize = 14.sp 26 | ) 27 | 28 | val dateTextStyle = TextStyle( 29 | fontWeight = FontWeight.ExtraLight, 30 | fontSize = 12.sp 31 | ) 32 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 15 | 16 |