diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 81d4f4f..19343ec 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -54,6 +54,7 @@ dependencies { implementation(libs.androidx.lifecycle.viewmodel) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.activity.compose) + implementation(libs.androidx.adaptive) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/AppScreen.kt b/app/src/main/java/org/nsh07/pomodoro/ui/AppScreen.kt index 6bba39d..ddfe1f7 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/AppScreen.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/AppScreen.kt @@ -12,10 +12,12 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme.motionScheme +import androidx.compose.material3.NavigationItemIconPosition import androidx.compose.material3.Scaffold import androidx.compose.material3.ShortNavigationBar import androidx.compose.material3.ShortNavigationBarItem import androidx.compose.material3.Text +import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -34,6 +36,7 @@ import androidx.navigation3.runtime.entry import androidx.navigation3.runtime.entryProvider import androidx.navigation3.runtime.rememberNavBackStack import androidx.navigation3.ui.NavDisplay +import androidx.window.core.layout.WindowSizeClass import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.withContext @@ -58,6 +61,7 @@ fun AppScreen( val layoutDirection = LocalLayoutDirection.current val haptic = LocalHapticFeedback.current val motionScheme = motionScheme + val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass LaunchedEffect(Unit) { withContext(Dispatchers.IO) { @@ -93,6 +97,12 @@ fun AppScreen( else Icon(painterResource(it.unselectedIcon), null) } }, + iconPosition = + if (windowSizeClass.isWidthAtLeastBreakpoint( + WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND + ) + ) NavigationItemIconPosition.Start + else NavigationItemIconPosition.Top, label = { Text(it.label) } ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 21cfb54..2696859 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,6 @@ [versions] activityCompose = "1.10.1" +adaptive = "1.1.0" agp = "8.11.0" composeBom = "2025.06.02" coreKtx = "1.16.0" @@ -14,6 +15,7 @@ room = "2.7.2" [libraries] androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } +androidx-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive", version.ref = "adaptive" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom-alpha", version.ref = "composeBom" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }