diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fe20c4709a..847507ba5f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -109,6 +109,7 @@ dependencies { implementation(project(":domain")) implementation(project(":network")) implementation(project(":common")) + implementation(project(":core:ui")) /** AndroidX libraries */ implementation(AndroidX.coreKtx) diff --git a/app/src/main/java/com/tangem/tap/common/compose/TangemTypography.kt b/app/src/main/java/com/tangem/tap/common/compose/TangemTypography.kt index 88b088fa6a..2013295f25 100644 --- a/app/src/main/java/com/tangem/tap/common/compose/TangemTypography.kt +++ b/app/src/main/java/com/tangem/tap/common/compose/TangemTypography.kt @@ -9,13 +9,13 @@ import com.tangem.wallet.R object TangemTypography { val body1 = TextStyle( - fontFamily = FontFamily(Font(R.font.roboto)), + fontFamily = FontFamily(Font(R.font.roboto_regular)), fontSize = 16.0.sp, letterSpacing = 0.5.sp, lineHeight = 24.0.sp, ) val body2 = TextStyle( - fontFamily = FontFamily(Font(R.font.roboto)), + fontFamily = FontFamily(Font(R.font.roboto_regular)), fontSize = 14.0.sp, letterSpacing = 0.25.sp, lineHeight = 20.0.sp, @@ -27,13 +27,13 @@ object TangemTypography { lineHeight = 20.0.sp, ) val caption = TextStyle( - fontFamily = FontFamily(Font(R.font.roboto)), + fontFamily = FontFamily(Font(R.font.roboto_regular)), fontSize = 12.0.sp, letterSpacing = 0.4000000059604645.sp, lineHeight = 16.0.sp, ) val headline1 = TextStyle( - fontFamily = FontFamily(Font(R.font.roboto)), + fontFamily = FontFamily(Font(R.font.roboto_regular)), fontSize = 34.0.sp, letterSpacing = 0.0.sp, lineHeight = 44.0.sp, diff --git a/core/ui/.gitignore b/core/ui/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/core/ui/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts new file mode 100644 index 0000000000..ee2eab0e2a --- /dev/null +++ b/core/ui/build.gradle.kts @@ -0,0 +1,38 @@ +plugins { + id("com.android.library") + kotlin("android") +} + +android { + defaultConfig { + compileSdk = AppConfig.compileSdkVersion + minSdk = AppConfig.minSdkVersion + targetSdk = AppConfig.targetSdkVersion + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8.toString() + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + isCoreLibraryDesugaringEnabled = false + } + + buildFeatures { + compose = true + } + + composeOptions { + kotlinCompilerExtensionVersion = Versions.compose + } +} + +dependencies { + + /** Compose */ + implementation(Compose.foundation) + implementation(Compose.material) + implementation(Compose.uiTooling) +} \ No newline at end of file diff --git a/core/ui/src/main/AndroidManifest.xml b/core/ui/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..c5a36c7e17 --- /dev/null +++ b/core/ui/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/AppBar.kt b/core/ui/src/main/java/com/tangem/core/ui/components/AppBar.kt new file mode 100644 index 0000000000..6810ba11e8 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/components/AppBar.kt @@ -0,0 +1,72 @@ +package com.tangem.core.ui.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.Icon +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import com.tangem.core.ui.R +import com.tangem.core.ui.res.TangemTheme + +@Preview(widthDp = 360, heightDp = 56, showBackground = true) +@Composable +fun PreviewAppBarWithBackButtonInLightTheme() { + TangemTheme(isDarkTheme = false) { + AppBarWithBackButton(text = "Title", onBackClick = {}) + } +} + +@Preview(widthDp = 360, heightDp = 56, showBackground = true) +@Composable +fun PreviewAppBarWithBackButtonInDarkTheme() { + TangemTheme(isDarkTheme = true) { + AppBarWithBackButton(text = "Title", onBackClick = {}) + } +} + +/** + * App bar with back button and optional title + * + * @param text optional title + * @param onBackClick the lambda to be invoked when this icon is pressed + * + * @see Figma component + */ +@Composable +fun AppBarWithBackButton(text: String? = null, onBackClick: () -> Unit) { + Row( + modifier = Modifier + .background(MaterialTheme.colors.primaryVariant) + .padding(all = dimensionResource(R.dimen.spacing16)), + horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.spacing16)), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + painter = painterResource(R.drawable.ic_back), + contentDescription = null, + modifier = Modifier + .size(size = dimensionResource(R.dimen.size24)) + .clickable { onBackClick() }, + tint = MaterialTheme.colors.onPrimary, + ) + if (!text.isNullOrBlank()) { + Text( + text = text, + color = MaterialTheme.colors.onPrimary, + maxLines = 1, + style = MaterialTheme.typography.subtitle1, + ) + } + } +} \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt b/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt new file mode 100644 index 0000000000..e9e49c5c71 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/components/Buttons.kt @@ -0,0 +1,164 @@ +package com.tangem.core.ui.components + +import androidx.annotation.DrawableRes +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Button +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import com.tangem.core.ui.R +import com.tangem.core.ui.res.ButtonColorType +import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TextColorType +import com.tangem.core.ui.res.buttonColor +import com.tangem.core.ui.res.textColor + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryStartIconButton_Enabled_InLightTheme() { + TangemTheme(isDarkTheme = false) { + PrimaryStartIconButton(text = "Manage tokens", iconResId = R.drawable.ic_tangem, enabled = true, onClicked = {}) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryStartIconButton_Enabled_InDarkTheme() { + TangemTheme(isDarkTheme = true) { + PrimaryStartIconButton(text = "Manage tokens", iconResId = R.drawable.ic_tangem, enabled = true, onClicked = {}) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryStartIconButton_Disabled_InLightTheme() { + TangemTheme(isDarkTheme = false) { + PrimaryStartIconButton( + text = "Manage tokens", + iconResId = R.drawable.ic_tangem, + enabled = false, + onClicked = {}, + ) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryStartIconButton_Disabled_InDarkTheme() { + TangemTheme(isDarkTheme = true) { + PrimaryStartIconButton( + text = "Manage tokens", + iconResId = R.drawable.ic_tangem, + enabled = false, + onClicked = {}, + ) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryEndIconButton_Enabled_InLightTheme() { + TangemTheme(isDarkTheme = false) { + PrimaryEndIconButton(text = "Manage tokens", iconResId = R.drawable.ic_tangem, enabled = true, onClicked = {}) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryEndIconButton_Enabled_InDarkTheme() { + TangemTheme(isDarkTheme = true) { + PrimaryEndIconButton(text = "Manage tokens", iconResId = R.drawable.ic_tangem, enabled = true, onClicked = {}) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryEndIconButton_Disabled_InLightTheme() { + TangemTheme(isDarkTheme = false) { + PrimaryEndIconButton(text = "Manage tokens", iconResId = R.drawable.ic_tangem, enabled = false, onClicked = {}) + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_PrimaryEndIconButton_Disabled_InDarkTheme() { + TangemTheme(isDarkTheme = true) { + PrimaryEndIconButton(text = "Manage tokens", iconResId = R.drawable.ic_tangem, enabled = false, onClicked = {}) + } +} + +/** + * Primary button with an icon at the beginning of the layout + * + * @param text button text + * @param iconResId button icon res id + * @param enabled controls the enabled state of the button + * @param onClicked the lambda to be invoked when this button is pressed + * + * @see Figma component + */ +@Composable +fun PrimaryStartIconButton(text: String, @DrawableRes iconResId: Int, enabled: Boolean = true, onClicked: () -> Unit) { + PrimaryButtonRow(enabled = enabled, onClicked = onClicked) { + Icon( + painter = painterResource(id = iconResId), + contentDescription = null, + ) + Spacer(modifier = Modifier.width(dimensionResource(R.dimen.spacing8))) + Text(text = text) + } +} + +/** + * Primary button with an icon at the end of the layout + * + * @param text button text + * @param iconResId button icon res id + * @param enabled controls the enabled state of the button + * @param onClicked the lambda to be invoked when this button is pressed + * + * @see Figma component + */ +@Composable +fun PrimaryEndIconButton(text: String, @DrawableRes iconResId: Int, enabled: Boolean = true, onClicked: () -> Unit) { + PrimaryButtonRow(enabled = enabled, onClicked = onClicked) { + Text(text = text) + Spacer(modifier = Modifier.width(dimensionResource(R.dimen.spacing8))) + Icon( + painter = painterResource(id = iconResId), + contentDescription = null, + ) + } +} + +@Composable +private fun PrimaryButtonRow(enabled: Boolean, onClicked: () -> Unit, content: @Composable (RowScope.() -> Unit)) { + Button( + onClick = onClicked, + modifier = Modifier + .fillMaxWidth() + .height(dimensionResource(R.dimen.size48)), + enabled = enabled, + shape = RoundedCornerShape(dimensionResource(id = R.dimen.radius12)), + colors = ButtonDefaults.buttonColors( + backgroundColor = MaterialTheme.colors.buttonColor(type = ButtonColorType.PRIMARY), + contentColor = MaterialTheme.colors.textColor(type = TextColorType.PRIMARY2), + disabledBackgroundColor = MaterialTheme.colors.buttonColor(type = ButtonColorType.DISABLED), + disabledContentColor = MaterialTheme.colors.textColor(type = TextColorType.DISABLED), + ), + content = content, + ) +} \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/Cards.kt b/core/ui/src/main/java/com/tangem/core/ui/components/Cards.kt new file mode 100644 index 0000000000..57a47dff46 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/components/Cards.kt @@ -0,0 +1,79 @@ +package com.tangem.core.ui.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.tooling.preview.Preview +import com.tangem.core.ui.R +import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TextColorType +import com.tangem.core.ui.res.textColor + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_SimpleInfoCard_InLightTheme() { + TangemTheme(isDarkTheme = false) { + SmallInfoCard(startText = "Balance", endText = "0.4405434 BTC") + } +} + +@Preview(widthDp = 328, heightDp = 48, showBackground = true) +@Composable +fun Preview_SimpleInfoCard_InDarkTheme() { + TangemTheme(isDarkTheme = true) { + SmallInfoCard(startText = "Balance", endText = "0.4405434 BTC") + } +} + +/** + * Small card with text information attached to the edges + * + * @param startText text information attached to the left edge + * @param endText text information attached to the right edge + * + * @see Figma component + */ +@Composable +fun SmallInfoCard(startText: String, endText: String) { + Surface( + shape = RoundedCornerShape(dimensionResource(id = R.dimen.radius12)), + color = MaterialTheme.colors.secondary, + elevation = dimensionResource(id = R.dimen.elevation2), + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .height(dimensionResource(R.dimen.size48)) + .padding( + horizontal = dimensionResource(id = R.dimen.spacing16), + vertical = dimensionResource(id = R.dimen.spacing12), + ), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = startText, + color = MaterialTheme.colors.textColor(type = TextColorType.TERTIARY), + maxLines = 1, + style = MaterialTheme.typography.subtitle2 + ) + Text( + text = endText, + color = MaterialTheme.colors.textColor(type = TextColorType.PRIMARY1), + maxLines = 1, + style = MaterialTheme.typography.body2 + ) + } + } +} \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/ButtonColor.kt b/core/ui/src/main/java/com/tangem/core/ui/res/ButtonColor.kt new file mode 100644 index 0000000000..cb6607c8a3 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/res/ButtonColor.kt @@ -0,0 +1,16 @@ +package com.tangem.core.ui.res + +import androidx.compose.material.Colors +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color + +enum class ButtonColorType(val lightColor: Color, val darkColor: Color) { + PRIMARY(lightColor = Dark6, darkColor = Light1), + SECONDARY(lightColor = Light2, darkColor = Dark5), + DISABLED(lightColor = Light2, darkColor = Dark6), + POSITIVE(lightColor = Meadow, darkColor = Meadow), + POSITIVE_DISABLED(lightColor = MagicMint, darkColor = DarkGreen) +} + +@Composable +fun Colors.buttonColor(type: ButtonColorType): Color = if (isSystemInDarkTheme) type.darkColor else type.lightColor \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/Color.kt b/core/ui/src/main/java/com/tangem/core/ui/res/Color.kt new file mode 100644 index 0000000000..4d37ecee45 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/res/Color.kt @@ -0,0 +1,45 @@ +package com.tangem.core.ui.res + +import androidx.compose.ui.graphics.Color + +// region Base +val Black = Color(0xFF000000) +val White = Color(0xFFFFFFFF) +// endregion Base + +// region Dark +val Dark1 = Color(0xFF919191) +val Dark2 = Color(0xFF656565) +val Dark3 = Color(0xFF494949) +val Dark4 = Color(0xFF3B3B3B) +val Dark5 = Color(0xFF303030) +val Dark6 = Color(0xFF1E1E1E) +// endregion Dark + +// region Light +val Light1 = Color(0xFFF5F5F5) +val Light2 = Color(0xFFEBEBEB) +val Light3 = Color(0xFFD3D3D3) +val Light4 = Color(0xFFC9C9C9) +val Light5 = Color(0xFFB0B0B0) +// endregion Light + +// region Green +val Meadow = Color(0xFF1ACE80) +val MagicMint = Color(0xFFA3EBCC) +val DarkGreen = Color(0xFF06311F) +// endregion Green + +// region Blue +val Cobalt = Color(0xFF0029FF) +val Azure = Color(0xFF007AFF) +// endregion Blue + +// region Red +val Amaranth = Color(0xFFDE1010) +val Flamingo = Color(0xFFED7979) +// endregion Red + +// region Yellow +val Tangerine = Color(0xFFFFB71B) +// endregion Yellow \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt new file mode 100644 index 0000000000..2e065ba6ee --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt @@ -0,0 +1,46 @@ +package com.tangem.core.ui.res + +import androidx.compose.material.MaterialTheme +import androidx.compose.material.darkColors +import androidx.compose.material.lightColors +import androidx.compose.runtime.Composable + +internal val isSystemInDarkTheme: Boolean = false // TODO: use isSystemInDarkTheme() for automatic color detection + +@Composable +fun TangemTheme( + isDarkTheme: Boolean = isSystemInDarkTheme, + content: @Composable () -> Unit, +) { + MaterialTheme( + colors = if (isDarkTheme) DarkColors else LightColors, + typography = TangemTypography, + content = content, + ) +} + +private val LightColors = lightColors( + primary = Light1, + primaryVariant = Light1, + secondary = White, + background = Light1, + surface = White, + error = Amaranth, + onPrimary = Dark6, + onSecondary = Dark6, + onBackground = Dark6, + onSurface = Dark6, +) + +private val DarkColors = darkColors( + primary = Black, + primaryVariant = Black, + secondary = Dark6, + background = Black, + surface = Dark6, + error = Amaranth, + onPrimary = White, + onSecondary = White, + onBackground = White, + onSurface = White, +) \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography.kt new file mode 100644 index 0000000000..89ec283924 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography.kt @@ -0,0 +1,82 @@ +package com.tangem.core.ui.res + +import androidx.compose.material.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.ExperimentalUnitApi +import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.unit.TextUnitType +import androidx.compose.ui.unit.sp +import com.tangem.core.ui.R + +private val RobotoFamily = FontFamily( + Font(R.font.roboto_regular, FontWeight.Normal), + Font(R.font.roboto_medium, FontWeight.Medium), +) + +@OptIn(ExperimentalUnitApi::class) +val TangemTypography = Typography( + defaultFontFamily = RobotoFamily, + h1 = TextStyle( + fontSize = 34.sp, + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(0f, TextUnitType.Sp), + lineHeight = TextUnit(44f, TextUnitType.Sp), + ), + h2 = TextStyle( + fontSize = 24.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(0.18f, TextUnitType.Sp), + lineHeight = TextUnit(32f, TextUnitType.Sp), + ), + h3 = TextStyle( + fontSize = 20.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(0.15f, TextUnitType.Sp), + lineHeight = TextUnit(24f, TextUnitType.Sp), + ), + subtitle1 = TextStyle( + fontSize = 16.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(0.15f, TextUnitType.Sp), + lineHeight = TextUnit(24f, TextUnitType.Sp), + ), + subtitle2 = TextStyle( + fontSize = 14.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(0.5f, TextUnitType.Sp), + lineHeight = TextUnit(24f, TextUnitType.Sp), + ), + body1 = TextStyle( + fontSize = 16.sp, + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(0.5f, TextUnitType.Sp), + lineHeight = TextUnit(24f, TextUnitType.Sp), + ), + body2 = TextStyle( + fontSize = 14.sp, + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(0.25f, TextUnitType.Sp), + lineHeight = TextUnit(20f, TextUnitType.Sp), + ), + button = TextStyle( + fontSize = 14.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(0.1f, TextUnitType.Sp), + lineHeight = TextUnit(16f, TextUnitType.Sp), + ), + caption = TextStyle( + fontSize = 12.sp, + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(0.4f, TextUnitType.Sp), + lineHeight = TextUnit(16f, TextUnitType.Sp), + ), + overline = TextStyle( + fontSize = 10.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(1.5f, TextUnitType.Sp), + lineHeight = TextUnit(16f, TextUnitType.Sp), + ), +) \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TextColor.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TextColor.kt new file mode 100644 index 0000000000..44f94e1157 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TextColor.kt @@ -0,0 +1,20 @@ +package com.tangem.core.ui.res + +import androidx.compose.material.Colors +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color + +enum class TextColorType(val lightColor: Color, val darkColor: Color) { + PRIMARY1(lightColor = Dark6, darkColor = White), + PRIMARY2(lightColor = White, darkColor = Dark6), + SECONDARY(lightColor = Dark2, darkColor = Light5), + TERTIARY(lightColor = Dark1, darkColor = Dark1), + DISABLED(lightColor = Light4, darkColor = Dark3), + ACCENT(lightColor = Meadow, darkColor = Meadow), + WARNING(lightColor = Amaranth, darkColor = Amaranth), + ATTENTION(lightColor = Tangerine, darkColor = Tangerine), + CONSTANT_WHITE(lightColor = White, darkColor = White) +} + +@Composable +fun Colors.textColor(type: TextColorType): Color = if (isSystemInDarkTheme) type.darkColor else type.lightColor \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_back.xml b/core/ui/src/main/res/drawable/ic_back.xml similarity index 100% rename from app/src/main/res/drawable/ic_back.xml rename to core/ui/src/main/res/drawable/ic_back.xml diff --git a/app/src/main/res/drawable/ic_tangem.xml b/core/ui/src/main/res/drawable/ic_tangem.xml similarity index 100% rename from app/src/main/res/drawable/ic_tangem.xml rename to core/ui/src/main/res/drawable/ic_tangem.xml diff --git a/core/ui/src/main/res/drawable/ill_businessman_3d.webp b/core/ui/src/main/res/drawable/ill_businessman_3d.webp new file mode 100644 index 0000000000..a018c1b5bb Binary files /dev/null and b/core/ui/src/main/res/drawable/ill_businessman_3d.webp differ diff --git a/core/ui/src/main/res/font/roboto_medium.ttf b/core/ui/src/main/res/font/roboto_medium.ttf new file mode 100644 index 0000000000..ac0f908b9c Binary files /dev/null and b/core/ui/src/main/res/font/roboto_medium.ttf differ diff --git a/core/ui/src/main/res/font/roboto_regular.ttf b/core/ui/src/main/res/font/roboto_regular.ttf new file mode 100644 index 0000000000..ddf4bfacb3 Binary files /dev/null and b/core/ui/src/main/res/font/roboto_regular.ttf differ diff --git a/core/ui/src/main/res/values/dimens.xml b/core/ui/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..cd873bfb37 --- /dev/null +++ b/core/ui/src/main/res/values/dimens.xml @@ -0,0 +1,31 @@ + + + + 1dp + 2dp + 3dp + 4dp + 6dp + 8dp + 12dp + 16dp + 24dp + + + + 12dp + + + + 24dp + 48dp + 200dp + + + + 8dp + 12dp + 16dp + 24dp + + \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 05eaab6228..5387734770 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,8 +2,15 @@ include(":app") include(":domain") include(":network") include(":common") + +// region Core modules include(":core:datasource") include(":core:utils") +include(":core:ui") +// endregion Core modules + +// region Feature modules include(":features:referral:data") include(":features:referral:domain") -include(":features:referral:presentation") \ No newline at end of file +include(":features:referral:presentation") +// endregion Feature modules \ No newline at end of file