Rebrand from Casera/MyCrib to honeyDue

Total rebrand across KMM project:
- Kotlin package: com.example.casera -> com.tt.honeyDue (dirs + declarations)
- Gradle: rootProject.name, namespace, applicationId
- Android: manifest, strings.xml (all languages), widget resources
- iOS: pbxproj bundle IDs, Info.plist, entitlements, xcconfig
- iOS directories: Casera/ -> HoneyDue/, CaseraTests/ -> HoneyDueTests/, etc.
- Swift source: all class/struct/enum renames
- Deep links: casera:// -> honeydue://, .casera -> .honeydue
- App icons replaced with honeyDue honeycomb icon
- Domains: casera.treytartt.com -> honeyDue.treytartt.com
- Bundle IDs: com.tt.casera -> com.tt.honeyDue
- Database table names preserved

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-07 06:33:57 -06:00
parent 9c574c4343
commit 1e2adf7660
450 changed files with 1730 additions and 1788 deletions

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Verwalten Sie Ihre Immobilien einfach</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Verwalten Sie Ihre Immobilien einfach</string>
<string name="auth_login_username_label">Benutzername oder E-Mail</string>
<string name="auth_login_password_label">Passwort</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Administra tus propiedades con facilidad</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Administra tus propiedades con facilidad</string>
<string name="auth_login_username_label">Usuario o Correo</string>
<string name="auth_login_password_label">Contrasena</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Gerez vos proprietes facilement</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Gerez vos proprietes facilement</string>
<string name="auth_login_username_label">Nom d\'utilisateur ou Email</string>
<string name="auth_login_password_label">Mot de passe</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Gestisci le tue proprietà con facilità</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Gestisci le tue proprietà con facilità</string>
<string name="auth_login_username_label">Nome utente o Email</string>
<string name="auth_login_password_label">Password</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">物件管理を簡単に</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">物件管理を簡単に</string>
<string name="auth_login_username_label">ユーザー名またはメールアドレス</string>
<string name="auth_login_password_label">パスワード</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">부동산을 쉽게 관리하세요</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">부동산을 쉽게 관리하세요</string>
<string name="auth_login_username_label">사용자 이름 또는 이메일</string>
<string name="auth_login_password_label">비밀번호</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Beheer uw eigendommen met gemak</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Beheer uw eigendommen met gemak</string>
<string name="auth_login_username_label">Gebruikersnaam of E-mail</string>
<string name="auth_login_password_label">Wachtwoord</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Gerencie suas propriedades com facilidade</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Gerencie suas propriedades com facilidade</string>
<string name="auth_login_username_label">Usuario ou Email</string>
<string name="auth_login_password_label">Senha</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">轻松管理您的房产</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">轻松管理您的房产</string>
<string name="auth_login_username_label">用户名或邮箱</string>
<string name="auth_login_password_label">密码</string>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- App Name -->
<string name="app_name">Casera</string>
<string name="app_name">honeyDue</string>
<string name="app_tagline">Manage your properties with ease</string>
<!-- Auth - Login -->
<string name="auth_login_title">Casera</string>
<string name="auth_login_title">honeyDue</string>
<string name="auth_login_subtitle">Manage your properties with ease</string>
<string name="auth_login_username_label">Username or Email</string>
<string name="auth_login_password_label">Password</string>
@@ -282,7 +282,7 @@
<string name="manage_users_invite_title">Invite Others</string>
<string name="manage_users_easy_share">Easy Share</string>
<string name="manage_users_send_invite">Send Invite Link</string>
<string name="manage_users_easy_share_desc">Send a .casera file via Messages, Email, or share. They just tap to join.</string>
<string name="manage_users_easy_share_desc">Send a .honeydue file via Messages, Email, or share. They just tap to join.</string>
<string name="manage_users_share_code">Share Code</string>
<string name="manage_users_no_code">No active code</string>
<string name="manage_users_generate">Generate Code</string>
@@ -553,7 +553,7 @@
<string name="profile_privacy">Privacy Policy</string>
<string name="profile_privacy_subtitle">View our privacy policy</string>
<string name="profile_app_version">Version %1$s</string>
<string name="profile_app_name">Casera</string>
<string name="profile_app_name">honeyDue</string>
<string name="profile_edit_profile">Edit Profile</string>
<!-- Settings -->
@@ -690,7 +690,7 @@
<string name="subscription_limit_tasks">You\'ve reached the task limit for your plan</string>
<!-- Onboarding -->
<string name="onboarding_welcome_title">Welcome to Casera</string>
<string name="onboarding_welcome_title">Welcome to honeyDue</string>
<string name="onboarding_welcome_subtitle">Your home maintenance companion</string>
<string name="onboarding_start_fresh">Start Fresh</string>
<string name="onboarding_join_existing">Join Existing Home</string>
@@ -763,7 +763,7 @@
<!-- Onboarding - Subscription -->
<string name="onboarding_subscription_title">Go Pro</string>
<string name="onboarding_subscription_subtitle">Take your home management to the next level</string>
<string name="onboarding_subscription_pro">CASERA PRO</string>
<string name="onboarding_subscription_pro">HONEYDUE PRO</string>
<string name="onboarding_subscription_social_proof">4.9 • 10K+ homeowners</string>
<string name="onboarding_subscription_benefit_properties">Unlimited Properties</string>
<string name="onboarding_subscription_benefit_properties_desc">Track every home you own</string>

