From 7ac83f933dc2c715df8fc0fbf14d7a0691ebcfd5 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:14:07 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Text=20Direction=20based=20on=20?= =?UTF-8?q?Content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Changed all Texts' Direction to match Content's (e.g. Eng -> LTR, Arabic -> RTL) Resolves: #160 --- .../presentation/about/AboutItem.kt | 24 ++-- .../presentation/about/AboutTopBar.kt | 4 +- .../BookInfoChangeCoverBottomSheetItem.kt | 22 +-- .../BookInfoDetailsBottomSheetItem.kt | 11 +- .../book_info/BookInfoLayoutActionsItem.kt | 9 +- .../book_info/BookInfoLayoutButton.kt | 6 +- .../book_info/BookInfoLayoutDescription.kt | 11 +- .../book_info/BookInfoLayoutInfoAuthor.kt | 15 +-- .../book_info/BookInfoLayoutInfoProgress.kt | 11 +- .../book_info/BookInfoLayoutInfoTitle.kt | 15 +-- .../presentation/book_info/BookInfoTopBar.kt | 13 +- .../browse/BrowseAddDialogItem.kt | 33 +++-- .../presentation/browse/BrowseGridFileItem.kt | 31 +++-- .../presentation/browse/BrowseLayoutHeader.kt | 11 +- .../presentation/browse/BrowseListFileItem.kt | 33 +++-- .../presentation/browse/BrowseTopBar.kt | 15 +-- .../core/components/common/HighlightedText.kt | 9 +- .../core/components/common/SearchTextField.kt | 12 +- .../core/components/common/StyledText.kt | 84 ++++++++++++ .../core/components/common/Tooltip.kt | 3 +- .../core/components/dialog/Dialog.kt | 39 +++--- .../components/dialog/DialogWithTextField.kt | 8 +- .../components/dialog/SelectableDialogItem.kt | 13 +- .../ModalBottomSheetTabRow.kt | 10 +- .../modal_drawer/ModalDrawerTitleItem.kt | 11 +- .../navigation_bar/NavigationBarItem.kt | 8 +- .../navigation_rail/NavigationRailItem.kt | 8 +- .../placeholder/EmptyPlaceholder.kt | 20 +-- .../placeholder/ErrorPlaceholder.kt | 20 +-- .../components/settings/ChipsWithTitle.kt | 6 +- .../settings/SegmentedButtonWithTitle.kt | 11 +- .../components/settings/SliderWithTitle.kt | 20 +-- .../components/settings/SwitchWIthTitle.kt | 18 +-- .../presentation/credits/CreditItem.kt | 38 +++--- .../presentation/credits/CreditsTopBar.kt | 4 +- .../presentation/help/HelpBottomBar.kt | 4 +- .../book_story/presentation/help/HelpItem.kt | 13 +- .../presentation/help/HelpTopBar.kt | 4 +- .../presentation/history/HistoryItem.kt | 32 +++-- .../presentation/history/HistoryTopBar.kt | 4 +- .../presentation/library/LibraryItem.kt | 26 ++-- .../presentation/library/LibraryTabs.kt | 13 +- .../presentation/library/LibraryTopBar.kt | 19 +-- .../license_info/LicenseInfoItem.kt | 22 +-- .../license_info/LicenseInfoTopBar.kt | 10 +- .../presentation/licenses/LicensesItem.kt | 59 +++++---- .../presentation/licenses/LicensesTopBar.kt | 4 +- .../navigator/NavigatorBottomSheetItem.kt | 13 +- .../presentation/reader/ReaderBottomBar.kt | 9 +- .../reader/ReaderChaptersDrawer.kt | 12 +- .../reader/ReaderLayoutTextChapter.kt | 42 ++---- .../reader/ReaderLayoutTextParagraph.kt | 125 ++++++------------ .../presentation/reader/ReaderProgressBar.kt | 15 ++- .../presentation/reader/ReaderTopBar.kt | 31 ++--- .../settings/SettingsLayoutItem.kt | 25 ++-- .../presentation/settings/SettingsTopBar.kt | 4 +- .../appearance/AppearanceSettingsTopBar.kt | 4 +- .../colors/components/ColorPresetOption.kt | 25 ++-- .../components/AppThemeOption.kt | 11 +- .../settings/browse/BrowseSettingsTopBar.kt | 4 +- .../filter/components/BrowseFilterOption.kt | 8 +- .../sort/components/BrowseSortOption.kt | 8 +- .../components/SettingsSubcategoryTitle.kt | 10 +- .../settings/general/GeneralSettingsTopBar.kt | 4 +- .../settings/reader/ReaderSettingsTopBar.kt | 4 +- .../presentation/start/StartDoneBottomBar.kt | 6 +- .../presentation/start/StartDoneLayout.kt | 20 +-- .../start/StartSettingsBottomBar.kt | 4 +- .../StartSettingsLayoutPermissionsItem.kt | 33 ++--- .../start/StartSettingsScaffold.kt | 16 ++- 70 files changed, 639 insertions(+), 610 deletions(-) create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/StyledText.kt diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutItem.kt index a9b68262..9cd0831d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutItem.kt @@ -18,15 +18,14 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.style.TextOverflow 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.presentation.core.components.progress_indicator.CircularProgressIndicator import ua.acclorite.book_story.ui.theme.FadeTransitionPreservingSpace @@ -51,18 +50,19 @@ fun AboutItem( verticalAlignment = Alignment.CenterVertically ) { Column(Modifier.weight(1f)) { - Text( - title, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurface, - fontSize = 18.sp + StyledText( + text = title, + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface, + fontSize = 18.sp + ) ) description?.let { - Text( - it, - overflow = TextOverflow.Ellipsis, - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, + StyledText( + text = it, + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutTopBar.kt index b8bdf5e2..c6f31908 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.about import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun AboutTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.about_screen)) + StyledText(stringResource(id = R.string.about_screen)) }, navigationIcon = { NavigatorBackIconButton(navigateBack = navigateBack) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoChangeCoverBottomSheetItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoChangeCoverBottomSheetItem.kt index e5f25320..d3d0b3ed 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoChangeCoverBottomSheetItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoChangeCoverBottomSheetItem.kt @@ -18,13 +18,13 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier 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 @Composable fun LazyItemScope.BookInfoChangeCoverBottomSheetItem( @@ -54,16 +54,18 @@ fun LazyItemScope.BookInfoChangeCoverBottomSheetItem( Column( verticalArrangement = Arrangement.Center ) { - Text( - text, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurface, - fontSize = 18.sp + StyledText( + text = text, + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface, + fontSize = 18.sp + ) ) - Text( - description, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, + StyledText( + text = description, + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheetItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheetItem.kt index 54d9ba2c..56b3041d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheetItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoDetailsBottomSheetItem.kt @@ -14,15 +14,16 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.EditNote +import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.presentation.core.components.common.IconButton +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun BookInfoDetailsBottomSheetItem( @@ -50,14 +51,16 @@ fun BookInfoDetailsBottomSheetItem( isError = showError, supportingText = if (!showError || errorMessage.isNullOrBlank()) null else { { - Text( + StyledText( text = errorMessage, - color = MaterialTheme.colorScheme.error + style = LocalTextStyle.current.copy( + color = MaterialTheme.colorScheme.error + ) ) } }, label = { - Text(label) + StyledText(label) } ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutActionsItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutActionsItem.kt index 754a1a77..56cee770 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutActionsItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutActionsItem.kt @@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -23,6 +22,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun BookInfoLayoutActionsItem( @@ -61,10 +61,11 @@ fun BookInfoLayoutActionsItem( tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(18.dp) ) - Text( + StyledText( text = title, - style = MaterialTheme.typography.labelMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.labelMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutButton.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutButton.kt index e5527c4a..02d768d7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutButton.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutButton.kt @@ -10,13 +10,13 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Button -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.Book +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.util.calculateProgress @Composable @@ -35,8 +35,8 @@ fun BookInfoLayoutButton( } } ) { - Text( - if (book.progress == 0f) stringResource(id = R.string.start_reading) + StyledText( + text = if (book.progress == 0f) stringResource(id = R.string.start_reading) else stringResource( id = R.string.continue_reading_query, "${book.progress.calculateProgress(1)}%" diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutDescription.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutDescription.kt index 53f72852..ebdec8b2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutDescription.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutDescription.kt @@ -26,7 +26,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -41,6 +40,7 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.Book +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.book_info.BookInfoEvent @@ -97,11 +97,12 @@ fun BookInfoLayoutDescription( ) } ) { - Text( - if (!book.description.isNullOrBlank()) book.description + StyledText( + text = if (!book.description.isNullOrBlank()) book.description else stringResource(id = R.string.error_no_description), - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoAuthor.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoAuthor.kt index 1f1d84b6..c81d6a71 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoAuthor.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoAuthor.kt @@ -14,15 +14,14 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Person import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.Book +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.book_info.BookInfoEvent @@ -42,10 +41,8 @@ fun BookInfoLayoutInfoAuthor( tint = MaterialTheme.colorScheme.onSurfaceVariant ) - Text( - book.author.asString(), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyLarge, + StyledText( + text = book.author.asString(), modifier = Modifier .fillMaxWidth() .noRippleClickable( @@ -54,8 +51,10 @@ fun BookInfoLayoutInfoAuthor( showAuthorDialog(BookInfoEvent.OnShowAuthorDialog) } ), - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + ), + maxLines = 1 ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoProgress.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoProgress.kt index 819b8a23..abc4fea0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoProgress.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoProgress.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.LinearWavyProgressIndicator import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -19,6 +18,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.library.book.Book +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.util.calculateProgress @OptIn(ExperimentalMaterial3ExpressiveApi::class) @@ -42,11 +42,12 @@ fun BookInfoLayoutInfoProgress( wavelength = 80.dp, waveSpeed = 15.dp ) - Text( + StyledText( text = progress, - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyMedium, - fontWeight = FontWeight.Medium + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + fontWeight = FontWeight.Medium + ), ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoTitle.kt index 8a2e955f..0e2d1ca2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoLayoutInfoTitle.kt @@ -8,11 +8,10 @@ package ua.acclorite.book_story.presentation.book_info import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.text.style.TextOverflow import ua.acclorite.book_story.domain.library.book.Book +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.book_info.BookInfoEvent @@ -21,10 +20,8 @@ fun BookInfoLayoutInfoTitle( book: Book, showTitleDialog: (BookInfoEvent.OnShowTitleDialog) -> Unit ) { - Text( - book.title, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.headlineSmall, + StyledText( + text = book.title, modifier = Modifier .fillMaxWidth() .noRippleClickable( @@ -33,7 +30,9 @@ fun BookInfoLayoutInfoTitle( showTitleDialog(BookInfoEvent.OnShowTitleDialog) } ), - maxLines = 4, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.headlineSmall.copy( + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 4 ) } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoTopBar.kt index c3acc65b..61d04164 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/book_info/BookInfoTopBar.kt @@ -11,14 +11,13 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Info import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember -import androidx.compose.ui.text.style.TextOverflow import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.Book 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.components.top_bar.TopAppBar import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @@ -55,11 +54,11 @@ fun BookInfoTopBar( }, contentTitle = { DefaultTransition(firstVisibleItemIndex.value > 0) { - Text( - book.title, - style = MaterialTheme.typography.titleLarge, - color = MaterialTheme.colorScheme.onSurface, - overflow = TextOverflow.Ellipsis, + StyledText( + text = book.title, + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ), maxLines = 1 ) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseAddDialogItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseAddDialogItem.kt index 4cc9f6d1..9633c052 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseAddDialogItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseAddDialogItem.kt @@ -18,17 +18,16 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Error import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.NullableBook import ua.acclorite.book_story.domain.library.book.SelectableNullableBook import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun BrowseAddDialogItem(result: SelectableNullableBook, onClick: (Boolean) -> Unit) { @@ -45,19 +44,19 @@ fun BrowseAddDialogItem(result: SelectableNullableBook, onClick: (Boolean) -> Un Column( Modifier.weight(1f) ) { - Text( + StyledText( text = result.data.bookWithCover!!.book.title, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurface, - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 1 ) - Text( + StyledText( text = result.data.bookWithCover.book.author.asString(), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) } Row { @@ -85,12 +84,12 @@ fun BrowseAddDialogItem(result: SelectableNullableBook, onClick: (Boolean) -> Un tint = MaterialTheme.colorScheme.error ) Spacer(modifier = Modifier.width(8.dp)) - Text( + StyledText( text = result.data.fileName!!, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.error, - maxLines = 2, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.error + ), + maxLines = 2 ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridFileItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridFileItem.kt index 189efec2..47eb8d97 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridFileItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseGridFileItem.kt @@ -19,19 +19,18 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.browse.SelectableFile import ua.acclorite.book_story.presentation.core.components.common.CircularCheckbox +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.ui.theme.DefaultTransition import java.text.SimpleDateFormat import java.util.Date @@ -94,22 +93,22 @@ fun BrowseGridFileItem(file: SelectableFile, hasSelectedItems: Boolean) { Spacer(modifier = Modifier.height(8.dp)) - Text( - file.name, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge, - maxLines = 2, - textAlign = TextAlign.Center, - lineHeight = 18.sp, - overflow = TextOverflow.Ellipsis + StyledText( + text = file.name, + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Center, + lineHeight = 18.sp, + ), + maxLines = 2 ) Spacer(modifier = Modifier.height(2.dp)) - Text( - "$fileSize, $lastModified", - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodySmall, - maxLines = 1, - overflow = TextOverflow.Ellipsis + StyledText( + text = "$fileSize, $lastModified", + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseLayoutHeader.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseLayoutHeader.kt index 8ab72104..4665f3b0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseLayoutHeader.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseLayoutHeader.kt @@ -17,13 +17,13 @@ import androidx.compose.material.icons.filled.PushPin import androidx.compose.material.icons.outlined.PushPin import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.util.noRippleClickable @Composable @@ -40,11 +40,12 @@ fun BrowseLayoutHeader( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) ) { - Text( - modifier = Modifier.weight(1f), + StyledText( text = header, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge + modifier = Modifier.weight(1f), + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ) ) Icon( modifier = Modifier diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListFileItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListFileItem.kt index 1182e2ca..4bfa52c5 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListFileItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseListFileItem.kt @@ -23,17 +23,16 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.browse.SelectableFile +import ua.acclorite.book_story.presentation.core.components.common.StyledText import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -83,23 +82,23 @@ fun RowScope.BrowseListFileItem(file: SelectableFile) { } Spacer(modifier = Modifier.width(12.dp)) Column(verticalArrangement = Arrangement.Center) { - Text( - file.name, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge, - maxLines = 2, - lineHeight = 18.sp, - overflow = TextOverflow.Ellipsis, - modifier = Modifier.fillMaxWidth() + StyledText( + text = file.name, + modifier = Modifier.fillMaxWidth(), + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface, + lineHeight = 18.sp, + ), + maxLines = 2 ) Spacer(modifier = Modifier.height(2.dp)) - Text( - "$fileSize, $lastModified", - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodySmall, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - modifier = Modifier.fillMaxWidth() + StyledText( + text = "$fileSize, $lastModified", + modifier = Modifier.fillMaxWidth(), + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + ), + maxLines = 1 ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseTopBar.kt index 9124af85..792757b2 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/browse/BrowseTopBar.kt @@ -17,7 +17,6 @@ import androidx.compose.material.icons.filled.SelectAll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember @@ -26,12 +25,12 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.browse.BrowseLayout import ua.acclorite.book_story.domain.browse.SelectableFile import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.components.common.SearchTextField +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.navigator.NavigatorIconButton @@ -88,10 +87,9 @@ fun BrowseTopBar( contentID = 0, contentNavigationIcon = {}, contentTitle = { - Text( - stringResource(id = R.string.browse_screen), - maxLines = 1, - overflow = TextOverflow.Ellipsis + StyledText( + text = stringResource(id = R.string.browse_screen), + maxLines = 1 ) }, contentActions = { @@ -158,12 +156,11 @@ fun BrowseTopBar( } }, contentTitle = { - Text( - stringResource( + StyledText( + text = stringResource( id = R.string.selected_items_count_query, selectedItemsCount.coerceAtLeast(1) ), - overflow = TextOverflow.Ellipsis, maxLines = 1 ) }, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/HighlightedText.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/HighlightedText.kt index 669faa8a..47e96e9d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/HighlightedText.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/HighlightedText.kt @@ -24,7 +24,10 @@ fun HighlightedText( modifier: Modifier = Modifier, text: AnnotatedString, highlightThickness: FontWeight, - style: TextStyle + style: TextStyle, + maxLines: Int = Int.MAX_VALUE, + minLines: Int = 1, + overflow: TextOverflow = TextOverflow.Ellipsis ) { val highlightedText = remember(text, highlightThickness) { buildAnnotatedString { @@ -60,7 +63,9 @@ fun HighlightedText( text = highlightedText, modifier = modifier, style = style, - overflow = TextOverflow.Ellipsis + maxLines = maxLines, + minLines = minLines, + overflow = overflow ) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt index 021da1cb..6bb3f598 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/SearchTextField.kt @@ -11,7 +11,6 @@ import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -21,7 +20,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization -import androidx.compose.ui.text.style.TextOverflow import ua.acclorite.book_story.R /** @@ -67,12 +65,12 @@ fun SearchTextField( ) { innerText -> Box(contentAlignment = Alignment.CenterStart) { if (query.isEmpty()) { - Text( + StyledText( text = stringResource(id = R.string.search_field_empty), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.titleLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) } innerText() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/StyledText.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/StyledText.kt new file mode 100644 index 00000000..cc5f6714 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/StyledText.kt @@ -0,0 +1,84 @@ +/* + * 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.presentation.core.components.common + +import androidx.compose.foundation.text.BasicText +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.takeOrElse +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextDirection +import androidx.compose.ui.text.style.TextOverflow + +@Composable +fun StyledText( + text: AnnotatedString, + modifier: Modifier = Modifier, + style: TextStyle = LocalTextStyle.current, + maxLines: Int = Int.MAX_VALUE, + minLines: Int = 1, + overflow: TextOverflow = TextOverflow.Ellipsis, + highlightText: Boolean = false, + highlightThickness: FontWeight = FontWeight.SemiBold +) { + when (highlightText) { + true -> { + HighlightedText( + modifier = modifier, + text = text, + highlightThickness = highlightThickness, + style = style.copy( + textDirection = TextDirection.Content, + color = style.color.takeOrElse { LocalContentColor.current } + ), + maxLines = maxLines, + minLines = minLines, + overflow = overflow + ) + } + + false -> { + BasicText( + modifier = modifier, + text = text, + style = style.copy( + textDirection = TextDirection.Content, + color = style.color.takeOrElse { LocalContentColor.current } + ), + maxLines = maxLines, + minLines = minLines, + overflow = overflow + ) + } + } +} + +@Composable +fun StyledText( + text: String, + modifier: Modifier = Modifier, + style: TextStyle = LocalTextStyle.current, + maxLines: Int = Int.MAX_VALUE, + minLines: Int = 1, + overflow: TextOverflow = TextOverflow.Ellipsis +) { + BasicText( + modifier = modifier, + text = text, + style = style.copy( + textDirection = TextDirection.Content, + color = style.color.takeOrElse { LocalContentColor.current } + ), + maxLines = maxLines, + minLines = minLines, + overflow = overflow + ) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt index c3930b37..69ba74ef 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/common/Tooltip.kt @@ -8,7 +8,6 @@ package ua.acclorite.book_story.presentation.core.components.common import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.PlainTooltip -import androidx.compose.material3.Text import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults import androidx.compose.material3.rememberTooltipState @@ -39,7 +38,7 @@ fun Tooltip( enableUserInput = enabled, tooltip = { PlainTooltip { - Text(text = text) + StyledText(text = text) } }, state = rememberTooltipState() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/Dialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/Dialog.kt index 872d3a24..52b6e7b9 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/Dialog.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/Dialog.kt @@ -27,7 +27,6 @@ import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -47,6 +46,7 @@ import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogWindowProvider import ua.acclorite.book_story.R import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar +import ua.acclorite.book_story.presentation.core.components.common.StyledText @OptIn(ExperimentalMaterial3Api::class) @@ -105,7 +105,7 @@ fun Dialog( Spacer(modifier = Modifier.height(16.dp)) } - Text( + StyledText( text = title, modifier = Modifier .align( @@ -113,19 +113,21 @@ fun Dialog( else Alignment.Start ) .padding(horizontal = 24.dp), - textAlign = if (icon != null) TextAlign.Center - else TextAlign.Start, - style = MaterialTheme.typography.headlineSmall, - color = MaterialTheme.colorScheme.onSurface + style = MaterialTheme.typography.headlineSmall.copy( + textAlign = if (icon != null) TextAlign.Center + else TextAlign.Start, + color = MaterialTheme.colorScheme.onSurface + ) ) if (description != null) { Spacer(modifier = Modifier.height(16.dp)) - Text( + StyledText( text = description, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.padding(horizontal = 24.dp) + modifier = Modifier.padding(horizontal = 24.dp), + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } @@ -156,10 +158,11 @@ fun Dialog( }, enabled = !actionClicked ) { - Text( + StyledText( text = stringResource(id = R.string.cancel), - style = MaterialTheme.typography.labelLarge, - color = MaterialTheme.colorScheme.primary + style = MaterialTheme.typography.labelLarge.copy( + color = MaterialTheme.colorScheme.primary + ) ) } @@ -172,12 +175,12 @@ fun Dialog( }, enabled = actionEnabled == true && !actionClicked ) { - Text( + StyledText( text = stringResource(id = R.string.ok), - style = MaterialTheme.typography.labelLarge, - color = - if (actionEnabled == true) MaterialTheme.colorScheme.primary - else MaterialTheme.colorScheme.primary.copy(0.5f) + style = MaterialTheme.typography.labelLarge.copy( + color = if (actionEnabled == true) MaterialTheme.colorScheme.primary + else MaterialTheme.colorScheme.primary.copy(0.5f) + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithTextField.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithTextField.kt index f5cac5a1..15b9b22d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithTextField.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/DialogWithTextField.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.OutlinedTextField -import androidx.compose.material3.Text import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf @@ -24,9 +23,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.TextFieldValue -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun DialogWithTextField( @@ -89,10 +88,9 @@ fun DialogWithTextField( unfocusedContainerColor = Color.Transparent ), placeholder = { - Text( + StyledText( text = initialValue, - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) } ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt index 2234066b..703251ba 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/dialog/SelectableDialogItem.kt @@ -16,13 +16,12 @@ import androidx.compose.foundation.layout.width import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.RadioButtonDefaults -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun SelectableDialogItem( @@ -48,12 +47,12 @@ fun SelectableDialogItem( ) ) Spacer(modifier = Modifier.width(8.dp)) - Text( + StyledText( text = title, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 1 ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt index 7cb9b3f6..97f5a8fc 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_bottom_sheet/ModalBottomSheetTabRow.kt @@ -11,11 +11,10 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.PrimaryTabRow import androidx.compose.material3.Tab -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.style.TextOverflow +import ua.acclorite.book_story.presentation.core.components.common.StyledText /** * Primary Tab Row. Used in BottomSheet in pair with HorizontalPager. @@ -47,11 +46,10 @@ fun ModalBottomSheetTabRow( selectedContentColor = MaterialTheme.colorScheme.primary, unselectedContentColor = MaterialTheme.colorScheme.onSurfaceVariant, text = { - Text( - tabItem, + StyledText( + text = tabItem, style = MaterialTheme.typography.bodyLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) } ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt index 29384b02..3d6e3376 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/modal_drawer/ModalDrawerTitleItem.kt @@ -14,10 +14,10 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText /** * Modal Drawer Title Item. @@ -38,11 +38,12 @@ fun ModalDrawerTitleItem( .padding(horizontal = 18.dp) ) { Spacer(modifier = Modifier.height(9.dp)) - Text( + StyledText( text = title, - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.titleLarge, - modifier = Modifier.padding(horizontal = 18.dp) + modifier = Modifier.padding(horizontal = 18.dp), + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) Spacer(modifier = Modifier.height(9.dp)) HorizontalDivider() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt index 9910235f..d5becc8d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_bar/NavigationBarItem.kt @@ -12,14 +12,13 @@ import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.navigator.NavigatorItem +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.components.common.Tooltip @Composable @@ -35,10 +34,9 @@ fun RowScope.NavigationBarItem( text = stringResource(id = item.tooltip), padding = 64.dp ) { - Text( + StyledText( text = stringResource(id = item.title), - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) } }, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt index 0868b18f..b673475c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/navigation_rail/NavigationRailItem.kt @@ -11,14 +11,13 @@ import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.NavigationRailItem -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.navigator.NavigatorItem +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.components.common.Tooltip @Composable @@ -34,10 +33,9 @@ fun NavigationRailItem( text = stringResource(id = item.tooltip), padding = 48.dp ) { - Text( + StyledText( text = stringResource(id = item.title), - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) } }, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/EmptyPlaceholder.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/EmptyPlaceholder.kt index 889d3557..f2405ab0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/EmptyPlaceholder.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/EmptyPlaceholder.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -25,6 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText /** @@ -59,11 +59,12 @@ fun EmptyPlaceholder( tint = MaterialTheme.colorScheme.primary ) Spacer(modifier = Modifier.height(4.dp)) - Text( + StyledText( text = message, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Center + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center + ) ) if (actionTitle != null) { Spacer(modifier = Modifier.height(4.dp)) @@ -72,10 +73,11 @@ fun EmptyPlaceholder( action() } ) { - Text( - actionTitle, - style = MaterialTheme.typography.labelLarge, - color = MaterialTheme.colorScheme.primary + StyledText( + text = actionTitle, + style = MaterialTheme.typography.labelLarge.copy( + color = MaterialTheme.colorScheme.primary + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/ErrorPlaceholder.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/ErrorPlaceholder.kt index 047071a3..dbef001a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/ErrorPlaceholder.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/placeholder/ErrorPlaceholder.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -25,6 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText /** * Empty placeholder. @@ -59,11 +59,12 @@ fun ErrorPlaceholder( tint = MaterialTheme.colorScheme.error ) Spacer(modifier = Modifier.height(4.dp)) - Text( + StyledText( text = errorMessage, - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.error, - textAlign = TextAlign.Center + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.error, + textAlign = TextAlign.Center + ) ) if (actionTitle != null) { Spacer(modifier = Modifier.height(4.dp)) @@ -72,10 +73,11 @@ fun ErrorPlaceholder( action() } ) { - Text( - actionTitle, - style = MaterialTheme.typography.labelLarge, - color = MaterialTheme.colorScheme.primary + StyledText( + text = actionTitle, + style = MaterialTheme.typography.labelLarge.copy( + color = MaterialTheme.colorScheme.primary + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt index f75c5d14..8bec2e04 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/ChipsWithTitle.kt @@ -15,12 +15,12 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.FilterChip -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.ui.ButtonItem +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle /** @@ -53,8 +53,8 @@ fun ChipsWithTitle( modifier = Modifier.height(36.dp), selected = item.selected, label = { - Text( - item.title, + StyledText( + text = item.title, style = item.textStyle, maxLines = 1 ) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt index 145a54ca..1f212aae 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SegmentedButtonWithTitle.kt @@ -33,7 +33,6 @@ import androidx.compose.material.icons.filled.Done import androidx.compose.material3.Icon import androidx.compose.material3.SegmentedButtonColors import androidx.compose.material3.SegmentedButtonDefaults -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -45,6 +44,7 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.ui.ButtonItem 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 /** @@ -179,11 +179,12 @@ private fun SegmentedButton( } } - Text( + StyledText( text = button.title, - style = button.textStyle, - color = if (button.selected) colors.activeContentColor - else colors.inactiveContentColor + style = button.textStyle.copy( + color = if (button.selected) colors.activeContentColor + else colors.inactiveContentColor + ) ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt index 2f95ee14..3c6573db 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SliderWithTitle.kt @@ -21,7 +21,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.PlainTooltip import androidx.compose.material3.Slider import androidx.compose.material3.SliderDefaults -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember @@ -30,6 +29,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle import kotlin.math.roundToInt @@ -78,10 +78,11 @@ fun SliderWithTitle( Column(Modifier.fillMaxWidth(0.2f)) { SettingsSubcategoryTitle(title = title, padding = 0.dp) Spacer(modifier = Modifier.height(4.dp)) - Text( + StyledText( text = placeholder.value, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } Spacer(modifier = Modifier.width(8.dp)) @@ -98,7 +99,7 @@ fun SliderWithTitle( PlainTooltip( modifier = Modifier.clip(CircleShape) ) { - Text( + StyledText( text = placeholder.value, modifier = Modifier.padding( vertical = 6.dp, @@ -166,10 +167,11 @@ fun SliderWithTitle( Column(Modifier.fillMaxWidth(0.2f)) { SettingsSubcategoryTitle(title = title, padding = 0.dp) Spacer(modifier = Modifier.height(4.dp)) - Text( + StyledText( text = placeholder.value, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } Spacer(modifier = Modifier.width(8.dp)) @@ -186,7 +188,7 @@ fun SliderWithTitle( PlainTooltip( modifier = Modifier.clip(CircleShape) ) { - Text( + StyledText( text = placeholder.value, modifier = Modifier.padding( vertical = 6.dp, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt index 3355a733..1cf9288d 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/components/settings/SwitchWIthTitle.kt @@ -17,14 +17,13 @@ import androidx.compose.foundation.layout.width import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Switch import androidx.compose.material3.SwitchDefaults -import androidx.compose.material3.Text import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import ua.acclorite.book_story.presentation.core.components.common.StyledText /** * Checkbox with title. @@ -53,17 +52,18 @@ fun SwitchWithTitle( verticalAlignment = Alignment.CenterVertically ) { Column(Modifier.weight(1f), verticalArrangement = Arrangement.Center) { - Text( + StyledText( text = title, - color = MaterialTheme.colorScheme.onSurfaceVariant, - overflow = TextOverflow.Ellipsis, - style = MaterialTheme.typography.titleMedium + style = MaterialTheme.typography.titleMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) description?.let { - Text( + StyledText( text = it, - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodySmall + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt index 7f61c4af..e39fe854 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditItem.kt @@ -16,16 +16,15 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.about.Credit +import ua.acclorite.book_story.presentation.core.components.common.StyledText @OptIn(ExperimentalLayoutApi::class) @Composable @@ -41,19 +40,20 @@ fun CreditItem( .clickable(enabled = credit.website != null) { onClick.invoke() } .padding(vertical = verticalPadding, horizontal = horizontalPadding) ) { - Text( + StyledText( text = credit.name, - style = MaterialTheme.typography.titleLarge, - color = MaterialTheme.colorScheme.onSurface, - maxLines = 2, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 2 ) credit.source?.let { - Text( + StyledText( text = it, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } @@ -64,16 +64,16 @@ fun CreditItem( horizontalArrangement = Arrangement.spacedBy(4.dp) ) { credit.credits.forEach { - Text( + StyledText( text = it.asString(), - color = MaterialTheme.colorScheme.onPrimary, - style = MaterialTheme.typography.bodySmall, - maxLines = 1, - overflow = TextOverflow.Ellipsis, modifier = Modifier - .clip(RoundedCornerShape(100)) - .background(MaterialTheme.colorScheme.primary, RoundedCornerShape(100)) - .padding(vertical = 4.dp, horizontal = 8.dp) + .clip(CircleShape) + .background(MaterialTheme.colorScheme.primary) + .padding(vertical = 4.dp, horizontal = 8.dp), + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onPrimary, + ), + maxLines = 1 ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsTopBar.kt index 37c1fa0e..d4eeb2a6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/credits/CreditsTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.credits import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun CreditsTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.credits_option)) + StyledText(stringResource(id = R.string.credits_option)) }, navigationIcon = { NavigatorBackIconButton(navigateBack = navigateBack) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpBottomBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpBottomBar.kt index d1a1591f..7ba0976e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpBottomBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpBottomBar.kt @@ -13,12 +13,12 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.ui.browse.BrowseScreen import ua.acclorite.book_story.ui.main.MainEvent @@ -41,7 +41,7 @@ fun HelpBottomBar( navigateToBrowse() } ) { - Text(text = stringResource(id = R.string.done)) + StyledText(text = stringResource(id = R.string.done)) } } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpItem.kt index 802421d3..e17195ff 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpItem.kt @@ -26,7 +26,6 @@ import androidx.compose.material.icons.outlined.ArrowDropUp import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -41,6 +40,7 @@ import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.help.HelpTip import ua.acclorite.book_story.domain.util.Position +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.theme.ExpandingTransition @@ -112,11 +112,12 @@ fun HelpItem( }, verticalAlignment = Alignment.CenterVertically ) { - Text( + StyledText( text = stringResource(id = helpTip.title), - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.titleLarge, - modifier = Modifier.weight(1f) + modifier = Modifier.weight(1f), + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ) ) Spacer(modifier = Modifier.width(8.dp)) Icon( @@ -142,7 +143,7 @@ fun HelpItem( Spacer(modifier = Modifier.height(9.dp)) HorizontalDivider() Spacer(modifier = Modifier.height(9.dp)) - Text( + StyledText( text = buildAnnotatedString { helpTip.description.invoke(this@buildAnnotatedString) }, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpTopBar.kt index b881bbbf..b72e4ae1 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/help/HelpTopBar.kt @@ -11,13 +11,13 @@ import androidx.compose.material.icons.outlined.RestartAlt import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R 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.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -30,7 +30,7 @@ fun HelpTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.help_screen)) + StyledText(stringResource(id = R.string.help_screen)) }, navigationIcon = { if (!fromStart) NavigatorBackIconButton(navigateBack = navigateBack) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryItem.kt index e1c34635..1b112d49 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryItem.kt @@ -27,20 +27,19 @@ import androidx.compose.material.icons.filled.Image import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.history.History import ua.acclorite.book_story.presentation.core.components.common.AsyncCoverImage 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 java.text.SimpleDateFormat import java.util.Date @@ -108,28 +107,27 @@ fun LazyItemScope.HistoryItem( verticalArrangement = Arrangement.Center, modifier = Modifier.fillMaxHeight() ) { - Text( - historyEntry.book?.title ?: return, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.bodyLarge, - lineHeight = 21.sp, + StyledText( + text = historyEntry.book?.title ?: return, modifier = Modifier .fillMaxWidth() .noRippleClickable( enabled = !isRefreshing, onClick = onTitleClick ), - maxLines = 2, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurface, + lineHeight = 21.sp + ), + maxLines = 2 ) - Text( - pattern.format(date), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier - .fillMaxWidth(), - maxLines = 1, - overflow = TextOverflow.Ellipsis + StyledText( + text = pattern.format(date), + modifier = Modifier.fillMaxWidth(), + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryTopBar.kt index 6e926584..0197836c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/history/HistoryTopBar.kt @@ -11,7 +11,6 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.outlined.DeleteSweep import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester @@ -21,6 +20,7 @@ import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.components.common.SearchTextField +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.navigator.NavigatorIconButton @@ -56,7 +56,7 @@ fun HistoryTopBar( contentID = 0, contentNavigationIcon = {}, contentTitle = { - Text(stringResource(id = R.string.history_screen)) + StyledText(stringResource(id = R.string.history_screen)) }, contentActions = { IconButton( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt index 48bb6141..5f6d5b3e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryItem.kt @@ -26,7 +26,6 @@ import androidx.compose.material3.FilledIconButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment @@ -35,11 +34,11 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.SelectableBook import ua.acclorite.book_story.presentation.core.components.common.AsyncCoverImage +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.util.calculateProgress @OptIn(ExperimentalFoundationApi::class) @@ -111,16 +110,17 @@ fun LazyGridItemScope.LibraryItem( ) } - Text( - progress, - textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.onPrimary, + StyledText( + text = progress, modifier = Modifier .padding(6.dp) .clip(MaterialTheme.shapes.small) .background(MaterialTheme.colorScheme.primary, MaterialTheme.shapes.small) .padding(horizontal = 8.dp, vertical = 4.dp), - style = MaterialTheme.typography.bodySmall + style = MaterialTheme.typography.bodySmall.copy( + textAlign = TextAlign.Center, + color = MaterialTheme.colorScheme.onPrimary, + ) ) FilledIconButton( @@ -145,16 +145,16 @@ fun LazyGridItemScope.LibraryItem( } } Spacer(modifier = Modifier.height(6.dp)) - Text( - book.data.title, - color = fontColor, - style = MaterialTheme.typography.bodyMedium, + StyledText( + text = book.data.title, modifier = Modifier .fillMaxWidth() .padding(horizontal = 4.dp), + style = MaterialTheme.typography.bodyMedium.copy( + color = fontColor + ), minLines = 2, - maxLines = 2, - overflow = TextOverflow.Ellipsis, + maxLines = 2 ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTabs.kt b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTabs.kt index 579fb0c2..c2ead32a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTabs.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTabs.kt @@ -21,7 +21,6 @@ import androidx.compose.material3.ScrollableTabRow import androidx.compose.material3.Tab import androidx.compose.material3.TabRowDefaults import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope @@ -31,6 +30,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import ua.acclorite.book_story.domain.library.category.CategoryWithBooks +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun LibraryTabs( @@ -81,13 +81,13 @@ fun LibraryTabs( unselectedContentColor = MaterialTheme.colorScheme.onSurfaceVariant, text = { Row(verticalAlignment = Alignment.CenterVertically) { - Text( - tabItem.title.asString(), + StyledText( + text = tabItem.title.asString(), style = MaterialTheme.typography.bodyLarge, maxLines = 1, ) Spacer(modifier = Modifier.width(6.dp)) - Text( + StyledText( text = tabItem.books.count().toString(), modifier = Modifier .background( @@ -95,8 +95,9 @@ fun LibraryTabs( MaterialTheme.shapes.medium ) .padding(horizontal = 8.dp, vertical = 4.dp), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyMedium + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTopBar.kt index ea27cf8a..51a41e00 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/library/LibraryTopBar.kt @@ -23,8 +23,8 @@ import androidx.compose.material.icons.filled.Clear import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -32,13 +32,13 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.category.CategoryWithBooks import ua.acclorite.book_story.presentation.core.components.common.IconButton import ua.acclorite.book_story.presentation.core.components.common.SearchTextField +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBar import ua.acclorite.book_story.presentation.core.components.top_bar.TopAppBarData import ua.acclorite.book_story.presentation.navigator.NavigatorIconButton @@ -86,9 +86,9 @@ fun LibraryTopBar( contentNavigationIcon = {}, contentTitle = { Row(verticalAlignment = Alignment.CenterVertically) { - Text(stringResource(id = R.string.library_screen)) + StyledText(text = stringResource(id = R.string.library_screen)) Spacer(modifier = Modifier.width(6.dp)) - Text( + StyledText( text = bookCount.toString(), modifier = Modifier .background( @@ -96,8 +96,10 @@ fun LibraryTopBar( RoundedCornerShape(14.dp) ) .padding(horizontal = 8.dp, vertical = 3.dp), - color = MaterialTheme.colorScheme.onSurfaceVariant, - fontSize = 16.sp + style = LocalTextStyle.current.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + fontSize = 16.sp + ) ) } }, @@ -157,12 +159,11 @@ fun LibraryTopBar( } }, contentTitle = { - Text( - stringResource( + StyledText( + text = stringResource( id = R.string.selected_items_count_query, selectedItemsCount.coerceAtLeast(1) ), - overflow = TextOverflow.Ellipsis, maxLines = 1 ) }, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoItem.kt index 22594ba4..50a5d240 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoItem.kt @@ -15,15 +15,14 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.mikepenz.aboutlibraries.entity.License +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.ui.theme.SlidingTransition @Composable @@ -40,12 +39,8 @@ fun LazyItemScope.LicenseInfoItem( fadeOutSpec = null ) ) { - Text( + StyledText( text = license.name, - color = MaterialTheme.colorScheme.onPrimary, - style = MaterialTheme.typography.titleSmall, - maxLines = 1, - overflow = TextOverflow.Ellipsis, modifier = Modifier .clip(RoundedCornerShape(100)) .clickable(enabled = license.licenseContent?.isNotBlank() == true) { @@ -55,7 +50,11 @@ fun LazyItemScope.LicenseInfoItem( MaterialTheme.colorScheme.primary, RoundedCornerShape(100) ) - .padding(vertical = 6.dp, horizontal = 12.dp) + .padding(vertical = 6.dp, horizontal = 12.dp), + style = MaterialTheme.typography.titleSmall.copy( + color = MaterialTheme.colorScheme.onPrimary, + ), + maxLines = 1 ) SlidingTransition( @@ -64,14 +63,15 @@ fun LazyItemScope.LicenseInfoItem( ) { Column { Spacer(modifier = Modifier.height(8.dp)) - Text( + StyledText( text = license.licenseContent!! .lines() .joinToString(separator = "\n") { it.trim() }, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoTopBar.kt index 3c1dc982..1ea9475f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/license_info/LicenseInfoTopBar.kt @@ -11,15 +11,14 @@ import androidx.compose.material.icons.outlined.Language import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.text.style.TextOverflow import com.mikepenz.aboutlibraries.entity.Library import ua.acclorite.book_story.R 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.navigator.NavigatorBackIconButton import ua.acclorite.book_story.ui.about.AboutEvent @@ -35,10 +34,9 @@ fun LicenseInfoTopBar( LargeTopAppBar( title = { - Text( - library.name, - maxLines = 1, - overflow = TextOverflow.Ellipsis + StyledText( + text = library.name, + maxLines = 1 ) }, navigationIcon = { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt index 7afa5810..b7cd9d3a 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesItem.kt @@ -20,18 +20,17 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.aboutlibraries.ui.compose.m3.util.author import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @OptIn(ExperimentalLayoutApi::class) @Composable @@ -46,34 +45,36 @@ fun LicensesItem( .padding(vertical = 12.dp, horizontal = 18.dp) ) { Row { - Text( + StyledText( text = library.name, modifier = Modifier.weight(1f), - style = MaterialTheme.typography.titleLarge, - color = if (library.openSource) MaterialTheme.colorScheme.onSurface - else MaterialTheme.colorScheme.error, - maxLines = 2, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.titleLarge.copy( + color = if (library.openSource) MaterialTheme.colorScheme.onSurface + else MaterialTheme.colorScheme.error + ), + maxLines = 2 ) if (library.artifactVersion != null || !library.openSource) { Spacer(modifier = Modifier.width(8.dp)) Column(horizontalAlignment = Alignment.End) { library.artifactVersion?.let { - Text( - it, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Center + StyledText( + text = it, + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center + ) ) } if (!library.openSource) { - Text( - stringResource(id = R.string.error_closed_source), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Center + StyledText( + text = stringResource(id = R.string.error_closed_source), + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center + ) ) } } @@ -81,12 +82,12 @@ fun LicensesItem( } if (library.author.isNotBlank()) { - Text( + StyledText( text = library.author, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 2, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 2 ) } if (library.licenses.isNotEmpty()) { @@ -96,16 +97,16 @@ fun LicensesItem( horizontalArrangement = Arrangement.spacedBy(4.dp) ) { library.licenses.forEach { - Text( + StyledText( text = it.name, - color = MaterialTheme.colorScheme.onPrimary, - style = MaterialTheme.typography.bodySmall, - maxLines = 1, - overflow = TextOverflow.Ellipsis, modifier = Modifier .clip(RoundedCornerShape(100)) .background(MaterialTheme.colorScheme.primary, RoundedCornerShape(100)) - .padding(vertical = 4.dp, horizontal = 8.dp) + .padding(vertical = 4.dp, horizontal = 8.dp), + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onPrimary + ), + maxLines = 1 ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesTopBar.kt index 662b522b..40b43e30 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/licenses/LicensesTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.licenses import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun LicensesTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.licenses_option)) + StyledText(stringResource(id = R.string.licenses_option)) }, navigationIcon = { NavigatorBackIconButton(navigateBack = navigateBack) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/navigator/NavigatorBottomSheetItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/navigator/NavigatorBottomSheetItem.kt index 49e9c73e..3573d078 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/navigator/NavigatorBottomSheetItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/navigator/NavigatorBottomSheetItem.kt @@ -15,15 +15,14 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.util.Position +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun NavigatorBottomSheetItem( @@ -75,12 +74,12 @@ fun NavigatorBottomSheetItem( .padding(horizontal = 18.dp, vertical = 18.dp), contentAlignment = Alignment.Center ) { - Text( + StyledText( text = title, - style = MaterialTheme.typography.labelLarge, - color = if (primary) MaterialTheme.colorScheme.onPrimaryContainer - else MaterialTheme.colorScheme.onSurface, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.labelLarge.copy( + color = if (primary) MaterialTheme.colorScheme.onPrimaryContainer + else MaterialTheme.colorScheme.onSurface + ) ) } } \ 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 36ea7101..cb5af629 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 @@ -22,7 +22,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.ArrowForward import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember @@ -36,6 +35,7 @@ import ua.acclorite.book_story.domain.reader.Checkpoint import ua.acclorite.book_story.domain.reader.ReaderText import ua.acclorite.book_story.domain.util.Direction 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 @@ -84,10 +84,11 @@ fun ReaderBottomBar( ) { Spacer(Modifier.height(16.dp)) - Text( + StyledText( text = progress, - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.titleLarge + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurface + ) ) Spacer(Modifier.height(6.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderChaptersDrawer.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderChaptersDrawer.kt index 8c131939..a8fe381e 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderChaptersDrawer.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderChaptersDrawer.kt @@ -9,17 +9,16 @@ package ua.acclorite.book_story.presentation.reader import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.reader.ReaderText.Chapter +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.components.modal_drawer.ModalDrawer import ua.acclorite.book_story.presentation.core.components.modal_drawer.ModalDrawerSelectableItem import ua.acclorite.book_story.presentation.core.components.modal_drawer.ModalDrawerTitleItem @@ -67,17 +66,14 @@ fun ReaderChaptersDrawer( dismissDrawer(ReaderEvent.OnDismissDrawer) } ) { - Text( + StyledText( text = chapter.title, modifier = Modifier.weight(1f), - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) if (selected) { Spacer(modifier = Modifier.width(18.dp)) - Text( - text = "${currentChapterProgress.calculateProgress(1)}%" - ) + StyledText(text = "${currentChapterProgress.calculateProgress(1)}%") } } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextChapter.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextChapter.kt index 6b124693..f23409fa 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextChapter.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextChapter.kt @@ -14,19 +14,16 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import ua.acclorite.book_story.domain.reader.ReaderText.Chapter import ua.acclorite.book_story.domain.reader.ReaderTextAlignment -import ua.acclorite.book_story.presentation.core.components.common.HighlightedText +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun LazyItemScope.ReaderLayoutTextChapter( @@ -46,31 +43,20 @@ fun LazyItemScope.ReaderLayoutTextChapter( .fillMaxWidth() ) { Spacer(modifier = Modifier.height(22.dp)) - if (highlightedReading) { - HighlightedText( - text = rememberSaveable(saver = AnnotatedString.Saver) { - buildAnnotatedString { append(chapter.title) } - }, - highlightThickness = highlightedReadingThickness, - style = MaterialTheme.typography.headlineMedium.copy( - color = fontColor, - textAlign = chapterTitleAlignment.textAlignment - ), - modifier = Modifier - .padding(horizontal = sidePadding) - .fillMaxWidth() - ) - } else { - Text( - text = chapter.title, - textAlign = chapterTitleAlignment.textAlignment, - style = MaterialTheme.typography.headlineMedium, + + StyledText( + text = buildAnnotatedString { append(chapter.title) }, + modifier = Modifier + .padding(horizontal = sidePadding) + .fillMaxWidth(), + style = MaterialTheme.typography.headlineMedium.copy( color = fontColor, - modifier = Modifier - .padding(horizontal = sidePadding) - .fillMaxWidth() - ) - } + textAlign = chapterTitleAlignment.textAlignment + ), + highlightText = highlightedReading, + highlightThickness = highlightedReadingThickness + ) + Spacer(modifier = Modifier.height(16.dp)) HorizontalDivider(color = fontColor.copy(0.4f)) Spacer(modifier = Modifier.height(16.dp)) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextParagraph.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextParagraph.kt index 8eb426b3..7541d1b7 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextParagraph.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayoutTextParagraph.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyItemScope -import androidx.compose.foundation.text.BasicText import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -28,7 +27,7 @@ import ua.acclorite.book_story.domain.reader.FontWithName import ua.acclorite.book_story.domain.reader.ReaderFontThickness import ua.acclorite.book_story.domain.reader.ReaderText.Text import ua.acclorite.book_story.domain.reader.ReaderTextAlignment -import ua.acclorite.book_story.presentation.core.components.common.HighlightedText +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 @@ -64,89 +63,47 @@ fun LazyItemScope.ReaderLayoutTextParagraph( verticalArrangement = Arrangement.Center, horizontalAlignment = horizontalAlignment ) { - if (highlightedReading) { - HighlightedText( - text = paragraph.line, - highlightThickness = highlightedReadingThickness, - modifier = Modifier.then( - if (doubleClickTranslation && toolbarHidden) { - Modifier.noRippleClickable( - onDoubleClick = { - openTranslator( - ReaderEvent.OnOpenTranslator( - textToTranslate = paragraph.line.text, - translateWholeParagraph = true, - activity = activity - ) + StyledText( + text = paragraph.line, + modifier = Modifier.then( + if (doubleClickTranslation && toolbarHidden) { + Modifier.noRippleClickable( + onDoubleClick = { + openTranslator( + ReaderEvent.OnOpenTranslator( + textToTranslate = paragraph.line.text, + translateWholeParagraph = true, + activity = activity ) - }, - onClick = { - menuVisibility( - ReaderEvent.OnMenuVisibility( - show = !showMenu, - fullscreenMode = fullscreenMode, - saveCheckpoint = true, - activity = activity - ) + ) + }, + onClick = { + menuVisibility( + ReaderEvent.OnMenuVisibility( + show = !showMenu, + fullscreenMode = fullscreenMode, + saveCheckpoint = true, + activity = activity ) - } - ) - } else Modifier - ), - style = TextStyle( - fontFamily = fontFamily.font, - fontWeight = fontThickness.thickness, - textAlign = textAlignment.textAlignment, - textIndent = TextIndent(firstLine = paragraphIndentation), - fontStyle = fontStyle, - letterSpacing = letterSpacing, - fontSize = fontSize, - lineHeight = lineHeight, - color = fontColor, - lineBreak = LineBreak.Paragraph - ) - ) - } else { - BasicText( - text = paragraph.line, - modifier = Modifier.then( - if (doubleClickTranslation && toolbarHidden) { - Modifier.noRippleClickable( - onDoubleClick = { - openTranslator( - ReaderEvent.OnOpenTranslator( - textToTranslate = paragraph.line.text, - translateWholeParagraph = true, - activity = activity - ) - ) - }, - onClick = { - menuVisibility( - ReaderEvent.OnMenuVisibility( - show = !showMenu, - fullscreenMode = fullscreenMode, - saveCheckpoint = true, - activity = activity - ) - ) - } - ) - } else Modifier - ), - style = TextStyle( - fontFamily = fontFamily.font, - fontWeight = fontThickness.thickness, - textAlign = textAlignment.textAlignment, - textIndent = TextIndent(firstLine = paragraphIndentation), - fontStyle = fontStyle, - letterSpacing = letterSpacing, - fontSize = fontSize, - lineHeight = lineHeight, - color = fontColor, - lineBreak = LineBreak.Paragraph - ) - ) - } + ) + } + ) + } else Modifier + ), + style = TextStyle( + fontFamily = fontFamily.font, + fontWeight = fontThickness.thickness, + textAlign = textAlignment.textAlignment, + textIndent = TextIndent(firstLine = paragraphIndentation), + fontStyle = fontStyle, + letterSpacing = letterSpacing, + fontSize = fontSize, + lineHeight = lineHeight, + color = fontColor, + lineBreak = LineBreak.Paragraph + ), + highlightText = highlightedReading, + highlightThickness = highlightedReadingThickness + ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt index cc42774a..78ea72df 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt @@ -10,14 +10,14 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.selection.DisableSelection -import androidx.compose.material3.Text +import androidx.compose.material3.LocalTextStyle import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.TextUnit import ua.acclorite.book_story.domain.util.HorizontalAlignment +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun ReaderProgressBar( @@ -38,12 +38,13 @@ fun ReaderProgressBar( contentAlignment = progressBarAlignment.alignment ) { DisableSelection { - Text( + StyledText( text = progress, - color = fontColor, - fontSize = progressBarFontSize, - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = LocalTextStyle.current.copy( + color = fontColor, + fontSize = progressBarFontSize + ), + maxLines = 1 ) } } 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 602ffad6..94bceebd 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 @@ -19,20 +19,20 @@ import androidx.compose.material.icons.rounded.Menu import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ua.acclorite.book_story.R import ua.acclorite.book_story.domain.library.book.Book import ua.acclorite.book_story.domain.reader.ReaderText.Chapter 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.LocalActivity import ua.acclorite.book_story.presentation.core.util.noRippleClickable import ua.acclorite.book_story.ui.reader.ReaderEvent @@ -90,13 +90,8 @@ fun ReaderTopBar( } }, title = { - Text( + StyledText( text = book.title, - fontSize = 20.sp, - lineHeight = 20.sp, - color = MaterialTheme.colorScheme.onSurface, - overflow = TextOverflow.Ellipsis, - maxLines = 1, modifier = Modifier .padding(end = 8.dp) .noRippleClickable( @@ -111,18 +106,24 @@ fun ReaderTopBar( ) ) } - ) + ), + style = LocalTextStyle.current.copy( + fontSize = 20.sp, + lineHeight = 20.sp, + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 1 ) }, subtitle = { - Text( - modifier = Modifier.basicMarquee(iterations = Int.MAX_VALUE), + StyledText( text = currentChapter?.title ?: activity.getString(R.string.no_chapters), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis + modifier = Modifier.basicMarquee(iterations = Int.MAX_VALUE), + style = MaterialTheme.typography.bodyLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) }, actions = { 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 d80cf2d4..7e0ed992 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 @@ -14,16 +14,16 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon +import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun SettingsLayoutItem( @@ -48,19 +48,20 @@ fun SettingsLayoutItem( tint = MaterialTheme.colorScheme.onSurfaceVariant ) Column { - Text( + StyledText( text = title, - fontSize = 19.sp, - color = MaterialTheme.colorScheme.onSurface, - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = LocalTextStyle.current.copy( + fontSize = 19.sp, + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 1 ) - Text( + StyledText( text = description, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 1, - overflow = TextOverflow.Ellipsis + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsTopBar.kt index 7cbfbd93..9bd3efa6 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/SettingsTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun SettingsTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.settings_screen)) + StyledText(stringResource(id = R.string.settings_screen)) }, navigationIcon = { NavigatorBackIconButton( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/AppearanceSettingsTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/AppearanceSettingsTopBar.kt index 8d972d80..08657abb 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/AppearanceSettingsTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/AppearanceSettingsTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.settings.appearance import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun AppearanceSettingsTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.appearance_settings)) + StyledText(stringResource(id = R.string.appearance_settings)) }, navigationIcon = { NavigatorBackIconButton( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt index db8986a4..aa1b79b9 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/appearance/colors/components/ColorPresetOption.kt @@ -40,7 +40,6 @@ import androidx.compose.material.icons.filled.Shuffle import androidx.compose.material.icons.rounded.DragHandle import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.mutableStateOf @@ -55,7 +54,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.KeyboardCapitalization -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -70,6 +68,7 @@ import ua.acclorite.book_story.domain.reader.ColorPreset import ua.acclorite.book_story.domain.util.Selected import ua.acclorite.book_story.presentation.core.components.common.AnimatedVisibility 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.components.settings.ColorPickerWithTitle import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategoryTitle import ua.acclorite.book_story.ui.settings.SettingsEvent @@ -306,11 +305,11 @@ private fun ReorderableCollectionItemScope.ColorPresetOptionRowItem( ) } - Text( - title.trim(), - color = animatedFontColor.value, - style = MaterialTheme.typography.labelLarge, - overflow = TextOverflow.Ellipsis, + StyledText( + text = title.trim(), + style = MaterialTheme.typography.labelLarge.copy( + color = animatedFontColor.value + ), maxLines = 1 ) @@ -387,12 +386,12 @@ private fun ColorPresetOptionConfigurationItem( contentAlignment = Alignment.CenterStart ) { if (title.value.isEmpty()) { - Text( - stringResource(id = R.string.color_preset_placeholder), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.titleLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis, + StyledText( + text = stringResource(id = R.string.color_preset_placeholder), + style = MaterialTheme.typography.titleLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), + maxLines = 1 ) } innerText() 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 b02b1276..571838a4 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 @@ -32,19 +32,18 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow 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.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 @@ -199,11 +198,11 @@ private fun AppThemeOptionItem( } } Spacer(modifier = Modifier.height(6.dp)) - Text( + StyledText( text = stringResource(id = theme.title), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.labelLarge, - overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.labelLarge.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ), maxLines = 2 ) } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/BrowseSettingsTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/BrowseSettingsTopBar.kt index ef3b1644..7878f6a0 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/BrowseSettingsTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/BrowseSettingsTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.settings.browse import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun BrowseSettingsTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.browse_settings)) + StyledText(stringResource(id = R.string.browse_settings)) }, navigationIcon = { NavigatorBackIconButton( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt index 2d18e128..8b3ecc6c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/filter/components/BrowseFilterOption.kt @@ -18,14 +18,13 @@ import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.items import androidx.compose.material3.Checkbox import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.core.constants.Constants import ua.acclorite.book_story.presentation.core.constants.provideExtensions import ua.acclorite.book_story.ui.main.MainEvent @@ -70,11 +69,10 @@ private fun BrowseFilterOptionItem( ) Spacer(modifier = Modifier.width(14.dp)) - Text( + StyledText( text = item, style = MaterialTheme.typography.bodyLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/sort/components/BrowseSortOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/sort/components/BrowseSortOption.kt index da167065..89c886c3 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/sort/components/BrowseSortOption.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/browse/sort/components/BrowseSortOption.kt @@ -22,18 +22,17 @@ import androidx.compose.material.icons.filled.ArrowDownward import androidx.compose.material.icons.filled.ArrowUpward import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow 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.browse.BrowseSortOrder +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.ui.main.MainEvent import ua.acclorite.book_story.ui.main.MainModel @@ -88,7 +87,7 @@ private fun BrowseSortOptionItem( ) Spacer(modifier = Modifier.width(24.dp)) - Text( + StyledText( text = stringResource( when (item) { BrowseSortOrder.NAME -> R.string.browse_sort_order_name @@ -98,8 +97,7 @@ private fun BrowseSortOptionItem( } ), style = MaterialTheme.typography.bodyLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis + maxLines = 1 ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/components/SettingsSubcategoryTitle.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/components/SettingsSubcategoryTitle.kt index 3a99e530..87fed225 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/components/SettingsSubcategoryTitle.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/components/SettingsSubcategoryTitle.kt @@ -8,7 +8,6 @@ package ua.acclorite.book_story.presentation.settings.components import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -19,6 +18,7 @@ import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun SettingsSubcategoryTitle( @@ -27,16 +27,16 @@ fun SettingsSubcategoryTitle( color: Color = MaterialTheme.colorScheme.onSurfaceVariant, padding: Dp = 18.dp ) { - Text( - title, - color = color, + StyledText( + text = title, modifier = modifier.padding(horizontal = padding), style = TextStyle( lineBreak = LineBreak.Heading, fontFamily = FontFamily.Default, fontWeight = FontWeight.Medium, fontSize = 16.sp, - lineHeight = 20.sp + lineHeight = 20.sp, + color = color ) ) } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsTopBar.kt index c99b285a..7a1fb04c 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.settings.general import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun GeneralSettingsTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.general_settings)) + StyledText(stringResource(id = R.string.general_settings)) }, navigationIcon = { NavigatorBackIconButton( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/ReaderSettingsTopBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/ReaderSettingsTopBar.kt index 804427e4..35b15b83 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/ReaderSettingsTopBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/ReaderSettingsTopBar.kt @@ -9,12 +9,12 @@ package ua.acclorite.book_story.presentation.settings.reader import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText import ua.acclorite.book_story.presentation.navigator.NavigatorBackIconButton @OptIn(ExperimentalMaterial3Api::class) @@ -25,7 +25,7 @@ fun ReaderSettingsTopBar( ) { LargeTopAppBar( title = { - Text(stringResource(id = R.string.reader_settings)) + StyledText(stringResource(id = R.string.reader_settings)) }, navigationIcon = { NavigatorBackIconButton( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneBottomBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneBottomBar.kt index dade73d6..294eccc9 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneBottomBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneBottomBar.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -25,6 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun StartDoneBottomBar( @@ -49,7 +49,7 @@ fun StartDoneBottomBar( navigateToBrowse() } ) { - Text(text = stringResource(id = R.string.no)) + StyledText(text = stringResource(id = R.string.no)) } Spacer(modifier = Modifier.width(18.dp)) Button( @@ -59,7 +59,7 @@ fun StartDoneBottomBar( navigateToHelp() } ) { - Text(text = stringResource(id = R.string.yes_go_to_help)) + StyledText(text = stringResource(id = R.string.yes_go_to_help)) } } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneLayout.kt index ff8aa57c..ac2fd3af 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartDoneLayout.kt @@ -18,7 +18,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -27,6 +26,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun StartDoneLayout( @@ -48,18 +48,20 @@ fun StartDoneLayout( modifier = Modifier.size(190.dp) ) Spacer(modifier = Modifier.height(16.dp)) - Text( + StyledText( text = stringResource(id = R.string.start_done), - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.headlineMedium, - textAlign = TextAlign.Center + style = MaterialTheme.typography.headlineMedium.copy( + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Center + ) ) Spacer(modifier = Modifier.height(4.dp)) - Text( + StyledText( text = stringResource(id = R.string.start_done_desc), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyMedium, - textAlign = TextAlign.Center + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center + ) ) } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsBottomBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsBottomBar.kt index e7294b33..a7a8898f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsBottomBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsBottomBar.kt @@ -13,12 +13,12 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun StartSettingsBottomBar( @@ -37,7 +37,7 @@ fun StartSettingsBottomBar( onClick = { navigateForward() }, enabled = storagePermissionGranted || currentPage != 2 ) { - Text(text = stringResource(id = R.string.next)) + StyledText(text = stringResource(id = R.string.next)) } } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissionsItem.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissionsItem.kt index 9171ef93..6987e0fd 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissionsItem.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissionsItem.kt @@ -19,15 +19,14 @@ import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun StartSettingsLayoutPermissionsItem( @@ -44,12 +43,12 @@ fun StartSettingsLayoutPermissionsItem( ) { Column(Modifier.weight(1f), verticalArrangement = Arrangement.Center) { Row(verticalAlignment = Alignment.CenterVertically) { - Text( + StyledText( text = title, - color = MaterialTheme.colorScheme.onSurface, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - style = MaterialTheme.typography.titleMedium + style = MaterialTheme.typography.titleMedium.copy( + color = MaterialTheme.colorScheme.onSurface + ), + maxLines = 1 ) if (!isOptional) { @@ -62,10 +61,11 @@ fun StartSettingsLayoutPermissionsItem( ) } } - Text( + StyledText( text = description, - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodySmall + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) } @@ -77,22 +77,23 @@ fun StartSettingsLayoutPermissionsItem( onClick = onGrantClick, contentPadding = ButtonDefaults.TextButtonContentPadding ) { - Text( + StyledText( text = stringResource(id = R.string.grant), style = MaterialTheme.typography.labelLarge ) } } else { TextButton(onClick = onGrantClick) { - Text(text = stringResource(id = R.string.grant)) + StyledText(text = stringResource(id = R.string.grant)) } } } else { - Text( + StyledText( text = stringResource(id = R.string.start_permissions_granted), - color = MaterialTheme.colorScheme.primary.copy(0.7f), - style = MaterialTheme.typography.labelLarge, - modifier = Modifier.padding(ButtonDefaults.TextButtonContentPadding) + modifier = Modifier.padding(ButtonDefaults.TextButtonContentPadding), + style = MaterialTheme.typography.labelLarge.copy( + color = MaterialTheme.colorScheme.primary.copy(0.7f) + ) ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsScaffold.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsScaffold.kt index 936d25fa..d373e665 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsScaffold.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsScaffold.kt @@ -19,13 +19,13 @@ import androidx.compose.material.icons.filled.GolfCourse import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.common.StyledText @Composable fun StartSettingsScaffold( @@ -59,16 +59,18 @@ fun StartSettingsScaffold( modifier = Modifier.size(64.dp) ) Spacer(modifier = Modifier.height(12.dp)) - Text( + StyledText( text = stringResource(id = R.string.start_welcome), - color = MaterialTheme.colorScheme.onSurface, - style = MaterialTheme.typography.headlineSmall + style = MaterialTheme.typography.headlineSmall.copy( + color = MaterialTheme.colorScheme.onSurface + ) ) Spacer(modifier = Modifier.height(8.dp)) - Text( + StyledText( text = stringResource(id = R.string.start_welcome_desc), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyMedium + style = MaterialTheme.typography.bodyMedium.copy( + color = MaterialTheme.colorScheme.onSurfaceVariant + ) ) Spacer(modifier = Modifier.height(18.dp))