diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a56fb5d3..d4302ba8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,10 +1,7 @@ name: Android CI Build on: - push: - branches: [ "master", "hotfix/*", "feature/*" ] - pull_request: - branches: [ "master", "hotfix/*", "feature/*" ] + workflow_dispatch: env: KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index aa583ed6..98b4596d 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -1,6 +1,7 @@ name: Android CI Release on: + workflow_dispatch: push: branches: [ "release/*"] diff --git a/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt b/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt index ab8481ec..8be5d9b7 100644 --- a/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt +++ b/app/src/main/kotlin/dev/meloda/fast/presentation/MainActivity.kt @@ -23,7 +23,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalResources import androidx.core.content.ContextCompat import androidx.lifecycle.compose.LifecycleResumeEffect @@ -42,17 +41,17 @@ import dev.meloda.fast.datastore.UserSettings import dev.meloda.fast.model.api.domain.VkUser import dev.meloda.fast.service.OnlineService import dev.meloda.fast.service.longpolling.LongPollingService +import dev.meloda.fast.ui.R +import dev.meloda.fast.ui.common.LocalSizeConfig import dev.meloda.fast.ui.model.DeviceSize import dev.meloda.fast.ui.model.SizeConfig import dev.meloda.fast.ui.model.ThemeConfig import dev.meloda.fast.ui.theme.AppTheme -import dev.meloda.fast.ui.theme.LocalSizeConfig import dev.meloda.fast.ui.theme.LocalThemeConfig import dev.meloda.fast.ui.theme.LocalUser import dev.meloda.fast.ui.util.isNeedToEnableDarkMode import org.koin.androidx.compose.koinViewModel import org.koin.compose.koinInject -import dev.meloda.fast.ui.R class MainActivity : AppCompatActivity() { diff --git a/core/ui/src/main/kotlin/dev/meloda/fast/ui/common/Size.kt b/core/ui/src/main/kotlin/dev/meloda/fast/ui/common/Size.kt new file mode 100644 index 00000000..f97d87dc --- /dev/null +++ b/core/ui/src/main/kotlin/dev/meloda/fast/ui/common/Size.kt @@ -0,0 +1,12 @@ +package dev.meloda.fast.ui.common + +import androidx.compose.runtime.compositionLocalOf +import dev.meloda.fast.ui.model.DeviceSize +import dev.meloda.fast.ui.model.SizeConfig + +val LocalSizeConfig = compositionLocalOf { + SizeConfig( + widthSize = DeviceSize.Compact, + heightSize = DeviceSize.Compact + ) +} diff --git a/core/ui/src/main/kotlin/dev/meloda/fast/ui/extensions/Extensions.kt b/core/ui/src/main/kotlin/dev/meloda/fast/ui/extensions/Extensions.kt new file mode 100644 index 00000000..8a9b31b6 --- /dev/null +++ b/core/ui/src/main/kotlin/dev/meloda/fast/ui/extensions/Extensions.kt @@ -0,0 +1,9 @@ +package dev.meloda.fast.ui.extensions + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ProvidableCompositionLocal + +@Composable +fun ProvidableCompositionLocal.getOrThrow(): T { + return requireNotNull(current) +} diff --git a/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/AppTheme.kt b/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/AppTheme.kt index 0745c722..f2830ee8 100644 --- a/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/AppTheme.kt +++ b/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/AppTheme.kt @@ -12,106 +12,19 @@ import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.ProvidableCompositionLocal import androidx.compose.runtime.SideEffect import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.getValue import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView -import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontStyle -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.core.view.WindowCompat import androidx.navigation.NavController import dev.chrisbanes.haze.HazeState import dev.meloda.fast.model.api.domain.VkUser -import dev.meloda.fast.ui.R -import dev.meloda.fast.ui.model.DeviceSize -import dev.meloda.fast.ui.model.SizeConfig import dev.meloda.fast.ui.model.ThemeConfig -private val googleSansFonts = FontFamily( - Font(resId = R.font.google_sans_regular), - Font( - resId = R.font.google_sans_italic, - style = FontStyle.Italic - ), - Font( - resId = R.font.google_sans_medium, - weight = FontWeight.Medium - ), - Font( - resId = R.font.google_sans_medium_italic, - weight = FontWeight.Medium, - style = FontStyle.Italic - ), - Font( - resId = R.font.google_sans_bold, - weight = FontWeight.Bold - ), - Font( - resId = R.font.google_sans_bold_italic, - weight = FontWeight.Bold, - style = FontStyle.Italic - ) -) - -private val robotoFonts = FontFamily( - Font( - resId = R.font.roboto_thin, - weight = FontWeight.Thin - ), - Font( - resId = R.font.roboto_thin_italic, - weight = FontWeight.Thin, - style = FontStyle.Italic - ), - Font( - resId = R.font.roboto_light, - weight = FontWeight.Light - ), - Font( - resId = R.font.roboto_light_italic, - weight = FontWeight.Light, - style = FontStyle.Italic - ), - Font(resId = R.font.roboto_regular), - Font( - resId = R.font.roboto_italic, - style = FontStyle.Italic - ), - Font( - resId = R.font.roboto_medium, - weight = FontWeight.Medium - ), - Font( - resId = R.font.roboto_medium_italic, - weight = FontWeight.Medium, - style = FontStyle.Italic - ), - Font( - resId = R.font.roboto_bold, - weight = FontWeight.Bold - ), - Font( - resId = R.font.roboto_bold_italic, - weight = FontWeight.Bold, - style = FontStyle.Italic - ), - Font( - resId = R.font.roboto_black, - weight = FontWeight.Black - ), - Font( - resId = R.font.roboto_black_italic, - weight = FontWeight.Black, - style = FontStyle.Italic - ) -) - val LocalThemeConfig = compositionLocalOf { ThemeConfig( darkMode = false, @@ -125,13 +38,6 @@ val LocalThemeConfig = compositionLocalOf { ) } -val LocalSizeConfig = compositionLocalOf { - SizeConfig( - widthSize = DeviceSize.Compact, - heightSize = DeviceSize.Compact - ) -} - val LocalHazeState = compositionLocalOf { HazeState(true) } val LocalBottomPadding = compositionLocalOf { 0.dp } val LocalUser = compositionLocalOf { null } @@ -139,11 +45,6 @@ val LocalReselectedTab = compositionLocalOf { mapOf() } val LocalNavRootController = compositionLocalOf { null } val LocalNavController = compositionLocalOf { null } -@Composable -fun ProvidableCompositionLocal.getOrThrow(): T { - return requireNotNull(current) -} - @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun AppTheme( @@ -189,21 +90,21 @@ fun AppTheme( MaterialTheme.typography } else { MaterialTheme.typography.copy( - displayLarge = MaterialTheme.typography.displayLarge.copy(fontFamily = googleSansFonts), - displayMedium = MaterialTheme.typography.displayMedium.copy(fontFamily = googleSansFonts), - displaySmall = MaterialTheme.typography.displaySmall.copy(fontFamily = googleSansFonts), - headlineLarge = MaterialTheme.typography.headlineLarge.copy(fontFamily = googleSansFonts), - headlineMedium = MaterialTheme.typography.headlineMedium.copy(fontFamily = googleSansFonts), - headlineSmall = MaterialTheme.typography.headlineSmall.copy(fontFamily = googleSansFonts), - titleLarge = MaterialTheme.typography.titleLarge.copy(fontFamily = robotoFonts), - titleMedium = MaterialTheme.typography.titleMedium.copy(fontFamily = robotoFonts), - titleSmall = MaterialTheme.typography.titleSmall.copy(fontFamily = robotoFonts), - bodyLarge = MaterialTheme.typography.bodyLarge.copy(fontFamily = robotoFonts), - bodyMedium = MaterialTheme.typography.bodyMedium.copy(fontFamily = robotoFonts), - bodySmall = MaterialTheme.typography.bodySmall.copy(fontFamily = robotoFonts), - labelLarge = MaterialTheme.typography.labelLarge.copy(fontFamily = robotoFonts), - labelMedium = MaterialTheme.typography.labelMedium.copy(fontFamily = robotoFonts), - labelSmall = MaterialTheme.typography.labelSmall.copy(fontFamily = robotoFonts), + displayLarge = MaterialTheme.typography.displayLarge.copy(fontFamily = GoogleSansFamily), + displayMedium = MaterialTheme.typography.displayMedium.copy(fontFamily = GoogleSansFamily), + displaySmall = MaterialTheme.typography.displaySmall.copy(fontFamily = GoogleSansFamily), + headlineLarge = MaterialTheme.typography.headlineLarge.copy(fontFamily = GoogleSansFamily), + headlineMedium = MaterialTheme.typography.headlineMedium.copy(fontFamily = GoogleSansFamily), + headlineSmall = MaterialTheme.typography.headlineSmall.copy(fontFamily = GoogleSansFamily), + titleLarge = MaterialTheme.typography.titleLarge.copy(fontFamily = RobotoFamily), + titleMedium = MaterialTheme.typography.titleMedium.copy(fontFamily = RobotoFamily), + titleSmall = MaterialTheme.typography.titleSmall.copy(fontFamily = RobotoFamily), + bodyLarge = MaterialTheme.typography.bodyLarge.copy(fontFamily = RobotoFamily), + bodyMedium = MaterialTheme.typography.bodyMedium.copy(fontFamily = RobotoFamily), + bodySmall = MaterialTheme.typography.bodySmall.copy(fontFamily = RobotoFamily), + labelLarge = MaterialTheme.typography.labelLarge.copy(fontFamily = RobotoFamily), + labelMedium = MaterialTheme.typography.labelMedium.copy(fontFamily = RobotoFamily), + labelSmall = MaterialTheme.typography.labelSmall.copy(fontFamily = RobotoFamily), ) } diff --git a/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/Type.kt b/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/Type.kt new file mode 100644 index 00000000..34a64427 --- /dev/null +++ b/core/ui/src/main/kotlin/dev/meloda/fast/ui/theme/Type.kt @@ -0,0 +1,86 @@ +package dev.meloda.fast.ui.theme + +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import dev.meloda.fast.ui.R + +val GoogleSansFamily = FontFamily( + Font(resId = R.font.google_sans_regular), + Font( + resId = R.font.google_sans_italic, + style = FontStyle.Italic + ), + Font( + resId = R.font.google_sans_medium, + weight = FontWeight.Medium + ), + Font( + resId = R.font.google_sans_medium_italic, + weight = FontWeight.Medium, + style = FontStyle.Italic + ), + Font( + resId = R.font.google_sans_bold, + weight = FontWeight.Bold + ), + Font( + resId = R.font.google_sans_bold_italic, + weight = FontWeight.Bold, + style = FontStyle.Italic + ) +) + +val RobotoFamily = FontFamily( + Font( + resId = R.font.roboto_thin, + weight = FontWeight.Thin + ), + Font( + resId = R.font.roboto_thin_italic, + weight = FontWeight.Thin, + style = FontStyle.Italic + ), + Font( + resId = R.font.roboto_light, + weight = FontWeight.Light + ), + Font( + resId = R.font.roboto_light_italic, + weight = FontWeight.Light, + style = FontStyle.Italic + ), + Font(resId = R.font.roboto_regular), + Font( + resId = R.font.roboto_italic, + style = FontStyle.Italic + ), + Font( + resId = R.font.roboto_medium, + weight = FontWeight.Medium + ), + Font( + resId = R.font.roboto_medium_italic, + weight = FontWeight.Medium, + style = FontStyle.Italic + ), + Font( + resId = R.font.roboto_bold, + weight = FontWeight.Bold + ), + Font( + resId = R.font.roboto_bold_italic, + weight = FontWeight.Bold, + style = FontStyle.Italic + ), + Font( + resId = R.font.roboto_black, + weight = FontWeight.Black + ), + Font( + resId = R.font.roboto_black_italic, + weight = FontWeight.Black, + style = FontStyle.Italic + ) +) diff --git a/core/ui/src/main/res/drawable/ic_round_arrow_back_24.xml b/core/ui/src/main/res/drawable/ic_round_arrow_back_24.xml deleted file mode 100644 index 6182502c..00000000 --- a/core/ui/src/main/res/drawable/ic_round_arrow_back_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/core/ui/src/main/res/drawable/round_arrow_back_24px.xml b/core/ui/src/main/res/drawable/round_arrow_back_24px.xml new file mode 100644 index 00000000..68720579 --- /dev/null +++ b/core/ui/src/main/res/drawable/round_arrow_back_24px.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/core/ui/src/main/res/drawable/round_check_24px.xml b/core/ui/src/main/res/drawable/round_check_24px.xml new file mode 100644 index 00000000..d18f57a5 --- /dev/null +++ b/core/ui/src/main/res/drawable/round_check_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_close_24px.xml b/core/ui/src/main/res/drawable/round_close_24px.xml new file mode 100644 index 00000000..ec59ab2b --- /dev/null +++ b/core/ui/src/main/res/drawable/round_close_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_edit_24px.xml b/core/ui/src/main/res/drawable/round_edit_24px.xml new file mode 100644 index 00000000..71d95a9f --- /dev/null +++ b/core/ui/src/main/res/drawable/round_edit_24px.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/core/ui/src/main/res/drawable/round_play_arrow_24.xml b/core/ui/src/main/res/drawable/round_fill_play_arrow_24px.xml similarity index 100% rename from core/ui/src/main/res/drawable/round_play_arrow_24.xml rename to core/ui/src/main/res/drawable/round_fill_play_arrow_24px.xml diff --git a/core/ui/src/main/res/drawable/round_keyboard_arrow_up_24px.xml b/core/ui/src/main/res/drawable/round_keyboard_arrow_up_24px.xml new file mode 100644 index 00000000..ac8eceae --- /dev/null +++ b/core/ui/src/main/res/drawable/round_keyboard_arrow_up_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_mail_24px.xml b/core/ui/src/main/res/drawable/round_mail_24px.xml new file mode 100644 index 00000000..8c0ce2b1 --- /dev/null +++ b/core/ui/src/main/res/drawable/round_mail_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_more_vert_24px.xml b/core/ui/src/main/res/drawable/round_more_vert_24px.xml new file mode 100644 index 00000000..f4e102b5 --- /dev/null +++ b/core/ui/src/main/res/drawable/round_more_vert_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_play_arrow_24px.xml b/core/ui/src/main/res/drawable/round_play_arrow_24px.xml new file mode 100644 index 00000000..1b41461f --- /dev/null +++ b/core/ui/src/main/res/drawable/round_play_arrow_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_refresh_24px.xml b/core/ui/src/main/res/drawable/round_refresh_24px.xml new file mode 100644 index 00000000..80fb7139 --- /dev/null +++ b/core/ui/src/main/res/drawable/round_refresh_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/core/ui/src/main/res/drawable/round_settings_24px.xml b/core/ui/src/main/res/drawable/round_settings_24px.xml new file mode 100644 index 00000000..0ba18103 --- /dev/null +++ b/core/ui/src/main/res/drawable/round_settings_24px.xml @@ -0,0 +1,10 @@ + + + + diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt index 64f61355..c2eaa639 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt @@ -19,9 +19,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Close -import androidx.compose.material.icons.rounded.Done import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon @@ -55,11 +52,11 @@ import coil.compose.AsyncImage import dev.meloda.fast.auth.captcha.CaptchaViewModel import dev.meloda.fast.auth.captcha.CaptchaViewModelImpl import dev.meloda.fast.auth.captcha.model.CaptchaScreenState +import dev.meloda.fast.ui.R import dev.meloda.fast.ui.components.ActionInvokeDismiss import dev.meloda.fast.ui.components.MaterialDialog import dev.meloda.fast.ui.components.TextFieldErrorText import org.koin.androidx.compose.koinViewModel -import dev.meloda.fast.ui.R @Composable fun CaptchaRoute( @@ -149,7 +146,7 @@ fun CaptchaScreen( }, icon = { Icon( - imageVector = Icons.Rounded.Close, + painter = painterResource(R.drawable.round_close_24px), contentDescription = "Close icon", tint = MaterialTheme.colorScheme.onPrimaryContainer, ) @@ -252,7 +249,7 @@ fun CaptchaScreen( modifier = Modifier.align(Alignment.CenterHorizontally) ) { Icon( - imageVector = Icons.Rounded.Done, + painter = painterResource(R.drawable.round_check_24px), contentDescription = "Done icon", tint = MaterialTheme.colorScheme.onSecondaryContainer ) diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt index 2320d83c..d13795af 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt @@ -63,13 +63,13 @@ import dev.meloda.fast.auth.login.model.LoginDialog import dev.meloda.fast.auth.login.model.LoginScreenState import dev.meloda.fast.auth.login.model.LoginUserBannedArguments import dev.meloda.fast.auth.login.model.LoginValidationArguments +import dev.meloda.fast.ui.R +import dev.meloda.fast.ui.common.LocalSizeConfig import dev.meloda.fast.ui.components.MaterialDialog import dev.meloda.fast.ui.components.TextFieldErrorText -import dev.meloda.fast.ui.theme.LocalSizeConfig import dev.meloda.fast.ui.util.handleEnterKey import dev.meloda.fast.ui.util.handleTabKey import org.koin.androidx.compose.koinViewModel -import dev.meloda.fast.ui.R @Composable fun LoginRoute( diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/Logo.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/Logo.kt index 8e64c4a0..14dd7c88 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/Logo.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/Logo.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import dev.meloda.fast.ui.R -import dev.meloda.fast.ui.theme.LocalSizeConfig +import dev.meloda.fast.ui.common.LocalSizeConfig @Composable fun Logo( diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt index 08e75e6c..2863e4ce 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt @@ -4,8 +4,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -16,6 +14,7 @@ import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString @@ -68,7 +67,7 @@ fun UserBannedScreen( navigationIcon = { IconButton(onClick = onBack) { Icon( - imageVector = Icons.AutoMirrored.Rounded.ArrowBack, + painter = painterResource(R.drawable.round_arrow_back_24px), contentDescription = null ) } diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt index 7ee15b44..b3dc8fe9 100644 --- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt +++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt @@ -18,9 +18,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Close -import androidx.compose.material.icons.rounded.Done import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon @@ -56,11 +53,11 @@ import dev.meloda.fast.auth.validation.ValidationViewModel import dev.meloda.fast.auth.validation.ValidationViewModelImpl import dev.meloda.fast.auth.validation.model.ValidationScreenState import dev.meloda.fast.auth.validation.model.ValidationType +import dev.meloda.fast.ui.R import dev.meloda.fast.ui.components.ActionInvokeDismiss import dev.meloda.fast.ui.components.MaterialDialog import dev.meloda.fast.ui.components.TextFieldErrorText import org.koin.androidx.compose.koinViewModel -import dev.meloda.fast.ui.R @Composable fun ValidationRoute( @@ -173,7 +170,7 @@ fun ValidationScreen( }, icon = { Icon( - imageVector = Icons.Rounded.Close, + painter = painterResource(R.drawable.round_close_24px), contentDescription = "Close icon", tint = MaterialTheme.colorScheme.onPrimaryContainer, ) @@ -287,7 +284,7 @@ fun ValidationScreen( containerColor = MaterialTheme.colorScheme.secondaryContainer, ) { Icon( - imageVector = Icons.Rounded.Done, + painter = painterResource(R.drawable.round_check_24px), contentDescription = "Done icon", tint = MaterialTheme.colorScheme.onSecondaryContainer ) diff --git a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/ChatMaterialsScreen.kt b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/ChatMaterialsScreen.kt index a37cace4..9fccedee 100644 --- a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/ChatMaterialsScreen.kt +++ b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/ChatMaterialsScreen.kt @@ -11,8 +11,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -34,6 +32,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +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 @@ -168,7 +167,7 @@ fun ChatMaterialsScreen( navigationIcon = { IconButton(onClick = onBack) { Icon( - imageVector = Icons.AutoMirrored.Rounded.ArrowBack, + painter = painterResource(R.drawable.round_arrow_back_24px), contentDescription = null ) } diff --git a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/AudioMaterialsScreen.kt b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/AudioMaterialsScreen.kt index ce19332b..b05fbfd4 100644 --- a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/AudioMaterialsScreen.kt +++ b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/AudioMaterialsScreen.kt @@ -18,8 +18,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -157,7 +155,7 @@ fun AudioMaterialsScreen( .background(MaterialTheme.colorScheme.primary) .size(42.dp) .padding(4.dp), - painter = painterResource(R.drawable.round_play_arrow_24), + painter = painterResource(R.drawable.round_fill_play_arrow_24px), contentDescription = null, tint = contentColorFor(MaterialTheme.colorScheme.primary) ) @@ -205,7 +203,7 @@ fun AudioMaterialsScreen( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/FileMaterialsScreen.kt b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/FileMaterialsScreen.kt index 8a3ed3c4..8934a27e 100644 --- a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/FileMaterialsScreen.kt +++ b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/FileMaterialsScreen.kt @@ -19,8 +19,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -46,6 +44,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -238,7 +237,7 @@ fun FileMaterialsScreen( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/LinkMaterialsScreen.kt b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/LinkMaterialsScreen.kt index 332b561f..0bd1a3f8 100644 --- a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/LinkMaterialsScreen.kt +++ b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/LinkMaterialsScreen.kt @@ -19,8 +19,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -46,6 +44,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -257,7 +256,7 @@ fun LinkMaterialsScreen( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/PhotoMaterialsScreen.kt b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/PhotoMaterialsScreen.kt index cae82e01..c1790d48 100644 --- a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/PhotoMaterialsScreen.kt +++ b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/PhotoMaterialsScreen.kt @@ -17,8 +17,6 @@ import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.rememberLazyGridState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -37,6 +35,7 @@ import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp @@ -178,7 +177,7 @@ fun PhotoMaterialsScreen( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/VideoMaterialsScreen.kt b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/VideoMaterialsScreen.kt index e849eb69..84b84be6 100644 --- a/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/VideoMaterialsScreen.kt +++ b/feature/chatmaterials/src/main/kotlin/dev/meloda/fast/chatmaterials/presentation/materials/VideoMaterialsScreen.kt @@ -19,8 +19,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -43,6 +41,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.LayoutDirection @@ -230,7 +229,7 @@ fun VideoMaterialsScreen( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/navigation/ConversationsNavigation.kt b/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/navigation/ConversationsNavigation.kt index 4857fdc9..ab87452c 100644 --- a/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/navigation/ConversationsNavigation.kt +++ b/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/navigation/ConversationsNavigation.kt @@ -8,8 +8,8 @@ import dev.meloda.fast.conversations.ConversationsViewModel import dev.meloda.fast.conversations.presentation.ConversationsRoute import dev.meloda.fast.model.BaseError import dev.meloda.fast.model.ConversationsFilter +import dev.meloda.fast.ui.extensions.getOrThrow import dev.meloda.fast.ui.theme.LocalNavController -import dev.meloda.fast.ui.theme.getOrThrow import kotlinx.serialization.Serializable import org.koin.androidx.viewmodel.ext.android.getViewModel import org.koin.core.qualifier.named diff --git a/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsList.kt b/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsList.kt index 3e15067e..ac221607 100644 --- a/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsList.kt +++ b/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsList.kt @@ -8,8 +8,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -21,9 +19,11 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import dev.meloda.fast.conversations.model.ConversationsScreenState import dev.meloda.fast.data.UserConfig +import dev.meloda.fast.ui.R import dev.meloda.fast.ui.model.api.ConversationOption import dev.meloda.fast.ui.model.api.UiConversation import dev.meloda.fast.ui.theme.LocalBottomPadding @@ -112,7 +112,7 @@ fun ConversationsList( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsScreen.kt b/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsScreen.kt index 3ad66e77..c95c25c1 100644 --- a/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsScreen.kt +++ b/feature/conversations/src/main/kotlin/dev/meloda/fast/conversations/presentation/ConversationsScreen.kt @@ -18,10 +18,6 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack -import androidx.compose.material.icons.rounded.MoreVert -import androidx.compose.material.icons.rounded.Refresh import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api @@ -198,7 +194,7 @@ fun ConversationsScreen( if (screenState.isArchive) { IconButton(onClick = onBack) { Icon( - imageVector = Icons.AutoMirrored.Rounded.ArrowBack, + painter = painterResource(R.drawable.round_arrow_back_24px), contentDescription = null ) } @@ -228,7 +224,7 @@ fun ConversationsScreen( }, leadingIcon = { Icon( - imageVector = Icons.Rounded.Refresh, + painter = painterResource(R.drawable.round_refresh_24px), contentDescription = null ) } @@ -239,7 +235,7 @@ fun ConversationsScreen( if (dropDownItems.isNotEmpty()) { IconButton(onClick = { dropDownMenuExpanded = true }) { Icon( - imageVector = Icons.Rounded.MoreVert, + painter = painterResource(R.drawable.round_more_vert_24px), contentDescription = null ) } diff --git a/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatList.kt b/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatList.kt index 425ffc30..2eef18dd 100644 --- a/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatList.kt +++ b/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatList.kt @@ -9,21 +9,14 @@ import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text -import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import dev.meloda.fast.conversations.model.CreateChatScreenState @@ -87,7 +80,7 @@ fun CreateChatList( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatScreen.kt b/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatScreen.kt index 55436d07..9906e058 100644 --- a/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatScreen.kt +++ b/feature/createchat/src/main/kotlin/dev/meloda/fast/conversations/presentation/CreateChatScreen.kt @@ -21,9 +21,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack -import androidx.compose.material.icons.rounded.Done import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon @@ -51,6 +48,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.LayoutDirection @@ -63,6 +61,7 @@ import dev.chrisbanes.haze.materials.HazeMaterials import dev.meloda.fast.conversations.CreateChatViewModel import dev.meloda.fast.conversations.model.CreateChatScreenState import dev.meloda.fast.model.BaseError +import dev.meloda.fast.ui.R import dev.meloda.fast.ui.components.FullScreenContainedLoader import dev.meloda.fast.ui.components.IconButton import dev.meloda.fast.ui.components.NoItemsView @@ -70,7 +69,6 @@ import dev.meloda.fast.ui.components.VkErrorView import dev.meloda.fast.ui.theme.LocalHazeState import dev.meloda.fast.ui.theme.LocalThemeConfig import dev.meloda.fast.ui.util.isScrollingUp -import dev.meloda.fast.ui.R @Composable fun CreateChatRoute( @@ -187,7 +185,7 @@ fun CreateChatScreen( navigationIcon = { IconButton(onClick = onBack) { Icon( - imageVector = Icons.AutoMirrored.Rounded.ArrowBack, + painter = painterResource(R.drawable.round_arrow_back_24px), contentDescription = null ) } @@ -255,7 +253,7 @@ fun CreateChatScreen( text = { Text(text = stringResource(R.string.action_create)) }, icon = { Icon( - imageVector = Icons.Rounded.Done, + painter = painterResource(R.drawable.round_check_24px), contentDescription = null ) } diff --git a/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendItem.kt b/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendItem.kt index 69afbf65..4723f8b4 100644 --- a/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendItem.kt +++ b/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendItem.kt @@ -12,8 +12,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.MailOutline import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -106,7 +104,7 @@ fun FriendItem( } ) { Icon( - imageVector = Icons.Rounded.MailOutline, + painter = painterResource(R.drawable.round_mail_24px), contentDescription = null, tint = MaterialTheme.colorScheme.primary ) diff --git a/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendsList.kt b/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendsList.kt index 35762f62..4e67e9cd 100644 --- a/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendsList.kt +++ b/feature/friends/src/main/kotlin/dev/meloda/fast/friends/presentation/FriendsList.kt @@ -8,8 +8,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowUp import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -20,8 +18,10 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import dev.meloda.fast.friends.model.FriendsScreenState +import dev.meloda.fast.ui.R import dev.meloda.fast.ui.model.api.UiFriend import dev.meloda.fast.ui.theme.LocalBottomPadding import dev.meloda.fast.ui.util.ImmutableList @@ -92,7 +92,7 @@ fun FriendsList( colors = IconButtonDefaults.filledIconButtonColors() ) { Icon( - imageVector = Icons.Rounded.KeyboardArrowUp, + painter = painterResource(R.drawable.round_keyboard_arrow_up_24px), contentDescription = null ) } diff --git a/feature/languagepicker/src/main/kotlin/dev/meloda/fast/languagepicker/presentation/LanguagePickerScreen.kt b/feature/languagepicker/src/main/kotlin/dev/meloda/fast/languagepicker/presentation/LanguagePickerScreen.kt index 3b26ac36..34119915 100644 --- a/feature/languagepicker/src/main/kotlin/dev/meloda/fast/languagepicker/presentation/LanguagePickerScreen.kt +++ b/feature/languagepicker/src/main/kotlin/dev/meloda/fast/languagepicker/presentation/LanguagePickerScreen.kt @@ -21,9 +21,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack -import androidx.compose.material.icons.outlined.MoreVert import androidx.compose.material3.Button import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem @@ -47,6 +44,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.DpOffset @@ -58,8 +56,8 @@ import dev.meloda.fast.languagepicker.LanguagePickerViewModel import dev.meloda.fast.languagepicker.LanguagePickerViewModelImpl import dev.meloda.fast.languagepicker.model.LanguagePickerScreenState import dev.meloda.fast.languagepicker.model.SelectableLanguage -import org.koin.androidx.compose.koinViewModel import dev.meloda.fast.ui.R +import org.koin.androidx.compose.koinViewModel @Composable fun LanguagePickerRoute( @@ -117,7 +115,7 @@ fun LanguagePickerScreen( navigationIcon = { IconButton(onClick = onBack) { Icon( - imageVector = Icons.AutoMirrored.Rounded.ArrowBack, + painter = painterResource(R.drawable.round_arrow_back_24px), contentDescription = "Navigate back" ) } @@ -134,7 +132,7 @@ fun LanguagePickerScreen( } ) { Icon( - imageVector = Icons.Outlined.MoreVert, + painter = painterResource(R.drawable.round_more_vert_24px), contentDescription = "Options" ) } diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/DateStatus.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/DateStatus.kt index dfe4ee04..38889f9a 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/DateStatus.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/DateStatus.kt @@ -6,8 +6,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Create import androidx.compose.material3.Icon import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme @@ -66,7 +64,7 @@ fun BoxScope.DateStatus( if (isEdited) { Spacer(modifier = Modifier.width(4.dp)) Icon( - imageVector = Icons.Rounded.Create, + painter = painterResource(R.drawable.round_edit_24px), contentDescription = null, modifier = Modifier.size(14.dp) ) diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryTopBar.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryTopBar.kt index 2b31f471..887717e3 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryTopBar.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/MessagesHistoryTopBar.kt @@ -13,11 +13,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack -import androidx.compose.material.icons.outlined.MoreVert -import androidx.compose.material.icons.rounded.Close -import androidx.compose.material.icons.rounded.Refresh import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api @@ -161,11 +156,13 @@ fun MessagesHistoryTopBar( ) { Crossfade(targetState = !isMessagesSelecting) { state -> Icon( - imageVector = if (state) { - Icons.AutoMirrored.Rounded.ArrowBack - } else { - Icons.Rounded.Close - }, + painter = painterResource( + if (state) { + R.drawable.round_arrow_back_24px + } else { + R.drawable.round_close_24px + } + ), contentDescription = if (state) "Close button" else "Back button" ) @@ -234,7 +231,7 @@ fun MessagesHistoryTopBar( }, leadingIcon = { Icon( - imageVector = Icons.Rounded.Refresh, + painter = painterResource(R.drawable.round_refresh_24px), contentDescription = null ) } @@ -247,7 +244,7 @@ fun MessagesHistoryTopBar( onClick = { dropDownMenuExpanded = true } ) { Icon( - imageVector = Icons.Outlined.MoreVert, + painter = painterResource(R.drawable.round_more_vert_24px), contentDescription = "Options" ) } diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/PinnedMessageContainer.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/PinnedMessageContainer.kt index 2c11cf09..ded147dd 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/PinnedMessageContainer.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/PinnedMessageContainer.kt @@ -8,8 +8,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Close import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -84,7 +82,7 @@ fun PinnedMessageContainer( IconButton(onClick = onUnpinMessageButtonClicked) { Icon( modifier = Modifier.alpha(0.5f), - imageVector = Icons.Rounded.Close, + painter = painterResource(R.drawable.round_close_24px), contentDescription = null ) } diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Audio.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Audio.kt index f036091e..7384ca70 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Audio.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Audio.kt @@ -48,7 +48,7 @@ fun Audio( .background(MaterialTheme.colorScheme.primary) .size(36.dp) .padding(4.dp), - painter = painterResource(R.drawable.round_play_arrow_24), + painter = painterResource(R.drawable.round_fill_play_arrow_24px), contentDescription = null, tint = contentColorFor(MaterialTheme.colorScheme.primary) ) diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/AudioMessage.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/AudioMessage.kt index 31f70ac2..3502f1a6 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/AudioMessage.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/AudioMessage.kt @@ -91,7 +91,7 @@ fun AudioMessage( Icon( painter = painterResource( if (isPlaying) R.drawable.round_pause_24 - else R.drawable.round_play_arrow_24, + else R.drawable.round_fill_play_arrow_24px, ), contentDescription = null ) diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Previews.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Previews.kt index 156f2ed7..adf3673b 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Previews.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Previews.kt @@ -14,8 +14,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.PlayArrow import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -26,9 +24,11 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage +import dev.meloda.fast.ui.R import dev.meloda.fast.ui.components.IconButton import dev.meloda.fast.ui.util.ImmutableList import dev.meloda.fast.ui.util.ImmutableList.Companion.toImmutableList @@ -110,7 +110,7 @@ fun DynamicPreviewGrid( ) { Icon( modifier = Modifier, - imageVector = Icons.Rounded.PlayArrow, + painter = painterResource(R.drawable.round_fill_play_arrow_24px), contentDescription = null, tint = Color.White ) diff --git a/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreen.kt b/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreen.kt index 57cce505..c4840d54 100644 --- a/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreen.kt +++ b/feature/photoviewer/src/main/kotlin/dev/meloda/fast/photoviewer/presentation/PhotoViewScreen.kt @@ -21,9 +21,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.ArrowBack -import androidx.compose.material.icons.rounded.MoreVert import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api @@ -52,6 +49,7 @@ import androidx.compose.ui.graphics.painter.ColorPainter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalWindowInfo +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp @@ -256,7 +254,7 @@ private fun TopBar( navigationIcon = { IconButton(onClick = onBack) { Icon( - imageVector = Icons.AutoMirrored.Rounded.ArrowBack, + painter = painterResource(R.drawable.round_arrow_back_24px), contentDescription = "Back button", tint = Color.White ) @@ -267,7 +265,7 @@ private fun TopBar( onClick = { dropdownMenuShown = true } ) { Icon( - imageVector = Icons.Rounded.MoreVert, + painter = painterResource(R.drawable.round_more_vert_24px), contentDescription = "Options", tint = Color.White ) diff --git a/feature/profile/src/main/kotlin/dev/meloda/fast/profile/presentation/ProfileScreen.kt b/feature/profile/src/main/kotlin/dev/meloda/fast/profile/presentation/ProfileScreen.kt index 07bf6dd2..c3150429 100644 --- a/feature/profile/src/main/kotlin/dev/meloda/fast/profile/presentation/ProfileScreen.kt +++ b/feature/profile/src/main/kotlin/dev/meloda/fast/profile/presentation/ProfileScreen.kt @@ -12,8 +12,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Settings import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -39,9 +37,8 @@ import dev.meloda.fast.model.BaseError import dev.meloda.fast.profile.ProfileViewModel import dev.meloda.fast.profile.ProfileViewModelImpl import dev.meloda.fast.profile.model.ProfileScreenState -import org.koin.androidx.compose.koinViewModel - import dev.meloda.fast.ui.R +import org.koin.androidx.compose.koinViewModel @Composable fun ProfileRoute( @@ -77,7 +74,7 @@ fun ProfileScreen( actions = { IconButton(onClick = onSettingsButtonClicked) { Icon( - imageVector = Icons.Rounded.Settings, + painter = painterResource(R.drawable.round_settings_24px), contentDescription = null ) } diff --git a/feature/settings/src/main/kotlin/dev/meloda/fast/settings/presentation/SettingsScreen.kt b/feature/settings/src/main/kotlin/dev/meloda/fast/settings/presentation/SettingsScreen.kt index b78975eb..dcc4ff1e 100644 --- a/feature/settings/src/main/kotlin/dev/meloda/fast/settings/presentation/SettingsScreen.kt +++ b/feature/settings/src/main/kotlin/dev/meloda/fast/settings/presentation/SettingsScreen.kt @@ -92,7 +92,7 @@ fun SettingsScreen( navigationIcon = { IconButton(onClick = onBack) { Icon( - painter = painterResource(id = R.drawable.ic_round_arrow_back_24), + painter = painterResource(id = R.drawable.round_arrow_back_24px), contentDescription = "Back button" ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 14feee22..32cded39 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,13 @@ [versions] -agp = "8.13.0" +agp = "8.13.1" retrofit = "3.0.0" eithernet = "2.0.0" -haze = "1.6.10" -kotlin = "2.2.20" -ksp = "2.2.20-2.0.4" +haze = "1.7.1" +kotlin = "2.2.21" +ksp = "2.3.3" moduleGraph = "2.9.0" -compose-bom = "2025.10.00" +compose-bom = "2025.11.01" koin = "4.1.1" accompanist = "0.37.3" @@ -16,15 +16,15 @@ coroutines = "1.10.2" junit = "4.13.2" chucker = "4.2.0" guava = "33.5.0-jre" -lifecycle = "2.9.4" +lifecycle = "2.10.0" core-ktx = "1.17.0" material = "1.13.0" -loggingInterceptor = "5.2.0" +loggingInterceptor = "5.3.2" moshi = "1.15.2" -room = "2.8.2" +room = "2.8.4" preference-ktx = "1.2.1" nanokt = "1.3.0" -androidx-navigation = "2.9.5" +androidx-navigation = "2.9.6" serialization = "1.9.0" [libraries] @@ -63,7 +63,6 @@ androidx-navigation-compose = { module = "androidx.navigation:navigation-compose kotlin-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } compose-bom = { module = "androidx.compose:compose-bom-alpha", version.ref = "compose-bom" } -compose-material-icons = { module = "androidx.compose.material:material-icons-core" } compose-material3 = { module = "androidx.compose.material3:material3" } compose-ui = { module = "androidx.compose.ui:ui" } compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } @@ -90,7 +89,6 @@ room-gradlePlugin = { group = "androidx.room", name = "room-gradle-plugin", vers [bundles] compose = [ - "compose-material-icons", "compose-material3", "compose-material3-windowsize", "compose-ui",