From 21f488af5c22bae1d2d43725f754d47217dc363d Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 29 May 2026 11:13:29 -0400 Subject: [PATCH 1/4] refactor(theme): consolidate design system, remove legacy theme --- .../com/flipcash/app/theme/FlipcashPreview.kt | 9 +- .../com/flipcash/app/theme/FlipcashTheme.kt | 8 +- ...esignSystem.kt => FlipcashDesignSystem.kt} | 11 +- .../internal/FlipcashLegacyDesignSystem.kt | 107 ------------------ .../main/kotlin/com/getcode/theme/Color.kt | 9 ++ .../main/kotlin/com/getcode/theme/Theme.kt | 8 +- 6 files changed, 28 insertions(+), 124 deletions(-) rename apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/{Flipcash2DesignSystem.kt => FlipcashDesignSystem.kt} (92%) delete mode 100644 apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashLegacyDesignSystem.kt diff --git a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashPreview.kt b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashPreview.kt index 81d5ce201..849ef0942 100644 --- a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashPreview.kt +++ b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashPreview.kt @@ -9,18 +9,15 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewWrapper import androidx.compose.ui.tooling.preview.PreviewWrapperProvider import com.getcode.animation.LocalSharedTransitionScope import com.flipcash.app.theme.internal.Flipcash2DesignSystem -import com.flipcash.app.theme.internal.FlipcashLegacyDesignSystem import com.getcode.theme.CodeTheme @Deprecated("Use FlipcashThemeWrapper") @Composable fun FlipcashPreview( showBackground: Boolean = false, - useLegacyColors: Boolean = false, content: @Composable () -> Unit ) { val previewContent = @Composable { @@ -39,11 +36,7 @@ fun FlipcashPreview( } } - if (useLegacyColors) { - FlipcashLegacyDesignSystem(previewContent) - } else { - Flipcash2DesignSystem(previewContent) - } + Flipcash2DesignSystem(previewContent) } class FlipcashThemeWrapper: PreviewWrapperProvider { diff --git a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashTheme.kt b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashTheme.kt index f949e811d..a00cc0025 100644 --- a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashTheme.kt +++ b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashTheme.kt @@ -2,16 +2,10 @@ package com.flipcash.app.theme import androidx.compose.runtime.Composable import com.flipcash.app.theme.internal.Flipcash2DesignSystem -import com.flipcash.app.theme.internal.FlipcashLegacyDesignSystem @Composable fun FlipcashTheme( - useLegacyColors: Boolean = false, content: @Composable () -> Unit, ) { - if (useLegacyColors) { - FlipcashLegacyDesignSystem(content) - } else { - Flipcash2DesignSystem(content) - } + Flipcash2DesignSystem(content) } \ No newline at end of file diff --git a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/Flipcash2DesignSystem.kt b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashDesignSystem.kt similarity index 92% rename from apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/Flipcash2DesignSystem.kt rename to apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashDesignSystem.kt index cbe2a0720..09798c901 100644 --- a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/Flipcash2DesignSystem.kt +++ b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashDesignSystem.kt @@ -52,6 +52,14 @@ object Flipcash2ColorSpec { borderColor = null, borderWidth = 0f, ) + val contactAvatar = GradientSpec( + background = Color.Black, + colors = listOf( + Color(0xFF414141), + Color(0xFF202020) + ), + stops = listOf(0f, 1f) + ) } private val colors = with(Flipcash2ColorSpec) { @@ -94,7 +102,8 @@ private val colors = with(Flipcash2ColorSpec) { bannerWarning = Warning, bannerSuccess = BannerSuccess, scrim = Black40, - accessKey = accessKey + accessKey = accessKey, + contactAvatar = contactAvatar, ) } @Composable diff --git a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashLegacyDesignSystem.kt b/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashLegacyDesignSystem.kt deleted file mode 100644 index 0e8e75abc..000000000 --- a/apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/internal/FlipcashLegacyDesignSystem.kt +++ /dev/null @@ -1,107 +0,0 @@ -package com.flipcash.app.theme.internal - -import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.font.FontWeight -import com.getcode.theme.BannerSuccess -import com.getcode.theme.BetaIndicator -import com.getcode.theme.Black40 -import com.getcode.theme.BrandAccent -import com.getcode.theme.BrandDark -import com.getcode.theme.BrandIndicator -import com.getcode.theme.BrandMuted -import com.getcode.theme.BrandOverlay -import com.getcode.theme.ColorScheme -import com.getcode.theme.DesignSystem -import com.getcode.theme.Error -import com.getcode.theme.GradientSpec -import com.getcode.theme.Gray50 -import com.getcode.theme.TextError -import com.getcode.theme.Warning -import com.getcode.theme.White -import com.getcode.theme.White05 -import com.getcode.theme.White08 -import com.getcode.theme.White10 -import com.getcode.theme.White50 -import com.getcode.theme.codeTypography - -object FlipcashColorSpec { - val primary = Color(0xFF001A0C) - val primaryLight = Color(0xFF09550B) - val secondary = Color(115, 129, 121) - val secondaryText = Color.White.copy(alpha = 0.5f) - val cashBill = Color(0xFF06450F) - val trackColor = Color.White.copy(alpha = 0.07f) - val bannerThemed = Color(0xFF1A3125) - val success = Color(0xFF1AC86A) - val successText = Color(0xFF73EAA4) - val surfaceVariant = Color.White.copy(alpha = 0.12f) - val errorSurface = Color(0x4AE75454) - val accessKey = GradientSpec( - background = primary, - colors = listOf( - Color(0xFF001A0C), - Color(0xFF042005), - Color(0xFF0C291A), - Color(0xFF004602), - Color(0xFF004602), - ), - stops = listOf(0f, 0.3f, 0.6f, 1f) - ) -} - -private val colors = with(FlipcashColorSpec) { - ColorScheme( - brand = primary, - brandLight = primaryLight, - brandSubtle = secondary, - brandMuted = BrandMuted, - brandDark = BrandDark, - brandOverlay = BrandOverlay, - brandContainer = primary, - secondary = secondary, - tertiary = BrandAccent, - indicator = BrandIndicator, - action = Gray50, - onAction = White, - background = primary, - onBackground = White, - surface = primary, - surfaceVariant = surfaceVariant, - surfaceError = errorSurface, - onSurface = White, - error = Error, - errorText = TextError, - success = success, - successText = success, - textMain = Color.White, - textSecondary = secondaryText, - textTertiary = White50, - border = White08, - divider = White10, - dividerVariant = White05, - trackColor = trackColor, - toggleUncheckedTrackColor = secondary, - cashBill = cashBill, - cashBillDecorColor = Color.White.copy(0.60f), - betaIndicator = BetaIndicator, - bannerThemed = bannerThemed, - bannerError = Error, - bannerWarning = Warning, - bannerSuccess = BannerSuccess, - scrim = Black40, - accessKey = accessKey, - ) -} - -@Composable -internal fun FlipcashLegacyDesignSystem(content: @Composable () -> Unit) { - DesignSystem( - colorScheme = colors, - // override code type system to make screen title's slightly bigger - typography = codeTypography.copy( - screenTitle = codeTypography.displayExtraSmall.copy(fontWeight = FontWeight.W500) - ), - content = content - ) -} diff --git a/ui/theme/src/main/kotlin/com/getcode/theme/Color.kt b/ui/theme/src/main/kotlin/com/getcode/theme/Color.kt index f6cbcd1a2..323b39e12 100644 --- a/ui/theme/src/main/kotlin/com/getcode/theme/Color.kt +++ b/ui/theme/src/main/kotlin/com/getcode/theme/Color.kt @@ -68,6 +68,15 @@ val CodeAccessKey = GradientSpec( stops = listOf(0f, 0.3f, 0.6f, 1f) ) +val CodeContactAvatar = GradientSpec( + background = Brand, + colors = listOf( + Color(0xFF4A5568), + Color(0xFF6B7A90), + ), + stops = listOf(0f, 1f) +) + data class GradientSpec( val background: Color, val colors: List, diff --git a/ui/theme/src/main/kotlin/com/getcode/theme/Theme.kt b/ui/theme/src/main/kotlin/com/getcode/theme/Theme.kt index 6d3aaf7b7..1325a2b99 100644 --- a/ui/theme/src/main/kotlin/com/getcode/theme/Theme.kt +++ b/ui/theme/src/main/kotlin/com/getcode/theme/Theme.kt @@ -58,6 +58,7 @@ internal val CodeDefaultColorScheme = ColorScheme( bannerSuccess = BannerSuccess, scrim = Black40, accessKey = CodeAccessKey, + contactAvatar = CodeContactAvatar, ) @Composable @@ -148,6 +149,7 @@ class ColorScheme( bannerSuccess: Color, scrim: Color, accessKey: GradientSpec, + contactAvatar: GradientSpec, ) { var brand by mutableStateOf(brand) private set @@ -230,6 +232,8 @@ class ColorScheme( var accessKey by mutableStateOf(accessKey) private set + var contactAvatar by mutableStateOf(contactAvatar) + private set fun update(other: ColorScheme) { @@ -272,6 +276,7 @@ class ColorScheme( bannerSuccess = other.bannerSuccess scrim = other.scrim accessKey = other.accessKey + contactAvatar = other.contactAvatar } fun copy(): ColorScheme = ColorScheme( @@ -314,6 +319,7 @@ class ColorScheme( bannerSuccess = bannerSuccess, scrim = scrim, accessKey = accessKey, + contactAvatar = contactAvatar, ) } @@ -361,7 +367,7 @@ fun inputColors( borderColor: Color = CodeTheme.colors.border, unfocusedBorderColor: Color = borderColor, backgroundColor: Color = White05, - placeholderColor: Color = CodeTheme.colors.textTertiary, + placeholderColor: Color = CodeTheme.colors.textSecondary, cursorColor: Color = Color.White, errorBorderColor: Color = CodeTheme.colors.error, ) = TextFieldDefaults.outlinedTextFieldColors( From 1983db481c623ba60d4e2edb661ba8ad4b5c9790 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 29 May 2026 11:15:20 -0400 Subject: [PATCH 2/4] fix(navigation): use qualifiedName strings for FlowHost saved state KClass references aren't serializable and can't survive rememberSaveable across process death. Use qualifiedName strings instead so the seeded-stack comparison works after restoration. Co-Authored-By: Claude Opus 4.6 --- .../src/main/kotlin/com/getcode/navigation/flow/FlowHost.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/navigation/src/main/kotlin/com/getcode/navigation/flow/FlowHost.kt b/ui/navigation/src/main/kotlin/com/getcode/navigation/flow/FlowHost.kt index afc3dc1f6..e97c0133d 100644 --- a/ui/navigation/src/main/kotlin/com/getcode/navigation/flow/FlowHost.kt +++ b/ui/navigation/src/main/kotlin/com/getcode/navigation/flow/FlowHost.kt @@ -223,12 +223,12 @@ private fun FlowHostImpl( // We track what was seeded and only re-seed if the backstack is still untouched. // Animation is suppressed during re-seed so NavDisplay doesn't slide between // the stale and corrected content. - val seededStack = remember { initialStack.map { it::class } } - val currentInitialClasses = initialStack.map { it::class } + val seededStack = rememberSaveable { initialStack.map { it::class.qualifiedName } } + val currentInitialClasses = initialStack.map { it::class.qualifiedName } val suppressTransition = remember { mutableStateOf(false) } LaunchedEffect(currentInitialClasses) { if (currentInitialClasses == seededStack) return@LaunchedEffect - val backstackClasses = innerBackStack.map { it::class } + val backstackClasses = innerBackStack.map { it::class.qualifiedName } if (backstackClasses != seededStack) return@LaunchedEffect suppressTransition.value = true Snapshot.withMutableSnapshot { From 321530f3139598684857ae0910259e8cfdf08246 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 29 May 2026 11:16:59 -0400 Subject: [PATCH 3/4] refactor(ui): relocate SearchBar to shared SearchInput component Move the currency-selection-local SearchBar into a shared, reusable SearchInput in ui/components. The placeholder is now a parameter, the shape is CircleShape, and the icon tint follows the theme. --- .../internal/RegionSelectionModalContent.kt | 7 +++++-- .../com/getcode/ui/components/SearchInput.kt | 16 ++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) rename apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/components/SearchBar.kt => ui/components/src/main/kotlin/com/getcode/ui/components/SearchInput.kt (84%) diff --git a/apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/RegionSelectionModalContent.kt b/apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/RegionSelectionModalContent.kt index 692cb7ced..299be1886 100644 --- a/apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/RegionSelectionModalContent.kt +++ b/apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/RegionSelectionModalContent.kt @@ -10,11 +10,13 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.flipcash.app.currency.internal.components.RegionList -import com.flipcash.app.currency.internal.components.SearchBar +import com.flipcash.features.currency.R import com.getcode.navigation.core.LocalCodeNavigator import com.getcode.theme.CodeTheme +import com.getcode.ui.components.SearchInput import com.getcode.ui.core.rememberAnimationScale import com.getcode.ui.core.scaled import com.getcode.ui.utils.rememberKeyboardController @@ -51,10 +53,11 @@ internal fun RegionSelectionModalContent(viewModel: CurrencyViewModel) { snapshotFlow { state.searchState.text } .launchIn(this) } - SearchBar( + SearchInput( modifier = Modifier.padding(top = CodeTheme.dimens.grid.x3), state = state.searchState, contentPadding = PaddingValues(start = CodeTheme.dimens.grid.x1), + placeholder = stringResource(R.string.subtitle_searchRegions) ) RegionList( diff --git a/apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/components/SearchBar.kt b/ui/components/src/main/kotlin/com/getcode/ui/components/SearchInput.kt similarity index 84% rename from apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/components/SearchBar.kt rename to ui/components/src/main/kotlin/com/getcode/ui/components/SearchInput.kt index d5128f9c5..371d8814f 100644 --- a/apps/flipcash/shared/currency-selection/ui/src/main/kotlin/com/flipcash/app/currency/internal/components/SearchBar.kt +++ b/ui/components/src/main/kotlin/com/getcode/ui/components/SearchInput.kt @@ -1,7 +1,8 @@ -package com.flipcash.app.currency.internal.components +package com.getcode.ui.components import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.foundation.text.input.clearText import androidx.compose.material.Icon @@ -12,16 +13,15 @@ import androidx.compose.material.icons.outlined.Close import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import com.flipcash.features.currency.R import com.getcode.theme.CodeTheme import com.getcode.theme.White50 -import com.getcode.ui.components.TextInput @Composable -internal fun SearchBar( +fun SearchInput( state: TextFieldState, modifier: Modifier = Modifier, contentPadding: PaddingValues = PaddingValues(), + placeholder: String = stringResource(R.string.action_search), ) { TextInput( modifier = modifier @@ -30,13 +30,13 @@ internal fun SearchBar( contentPadding = contentPadding, leadingIcon = { Icon( - modifier = Modifier.padding(start = CodeTheme.dimens.grid.x1), + modifier = Modifier.padding(start = CodeTheme.dimens.grid.x3), imageVector = Icons.Filled.Search, contentDescription = null, - tint = White50, + tint = CodeTheme.colors.textMain, ) }, - placeholder = stringResource(id = R.string.subtitle_searchRegions), + placeholder = placeholder, placeholderStyle = CodeTheme.typography.textMedium, trailingIcon = { if (state.text.isNotEmpty()) { @@ -55,6 +55,6 @@ internal fun SearchBar( }, maxLines = 1, style = CodeTheme.typography.textMedium, - shape = CodeTheme.shapes.small + shape = CircleShape, ) } \ No newline at end of file From 7f4736b62068bf9ccb4c05d4dfc169c9052af6d9 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 29 May 2026 11:26:44 -0400 Subject: [PATCH 4/4] refactor(lab): consolidate LabsScreen and move route to Menu Merge LabsScreen and StandaloneLabsScreen into a single composable that detects navigation context at runtime. Remove Sheets.Lab route (Menu.Lab already exists). Remove unused PreloadLabs composable. --- .../ui/navigation/AppScreenContent.kt | 2 - .../kotlin/com/flipcash/app/core/AppRoute.kt | 2 - .../kotlin/com/flipcash/app/lab/LabsScreen.kt | 56 +++++++------------ .../app/login/OnboardingFlowScreen.kt | 2 +- 4 files changed, 21 insertions(+), 41 deletions(-) diff --git a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/navigation/AppScreenContent.kt b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/navigation/AppScreenContent.kt index 09b2d47b8..617413054 100644 --- a/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/navigation/AppScreenContent.kt +++ b/apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/navigation/AppScreenContent.kt @@ -33,7 +33,6 @@ import com.flipcash.app.discovery.TokenDiscoveryScreen import com.flipcash.app.internal.ui.navigation.decorators.rememberNavMessagingEntryDecorator import com.flipcash.app.lab.LabsScreen import com.flipcash.app.lab.NavBarSettingsScreen -import com.flipcash.app.lab.StandaloneLabsScreen import com.flipcash.app.login.OnboardingFlowScreen import com.flipcash.app.menu.MenuScreen import com.flipcash.app.myaccount.MyAccountScreen @@ -88,7 +87,6 @@ fun appEntryProvider( annotatedEntry { BalanceScreen() } annotatedEntry { ShareAppScreen() } annotatedEntry { MenuScreen() } - annotatedEntry { StandaloneLabsScreen() } // Tokens 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 df3367e5a..98da0cc1f 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 @@ -145,8 +145,6 @@ sealed interface AppRoute : NavKey, Parcelable { data object Wallet : Sheets @Serializable data object Menu : Sheets - @Serializable - data object Lab : Sheets @Serializable data object ShareApp : Sheets diff --git a/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/LabsScreen.kt b/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/LabsScreen.kt index 05f2b4d66..641cbc500 100644 --- a/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/LabsScreen.kt +++ b/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/LabsScreen.kt @@ -3,6 +3,7 @@ package com.flipcash.app.lab import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -17,49 +18,32 @@ import com.getcode.ui.components.AppBarWithTitle @Composable fun LabsScreen() { val navigator = LocalCodeNavigator.current - - Column( - modifier = Modifier.fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - AppBarWithTitle( - title = stringResource(R.string.title_betaFlags), - titleAlignment = Alignment.CenterHorizontally, - backButton = true, - isInModal = true, - onBackIconClicked = navigator::pop - ) - - val viewModel = getActivityScopedViewModel() - - LabsScreenContent(viewModel) - } -} - -@Composable -fun StandaloneLabsScreen() { - val navigator = LocalCodeNavigator.current - + val isSheetRoot = remember { navigator.backStack.size <= 1 } Column( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, ) { - AppBarWithTitle( - title = stringResource(R.string.title_betaFlags), - titleAlignment = Alignment.CenterHorizontally, - isInModal = true, - endContent = { - AppBarDefaults.Close { navigator.hide() } - } - ) + if (isSheetRoot) { + AppBarWithTitle( + title = stringResource(R.string.title_betaFlags), + titleAlignment = Alignment.CenterHorizontally, + isInModal = true, + endContent = { + AppBarDefaults.Close { navigator.hide() } + } + ) + } else { + AppBarWithTitle( + title = stringResource(R.string.title_betaFlags), + titleAlignment = Alignment.CenterHorizontally, + backButton = true, + isInModal = true, + onBackIconClicked = navigator::pop + ) + } val viewModel = getActivityScopedViewModel() LabsScreenContent(viewModel) } } - -@Composable -fun PreloadLabs() { - val viewModel = getActivityScopedViewModel() -} diff --git a/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt b/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt index 99e86b295..d431459a3 100644 --- a/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt +++ b/apps/flipcash/features/login/src/main/kotlin/com/flipcash/app/login/OnboardingFlowScreen.kt @@ -353,7 +353,7 @@ private fun LoginStepContent(seed: String?) { login = { flowNavigator.navigateTo(OnboardingStep.SeedInput) }, isLabsOpen = state.betaOptionsVisible, onLogoTapped = { vm.dispatchEvent(LoginViewModel.Event.OnLogoTapped) }, - openBetaFlags = { outerNavigator.openAsSheet(AppRoute.Sheets.Lab) }, + openBetaFlags = { outerNavigator.openAsSheet(AppRoute.Menu.Lab) }, ) } }