diff --git a/core/designsystem/src/main/res/drawable/icon_arrow_down.xml b/core/designsystem/src/main/res/drawable/icon_arrow_down.xml index 565681688..2eb360295 100644 --- a/core/designsystem/src/main/res/drawable/icon_arrow_down.xml +++ b/core/designsystem/src/main/res/drawable/icon_arrow_down.xml @@ -3,12 +3,10 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + diff --git a/core/designsystem/src/main/res/drawable/icon_arrow_left.xml b/core/designsystem/src/main/res/drawable/icon_arrow_left.xml index 8b7cd18e5..fcc9a317a 100644 --- a/core/designsystem/src/main/res/drawable/icon_arrow_left.xml +++ b/core/designsystem/src/main/res/drawable/icon_arrow_left.xml @@ -4,7 +4,9 @@ android:viewportWidth="28" android:viewportHeight="28"> + android:pathData="M18,5L10.236,13.734C10.101,13.886 10.101,14.114 10.236,14.266L18,23" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="#3C3E48" + android:strokeLineCap="round"/> diff --git a/core/designsystem/src/main/res/drawable/icon_arrow_right.xml b/core/designsystem/src/main/res/drawable/icon_arrow_right.xml index a9554864c..e1230861b 100644 --- a/core/designsystem/src/main/res/drawable/icon_arrow_right.xml +++ b/core/designsystem/src/main/res/drawable/icon_arrow_right.xml @@ -4,8 +4,7 @@ android:viewportWidth="20" android:viewportHeight="20"> + android:pathData="M20,19V4.4C20,4.179 19.821,4 19.6,4H5" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="#ffffff" + android:strokeLineCap="round"/> + diff --git a/core/designsystem/src/main/res/drawable/icon_bell.xml b/core/designsystem/src/main/res/drawable/icon_bell.xml index 3ceabd966..091fc0db0 100644 --- a/core/designsystem/src/main/res/drawable/icon_bell.xml +++ b/core/designsystem/src/main/res/drawable/icon_bell.xml @@ -4,6 +4,6 @@ android:viewportWidth="28" android:viewportHeight="28"> + android:pathData="M17.374,20.842C17.374,22.586 15.863,24 13.999,24C12.135,24 10.625,22.586 10.625,20.842H17.374ZM23,18.736C23,19.318 22.496,19.789 21.875,19.789H6.125C5.504,19.789 5,19.318 5,18.736V17.684L7.25,15.578V11.368C7.25,8.568 9.197,6.195 11.894,5.367C12.213,4.569 13.034,4 13.999,4C14.964,4 15.785,4.569 16.104,5.367C18.802,6.195 20.75,8.568 20.75,11.368V15.578L23,17.684V18.736Z" + android:fillColor="#74788B"/> diff --git a/core/designsystem/src/main/res/drawable/icon_close.xml b/core/designsystem/src/main/res/drawable/icon_close.xml index 3df3309a2..f191d450c 100644 --- a/core/designsystem/src/main/res/drawable/icon_close.xml +++ b/core/designsystem/src/main/res/drawable/icon_close.xml @@ -1,18 +1,18 @@ + android:width="28dp" + android:height="28dp" + android:viewportWidth="28" + android:viewportHeight="28"> diff --git a/core/designsystem/src/main/res/drawable/icon_download.xml b/core/designsystem/src/main/res/drawable/icon_download.xml index 41b405c47..60c76d56f 100644 --- a/core/designsystem/src/main/res/drawable/icon_download.xml +++ b/core/designsystem/src/main/res/drawable/icon_download.xml @@ -4,6 +4,21 @@ android:viewportWidth="28" android:viewportHeight="28"> + android:pathData="M14,5V17" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="#4F525F" + android:strokeLineCap="round"/> + + diff --git a/core/designsystem/src/main/res/drawable/icon_heart_filled.xml b/core/designsystem/src/main/res/drawable/icon_heart_filled.xml new file mode 100644 index 000000000..eba38f71c --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_heart_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/designsystem/src/main/res/drawable/icon_heart_stroke.xml b/core/designsystem/src/main/res/drawable/icon_heart_stroke.xml deleted file mode 100644 index 1401d4975..000000000 --- a/core/designsystem/src/main/res/drawable/icon_heart_stroke.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/core/designsystem/src/main/res/drawable/icon_heart_stroked.xml b/core/designsystem/src/main/res/drawable/icon_heart_stroked.xml new file mode 100644 index 000000000..12dbcb598 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_heart_stroked.xml @@ -0,0 +1,12 @@ + + + diff --git a/core/designsystem/src/main/res/drawable/icon_plus_primary.xml b/core/designsystem/src/main/res/drawable/icon_plus.xml similarity index 86% rename from core/designsystem/src/main/res/drawable/icon_plus_primary.xml rename to core/designsystem/src/main/res/drawable/icon_plus.xml index 2ecef4836..9d86f2ad5 100644 --- a/core/designsystem/src/main/res/drawable/icon_plus_primary.xml +++ b/core/designsystem/src/main/res/drawable/icon_plus.xml @@ -4,13 +4,13 @@ android:viewportWidth="28" android:viewportHeight="28"> - - diff --git a/core/designsystem/src/main/res/drawable/icon_repeat.xml b/core/designsystem/src/main/res/drawable/icon_repeat.xml new file mode 100644 index 000000000..910e2ed0a --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_repeat.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/core/designsystem/src/main/res/drawable/icon_repeat_recommendation.xml b/core/designsystem/src/main/res/drawable/icon_repeat_recommendation.xml deleted file mode 100644 index 3ac832fea..000000000 --- a/core/designsystem/src/main/res/drawable/icon_repeat_recommendation.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - diff --git a/core/designsystem/src/main/res/drawable/icon_scrap.xml b/core/designsystem/src/main/res/drawable/icon_scrap.xml deleted file mode 100644 index e0900c7e2..000000000 --- a/core/designsystem/src/main/res/drawable/icon_scrap.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/core/designsystem/src/main/res/drawable/icon_scrap_filled.xml b/core/designsystem/src/main/res/drawable/icon_scrap_filled.xml new file mode 100644 index 000000000..2f2380b74 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_scrap_filled.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/core/designsystem/src/main/res/drawable/icon_scrap_stroked.xml b/core/designsystem/src/main/res/drawable/icon_scrap_stroked.xml new file mode 100644 index 000000000..2a6b1caa0 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_scrap_stroked.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/core/designsystem/src/main/res/drawable/icon_scrap_unselected.xml b/core/designsystem/src/main/res/drawable/icon_scrap_unselected.xml deleted file mode 100644 index 02527f67d..000000000 --- a/core/designsystem/src/main/res/drawable/icon_scrap_unselected.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/core/designsystem/src/main/res/drawable/icon_torch_off.xml b/core/designsystem/src/main/res/drawable/icon_torch_off.xml new file mode 100644 index 000000000..2f7005c14 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_torch_off.xml @@ -0,0 +1,10 @@ + + + diff --git a/core/designsystem/src/main/res/drawable/icon_torch_on.xml b/core/designsystem/src/main/res/drawable/icon_torch_on.xml new file mode 100644 index 000000000..a2b7ff52f --- /dev/null +++ b/core/designsystem/src/main/res/drawable/icon_torch_on.xml @@ -0,0 +1,15 @@ + + + + diff --git a/core/designsystem/src/main/res/drawable/icon_trash.xml b/core/designsystem/src/main/res/drawable/icon_trash.xml index 6fd96ee8e..69723778d 100644 --- a/core/designsystem/src/main/res/drawable/icon_trash.xml +++ b/core/designsystem/src/main/res/drawable/icon_trash.xml @@ -4,6 +4,19 @@ android:viewportWidth="28" android:viewportHeight="28"> + android:pathData="M4.667,7H23.334" + android:strokeWidth="2.33333" + android:fillColor="#00000000" + android:strokeColor="#4F525F" + android:strokeLineCap="round"/> + + diff --git a/core/ui/src/main/java/com/neki/android/core/ui/component/AlbumRowComponent.kt b/core/ui/src/main/java/com/neki/android/core/ui/component/AlbumRowComponent.kt index c48cc51b1..ac9141969 100644 --- a/core/ui/src/main/java/com/neki/android/core/ui/component/AlbumRowComponent.kt +++ b/core/ui/src/main/java/com/neki/android/core/ui/component/AlbumRowComponent.kt @@ -111,7 +111,7 @@ private fun FavoriteAlbumThumbnail( Icon( modifier = Modifier.size(20.dp), - imageVector = ImageVector.vectorResource(R.drawable.icon_heart), + imageVector = ImageVector.vectorResource(R.drawable.icon_heart_filled), contentDescription = null, tint = NekiTheme.colorScheme.white, ) diff --git a/core/ui/src/main/java/com/neki/android/core/ui/component/FilterBar.kt b/core/ui/src/main/java/com/neki/android/core/ui/component/FilterBar.kt index eab33be43..a36067187 100644 --- a/core/ui/src/main/java/com/neki/android/core/ui/component/FilterBar.kt +++ b/core/ui/src/main/java/com/neki/android/core/ui/component/FilterBar.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Icon import androidx.compose.material3.Text @@ -86,6 +87,7 @@ private fun DownIconFilterChip( else NekiTheme.colorScheme.gray700, ) Icon( + modifier = Modifier.size(20.dp), imageVector = ImageVector.vectorResource(R.drawable.icon_arrow_down), contentDescription = null, tint = NekiTheme.colorScheme.gray400, diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/component/SelectablePhotoItem.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/component/SelectablePhotoItem.kt index f5ce6067b..41e761506 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/component/SelectablePhotoItem.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/component/SelectablePhotoItem.kt @@ -66,7 +66,7 @@ internal fun SelectablePhotoItem( .align(Alignment.TopEnd) .padding(top = 10.dp, end = 10.dp) .size(20.dp), - imageVector = ImageVector.vectorResource(R.drawable.icon_heart), + imageVector = ImageVector.vectorResource(R.drawable.icon_heart_filled), contentDescription = null, tint = NekiTheme.colorScheme.white, ) diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/AlbumTitleRow.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/AlbumTitleRow.kt index 3f3568390..9d3d8e6ad 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/AlbumTitleRow.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/AlbumTitleRow.kt @@ -44,10 +44,10 @@ internal fun AlbumTitleRow( color = NekiTheme.colorScheme.gray500, ) Icon( + modifier = Modifier.size(20.dp), imageVector = ImageVector.vectorResource(R.drawable.icon_arrow_right), contentDescription = null, tint = NekiTheme.colorScheme.gray500, - modifier = Modifier.size(20.dp), ) } } diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainAlbumList.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainAlbumList.kt index f812bff67..51cd6dc99 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainAlbumList.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainAlbumList.kt @@ -250,7 +250,7 @@ private fun AlbumFolder( ) { Icon( modifier = Modifier.size(12.dp), - imageVector = ImageVector.vectorResource(R.drawable.icon_heart), + imageVector = ImageVector.vectorResource(R.drawable.icon_heart_filled), contentDescription = null, tint = NekiTheme.colorScheme.white, ) diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainPhotoItem.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainPhotoItem.kt index 375b9d3ee..14b36cc0d 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainPhotoItem.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainPhotoItem.kt @@ -43,7 +43,7 @@ internal fun ArchiveMainPhotoItem( .align(Alignment.TopEnd) .padding(top = 10.dp, end = 10.dp) .size(20.dp), - imageVector = ImageVector.vectorResource(R.drawable.icon_heart), + imageVector = ImageVector.vectorResource(R.drawable.icon_heart_filled), contentDescription = null, tint = NekiTheme.colorScheme.white, ) diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTitleRow.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTitleRow.kt index e3a790323..1299f9c18 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTitleRow.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTitleRow.kt @@ -48,10 +48,10 @@ internal fun ArchiveMainTitleRow( color = NekiTheme.colorScheme.gray500, ) Icon( + modifier = Modifier.size(20.dp), imageVector = ImageVector.vectorResource(R.drawable.icon_arrow_right), contentDescription = null, tint = NekiTheme.colorScheme.gray500, - modifier = Modifier.size(20.dp), ) } } diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTopBar.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTopBar.kt index 7b1629d81..443d40050 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTopBar.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/main/component/ArchiveMainTopBar.kt @@ -8,6 +8,7 @@ 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.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.HorizontalDivider @@ -60,9 +61,10 @@ internal fun ArchiveMainTopBar( onClick = onClickPlusIcon, ) { Icon( - imageVector = ImageVector.vectorResource(R.drawable.icon_plus_primary), + modifier = Modifier.size(28.dp), + imageVector = ImageVector.vectorResource(R.drawable.icon_plus), contentDescription = null, - tint = Color.Unspecified, + tint = NekiTheme.colorScheme.primary400, ) } diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/photo_detail/component/PhotoDetailActionBar.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/photo_detail/component/PhotoDetailActionBar.kt index 842e85689..4ed8f8da4 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/photo_detail/component/PhotoDetailActionBar.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/photo_detail/component/PhotoDetailActionBar.kt @@ -9,7 +9,6 @@ import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp @@ -49,13 +48,16 @@ internal fun PhotoDetailActionBar( modifier = Modifier .size(28.dp) .noRippleClickable { onClickFavorite() }, - imageVector = if (isFavorite) { - ImageVector.vectorResource(R.drawable.icon_heart) + imageVector = ImageVector.vectorResource( + if (isFavorite) R.drawable.icon_heart_filled + else R.drawable.icon_heart_stroked, + ), + contentDescription = null, + tint = if (isFavorite) { + NekiTheme.colorScheme.primary400 } else { - ImageVector.vectorResource(R.drawable.icon_heart_stroke) + NekiTheme.colorScheme.gray700 }, - contentDescription = null, - tint = Color.Unspecified, ) } diff --git a/feature/photo-upload/impl/src/main/java/com/neki/android/feature/photo_upload/impl/qrscan/component/QRScannerContent.kt b/feature/photo-upload/impl/src/main/java/com/neki/android/feature/photo_upload/impl/qrscan/component/QRScannerContent.kt index 047246e6e..40c3b1513 100644 --- a/feature/photo-upload/impl/src/main/java/com/neki/android/feature/photo_upload/impl/qrscan/component/QRScannerContent.kt +++ b/feature/photo-upload/impl/src/main/java/com/neki/android/feature/photo_upload/impl/qrscan/component/QRScannerContent.kt @@ -122,7 +122,7 @@ internal fun QRScannerContent( modifier = Modifier.size(24.dp), imageVector = ImageVector.vectorResource(R.drawable.icon_close), contentDescription = null, - tint = Color.White, + tint = NekiTheme.colorScheme.white, ) } } @@ -170,7 +170,10 @@ internal fun QRScannerContent( onClick = { onIntent(QRScanIntent.ToggleTorch) }, ) { Icon( - imageVector = ImageVector.vectorResource(R.drawable.icon_qr_light), + imageVector = ImageVector.vectorResource( + if (isTorchEnabled) R.drawable.icon_torch_on + else R.drawable.icon_torch_off, + ), contentDescription = null, tint = if (isTorchEnabled) Color.Black else Color.White, ) diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailScreen.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailScreen.kt index 7e2059b8c..113c37264 100644 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailScreen.kt +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailScreen.kt @@ -45,6 +45,7 @@ internal fun PoseDetailRoute( is PoseDetailSideEffect.ShowToast -> { nekiToast.showToast(sideEffect.message) } + is PoseDetailSideEffect.NotifyScrapChanged -> { resultEventBus.sendResult( result = PoseResult.ScrapChanged(sideEffect.poseId, sideEffect.isScrapped), @@ -94,11 +95,12 @@ internal fun PoseDetailScreen( ) { Icon( imageVector = ImageVector.vectorResource( - if (uiState.pose.isScrapped) R.drawable.icon_scrap - else R.drawable.icon_scrap_unselected, + if (uiState.pose.isScrapped) R.drawable.icon_scrap_filled + else R.drawable.icon_scrap_stroked, ), contentDescription = null, - tint = NekiTheme.colorScheme.gray500, + tint = if (uiState.pose.isScrapped) NekiTheme.colorScheme.gray900 + else NekiTheme.colorScheme.gray500, ) } } diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseScreen.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseScreen.kt index e752c235f..8f1192cc3 100644 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseScreen.kt +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseScreen.kt @@ -28,7 +28,7 @@ import com.neki.android.core.model.PeopleCount import com.neki.android.core.model.Pose import com.neki.android.core.ui.compose.collectWithLifecycle import com.neki.android.feature.pose.impl.const.PoseConst.POSE_LAYOUT_DEFAULT_TOP_PADDING -import com.neki.android.feature.pose.impl.main.component.FilterBar +import com.neki.android.feature.pose.impl.main.component.PoseFilterBar import com.neki.android.feature.pose.impl.main.component.PeopleCountBottomSheet import com.neki.android.core.ui.component.LoadingDialog import com.neki.android.feature.pose.impl.main.component.PoseListContent @@ -157,7 +157,7 @@ fun PoseContent( state = lazyState, onClickItem = onClickPoseItem, ) - FilterBar( + PoseFilterBar( modifier = Modifier .onSizeChanged { size -> if (filterBarHeightPx != 0) return@onSizeChanged diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/FilterBar.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/FilterBar.kt deleted file mode 100644 index 621ff146a..000000000 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/FilterBar.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.neki.android.feature.pose.impl.main.component - -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.expandVertically -import androidx.compose.animation.shrinkVertically -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.unit.dp -import com.neki.android.core.designsystem.ComponentPreview -import com.neki.android.core.designsystem.R -import com.neki.android.core.designsystem.modifier.noRippleClickable -import com.neki.android.core.designsystem.ui.theme.NekiTheme -import com.neki.android.core.model.PeopleCount - -@Composable -internal fun FilterBar( - peopleCount: PeopleCount?, - isScrapSelected: Boolean, - modifier: Modifier = Modifier, - visible: Boolean = true, - onClickPeopleCount: () -> Unit = {}, - onClickScrap: () -> Unit = {}, -) { - AnimatedVisibility( - modifier = modifier - .background(NekiTheme.colorScheme.white) - .fillMaxWidth(), - visible = visible, - enter = expandVertically(), - exit = shrinkVertically(), - ) { - Row( - modifier = Modifier.padding(vertical = 4.dp, horizontal = 20.dp), - horizontalArrangement = Arrangement.spacedBy(6.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - PeopleCountFilter( - peopleCount = peopleCount, - onClick = onClickPeopleCount, - ) - ScrapFilter( - isSelected = isScrapSelected, - onClick = onClickScrap, - ) - } - } -} - -@Composable -private fun PeopleCountFilter( - modifier: Modifier = Modifier, - peopleCount: PeopleCount? = null, - onClick: () -> Unit = {}, -) { - val isSelected by remember(peopleCount) { derivedStateOf { peopleCount != null } } - Row( - modifier = modifier - .background( - shape = CircleShape, - color = if (isSelected) NekiTheme.colorScheme.gray800 - else NekiTheme.colorScheme.gray50, - ) - .padding(vertical = 7.dp, horizontal = 12.dp) - .noRippleClickable(onClick = onClick), - horizontalArrangement = Arrangement.spacedBy(2.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = peopleCount?.displayText ?: "인원수", - style = NekiTheme.typography.body14Medium, - color = if (isSelected) NekiTheme.colorScheme.white - else NekiTheme.colorScheme.gray700, - ) - Icon( - imageVector = ImageVector.vectorResource(R.drawable.icon_arrow_down), - contentDescription = null, - tint = NekiTheme.colorScheme.gray400, - ) - } -} - -@Composable -private fun ScrapFilter( - modifier: Modifier = Modifier, - isSelected: Boolean = false, - onClick: () -> Unit = {}, -) { - Text( - modifier = modifier - .background( - shape = CircleShape, - color = if (isSelected) NekiTheme.colorScheme.gray800 - else NekiTheme.colorScheme.gray50, - ) - .padding(vertical = 7.dp, horizontal = 12.dp) - .noRippleClickable(onClick = onClick), - text = "스크랩", - style = NekiTheme.typography.body14Medium, - color = if (isSelected) NekiTheme.colorScheme.white - else NekiTheme.colorScheme.gray700, - ) -} - -@ComponentPreview -@Composable -private fun FilterBarPreview() { - NekiTheme { - FilterBar( - peopleCount = null, - isScrapSelected = false, - ) - } -} diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseFilterBar.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseFilterBar.kt new file mode 100644 index 000000000..cfd8fa773 --- /dev/null +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseFilterBar.kt @@ -0,0 +1,40 @@ +package com.neki.android.feature.pose.impl.main.component + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.neki.android.core.designsystem.ComponentPreview +import com.neki.android.core.designsystem.ui.theme.NekiTheme +import com.neki.android.core.model.PeopleCount +import com.neki.android.core.ui.component.FilterBar + +@Composable +internal fun PoseFilterBar( + peopleCount: PeopleCount?, + isScrapSelected: Boolean, + modifier: Modifier = Modifier, + visible: Boolean = true, + onClickPeopleCount: () -> Unit = {}, + onClickScrap: () -> Unit = {}, +) { + FilterBar( + isDownIconChipSelected = peopleCount != null, + isDefaultChipSelected = isScrapSelected, + downIconChipDisplayText = peopleCount?.displayText ?: "인원수", + defaultChipDisplayText = "스크랩", + modifier = modifier, + visible = visible, + onClickDownIconChip = onClickPeopleCount, + onClickDefaultChip = onClickScrap, + ) +} + +@ComponentPreview +@Composable +private fun PoseFilterBarPreview() { + NekiTheme { + PoseFilterBar( + peopleCount = null, + isScrapSelected = false, + ) + } +} diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseListContent.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseListContent.kt index 383c76065..19e11d78a 100644 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseListContent.kt +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseListContent.kt @@ -94,7 +94,7 @@ private fun PoseItem( .align(Alignment.TopEnd) .padding(top = 10.dp, end = 10.dp) .size(20.dp), - imageVector = ImageVector.vectorResource(R.drawable.icon_scrap), + imageVector = ImageVector.vectorResource(R.drawable.icon_scrap_filled), contentDescription = null, tint = NekiTheme.colorScheme.white, ) diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/RecommendationChip.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/RecommendationChip.kt index ad1e724d7..35c2c8cbe 100644 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/RecommendationChip.kt +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/RecommendationChip.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.background 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.foundation.shape.CircleShape import androidx.compose.material3.Icon import androidx.compose.material3.Text @@ -11,14 +12,13 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp import com.neki.android.core.designsystem.ComponentPreview +import com.neki.android.core.designsystem.R import com.neki.android.core.designsystem.modifier.clickableSingle import com.neki.android.core.designsystem.ui.theme.NekiTheme -import com.neki.android.core.designsystem.R @Composable internal fun RecommendationChip( @@ -35,9 +35,10 @@ internal fun RecommendationChip( verticalAlignment = Alignment.CenterVertically, ) { Icon( - imageVector = ImageVector.vectorResource(R.drawable.icon_repeat_recommendation), + modifier = Modifier.size(20.dp), + imageVector = ImageVector.vectorResource(R.drawable.icon_repeat), contentDescription = null, - tint = Color.Unspecified, + tint = NekiTheme.colorScheme.primary400, ) Text( text = "랜덤 포즈 추천", diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/component/RandomPoseFloatingBar.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/component/RandomPoseFloatingBar.kt index 9cf25d328..824f44374 100644 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/component/RandomPoseFloatingBar.kt +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/component/RandomPoseFloatingBar.kt @@ -135,8 +135,8 @@ private fun RandomPoseFloatingBar( Icon( modifier = Modifier.size(24.dp), imageVector = ImageVector.vectorResource( - if (isScrapped) R.drawable.icon_scrap - else R.drawable.icon_scrap_unselected, + if (isScrapped) R.drawable.icon_scrap_filled + else R.drawable.icon_scrap_stroked, ), contentDescription = "스크랩", tint = NekiTheme.colorScheme.white,