add wide navbar

This commit is contained in:
2026-08-15 13:15:18 +03:00
parent e99743a9df
commit 64b7ed216a
@@ -28,8 +28,6 @@ import androidx.compose.material3.WideNavigationRail
import androidx.compose.material3.WideNavigationRailItem
import androidx.compose.material3.WideNavigationRailValue
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfoV2
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuite
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteItem
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldLayout
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteType
@@ -146,11 +144,7 @@ private fun <T : Route> DynamicNavigationScaffold(
content: @Composable (PaddingValues) -> Unit,
) {
val entries = navigationEntries.orEmpty()
val isWideRail = navigationSuiteType == NavigationSuiteType.WideNavigationRailCollapsed ||
navigationSuiteType == NavigationSuiteType.WideNavigationRailExpanded
val railState = rememberWideNavigationRailState(
initialValue = WideNavigationRailValue.Collapsed
)
val railState = rememberWideNavigationRailState(WideNavigationRailValue.Collapsed)
var railHasFocus by remember { mutableStateOf(false) }
LaunchedEffect(railHasFocus) {
if (railHasFocus) railState.expand() else railState.collapse()
@@ -158,7 +152,6 @@ private fun <T : Route> DynamicNavigationScaffold(
NavigationSuiteScaffoldLayout(
navigationSuiteType = navigationSuiteType,
navigationSuite = {
if (isWideRail) {
WideNavigationRail(
state = railState,
modifier = Modifier.onFocusChanged { railHasFocus = it.hasFocus }
@@ -175,33 +168,16 @@ private fun <T : Route> DynamicNavigationScaffold(
icon = {
Icon(entry.painter, entry.title)
},
label = { Text(entry.title) },
modifier = Modifier.focusBorder(false, CircleShape)
)
label = {
if (railState.currentValue == WideNavigationRailValue.Expanded) {
Text(entry.title)
}
}
} else {
NavigationSuite(navigationSuiteType = navigationSuiteType) {
entries.forEach { entry ->
NavigationSuiteItem(
navigationSuiteType = navigationSuiteType,
selected = currentRoute == entry.route,
onClick = {
onSelectNavigation?.invoke(entry.route)
},
icon = {
Icon(
painter = entry.painter,
contentDescription = entry.title,
)
},
label = { Text(entry.title) },
modifier = Modifier.focusBorder(false, CircleShape)
)
}
}
}
},
) {
Scaffold(
modifier = if (scrollBehavior != null) {