Skip to content

[FIX/#299] 스프린트 1차 QA 반영#301

Merged
ShinHyeongcheol merged 8 commits into
developfrom
fix/#299-qa-sprint-fix
Mar 31, 2026
Merged

[FIX/#299] 스프린트 1차 QA 반영#301
ShinHyeongcheol merged 8 commits into
developfrom
fix/#299-qa-sprint-fix

Conversation

@ShinHyeongcheol

@ShinHyeongcheol ShinHyeongcheol commented Mar 30, 2026

Copy link
Copy Markdown
Collaborator

Related issue 🛠

Work Description ✏️

  • Home TextStyle 수정
  • 드롭다운 색상 및 크기 변경
  • 툴팁 화살표 추가
  • 바텀시트 하단 패딩 수정
  • 그 외 자잘한 수정사항 몇가지

Screenshot 📸

Screen_recording_20260331_005505.mp4

Uncompleted Tasks 😅

To Reviewers 📢

수정사항과 관련해 몇가지 남겨두겠습니다!!

  • 드롭다운 크기와 관련해서는 상단 드롭다운의 크기에 따라 아이템의 크기가 결정이 되어 패딩을 추가하기보다 특정 케이스(RegionDropdown)에서 추가 여백을 지정해줄 수 있도록 수정했습니다. 그 외에는 기존 코드를 최대한 수정하지 않는 방향으로 수정했습니다.
  • 바텀시트 하단 패딩의 경우 여백의 크기가 피그마와 다른 이유는 시스템의 하단 패딩으로 추정이 되어 기존 여백인 47.dp를 유지했습니다. 혹시 이 부분 수정이 필요할 것 같으면 말씀해주세요.
  • 툴팁의 경우 하나의 팝업으로 진행을 할 경우 닉네임의 크기에 따라 화살표의 위치가 맞지 않는 경우가 생겨 2개의 팝업을 띄우는 방식으로 진행을 했습니다. 기존 툴팁(body)을 기반으로 팝업의 dismiss를 처리하도록 하였습니다. 다 만들고 나서 balloon을 쓸걸 그랬나 하는 생각도 했어요 ㅎㅎ 더 좋은 방법이 생각나면 나중에 추가로 수정해볼게요.

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 정보 아이콘 툴팁 UI 개선으로 더 나은 사용자 경험 제공
    • 드롭다운 메뉴 스타일링 옵션 확대
  • Style

    • 하단 시트 레이아웃 및 간격 조정
    • 추천 정보 텍스트 스타일 업데이트
    • 지역 드롭다운 메뉴 시각적 개선
  • Chores

    • 프로필 차단 대화상자 한국어 지원 추가
    • 내부 코드 구조 최적화

@coderabbitai

coderabbitai Bot commented Mar 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8a86dfab-482c-4d86-9d85-61576c6e49ae

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

이 PR은 안드로이드 UI 컴포넌트들의 레이아웃 및 스타일링 조정과 로컬라이제이션을 포함합니다. 바텀시트 패딩 감소, 드롭다운 메뉴 커스터마이제이션 파라미터 추가, 홈 스크린의 팝업을 툴팁으로 리팩토링, 프로필 차단 다이얼로그 로컬라이제이션 추가, 랭커 아이템 상수 사용 최적화가 포함됩니다.

Changes

Cohort / File(s) Summary
Bottom Sheet Layout 조정
app/src/main/java/com/smashing/app/core/designsystem/component/bottomsheet/SmashingBottomSheet.kt
Column 바텀 패딩을 47dp에서 12dp로 감소, 리스트 아이템 내부 패딩을 개별 값에서 horizontal/vertical 통합 형식으로 변경, optionalButton이 존재할 때 35dp Spacer 추가
Dropdown Menu 커스터마이제이션
app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingDropdownMenu.kt, app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingRegionDropdown.kt
SmashingDropdownMenu에 minWidthExtra, bgColor, bolderColor 파라미터 추가, SmashingRegionDropdown의 isDivide 기본값을 false에서 true로 변경, 커스텀 배경색 및 구분선 색상 적용
Home 화면 정보 팝업 리팩토링
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt, app/src/main/java/com/smashing/app/presentation/home/component/RecommendedInfoPopup.kt
RecommendedInfoPopup을 RecommendedInfoTooltip으로 변경, 전역 좌표 기반 팝업에서 앵커 높이 기반 툴팁으로 전환, 별도 꼬리(tail) 및 본체(body) Popup 구현, 텍스트 스타일 업데이트
프로필 차단 로컬라이제이션
app/src/main/java/com/smashing/app/presentation/profile/userprofile/UserProfileScreen.kt, app/src/main/res/values/strings.xml
UserProfileScreen 차단 다이얼로그의 하드코딩된 한국어 문자열을 stringResource로 교체, 프로필 차단 관련 3개 문자열 리소스 추가(제목, 부제, 확정 버튼)
Ranker Item 최적화
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt
로컬 변수 sidePadding, centerExtraWidth 제거, 상수 SIDE_PADDING, RANKER_FIRST_EXTRA_WIDTH 직접 사용으로 변경

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • PR #188: HomeScreen 정보 팝업 UI 추가 및 앵커링 처리와 관련되어 있으며, 본 PR이 해당 팝업을 RecommendedInfoTooltip으로 리팩토링하는 후속 변경입니다.
  • PR #247: UserProfileScreen 로컬라이제이션 처리와 동일하게 프로필 관련 다이얼로그 문자열을 stringResource로 교체합니다.
  • PR #199: SmashingRegionDropdown의 isDivide 기본값 변경 및 스타일링 파라미터 적용 관련 변경입니다.

Suggested labels

🔨 FIX, 📱 UI

Suggested reviewers

  • vahkjsdf
  • seungjunGong
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive PR 설명이 기본 구조를 따르고 있으나 일부 필수 정보가 불완전합니다. Work Description 섹션을 더 자세히 작성하여 각 변경사항의 목적과 기술적 구현 세부사항을 명확히 해주세요.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 'QA 수정사항 반영'이라는 핵심 변경을 명확하게 요약하고 있으며, 실제 변경사항(텍스트스타일, 드롭다운, 툴팁, 바텀시트 등의 수정)과 관련성이 있습니다.
Linked Issues check ✅ Passed 코드 변경사항이 linked issue #299의 'QA 수정사항 수정'이라는 목표와 부합합니다. Home 텍스트스타일, 드롭다운 색상/크기, 툴팁 화살표, 바텀시트 패딩 수정 등이 QA 반영 사항입니다.
Out of Scope Changes check ✅ Passed 변경사항들(텍스트스타일, 드롭다운, 툴팁, 바텀시트, 문자열 리소스, RankerItem 정리)이 모두 QA 수정사항 반영과 직접 관련되어 있으며 범위 내입니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/#299-qa-sprint-fix

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingDropdownMenu.kt (1)

70-72: 파라미터 이름 오타: bolderColorborderColor

bolderColor는 오타로 보입니다. 의미상 borderColor가 맞습니다. KDoc(line 56)과 사용처(line 119)도 함께 수정이 필요합니다.

♻️ 수정 제안
-    bolderColor: Color = colors.borderPrimary,
+    borderColor: Color = colors.borderPrimary,

Line 56 KDoc도 수정:

- * `@param` bolderColor 항목 사이 구분선 색상 (기본값: colors.borderPrimary)
+ * `@param` borderColor 항목 사이 구분선 색상 (기본값: colors.borderPrimary)

Line 119 사용처도 수정:

-                        color = bolderColor,
+                        color = borderColor,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingDropdownMenu.kt`
around lines 70 - 72, Rename the misspelled parameter bolderColor to borderColor
in the SmashingDropdownMenu function signature and update its default value
(currently colors.borderPrimary) accordingly; also update the KDoc that
describes this parameter (previously referencing bolderColor) and replace all
internal usages (e.g., where bolderColor is referenced around the usage site in
the composable) to use borderColor so names are consistent across declaration,
documentation, and use.
app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingRegionDropdown.kt (1)

62-62: 파라미터 이름 불일치: isDivide vs isDivided

RegionDropdown에서는 isDivide를 사용하고, SmashingDropdownMenu에서는 isDivided를 사용합니다. API 일관성을 위해 이름을 통일하는 것이 좋습니다.

♻️ 일관된 네이밍 제안
 fun RegionDropdown(
     selectedItem: String,
     items: ImmutableList<String>,
     onClick: (String) -> Unit,
     onRegionChange: () -> Unit,
     modifier: Modifier = Modifier,
-    isDivide: Boolean = true,
+    isDivided: Boolean = true,
 ) {

그리고 사용처도 변경:

-            isDivided = isDivide,
+            isDivided = isDivided,

Also applies to: 131-131

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingRegionDropdown.kt`
at line 62, The parameter name mismatch between RegionDropdown (uses isDivide)
and SmashingDropdownMenu (uses isDivided) causes an inconsistent API;
standardize the name across both components—pick one identifier (e.g.,
isDivided) and update all declarations and call sites (constructor/parameters
and usages) in RegionDropdown, SmashingDropdownMenu, and any places referencing
the parameter so they all use the same symbol (isDivided) consistently.
app/src/main/java/com/smashing/app/presentation/home/component/RecommendedInfoPopup.kt (1)

42-69: 분리된 두 Popup의 dismiss 경로는 실기기 확인이 필요합니다.

Line 48은 꼬리 popup의 dismiss를 비워 두고, Line 64만 본문 popup의 dismiss를 처리하고 있습니다. 지금처럼 하나의 툴팁을 두 window로 나누면 화살표 영역 탭이 body popup의 outside-click dismiss로 연결되지 않는 조합이 나올 수 있어서, tailbody를 같은 popup 안에 두는 쪽이 더 안전합니다. 최소한 화살표 탭 / 바깥 영역 탭 / 뒤로가기에서 모두 정상 dismiss되는지 실기기 확인이 필요합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/smashing/app/presentation/home/component/RecommendedInfoPopup.kt`
around lines 42 - 69, Two separate Popup instances (the tail Popup with empty
onDismissRequest and the body Popup handling onDismiss) can cause inconsistent
dismiss behavior; change to render the tail and body inside a single Popup
(e.g., one Popup with alignment/offset and properties) so both
RecommendedInfoPopupTail and the body composable share the same onDismissRequest
and PopupProperties, or if you must keep two Popups, wire the same onDismiss and
identical PopupProperties (focusable/dismissOnBackPress/dismissOnClickOutside)
to the tail Popup and the body Popup so taps on the tail, outside clicks, and
back press consistently call onDismiss. Ensure you update references to
tailOffsetX/tailOffsetY/bodyOffsetY and the onDismiss handler accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/src/main/java/com/smashing/app/core/designsystem/component/bottomsheet/SmashingBottomSheet.kt`:
- Around line 107-110: SmashingBottomSheet currently applies .padding(top =
16.dp, bottom = 12.dp) which causes inconsistent bottom spacing when optional
action buttons exist (they rely on an extra ~35.dp); update the component to
compute a single bottomPadding value (e.g. val bottomPadding = 12.dp + if
(hasActionButtons or actions.isNotEmpty()) 35.dp else 0.dp) and use .padding(top
= 16.dp, bottom = bottomPadding) so both button and no-button cases keep
consistent total bottom spacing; locate the padding call(s) in
SmashingBottomSheet and replace the hardcoded bottom with this computed
bottomPadding.

In `@app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt`:
- Around line 368-374: The info Icon currently has contentDescription = null and
uses noRippleClickable (Icon(... modifier = Modifier.noRippleClickable(...)))
resulting in poor accessibility and a tiny hit area; replace the raw Icon
clickable with an accessible container—either wrap the Icon in an IconButton
(preferred) or a Box/Surface with Modifier.size(48.dp) and a clickable/onClick
that toggles isInfoPopupVisible; add a string resource (e.g.
R.string.info_icon_description) and set contentDescription =
stringResource(R.string.info_icon_description) on the Icon (or provide semantics
with .semantics { contentDescription = ... }), remove noRippleClickable, keep
tint = SmashingTheme.colors.iconTertiary, and verify TalkBack/Accessibility
Scanner reports the button label and ≥48.dp touch target.

---

Nitpick comments:
In
`@app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingDropdownMenu.kt`:
- Around line 70-72: Rename the misspelled parameter bolderColor to borderColor
in the SmashingDropdownMenu function signature and update its default value
(currently colors.borderPrimary) accordingly; also update the KDoc that
describes this parameter (previously referencing bolderColor) and replace all
internal usages (e.g., where bolderColor is referenced around the usage site in
the composable) to use borderColor so names are consistent across declaration,
documentation, and use.

In
`@app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingRegionDropdown.kt`:
- Line 62: The parameter name mismatch between RegionDropdown (uses isDivide)
and SmashingDropdownMenu (uses isDivided) causes an inconsistent API;
standardize the name across both components—pick one identifier (e.g.,
isDivided) and update all declarations and call sites (constructor/parameters
and usages) in RegionDropdown, SmashingDropdownMenu, and any places referencing
the parameter so they all use the same symbol (isDivided) consistently.

In
`@app/src/main/java/com/smashing/app/presentation/home/component/RecommendedInfoPopup.kt`:
- Around line 42-69: Two separate Popup instances (the tail Popup with empty
onDismissRequest and the body Popup handling onDismiss) can cause inconsistent
dismiss behavior; change to render the tail and body inside a single Popup
(e.g., one Popup with alignment/offset and properties) so both
RecommendedInfoPopupTail and the body composable share the same onDismissRequest
and PopupProperties, or if you must keep two Popups, wire the same onDismiss and
identical PopupProperties (focusable/dismissOnBackPress/dismissOnClickOutside)
to the tail Popup and the body Popup so taps on the tail, outside clicks, and
back press consistently call onDismiss. Ensure you update references to
tailOffsetX/tailOffsetY/bodyOffsetY and the onDismiss handler accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 10e75b62-64c1-4247-8e0d-a1ebcca0c5fc

📥 Commits

Reviewing files that changed from the base of the PR and between a191e93 and 6272527.

📒 Files selected for processing (8)
  • app/src/main/java/com/smashing/app/core/designsystem/component/bottomsheet/SmashingBottomSheet.kt
  • app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingDropdownMenu.kt
  • app/src/main/java/com/smashing/app/core/designsystem/component/dropdown/SmashingRegionDropdown.kt
  • app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt
  • app/src/main/java/com/smashing/app/presentation/home/component/RecommendedInfoPopup.kt
  • app/src/main/java/com/smashing/app/presentation/profile/userprofile/UserProfileScreen.kt
  • app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt
  • app/src/main/res/values/strings.xml

Comment on lines 107 to 110
.padding(
top = 16.dp,
bottom = 47.dp,
bottom = 12.dp,
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

옵션 버튼이 없는 케이스에서 하단 여백이 의도보다 작아질 수 있습니다.

현재 구조는 버튼이 있을 때만 12.dp + 35.dp로 사실상 47.dp를 맞추고, 버튼이 없으면 12.dp만 적용됩니다. 같은 컴포넌트에서 케이스별 하단 여백 차이가 커져 레이아웃이 달라질 수 있습니다.

수정 제안 (최소 변경)
+private val BottomSheetBottomPaddingWithButton = 12.dp
+private val BottomSheetBottomPaddingWithoutButton = 47.dp
+private val BottomSheetButtonTailSpacer = 35.dp
+
 Column(
     modifier = Modifier
         .padding(
             top = 16.dp,
-            bottom = 12.dp,
+            bottom = if (optionalButton != null) {
+                BottomSheetBottomPaddingWithButton
+            } else {
+                BottomSheetBottomPaddingWithoutButton
+            },
         ),
 ) {
@@
-    Spacer(modifier = Modifier.height(35.dp))
+    Spacer(modifier = Modifier.height(BottomSheetButtonTailSpacer))
 }

Also applies to: 151-164

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/src/main/java/com/smashing/app/core/designsystem/component/bottomsheet/SmashingBottomSheet.kt`
around lines 107 - 110, SmashingBottomSheet currently applies .padding(top =
16.dp, bottom = 12.dp) which causes inconsistent bottom spacing when optional
action buttons exist (they rely on an extra ~35.dp); update the component to
compute a single bottomPadding value (e.g. val bottomPadding = 12.dp + if
(hasActionButtons or actions.isNotEmpty()) 35.dp else 0.dp) and use .padding(top
= 16.dp, bottom = bottomPadding) so both button and no-button cases keep
consistent total bottom spacing; locate the padding call(s) in
SmashingBottomSheet and replace the hardcoded bottom with this computed
bottomPadding.

Comment on lines +368 to 374
Icon(
imageVector = ImageVector.vectorResource(ic_info),
contentDescription = null,
tint = SmashingTheme.colors.iconTertiary,
modifier = Modifier.noRippleClickable(
onClick = { isInfoPopupVisible = !isInfoPopupVisible },
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

❓ Verification inconclusive

Script executed:

# First, let's read the specific file and lines mentioned
cd app/src/main/java/com/smashing/app/presentation/home/ && wc -l HomeScreen.kt

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0

stdout:

688 HomeScreen.kt

Script executed:

# Read the file content around lines 368-374
cat -n app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt | sed -n '360,385p'

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0

stdout:

   360	
   361	                        Spacer(modifier = Modifier.width(4.dp))
   362	
   363	                        Box(
   364	                            modifier = Modifier.onGloballyPositioned { coordinates ->
   365	                                infoIconBoxSize = coordinates.size
   366	                            },
   367	                        ) {
   368	                            Icon(
   369	                                imageVector = ImageVector.vectorResource(ic_info),
   370	                                contentDescription = null,
   371	                                tint = SmashingTheme.colors.iconTertiary,
   372	                                modifier = Modifier.noRippleClickable(
   373	                                    onClick = { isInfoPopupVisible = !isInfoPopupVisible },
   374	                                ),
   375	                            )
   376	                            RecommendedInfoTooltip(
   377	                                isVisible = isInfoPopupVisible,
   378	                                anchorHeightPx = infoIconBoxSize.height,
   379	                                onDismiss = { isInfoPopupVisible = false },
   380	                                tailOffsetX = 0.dp,
   381	                            )
   382	                        }
   383	
   384	                    }
   385	

Script executed:

# Search for IconButton usage patterns in the codebase
rg "IconButton" --type kotlin -A 3 -B 1 | head -50

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0


Script executed:

# Search for contentDescription usage and accessibility patterns
rg "contentDescription" --type kotlin -A 2 -B 2 | head -60

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0

stdout:

app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                        id = if (uiState.isWithdrawalAgreed) ic_checkbox else ic_checkbox_empty,
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                    ),
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt:                    contentDescription = null,
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                    tint = SmashingTheme.colors.iconPrimary,
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                    modifier = Modifier
--
app/src/main/java/com/smashing/app/presentation/write/component/SubmitCard.kt-                    Icon(
app/src/main/java/com/smashing/app/presentation/write/component/SubmitCard.kt-                        imageVector = ImageVector.vectorResource(ic_crown),
app/src/main/java/com/smashing/app/presentation/write/component/SubmitCard.kt:                        contentDescription = null,
app/src/main/java/com/smashing/app/presentation/write/component/SubmitCard.kt-                        tint = SmashingTheme.colors.iconCrown,
app/src/main/java/com/smashing/app/presentation/write/component/SubmitCard.kt-                        modifier = Modifier
--
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-                if (isSelected) ic_check_button else ic_check_button_default
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-            ),
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt:            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-                .padding(
--
app/src/main/java/com/smashing/app/presentation/tierinfo/TierInfoScreen.kt-            Image(
app/src/main/java/com/smashing/app/presentation/tierinfo/TierInfoScreen.kt-                painter = painterResource(uiState.selectedTierInfoStyle.getImg()),
app/src/main/java/com/smashing/app/presentation/tierinfo/TierInfoScreen.kt:                contentDescription = null,
app/src/main/java/com/smashing/app/presentation/tierinfo/TierInfoScreen.kt-                modifier = Modifier
app/src/main/java/com/smashing/app/presentation/tierinfo/TierInfoScreen.kt-                    .size(100.dp),
--
app/src/main/java/com/smashing/app/presentation/splash/SplashScreen.kt-        Image(
app/src/main/java/com/smashing/app/presentation/splash/SplashScreen.kt-            painter = painterResource(img_splash_logo),
app/src/main/java/com/smashing/app/presentation/splash/SplashScreen.kt:            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/splash/SplashScreen.kt-            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/splash/SplashScreen.kt-                .size(260.dp)
--
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                Icon(
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                    imageVector = ImageVector.vectorResource(ic_warning),
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt:                    contentDescription = "Error",
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                    tint = SmashingTheme.colors.iconError,
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                )
--
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                Icon(
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                    imageVector = ImageVector.vectorResource(ic_check),
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt:                    contentDescription = "Success",
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                    tint = SmashingTheme.colors.iconSuccess,
app/src/main/java/com/smashing/app/presentation/signup/component/nickname/NicknameInputTextField.kt-                )
--
app/src/main/java/com/smashing/app/presentation/signup/component/SignUpFinish.kt-        Icon(
app/src/main/java/com/smashing/app/presentation/signup/component/SignUpFinish.kt-            painter = painterResource(ic_check_onboarding),
app/src/main/java/com/smashing/app/presentation/signup/component/SignUpFinish.kt:            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/signup/component/SignUpFinish.kt-            tint = Color.Unspecified,
app/src/main/java/com/smashing/app/presentation/signup/component/SignUpFinish.kt-        )
--
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-        Icon(
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            imageVector = ImageVector.vectorResource(genderIcon),
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt:            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            tint = if(isCardEnabled) colors.iconPrimaryReverse else colors.iconPrimary,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-        )
--
app/src/main/java/com/smashing/app/presentation/confirmreview/component/ConfirmReviewCard.kt-            imageVector = (ImageVector.vectorResource(id = iconId)),
app/src/main/java/com/smashing/app/presentation/confirmreview/component/ConfirmReviewCard.kt-            modifier = Modifier.size(72.dp),
app/src/main/java/com/smashing/app/presentation/confirmreview/component/ConfirmReviewCard.kt:            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/confirmreview/component/ConfirmReviewCard.kt-            tint = Color.Unspecified,
app/src/main/java/com/smashing/app/presentation/confirmreview/component/ConfirmReviewCard.kt-        )
--

Script executed:

# Check if there are any accessibility string resources
fd "strings" -t f | grep -E "\.xml$|\.kt$" | xargs grep -l "accessibility\|content_description" 2>/dev/null | head -10

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0


Script executed:

# Search for the noRippleClickable modifier definition
rg "noRippleClickable" --type kotlin -B 2 -A 10

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0

stdout:

app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingAndroidTheme
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-import com.smashing.app.presentation.withdraw.type.WithdrawalDeletedType
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-import com.smashing.app.R.drawable.ic_checkbox
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-import com.smashing.app.R.drawable.ic_checkbox_empty
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-@Composable
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-fun WithdrawRoute(
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-    navigateUp: () -> Unit,
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-    navigateToLogin: () -> Unit,
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-    modifier: Modifier = Modifier,
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-    viewModel: WithdrawViewModel = hiltViewModel(),
--
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                    modifier = Modifier
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                        .size(24.dp)
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt:                        .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                            onClick = {
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                                onWithdrawalAgreedChange(!uiState.isWithdrawalAgreed)
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                            }
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                        ),
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                )
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                Spacer(modifier = Modifier.width(4.dp))
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                Text(
app/src/main/java/com/smashing/app/presentation/withdraw/WithdrawScreen.kt-                    text = stringResource(withdraw_agreement_text),
--
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-import com.smashing.app.core.designsystem.theme.SmashingAndroidTheme
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-import com.smashing.app.data.type.ReviewRatingType
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-@Composable
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-fun ReviewRatingCard(
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-    selectedItem: ReviewRatingType?,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-    onItemClick: (ReviewRatingType) -> Unit,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-    modifier: Modifier = Modifier,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-) {
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-    val ratingList = ReviewRatingType.entries
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-
--
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-    Column(
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-        modifier = modifier
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt:            .noRippleClickable(onClick = onClick),
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-        horizontalAlignment = Alignment.CenterHorizontally,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-        verticalArrangement = Arrangement.Center,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-    ) {
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-        Icon(
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-            imageVector = ImageVector.vectorResource(
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-                if (isSelected) ic_check_button else ic_check_button_default
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-            ),
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/write/component/ReviewRatingCard.kt-                .padding(
--
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.typography
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-import com.smashing.app.data.model.search.SuggestionItemModel
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-import com.smashing.app.presentation.search.component.SearchEmpty
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-import kotlinx.collections.immutable.ImmutableList
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-import kotlinx.collections.immutable.persistentListOf
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-@Composable
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-fun SearchInputRoute(
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-    navigateToSearchMain: () -> Unit,
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-    navigateToUserProfile: (String) -> Unit,
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-    modifier: Modifier = Modifier,
--
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                                .fillMaxWidth()
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt:                                .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                                    onClick = { onSuggestionItemClick(item.userProfileId) },
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                                )
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                                .padding(vertical = 12.dp)
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                                .padding(start = 16.dp),
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                        )
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                    }
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                } else {
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                    SearchEmpty(
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                        title = stringResource(search_input_empty_title),
app/src/main/java/com/smashing/app/presentation/search/input/SearchInputScreen.kt-                        subTitle = stringResource(search_input_empty_subtitle),
--
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-import com.smashing.app.core.designsystem.state.TopBarState
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingAndroidTheme
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-import com.smashing.app.data.type.ReportType
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-import com.smashing.app.presentation.report.ReportContract.SideEffect.ReportAlreadyReported
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-import com.smashing.app.presentation.report.ReportContract.SideEffect.ReportSubmitted
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-@Composable
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-fun ReportRoute(
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-    navigateUp: () -> Unit,
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-    modifier: Modifier = Modifier,
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-    viewModel: ReportViewModel = hiltViewModel(),
--
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-        modifier = modifier
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-            .fillMaxWidth()
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt:            .noRippleClickable(onClick = onClick),
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-        verticalAlignment = Alignment.CenterVertically,
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-    ) {
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-        Icon(
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-            imageVector = ImageVector.vectorResource(
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-                if (isSelected) ic_radio_fill else ic_radio_empty,
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-            ),
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-            tint = SmashingTheme.colors.iconPrimary,
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-            modifier = Modifier.size(24.dp),
app/src/main/java/com/smashing/app/presentation/report/ReportScreen.kt-        )
--
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-import com.smashing.app.core.designsystem.theme.SmashingAndroidTheme
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-import kotlinx.collections.immutable.ImmutableList
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-import kotlinx.collections.immutable.persistentListOf
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-@Composable
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-fun SearchTopBar(
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    selectedRegion: String,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    regionItems: ImmutableList<String>,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    onRegionDropdownClick: (String) -> Unit,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    onSearchClick: () -> Unit,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    onRegionSelectClick: () -> Unit,
--
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-            tint = colors.iconPrimary,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt:                .noRippleClickable(onClick = onSearchClick)
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-        )
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    }
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-}
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-@Preview(showBackground = true)
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-@Composable
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-private fun SearchTopBarPreview() {
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-    SmashingAndroidTheme {
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/SearchTopBar.kt-        SearchTopBar(
--
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-import com.smashing.app.core.designsystem.theme.primary300
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-import com.smashing.app.core.extension.dropShadow
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-import com.smashing.app.data.model.rank.UserRank
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-import com.smashing.app.data.type.TierType
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-import com.smashing.app.presentation.ranking.component.Ranker
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-import kotlinx.collections.immutable.toImmutableList
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-@Composable
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-fun RankingRoute(
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-    navigateUp: () -> Unit,
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-    navigateToProfile: (String) -> Unit,
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-    navigateToMyProfile: () -> Unit,
--
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-                    )
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-                    .navigationBarsPadding()
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt:                    .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-                        onClick = {}
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-                    )
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-            )
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-        }
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-    }
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-}
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-@Composable
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-private fun MyRanking(
app/src/main/java/com/smashing/app/presentation/ranking/RankingScreen.kt-    myRank: UserRank,
--
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.typography
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.data.model.rank.UserRank
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.data.type.TierType
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.presentation.ranking.type.RankerType
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.presentation.ranking.type.RankerType.FIRST
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.presentation.ranking.type.RankerType.SECOND
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import com.smashing.app.presentation.ranking.type.RankerType.THIRD
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import kotlinx.collections.immutable.ImmutableList
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-import kotlinx.collections.immutable.toImmutableList
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-private val SIDE_PADDING = 16.dp
--
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                        shape = CircleShape,
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                    )
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt:                    .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                        onClick = { onProfileClick(userRank.userProfileId) }
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                    ),
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-            )
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-            Text(
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                text = userRank.nickname,
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                style = typography.sm.medium14,
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                color = colors.txtPrimary,
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                textAlign = TextAlign.Center,
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                maxLines = 1,
--
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                modifier = Modifier
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                    .fillMaxWidth()
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt:                    .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                        onClick = { onProfileClick(userRank.userProfileId) }
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                    ),
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-            )
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-        }
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-        Box(
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                .padding(horizontal = sidePadding)
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-                .width(contentWidth),
app/src/main/java/com/smashing/app/presentation/ranking/component/RankerItem.kt-        ) {
--
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.typography
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-import com.smashing.app.core.designsystem.theme.gray300
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-import com.smashing.app.presentation.search.searchmain.style.FilterStyle
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-import com.smashing.app.presentation.search.searchmain.style.FilterStyle.DEFAULT
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-import com.smashing.app.presentation.search.searchmain.style.FilterStyle.VARIANT
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-import com.smashing.app.presentation.search.searchmain.style.FilterStyleData
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-@Composable
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-fun MatchingSearchFilterChip(
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-    style: FilterStyle,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-    text: String,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-    onFilterClick: () -> Unit,
--
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-                shape = RoundedCornerShape(999.dp),
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            )
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt:            .noRippleClickable(onClick = onFilterClick)
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            .padding(vertical = 5.dp)
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            .padding(start = 14.dp, end = 8.dp),
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-        verticalAlignment = Alignment.CenterVertically,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-    ) {
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-        Text(
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            text = text,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            color = filterStyle.txtColor,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            style = typography.sm.medium14,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-        )
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-
--
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            modifier = if (style == VARIANT) {
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt:                Modifier.noRippleClickable(onClick = onFilterDelete)
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            } else {
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-                Modifier
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            },
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-            tint = filterStyle.iconTint,
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-        )
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-    }
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-}
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-@ReadOnlyComposable
app/src/main/java/com/smashing/app/presentation/search/searchmain/component/MatchingSearchFilterChip.kt-@Composable
--
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.typography
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-import com.smashing.app.presentation.signup.component.SignUpTitle
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-import com.smashing.app.R.string.sign_up_location_title
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-import com.smashing.app.R.string.sign_up_location_subtitle
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-@Composable
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-fun SignUpLocation(
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-    addressText: String ,
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-    isAddressExist: Boolean,
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-    onAddressClick: () -> Unit,
--
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-                    shape = RoundedCornerShape(8.dp),
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-                )
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt:                .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-                    onClick = onAddressClick
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-                )
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-                .padding(vertical = 13.dp)
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-                .padding(start = 16.dp),
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-        )
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-    }
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-}
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-
app/src/main/java/com/smashing/app/presentation/signup/component/location/SignUpLocation.kt-@Preview(showBackground = true)
--
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.typography
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-@Composable
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-fun GenderCard (
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    `@DrawableRes` genderIcon: Int,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    genderText: String,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    onCardClick: () -> Unit,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    modifier: Modifier = Modifier,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    isCardEnabled: Boolean = false,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-){
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    Column(
--
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-                color = colors.borderSecondary,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            )
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt:            .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-                onClick = onCardClick,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            ),
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-        verticalArrangement = Arrangement.Center,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-        horizontalAlignment = Alignment.CenterHorizontally,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-    ) {
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-        Icon(
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            imageVector = ImageVector.vectorResource(genderIcon),
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            contentDescription = null,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-            tint = if(isCardEnabled) colors.iconPrimaryReverse else colors.iconPrimary,
app/src/main/java/com/smashing/app/presentation/signup/component/gender/GenderCard.kt-        )
--
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.typography
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-import com.smashing.app.core.extension.openUrl
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-import com.smashing.app.presentation.mypage.component.MyPageProfileHeader
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-@Composable
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-fun MyPageRoute(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-    navigateUp: () -> Unit,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-    navigateToMyProfile: () -> Unit,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-    navigateToLogin: () -> Unit,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-    navigateToWithDraw: () -> Unit,
--
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                color = colors.txtPrimary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                modifier = Modifier
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt:                    .noRippleClickable(onClick = onLogoutClick)
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Spacer(modifier = Modifier.height(8.dp))
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Row(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                verticalAlignment = Alignment.CenterVertically,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            ) {
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                Text(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    text = stringResource(mypage_account_withdraw),
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    style = typography.sm.medium14,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    color = colors.txtPrimary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                )
--
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    tint = colors.iconPrimary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    modifier = Modifier
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt:                        .noRippleClickable(onClick = onWithDrawClick)
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            }
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Spacer(modifier = Modifier.height(26.dp))
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            HorizontalDivider(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                thickness = 2.dp,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                color = colors.bgSurface,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Spacer(modifier = Modifier.height(26.dp))
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Text(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                text = stringResource(mypage_policy_title),
--
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                color = colors.txtPrimary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                modifier = Modifier
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt:                    .noRippleClickable(onClick = { onPolicyPrivacyClick(policyPrivacyLink) })
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Spacer(modifier = Modifier.height(8.dp))
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Text(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                text = stringResource(mypage_policy_terms),
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                style = typography.sm.medium14,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                color = colors.txtPrimary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                modifier = Modifier
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt:                    .noRippleClickable(onClick = { onPolicyTermsClick(policyTermsLink) })
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Spacer(modifier = Modifier.height(8.dp))
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            Row(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                verticalAlignment = Alignment.CenterVertically,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            ) {
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                Text(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    text = stringResource(mypage_info_version),
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    style = typography.sm.medium14,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    color = colors.txtPrimary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    modifier = Modifier
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt:                        .noRippleClickable(onClick = { onVersionClick(versionLink) })
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                Spacer(modifier = Modifier.weight(1f))
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                Text(
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    text = "ver ${BuildConfig.VERSION_NAME}",
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    style = typography.sm.medium14,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                    color = colors.txtTertiary,
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-                )
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-            }
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-        }
app/src/main/java/com/smashing/app/presentation/mypage/MypageScreen.kt-    }
--
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme.colors
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-import kotlinx.collections.immutable.ImmutableList
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-import kotlinx.collections.immutable.toImmutableList
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-@Composable
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-fun MainBottomBar(
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    isVisible: Boolean,
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    tabs: ImmutableList<MainTab>,
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    currentTab: MainTab?,
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    onTabSelected: (MainTab) -> Unit,
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    modifier: Modifier = Modifier,
--
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    Column(
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-        modifier = modifier
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt:            .noRippleClickable(onClick),
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-        horizontalAlignment = Alignment.CenterHorizontally,
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-    ) {
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-        Icon(
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-            imageVector = ImageVector.vectorResource(iconRes),
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-            contentDescription = stringResource(tab.titleRes),
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-            tint = iconColor,
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-        )
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-        Text(
app/src/main/java/com/smashing/app/presentation/main/component/MainBottomBar.kt-            text = stringResource(tab.titleRes),
--
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.core.designsystem.style.toTierInfoStyle
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.core.designsystem.theme.SmashingTheme
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt:import com.smashing.app.core.extension.noRippleClickable
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.model.profile.ProfileInfo
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.model.profile.home.MyProfileTierInfo
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.model.rank.UserRank
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.model.search.SearchMainItemModel
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.type.GameResultStatusType
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.type.GenderType
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.type.SportType
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.data.type.TierType
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.presentation.home.component.CloseMatching
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-import com.smashing.app.presentation.home.component.HomeDropdown
--
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                            color = SmashingTheme.colors.txtTertiary,
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                            modifier = Modifier
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt:                                .noRippleClickable(
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                    onClick = navigateToMatchingAccepted
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                ),
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                        )
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                    }
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                    Spacer(modifier = Modifier.height(20.dp))
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                    CloseMatching(
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                        myProfileId = uiState.activeMyProfile.myProfileInfo.profileId,
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                        myNickname = uiState.activeMyProfile.nickname,
--
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                contentDescription = null,
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                tint = SmashingTheme.colors.iconTertiary,
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt:                                modifier = Modifier.noRippleClickable(
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                    onClick = { isInfoPopupVisible = !isInfoPopupVisible },
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                ),
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                            )
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                            RecommendedInfoTooltip(
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                isVisible = isInfoPopupVisible,
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                anchorHeightPx = infoIconBoxSize.height,
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                onDismiss = { isInfoPopupVisible = false },
app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt-                                tailOffsetX = 0.dp,
app/src/mai

... [stdout truncated: output exceeded 50000 characters (144228 total). Please modify your command to reduce output size, for example by:
- Using grep/rg to filter results
- Using head/tail to limit lines
- Using --max-count flag with grep/rg
- Processing output with awk/sed to extract only needed information]

Script executed:

# Check for any Icon size definitions in HomeScreen.kt
rg "Icon\(" --type kotlin app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt -A 5 | head -40

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0

stdout:

                            Icon(
                                imageVector = ImageVector.vectorResource(ic_info),
                                contentDescription = null,
                                tint = SmashingTheme.colors.iconTertiary,
                                modifier = Modifier.noRippleClickable(
                                    onClick = { isInfoPopupVisible = !isInfoPopupVisible },

Script executed:

# Search for accessibility best practices or similar info icon implementations
rg "info.*Icon\|infoIcon" --type kotlin -B 2 -A 5 | head -50

Repository: TEAM-SMASHING/SMASHING-ANDROID


Repository: TEAM-SMASHING/SMASHING-ANDROID
Exit code: 0


클릭 가능한 정보 아이콘에 접근성 레이블과 충분한 터치 영역이 없습니다.

Line 370의 contentDescription = null 상태에서 Line 372의 noRippleClickable 클릭 동작을 붙이면 TalkBack 사용자가 이 컨트롤의 의미를 알기 어렵습니다. 또한 아이콘에 명시적 크기가 지정되지 않아 현재 hit area가 매우 작아 터치 접근성도 낮습니다. IconButton으로 감싸거나 최소 48.dp 크기의 컨테이너로 감싼 후, 별도 string resource로 설명 라벨을 추가해 주세요. 실기기에서 TalkBack/Accessibility Scanner로 버튼 이름과 터치 타깃이 정상 노출되는지 확인 부탁드립니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/src/main/java/com/smashing/app/presentation/home/HomeScreen.kt` around
lines 368 - 374, The info Icon currently has contentDescription = null and uses
noRippleClickable (Icon(... modifier = Modifier.noRippleClickable(...)))
resulting in poor accessibility and a tiny hit area; replace the raw Icon
clickable with an accessible container—either wrap the Icon in an IconButton
(preferred) or a Box/Surface with Modifier.size(48.dp) and a clickable/onClick
that toggles isInfoPopupVisible; add a string resource (e.g.
R.string.info_icon_description) and set contentDescription =
stringResource(R.string.info_icon_description) on the Icon (or provide semantics
with .semantics { contentDescription = ... }), remove noRippleClickable, keep
tint = SmashingTheme.colors.iconTertiary, and verify TalkBack/Accessibility
Scanner reports the button label and ≥48.dp touch target.

@seungjunGong seungjunGong left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

바텀 시트 같은 경우는 한번 디자인 쪽에 물어보는 것도 좋을 거 같습니다.
툴팁의 경우는 저는 좋은 거 같아요 고생하셨습니다..!

isDivided: Boolean = true,
minWidthExtra: Dp = 0.dp,
bgColor: Color = colors.bgSurface,
bolderColor: Color = colors.borderPrimary,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 여기 오타인것 같습니다 !

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋아요좋아요 바로 수정해두었습니다!! 뀼

@oilbeaneda oilbeaneda left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

엘지티엠!!! 툴팁 신기하네용..

@vahkjsdf vahkjsdf left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니당당

@ShinHyeongcheol ShinHyeongcheol merged commit 5b78f77 into develop Mar 31, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FIX] 스프린트 1차 QA 수정

4 participants