diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 69a5f61..8336525 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -81,6 +81,7 @@ dependencies { implementation(libs.material3) implementation("com.google.dagger:hilt-android:2.51.1") implementation(libs.androidx.foundation) + implementation(libs.foundation) kapt("com.google.dagger:hilt-android-compiler:2.51.1") implementation("androidx.hilt:hilt-navigation-compose:1.0.0") implementation("com.google.accompanist:accompanist-pager:0.24.0-alpha") @@ -103,6 +104,7 @@ dependencies { lintChecks(libs.compose.lint.checks) implementation(platform("com.google.firebase:firebase-bom:34.3.0")) implementation("com.google.firebase:firebase-analytics") + implementation("androidx.compose.material:material-icons-extended:1.6.0") } apollo { diff --git a/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt b/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt index 178ed15..0b47592 100644 --- a/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt +++ b/app/src/main/java/com/cornellappdev/score/components/GamesCarousel.kt @@ -1,76 +1,33 @@ package com.cornellappdev.score.components -import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.cornellappdev.score.R import com.cornellappdev.score.model.GameCardData import com.cornellappdev.score.theme.CornellRed -import com.cornellappdev.score.theme.CrimsonPrimary -import com.cornellappdev.score.theme.GrayLight import com.cornellappdev.score.util.gameList -@Composable -fun DotIndicator( - pagerState: androidx.compose.foundation.pager.PagerState, - totalPages: Int, - modifier: Modifier = Modifier, - dotSize: Dp = 14.dp, - selectedColor: Color = CrimsonPrimary, - unselectedColor: Color = GrayLight -) { - Row( - modifier = modifier, - horizontalArrangement = Arrangement.spacedBy(32.dp) - ) { - for (i in 0 until totalPages) { - val color = if (i == pagerState.currentPage) selectedColor else unselectedColor - Canvas( - modifier = Modifier - .size(dotSize) - .padding(2.dp) - ) { - drawCircle(color = color) - } - } - } -} - @Composable fun GamesCarousel( games: List, onClick: (String) -> Unit, modifier: Modifier = Modifier, ) { - val pagerState = rememberPagerState(pageCount = { games.size }) - Column( - modifier = modifier - .fillMaxWidth(), - verticalArrangement = Arrangement.spacedBy(16.dp, Alignment.Top), + LazyRow( + modifier = modifier.fillMaxWidth(), + contentPadding = PaddingValues(horizontal = 24.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp) ) { - HorizontalPager( - state = pagerState, - modifier = Modifier.fillMaxWidth(), - contentPadding = PaddingValues(horizontal = 24.dp), - pageSpacing = 24.dp - ) { page -> - val game = games[page] + items(games) { game -> FeaturedGameCard( leftTeamLogo = painterResource(R.drawable.cornell_logo), rightTeamLogo = game.teamLogo, @@ -81,21 +38,12 @@ fun GamesCarousel( genderIcon = painterResource(game.genderIcon), sportIcon = painterResource(game.sportIcon), location = game.location, - modifier = Modifier, - headerModifier = Modifier, gradientColor1 = CornellRed, gradientColor2 = game.teamColor, leftScore = game.cornellScore?.toInt(), rightScore = game.otherScore?.toInt(), - onClick = { onClick(game.id) } - ) - } - - Box(modifier = Modifier.fillMaxWidth()) { - DotIndicator( - pagerState = pagerState, - totalPages = games.size, - modifier = Modifier.align(Alignment.Center) + onClick = { onClick(game.id) }, + modifier = Modifier.width(300.dp) ) } } @@ -105,4 +53,4 @@ fun GamesCarousel( @Preview private fun GamesCarouselPreview() = ScorePreview { GamesCarousel(gameList, onClick = {}) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt index ba66aa0..29d6009 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavHost.kt @@ -11,11 +11,13 @@ import androidx.navigation.toRoute import com.cornellappdev.score.model.ScoreEvent import com.cornellappdev.score.nav.root.ScoreScreens import com.cornellappdev.score.nav.root.ScoreScreens.Home +import com.cornellappdev.score.screen.EditProfileScreen import com.cornellappdev.score.screen.GameDetailsScreen import com.cornellappdev.score.screen.HighlightsScreen import com.cornellappdev.score.screen.HighlightsSearchScreen import com.cornellappdev.score.screen.HomeScreen import com.cornellappdev.score.screen.PastGamesScreen +import com.cornellappdev.score.screen.ProfileScreen import com.cornellappdev.score.util.highlightsList import com.cornellappdev.score.util.recentSearchList import com.cornellappdev.score.util.sportList @@ -47,6 +49,20 @@ fun ScoreNavHost(navController: NavHostController) { }) } } + composable { + ProfileScreen( + navigateToEditProfile = { + navController.navigate(ScoreScreens.EditProfile) + } + ) + } + composable { + EditProfileScreen( + onBackClick = { + navController.navigateUp() + } + ) + } composable { GameDetailsScreen( onBackArrow = { @@ -89,4 +105,3 @@ fun ScoreNavHost(navController: NavHostController) { // } } } - diff --git a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt index 91af73d..2b2494f 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/ScoreNavigationBar.kt @@ -8,6 +8,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavBackStackEntry @@ -38,11 +39,20 @@ fun ScoreNavigationBar( selectedIndicatorColor = Color.Transparent ), icon = { - Icon( - painter = painterResource(id = if (isSelected) item.selectedIcon else item.unselectedIcon), - contentDescription = null, - tint = Color.Unspecified - ) + val icon = if (isSelected) item.selectedIcon else item.unselectedIcon + if (icon is Int) { + Icon( + painter = painterResource(id = icon), + contentDescription = null, + tint = Color.Unspecified + ) + } else if (icon is ImageVector) { + Icon( + imageVector = icon, + contentDescription = null, + tint = if (isSelected) CrimsonPrimary else GrayPrimary + ) + } }, label = { Text( diff --git a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt index 8542ff7..54d3483 100644 --- a/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt +++ b/app/src/main/java/com/cornellappdev/score/nav/root/RootNavigation.kt @@ -9,6 +9,10 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Person +import androidx.compose.material.icons.outlined.Person +import androidx.compose.material.icons.outlined.Schedule import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.runtime.Composable @@ -18,6 +22,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.dropShadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.shadow.Shadow +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel @@ -65,7 +70,8 @@ fun RootNavigation( Scaffold( modifier = modifier.fillMaxSize(), bottomBar = { - if (navBackStackEntry?.toScreen() is ScoreScreens.GameDetailsPage) { + val currentScreen = navBackStackEntry?.toScreen() + if (currentScreen is ScoreScreens.GameDetailsPage || currentScreen is ScoreScreens.EditProfile) { return@Scaffold } Surface( @@ -110,6 +116,12 @@ sealed class ScoreScreens { @Serializable data class GameScoreSummaryPage(val scoreEvents: String) : ScoreScreens() + @Serializable + data object Profile : ScoreScreens() + + @Serializable + data object EditProfile : ScoreScreens() + ////removed for 2/2026 release // @Serializable // data object HighlightsScreen : ScoreScreens() @@ -124,17 +136,19 @@ fun NavBackStackEntry.toScreen(): ScoreScreens? = "GameDetailsPage" -> toRoute() "ScoresScreen" -> toRoute() "GameScoreSummaryPage" -> toRoute() + "Profile" -> toRoute() + "EditProfile" -> toRoute() //removed for 2/2026 release // "HighlightsScreen" -> toRoute() // "HighlightsSearchScreen" -> toRoute() - else -> throw IllegalArgumentException("Invalid screen") + else -> null } data class NavItem( val screen: ScoreScreens, val label: String, - val unselectedIcon: Int, - val selectedIcon: Int + val unselectedIcon: Any, + val selectedIcon: Any ) val tabs = listOf( @@ -157,4 +171,10 @@ val tabs = listOf( selectedIcon = R.drawable.ic_scores_filled, screen = ScoreScreens.ScoresScreen, ), -) \ No newline at end of file + NavItem( + label = "Profile", + unselectedIcon = Icons.Outlined.Person, + selectedIcon = Icons.Filled.Person, + screen = ScoreScreens.Profile, + ), +) diff --git a/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt new file mode 100644 index 0000000..1961213 --- /dev/null +++ b/app/src/main/java/com/cornellappdev/score/screen/EditProfileScreen.kt @@ -0,0 +1,211 @@ +package com.cornellappdev.score.screen + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +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.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronLeft +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +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.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.cornellappdev.score.theme.poppinsFamily + +@Composable +fun EditProfileScreen(onBackClick: () -> Unit) { + var name by remember { mutableStateOf("Audrey Wu") } + var username by remember { mutableStateOf("audreywuu") } + + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 16.dp) + ) { + Icon( + imageVector = Icons.Outlined.ChevronLeft, + contentDescription = "Back", + modifier = Modifier + .align(Alignment.CenterStart) + .size(24.dp) + .clickable { onBackClick() } + ) + Text( + text = "Edit profile", + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + modifier = Modifier.align(Alignment.Center) + ) + } + HorizontalDivider(color = Color(0xFFF0F0F0)) + + + Spacer(modifier = Modifier.height(24.dp)) + + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Box( + modifier = Modifier + .size(120.dp) + .border(width = 0.81.dp, color = Color(0xFF1D353E), shape = CircleShape) + .clip(CircleShape) + .background(Color(0xFF7EDAFF)), + contentAlignment = Alignment.Center + ) { + Text("🏓", fontSize = 85.sp) + } + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = "Edit photo", + color = Color(0xFFA5210D), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 18.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.Center + ) + } + + Spacer(modifier = Modifier.height(32.dp)) + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Name", + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + BasicTextField( + value = name, + onValueChange = { name = it }, + textStyle = TextStyle( + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.Normal, + lineHeight = 18.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.End + ), + modifier = Modifier.weight(1f) + ) + } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Username", + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + BasicTextField( + value = username, + onValueChange = { username = it }, + textStyle = TextStyle( + color = Color(0xFF333333), + fontSize = 18.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.Normal, + lineHeight = 18.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.End + ), + modifier = Modifier.weight(1f) + ) + } + } + + Spacer(modifier = Modifier.weight(1f)) + Button( + onClick = { }, + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(bottom = 60.dp) + .width(138.dp) + .height(46.dp), + shape = RoundedCornerShape(50.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFA5210D)), + contentPadding = PaddingValues(0.dp) + ) { + Text( + text = "Save", + color = Color.White, + fontSize = 24.sp, + fontFamily = poppinsFamily, + fontWeight = FontWeight.SemiBold, + lineHeight = 24.sp, + letterSpacing = 0.sp, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth() + ) + } + } +} + + +@Preview(showBackground = true) +@Composable +private fun EditProfileScreenPreview() { + MaterialTheme { + EditProfileScreen(onBackClick = {}) + } +} diff --git a/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt new file mode 100644 index 0000000..77cfe9c --- /dev/null +++ b/app/src/main/java/com/cornellappdev/score/screen/ProfileScreen.kt @@ -0,0 +1,247 @@ +package com.cornellappdev.score.screen +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ChevronRight +import androidx.compose.material.icons.outlined.Menu +import androidx.compose.material.icons.outlined.Notifications +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.cornellappdev.score.components.GamesCarousel +import com.cornellappdev.score.util.gameList + +@Composable +fun ProfileScreen( + modifier: Modifier = Modifier, + navigateToEditProfile: () -> Unit = {} +) { + val bookmarkedGames = gameList.take(4) + val recommendedGames = gameList.takeLast(4) + + Column( + modifier = modifier + .fillMaxSize() + .background(Color.White) + ) { + ProfileTopBar( + modifier = Modifier.padding(horizontal = 20.dp) + ) + + Spacer(modifier = Modifier.height(20.dp)) + + ProfileRow( + modifier = Modifier.padding(horizontal = 20.dp), + onEditClick = navigateToEditProfile + ) + + Spacer(modifier = Modifier.height(24.dp)) + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Bookmarks", + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = "${bookmarkedGames.size} Results", + fontSize = 14.sp, + color = Color.Gray + ) + Icon( + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = Color.Gray, + modifier = Modifier.size(18.dp) + ) + } + } + + Spacer(modifier = Modifier.height(12.dp)) + + GamesCarousel( + games = bookmarkedGames, + onClick = { gameId -> /* handle navigation */ } + ) + + Spacer(modifier = Modifier.height(24.dp)) + Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Games You Might Like", + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = "${recommendedGames.size} Results", + fontSize = 14.sp, + color = Color.Gray + ) + Icon( + imageVector = Icons.Outlined.ChevronRight, + contentDescription = null, + tint = Color.Gray, + modifier = Modifier.size(18.dp) + ) + } + } + + Spacer(modifier = Modifier.height(12.dp)) + + GamesCarousel( + games = recommendedGames, + onClick = { gameId -> /* handle navigation */ } + ) + } +} + +@Composable +fun ProfileTopBar(modifier: Modifier = Modifier) { + Row( + modifier = modifier + .fillMaxWidth() + .padding(top = 16.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Profile", + fontSize = 26.sp, + fontWeight = FontWeight.Bold, + color = Color.Black + ) + + Row( + horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Outlined.Notifications, + contentDescription = "Notifications", + tint = Color.Black, + modifier = Modifier.size(24.dp) + ) + + Icon( + imageVector = Icons.Outlined.Menu, + contentDescription = "Menu", + tint = Color.Black, + modifier = Modifier.size(24.dp) + ) + } + } +} + +@Composable +fun ProfileRow( + modifier: Modifier = Modifier, + onEditClick: () -> Unit = {} +) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = modifier.fillMaxWidth() + ) { + Box( + modifier = Modifier + .size(120.dp) + .border( + width = 0.81.dp, + color = Color(0xFF1D353E), + shape = CircleShape + ) + .clip(CircleShape) + .background(Color(0xFF7EDAFF)), + contentAlignment = Alignment.Center + ) { + Text( + text = "🏓", + fontSize = 72.sp, + lineHeight = 72.sp + ) + } + + Spacer(modifier = Modifier.width(24.dp)) + + Column(verticalArrangement = Arrangement.spacedBy(2.dp)) { + Text( + text = "Audrey Wu", + color = Color(0xFF333333), + fontSize = 18.sp, + fontWeight = FontWeight.W600, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + Text( + text = "@audreywuu", + color = Color(0xFF333333), + fontSize = 18.sp, + fontWeight = FontWeight.W500, + lineHeight = 18.sp, + letterSpacing = 0.sp + ) + Spacer(modifier = Modifier.height(6.dp)) + EditProfileButton(onClick = onEditClick) + } + } +} + +@Composable +fun EditProfileButton( + modifier: Modifier = Modifier, + onClick: () -> Unit = {} +) { + OutlinedButton( + onClick = onClick, + shape = RoundedCornerShape(100.dp), + colors = ButtonDefaults.outlinedButtonColors( + containerColor = Color.White, + contentColor = Color(0xFF333333) + ), + border = BorderStroke(1.dp, Color(0xFFD1D1D1)), + contentPadding = PaddingValues(horizontal = 12.dp, vertical = 4.dp), + modifier = modifier + .width(97.dp) + .height(32.dp) + ) { + Text( + text = "Edit profile", + fontSize = 12.sp, + fontWeight = FontWeight.Medium, + letterSpacing = 0.sp + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun ProfileScreenPreview() { + MaterialTheme { + ProfileScreen() + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index baadf24..3a5a0da 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,6 +19,7 @@ material3 = "1.4.0-alpha11" runtime = "1.9.4" ui = "1.9.4" foundation = "1.9.4" +foundationVersion = "1.10.3" [libraries] @@ -35,6 +36,7 @@ androidx-constraintlayout = { group = "androidx.constraintlayout", name = "const androidx-runtime-android = { group = "androidx.compose.runtime", name = "runtime-android", version.ref = "runtimeAndroid" } apollo-runtime = { module = "com.apollographql.apollo:apollo-runtime", version.ref = "apollo" } androidx-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundation" } +foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "foundationVersion" } [plugins]