@@ -2,8 +2,11 @@ package com.cornellappdev.uplift.ui.screens.onboarding
22
33import androidx.compose.foundation.background
44import androidx.compose.foundation.layout.Arrangement
5+ import androidx.compose.foundation.layout.Box
56import androidx.compose.foundation.layout.Column
7+ import androidx.compose.foundation.layout.fillMaxHeight
68import androidx.compose.foundation.layout.fillMaxSize
9+ import androidx.compose.foundation.layout.fillMaxWidth
710import androidx.compose.foundation.layout.height
811import androidx.compose.foundation.layout.padding
912import androidx.compose.foundation.rememberScrollState
@@ -18,15 +21,17 @@ import androidx.compose.runtime.getValue
1821import androidx.compose.runtime.mutableFloatStateOf
1922import androidx.compose.runtime.remember
2023import androidx.compose.runtime.setValue
24+ import androidx.compose.ui.Alignment
2125import androidx.compose.ui.Modifier
2226import androidx.compose.ui.draw.shadow
2327import androidx.compose.ui.graphics.Color
2428import androidx.compose.ui.text.font.FontWeight
25- import androidx.compose.ui.text.style.TextAlign
2629import androidx.compose.ui.tooling.preview.Preview
2730import androidx.compose.ui.unit.dp
2831import androidx.compose.ui.unit.sp
32+ import androidx.credentials.Credential
2933import com.cornellappdev.uplift.ui.components.goalsetting.GoalSlider
34+ import com.cornellappdev.uplift.ui.components.onboarding.auth.LogInButton
3035import com.cornellappdev.uplift.util.GRAY01
3136import com.cornellappdev.uplift.util.montserratFamily
3237
@@ -40,57 +45,72 @@ import com.cornellappdev.uplift.util.montserratFamily
4045fun GoalPromptScreen (
4146 /* TODO: Replace functions with viewmodel calls */
4247 goalValue : Float ,
43- onGoalValueChange : (Float ) -> Unit
48+ onGoalValueChange : (Float ) -> Unit ,
49+ onSignInWithGoogle : (credential: Credential ) -> Unit ,
50+ onSkip : () -> Unit
4451) {
45-
4652 Scaffold (
4753 topBar = {
48- TopAppBar (
49- title = {
54+ TopAppBar (
55+ title = {
56+ Box (
57+ modifier = Modifier .fillMaxHeight(),
58+ contentAlignment = Alignment .BottomStart
59+ ) {
5060 Text (
5161 text = " Set your goals." ,
52- modifier = Modifier .padding(top = 20 .dp),
5362 fontSize = 24 .sp,
5463 fontFamily = montserratFamily,
5564 fontWeight = FontWeight .Bold ,
56- textAlign = TextAlign . Left
65+ modifier = Modifier .padding(bottom = 16 .dp)
5766 )
58- },
59- modifier = Modifier
60- .height(120 .dp)
61- .shadow(elevation = 20 .dp, ambientColor = GRAY01 ),
62- colors = TopAppBarDefaults .topAppBarColors(
63- containerColor = Color .White ,
64- )
65-
67+ }
68+ },
69+ modifier = Modifier
70+ .height(120 .dp)
71+ .shadow(elevation = 20 .dp, ambientColor = GRAY01 ),
72+ colors = TopAppBarDefaults .topAppBarColors(
73+ containerColor = Color .White ,
6674 )
75+ )
6776 },
6877 modifier = Modifier .fillMaxSize(),
6978 ) { padding ->
7079 Column (
7180 modifier = Modifier
72- .background(color = Color .White )
73- .padding(
74- top = padding.calculateTopPadding(),
75- )
81+ .padding(padding)
7682 .fillMaxSize()
77- .verticalScroll(rememberScrollState() ),
78- verticalArrangement = Arrangement . SpaceBetween
83+ .background(color = Color . White ),
84+ horizontalAlignment = Alignment . CenterHorizontally
7985 ) {
80- /* Groups the goal slider and workout reminders together */
81- Column {
86+ Column (
87+ modifier = Modifier
88+ .fillMaxWidth()
89+ .weight(1f )
90+ .verticalScroll(rememberScrollState()),
91+ horizontalAlignment = Alignment .CenterHorizontally
92+ ) {
8293 GoalSlider (value = goalValue, onValueChange = onGoalValueChange)
94+ }
8395
96+ // Buttons pinned to the bottom
97+ Column (
98+ modifier = Modifier
99+ .fillMaxWidth()
100+ .padding(bottom = 32 .dp),
101+ horizontalAlignment = Alignment .CenterHorizontally ,
102+ verticalArrangement = Arrangement .spacedBy(8 .dp)
103+ ) {
104+ LogInButton { onSignInWithGoogle }
105+ SkipButton { onSkip }
84106 }
85107 }
86-
87108 }
88109}
89110
90-
91111@Preview(showBackground = true )
92112@Composable
93113fun GoalPromptScreenPreview () {
94114 var sliderVal by remember { mutableFloatStateOf(1f ) }
95- GoalPromptScreen (goalValue = sliderVal, onGoalValueChange = { sliderVal = it })
115+ GoalPromptScreen (goalValue = sliderVal, onGoalValueChange = { sliderVal = it }, {}, {} )
96116}
0 commit comments