Initial commit: Kotlin Multiplatform project setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-11-04 09:15:49 -06:00
commit 78c62cfc52
80 changed files with 3073 additions and 0 deletions

View File

@@ -0,0 +1,152 @@
package com.example.mycrib
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.safeContentPadding
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.mycrib.android.ui.screens.HomeScreen
import com.mycrib.android.ui.screens.LoginScreen
import com.mycrib.android.ui.screens.RegisterScreen
import com.mycrib.android.ui.screens.ResidenceDetailScreen
import com.mycrib.android.ui.screens.ResidencesScreen
import com.mycrib.android.ui.screens.TasksScreen
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController
import androidx.navigation.compose.composable
import mycrib.composeapp.generated.resources.Res
import mycrib.composeapp.generated.resources.compose_multiplatform
@Composable
@Preview
fun App() {
var isLoggedIn by remember { mutableStateOf(false) }
val navController = rememberNavController()
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
NavHost(
navController = navController,
startDestination = if (isLoggedIn) "home" else "login"
) {
composable("login") {
LoginScreen(
onLoginSuccess = {
isLoggedIn = true
navController.navigate("home") {
popUpTo("login") { inclusive = true }
}
},
onNavigateToRegister = {
navController.navigate("register")
}
)
}
composable("register") {
RegisterScreen(
onRegisterSuccess = {
isLoggedIn = true
navController.navigate("home") {
popUpTo("register") { inclusive = true }
}
},
onNavigateBack = {
navController.popBackStack()
}
)
}
composable("home") {
HomeScreen(
onNavigateToResidences = {
navController.navigate("residences")
},
onNavigateToTasks = {
navController.navigate("tasks")
},
onLogout = {
isLoggedIn = false
navController.navigate("login") {
popUpTo("home") { inclusive = true }
}
}
)
}
composable("residences") {
ResidencesScreen(
onNavigateBack = {
navController.popBackStack()
},
onResidenceClick = { residenceId ->
navController.navigate("residence_detail/$residenceId")
}
)
}
composable("tasks") {
TasksScreen(
onNavigateBack = {
navController.popBackStack()
}
)
}
// composable("residence_detail/{residenceId}") { backStackEntry ->
// val residenceId = backStackEntry.arguments?.getString("residenceId")?.toIntOrNull()
// if (residenceId != null) {
// ResidenceDetailScreen(
// residenceId = residenceId,
// onNavigateBack = {
// navController.popBackStack()
// }
// )
// }
// }
}
}
/*
MaterialTheme {
var showContent by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.background(MaterialTheme.colorScheme.primaryContainer)
.safeContentPadding()
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Button(onClick = { showContent = !showContent }) {
Text("Click me!")
}
AnimatedVisibility(showContent) {
val greeting = remember { Greeting().greet() }
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Image(painterResource(Res.drawable.compose_multiplatform), null)
Text("Compose: $greeting")
}
}
}
}
*/
}