-
Notifications
You must be signed in to change notification settings - Fork 1
PrezelAccordion 구현 #55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
디자인시스템에 아코디언 컴포넌트인 `PrezelAccordion`을 새롭게 추가했습니다. * `AnimatedVisibility`를 이용한 펼치기/접기 애니메이션 구현 * 헤더, 라벨, 콘텐츠 영역을 커스텀할 수 있는 슬롯 구조 적용 * `showDivider` 옵션을 통한 구분선 표시 기능 제공 * 상태별 미리보기(Collapsed, Expanded, Interactive) 추가
아이콘 세트를 전반적으로 업데이트하고, 명명 규칙을 통일했습니다. * 신규 아이콘 추가: `Menu`, `Search`, `Upload`, `Lock`, `Storage`, `QuestionCircle` 등 * 기존 아이콘 리팩토링: `Calendar`, `Balloon`, `Check`, `Person`, `Video` 등 벡터 패스 및 색상 수정 * 아이콘 명명 규칙 변경: `WarningCircle` -> `WarningCircleOutlined` 등 형태에 따른 접미사 추가 * `PrezelIcons` 클래스 내 리소스 참조 업데이트 및 신규 아이콘 등록 * 불필요한 아이콘 삭제 (`ic_info`, `ic_warning`) 및 `PrezelAccordion` 코드 스타일 수정
Walkthrough새로운 Compose 컴포넌트 Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. No actionable comments were generated in the recent review. 🎉 🧹 Recent nitpick comments
Tip Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In
`@Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml`:
- Around line 7-8: Update the calendar drawable's fill color: locate the
android:fillColor attribute in core_designsystem_ic_calendar.xml (the <path>
element containing the calendar android:pathData) and change its value from
"#2F3238" to "#6E737D" so it matches the other design system icons.
In
`@Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_menu.xml`:
- Around line 1-9: The vector drawable's pathData defines three horizontal dots
(a "more" icon) but the resource is named core_designsystem_ic_menu.xml (which
implies a hamburger/menu icon); either update the pathData to the three-line
hamburger shape in the <path> (replace the current dot pathData) or rename the
asset to reflect "more" (e.g., core_designsystem_ic_more) and update any
references; locate the <vector> and its <path> (android:pathData) in
core_designsystem_ic_menu.xml to make the change so resource name and visual
match the design system convention.
🧹 Nitpick comments (5)
Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_person.xml (1)
6-11: 하드코딩된fillColor대신 테마 컬러 참조 고려두 path 모두
fillColor가#6E737D로 하드코딩되어 있습니다. Compose에서tint를 통해 항상 색상을 오버라이드한다면 문제없지만, 그렇지 않은 경우 다크 모드 등 테마 전환 시 아이콘이 배경과 구분되지 않을 수 있습니다.AI 요약에 따르면 이번 PR의 다른 아이콘들도 동일한 패턴을 사용하고 있으므로, 전체 아이콘 세트에 대해 일관된 방침이 있는지 확인해 주세요.
Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_search.xml (1)
1-9: 새 Search 아이콘 추가 확인.아이콘 구조와 fillColor가 일관됩니다. 참고로,
TopAppBar.kt(Line 112)에서PrezelIcons.Blank을 contentDescription"검색"으로 사용하고 있는 부분이 있습니다. 이 새로운Search아이콘으로 교체하는 것이 적절할 수 있습니다.Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAccordion.kt (3)
115-125: 접근성: chevron 아이콘에contentDescription추가 권장
contentDescription = null로 설정되어 있어 스크린 리더 사용자가 아코디언의 확장/축소 상태를 인지할 수 없습니다. 확장 상태에 따라 적절한 설명을 제공하는 것이 좋습니다.또한,
R.drawable.core_designsystem_ic_chevron_down을 직접 참조하는 대신PrezelIcons.ChevronDown을 사용하면 다른 컴포넌트(PrezelRadio,PrezelCheckbox등)와 일관성을 유지할 수 있습니다.♻️ 제안
`@Composable` private fun PrezelAccordionChevron(rotation: Float) { Icon( - painter = painterResource(R.drawable.core_designsystem_ic_chevron_down), - contentDescription = null, + painter = painterResource(PrezelIcons.ChevronDown), + contentDescription = "Toggle accordion", modifier = Modifier .size(24.dp) .rotate(rotation), tint = PrezelTheme.colors.iconRegular, ) }
40-77: 공개 API 시그니처 검토전체적으로 잘 구성되어 있습니다. 슬롯 기반 API로 header/label/content를 분리하고,
AnimatedVisibility기반의 확장/축소, ripple 제거 클릭 정책 등 PR 목표를 충실히 구현했습니다.한 가지 고려할 점:
enabled = false일 때 chevron이 여전히 표시되고 시각적 비활성화 표시가 없습니다. 비활성 상태의 시각적 피드백(예: 투명도 조절)을 추가하면 사용자 경험이 개선될 수 있습니다.
87-112: 헤더 영역의 클릭 영역과 접근성 시맨틱스
clickablemodifier에indication = null과 커스텀interactionSource를 사용하여 ripple을 제거한 것은 PR 목표와 일치합니다. 다만, 접근성 향상을 위해semantics혹은toggleablemodifier를 활용하여 확장/축소 역할(Role)을 명시하면 TalkBack 등 보조 기술에서 더 나은 경험을 제공할 수 있습니다. 참고로PrezelCheckbox에서는toggleable에Role.Checkbox를 사용하고 있습니다.
Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_calendar.xml
Outdated
Show resolved
Hide resolved
Prezel/core/designsystem/src/main/res/drawable/core_designsystem_ic_menu.xml
Show resolved
Hide resolved
* 아코디언 컴포넌트에 접근성 보조를 위한 content description 리소스를 추가하고 적용했습니다. * 아코디언 및 TopAppBar에 사용되는 아이콘 리소스를 `PrezelIcons` 상수로 교체했습니다. * 캘린더 아이콘의 색상을 수정했습니다(`2F3238` -> `6E737D`). * TopAppBar 프리뷰의 아이콘을 실제 아이콘으로 업데이트했습니다.
📌 작업 내용
PrezelAccordion 구현
PrezelIcon 업데이트
🧩 관련 이슈
📸 스크린샷
2026-02-08.22.10.42.mov
Summary by CodeRabbit
릴리스 노트
New Features
Style / Assets
Previews