Add Android theme system and fix package naming issues
This commit adds a comprehensive theming system to Android matching iOS, and fixes package declarations throughout the codebase to match directory structure. Theme System Additions: - Added 11 themes matching iOS: Default, Teal, Ocean, Forest, Sunset, Monochrome, Lavender, Crimson, Midnight, Desert, Mint - Created ThemeColors.kt with exact iOS color values for light/dark modes - Added ThemeManager.kt for dynamic theme switching - Created Spacing.kt with standardized spacing constants (xs/sm/md/lg/xl) - Added ThemePickerDialog.kt for theme selection UI - Integrated theme switching in ProfileScreen.kt - Updated App.kt to observe ThemeManager for reactive theming Component Library: - Added StandardCard.kt and CompactCard.kt for consistent card styling - Added FormTextField.kt with error/helper text support - Added FormSection.kt for grouping related form fields - Added StandardEmptyState.kt for empty state UI Package Migration: - Fixed all package declarations to match directory structure (com.example.mycrib.*) - Updated package declarations in commonMain, androidMain, and iosMain - Fixed all import statements across entire codebase - Ensures compilation on both Android and iOS platforms iOS Theme Rename: - Renamed "Default" theme to "Teal" in iOS - Renamed "Bright" theme to "Default" in iOS to make vibrant colors the default Build Status: - ✅ Android builds successfully - ✅ iOS builds successfully 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -16,20 +16,20 @@ 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.AddResidenceScreen
|
||||
import com.mycrib.android.ui.screens.EditResidenceScreen
|
||||
import com.mycrib.android.ui.screens.EditTaskScreen
|
||||
import com.mycrib.android.ui.screens.ForgotPasswordScreen
|
||||
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.ResetPasswordScreen
|
||||
import com.mycrib.android.ui.screens.ResidenceDetailScreen
|
||||
import com.mycrib.android.ui.screens.ResidencesScreen
|
||||
import com.mycrib.android.ui.screens.TasksScreen
|
||||
import com.mycrib.android.ui.screens.VerifyEmailScreen
|
||||
import com.mycrib.android.ui.screens.VerifyResetCodeScreen
|
||||
import com.mycrib.android.viewmodel.PasswordResetViewModel
|
||||
import com.example.mycrib.ui.screens.AddResidenceScreen
|
||||
import com.example.mycrib.ui.screens.EditResidenceScreen
|
||||
import com.example.mycrib.ui.screens.EditTaskScreen
|
||||
import com.example.mycrib.ui.screens.ForgotPasswordScreen
|
||||
import com.example.mycrib.ui.screens.HomeScreen
|
||||
import com.example.mycrib.ui.screens.LoginScreen
|
||||
import com.example.mycrib.ui.screens.RegisterScreen
|
||||
import com.example.mycrib.ui.screens.ResetPasswordScreen
|
||||
import com.example.mycrib.ui.screens.ResidenceDetailScreen
|
||||
import com.example.mycrib.ui.screens.ResidencesScreen
|
||||
import com.example.mycrib.ui.screens.TasksScreen
|
||||
import com.example.mycrib.ui.screens.VerifyEmailScreen
|
||||
import com.example.mycrib.ui.screens.VerifyResetCodeScreen
|
||||
import com.example.mycrib.viewmodel.PasswordResetViewModel
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
import org.jetbrains.compose.ui.tooling.preview.Preview
|
||||
@@ -38,20 +38,21 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.toRoute
|
||||
import com.mycrib.android.ui.screens.MainScreen
|
||||
import com.mycrib.android.ui.screens.ProfileScreen
|
||||
import com.mycrib.android.ui.theme.MyCribTheme
|
||||
import com.mycrib.navigation.*
|
||||
import com.mycrib.repository.LookupsRepository
|
||||
import com.mycrib.shared.models.Residence
|
||||
import com.mycrib.shared.models.TaskCategory
|
||||
import com.mycrib.shared.models.TaskDetail
|
||||
import com.mycrib.shared.models.TaskFrequency
|
||||
import com.mycrib.shared.models.TaskPriority
|
||||
import com.mycrib.shared.models.TaskStatus
|
||||
import com.mycrib.shared.network.ApiResult
|
||||
import com.mycrib.shared.network.AuthApi
|
||||
import com.mycrib.storage.TokenStorage
|
||||
import com.example.mycrib.ui.screens.MainScreen
|
||||
import com.example.mycrib.ui.screens.ProfileScreen
|
||||
import com.example.mycrib.ui.theme.MyCribTheme
|
||||
import com.example.mycrib.ui.theme.ThemeManager
|
||||
import com.example.mycrib.navigation.*
|
||||
import com.example.mycrib.repository.LookupsRepository
|
||||
import com.example.mycrib.models.Residence
|
||||
import com.example.mycrib.models.TaskCategory
|
||||
import com.example.mycrib.models.TaskDetail
|
||||
import com.example.mycrib.models.TaskFrequency
|
||||
import com.example.mycrib.models.TaskPriority
|
||||
import com.example.mycrib.models.TaskStatus
|
||||
import com.example.mycrib.network.ApiResult
|
||||
import com.example.mycrib.network.AuthApi
|
||||
import com.example.mycrib.storage.TokenStorage
|
||||
|
||||
import mycrib.composeapp.generated.resources.Res
|
||||
import mycrib.composeapp.generated.resources.compose_multiplatform
|
||||
@@ -95,7 +96,9 @@ fun App(
|
||||
isCheckingAuth = false
|
||||
}
|
||||
|
||||
MyCribTheme {
|
||||
val currentTheme by remember { derivedStateOf { ThemeManager.currentTheme } }
|
||||
|
||||
MyCribTheme(themeColors = currentTheme) {
|
||||
if (isCheckingAuth) {
|
||||
// Show loading screen while checking auth
|
||||
Surface(
|
||||
|
||||
Reference in New Issue
Block a user