diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt index 9fe82150dd..d5720faaf9 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt @@ -39,8 +39,8 @@ import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.platform.resource.BitwardenDrawable import com.bitwarden.ui.platform.resource.BitwardenString +import com.bitwarden.ui.platform.util.displayLabel import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage -import com.x8bit.bitwarden.ui.platform.util.displayLabel import kotlinx.collections.immutable.toImmutableList /** diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/AppThemeExtensions.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/AppThemeExtensions.kt deleted file mode 100644 index 4b23e8b632..0000000000 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/AppThemeExtensions.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.x8bit.bitwarden.ui.platform.util - -import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme -import com.bitwarden.ui.platform.resource.BitwardenString -import com.bitwarden.ui.util.Text -import com.bitwarden.ui.util.asText - -/** - * Returns a human-readable display label for the given [AppTheme]. - */ -val AppTheme.displayLabel: Text - get() = when (this) { - AppTheme.DEFAULT -> BitwardenString.default_system.asText() - AppTheme.DARK -> BitwardenString.dark.asText() - AppTheme.LIGHT -> BitwardenString.light.asText() - } diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/authenticator/feature/qrcodescan/ChooseSaveLocationDialog.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/authenticator/feature/qrcodescan/ChooseSaveLocationDialog.kt index 6d714ba2b2..69a2b4b7d1 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/authenticator/feature/qrcodescan/ChooseSaveLocationDialog.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/authenticator/feature/qrcodescan/ChooseSaveLocationDialog.kt @@ -27,8 +27,8 @@ import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.bitwarden.authenticator.ui.platform.components.button.AuthenticatorTextButton import com.bitwarden.authenticator.ui.platform.components.toggle.BitwardenWideSwitch -import com.bitwarden.authenticator.ui.platform.components.util.maxDialogHeight -import com.bitwarden.authenticator.ui.platform.components.util.maxDialogWidth +import com.bitwarden.ui.platform.components.dialog.util.maxDialogHeight +import com.bitwarden.ui.platform.components.dialog.util.maxDialogWidth import com.bitwarden.ui.platform.resource.BitwardenString /** diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/dialog/BitwardenSelectionDialog.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/dialog/BitwardenSelectionDialog.kt index 6530eefcc5..11c789d5e4 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/dialog/BitwardenSelectionDialog.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/dialog/BitwardenSelectionDialog.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import com.bitwarden.authenticator.ui.platform.components.button.AuthenticatorTextButton -import com.bitwarden.authenticator.ui.platform.components.util.maxDialogHeight +import com.bitwarden.ui.platform.components.dialog.util.maxDialogHeight import com.bitwarden.ui.platform.resource.BitwardenString /** diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/field/BitwardenPasswordField.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/field/BitwardenPasswordField.kt index 4299cf192c..9d17c000a0 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/field/BitwardenPasswordField.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/field/BitwardenPasswordField.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview -import com.bitwarden.authenticator.ui.platform.components.util.nonLetterColorVisualTransformation +import com.bitwarden.ui.platform.components.util.nonLetterColorVisualTransformation import com.bitwarden.ui.platform.resource.BitwardenDrawable import com.bitwarden.ui.platform.resource.BitwardenString @@ -80,7 +80,11 @@ fun BitwardenPasswordField( onValueChange = onValueChange, visualTransformation = when { !showPassword -> PasswordVisualTransformation() - readOnly -> nonLetterColorVisualTransformation() + readOnly -> nonLetterColorVisualTransformation( + digitColor = MaterialTheme.colorScheme.primary, + specialCharacterColor = MaterialTheme.colorScheme.error, + ) + else -> VisualTransformation.None }, singleLine = singleLine, diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/util/DialogExtensions.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/util/DialogExtensions.kt deleted file mode 100644 index 11da852ad2..0000000000 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/util/DialogExtensions.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.bitwarden.authenticator.ui.platform.components.util - -import android.content.res.Configuration -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp - -/** - * Provides the maximum height [Dp] common for all dialogs with a given [Configuration]. - */ -val Configuration.maxDialogHeight: Dp - get() = when (orientation) { - Configuration.ORIENTATION_LANDSCAPE -> 312.dp - Configuration.ORIENTATION_PORTRAIT -> 542.dp - Configuration.ORIENTATION_UNDEFINED -> Dp.Unspecified - @Suppress("DEPRECATION") - Configuration.ORIENTATION_SQUARE, - -> Dp.Unspecified - - else -> Dp.Unspecified - } - -/** - * Provides the maximum width [Dp] common for all dialogs with a given [Configuration]. - */ -val Configuration.maxDialogWidth: Dp - get() = when (orientation) { - Configuration.ORIENTATION_LANDSCAPE -> 542.dp - Configuration.ORIENTATION_PORTRAIT -> 312.dp - Configuration.ORIENTATION_UNDEFINED -> Dp.Unspecified - @Suppress("DEPRECATION") - Configuration.ORIENTATION_SQUARE, - -> Dp.Unspecified - - else -> Dp.Unspecified - } diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/util/NonLetterColorVisualTransformation.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/util/NonLetterColorVisualTransformation.kt deleted file mode 100644 index 825eaba597..0000000000 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/components/util/NonLetterColorVisualTransformation.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.bitwarden.authenticator.ui.platform.components.util - -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.SpanStyle -import androidx.compose.ui.text.input.OffsetMapping -import androidx.compose.ui.text.input.TransformedText -import androidx.compose.ui.text.input.VisualTransformation -import androidx.compose.ui.text.withStyle - -/** - * Returns the [VisualTransformation] that alters the output of the text in an input field by - * applying different colors to the digits and special characters, letters will remain unaffected. - */ -@Composable -fun nonLetterColorVisualTransformation(): VisualTransformation { - val digitColor = MaterialTheme.colorScheme.primary - val specialCharacterColor = MaterialTheme.colorScheme.error - return remember(digitColor, specialCharacterColor) { - NonLetterColorVisualTransformation( - digitColor = digitColor, - specialCharacterColor = specialCharacterColor, - ) - } -} - -/** - * Alters the visual output of the text in an input field. - * - * All numbers in the text will have the [digitColor] applied to it and special characters will - * have the [specialCharacterColor] applied. - */ -private class NonLetterColorVisualTransformation( - private val digitColor: Color, - private val specialCharacterColor: Color, -) : VisualTransformation { - - override fun filter(text: AnnotatedString): TransformedText = - TransformedText( - buildTransformedAnnotatedString(text.toString()), - OffsetMapping.Identity, - ) - - private fun buildTransformedAnnotatedString(text: String): AnnotatedString { - val builder = AnnotatedString.Builder() - text.toCharArray().forEach { char -> - when { - char.isDigit() -> builder.withStyle(SpanStyle(color = digitColor)) { append(char) } - - !char.isLetter() -> { - builder.withStyle(SpanStyle(color = specialCharacterColor)) { append(char) } - } - - else -> builder.append(char) - } - } - return builder.toAnnotatedString() - } -} diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt index 3112911f7e..cdd10fd0a5 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt @@ -71,6 +71,7 @@ import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.platform.resource.BitwardenDrawable import com.bitwarden.ui.platform.resource.BitwardenString +import com.bitwarden.ui.platform.util.displayLabel import com.bitwarden.ui.util.Text import com.bitwarden.ui.util.asText diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/util/AppThemeExtensions.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/util/AppThemeExtensions.kt deleted file mode 100644 index d2b1c28981..0000000000 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/util/AppThemeExtensions.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.bitwarden.authenticator.ui.platform.util - -import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme -import com.bitwarden.ui.platform.resource.BitwardenString -import com.bitwarden.ui.util.Text -import com.bitwarden.ui.util.asText - -/** - * Returns a human-readable display label for the given [AppTheme]. - */ -val AppTheme.displayLabel: Text - get() = when (this) { - AppTheme.DEFAULT -> BitwardenString.default_system.asText() - AppTheme.DARK -> BitwardenString.dark.asText() - AppTheme.LIGHT -> BitwardenString.light.asText() - } diff --git a/ui/src/main/kotlin/com/bitwarden/ui/platform/components/util/NonLetterColorVisualTransformation.kt b/ui/src/main/kotlin/com/bitwarden/ui/platform/components/util/NonLetterColorVisualTransformation.kt index e177708f52..abf781032e 100644 --- a/ui/src/main/kotlin/com/bitwarden/ui/platform/components/util/NonLetterColorVisualTransformation.kt +++ b/ui/src/main/kotlin/com/bitwarden/ui/platform/components/util/NonLetterColorVisualTransformation.kt @@ -16,16 +16,16 @@ import com.bitwarden.ui.platform.theme.BitwardenTheme * applying different colors to the digits and special characters, letters will remain unaffected. */ @Composable -fun nonLetterColorVisualTransformation(): VisualTransformation { - val digitColor = BitwardenTheme.colorScheme.text.codeBlue - val specialCharacterColor = BitwardenTheme.colorScheme.text.codePink - return remember(digitColor, specialCharacterColor) { +fun nonLetterColorVisualTransformation( + digitColor: Color = BitwardenTheme.colorScheme.text.codeBlue, + specialCharacterColor: Color = BitwardenTheme.colorScheme.text.codePink, +): VisualTransformation = + remember(digitColor, specialCharacterColor) { NonLetterColorVisualTransformation( digitColor = digitColor, specialCharacterColor = specialCharacterColor, ) } -} /** * Alters the visual output of the text in an input field. diff --git a/ui/src/main/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensions.kt b/ui/src/main/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensions.kt index 48586facda..f8bec2737a 100644 --- a/ui/src/main/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensions.kt +++ b/ui/src/main/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensions.kt @@ -1,6 +1,19 @@ package com.bitwarden.ui.platform.util import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme +import com.bitwarden.ui.platform.resource.BitwardenString +import com.bitwarden.ui.util.Text +import com.bitwarden.ui.util.asText + +/** + * Returns a human-readable display label for the given [AppTheme]. + */ +val AppTheme.displayLabel: Text + get() = when (this) { + AppTheme.DEFAULT -> BitwardenString.default_system.asText() + AppTheme.DARK -> BitwardenString.dark.asText() + AppTheme.LIGHT -> BitwardenString.light.asText() + } /** * Returns `true` if the app is currently using dark mode. diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/AppThemeExtensionsTest.kt b/ui/src/testFixtures/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensionsTest.kt similarity index 94% rename from app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/AppThemeExtensionsTest.kt rename to ui/src/testFixtures/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensionsTest.kt index b65935d771..c715ffbf84 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/AppThemeExtensionsTest.kt +++ b/ui/src/testFixtures/kotlin/com/bitwarden/ui/platform/util/AppThemeExtensionsTest.kt @@ -1,4 +1,4 @@ -package com.x8bit.bitwarden.ui.platform.util +package com.bitwarden.ui.platform.util import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.resource.BitwardenString