Loading core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/ThemeSizes.kt +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ data class ThemeSizes( val iconSmall: Dp, val icon: Dp, val iconLarge: Dp, val iconAvatar: Dp, val topBarHeight: Dp, val bottomBarHeight: Dp, Loading core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/default/DefaultThemeSizes.kt +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ val defaultThemeSizes = ThemeSizes( iconSmall = 16.dp, icon = 24.dp, iconLarge = 32.dp, iconAvatar = 48.dp, topBarHeight = 64.dp, bottomBarHeight = 80.dp, Loading feature/navigation/drawer/src/debug/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountAvatarPreview.kt 0 → 100644 +17 −0 Original line number Diff line number Diff line package app.k9mail.feature.navigation.drawer.ui.account import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes import app.k9mail.feature.navigation.drawer.ui.FakeData.DISPLAY_ACCOUNT @Composable @Preview(showBackground = true) fun AccountAvatarPreview() { PreviewWithThemes { AccountAvatar( account = DISPLAY_ACCOUNT, onClick = {}, ) } } feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountAvatar.kt 0 → 100644 +61 −0 Original line number Diff line number Diff line package app.k9mail.feature.navigation.drawer.ui.account import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount @Composable fun AccountAvatar( account: DisplayAccount, onClick: (DisplayAccount) -> Unit, modifier: Modifier = Modifier, ) { val accountColor = calculateAccountColor(account.account.chipColor) Surface( modifier = modifier .size(MainTheme.sizes.iconAvatar) .border(2.dp, accountColor, CircleShape) .padding(2.dp), color = accountColor.copy(alpha = 0.3f), shape = CircleShape, ) { Box( contentAlignment = Alignment.Center, modifier = Modifier .border(2.dp, MainTheme.colors.surfaceContainerLowest, CircleShape) .clickable(onClick = { onClick(account) }), ) { Placeholder( email = account.account.email, ) // TODO: Add image loading } } } @Composable private fun Placeholder( email: String, modifier: Modifier = Modifier, ) { TextTitleMedium( text = extractDomainInitials(email).uppercase(), modifier = modifier, ) } private fun extractDomainInitials(email: String): String { return email.split("@")[1].take(2) } feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountIndicator.kt +1 −9 Original line number Diff line number Diff line Loading @@ -4,29 +4,21 @@ import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.core.ui.compose.theme2.toHarmonizedColor @Composable fun AccountIndicator( accountColor: Int, modifier: Modifier = Modifier, ) { val color = if (accountColor == 0) { MainTheme.colors.primary } else { Color(accountColor).toHarmonizedColor(MainTheme.colors.surface) } Surface( modifier = modifier .width(MainTheme.spacings.half) .defaultMinSize( minHeight = MainTheme.spacings.default, ), color = color, color = calculateAccountColor(accountColor), shape = MainTheme.shapes.medium, ) {} } Loading
core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/ThemeSizes.kt +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ data class ThemeSizes( val iconSmall: Dp, val icon: Dp, val iconLarge: Dp, val iconAvatar: Dp, val topBarHeight: Dp, val bottomBarHeight: Dp, Loading
core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/default/DefaultThemeSizes.kt +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ val defaultThemeSizes = ThemeSizes( iconSmall = 16.dp, icon = 24.dp, iconLarge = 32.dp, iconAvatar = 48.dp, topBarHeight = 64.dp, bottomBarHeight = 80.dp, Loading
feature/navigation/drawer/src/debug/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountAvatarPreview.kt 0 → 100644 +17 −0 Original line number Diff line number Diff line package app.k9mail.feature.navigation.drawer.ui.account import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes import app.k9mail.feature.navigation.drawer.ui.FakeData.DISPLAY_ACCOUNT @Composable @Preview(showBackground = true) fun AccountAvatarPreview() { PreviewWithThemes { AccountAvatar( account = DISPLAY_ACCOUNT, onClick = {}, ) } }
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountAvatar.kt 0 → 100644 +61 −0 Original line number Diff line number Diff line package app.k9mail.feature.navigation.drawer.ui.account import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount @Composable fun AccountAvatar( account: DisplayAccount, onClick: (DisplayAccount) -> Unit, modifier: Modifier = Modifier, ) { val accountColor = calculateAccountColor(account.account.chipColor) Surface( modifier = modifier .size(MainTheme.sizes.iconAvatar) .border(2.dp, accountColor, CircleShape) .padding(2.dp), color = accountColor.copy(alpha = 0.3f), shape = CircleShape, ) { Box( contentAlignment = Alignment.Center, modifier = Modifier .border(2.dp, MainTheme.colors.surfaceContainerLowest, CircleShape) .clickable(onClick = { onClick(account) }), ) { Placeholder( email = account.account.email, ) // TODO: Add image loading } } } @Composable private fun Placeholder( email: String, modifier: Modifier = Modifier, ) { TextTitleMedium( text = extractDomainInitials(email).uppercase(), modifier = modifier, ) } private fun extractDomainInitials(email: String): String { return email.split("@")[1].take(2) }
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountIndicator.kt +1 −9 Original line number Diff line number Diff line Loading @@ -4,29 +4,21 @@ import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.core.ui.compose.theme2.toHarmonizedColor @Composable fun AccountIndicator( accountColor: Int, modifier: Modifier = Modifier, ) { val color = if (accountColor == 0) { MainTheme.colors.primary } else { Color(accountColor).toHarmonizedColor(MainTheme.colors.surface) } Surface( modifier = modifier .width(MainTheme.spacings.half) .defaultMinSize( minHeight = MainTheme.spacings.default, ), color = color, color = calculateAccountColor(accountColor), shape = MainTheme.shapes.medium, ) {} }