diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 623c2b8..b41265d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -47,6 +47,10 @@ dependencies { implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.room3.runtime) + implementation(libs.androidx.room.ktx) + implementation(libs.androidx.compose.ui.text.google.fonts) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2cd881f..81d625d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ android:theme="@style/Theme.Chimesandroid"> diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimeCard.kt b/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimeCard.kt new file mode 100644 index 0000000..6df4b34 --- /dev/null +++ b/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimeCard.kt @@ -0,0 +1,43 @@ +package com.cornellappdev.chimes.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.dropShadow +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.shadow.Shadow +import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +fun ChimeCard (paddingValues: PaddingValues, modifier: Modifier, children: @Composable () -> Unit){ + Column( + modifier = modifier + .shadow( + elevation = 4.dp, + shape = RoundedCornerShape(16.dp), + ambientColor = Color(0x59A86161), + spotColor = Color(0x59A86161) + ) + .clip(RoundedCornerShape(16.dp)) + .background(brush = + Brush.linearGradient( + colors = + listOf(Color(0xFFFFF5F0), Color(0xFFFFE9E9)),)) + .padding(paddingValues), + verticalArrangement = Arrangement.spacedBy(18.dp) + ){ + children() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimeKudos.kt b/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimeKudos.kt new file mode 100644 index 0000000..6a8d32b --- /dev/null +++ b/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimeKudos.kt @@ -0,0 +1,52 @@ +package com.cornellappdev.chimes.ui.components + +import android.R +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Text +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.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun ChimeKudos(emoji: String) { + Button(modifier = Modifier + .shadow( + elevation = 4.dp, + shape = CircleShape, + ambientColor = Color(0x59A86161), + spotColor = Color(0x59A86161) + ) + .clip(CircleShape) + .height(64.dp) + .width(64.dp), + contentPadding = PaddingValues(0.dp), + onClick = {}, + colors = ButtonDefaults.buttonColors( + Color(0xFFFEEEEE)), + ){ + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ){ + Text( + text = emoji, + fontSize = 32.sp + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimePerformanceCard.kt b/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimePerformanceCard.kt new file mode 100644 index 0000000..2c0fa7f --- /dev/null +++ b/app/src/main/java/com/cornellappdev/chimes/ui/components/ChimePerformanceCard.kt @@ -0,0 +1,52 @@ +package com.cornellappdev.chimes.ui.components + +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Text +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.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.cornellappdev.chimes.R +import com.cornellappdev.chimes.ui.theme.Montserrat + +@Composable +fun ChimePerformanceCard (timePeriod: String, timeRange: String) { + ChimeCard( + paddingValues = PaddingValues(horizontal = 22.dp, vertical = 11.dp), + modifier = Modifier + .width(351.dp) + .height(51.dp) + ){ + Row ( + modifier = Modifier + .fillMaxSize(), + horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = timePeriod, + fontSize = 18.sp, + fontFamily = Montserrat, + modifier = Modifier.width(75.dp) + ) + Spacer(modifier = Modifier.fillMaxHeight().width((1f).dp).border((0.5f).dp, Color(0x4D635858))) + Text( + text = timeRange, + fontFamily = Montserrat, + fontSize = 18.sp + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/components/HeaderButton.kt b/app/src/main/java/com/cornellappdev/chimes/ui/components/HeaderButton.kt index 4517594..ee8132e 100644 --- a/app/src/main/java/com/cornellappdev/chimes/ui/components/HeaderButton.kt +++ b/app/src/main/java/com/cornellappdev/chimes/ui/components/HeaderButton.kt @@ -2,6 +2,7 @@ package com.cornellappdev.chimes.ui.components import android.os.Build import androidx.annotation.RequiresApi +import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.size @@ -12,6 +13,7 @@ import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.ClipOp import androidx.compose.ui.graphics.Color @@ -30,44 +32,22 @@ import androidx.compose.ui.unit.dp fun HeaderButton (iconId: Int, onClick: () -> Unit) { Button( modifier = Modifier - .size(50.dp) - .drawWithCache() { - val path = Path().apply { - addOutline(CircleShape.createOutline(size, layoutDirection, this@drawWithCache)) - } - - onDrawBehind { - clipPath(path, clipOp = ClipOp.Difference) { - drawIntoCanvas { canvas -> - val paint = android.graphics.Paint().apply { - color = android.graphics.Color.TRANSPARENT - setShadowLayer( - 4.dp.toPx(), - 0.dp.toPx(), - 4.dp.toPx(), - Color.Black.copy(alpha = 0.11f).toArgb() - ) - } - canvas.nativeCanvas.drawPath(path.asAndroidPath(), paint) - } - } - } - } - .border( - width = 1.dp, - brush = - Brush.linearGradient(listOf(Color(0xFFDEEAFA), Color(0xFFF7FAFF))), - shape = CircleShape - ), - onClick = { onClick() }, - colors = ButtonDefaults.buttonColors( - Color(0x33BFCFE4), + .shadow( + elevation = 4.dp, + shape = CircleShape, + ambientColor = Color(0x59A86161), + spotColor = Color(0x59A86161) + ) + .size(50.dp), + onClick = { onClick() }, + colors = ButtonDefaults.buttonColors( + Color.White, ), contentPadding = PaddingValues(0.dp) ) { Icon( painter = painterResource(id = iconId), - contentDescription = "hell", + contentDescription = "header icon", tint = Color(0xFF757575) ) } diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/components/Slope.kt b/app/src/main/java/com/cornellappdev/chimes/ui/components/Slope.kt new file mode 100644 index 0000000..c3cd5bc --- /dev/null +++ b/app/src/main/java/com/cornellappdev/chimes/ui/components/Slope.kt @@ -0,0 +1,85 @@ +package com.cornellappdev.chimes.ui.components + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import com.cornellappdev.chimes.R + +@Composable +fun Slope() { + Box( + modifier = Modifier.fillMaxSize() + ){ + Box( + modifier = Modifier + .height(411.dp) + .fillMaxWidth() + .background(brush = + Brush.linearGradient(colors = + listOf(Color(0xFFD3EEFF), Color(0xFFF6FAFF)))) + ) + Image( + painter = painterResource(R.drawable.ic_music_notes), + contentDescription = "", + modifier = Modifier.offset(x = 32.dp, y = 181.dp) + ) + Image( + painter = painterResource(R.drawable.ic_trees_back), + contentDescription = "", + modifier = Modifier. + offset(y = 346.dp) + ) + Image( + painter = painterResource(R.drawable.ic_slope), + contentDescription = "", + contentScale = ContentScale.FillBounds, + modifier = Modifier + .fillMaxWidth() + .padding(0.dp) + .offset(y = 289.dp) + .graphicsLayer(alpha = 0.99f) + .drawWithCache { + onDrawWithContent { + drawContent() + drawRect( + brush = Brush.linearGradient( + colors = listOf(Color(0xFFF2B5B5), Color(0xFFFBD3D3)), + start = Offset(0f, 0f), + end = Offset(0f, size.height)), + blendMode = BlendMode.SrcAtop + ) + } + }, + ) + Image( + painter = painterResource(R.drawable.ic_trees_front), + contentDescription = "", + modifier = Modifier. + offset(y = 324.dp) + ) + Image( + painter = painterResource(R.drawable.ic_clocktower_day), + contentDescription = "", + modifier = Modifier.offset(x = 200.dp, y = 165.dp).height(224.dp).width(164.dp), + ) + } +} diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/screens/HomeScreen.kt b/app/src/main/java/com/cornellappdev/chimes/ui/screens/HomeScreen.kt index 9b721fa..ef1d5fe 100644 --- a/app/src/main/java/com/cornellappdev/chimes/ui/screens/HomeScreen.kt +++ b/app/src/main/java/com/cornellappdev/chimes/ui/screens/HomeScreen.kt @@ -1,70 +1,247 @@ package com.cornellappdev.chimes.ui.screens import android.os.Build +import android.view.RoundedCorner import androidx.annotation.RequiresApi +import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.border 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.fillMaxHeight 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.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldColors +import androidx.compose.material3.TextFieldDefaults 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.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.cornellappdev.chimes.R +import com.cornellappdev.chimes.ui.components.ChimeCard +import com.cornellappdev.chimes.ui.components.ChimeKudos +import com.cornellappdev.chimes.ui.components.ChimePerformanceCard import com.cornellappdev.chimes.ui.components.HeaderButton +import com.cornellappdev.chimes.ui.components.Slope +import com.cornellappdev.chimes.ui.theme.Montserrat @RequiresApi(Build.VERSION_CODES.S) @Composable fun HomeScreen () { + var song by remember {mutableStateOf("")} Box (modifier = Modifier - .fillMaxSize()) { + .fillMaxSize() + .verticalScroll(rememberScrollState()) + .background(Color(0xFFFBD3D3))) { + Slope() Column (modifier = Modifier .fillMaxSize() - .background(brush = - Brush.linearGradient(colors = - listOf(Color(0xFFD3EEFF), Color(0xFFF6FAFF)))) - .padding(top = 68.dp), + .padding(bottom = 45.dp, start = 21.dp, end = 21.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(28.dp)) { + Spacer(modifier = Modifier.height(50.dp)) Row( - modifier = Modifier.height(50.dp), - horizontalArrangement = Arrangement.spacedBy(40.dp) + modifier = Modifier + .height(50.dp) + .width(348.dp), + horizontalArrangement = Arrangement.SpaceBetween ) { Text( text = "Hi, Arielle ☀\uFE0F", color = Color(0xFF4F4E4E), modifier = Modifier.fillMaxHeight(), + fontFamily = Montserrat, fontWeight = FontWeight.SemiBold, fontSize = 36.sp ) - Row ( - horizontalArrangement = Arrangement.spacedBy(17.dp) + HeaderButton (R.drawable.ic_navigation) { } + } + Spacer(modifier = Modifier.height(305.dp)) + Box ( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight() + .padding(0.dp), + contentAlignment = Alignment.Center + ) { + Column( + modifier = Modifier + .width(345.dp) + .padding(top = 0.dp), ){ - HeaderButton (R.drawable.ic_music_note) { } - HeaderButton (R.drawable.ic_rsvp) { } + ChimeCard( + paddingValues = PaddingValues(start = 20.dp, end = 20.dp, top = 18.dp, bottom = 12.dp), + modifier = Modifier + .width(351.dp) + .height(215.dp) + + ){ + Column ( + verticalArrangement = Arrangement.spacedBy(18.dp) + ){ + Column ( + modifier = Modifier.height(50.dp), + verticalArrangement = Arrangement.spacedBy(7.dp) + ) { + Row( + modifier = Modifier.height(25.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ){ + Text( + text = "\uD83C\uDF89", + modifier = Modifier.fillMaxHeight(), + fontWeight = FontWeight.Medium, + fontSize = 18.sp + ) + Text( + text = "Time to chime in!", + modifier = Modifier.fillMaxHeight(), + fontFamily = Montserrat, + fontWeight = FontWeight.Medium, + fontSize = 18.sp + ) + } + Text( + text = "Guess the song that's currently playing", + fontFamily = Montserrat, + modifier = Modifier.fillMaxHeight(), + fontSize = 15.sp, + ) + } + Column ( + verticalArrangement = Arrangement.spacedBy(12.dp), + horizontalAlignment = Alignment.End + ){ + Column ( + modifier = Modifier.height(64.dp), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + BasicTextField( + value = song, + onValueChange = { song = it }, + singleLine = true, + modifier = Modifier + .width(306.dp) + .height(41.dp) + .border(1.dp, Color(0xFFEFD3D3), shape = RoundedCornerShape(8.dp)) + .background(Color(0xFFFFFFFF), shape = RoundedCornerShape(8.dp)) + .padding(horizontal = 12.dp), + textStyle = LocalTextStyle.current.copy( + fontFamily = Montserrat, + fontSize = 14.sp, + color = Color(0xFF4F4E4E) + ), + decorationBox = { innerTextField -> + Box(contentAlignment = Alignment.CenterStart) { + if (song.isEmpty()) { + Text( + text = "enter a song...", + fontFamily = Montserrat, + fontSize = 14.sp, + color = Color(0xFFAAAAAA) + ) + } + innerTextField() + } + } + ) + Text( + text = "+ guess more", + fontFamily = Montserrat, + modifier = Modifier.fillMaxHeight(), + fontSize = 12.sp, + ) + } + Button( + onClick = {}, + shape = RoundedCornerShape(8.dp), + contentPadding = PaddingValues(horizontal = 20.dp, vertical = 8.dp), + border = BorderStroke((0.5f).dp, Color(0xFFE6BFBF)), + colors = ButtonDefaults.buttonColors( + containerColor = Color(0xFFFFF3F3)), + modifier = Modifier + .width(87.dp) + .height(33.dp) + ){ + Text( + text = "submit!", + fontFamily = Montserrat, + fontSize = 14.sp, + color = Color(0xFF655454) + ) + } + } + } + } + Spacer(modifier = Modifier.height(36.dp)) + Column ( + verticalArrangement = Arrangement.spacedBy(16.dp) + ){ + Text( + text = "Send Kudos! \uD83D\uDC4F", + fontFamily = Montserrat, + fontSize = 18.sp + ) + Row ( + modifier = Modifier + .fillMaxWidth() + .height(64.dp) + .padding(horizontal = 8.dp), + horizontalArrangement = Arrangement.SpaceBetween + ) + { + ChimeKudos("⭐") + ChimeKudos("💖") + ChimeKudos("👍") + ChimeKudos("👏") + } + } + Spacer(modifier = Modifier.height(28.dp)) + Column ( + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Text( + text = "Today's Performance", + fontFamily = Montserrat, + fontSize = 18.sp + ) + Column ( + verticalArrangement = Arrangement.spacedBy(10.dp) + ){ + ChimePerformanceCard("Morning", "7:45 AM - 8:00 AM") + ChimePerformanceCard("Noon", "1:10 PM - 1:25 PM") + ChimePerformanceCard("Evening", "6:00 PM - 6:15 PM") + } + } } } } - Image( - painter = painterResource(R.drawable.ic_slope), - contentDescription = "", - modifier = Modifier - .align(alignment = Alignment.Center) - .fillMaxWidth() - ) } } \ No newline at end of file diff --git a/app/src/main/java/com/cornellappdev/chimes/ui/theme/Type.kt b/app/src/main/java/com/cornellappdev/chimes/ui/theme/Type.kt index 349b424..9a71eb2 100644 --- a/app/src/main/java/com/cornellappdev/chimes/ui/theme/Type.kt +++ b/app/src/main/java/com/cornellappdev/chimes/ui/theme/Type.kt @@ -4,31 +4,42 @@ import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.googlefonts.Font +import androidx.compose.ui.text.googlefonts.GoogleFont import androidx.compose.ui.unit.sp +import com.cornellappdev.chimes.R + +val GoogleFontsProvider = GoogleFont.Provider( + providerAuthority = "com.google.android.gms.fonts", + providerPackage = "com.google.android.gms", + certificates = R.array.com_google_android_gms_fonts_certs +) + +val Montserrat = FontFamily( + Font(googleFont = GoogleFont("Montserrat"), fontProvider = GoogleFontsProvider) +) // Set of Material typography styles to start with val Typography = Typography( bodyLarge = TextStyle( - fontFamily = FontFamily.Default, + fontFamily = Montserrat, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, letterSpacing = 0.5.sp - ) - /* Other default text styles to override + ), titleLarge = TextStyle( - fontFamily = FontFamily.Default, + fontFamily = Montserrat, fontWeight = FontWeight.Normal, fontSize = 22.sp, lineHeight = 28.sp, letterSpacing = 0.sp ), labelSmall = TextStyle( - fontFamily = FontFamily.Default, + fontFamily = Montserrat, fontWeight = FontWeight.Medium, fontSize = 11.sp, lineHeight = 16.sp, letterSpacing = 0.5.sp ) - */ ) \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_clocktower_day.png b/app/src/main/res/drawable/ic_clocktower_day.png new file mode 100644 index 0000000..bf87e1f Binary files /dev/null and b/app/src/main/res/drawable/ic_clocktower_day.png differ diff --git a/app/src/main/res/drawable/ic_music_notes.xml b/app/src/main/res/drawable/ic_music_notes.xml new file mode 100644 index 0000000..cfb886c --- /dev/null +++ b/app/src/main/res/drawable/ic_music_notes.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_navigation.xml b/app/src/main/res/drawable/ic_navigation.xml new file mode 100644 index 0000000..a810911 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_trees_back.xml b/app/src/main/res/drawable/ic_trees_back.xml new file mode 100644 index 0000000..fdec65d --- /dev/null +++ b/app/src/main/res/drawable/ic_trees_back.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_trees_front.xml b/app/src/main/res/drawable/ic_trees_front.xml new file mode 100644 index 0000000..c2678ba --- /dev/null +++ b/app/src/main/res/drawable/ic_trees_front.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/font_certs.xml b/app/src/main/res/values/font_certs.xml new file mode 100644 index 0000000..3fdda59 --- /dev/null +++ b/app/src/main/res/values/font_certs.xml @@ -0,0 +1,19 @@ + + + + @array/com_google_android_gms_fonts_certs_dev + @array/com_google_android_gms_fonts_certs_prod + + + + + MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UEChMKR29vZ2xlIEluYzEUMBIGA1UECxMLRW5naW5lZXJpbmcxFTATBgNVBAMTDGlubmVyLWtleXMtMTAeFw0xNjA1MDIwMjAxNTVaFw00MzA5MTgwMjAxNTVaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UEChMKR29vZ2xlIEluYzEUMBIGA1UECxMLRW5naW5lZXJpbmcxFTATBgNVBAMTDGlubmVyLWtleXMtMQ== + + + + + + MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjERMA8GA1UECxMISW5mb1NlYzEQMA4GA1UEAxMHcm9vdENBMB4XDTE2MDIwMzA2MDYwN1oXDTI2MDEzMTA2MDYwN1owgYExCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjERMA8GA1UECxMISW5mb1NlYzEQMA4GA1UEAxMHcm9vdENB + + + \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0600b4f..cba54c3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,8 +13,12 @@ nav3Core = "1.0.1" lifecycleViewmodelNav3 = "2.11.0-alpha01" kotlinxSerializationCore = "1.9.0" material3AdaptiveNav3 = "1.3.0-alpha09" +room3Runtime = "3.0.0-alpha01" +roomKtx = "2.8.4" +uiTextGoogleFonts = "" [libraries] +androidx-compose-ui-text-google-fonts = { module = "androidx.compose.ui:ui-text-google-fonts", version.ref = "uiTextGoogleFonts" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } @@ -35,6 +39,8 @@ androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", vers androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodelNav3" } kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerializationCore" } androidx-material3-adaptive-navigation3 = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation3", version.ref = "material3AdaptiveNav3" } +androidx-room3-runtime = { group = "androidx.room3", name = "room3-runtime", version.ref = "room3Runtime" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "roomKtx" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }