diff --git a/apps/flipcash/app/build.gradle.kts b/apps/flipcash/app/build.gradle.kts index e4f8edd006..5d177c72b1 100644 --- a/apps/flipcash/app/build.gradle.kts +++ b/apps/flipcash/app/build.gradle.kts @@ -174,6 +174,7 @@ androidComponents { } dependencies { + implementation(project(":apps:flipcash:core-ui")) implementation(libs.bundles.haze) implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) // KMP shared core — consumed transitively via :libs:encryption:base58 but declared diff --git a/apps/flipcash/core-ui/.gitignore b/apps/flipcash/core-ui/.gitignore new file mode 100644 index 0000000000..9f2a078806 --- /dev/null +++ b/apps/flipcash/core-ui/.gitignore @@ -0,0 +1,2 @@ +build/ +.gradle/ diff --git a/apps/flipcash/core-ui/build.gradle.kts b/apps/flipcash/core-ui/build.gradle.kts new file mode 100644 index 0000000000..8e3f3d0dff --- /dev/null +++ b/apps/flipcash/core-ui/build.gradle.kts @@ -0,0 +1,18 @@ +plugins { + alias(libs.plugins.flipcash.android.feature) +} + +android { + namespace = "${Gradle.flipcashNamespace}.core.ui" +} + +dependencies { + implementation(project(":apps:flipcash:shared:featureflags")) + + implementation(libs.compose.material3) + implementation(libs.bundles.haze) + + testImplementation(kotlin("test")) + testImplementation(libs.bundles.unit.testing) + testImplementation(libs.robolectric) +} diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/AppBarTitlePreviews.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/AppBarTitlePreviews.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/AppBarTitlePreviews.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/AppBarTitlePreviews.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/ButtonPreviews.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/ButtonPreviews.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/ButtonPreviews.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/ButtonPreviews.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/CalloutPreviews.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/CalloutPreviews.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/CalloutPreviews.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/internal/ui/previews/CalloutPreviews.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/AmountWithKeypad.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/AmountWithKeypad.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/AmountWithKeypad.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/AmountWithKeypad.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/BrandedGradientIcon.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/BrandedGradientIcon.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/BrandedGradientIcon.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/BrandedGradientIcon.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/Callout.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/Callout.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/Callout.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/Callout.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/ConfirmationStyle.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/ConfirmationStyle.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/ConfirmationStyle.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/ConfirmationStyle.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/CurrencyAppreciationLabel.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/CurrencyAppreciationLabel.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/CurrencyAppreciationLabel.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/CurrencyAppreciationLabel.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/CurrencyHolder.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/CurrencyHolder.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/CurrencyHolder.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/CurrencyHolder.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/DeviceFrame.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/DeviceFrame.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/DeviceFrame.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/DeviceFrame.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/DisplayTextInput.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/DisplayTextInput.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/DisplayTextInput.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/DisplayTextInput.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/FlagWithFiat.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/FlagWithFiat.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/FlagWithFiat.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/FlagWithFiat.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/LongPressDraggable.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/LongPressDraggable.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/LongPressDraggable.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/LongPressDraggable.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/NavigationBar.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/NavigationBar.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/NavigationBar.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/NavigationBar.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/NotificationPreview.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/NotificationPreview.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/NotificationPreview.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/NotificationPreview.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/NotifyButtonLabel.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/NotifyButtonLabel.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/NotifyButtonLabel.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/NotifyButtonLabel.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/ReceiptLineItem.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/ReceiptLineItem.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/ReceiptLineItem.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/ReceiptLineItem.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/Skeleton.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/Skeleton.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/Skeleton.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/Skeleton.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/SwitchPreview.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/SwitchPreview.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/SwitchPreview.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/SwitchPreview.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TileButton.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TileButton.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TileButton.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TileButton.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenBalanceRow.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenBalanceRow.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenBalanceRow.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenBalanceRow.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenCard.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenCard.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenCard.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenCard.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenCardStack.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenCardStack.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenCardStack.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenCardStack.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenImageWithName.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenImageWithName.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenImageWithName.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenImageWithName.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenSelectionPill.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenSelectionPill.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/TokenSelectionPill.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/TokenSelectionPill.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowProgress.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowProgress.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowProgress.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowProgress.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBar.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBar.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBar.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBar.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBarController.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBarController.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBarController.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepBarController.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepper.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepper.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepper.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/FlowStepper.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowScaffold.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowScaffold.kt similarity index 97% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowScaffold.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowScaffold.kt index f54f3f9458..2f84fd1be8 100644 --- a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowScaffold.kt +++ b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowScaffold.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.navigation3.runtime.NavEntry import androidx.navigation3.runtime.NavKey +import com.flipcash.app.core.navigation.SteppedFlowRoute import com.getcode.navigation.flow.FlowExitReason import com.getcode.navigation.flow.FlowHost import com.getcode.navigation.flow.FlowStep diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/processing/FlowProcessingScreen.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/processing/FlowProcessingScreen.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/processing/FlowProcessingScreen.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/processing/FlowProcessingScreen.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/processing/ProcessingLoadingIndicator.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/processing/ProcessingLoadingIndicator.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/processing/ProcessingLoadingIndicator.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/processing/ProcessingLoadingIndicator.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/transitions/SharedTransitions.kt b/apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/transitions/SharedTransitions.kt similarity index 100% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/transitions/SharedTransitions.kt rename to apps/flipcash/core-ui/src/main/kotlin/com/flipcash/app/core/ui/transitions/SharedTransitions.kt diff --git a/apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/ui/flow/FlowProgressTest.kt b/apps/flipcash/core-ui/src/test/kotlin/com/flipcash/app/core/ui/flow/FlowProgressTest.kt similarity index 100% rename from apps/flipcash/core/src/test/kotlin/com/flipcash/app/core/ui/flow/FlowProgressTest.kt rename to apps/flipcash/core-ui/src/test/kotlin/com/flipcash/app/core/ui/flow/FlowProgressTest.kt diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt index 9c092e6cb6..93937f2cf8 100644 --- a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt +++ b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt @@ -14,7 +14,7 @@ import com.flipcash.app.core.tokens.SwapPurpose import com.flipcash.app.core.tokens.SwapResult import com.flipcash.app.core.tokens.SwapStep import com.flipcash.app.core.tokens.TokenPurpose -import com.flipcash.app.core.ui.flow.SteppedFlowRoute +import com.flipcash.app.core.navigation.SteppedFlowRoute import com.flipcash.app.core.userprofile.UpdateProfileResult import com.flipcash.app.core.userprofile.UpdateProfileStep import com.flipcash.app.core.verification.VerificationResult diff --git a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowRoute.kt b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt similarity index 94% rename from apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowRoute.kt rename to apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt index 9de67d5915..9e08de1e33 100644 --- a/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/flow/SteppedFlowRoute.kt +++ b/apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/navigation/SteppedFlowRoute.kt @@ -1,4 +1,4 @@ -package com.flipcash.app.core.ui.flow +package com.flipcash.app.core.navigation import android.os.Parcelable import com.getcode.navigation.flow.FlowRouteWithResult diff --git a/apps/flipcash/shared/chat-ui/build.gradle.kts b/apps/flipcash/shared/chat-ui/build.gradle.kts index 4bf52372d5..6f084d8e70 100644 --- a/apps/flipcash/shared/chat-ui/build.gradle.kts +++ b/apps/flipcash/shared/chat-ui/build.gradle.kts @@ -7,6 +7,7 @@ android { } dependencies { + implementation(project(":apps:flipcash:core-ui")) implementation(project(":apps:flipcash:core")) implementation(project(":apps:flipcash:shared:chat")) implementation(project(":ui:core")) diff --git a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt index 41e79c7547..686c26f59a 100644 --- a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt @@ -43,6 +43,18 @@ class AndroidFeatureConventionPlugin : Plugin { if (path != ":apps:flipcash:core") { "implementation"(project(":apps:flipcash:core")) } + + // Shared UI composables. core-ui sits above core (core-ui -> core -> featureflags), + // so it must not be added to itself or to any module it transitively depends on, or + // Gradle reports a dependency cycle. + val coreUiCycleModules = setOf( + ":apps:flipcash:core", + ":apps:flipcash:core-ui", + ":apps:flipcash:shared:featureflags", + ) + if (path !in coreUiCycleModules) { + "implementation"(project(":apps:flipcash:core-ui")) + } } } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 31fdeed473..ee0056f8c1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -43,6 +43,7 @@ include( // flipcash modules ":apps:flipcash:core", + ":apps:flipcash:core-ui", ":libs:test-utils", // shared flipcash coordinators/controllers/viewmodels/services ":apps:flipcash:shared:amount-entry",