From 0e87507e639f1d3046a4deae8551482fa9384c61 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sun, 6 Feb 2022 20:09:38 +0530 Subject: [PATCH] android: add ClawNavigationBar --- .../ui/decorations/ClawNavigationBar.kt | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt new file mode 100644 index 00000000..03a08f92 --- /dev/null +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt @@ -0,0 +1,43 @@ +package dev.msfjarvis.claw.android.ui.decorations + +import androidx.compose.material3.Icon +import androidx.compose.material3.NavigationBar +import androidx.compose.material3.NavigationBarItem +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.painter.Painter +import androidx.navigation.NavController + +@Composable +fun ClawNavigationBar( + navController: NavController, + items: List, + modifier: Modifier = Modifier, +) { + var selectedIndex by remember { mutableStateOf(0) } + + NavigationBar(modifier = modifier) { + items.forEachIndexed { index, navItem -> + NavigationBarItem( + icon = { Icon(painter = navItem.icon, contentDescription = navItem.label) }, + label = { Text(text = navItem.label) }, + selected = selectedIndex == index, + onClick = { + selectedIndex = index + navController.navigate(navItem.route) + } + ) + } + } +} + +class NavigationItem( + val label: String, + val route: String, + val icon: Painter, +)