Skip to content

[UI/#11] 스타일 가이드 구현#32

Merged
l5x5l merged 5 commits intodevelopfrom
ui/#11-style_guide
Jul 15, 2025
Merged

[UI/#11] 스타일 가이드 구현#32
l5x5l merged 5 commits intodevelopfrom
ui/#11-style_guide

Conversation

@l5x5l
Copy link
Copy Markdown
Contributor

@l5x5l l5x5l commented Jul 15, 2025

[ PR Content ]

피그마에 명시된 스타일 가이드를 구현했습니다.

Related issue

Screenshot 📸

x

Work Description

  • 폰트 파일 추가, 색상 및 글꼴 정의, BitnagilTheme 정의

To Reviewers 📢

  • 폰트 크기는 전부 dp를 사용하도록 맞춰두었습니다!
  • 궁금한 점 있다면 피드백 부탁드립니다!

Summary by CodeRabbit

  • New Features

    • 새로운 색상 팔레트와 감정별 색상, 다양한 그레이/네이비/블루/오렌지 계열 색상 추가
    • 커스텀 폰트 패밀리(pretendard)와 다양한 텍스트 스타일(헤드라인, 타이틀, 바디, 캡션, 버튼 등) 추가
    • Bitnagil 전용 테마 및 타이포그래피 시스템 도입
  • Refactor

    • 기존 Material3 기반 색상 및 타이포그래피 시스템을 Bitnagil 커스텀 시스템으로 전면 교체
  • Chores

    • 사용되지 않는 기존 색상 및 타이포그래피 파일 제거

@l5x5l l5x5l requested a review from wjdrjs00 July 15, 2025 10:51
@l5x5l l5x5l self-assigned this Jul 15, 2025
@l5x5l l5x5l added 📱 UI UI 추가 및 수정 (비지니스 로직을 포함하지 않는 작업) 세환 labels Jul 15, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jul 15, 2025

"""

Walkthrough

디자인 시스템의 색상과 타이포그래피 구조가 대폭 리팩토링되었습니다. 기존의 단순 색상 및 폰트 정의 파일이 삭제되고, 피그마 스타일 가이드에 맞춘 다양한 색상 팔레트와 폰트 스타일, 커스텀 테마 시스템이 새롭게 추가되었습니다. Material3 의존성이 제거되고 자체 CompositionLocal 기반 테마가 도입되었습니다.

Changes

파일(들) 변경 요약
.../designsystem/Color.kt, .../designsystem/Type.kt 기존 색상 및 Typography 정의 파일 삭제
.../designsystem/color/Color.kt, .../designsystem/color/BitnagilColors.kt 다양한 색상 상수 및 BitnagilColors 팔레트, CompositionLocal 도입
.../designsystem/font/Font.kt pretendard 폰트 패밀리 정의 추가
.../designsystem/typography/BitnagilTextStyle.kt BitnagilTextStyle 데이터 클래스 및 dp/sp 변환 로직 추가
.../designsystem/typography/Type.kt BitnagilTypography 클래스 및 LocalBitnagilTypography CompositionLocal 추가
.../designsystem/Theme.kt Material3 기반 테마 제거, BitnagilTheme 오브젝트 및 커스텀 테마 제공 방식 도입

Sequence Diagram(s)

sequenceDiagram
    participant App
    participant BitnagilTheme
    participant CompositionLocal
    participant UIComponent

    App->>BitnagilTheme: BitnagilTheme(darkTheme, content)
    BitnagilTheme->>CompositionLocal: Provide BitnagilColors, BitnagilTypography
    UIComponent->>BitnagilTheme: BitnagilTheme.colors, BitnagilTheme.typography
    BitnagilTheme->>UIComponent: Return current colors/typography
Loading

Assessment against linked issues

Objective Addressed Explanation
폰트 스타일 정의 (#11)
grayScale 색상 정의 (#11)
테마 색상 정의 (#11) BitnagilColors에 grayScale 및 감정색상 등은 정의되었으나, 테마(Primary, Secondary 등 UI의 주 색상 체계) 정의가 명확히 구현되어 있지 않음.

Poem

🐰
새로운 색과 글꼴이 춤을 추네,
토끼의 마음도 한껏 들뜨네!
회색빛 구름, 감정의 무지개,
pretendard 글씨로 스타일 꽉 채워,
다음엔 테마 색상도 꼭 완성해줘!

🖍️✨
"""


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 72c4f4d and dda6186.

📒 Files selected for processing (1)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/Type.kt (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/Type.kt
✨ Finishing Touches
  • 📝 Generate Docstrings

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (3)
core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/color/BitnagilColors.kt (1)

65-66: 다크 테마 색상 구현 필요

현재 bitnagilColorsLight()bitnagilColorsDark()가 동일한 색상을 반환하고 있습니다. 다크 테마 지원을 위해서는 별도의 색상 세트가 필요합니다.

+// TODO: 다크 테마용 색상 세트 구현 필요
 internal fun bitnagilColorsLight(): BitnagilColors = BitnagilColors()
 internal fun bitnagilColorsDark(): BitnagilColors = BitnagilColors()
core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/Type.kt (2)

97-133: 성능 최적화를 위해 속성 캐싱을 고려하세요.

@composable 속성이 매번 새로운 TextStyle 인스턴스를 생성하므로, 자주 사용되는 스타일들은 캐싱을 통해 성능을 개선할 수 있습니다.

다음과 같이 개선할 수 있습니다:

+@Stable
 class BitnagilTypography internal constructor(
     // ... 기존 코드
 ) {
+    private val _headline1BoldCache by lazy { _headline1.copy(fontWeight = FontWeight.Bold) }
+    private val _headline1MediumCache by lazy { _headline1.copy(fontWeight = FontWeight.Medium) }
+    private val _headline1RegularCache by lazy { _headline1 }
+    
-    val headline1Bold: TextStyle @Composable get() = _headline1.copy(fontWeight = FontWeight.Bold).toDpTextStyle
-    val headline1Medium: TextStyle @Composable get() = _headline1.copy(fontWeight = FontWeight.Medium).toDpTextStyle
-    val headline1Regular: TextStyle @Composable get() = _headline1.toDpTextStyle
+    val headline1Bold: TextStyle @Composable get() = _headline1BoldCache.toDpTextStyle
+    val headline1Medium: TextStyle @Composable get() = _headline1MediumCache.toDpTextStyle
+    val headline1Regular: TextStyle @Composable get() = _headline1RegularCache.toDpTextStyle

97-133: 문서화 부족 - KDoc 주석을 추가하세요.

타이포그래피 시스템의 각 스타일이 언제 어떻게 사용되어야 하는지에 대한 문서가 부족합니다.

다음과 같이 KDoc을 추가하세요:

+/**
+ * Bitnagil 디자인 시스템의 타이포그래피 정의
+ * 
+ * 이 클래스는 앱 전체에서 사용되는 텍스트 스타일을 정의합니다.
+ * 각 스타일은 Figma 디자인 시스템에 맞춰 정의되었습니다.
+ */
 @Immutable
 class BitnagilTypography internal constructor(
     // ... 기존 코드
 ) {
+    /** 가장 큰 헤드라인 텍스트 스타일 (26dp) */
     val headline1Bold: TextStyle @Composable get() = _headline1.copy(fontWeight = FontWeight.Bold).toDpTextStyle
+    /** 중간 굵기의 헤드라인 텍스트 스타일 (26dp) */
     val headline1Medium: TextStyle @Composable get() = _headline1.copy(fontWeight = FontWeight.Medium).toDpTextStyle
+    /** 일반 굵기의 헤드라인 텍스트 스타일 (26dp) */
     val headline1Regular: TextStyle @Composable get() = _headline1.toDpTextStyle
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bb19540 and ccc3bcc.

⛔ Files ignored due to path filters (9)
  • core/designsystem/src/main/res/font/pretendard_black.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_bold.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_extra_bold.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_extra_light.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_light.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_medium.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_regular.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_semi_bold.otf is excluded by !**/*.otf
  • core/designsystem/src/main/res/font/pretendard_thin.otf is excluded by !**/*.otf
📒 Files selected for processing (8)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/Color.kt (0 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/Theme.kt (1 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/Type.kt (0 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/color/BitnagilColors.kt (1 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/color/Color.kt (1 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/font/Font.kt (1 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/BitnagilTextStyle.kt (1 hunks)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/Type.kt (1 hunks)
💤 Files with no reviewable changes (2)
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/Type.kt
  • core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/Color.kt
🧰 Additional context used
🧬 Code Graph Analysis (1)
core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/Theme.kt (1)
core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/color/BitnagilColors.kt (2)
  • bitnagilColorsLight (65-65)
  • bitnagilColorsDark (66-66)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (4)
core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/color/Color.kt (1)

29-30: 중복된 색상값 확인 필요

CoolGray7CoolGray5가 동일한 색상값 0xFF0F0F10을 가지고 있습니다. 의도적인 것인지 확인이 필요합니다.

디자인 시스템의 색상 스케일에서는 일반적으로 각 단계가 서로 다른 명도를 가져야 합니다. 피그마 스타일 가이드를 다시 확인해 주세요.

core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/BitnagilTextStyle.kt (1)

14-43: 우수한 텍스트 스타일 구현

밀도 인식 단위 변환과 함께 텍스트 스타일을 잘 캡슐화했습니다. dp와 sp 변환이 적절히 구현되어 있습니다.

core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/typography/Type.kt (2)

1-10: 패키지 구조와 임포트가 적절합니다.

디자인 시스템의 타이포그래피 패키지 구조가 논리적이고, 필요한 Compose 관련 임포트들이 모두 포함되어 있습니다.


135-135: 컴포지션 로컬이 적절하게 구현되었습니다.

BitnagilTypography의 컴포지션 로컬이 올바르게 정의되어 있어 테마 시스템과 통합될 수 있습니다.

Copy link
Copy Markdown
Member

@wjdrjs00 wjdrjs00 left a comment

Choose a reason for hiding this comment

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

토끼가 야무지게 확인해줬네요?!!
textToDp, Sp 둘다 있는게 대응할때 야무진거 같습니다!
바로 머지 고고 👍🏻

@l5x5l l5x5l merged commit c76f0a4 into develop Jul 15, 2025
2 checks passed
@wjdrjs00 wjdrjs00 deleted the ui/#11-style_guide branch July 24, 2025 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

세환 📱 UI UI 추가 및 수정 (비지니스 로직을 포함하지 않는 작업)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI] 스타일 가이드 구현

2 participants