Skip to content

Commit ecc898b

Browse files
authored
Nav bar shadow (#89)
* Fix lack of navbar shadow issue - added shadow - rounded corners * Address nit
1 parent 112b416 commit ecc898b

3 files changed

Lines changed: 38 additions & 14 deletions

File tree

app/build.gradle.kts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ android {
4848
}
4949
}
5050
composeOptions {
51-
kotlinCompilerExtensionVersion = "1.5.3"
51+
kotlinCompilerExtensionVersion = "1.7.0"
5252
}
5353

5454
compileOptions {
@@ -62,9 +62,9 @@ android {
6262

6363
dependencies {
6464
// Jetpack Compose dependencies
65-
implementation(platform("androidx.compose:compose-bom:2024.01.00"))
66-
implementation("androidx.compose.ui:ui:1.4.0")
67-
implementation("androidx.compose.ui:ui-tooling-preview")
65+
implementation(platform("androidx.compose:compose-bom:2024.09.00"))
66+
implementation("androidx.compose.material3:material3")
67+
implementation("androidx.compose.ui:ui:1.9.4")
6868
implementation("androidx.compose.ui:ui-tooling-preview:1.4.3")
6969
implementation("androidx.activity:activity-compose")
7070
implementation("androidx.lifecycle:lifecycle-viewmodel-compose")
@@ -100,8 +100,9 @@ apollo {
100100
service("service") {
101101
packageName.set("com.example.score")
102102
introspection {
103-
endpointUrl.set("https://score.cornellappdev.com/graphql")
103+
endpointUrl.set("https://score-dev.cornellappdev.com/graphql")
104104
schemaFile.set(file("src/main/graphql/schema.graphqls"))
105105
}
106106
}
107-
}
107+
}
108+

app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@ import com.cornellappdev.score.nav.root.toScreen
1717
import com.cornellappdev.score.theme.CrimsonPrimary
1818
import com.cornellappdev.score.theme.GrayPrimary
1919
import com.cornellappdev.score.theme.Style.bodyMedium
20-
import com.cornellappdev.score.theme.White
2120

2221
@Composable
2322
fun ScoreNavigationBar(
2423
navigateToScreen: (ScoreScreens) -> Unit,
2524
navBackStackEntry: NavBackStackEntry?,
2625
modifier: Modifier = Modifier,
2726
) {
28-
NavigationBar(modifier = modifier, containerColor = White) {
27+
NavigationBar(
28+
modifier = modifier,
29+
containerColor = Color.Transparent
30+
) {
2931
tabs.map { item ->
3032
val isSelected = item.screen == navBackStackEntry?.toScreen()
3133

app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,20 @@ import androidx.compose.animation.core.keyframes
66
import androidx.compose.animation.core.rememberInfiniteTransition
77
import androidx.compose.foundation.layout.Box
88
import androidx.compose.foundation.layout.fillMaxSize
9+
import androidx.compose.foundation.layout.fillMaxWidth
910
import androidx.compose.foundation.layout.padding
11+
import androidx.compose.foundation.shape.RoundedCornerShape
1012
import androidx.compose.material3.Scaffold
13+
import androidx.compose.material3.Surface
1114
import androidx.compose.runtime.Composable
1215
import androidx.compose.runtime.CompositionLocalProvider
1316
import androidx.compose.runtime.LaunchedEffect
1417
import androidx.compose.ui.Modifier
18+
import androidx.compose.ui.draw.dropShadow
19+
import androidx.compose.ui.graphics.Color
20+
import androidx.compose.ui.graphics.shadow.Shadow
21+
import androidx.compose.ui.unit.DpOffset
22+
import androidx.compose.ui.unit.dp
1523
import androidx.hilt.navigation.compose.hiltViewModel
1624
import androidx.navigation.NavBackStackEntry
1725
import androidx.navigation.compose.currentBackStackEntryAsState
@@ -20,13 +28,13 @@ import androidx.navigation.toRoute
2028
import com.cornellappdev.score.R
2129
import com.cornellappdev.score.nav.ScoreNavHost
2230
import com.cornellappdev.score.nav.ScoreNavigationBar
23-
import com.cornellappdev.score.nav.root.ScoreScreens.GameDetailsPage
2431
import com.cornellappdev.score.theme.LocalInfiniteLoading
2532
import com.cornellappdev.score.theme.White
2633
import kotlinx.serialization.Serializable
2734

2835
@Composable
2936
fun RootNavigation(
37+
modifier: Modifier = Modifier,
3038
rootNavigationViewModel: RootNavigationViewModel = hiltViewModel(),
3139
) {
3240
val navController = rememberNavController()
@@ -55,19 +63,32 @@ fun RootNavigation(
5563
}
5664
}
5765

58-
5966
Scaffold(
60-
modifier = Modifier.fillMaxSize(), bottomBar = {
61-
if (navBackStackEntry?.toScreen() is GameDetailsPage) {
67+
modifier = modifier.fillMaxSize(), bottomBar = {
68+
if (navBackStackEntry?.toScreen() is ScoreScreens.GameDetailsPage) {
6269
return@Scaffold
6370
}
64-
ScoreNavigationBar({ navController.navigate(it) }, navBackStackEntry)
71+
Surface(
72+
modifier = Modifier
73+
.fillMaxWidth()
74+
.dropShadow(
75+
shape = RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp),
76+
shadow = Shadow(
77+
radius = 6.dp,
78+
color = Color.Black.copy(alpha = 0.07f),
79+
offset = DpOffset(0.dp, (-5).dp)
80+
)
81+
),
82+
color = Color.White,
83+
shape = RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp)
84+
) {
85+
ScoreNavigationBar({ navController.navigate(it) }, navBackStackEntry)
86+
}
6587
},
6688
containerColor = White
6789
) { innerPadding ->
6890
Box(modifier = Modifier.padding(innerPadding)) {
6991
CompositionLocalProvider(LocalInfiniteLoading provides animatedValue) {
70-
7192
ScoreNavHost(navController)
7293
}
7394
}

0 commit comments

Comments
 (0)