-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat/#7] - Colors 및 Font 세팅 #8
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
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <resources> | ||
| <color name="black">#FF000000</color> | ||
| <color name="white">#FFFFFFFF</color> | ||
|
|
||
|
|
||
| <color name="primary100">#1B2964</color> | ||
| <color name="primary200">#243684</color> | ||
| <color name="primary300">#3149B5</color> | ||
| <color name="primary400">#3656D8</color> | ||
| <color name="primary500">#4264F0</color> | ||
| <color name="primary600">#617FFF</color> | ||
| <color name="primary700">#94A6FF</color> | ||
| <color name="primary800">#C2CEFF</color> | ||
| <color name="primary900">#DBE2FF</color> | ||
|
|
||
|
|
||
| <color name="accent100">#6B2A00</color> | ||
| <color name="accent200">#993C00</color> | ||
| <color name="accent300">#C74E00</color> | ||
| <color name="accent400">#E05700</color> | ||
| <color name="accent500">#F56000</color> | ||
| <color name="accent600">#FF7924</color> | ||
| <color name="accent700">#FFA266</color> | ||
| <color name="accent800">#FFCAA8</color> | ||
| <color name="accent900">#FFEDE0</color> | ||
|
Comment on lines
+7
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # Find and examine the night mode colors file
find . -path "*/presentation/src/main/res/values-night/colors.xml" -type fRepository: UMC-PRODUCT/umc-product-android Length of output: 206 🏁 Script executed: # Also find the light mode colors file for comparison
find . -path "*/presentation/src/main/res/values/colors.xml" -type fRepository: UMC-PRODUCT/umc-product-android Length of output: 120 🏁 Script executed: # List files in the colors directory to understand the structure
find . -path "*/presentation/src/main/res/values*/colors.xml" -type fRepository: UMC-PRODUCT/umc-product-android Length of output: 172 🏁 Script executed: cat -n ./presentation/src/main/res/values/colors.xmlRepository: UMC-PRODUCT/umc-product-android Length of output: 2591 🏁 Script executed: cat -n ./presentation/src/main/res/values-night/colors.xmlRepository: UMC-PRODUCT/umc-product-android Length of output: 2599 🏁 Script executed: python3 << 'EOF'
def hex_to_rgb(hex_color):
hex_color = hex_color.lstrip('#')
return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
def luminance(rgb):
r, g, b = [x / 255.0 for x in rgb]
r = r / 12.92 if r <= 0.03928 else ((r + 0.055) / 1.055) ** 2.4
g = g / 12.92 if g <= 0.03928 else ((g + 0.055) / 1.055) ** 2.4
b = b / 12.92 if b <= 0.03928 else ((b + 0.055) / 1.055) ** 2.4
return 0.2126 * r + 0.7152 * g + 0.0722 * b
def contrast_ratio(hex1, hex2):
l1 = luminance(hex_to_rgb(hex1))
l2 = luminance(hex_to_rgb(hex2))
lighter = max(l1, l2)
darker = min(l1, l2)
return (lighter + 0.05) / (darker + 0.05)
# Night mode colors
neutral000_night = "#121212" # dark background
neutral800_night = "#EBEDEF" # light text
primary500_night = "#4264F0"
primary700_night = "#94A6FF"
primary900_night = "#DBE2FF"
accent500_night = "#F56000"
accent700_night = "#FFA266"
accent900_night = "#FFEDE0"
# Light mode colors (for comparison)
neutral000_light = "#FFFFFF"
neutral900_light = "#1F2124"
primary500_light = "#4869F0"
accent500_light = "#FF6400"
print("=== DARK MODE CONTRAST RATIOS ===")
print(f"neutral000 vs primary500: {contrast_ratio(neutral000_night, primary500_night):.2f}:1")
print(f"neutral000 vs primary700: {contrast_ratio(neutral000_night, primary700_night):.2f}:1")
print(f"neutral000 vs primary900: {contrast_ratio(neutral000_night, primary900_night):.2f}:1")
print(f"neutral000 vs accent500: {contrast_ratio(neutral000_night, accent500_night):.2f}:1")
print(f"neutral000 vs accent700: {contrast_ratio(neutral000_night, accent700_night):.2f}:1")
print(f"neutral000 vs accent900: {contrast_ratio(neutral000_night, accent900_night):.2f}:1")
print(f"neutral000 vs neutral800: {contrast_ratio(neutral000_night, neutral800_night):.2f}:1")
print("\n=== LIGHT MODE CONTRAST RATIOS (for comparison) ===")
print(f"neutral000 vs primary500: {contrast_ratio(neutral000_light, primary500_light):.2f}:1")
print(f"neutral000 vs accent500: {contrast_ratio(neutral000_light, accent500_light):.2f}:1")
print(f"neutral900 vs primary500: {contrast_ratio(neutral900_light, primary500_light):.2f}:1")
print(f"neutral900 vs accent500: {contrast_ratio(neutral900_light, accent500_light):.2f}:1")
print("\n=== WCAG AA STANDARDS ===")
print("Normal text (body): 4.5:1")
print("Large text (18pt+): 3:1")
print("Graphics/UI components: 3:1")
print("\n=== BRAND CONSISTENCY CHECK ===")
print(f"Primary500 Light (#4869F0) vs Dark (#4264F0): Similar? {contrast_ratio('#4869F0', '#4264F0') < 1.1}")
print(f"Accent500 Light (#FF6400) vs Dark (#F56000): Similar? {contrast_ratio('#FF6400', '#F56000') < 1.1}")
EOFRepository: UMC-PRODUCT/umc-product-android Length of output: 161 🏁 Script executed: python3 << 'EOF'
# Simplified WCAG contrast calculation
def contrast(hex1, hex2):
hex1 = hex1.lstrip('#')
hex2 = hex2.lstrip('#')
r1, g1, b1 = int(hex1[0:2], 16), int(hex1[2:4], 16), int(hex1[4:6], 16)
r2, g2, b2 = int(hex2[0:2], 16), int(hex2[2:4], 16), int(hex2[4:6], 16)
def lum(r, g, b):
rgb = [r/255, g/255, b/255]
rgb = [x/12.92 if x <= 0.03928 else ((x+0.055)/1.055)**2.4 for x in rgb]
return 0.2126*rgb[0] + 0.7152*rgb[1] + 0.0722*rgb[2]
l1, l2 = lum(r1, g1, b1), lum(r2, g2, b2)
lighter = max(l1, l2)
darker = min(l1, l2)
return round((lighter + 0.05) / (darker + 0.05), 2)
bg = "#121212"
colors = {
"primary500": "#4264F0",
"primary700": "#94A6FF",
"primary900": "#DBE2FF",
"accent500": "#F56000",
"accent700": "#FFA266",
"accent900": "#FFEDE0",
"neutral800": "#EBEDEF"
}
print("Dark Mode Contrast (neutral000 bg):")
for name, color in colors.items():
ratio = contrast(bg, color)
status = "✓ AA" if ratio >= 4.5 else ("✓ Large" if ratio >= 3 else "✗ Fail")
print(f"{name:15} {color}: {ratio}:1 {status}")
EOFRepository: UMC-PRODUCT/umc-product-android Length of output: 375 Primary 컬러의 접근성 확인이 필요합니다. 다크 모드용 Primary와 Accent 컬러의 접근성을 검증했습니다: WCAG AA 대비 비율 결과:
브랜드 일관성: 라이트 모드와 다크 모드의 Primary/Accent 색상이 일관되게 유지됩니다. 권장사항:
🤖 Prompt for AI Agents |
||
|
|
||
|
|
||
| <color name="neutral000">#121212</color> | ||
| <color name="neutral100">#28292F</color> | ||
| <color name="neutral200">#3A3F46</color> | ||
| <color name="neutral300">#626C75</color> | ||
| <color name="neutral400">#7C8792</color> | ||
| <color name="neutral500">#A6ADB5</color> | ||
| <color name="neutral600">#C2C7CC</color> | ||
| <color name="neutral700">#DCDDE0</color> | ||
| <color name="neutral800">#EBEDEF</color> | ||
| <color name="neutral900">#F7F7F7</color> | ||
|
Comment on lines
+29
to
+38
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Check light mode neutral colors
echo "=== Light mode neutral colors ==="
if [ -f "presentation/src/main/res/values/colors.xml" ]; then
cat "presentation/src/main/res/values/colors.xml" | grep -E 'neutral[0-9]+'
else
find . -name "colors.xml" -type f ! -path "*/values-night/*" | head -5
fi
echo -e "\n=== Dark mode neutral colors ==="
if [ -f "presentation/src/main/res/values-night/colors.xml" ]; then
cat "presentation/src/main/res/values-night/colors.xml" | grep -E 'neutral[0-9]+'
fiRepository: UMC-PRODUCT/umc-product-android Length of output: 1042 의미론적 색상 네이밍 일관성 문제 수정 필요 다크 모드와 라이트 모드의 neutral 색상 스케일이 의미론적으로 일관성이 없습니다.
같은 이름(neutral000)이 모드별로 정반대의 의미를 가지므로, 같은 색상 이름이 두 모드에서 같은 의미론적 역할을 하도록 수정해야 합니다. 예를 들어 neutral000은 양쪽 모드에서 주 배경색으로 사용되어야 합니다. |
||
|
|
||
|
|
||
| <color name="success100">#044836</color> | ||
| <color name="success300">#076E51</color> | ||
| <color name="success500">#0B9D71</color> | ||
| <color name="success700">#87DEC4</color> | ||
| <color name="success900">#D4F7EB</color> | ||
|
|
||
|
|
||
| <color name="warning100">#9E6500</color> | ||
| <color name="warning300">#C77E00</color> | ||
| <color name="warning500">#FFA500</color> | ||
| <color name="warning700">#FFCD75</color> | ||
| <color name="warning900">#FFF4BD</color> | ||
|
|
||
|
|
||
| <color name="danger100">#751A1A</color> | ||
| <color name="danger300">#A82424</color> | ||
| <color name="danger500">#E03131</color> | ||
| <color name="danger700">#F29B9B</color> | ||
| <color name="danger900">#FDECEC</color> | ||
|
Comment on lines
+41
to
+59
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: Short answer
Recommended token set (follow M3 naming/roles)
Usage rules (brief)
If you want, I can:
Citations:
🌐 Web query:
💡 Result: Summary — Material (Android) color system: tonal palettes & semantic colors
Sources
Would you like examples (palette tone numbers, sample hex outputs, or Compose code showing colorScheme usage)? 🌐 Web query:
💡 Result: Summary — Material Design 3 (M3) tonal palette & token structure
Sources
🌐 Web query:
💡 Result: Short answer — how levels work:
References
Material Design 3 시맨틱 컬러 패턴을 따르지 않습니다. Material Design 3 표준에서는 시맨틱 컬러(Success, Warning, Danger)를 다음과 같이 정의해야 합니다:
현재 구현은 🤖 Prompt for AI Agents |
||
|
|
||
|
|
||
|
|
||
| </resources> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <resources> | ||
| <attr name="colorBackgroundSemantic" format="color"/> | ||
| <attr name="colorBorderSemantic" format="color"/> | ||
| <attr name="colorTextPrimarySemantic" format="color"/> | ||
| <attr name="colorTextSecondarySemantic" format="color"/> | ||
| <attr name="colorTextDisablePlaceholderSemantic" format="color"/> | ||
| </resources> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,160 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <resources> | ||
|
|
||
| <style name="LargeTitle"> | ||
| <item name="android:textSize">34sp</item> | ||
| <item name="lineHeight">41sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">0.01</item> | ||
| </style> | ||
|
|
||
| <style name="Title1"> | ||
| <item name="android:textSize">28sp</item> | ||
| <item name="lineHeight">34sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">0.01</item> | ||
| </style> | ||
|
|
||
| <style name="Title2"> | ||
| <item name="android:textSize">22sp</item> | ||
| <item name="lineHeight">28sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">0.015</item> | ||
| </style> | ||
|
|
||
| <style name="Title3"> | ||
| <item name="android:textSize">20sp</item> | ||
| <item name="lineHeight">25sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">0.019</item> | ||
| </style> | ||
|
|
||
| <style name="Headline"> | ||
| <item name="android:textSize">17sp</item> | ||
| <item name="lineHeight">22sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">-0.02</item> | ||
| </style> | ||
|
|
||
| <style name="Body"> | ||
| <item name="android:textSize">17sp</item> | ||
| <item name="lineHeight">21sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">-0.02</item> | ||
| </style> | ||
|
|
||
| <style name="Callout"> | ||
| <item name="android:textSize">16sp</item> | ||
| <item name="lineHeight">21sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">-0.02</item> | ||
| </style> | ||
|
|
||
| <style name="Subheadline"> | ||
| <item name="android:textSize">15sp</item> | ||
| <item name="lineHeight">20sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">-0.0016</item> | ||
| </style> | ||
|
|
||
| <style name="Footnote"> | ||
| <item name="android:textSize">13sp</item> | ||
| <item name="lineHeight">18sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">-0.006</item> | ||
| </style> | ||
|
|
||
| <style name="Caption1"> | ||
| <item name="android:textSize">12sp</item> | ||
| <item name="lineHeight">16sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">0</item> | ||
| </style> | ||
|
|
||
| <style name="Caption2"> | ||
| <item name="android:textSize">11sp</item> | ||
| <item name="lineHeight">13sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_regular</item> | ||
| <item name="android:letterSpacing">0.0005</item> | ||
| </style> | ||
|
|
||
|
|
||
|
|
||
| <style name="LargeTitleBold"> | ||
| <item name="android:textSize">34sp</item> | ||
| <item name="lineHeight">41sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">0.01</item> | ||
| </style> | ||
|
|
||
| <style name="Title1Bold"> | ||
| <item name="android:textSize">28sp</item> | ||
| <item name="lineHeight">34sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">0.01</item> | ||
| </style> | ||
|
|
||
| <style name="Title2Bold"> | ||
| <item name="android:textSize">22sp</item> | ||
| <item name="lineHeight">28sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">0.015</item> | ||
| </style> | ||
|
|
||
| <style name="Title3Bold"> | ||
| <item name="android:textSize">20sp</item> | ||
| <item name="lineHeight">25sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">0.019</item> | ||
| </style> | ||
|
|
||
| <style name="HeadlineBold"> | ||
| <item name="android:textSize">17sp</item> | ||
| <item name="lineHeight">22sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">-0.02</item> | ||
| </style> | ||
|
|
||
| <style name="BodyBold"> | ||
| <item name="android:textSize">17sp</item> | ||
| <item name="lineHeight">21sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">-0.02</item> | ||
| </style> | ||
|
|
||
| <style name="CalloutBold"> | ||
| <item name="android:textSize">16sp</item> | ||
| <item name="lineHeight">21sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">-0.02</item> | ||
| </style> | ||
|
|
||
| <style name="SubheadlineBold"> | ||
| <item name="android:textSize">15sp</item> | ||
| <item name="lineHeight">20sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">-0.0016</item> | ||
| </style> | ||
|
|
||
| <style name="FootnoteBold"> | ||
| <item name="android:textSize">13sp</item> | ||
| <item name="lineHeight">18sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">-0.006</item> | ||
| </style> | ||
|
|
||
| <style name="Caption1Bold"> | ||
| <item name="android:textSize">12sp</item> | ||
| <item name="lineHeight">16sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">0</item> | ||
| </style> | ||
|
|
||
| <style name="Caption2Bold"> | ||
| <item name="android:textSize">11sp</item> | ||
| <item name="lineHeight">13sp</item> | ||
| <item name="android:fontFamily">@font/pretendard_bold</item> | ||
| <item name="android:letterSpacing">0.0005</item> | ||
| </style> | ||
|
|
||
| </resources> |
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.
테스트용 버튼을 프로덕션 레이아웃에서 제거하세요.
"test Button"은 디자인 시스템을 테스트하기 위한 것으로 보입니다. 프로덕션 코드에 머지하기 전에 제거하거나, 데모 목적이라면 주석으로 명확히 표시해주세요.
🤖 Prompt for AI Agents