From 69b60bb7a24aab11befbb6758d1a5e3b55786519 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sun, 8 Feb 2026 21:47:15 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20PrezelAccordion=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디자인시스템에 아코디언 컴포넌트인 `PrezelAccordion`을 새롭게 추가했습니다. * `AnimatedVisibility`를 이용한 펼치기/접기 애니메이션 구현 * 헤더, 라벨, 콘텐츠 영역을 커스텀할 수 있는 슬롯 구조 적용 * `showDivider` 옵션을 통한 구분선 표시 기능 제공 * 상태별 미리보기(Collapsed, Expanded, Interactive) 추가 --- .../designsystem/component/PrezelAccordion.kt | 273 ++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt new file mode 100644 index 0000000..a5b5252 --- /dev/null +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt @@ -0,0 +1,273 @@ +package com.team.prezel.core.designsystem.component + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.expandVertically +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.shrinkVertically +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Icon +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import com.team.prezel.core.designsystem.R +import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles +import com.team.prezel.core.designsystem.preview.PreviewScaffold +import com.team.prezel.core.designsystem.preview.ThemePreview +import com.team.prezel.core.designsystem.theme.PrezelTheme + +@Composable +fun PrezelAccordion( + modifier: Modifier = Modifier, + expanded: Boolean, + onExpandedChange: (Boolean) -> Unit, + enabled: Boolean = true, + showDivider: Boolean = false, + header: @Composable (expanded: Boolean) -> Unit, + label: @Composable (expanded: Boolean) -> Unit, + content: @Composable () -> Unit, +) { + val rotation by animateFloatAsState( + targetValue = if (expanded) 180f else 0f, + label = "accordionChevronRotation", + ) + + Surface( + modifier = modifier, + color = Color.Transparent, + ) { + Column { + PrezelAccordionHeader( + enabled = enabled, + onClick = { onExpandedChange(!expanded) }, + header = { header(expanded) }, + label = { label(expanded) }, + chevron = { PrezelAccordionChevron(rotation = rotation) }, + ) + + PrezelAccordionDivider(showDivider = showDivider) + + PrezelAccordionContent( + expanded = expanded, + content = content, + ) + } + } +} + +@Composable +private fun PrezelAccordionHeader( + enabled: Boolean, + onClick: () -> Unit, + header: @Composable () -> Unit, + label: @Composable () -> Unit, + chevron: @Composable () -> Unit, +) { + Row( + modifier = Modifier + .fillMaxWidth() + .defaultMinSize(minHeight = 48.dp) + .clickable( + enabled = enabled, + indication = null, + interactionSource = remember { MutableInteractionSource() }, + onClick = onClick, + ), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = Modifier + .weight(1f) + ) { + header() + } + Spacer(Modifier.width(8.dp)) + + label() + + Spacer(Modifier.width(8.dp)) + + chevron() + } +} + +@Composable +private fun PrezelAccordionChevron(rotation: Float) { + Icon( + painter = painterResource(R.drawable.core_designsystem_ic_chevron_down), + contentDescription = null, + modifier = Modifier + .size(24.dp) + .rotate(rotation), + tint = PrezelTheme.colors.iconRegular, + ) +} + +@Composable +private fun PrezelAccordionDivider(showDivider: Boolean) { + if (!showDivider) return + + PrezelHorizontalDivider( + type = PrezelDividerType.THICK, + color = PrezelTheme.colors.borderSmall, + ) +} + +@Composable +private fun PrezelAccordionContent( + expanded: Boolean, + content: @Composable () -> Unit, +) { + AnimatedVisibility( + visible = expanded, + enter = fadeIn() + expandVertically(), + exit = fadeOut() + shrinkVertically(), + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(12.dp), + ) { + content() + } + } +} + +@ThemePreview +@Composable +private fun PrezelAccordionPreview_Collapsed() { + PrezelTheme { + PreviewScaffold { + PrezelAccordion( + expanded = false, + onExpandedChange = {}, + showDivider = true, + header = { + Text( + text = "Title", + style = PrezelTextStyles.Body2Medium.toTextStyle(), + color = PrezelTheme.colors.textLarge, + ) + }, + label = { + Text( + text = "Label", + style = PrezelTextStyles.Body2Bold.toTextStyle(), + color = PrezelTheme.colors.interactiveRegular, + ) + }, + ) { + Text( + text = "Content", + style = PrezelTextStyles.Body3Regular.toTextStyle(), + color = PrezelTheme.colors.textRegular, + ) + } + } + } +} + +@ThemePreview +@Composable +private fun PrezelAccordionPreview_Expanded() { + PrezelTheme { + PreviewScaffold { + PrezelAccordion( + expanded = true, + onExpandedChange = {}, + showDivider = true, + header = { + Text( + text = "Title", + modifier = Modifier.padding(start = 12.dp), + style = PrezelTextStyles.Body2Medium.toTextStyle(), + color = PrezelTheme.colors.textLarge, + ) + }, + label = { + Text( + text = "Label", + style = PrezelTextStyles.Body2Bold.toTextStyle(), + color = PrezelTheme.colors.interactiveRegular, + ) + }, + ) { + Text( + text = "Content 영역입니다.\n여기에 설명이나 리스트가 들어갑니다.", + style = PrezelTextStyles.Caption2Medium.toTextStyle(), + color = PrezelTheme.colors.textLarge, + ) + } + } + } +} + +@ThemePreview +@Composable +private fun PrezelAccordionPreview_Interactive() { + PrezelTheme { + var expanded by remember { mutableStateOf(false) } + + PreviewScaffold { + PrezelAccordion( + expanded = expanded, + onExpandedChange = { expanded = it }, + showDivider = true, + header = { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + PrezelCheckbox( + checked = false, + size = CheckboxSize.REGULAR, + onCheckedChange = {}, + ) + + Spacer(Modifier.width(4.dp)) + + Text( + text = "(필수) 이용약관", + modifier = Modifier.weight(1f), + style = PrezelTextStyles.Body3Medium.toTextStyle(), + color = PrezelTheme.colors.textLarge, + ) + } + }, + label = { + Text( + text = "자세히 보기", + style = PrezelTextStyles.Caption2Medium.toTextStyle(), + color = PrezelTheme.colors.textMedium, + ) + }, + ) { + Text( + text = "클릭하면 열리고 닫힙니다.", + style = PrezelTextStyles.Caption2Medium.toTextStyle(), + color = PrezelTheme.colors.textLarge, + ) + } + } + } +} From 6046ac426c6ce6a7658db6e64770d660fa6c8aab Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sun, 8 Feb 2026 22:08:13 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=B0=8F=20=EC=8B=A0?= =?UTF-8?q?=EA=B7=9C=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 아이콘 세트를 전반적으로 업데이트하고, 명명 규칙을 통일했습니다. * 신규 아이콘 추가: `Menu`, `Search`, `Upload`, `Lock`, `Storage`, `QuestionCircle` 등 * 기존 아이콘 리팩토링: `Calendar`, `Balloon`, `Check`, `Person`, `Video` 등 벡터 패스 및 색상 수정 * 아이콘 명명 규칙 변경: `WarningCircle` -> `WarningCircleOutlined` 등 형태에 따른 접미사 추가 * `PrezelIcons` 클래스 내 리소스 참조 업데이트 및 신규 아이콘 등록 * 불필요한 아이콘 삭제 (`ic_info`, `ic_warning`) 및 `PrezelAccordion` 코드 스타일 수정 --- .../designsystem/component/PrezelAccordion.kt | 2 +- .../core/designsystem/icon/PrezelIcons.kt | 17 +++++++++++++---- .../drawable/core_designsystem_ic_balloon.xml | 2 +- .../drawable/core_designsystem_ic_calendar.xml | 4 ++-- .../res/drawable/core_designsystem_ic_check.xml | 2 +- .../drawable/core_designsystem_ic_college.xml | 2 +- .../drawable/core_designsystem_ic_company.xml | 2 +- .../res/drawable/core_designsystem_ic_edit.xml | 5 +++-- .../drawable/core_designsystem_ic_gallery.xml | 2 +- .../res/drawable/core_designsystem_ic_hand.xml | 2 +- .../res/drawable/core_designsystem_ic_info.xml | 9 --------- .../core_designsystem_ic_info_circle_filled.xml | 9 +++++++++ ...re_designsystem_ic_info_circle_outlined.xml} | 0 .../res/drawable/core_designsystem_ic_lock.xml | 2 +- .../res/drawable/core_designsystem_ic_menu.xml | 9 +++++++++ .../res/drawable/core_designsystem_ic_mic.xml | 2 +- .../drawable/core_designsystem_ic_person.xml | 5 ++++- ...e_designsystem_ic_question_circle_filled.xml | 9 +++++++++ ...designsystem_ic_question_circle_outlined.xml | 9 +++++++++ .../drawable/core_designsystem_ic_search.xml | 9 +++++++++ .../drawable/core_designsystem_ic_setting.xml | 2 +- .../drawable/core_designsystem_ic_trophy.xml | 2 +- .../drawable/core_designsystem_ic_upload.xml | 9 +++++++++ .../res/drawable/core_designsystem_ic_video.xml | 2 +- .../res/drawable/core_designsystem_ic_voice.xml | 2 +- .../drawable/core_designsystem_ic_warning.xml | 9 --------- ...re_designsystem_ic_warning_circle_filled.xml | 10 ++++++++++ ...designsystem_ic_warning_circle_outlined.xml} | 0 28 files changed, 99 insertions(+), 40 deletions(-) delete mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info.xml create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle_filled.xml rename Prezel/core/designsystem/src/main/res/drawable/{core_designsystem_ic_info_circle.xml => core_designsystem_ic_info_circle_outlined.xml} (100%) create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_menu.xml create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_filled.xml create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_outlined.xml create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_search.xml create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_upload.xml delete mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning.xml create mode 100644 Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle_filled.xml rename Prezel/core/designsystem/src/main/res/drawable/{core_designsystem_ic_warning_circle.xml => core_designsystem_ic_warning_circle_outlined.xml} (100%) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt index a5b5252..f1ff6b5 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt @@ -98,7 +98,7 @@ private fun PrezelAccordionHeader( ) { Box( modifier = Modifier - .weight(1f) + .weight(1f), ) { header() } diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/icon/PrezelIcons.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/icon/PrezelIcons.kt index a6d7d6d..63919d4 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/icon/PrezelIcons.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/icon/PrezelIcons.kt @@ -19,30 +19,39 @@ object PrezelIcons { val ChevronUp = R.drawable.core_designsystem_ic_chevron_up val College = R.drawable.core_designsystem_ic_college val Company = R.drawable.core_designsystem_ic_company + val Edit = R.drawable.core_designsystem_ic_edit val Folder = R.drawable.core_designsystem_ic_folder val Gallery = R.drawable.core_designsystem_ic_gallery val Hand = R.drawable.core_designsystem_ic_hand val Home = R.drawable.core_designsystem_ic_home - val Info = R.drawable.core_designsystem_ic_info - val InfoCircle = R.drawable.core_designsystem_ic_info_circle + val InfoCircleFilled = R.drawable.core_designsystem_ic_info_circle_filled + val InfoCircleOutlined = R.drawable.core_designsystem_ic_info_circle_outlined val Kakao = R.drawable.core_designsystem_ic_kakao + val Lock = R.drawable.core_designsystem_ic_lock + val Menu = R.drawable.core_designsystem_ic_menu val Mic = R.drawable.core_designsystem_ic_mic val Pause = R.drawable.core_designsystem_ic_pause val Person = R.drawable.core_designsystem_ic_person val Play = R.drawable.core_designsystem_ic_play val Plus = R.drawable.core_designsystem_ic_plus val Profile = R.drawable.core_designsystem_ic_profile + val QuestionCircleFilled = R.drawable.core_designsystem_ic_question_circle_filled + val QuestionCircleOutlined = R.drawable.core_designsystem_ic_question_circle_outlined val RadioCircleFilled = R.drawable.core_designsystem_ic_radio_circle_filled val RadioCircleOutlined = R.drawable.core_designsystem_ic_radio_circle_outlined val Recording = R.drawable.core_designsystem_ic_recording val Reset = R.drawable.core_designsystem_ic_reset val Rotate = R.drawable.core_designsystem_ic_rotate + val Search = R.drawable.core_designsystem_ic_search + val Setting = R.drawable.core_designsystem_ic_setting val Stop = R.drawable.core_designsystem_ic_stop + val Storage = R.drawable.core_designsystem_ic_storage val Trophy = R.drawable.core_designsystem_ic_trophy + val Upload = R.drawable.core_designsystem_ic_upload val Video = R.drawable.core_designsystem_ic_video val Voice = R.drawable.core_designsystem_ic_voice - val Warning = R.drawable.core_designsystem_ic_warning - val WarningCircle = R.drawable.core_designsystem_ic_warning_circle + val WarningCircleFilled = R.drawable.core_designsystem_ic_warning_circle_filled + val WarningCircleOutlined = R.drawable.core_designsystem_ic_warning_circle_outlined val ZoomIn = R.drawable.core_designsystem_ic_zoom_in val ZoomOut = R.drawable.core_designsystem_ic_zoom_out } diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_balloon.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_balloon.xml index 87216bf..c79fac5 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_balloon.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_balloon.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml index 20b215d..6a5912b 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> + android:pathData="M21,18.5C21,19.881 19.881,21 18.5,21H5.5C4.119,21 3,19.881 3,18.5V10.5H21V18.5ZM15,1.999C15.414,1.999 15.75,2.335 15.75,2.749V4H18.5C19.881,4 21,5.119 21,6.5V9.5H3V6.5C3,5.119 4.119,4 5.5,4H8.25V2.749C8.25,2.335 8.586,1.999 9,1.999C9.414,1.999 9.75,2.335 9.75,2.749V4H14.25V2.749C14.25,2.335 14.586,1.999 15,1.999Z" + android:fillColor="#2F3238"/> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_check.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_check.xml index 27eb12b..484f383 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_check.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_check.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_college.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_college.xml index 7b7e485..91569cd 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_college.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_college.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_company.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_company.xml index 201249d..c2312f8 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_company.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_company.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_edit.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_edit.xml index db98b7d..8a0c434 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_edit.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_edit.xml @@ -4,6 +4,7 @@ android:viewportWidth="24" android:viewportHeight="24"> + android:pathData="M16.744,11.257L7.294,20.707C7.107,20.894 6.852,21 6.587,21H4C3.448,21 3,20.552 3,20V17.413C3,17.148 3.106,16.894 3.293,16.706L12.743,7.256L16.744,11.257ZM16.413,3.586C17.194,2.805 18.462,2.805 19.243,3.586L20.414,4.758C21.195,5.539 21.195,6.806 20.414,7.587L17.451,10.549L13.45,6.549L16.413,3.586Z" + android:fillColor="#6E737D" + android:fillType="evenOdd"/> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_gallery.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_gallery.xml index a15f090..91d11ae 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_gallery.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_gallery.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_hand.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_hand.xml index 7361953..7a3ea16 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_hand.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_hand.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info.xml deleted file mode 100644 index 18bc800..0000000 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle_filled.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle_filled.xml new file mode 100644 index 0000000..66e7cc8 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle_outlined.xml similarity index 100% rename from Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle.xml rename to Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_info_circle_outlined.xml diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_lock.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_lock.xml index 5fc1d5c..1eda06a 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_lock.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_lock.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_menu.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_menu.xml new file mode 100644 index 0000000..2ae1ee3 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_menu.xml @@ -0,0 +1,9 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_mic.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_mic.xml index db4b90b..5d35112 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_mic.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_mic.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_person.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_person.xml index 16b31ae..80f9aa1 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_person.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_person.xml @@ -4,6 +4,9 @@ android:viewportWidth="24" android:viewportHeight="24"> + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_filled.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_filled.xml new file mode 100644 index 0000000..3885a93 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_outlined.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_outlined.xml new file mode 100644 index 0000000..7a5bd41 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_question_circle_outlined.xml @@ -0,0 +1,9 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_search.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_search.xml new file mode 100644 index 0000000..8fba3a6 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_search.xml @@ -0,0 +1,9 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_setting.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_setting.xml index b609241..3d62e97 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_setting.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_setting.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_trophy.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_trophy.xml index ab791f3..319d71d 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_trophy.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_trophy.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_upload.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_upload.xml new file mode 100644 index 0000000..86804f1 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_upload.xml @@ -0,0 +1,9 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_video.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_video.xml index f8f7974..6aa1dde 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_video.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_video.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_voice.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_voice.xml index ccf2e53..6bc789d 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_voice.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_voice.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning.xml deleted file mode 100644 index 7bfd567..0000000 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle_filled.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle_filled.xml new file mode 100644 index 0000000..f6703f3 --- /dev/null +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle_filled.xml @@ -0,0 +1,10 @@ + + + diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle_outlined.xml similarity index 100% rename from Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle.xml rename to Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_warning_circle_outlined.xml From 9ac31c80df28b40c5bc7f04799c095427b191d21 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Thu, 12 Feb 2026 12:13:35 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EB=B0=8F=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 아코디언 컴포넌트에 접근성 보조를 위한 content description 리소스를 추가하고 적용했습니다. * 아코디언 및 TopAppBar에 사용되는 아이콘 리소스를 `PrezelIcons` 상수로 교체했습니다. * 캘린더 아이콘의 색상을 수정했습니다(`2F3238` -> `6E737D`). * TopAppBar 프리뷰의 아이콘을 실제 아이콘으로 업데이트했습니다. --- .../core/designsystem/component/PrezelAccordion.kt | 13 +++++-------- .../prezel/core/designsystem/component/TopAppBar.kt | 10 +++++----- .../res/drawable/core_designsystem_ic_calendar.xml | 2 +- .../designsystem/src/main/res/values/strings.xml | 1 + 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt index f1ff6b5..725b30f 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt @@ -30,9 +30,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.R import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles +import com.team.prezel.core.designsystem.icon.PrezelIcons import com.team.prezel.core.designsystem.preview.PreviewScaffold import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelTheme @@ -115,8 +117,8 @@ private fun PrezelAccordionHeader( @Composable private fun PrezelAccordionChevron(rotation: Float) { Icon( - painter = painterResource(R.drawable.core_designsystem_ic_chevron_down), - contentDescription = null, + painter = painterResource(PrezelIcons.ChevronDown), + contentDescription = stringResource(R.string.core_designsystem_accordion_desc), modifier = Modifier .size(24.dp) .rotate(rotation), @@ -246,12 +248,7 @@ private fun PrezelAccordionPreview_Interactive() { Spacer(Modifier.width(4.dp)) - Text( - text = "(필수) 이용약관", - modifier = Modifier.weight(1f), - style = PrezelTextStyles.Body3Medium.toTextStyle(), - color = PrezelTheme.colors.textLarge, - ) + Text(text = "(필수) 이용약관") } }, label = { diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/TopAppBar.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/TopAppBar.kt index d14a7be..c9f88d9 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/TopAppBar.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/TopAppBar.kt @@ -102,7 +102,7 @@ private fun PrezelTopAppBarWithAllIconsPreview() { leadingIcon = { IconButton(onClick = {}) { Icon( - painter = painterResource(PrezelIcons.Blank), + painter = painterResource(PrezelIcons.ArrowLeft), contentDescription = "뒤로가기", ) } @@ -110,14 +110,14 @@ private fun PrezelTopAppBarWithAllIconsPreview() { trailingIcons = { IconButton(onClick = {}) { Icon( - painter = painterResource(PrezelIcons.Blank), + painter = painterResource(PrezelIcons.Search), contentDescription = "검색", ) } IconButton(onClick = {}) { Icon( - painter = painterResource(PrezelIcons.Blank), - contentDescription = "더보기", + painter = painterResource(PrezelIcons.Menu), + contentDescription = "메뉴", ) } }, @@ -142,7 +142,7 @@ private fun PrezelTopAppBarScrollTestPreview() { leadingIcon = { IconButton(onClick = {}) { Icon( - painter = painterResource(PrezelIcons.Blank), + painter = painterResource(PrezelIcons.ArrowLeft), contentDescription = "뒤로가기", ) } diff --git a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml index 6a5912b..8836617 100644 --- a/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml +++ b/Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml @@ -5,5 +5,5 @@ android:viewportHeight="24"> + android:fillColor="#6E737D"/> diff --git a/Prezel/core/designsystem/src/main/res/values/strings.xml b/Prezel/core/designsystem/src/main/res/values/strings.xml index 519ffa1..20945a7 100644 --- a/Prezel/core/designsystem/src/main/res/values/strings.xml +++ b/Prezel/core/designsystem/src/main/res/values/strings.xml @@ -2,4 +2,5 @@ 플로팅 버튼 닫기 체크박스 + 아코디언 토글