Use color from theme and improve preview of EmojiItem

This commit is contained in:
Benoit Marty
2026-07-07 14:24:52 +02:00
parent 2902549a88
commit 387022a9af
2 changed files with 33 additions and 21 deletions
@@ -18,6 +18,7 @@ import androidx.compose.foundation.interaction.PressInteraction
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.layout.sizeIn
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
@@ -56,6 +57,7 @@ import io.element.android.features.messages.impl.timeline.components.customreact
import io.element.android.features.messages.impl.timeline.components.customreaction.picker.SkinTonePicker import io.element.android.features.messages.impl.timeline.components.customreaction.picker.SkinTonePicker
import io.element.android.features.messages.impl.timeline.components.customreaction.picker.SkinToneSlotSize import io.element.android.features.messages.impl.timeline.components.customreaction.picker.SkinToneSlotSize
import io.element.android.features.messages.impl.timeline.components.customreaction.picker.SkinToneSlotSpacing import io.element.android.features.messages.impl.timeline.components.customreaction.picker.SkinToneSlotSpacing
import io.element.android.features.messages.impl.timeline.components.customreaction.picker.aSkinList
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
@@ -219,6 +221,7 @@ fun EmojiItem(
style = LocalTextStyle.current.copy(fontSize = emojiSize), style = LocalTextStyle.current.copy(fontSize = emojiSize),
) )
if (hasSkinTones) { if (hasSkinTones) {
val pickerIndicatorColor = ElementTheme.colors.borderInteractivePrimary
Canvas( Canvas(
modifier = Modifier modifier = Modifier
.align(Alignment.BottomEnd) .align(Alignment.BottomEnd)
@@ -230,7 +233,7 @@ fun EmojiItem(
lineTo(0f, size.height) lineTo(0f, size.height)
close() close()
} }
drawPath(path, color = Color.Gray.copy(alpha = 0.5f), style = Fill) drawPath(path, color = pickerIndicatorColor, style = Fill)
} }
} }
@@ -260,21 +263,28 @@ fun EmojiItem(
@Composable @Composable
internal fun EmojiItemPreview() = ElementPreview { internal fun EmojiItemPreview() = ElementPreview {
Row( Row(
modifier = Modifier.padding(4.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp),
) { ) {
for (isSelected in listOf(true, false)) { for (isSelected in listOf(false, true)) {
EmojiItem( for (skinList in listOf(persistentListOf(), aSkinList())) {
item = Emoji( val hasSelectedSkinValues = if (skinList.isNotEmpty()) listOf(false, true) else listOf(false)
hexcode = "", for (hasSelectedSkin in hasSelectedSkinValues) {
label = "", EmojiItem(
tags = null, item = Emoji(
shortcodes = persistentListOf(), hexcode = "",
unicode = "👍", label = "",
skins = null tags = null,
), shortcodes = persistentListOf(),
isSelected = isSelected, unicode = "👍",
onSelectEmoji = {}, skins = skinList,
) ),
isSelected = isSelected,
onSelectEmoji = {},
hasSelectedSkin = hasSelectedSkin,
)
}
}
} }
} }
} }
@@ -120,14 +120,16 @@ internal fun SkinTonePickerPreview() = ElementPreview {
tags = null, tags = null,
shortcodes = persistentListOf("+1", "thumbsup"), shortcodes = persistentListOf("+1", "thumbsup"),
unicode = "👍", unicode = "👍",
skins = persistentListOf( skins = aSkinList(),
EmojiSkin("1F44D-1F3FB", "thumbs up: light skin tone", "👍🏻"),
EmojiSkin("1F44D-1F3FC", "thumbs up: medium-light skin tone", "👍🏼"),
EmojiSkin("1F44D-1F3FD", "thumbs up: medium skin tone", "👍🏽"),
EmojiSkin("1F44D-1F3FE", "thumbs up: medium-dark skin tone", "👍🏾"),
EmojiSkin("1F44D-1F3FF", "thumbs up: dark skin tone", "👍🏿"),
),
), ),
onSelect = {}, onSelect = {},
) )
} }
internal fun aSkinList() = persistentListOf(
EmojiSkin("1F44D-1F3FB", "thumbs up: light skin tone", "👍🏻"),
EmojiSkin("1F44D-1F3FC", "thumbs up: medium-light skin tone", "👍🏼"),
EmojiSkin("1F44D-1F3FD", "thumbs up: medium skin tone", "👍🏽"),
EmojiSkin("1F44D-1F3FE", "thumbs up: medium-dark skin tone", "👍🏾"),
EmojiSkin("1F44D-1F3FF", "thumbs up: dark skin tone", "👍🏿"),
)