From a6b340c0c8c890fd8385076330dc2d8348c25447 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Mon, 17 Feb 2025 20:40:06 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Elevate=20Settings=20category=20?= =?UTF-8?q?icon=20background?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Material3 style Settings items * Reformatted code --- .../book_story/domain/browse/BrowseLayout.kt | 3 + .../domain/browse/BrowseSortOrder.kt | 3 + .../library/category/CategoryWithBooks.kt | 2 + .../domain/reader/ReaderColorEffects.kt | 3 + .../domain/reader/ReaderHorizontalGesture.kt | 3 + .../domain/reader/ReaderScreenOrientation.kt | 2 + .../book_story/domain/ui/DarkTheme.kt | 31 ++++ .../book_story/domain/ui/PureDark.kt | 34 ++++ .../book_story/domain/ui/ThemeContrast.kt | 20 +++ .../presentation/reader/ReaderBottomBar.kt | 4 +- .../presentation/reader/ReaderTopBar.kt | 4 +- .../presentation/settings/SettingsLayout.kt | 4 + .../settings/SettingsLayoutItem.kt | 15 +- .../components/AbsoluteDarkOption.kt | 4 +- .../components/AppThemeOption.kt | 6 +- .../components/DarkThemeOption.kt | 2 +- .../components/PureDarkOption.kt | 4 +- .../components/ThemeContrastOption.kt | 6 +- .../book_story/ui/main/MainActivity.kt | 4 +- .../acclorite/book_story/ui/main/MainModel.kt | 6 +- .../acclorite/book_story/ui/main/MainState.kt | 12 +- .../book_story/ui/theme/Animations.kt | 82 ++++++++++ .../ua/acclorite/book_story/ui/theme/Color.kt | 1 + .../ua/acclorite/book_story/ui/theme/Theme.kt | 145 +----------------- .../book_story/ui/theme/ThemeExtensions.kt | 25 +++ .../book_story/ui/theme/color/AquaTheme.kt | 2 +- .../book_story/ui/theme/color/BlueTheme.kt | 2 +- .../book_story/ui/theme/color/GreenTheme.kt | 2 +- .../ui/theme/color/LavenderTheme.kt | 2 +- .../book_story/ui/theme/color/MarshTheme.kt | 2 +- .../book_story/ui/theme/color/PinkTheme.kt | 2 +- .../book_story/ui/theme/color/PurpleTheme.kt | 2 +- .../book_story/ui/theme/color/RedTheme.kt | 2 +- .../book_story/ui/theme/color/YellowTheme.kt | 2 +- 34 files changed, 261 insertions(+), 182 deletions(-) create mode 100644 app/src/main/java/ua/acclorite/book_story/domain/ui/DarkTheme.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/domain/ui/PureDark.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/domain/ui/ThemeContrast.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/ui/theme/Animations.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/ui/theme/ThemeExtensions.kt diff --git a/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseLayout.kt b/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseLayout.kt index b7cd8c4b..23c5b58b 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseLayout.kt @@ -6,6 +6,9 @@ package ua.acclorite.book_story.domain.browse +import androidx.compose.runtime.Immutable + +@Immutable enum class BrowseLayout { LIST, GRID } diff --git a/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseSortOrder.kt b/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseSortOrder.kt index 77a01b1f..8711542b 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseSortOrder.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/browse/BrowseSortOrder.kt @@ -6,6 +6,9 @@ package ua.acclorite.book_story.domain.browse +import androidx.compose.runtime.Immutable + +@Immutable enum class BrowseSortOrder { NAME, FILE_FORMAT, diff --git a/app/src/main/java/ua/acclorite/book_story/domain/library/category/CategoryWithBooks.kt b/app/src/main/java/ua/acclorite/book_story/domain/library/category/CategoryWithBooks.kt index 7fc187a1..6bfe94e7 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/library/category/CategoryWithBooks.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/library/category/CategoryWithBooks.kt @@ -6,9 +6,11 @@ package ua.acclorite.book_story.domain.library.category +import androidx.compose.runtime.Immutable import ua.acclorite.book_story.domain.library.book.SelectableBook import ua.acclorite.book_story.domain.ui.UIText +@Immutable data class CategoryWithBooks( val category: Category, val title: UIText, diff --git a/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderColorEffects.kt b/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderColorEffects.kt index d4a54b98..bce340dc 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderColorEffects.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderColorEffects.kt @@ -6,6 +6,9 @@ package ua.acclorite.book_story.domain.reader +import androidx.compose.runtime.Immutable + +@Immutable enum class ReaderColorEffects { OFF, GRAYSCALE, diff --git a/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderHorizontalGesture.kt b/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderHorizontalGesture.kt index 6928dede..5fcdfced 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderHorizontalGesture.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderHorizontalGesture.kt @@ -6,6 +6,9 @@ package ua.acclorite.book_story.domain.reader +import androidx.compose.runtime.Immutable + +@Immutable enum class ReaderHorizontalGesture { OFF, ON, diff --git a/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderScreenOrientation.kt b/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderScreenOrientation.kt index 7fb6fc17..70db3d58 100644 --- a/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderScreenOrientation.kt +++ b/app/src/main/java/ua/acclorite/book_story/domain/reader/ReaderScreenOrientation.kt @@ -7,7 +7,9 @@ package ua.acclorite.book_story.domain.reader import android.content.pm.ActivityInfo +import androidx.compose.runtime.Immutable +@Immutable enum class ReaderScreenOrientation(val code: Int) { DEFAULT(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED), FREE(ActivityInfo.SCREEN_ORIENTATION_USER), diff --git a/app/src/main/java/ua/acclorite/book_story/domain/ui/DarkTheme.kt b/app/src/main/java/ua/acclorite/book_story/domain/ui/DarkTheme.kt new file mode 100644 index 00000000..8c927728 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/domain/ui/DarkTheme.kt @@ -0,0 +1,31 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2025 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package ua.acclorite.book_story.domain.ui + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable + +@Immutable +enum class DarkTheme { + FOLLOW_SYSTEM, + OFF, + ON +} + +fun String.toDarkTheme(): DarkTheme { + return DarkTheme.valueOf(this) +} + +@Composable +fun DarkTheme.isDark(): Boolean { + return when (this) { + DarkTheme.FOLLOW_SYSTEM -> isSystemInDarkTheme() + DarkTheme.ON -> true + DarkTheme.OFF -> false + } +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/domain/ui/PureDark.kt b/app/src/main/java/ua/acclorite/book_story/domain/ui/PureDark.kt new file mode 100644 index 00000000..6df0370f --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/domain/ui/PureDark.kt @@ -0,0 +1,34 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2025 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package ua.acclorite.book_story.domain.ui + +import android.content.Context +import android.os.PowerManager +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable + +@Immutable +enum class PureDark { + OFF, + ON, + SAVER +} + +fun String.toPureDark(): PureDark { + return PureDark.valueOf(this) +} + +@Composable +fun PureDark.isPureDark(context: Context): Boolean { + val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager + + return when (this) { + PureDark.OFF -> false + PureDark.ON -> true + PureDark.SAVER -> powerManager.isPowerSaveMode + } +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/domain/ui/ThemeContrast.kt b/app/src/main/java/ua/acclorite/book_story/domain/ui/ThemeContrast.kt new file mode 100644 index 00000000..84d49783 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/domain/ui/ThemeContrast.kt @@ -0,0 +1,20 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2025 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package ua.acclorite.book_story.domain.ui + +import androidx.compose.runtime.Immutable + +@Immutable +enum class ThemeContrast { + STANDARD, + MEDIUM, + HIGH +} + +fun String.toThemeContrast(): ThemeContrast { + return ThemeContrast.valueOf(this) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt index cb5af629..26f1df17 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderBottomBar.kt @@ -38,8 +38,8 @@ import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.ui.reader.ReaderEvent -import ua.acclorite.book_story.ui.theme.Colors import ua.acclorite.book_story.ui.theme.HorizontalExpandingTransition +import ua.acclorite.book_story.ui.theme.readerBarsColor @Composable fun ReaderBottomBar( @@ -75,7 +75,7 @@ fun ReaderBottomBar( Column( Modifier .fillMaxWidth() - .background(Colors.readerSystemBarsColor) + .background(MaterialTheme.colorScheme.readerBarsColor) .noRippleClickable(onClick = {}) .navigationBarsPadding() .padding(horizontal = 18.dp), diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderTopBar.kt index 94bceebd..3fd8f729 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderTopBar.kt @@ -37,7 +37,7 @@ import ua.acclorite.book_story.presentation.core.util.LocalActivity import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.ui.reader.ReaderEvent import ua.acclorite.book_story.ui.settings.SettingsEvent -import ua.acclorite.book_story.ui.theme.Colors +import ua.acclorite.book_story.ui.theme.readerBarsColor @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) @Composable @@ -64,7 +64,7 @@ fun ReaderTopBar( Column( Modifier .fillMaxWidth() - .background(Colors.readerSystemBarsColor) + .background(MaterialTheme.colorScheme.readerBarsColor) .readerColorPresetChange( colorPresetChangeEnabled = fastColorPresetChange, isLoading = isLoading, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayout.kt index ab43dbdc..c4b32634 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayout.kt @@ -40,6 +40,7 @@ fun SettingsLayout( ) { item { SettingsLayoutItem( + index = 0, icon = Icons.Outlined.DisplaySettings, title = stringResource(id = R.string.general_settings), description = stringResource(id = R.string.general_settings_desc) @@ -50,6 +51,7 @@ fun SettingsLayout( item { SettingsLayoutItem( + index = 1, icon = Icons.Outlined.Palette, title = stringResource(id = R.string.appearance_settings), description = stringResource(id = R.string.appearance_settings_desc) @@ -60,6 +62,7 @@ fun SettingsLayout( item { SettingsLayoutItem( + index = 2, icon = Icons.Outlined.LocalLibrary, title = stringResource(id = R.string.reader_settings), description = stringResource(id = R.string.reader_settings_desc) @@ -70,6 +73,7 @@ fun SettingsLayout( item { SettingsLayoutItem( + index = 3, icon = Icons.Outlined.Explore, title = stringResource(id = R.string.browse_settings), description = stringResource(id = R.string.browse_settings_desc) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayoutItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayoutItem.kt index 7e0ed992..2c12b45d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayoutItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsLayoutItem.kt @@ -6,6 +6,7 @@ package ua.acclorite.book_story.presentation.settings +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -13,6 +14,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme @@ -24,9 +26,11 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.presentation.core.components.common.StyledText +import ua.acclorite.book_story.ui.theme.dynamicListItemColor @Composable fun SettingsLayoutItem( + index: Int, icon: ImageVector, title: String, description: String, @@ -37,16 +41,21 @@ fun SettingsLayoutItem( .fillMaxWidth() .clip(MaterialTheme.shapes.extraLarge) .clickable { onClick() } - .padding(vertical = 20.dp, horizontal = 24.dp), + .padding(vertical = 18.dp, horizontal = 24.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(18.dp) ) { Icon( imageVector = icon, contentDescription = null, - modifier = Modifier.size(24.dp), - tint = MaterialTheme.colorScheme.onSurfaceVariant + modifier = Modifier + .clip(CircleShape) + .background(MaterialTheme.colorScheme.dynamicListItemColor(index)) + .padding(12.dp) + .size(24.dp), + tint = MaterialTheme.colorScheme.onSurface ) + Column { StyledText( text = title, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AbsoluteDarkOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AbsoluteDarkOption.kt index efa93cc2..67ef1a8a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AbsoluteDarkOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AbsoluteDarkOption.kt @@ -12,12 +12,12 @@ import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R +import ua.acclorite.book_story.domain.ui.isDark +import ua.acclorite.book_story.domain.ui.isPureDark import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel import ua.acclorite.book_story.ui.theme.ExpandingTransition -import ua.acclorite.book_story.ui.theme.isDark -import ua.acclorite.book_story.ui.theme.isPureDark @Composable fun AbsoluteDarkOption() { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AppThemeOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AppThemeOption.kt index 571838a4..6b3161cb 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AppThemeOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/AppThemeOption.kt @@ -42,16 +42,16 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R +import ua.acclorite.book_story.domain.ui.ThemeContrast +import ua.acclorite.book_story.domain.ui.isDark +import ua.acclorite.book_story.domain.ui.isPureDark import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel import ua.acclorite.book_story.ui.theme.Theme -import ua.acclorite.book_story.ui.theme.ThemeContrast import ua.acclorite.book_story.ui.theme.animatedColorScheme -import ua.acclorite.book_story.ui.theme.isDark -import ua.acclorite.book_story.ui.theme.isPureDark @Composable fun AppThemeOption() { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/DarkThemeOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/DarkThemeOption.kt index 9a199407..c38435f0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/DarkThemeOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/DarkThemeOption.kt @@ -13,10 +13,10 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem +import ua.acclorite.book_story.domain.ui.DarkTheme import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel -import ua.acclorite.book_story.ui.theme.DarkTheme @Composable fun DarkThemeOption() { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/PureDarkOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/PureDarkOption.kt index 61e1aef4..f00a1034 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/PureDarkOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/PureDarkOption.kt @@ -13,12 +13,12 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem +import ua.acclorite.book_story.domain.ui.PureDark +import ua.acclorite.book_story.domain.ui.isDark import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel import ua.acclorite.book_story.ui.theme.ExpandingTransition -import ua.acclorite.book_story.ui.theme.PureDark -import ua.acclorite.book_story.ui.theme.isDark @Composable fun PureDarkOption() { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/ThemeContrastOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/ThemeContrastOption.kt index 0eedd12f..55d30414 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/ThemeContrastOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/theme_preferences/components/ThemeContrastOption.kt @@ -17,14 +17,14 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem +import ua.acclorite.book_story.domain.ui.ThemeContrast +import ua.acclorite.book_story.domain.ui.isDark +import ua.acclorite.book_story.domain.ui.isPureDark import ua.acclorite.book_story.presentation.core.components.settings.SegmentedButtonWithTitle import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel import ua.acclorite.book_story.ui.theme.BookStoryTheme import ua.acclorite.book_story.ui.theme.ExpandingTransition -import ua.acclorite.book_story.ui.theme.ThemeContrast -import ua.acclorite.book_story.ui.theme.isDark -import ua.acclorite.book_story.ui.theme.isPureDark @Composable fun ThemeContrastOption() { diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainActivity.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainActivity.kt index b3fa1818..d625025d 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainActivity.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainActivity.kt @@ -25,6 +25,8 @@ import okhttp3.internal.immutableListOf import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.navigator.NavigatorItem import ua.acclorite.book_story.domain.navigator.StackEvent +import ua.acclorite.book_story.domain.ui.isDark +import ua.acclorite.book_story.domain.ui.isPureDark import ua.acclorite.book_story.presentation.core.components.navigation_bar.NavigationBar import ua.acclorite.book_story.presentation.core.components.navigation_rail.NavigationRail import ua.acclorite.book_story.presentation.main.MainActivityKeyboardManager @@ -40,8 +42,6 @@ import ua.acclorite.book_story.ui.settings.SettingsModel import ua.acclorite.book_story.ui.start.StartScreen import ua.acclorite.book_story.ui.theme.BookStoryTheme import ua.acclorite.book_story.ui.theme.Transitions -import ua.acclorite.book_story.ui.theme.isDark -import ua.acclorite.book_story.ui.theme.isPureDark import java.lang.reflect.Field diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt index 9510fe4a..35475650 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt @@ -30,6 +30,9 @@ import ua.acclorite.book_story.domain.reader.toHorizontalGesture import ua.acclorite.book_story.domain.reader.toProgressCount import ua.acclorite.book_story.domain.reader.toReaderScreenOrientation import ua.acclorite.book_story.domain.reader.toTextAlignment +import ua.acclorite.book_story.domain.ui.toDarkTheme +import ua.acclorite.book_story.domain.ui.toPureDark +import ua.acclorite.book_story.domain.ui.toThemeContrast import ua.acclorite.book_story.domain.use_case.data_store.ChangeLanguage import ua.acclorite.book_story.domain.use_case.data_store.GetAllSettings import ua.acclorite.book_story.domain.use_case.data_store.SetDatastore @@ -38,10 +41,7 @@ import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.constants.provideMainState -import ua.acclorite.book_story.ui.theme.toDarkTheme -import ua.acclorite.book_story.ui.theme.toPureDark import ua.acclorite.book_story.ui.theme.toTheme -import ua.acclorite.book_story.ui.theme.toThemeContrast import javax.inject.Inject diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt index 55707176..0da9971a 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt @@ -29,20 +29,20 @@ import ua.acclorite.book_story.domain.reader.toHorizontalGesture import ua.acclorite.book_story.domain.reader.toProgressCount import ua.acclorite.book_story.domain.reader.toReaderScreenOrientation import ua.acclorite.book_story.domain.reader.toTextAlignment +import ua.acclorite.book_story.domain.ui.DarkTheme +import ua.acclorite.book_story.domain.ui.PureDark +import ua.acclorite.book_story.domain.ui.ThemeContrast +import ua.acclorite.book_story.domain.ui.toDarkTheme +import ua.acclorite.book_story.domain.ui.toPureDark +import ua.acclorite.book_story.domain.ui.toThemeContrast import ua.acclorite.book_story.domain.util.HorizontalAlignment import ua.acclorite.book_story.domain.util.toHorizontalAlignment import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants import ua.acclorite.book_story.presentation.core.constants.provideFonts import ua.acclorite.book_story.presentation.core.constants.provideLanguages -import ua.acclorite.book_story.ui.theme.DarkTheme -import ua.acclorite.book_story.ui.theme.PureDark import ua.acclorite.book_story.ui.theme.Theme -import ua.acclorite.book_story.ui.theme.ThemeContrast -import ua.acclorite.book_story.ui.theme.toDarkTheme -import ua.acclorite.book_story.ui.theme.toPureDark import ua.acclorite.book_story.ui.theme.toTheme -import ua.acclorite.book_story.ui.theme.toThemeContrast import java.util.Locale /** diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/Animations.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/Animations.kt new file mode 100644 index 00000000..a33e5c31 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/Animations.kt @@ -0,0 +1,82 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2025 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package ua.acclorite.book_story.ui.theme + +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.core.tween +import androidx.compose.material3.ColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import ua.acclorite.book_story.domain.ui.ThemeContrast + +@Composable +private fun animateColor(targetColor: Color): Color { + return animateColorAsState( + targetValue = targetColor, + animationSpec = tween(300), + label = "" + ).value +} + +@Composable +fun animateColorScheme(targetColorScheme: ColorScheme): ColorScheme { + return ColorScheme( + primary = animateColor(targetColor = targetColorScheme.primary), + onPrimary = animateColor(targetColor = targetColorScheme.onPrimary), + primaryContainer = animateColor(targetColor = targetColorScheme.primaryContainer), + onPrimaryContainer = animateColor(targetColor = targetColorScheme.onPrimaryContainer), + secondary = animateColor(targetColor = targetColorScheme.secondary), + onSecondary = animateColor(targetColor = targetColorScheme.onSecondary), + secondaryContainer = animateColor(targetColor = targetColorScheme.secondaryContainer), + onSecondaryContainer = animateColor(targetColor = targetColorScheme.onSecondaryContainer), + tertiary = animateColor(targetColor = targetColorScheme.tertiary), + onTertiary = animateColor(targetColor = targetColorScheme.onTertiary), + tertiaryContainer = animateColor(targetColor = targetColorScheme.tertiaryContainer), + onTertiaryContainer = animateColor(targetColor = targetColorScheme.onTertiaryContainer), + error = animateColor(targetColor = targetColorScheme.error), + errorContainer = animateColor(targetColor = targetColorScheme.errorContainer), + onError = animateColor(targetColor = targetColorScheme.onError), + onErrorContainer = animateColor(targetColor = targetColorScheme.onErrorContainer), + background = animateColor(targetColor = targetColorScheme.background), + onBackground = animateColor(targetColor = targetColorScheme.onBackground), + surface = animateColor(targetColor = targetColorScheme.surface), + onSurface = animateColor(targetColor = targetColorScheme.onSurface), + surfaceVariant = animateColor(targetColor = targetColorScheme.surfaceVariant), + onSurfaceVariant = animateColor(targetColor = targetColorScheme.onSurfaceVariant), + outline = animateColor(targetColor = targetColorScheme.outline), + inverseOnSurface = animateColor(targetColor = targetColorScheme.inverseOnSurface), + inverseSurface = animateColor(targetColor = targetColorScheme.inverseSurface), + inversePrimary = animateColor(targetColor = targetColorScheme.inversePrimary), + surfaceTint = animateColor(targetColor = targetColorScheme.surfaceTint), + outlineVariant = animateColor(targetColor = targetColorScheme.outlineVariant), + scrim = animateColor(targetColor = targetColorScheme.scrim), + surfaceBright = animateColor(targetColor = targetColorScheme.surfaceBright), + surfaceDim = animateColor(targetColor = targetColorScheme.surfaceDim), + surfaceContainer = animateColor(targetColor = targetColorScheme.surfaceContainer), + surfaceContainerHigh = animateColor(targetColor = targetColorScheme.surfaceContainerHigh), + surfaceContainerHighest = animateColor(targetColor = targetColorScheme.surfaceContainerHighest), + surfaceContainerLow = animateColor(targetColor = targetColorScheme.surfaceContainerLow), + surfaceContainerLowest = animateColor(targetColor = targetColorScheme.surfaceContainerLowest), + ) +} + +@Composable +fun animatedColorScheme( + theme: Theme, + isDark: Boolean, + isPureDark: Boolean, + themeContrast: ThemeContrast +): ColorScheme { + val colorScheme = colorScheme( + theme = theme, + darkTheme = isDark, + isPureDark = isPureDark, + themeContrast = themeContrast + ) + + return animateColorScheme(targetColorScheme = colorScheme) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/Color.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/Color.kt index 6cf5197b..e7024da2 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/Color.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/Color.kt @@ -12,6 +12,7 @@ import androidx.compose.material3.ColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import ua.acclorite.book_story.R +import ua.acclorite.book_story.domain.ui.ThemeContrast import ua.acclorite.book_story.ui.theme.color.aquaTheme import ua.acclorite.book_story.ui.theme.color.blackTheme import ua.acclorite.book_story.ui.theme.color.blueTheme diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/Theme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/Theme.kt index 51674b41..7265fac6 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/Theme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/Theme.kt @@ -7,85 +7,16 @@ package ua.acclorite.book_story.ui.theme import android.app.Activity -import android.content.Context import android.os.Build -import android.os.Parcelable -import android.os.PowerManager import android.view.View -import androidx.annotation.Keep -import androidx.compose.animation.animateColorAsState -import androidx.compose.animation.core.tween -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.ColorScheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Shapes import androidx.compose.material3.Typography import androidx.compose.runtime.Composable -import androidx.compose.runtime.Immutable import androidx.compose.runtime.SideEffect -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat -import kotlinx.parcelize.Parcelize - -@Immutable -@Keep -@Parcelize -enum class PureDark : Parcelable { - OFF, - ON, - SAVER -} - -@Immutable -@Keep -@Parcelize -enum class ThemeContrast : Parcelable { - STANDARD, - MEDIUM, - HIGH -} - -@Immutable -@Keep -@Parcelize -enum class DarkTheme : Parcelable { - FOLLOW_SYSTEM, - OFF, - ON -} - -fun String.toDarkTheme(): DarkTheme { - return DarkTheme.valueOf(this) -} - -fun String.toPureDark(): PureDark { - return PureDark.valueOf(this) -} - -fun String.toThemeContrast(): ThemeContrast { - return ThemeContrast.valueOf(this) -} - -@Composable -fun DarkTheme.isDark(): Boolean { - return when (this) { - DarkTheme.FOLLOW_SYSTEM -> isSystemInDarkTheme() - DarkTheme.ON -> true - DarkTheme.OFF -> false - } -} - -@Composable -fun PureDark.isPureDark(context: Context): Boolean { - val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager - - return when (this) { - PureDark.OFF -> false - PureDark.ON -> true - PureDark.SAVER -> powerManager.isPowerSaveMode - } -} +import ua.acclorite.book_story.domain.ui.ThemeContrast @Composable fun BookStoryTheme( @@ -128,78 +59,4 @@ fun BookStoryTheme( typography = Typography(), content = content ) -} - -object Colors { - val readerSystemBarsColor: Color - @Composable - get() = MaterialTheme.colorScheme.surfaceContainer.copy(0.9f) -} - -@Composable -private fun animateColor(targetColor: Color): Color { - return animateColorAsState( - targetValue = targetColor, - animationSpec = tween(300), - label = "" - ).value -} - -@Composable -private fun animateColorScheme(targetColorScheme: ColorScheme): ColorScheme { - return ColorScheme( - primary = animateColor(targetColor = targetColorScheme.primary), - onPrimary = animateColor(targetColor = targetColorScheme.onPrimary), - primaryContainer = animateColor(targetColor = targetColorScheme.primaryContainer), - onPrimaryContainer = animateColor(targetColor = targetColorScheme.onPrimaryContainer), - secondary = animateColor(targetColor = targetColorScheme.secondary), - onSecondary = animateColor(targetColor = targetColorScheme.onSecondary), - secondaryContainer = animateColor(targetColor = targetColorScheme.secondaryContainer), - onSecondaryContainer = animateColor(targetColor = targetColorScheme.onSecondaryContainer), - tertiary = animateColor(targetColor = targetColorScheme.tertiary), - onTertiary = animateColor(targetColor = targetColorScheme.onTertiary), - tertiaryContainer = animateColor(targetColor = targetColorScheme.tertiaryContainer), - onTertiaryContainer = animateColor(targetColor = targetColorScheme.onTertiaryContainer), - error = animateColor(targetColor = targetColorScheme.error), - errorContainer = animateColor(targetColor = targetColorScheme.errorContainer), - onError = animateColor(targetColor = targetColorScheme.onError), - onErrorContainer = animateColor(targetColor = targetColorScheme.onErrorContainer), - background = animateColor(targetColor = targetColorScheme.background), - onBackground = animateColor(targetColor = targetColorScheme.onBackground), - surface = animateColor(targetColor = targetColorScheme.surface), - onSurface = animateColor(targetColor = targetColorScheme.onSurface), - surfaceVariant = animateColor(targetColor = targetColorScheme.surfaceVariant), - onSurfaceVariant = animateColor(targetColor = targetColorScheme.onSurfaceVariant), - outline = animateColor(targetColor = targetColorScheme.outline), - inverseOnSurface = animateColor(targetColor = targetColorScheme.inverseOnSurface), - inverseSurface = animateColor(targetColor = targetColorScheme.inverseSurface), - inversePrimary = animateColor(targetColor = targetColorScheme.inversePrimary), - surfaceTint = animateColor(targetColor = targetColorScheme.surfaceTint), - outlineVariant = animateColor(targetColor = targetColorScheme.outlineVariant), - scrim = animateColor(targetColor = targetColorScheme.scrim), - surfaceBright = animateColor(targetColor = targetColorScheme.surfaceBright), - surfaceDim = animateColor(targetColor = targetColorScheme.surfaceDim), - surfaceContainer = animateColor(targetColor = targetColorScheme.surfaceContainer), - surfaceContainerHigh = animateColor(targetColor = targetColorScheme.surfaceContainerHigh), - surfaceContainerHighest = animateColor(targetColor = targetColorScheme.surfaceContainerHighest), - surfaceContainerLow = animateColor(targetColor = targetColorScheme.surfaceContainerLow), - surfaceContainerLowest = animateColor(targetColor = targetColorScheme.surfaceContainerLowest), - ) -} - -@Composable -fun animatedColorScheme( - theme: Theme, - isDark: Boolean, - isPureDark: Boolean, - themeContrast: ThemeContrast -): ColorScheme { - val colorScheme = colorScheme( - theme = theme, - darkTheme = isDark, - isPureDark = isPureDark, - themeContrast = themeContrast - ) - - return animateColorScheme(targetColorScheme = colorScheme) } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/ThemeExtensions.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/ThemeExtensions.kt new file mode 100644 index 00000000..7d97e9a6 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/ThemeExtensions.kt @@ -0,0 +1,25 @@ +/* + * Book's Story — free and open-source Material You eBook reader. + * Copyright (C) 2024-2025 Acclorite + * SPDX-License-Identifier: GPL-3.0-only + */ + +package ua.acclorite.book_story.ui.theme + +import androidx.compose.material3.ColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color + +val ColorScheme.readerBarsColor: Color + get() = surfaceContainer.copy(0.9f) + +@Composable +fun ColorScheme.dynamicListItemColor( + index: Int +): Color { + return when (index % 3) { + 0 -> surfaceContainerLow + 1 -> surfaceContainerHigh + else -> surfaceContainer + } +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/AquaTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/AquaTheme.kt index 8f28abf1..b3016fe7 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/AquaTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/AquaTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF116682) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/BlueTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/BlueTheme.kt index a0ab860d..23be04de 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/BlueTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/BlueTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF485D92) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/GreenTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/GreenTheme.kt index 9a3f2b29..74bf7164 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/GreenTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/GreenTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF306A42) private val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/LavenderTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/LavenderTheme.kt index 83c72c94..1c062946 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/LavenderTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/LavenderTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF824C76) private val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/MarshTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/MarshTheme.kt index 7d2bef73..73b88259 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/MarshTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/MarshTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF006A65) private val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PinkTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PinkTheme.kt index a776cc3f..c9688a77 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PinkTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PinkTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF8C4A60) private val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PurpleTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PurpleTheme.kt index 37fe04f1..711e8dec 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PurpleTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/PurpleTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF725188) private val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/RedTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/RedTheme.kt index fb423b17..e5c01396 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/RedTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/RedTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF904A42) private val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/YellowTheme.kt b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/YellowTheme.kt index 1d0a07c6..a954af3e 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/theme/color/YellowTheme.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/theme/color/YellowTheme.kt @@ -11,7 +11,7 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import ua.acclorite.book_story.ui.theme.ThemeContrast +import ua.acclorite.book_story.domain.ui.ThemeContrast private val primaryLight = Color(0xFF845415) private val onPrimaryLight = Color(0xFFFFFFFF)