View File

@@ -1,4 +1,4 @@
package com.example.casera
package com.tt.honeyDue
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
@@ -16,22 +16,22 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.example.casera.ui.screens.AddResidenceScreen
import com.example.casera.ui.screens.EditResidenceScreen
import com.example.casera.ui.screens.EditTaskScreen
import com.example.casera.ui.screens.ForgotPasswordScreen
import com.example.casera.ui.screens.HomeScreen
import com.example.casera.ui.screens.LoginScreen
import com.example.casera.ui.screens.RegisterScreen
import com.example.casera.ui.screens.ResetPasswordScreen
import com.example.casera.ui.screens.ResidenceDetailScreen
import com.example.casera.ui.screens.ResidencesScreen
import com.example.casera.ui.screens.TasksScreen
import com.example.casera.ui.screens.VerifyEmailScreen
import com.example.casera.ui.screens.VerifyResetCodeScreen
import com.example.casera.ui.screens.onboarding.OnboardingScreen
import com.example.casera.viewmodel.OnboardingViewModel
import com.example.casera.viewmodel.PasswordResetViewModel
import com.tt.honeyDue.ui.screens.AddResidenceScreen
import com.tt.honeyDue.ui.screens.EditResidenceScreen
import com.tt.honeyDue.ui.screens.EditTaskScreen
import com.tt.honeyDue.ui.screens.ForgotPasswordScreen
import com.tt.honeyDue.ui.screens.HomeScreen
import com.tt.honeyDue.ui.screens.LoginScreen
import com.tt.honeyDue.ui.screens.RegisterScreen
import com.tt.honeyDue.ui.screens.ResetPasswordScreen
import com.tt.honeyDue.ui.screens.ResidenceDetailScreen
import com.tt.honeyDue.ui.screens.ResidencesScreen
import com.tt.honeyDue.ui.screens.TasksScreen
import com.tt.honeyDue.ui.screens.VerifyEmailScreen
import com.tt.honeyDue.ui.screens.VerifyResetCodeScreen
import com.tt.honeyDue.ui.screens.onboarding.OnboardingScreen
import com.tt.honeyDue.viewmodel.OnboardingViewModel
import com.tt.honeyDue.viewmodel.PasswordResetViewModel
import androidx.lifecycle.viewmodel.compose.viewModel
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview
@@ -40,29 +40,29 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import com.example.casera.ui.screens.MainScreen
import com.example.casera.ui.screens.ManageUsersScreen
import com.example.casera.ui.screens.NotificationPreferencesScreen
import com.example.casera.ui.screens.ProfileScreen
import com.example.casera.ui.theme.MyCribTheme
import com.example.casera.ui.theme.ThemeManager
import com.example.casera.navigation.*
import com.example.casera.repository.LookupsRepository
import com.example.casera.models.Residence
import com.example.casera.models.TaskCategory
import com.example.casera.models.TaskDetail
import com.example.casera.models.TaskFrequency
import com.example.casera.models.TaskPriority
import com.example.casera.network.ApiResult
import com.example.casera.network.AuthApi
import com.example.casera.data.DataManager
import com.example.casera.network.APILayer
import com.example.casera.platform.ContractorImportHandler
import com.example.casera.platform.PlatformUpgradeScreen
import com.example.casera.platform.ResidenceImportHandler
import com.tt.honeyDue.ui.screens.MainScreen
import com.tt.honeyDue.ui.screens.ManageUsersScreen
import com.tt.honeyDue.ui.screens.NotificationPreferencesScreen
import com.tt.honeyDue.ui.screens.ProfileScreen
import com.tt.honeyDue.ui.theme.HoneyDueTheme
import com.tt.honeyDue.ui.theme.ThemeManager
import com.tt.honeyDue.navigation.*
import com.tt.honeyDue.repository.LookupsRepository
import com.tt.honeyDue.models.Residence
import com.tt.honeyDue.models.TaskCategory
import com.tt.honeyDue.models.TaskDetail
import com.tt.honeyDue.models.TaskFrequency
import com.tt.honeyDue.models.TaskPriority
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.network.AuthApi
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.network.APILayer
import com.tt.honeyDue.platform.ContractorImportHandler
import com.tt.honeyDue.platform.PlatformUpgradeScreen
import com.tt.honeyDue.platform.ResidenceImportHandler
import casera.composeapp.generated.resources.Res
import casera.composeapp.generated.resources.compose_multiplatform
import honeydue.composeapp.generated.resources.Res
import honeydue.composeapp.generated.resources.compose_multiplatform
@Composable
@Preview
@@ -119,7 +119,7 @@ fun App(
val currentTheme by remember { derivedStateOf { ThemeManager.currentTheme } }
MyCribTheme(themeColors = currentTheme) {
HoneyDueTheme(themeColors = currentTheme) {
// Handle contractor file imports (Android-specific, no-op on other platforms)
ContractorImportHandler(
pendingContractorImportUri = pendingContractorImportUri,
@@ -145,7 +145,7 @@ fun App(
CircularProgressIndicator()
}
}
return@MyCribTheme
return@HoneyDueTheme
}
val startDestination = when {

View File

@@ -1,4 +1,4 @@
package com.example.casera
package com.tt.honeyDue
class Greeting {
private val platform = getPlatform()

View File

@@ -1,4 +1,4 @@
//package com.casera.android
//package com.honeydue.android
//
//import android.os.Bundle
//import androidx.activity.ComponentActivity
@@ -10,15 +10,15 @@
//import androidx.navigation.compose.NavHost
//import androidx.navigation.compose.composable
//import androidx.navigation.compose.rememberNavController
//import com.example.casera.ui.screens.*
//import com.example.casera.ui.theme.MyCribTheme
//import com.tt.honeyDue.ui.screens.*
//import com.tt.honeyDue.ui.theme.HoneyDueTheme
//
//class MainActivity : ComponentActivity() {
// override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate(savedInstanceState)
// setContent {
// MyCribTheme {
// MyCribApp()
// HoneyDueTheme {
// HoneyDueApp()
// }
// }
// }

View File

@@ -1,4 +1,4 @@
package com.example.casera
package com.tt.honeyDue
interface Platform {
val name: String

View File

@@ -1,4 +1,4 @@
package com.example.casera.analytics
package com.tt.honeyDue.analytics
/**
* Common analytics interface for cross-platform event tracking.

View File

@@ -1,10 +1,10 @@
package com.example.casera.cache
package com.tt.honeyDue.cache
import com.example.casera.data.DataManager
import com.example.casera.models.FeatureBenefit
import com.example.casera.models.Promotion
import com.example.casera.models.SubscriptionStatus
import com.example.casera.models.UpgradeTriggerData
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.models.FeatureBenefit
import com.tt.honeyDue.models.Promotion
import com.tt.honeyDue.models.SubscriptionStatus
import com.tt.honeyDue.models.UpgradeTriggerData
/**
* Thin facade over DataManager for subscription data.

View File

@@ -1,8 +1,8 @@
package com.example.casera.data
package com.tt.honeyDue.data
import com.example.casera.models.*
import com.example.casera.storage.TokenManager
import com.example.casera.storage.ThemeStorageManager
import com.tt.honeyDue.models.*
import com.tt.honeyDue.storage.TokenManager
import com.tt.honeyDue.storage.ThemeStorageManager
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow

View File

@@ -1,4 +1,4 @@
package com.example.casera.data
package com.tt.honeyDue.data
/**
* Platform-specific persistence manager for storing app data to disk.

View File

@@ -1,15 +1,15 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
/**
* Shared encoder/decoder for `.casera` payloads across Android and iOS.
* Shared encoder/decoder for `.honeydue` payloads across Android and iOS.
*
* This keeps package JSON shape in one place while each platform owns
* native share-sheet presentation details.
*/
object CaseraShareCodec {
object honeyDueShareCodec {
private val json = Json {
prettyPrint = true
ignoreUnknownKeys = true
@@ -58,13 +58,13 @@ object CaseraShareCodec {
}
/**
* Build a filesystem-safe package filename with `.casera` extension.
* Build a filesystem-safe package filename with `.honeydue` extension.
*/
fun safeShareFileName(displayName: String): String {
val safeName = displayName
.replace(" ", "_")
.replace("/", "-")
.take(50)
return "$safeName.casera"
return "$safeName.honeydue"
}
}

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,6 +1,6 @@
package com.example.casera.models
package com.tt.honeyDue.models
import com.example.casera.data.DataManager
import com.tt.honeyDue.data.DataManager
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlin.time.Clock
import kotlin.time.ExperimentalTime
@@ -9,15 +9,15 @@ import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonPrimitive
/**
* Package type identifiers for .casera files
* Package type identifiers for .honeydue files
*/
object CaseraPackageType {
object honeyDuePackageType {
const val CONTRACTOR = "contractor"
const val RESIDENCE = "residence"
}
/**
* Data model for .casera file format used to share contractors between users.
* Data model for .honeydue file format used to share contractors between users.
* Contains only the data needed to recreate a contractor, without server-specific IDs.
*/
@Serializable
@@ -26,7 +26,7 @@ data class SharedContractor(
val version: Int = 1,
/** Package type discriminator */
val type: String = CaseraPackageType.CONTRACTOR,
val type: String = honeyDuePackageType.CONTRACTOR,
val name: String,
val company: String? = null,
@@ -61,7 +61,7 @@ data class SharedContractor(
)
/**
* Data model for .casera file format used to share residences between users.
* Data model for .honeydue file format used to share residences between users.
* Contains the share code needed to join the residence.
*/
@Serializable
@@ -70,7 +70,7 @@ data class SharedResidence(
val version: Int = 1,
/** Package type discriminator */
val type: String = CaseraPackageType.RESIDENCE,
val type: String = honeyDuePackageType.RESIDENCE,
/** The share code for joining the residence */
@SerialName("share_code")
@@ -98,14 +98,14 @@ data class SharedResidence(
)
/**
* Detect the type of a .casera package from its JSON content.
* Detect the type of a .honeydue package from its JSON content.
* Returns null if the type cannot be determined.
*/
fun detectCaseraPackageType(jsonContent: String): String? {
fun detecthoneyDuePackageType(jsonContent: String): String? {
return try {
val json = Json { ignoreUnknownKeys = true }
val jsonObject = json.decodeFromString<JsonObject>(jsonContent)
jsonObject["type"]?.jsonPrimitive?.content ?: CaseraPackageType.CONTRACTOR // Default for backward compatibility
jsonObject["type"]?.jsonPrimitive?.content ?: honeyDuePackageType.CONTRACTOR // Default for backward compatibility
} catch (e: Exception) {
null
}
@@ -118,7 +118,7 @@ fun detectCaseraPackageType(jsonContent: String): String? {
fun Contractor.toSharedContractor(exportedBy: String? = null): SharedContractor {
return SharedContractor(
version = 1,
type = CaseraPackageType.CONTRACTOR,
type = honeyDuePackageType.CONTRACTOR,
name = name,
company = company,
phone = phone,

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.models
package com.tt.honeyDue.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,4 +1,4 @@
package com.example.casera.navigation
package com.tt.honeyDue.navigation
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,8 +1,8 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.data.DataManager
import com.example.casera.models.*
import com.example.casera.network.*
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.models.*
import com.tt.honeyDue.network.*
import kotlinx.coroutines.sync.Mutex
/**

View File

@@ -1,4 +1,4 @@
package com.example.casera.network
package com.tt.honeyDue.network
import io.ktor.client.*
import io.ktor.client.plugins.contentnegotiation.*

View File

@@ -1,4 +1,4 @@
package com.example.casera.network
package com.tt.honeyDue.network
/**
* API Environment Configuration
@@ -22,7 +22,7 @@ object ApiConfig {
fun getBaseUrl(): String {
return when (CURRENT_ENV) {
Environment.LOCAL -> "http://${getLocalhostAddress()}:8000/api"
Environment.DEV -> "https://casera.treytartt.com/api"
Environment.DEV -> "https://honeyDue.treytartt.com/api"
}
}
@@ -32,7 +32,7 @@ object ApiConfig {
fun getMediaBaseUrl(): String {
return when (CURRENT_ENV) {
Environment.LOCAL -> "http://${getLocalhostAddress()}:8000"
Environment.DEV -> "https://casera.treytartt.com"
Environment.DEV -> "https://honeyDue.treytartt.com"
}
}
@@ -42,7 +42,7 @@ object ApiConfig {
fun getEnvironmentName(): String {
return when (CURRENT_ENV) {
Environment.LOCAL -> "Local (${getLocalhostAddress()}:8000)"
Environment.DEV -> "Dev Server (casera.treytartt.com)"
Environment.DEV -> "Dev Server (honeyDue.treytartt.com)"
}
}

View File

@@ -1,4 +1,4 @@
package com.example.casera.network
package com.tt.honeyDue.network
sealed class ApiResult<out T> {
data class Success<T>(val data: T) : ApiResult<T>()

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.ErrorResponse
import com.tt.honeyDue.models.ErrorResponse
import io.ktor.client.call.body
import io.ktor.client.statement.HttpResponse
import kotlinx.serialization.json.Json

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,6 +1,6 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.*
import com.tt.honeyDue.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,7 +1,7 @@
package com.example.casera.network
package com.tt.honeyDue.network
import com.example.casera.models.TaskTemplate
import com.example.casera.models.TaskTemplatesGroupedResponse
import com.tt.honeyDue.models.TaskTemplate
import com.tt.honeyDue.models.TaskTemplatesGroupedResponse
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*

View File

@@ -1,7 +1,7 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import com.example.casera.models.Contractor
import com.tt.honeyDue.models.Contractor
/**
* Platform-specific composable that handles contractor import flow.

View File

@@ -1,11 +1,11 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import com.example.casera.models.Contractor
import com.tt.honeyDue.models.Contractor
/**
* Returns a function that can be called to share a contractor.
* The returned function will open the native share sheet with a .casera file.
* The returned function will open the native share sheet with a .honeydue file.
*/
@Composable
expect fun rememberShareContractor(): (Contractor) -> Unit

View File

@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.ImageBitmap

View File

@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable

View File

@@ -1,7 +1,7 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import com.example.casera.models.JoinResidenceResponse
import com.tt.honeyDue.models.JoinResidenceResponse
/**
* Platform-specific composable that handles residence import flow.

View File

@@ -1,7 +1,7 @@
package com.example.casera.platform
package com.tt.honeyDue.platform
import androidx.compose.runtime.Composable
import com.example.casera.models.Residence
import com.tt.honeyDue.models.Residence
/**
* State holder for residence sharing operation.
@@ -15,7 +15,7 @@ data class ResidenceSharingState(
* Returns a pair of state and a function to share a residence.
* The function will:
* 1. Call the backend to generate a share code
* 2. Create a .casera file with the share package
* 2. Create a .honeydue file with the share package
* 3. Open the native share sheet
*
* @return Pair of (state, shareFunction)

View File

@@ -1,9 +1,9 @@
package com.example.casera.repository
package com.tt.honeyDue.repository
import com.example.casera.data.DataManager
import com.example.casera.models.*
import com.example.casera.network.ApiResult
import com.example.casera.network.APILayer
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.models.*
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.network.APILayer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.StateFlow

View File

@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
/**
* Platform-specific task cache manager interface for persistent storage.

View File

@@ -1,6 +1,6 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
import com.example.casera.models.CustomTask
import com.tt.honeyDue.models.CustomTask
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.decodeFromString

View File

@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
/**
* Cross-platform theme storage for persisting theme selection.

View File

@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
/**
* Platform-specific token manager interface for persistent storage.

View File

@@ -1,4 +1,4 @@
package com.example.casera.storage
package com.tt.honeyDue.storage
/**
* Token storage that provides a unified interface for accessing platform-specific

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
@@ -13,16 +13,16 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import casera.composeapp.generated.resources.*
import com.example.casera.viewmodel.ContractorViewModel
import com.example.casera.viewmodel.ResidenceViewModel
import com.example.casera.models.ContractorCreateRequest
import com.example.casera.models.ContractorUpdateRequest
import com.example.casera.models.Residence
import com.example.casera.network.ApiResult
import com.example.casera.repository.LookupsRepository
import com.example.casera.analytics.PostHogAnalytics
import com.example.casera.analytics.AnalyticsEvents
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.viewmodel.ContractorViewModel
import com.tt.honeyDue.viewmodel.ResidenceViewModel
import com.tt.honeyDue.models.ContractorCreateRequest
import com.tt.honeyDue.models.ContractorUpdateRequest
import com.tt.honeyDue.models.Residence
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.repository.LookupsRepository
import com.tt.honeyDue.analytics.PostHogAnalytics
import com.tt.honeyDue.analytics.AnalyticsEvents
import org.jetbrains.compose.resources.stringResource
@OptIn(ExperimentalMaterial3Api::class)

View File

@@ -1,7 +1,7 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.runtime.Composable
import com.example.casera.models.TaskCreateRequest
import com.tt.honeyDue.models.TaskCreateRequest
@Composable
fun AddNewTaskDialog(

View File

@@ -1,8 +1,8 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.runtime.Composable
import com.example.casera.models.MyResidencesResponse
import com.example.casera.models.TaskCreateRequest
import com.tt.honeyDue.models.MyResidencesResponse
import com.tt.honeyDue.models.TaskCreateRequest
@Composable
fun AddNewTaskWithResidenceDialog(

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@@ -14,17 +14,17 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import com.example.casera.data.DataManager
import com.example.casera.models.TaskTemplate
import com.example.casera.repository.LookupsRepository
import com.example.casera.models.MyResidencesResponse
import com.example.casera.models.TaskCategory
import com.example.casera.models.TaskCreateRequest
import com.example.casera.models.TaskFrequency
import com.example.casera.models.TaskPriority
import com.example.casera.analytics.PostHogAnalytics
import com.example.casera.analytics.AnalyticsEvents
import casera.composeapp.generated.resources.*
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.models.TaskTemplate
import com.tt.honeyDue.repository.LookupsRepository
import com.tt.honeyDue.models.MyResidencesResponse
import com.tt.honeyDue.models.TaskCategory
import com.tt.honeyDue.models.TaskCreateRequest
import com.tt.honeyDue.models.TaskFrequency
import com.tt.honeyDue.models.TaskPriority
import com.tt.honeyDue.analytics.PostHogAnalytics
import com.tt.honeyDue.analytics.AnalyticsEvents
import honeydue.composeapp.generated.resources.*
import org.jetbrains.compose.resources.stringResource
@OptIn(ExperimentalMaterial3Api::class)

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
@@ -6,7 +6,7 @@ import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.example.casera.network.ApiResult
import com.tt.honeyDue.network.ApiResult
/**
* Handles ApiResult states automatically with loading, error dialogs, and success content.
@@ -127,7 +127,7 @@ fun <T> ApiResult<T>.HandleErrors(
LaunchedEffect(this) {
if (this@HandleErrors is ApiResult.Error) {
errorMessage = com.example.casera.util.ErrorMessageParser.parse((this@HandleErrors as ApiResult.Error).message)
errorMessage = com.tt.honeyDue.util.ErrorMessageParser.parse((this@HandleErrors as ApiResult.Error).message)
showErrorDialog = true
}
}

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.*
import androidx.compose.material.icons.Icons
@@ -16,8 +16,8 @@ import coil3.compose.LocalPlatformContext
import coil3.request.ImageRequest
import coil3.network.NetworkHeaders
import coil3.network.httpHeaders
import com.example.casera.network.ApiClient
import com.example.casera.storage.TokenStorage
import com.tt.honeyDue.network.ApiClient
import com.tt.honeyDue.storage.TokenStorage
/**
* A Compose component that loads images from authenticated API endpoints.

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.tween
@@ -29,16 +29,16 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import casera.composeapp.generated.resources.*
import com.example.casera.viewmodel.ContractorViewModel
import com.example.casera.models.TaskCompletionCreateRequest
import com.example.casera.network.ApiResult
import com.example.casera.platform.ImageData
import com.example.casera.platform.rememberImagePicker
import com.example.casera.platform.rememberCameraPicker
import com.example.casera.platform.HapticFeedbackType
import com.example.casera.platform.rememberHapticFeedback
import com.example.casera.platform.rememberImageBitmap
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.viewmodel.ContractorViewModel
import com.tt.honeyDue.models.TaskCompletionCreateRequest
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.platform.ImageData
import com.tt.honeyDue.platform.rememberImagePicker
import com.tt.honeyDue.platform.rememberCameraPicker
import com.tt.honeyDue.platform.HapticFeedbackType
import com.tt.honeyDue.platform.rememberHapticFeedback
import com.tt.honeyDue.platform.rememberImageBitmap
import kotlinx.datetime.*
import org.jetbrains.compose.resources.stringResource

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -26,12 +26,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import casera.composeapp.generated.resources.*
import com.example.casera.models.SharedContractor
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.models.SharedContractor
import org.jetbrains.compose.resources.stringResource
/**
* Dialog shown when a user attempts to import a contractor from a .casera file.
* Dialog shown when a user attempts to import a contractor from a .honeydue file.
* Shows contractor details and asks for confirmation.
*/
@Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.*
import androidx.compose.material.icons.Icons
@@ -9,8 +9,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.unit.dp
import com.example.casera.network.ApiResult
import com.example.casera.network.APILayer
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.network.APILayer
import kotlinx.coroutines.launch
@Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
@@ -20,10 +20,10 @@ import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.casera.models.ResidenceUser
import com.example.casera.models.ResidenceShareCode
import com.example.casera.network.ApiResult
import com.example.casera.network.APILayer
import com.tt.honeyDue.models.ResidenceUser
import com.tt.honeyDue.models.ResidenceShareCode
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.network.APILayer
import kotlinx.coroutines.launch
@Composable
@@ -132,7 +132,7 @@ fun ManageUsersDialog(
}
Text(
text = "Send a .casera file via Messages, Email, or share. They just tap to join.",
text = "Send a .honeydue file via Messages, Email, or share. They just tap to join.",
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.padding(top = 8.dp)

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.ExperimentalFoundationApi
@@ -26,7 +26,7 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import coil3.compose.AsyncImage
import com.example.casera.ui.theme.AppSpacing
import com.tt.honeyDue.ui.theme.AppSpacing
/**
* Full-screen photo viewer with swipeable gallery.

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@@ -23,12 +23,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import casera.composeapp.generated.resources.*
import com.example.casera.models.SharedResidence
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.models.SharedResidence
import org.jetbrains.compose.resources.stringResource
/**
* Dialog shown when a user attempts to join a residence from a .casera file.
* Dialog shown when a user attempts to join a residence from a .honeydue file.
* Shows residence details and asks for confirmation.
*/
@Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically
@@ -18,7 +18,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.example.casera.models.TaskTemplate
import com.tt.honeyDue.models.TaskTemplate
/**
* Dropdown showing filtered task suggestions based on user input.

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components
package com.tt.honeyDue.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@@ -13,10 +13,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import casera.composeapp.generated.resources.*
import com.example.casera.data.DataManager
import com.example.casera.models.TaskTemplate
import com.example.casera.models.TaskTemplateCategoryGroup
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.data.DataManager
import com.tt.honeyDue.models.TaskTemplate
import com.tt.honeyDue.models.TaskTemplateCategoryGroup
import org.jetbrains.compose.resources.stringResource
/**

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.auth
package com.tt.honeyDue.ui.components.auth
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
@@ -53,7 +53,7 @@ fun AuthHeaderPreview() {
Surface {
AuthHeader(
icon = Icons.Default.Home,
title = "myCrib",
title = "honeyDue",
subtitle = "Manage your properties with ease",
modifier = Modifier.padding(32.dp)
)

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.auth
package com.tt.honeyDue.ui.components.auth
import androidx.compose.runtime.Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.auth
package com.tt.honeyDue.ui.components.auth
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.common
package com.tt.honeyDue.ui.components.common
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Card
@@ -9,9 +9,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.example.casera.ui.theme.AppRadius
import com.example.casera.ui.theme.AppSpacing
import com.example.casera.ui.theme.backgroundSecondary
import com.tt.honeyDue.ui.theme.AppRadius
import com.tt.honeyDue.ui.theme.AppSpacing
import com.tt.honeyDue.ui.theme.backgroundSecondary
/**
* CompactCard - Smaller card with reduced padding

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.common
package com.tt.honeyDue.ui.components.common
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.common
package com.tt.honeyDue.ui.components.common
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.common
package com.tt.honeyDue.ui.components.common
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Card
@@ -9,9 +9,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.example.casera.ui.theme.AppRadius
import com.example.casera.ui.theme.AppSpacing
import com.example.casera.ui.theme.backgroundSecondary
import com.tt.honeyDue.ui.theme.AppRadius
import com.tt.honeyDue.ui.theme.AppSpacing
import com.tt.honeyDue.ui.theme.backgroundSecondary
/**
* StandardCard - Consistent card component matching iOS design

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.common
package com.tt.honeyDue.ui.components.common
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
@@ -8,7 +8,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.example.casera.ui.theme.AppSpacing
import com.tt.honeyDue.ui.theme.AppSpacing
/**
* StandardEmptyState - Consistent empty state component

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.common
package com.tt.honeyDue.ui.components.common
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.dialogs
package com.tt.honeyDue.ui.components.dialogs
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@@ -20,9 +20,9 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import com.example.casera.ui.theme.*
import com.example.casera.platform.HapticFeedbackType
import com.example.casera.platform.rememberHapticFeedback
import com.tt.honeyDue.ui.theme.*
import com.tt.honeyDue.platform.HapticFeedbackType
import com.tt.honeyDue.platform.rememberHapticFeedback
/**
* ThemePickerDialog - Shows all available themes in a grid

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.documents
package com.tt.honeyDue.ui.components.documents
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@@ -14,9 +14,9 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.example.casera.models.Document
import com.example.casera.models.DocumentCategory
import com.example.casera.models.DocumentType
import com.tt.honeyDue.models.Document
import com.tt.honeyDue.models.DocumentCategory
import com.tt.honeyDue.models.DocumentType
@Composable
fun DocumentCard(document: Document, isWarrantyCard: Boolean = false, onClick: () -> Unit) {

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.documents
package com.tt.honeyDue.ui.components.documents
import androidx.compose.foundation.layout.*
import androidx.compose.material.icons.Icons

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.documents
package com.tt.honeyDue.ui.components.documents
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
@@ -13,10 +13,10 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.example.casera.models.Document
import com.example.casera.network.ApiResult
import com.example.casera.ui.subscription.UpgradeFeatureScreen
import com.example.casera.utils.SubscriptionHelper
import com.tt.honeyDue.models.Document
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.ui.subscription.UpgradeFeatureScreen
import com.tt.honeyDue.utils.SubscriptionHelper
@OptIn(ExperimentalMaterial3Api::class)
@Composable

View File

@@ -1,11 +1,11 @@
package com.example.casera.ui.components.forms
package com.tt.honeyDue.ui.components.forms
import androidx.compose.foundation.layout.*
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.example.casera.ui.theme.AppSpacing
import com.tt.honeyDue.ui.theme.AppSpacing
/**
* FormSection - Groups related form fields with optional header/footer

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.forms
package com.tt.honeyDue.ui.components.forms
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardActions
@@ -9,7 +9,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.unit.dp
import com.example.casera.ui.theme.AppSpacing
import com.tt.honeyDue.ui.theme.AppSpacing
/**
* FormTextField - Standardized text field for forms

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.residence
package com.tt.honeyDue.ui.components.residence
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.residence
package com.tt.honeyDue.ui.components.residence
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.residence
package com.tt.honeyDue.ui.components.residence
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.task
package com.tt.honeyDue.ui.components.task
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
@@ -12,11 +12,11 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.example.casera.models.TaskCompletionResponse
import com.example.casera.models.TaskCompletion
import com.example.casera.network.ApiResult
import com.example.casera.network.APILayer
import com.example.casera.util.DateUtils
import com.tt.honeyDue.models.TaskCompletionResponse
import com.tt.honeyDue.models.TaskCompletion
import com.tt.honeyDue.network.ApiResult
import com.tt.honeyDue.network.APILayer
import com.tt.honeyDue.util.DateUtils
import kotlinx.coroutines.launch
/**

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.task
package com.tt.honeyDue.ui.components.task
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
@@ -23,9 +23,9 @@ import coil3.compose.AsyncImage
import coil3.compose.AsyncImagePainter
import coil3.compose.SubcomposeAsyncImage
import coil3.compose.SubcomposeAsyncImageContent
import com.example.casera.models.TaskCompletionImage
import com.example.casera.network.ApiClient
import com.example.casera.ui.components.AuthenticatedImage
import com.tt.honeyDue.models.TaskCompletionImage
import com.tt.honeyDue.network.ApiClient
import com.tt.honeyDue.ui.components.AuthenticatedImage
@Composable
fun PhotoViewerDialog(

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.task
package com.tt.honeyDue.ui.components.task
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
@@ -7,7 +7,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.example.casera.util.DateUtils
import com.tt.honeyDue.util.DateUtils
import org.jetbrains.compose.ui.tooling.preview.Preview
@Composable

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.task
package com.tt.honeyDue.ui.components.task
import androidx.compose.foundation.layout.*
import androidx.compose.material.icons.Icons
@@ -8,8 +8,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import casera.composeapp.generated.resources.*
import com.example.casera.viewmodel.TaskViewModel
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.viewmodel.TaskViewModel
import org.jetbrains.compose.resources.stringResource
// MARK: - Edit Task Button

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.task
package com.tt.honeyDue.ui.components.task
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
@@ -14,13 +14,13 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import casera.composeapp.generated.resources.*
import com.example.casera.models.TaskDetail
import com.example.casera.models.TaskCategory
import com.example.casera.models.TaskPriority
import com.example.casera.models.TaskFrequency
import com.example.casera.models.TaskCompletion
import com.example.casera.util.DateUtils
import honeydue.composeapp.generated.resources.*
import com.tt.honeyDue.models.TaskDetail
import com.tt.honeyDue.models.TaskCategory
import com.tt.honeyDue.models.TaskPriority
import com.tt.honeyDue.models.TaskFrequency
import com.tt.honeyDue.models.TaskCompletion
import com.tt.honeyDue.util.DateUtils
import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview

View File

@@ -1,4 +1,4 @@
package com.example.casera.ui.components.task
package com.tt.honeyDue.ui.components.task
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
@@ -19,8 +19,8 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.example.casera.models.TaskColumn
import com.example.casera.models.TaskDetail
import com.tt.honeyDue.models.TaskColumn
import com.tt.honeyDue.models.TaskDetail
@OptIn(ExperimentalFoundationApi::class)
@Composable

Some files were not shown because too many files have changed in this diff Show More