-
Notifications
You must be signed in to change notification settings - Fork 0
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
[WEAV-30] DesignSystem Core #10
Conversation
* [WEAV-31] Resource - color asset 추가 * [WEAV-31] GradientA 구현
* [WEAV-31] 디자인시스템 - Color Asset 구현 (#6) * [WEAV-31] Resource - color asset 추가 * [WEAV-31] GradientA 구현 * [WEAV-32] 모듈명 DesignCore 로 변경, Pretendard 추가 * [WEAV-32] Pretendard View Modifier 생성 * [WEAV-32] Roboto Slab 폰트 구성 * [WEAV-32] Font LineHeight 적용 * [WEAV-32] DesignSystem - Typography 구현 * [WEAV-32] add DesignCore font test
Walkthrough이 변경 사항은 SwiftUI 애플리케이션의 디자인 시스템을 개선하기 위한 여러 파일의 수정 및 추가를 포함합니다. 주요 변경 사항으로는 새로운 색상 자산, 폰트 관리 시스템, UI 구성 요소의 스타일링 개선, 그리고 테스트 기능의 추가가 있습니다. 또한, 기존의 Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant App
participant DesignPreviewView
participant ColorManager
participant FontManager
User->>App: Launch Application
App->>DesignPreviewView: Load Design Preview
DesignPreviewView->>ColorManager: Request Color Palettes
ColorManager-->>DesignPreviewView: Return Color Palettes
DesignPreviewView->>FontManager: Request Typography Styles
FontManager-->>DesignPreviewView: Return Typography Styles
DesignPreviewView-->>User: Display Design Preview
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Outside diff range and nitpick comments (2)
Projects/DesignSystem/DesignCore/Sources/RobotoSlab.swift (1)
24-40
:RobotoSlabModifier
구조체의 구현이 좋아 보입니다.
RobotoSlabModifier
구조체는 Roboto Slab 폰트를 SwiftUI 뷰에 적용하고 선 높이를 조정하는 로직을 깔끔하게 처리합니다. 구현이 정확해 보입니다.그러나 26번 줄에서
nil
로 선택적 변수를 초기화하는 것은 불필요합니다. 이 부분을 제거하는 것이 좋겠습니다:- var lineHeight: CGFloat? = nil + var lineHeight: CGFloat?Tools
SwiftLint
[Warning] 26-26: Initializing an optional variable with nil is redundant
(redundant_optional_initialization)
Projects/DesignSystem/DesignCore/Sources/Pretendard.swift (1)
53-70
: 잘 구현되었지만, 작은 개선 사항이 있습니다.
PretendardModifier
는 선택한 폰트 굵기와 크기를 SwiftUI 뷰에 적용하는 좋은 방법을 제공합니다. 선 높이 조정도 잘 처리하고 있습니다.그러나
lineHeight
속성의 초기화는 불필요합니다. 다음과 같이 개선할 수 있습니다:-var lineHeight: CGFloat? = nil +var lineHeight: CGFloat?Tools
SwiftLint
[Warning] 56-56: Initializing an optional variable with nil is redundant
(redundant_optional_initialization)
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (10)
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-Black.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-Bold.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-ExtraBold.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-ExtraLight.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-Light.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-Medium.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-Regular.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-SemiBold.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/Pretendard-Thin.otf
is excluded by!**/*.otf
Projects/DesignSystem/DesignCore/Resources/Fonts/RobotoSlab-Medium.ttf
is excluded by!**/*.ttf
Files selected for processing (58)
- Projects/App/Sources/ContentView.swift (1 hunks)
- Projects/App/Sources/DesignPreviewView.swift (1 hunks)
- Projects/App/Sources/Weave2IOSApp.swift (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Background.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Black.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Blue300.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/DarkBlue.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/DarkGreen.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/DarkPink.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/GradientA0.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/GradientA1.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey100.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey200.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey300.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey400.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey500.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightBlue.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightGreen.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightPink.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightYellow.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Red300.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignCore/Sources/Color+Ext.swift (1 hunks)
- Projects/DesignSystem/DesignCore/Sources/Font+Ext.swift (1 hunks)
- Projects/DesignSystem/DesignCore/Sources/LinearGradient+Ext.swift (1 hunks)
- Projects/DesignSystem/DesignCore/Sources/Pretendard.swift (1 hunks)
- Projects/DesignSystem/DesignCore/Sources/RobotoSlab.swift (1 hunks)
- Projects/DesignSystem/DesignCore/Sources/Typography.swift (1 hunks)
- Projects/DesignSystem/DesignCore/UnitTest/DesignCoreTest.swift (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Background.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Black.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Blue300.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/DarkBlue.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/DarkGreen.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/DarkPink.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/GradientA0.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/GradientA1.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey100.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey200.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey300.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey400.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey500.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightBlue.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightGreen.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightPink.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightYellow.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Red300.colorset/Contents.json (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Sources/LinearGradient+Ext.swift (1 hunks)
- Projects/DesignSystem/DesignSystemKit/Sources/temp.swift (0 hunks)
- Projects/DesignSystem/Project.swift (1 hunks)
- Projects/Features/Main/Sources/MainView.swift (1 hunks)
- Tuist/ProjectDescriptionHelpers/Target+extensions.swift (1 hunks)
- Tuist/ProjectDescriptionHelpers/TargetConfiguration.swift (2 hunks)
- Tuist/ResourceSynthesizers/Assets.stencil (1 hunks)
- Tuist/ResourceSynthesizers/Fonts.stencil (1 hunks)
- Tuist/ResourceSynthesizers/JSON.stencil (1 hunks)
- Workspace.swift (1 hunks)
Files not reviewed due to no reviewable changes (1)
- Projects/DesignSystem/DesignSystemKit/Sources/temp.swift
Files skipped from review due to trivial changes (32)
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Black.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/DarkGreen.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/DarkPink.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/GradientA1.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey100.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey200.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey300.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey400.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Grey500.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightBlue.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightGreen.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightPink.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/LightYellow.colorset/Contents.json
- Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Red300.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Background.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Black.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/DarkPink.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/GradientA1.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey100.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey200.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey300.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey400.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Grey500.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightBlue.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightGreen.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightPink.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/LightYellow.colorset/Contents.json
- Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Red300.colorset/Contents.json
- Tuist/ResourceSynthesizers/Fonts.stencil
- Tuist/ResourceSynthesizers/JSON.stencil
Additional context used
SwiftLint
Projects/DesignSystem/DesignCore/Sources/RobotoSlab.swift
[Warning] 26-26: Initializing an optional variable with nil is redundant
(redundant_optional_initialization)
Projects/DesignSystem/DesignCore/Sources/Pretendard.swift
[Warning] 56-56: Initializing an optional variable with nil is redundant
(redundant_optional_initialization)
Additional comments not posted (50)
Projects/App/Sources/Weave2IOSApp.swift (1)
7-7
: 초기 뷰 변경이 디자인 시스템 개선 목표와 일치합니다.
ContentView
에서DesignPreviewView
로의 변경은 이 PR의 핵심 디자인 시스템 구축 목표와 잘 맞습니다. 이 변경으로 인해 앱 시작 시 사용자 경험이 달라질 것으로 예상됩니다.
DesignPreviewView
가 완전히 구현되고 테스트되었는지 확인하세요. 다음 스크립트를 실행하여DesignPreviewView
의 구현을 확인하세요:Verification successful
DesignPreviewView
가 적절히 구현되어 있습니다.
DesignPreviewView
의 구현을 검토한 결과, 다음과 같은 사항을 확인했습니다:
View
프로토콜을 준수하는 구조체로 올바르게 정의되어 있습니다.body
속성이 구현되어 있으며, 다양한 디자인 시스템 요소를 포함하고 있습니다.- 색상 팔레트, 타이포그래피 스타일, 그라디언트 등 다양한 디자인 요소를 보여주고 있습니다.
NavigationStack
과ScrollView
를 사용하여 적절한 구조로 구성되어 있습니다.#Preview
제공자가 포함되어 있어 SwiftUI 프리뷰를 지원합니다.이 구현은 디자인 시스템의 주요 요소들을 효과적으로 보여주는 목적에 잘 부합합니다.
DesignCore
모듈과의 통합도 확인되었습니다.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: `DesignPreviewView`의 구현 확인 # Test: `DesignPreviewView` 구조체 선언 검색. # Expect: `DesignPreviewView` 구조체 선언이 발견되어야 함. rg --type swift $'struct DesignPreviewView' # Test: `DesignPreviewView` 내부의 `body` 속성 검색. # Expect: `DesignPreviewView` 내부에 `body` 속성이 정의되어 있어야 함. rg --type swift $'struct DesignPreviewView \{ \$\$\$ var body: some View \{ \$\$\$ \} \$\$\$ \}'Length of output: 424
Script:
#!/bin/bash # Description: `DesignPreviewView`의 구현 확인 (수정된 버전) # Test: `DesignPreviewView` 내의 `body` 속성 검색 # Expect: `DesignPreviewView` 내에 `body` 속성이 정의되어 있어야 함 rg --type swift --multiline 'struct DesignPreviewView:.*?\{.*?var body:.*?View.*?\{.*?\}' -U # `DesignPreviewView.swift` 파일의 전체 내용 표시 cat Projects/App/Sources/DesignPreviewView.swiftLength of output: 4190
Projects/Features/Main/Sources/MainView.swift (2)
9-9
: 디자인 프레임워크 변경 승인
DesignSystemKit
에서DesignCore
로의 import 문 변경은 코어 디자인 시스템 구축이라는 PR 목표와 일치합니다. 변경 사항이 적절해 보입니다.
17-18
:MainView
스타일링 변경 승인
MainView
컴포넌트의 텍스트 색상을 임시 색상에서 고정 빨간색으로 변경하고 배경에 그라데이션을 적용한 것은 시각적인 표현을 향상시키고 일관된 모양을 제공합니다. 이러한 변경은 디자인 시스템 개선이라는 PR 목표와 잘 부합합니다. 스타일링 변경 사항이 적절해 보입니다.Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/DarkGreen.colorset/Contents.json (1)
1-20
: 새로운DarkGreen
색상 자산이 디자인 시스템에 잘 추가되었습니다!이 변경 사항은 애플리케이션 전반에서 일관되게 사용할 수 있는 어두운 녹색 옵션을 제공함으로써 디자인 시스템을 향상시킵니다. 색상 정의가 올바른 JSON 구조를 따르고 있으며, 선택된 색상 공간과 투명도 값이 적절합니다. 또한 보편적인 idiom을 사용하여 다양한 기기에서 색상이 정확하게 재현될 수 있도록 합니다.
Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Blue300.colorset/Contents.json (1)
1-20
: 색상 에셋 파일 추가를 승인합니다.이 파일은 디자인 시스템에 "Blue300"이라는 새로운 색상을 정의하고 있습니다. 색상은 display-P3 색상 공간에서 RGBA 구성 요소로 지정되어 있으며, 모든 디바이스에 적용 가능한 universal로 표시되어 있습니다. 또한 파일에는 작성자와 버전에 대한 메타데이터도 포함되어 있어 에셋 관리와 버전 관리에 도움이 됩니다.
이 색상 에셋의 추가는 애플리케이션 전체에서 참조하고 활용할 수 있는 특정 색상 정의를 제공함으로써 디자인 시스템을 향상시킵니다.
Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/DarkBlue.colorset/Contents.json (1)
1-20
: 새로운 "DarkBlue" 색상 자산이 잘 정의되었습니다.이 파일은 디자인 시스템에 "DarkBlue"라는 새로운 색상 자산을 추가합니다. 색상은 display-p3 색상 공간에서 RGBA 구성 요소로 올바르게 지정되었으며, 모든 플랫폼에서 사용할 수 있도록 "universal" idiom으로 설정되었습니다.
이 표준화된 색상 참조를 추가하면 UI 구성 요소에서 쉽게 활용할 수 있으므로 디자인 시스템이 향상됩니다.
Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/Blue300.colorset/Contents.json (1)
1-20
: 새로운 색상 자산이 잘 추가되었습니다!
Blue300
색상이DesignSystemKit
에 올바르게 정의되었습니다. 이 색상은 display-p3 색상 공간에서 특정 RGB 및 알파 값으로 지정되었으며, 모든 기기 유형에서 사용할 수 있도록 universal로 표시되었습니다. 이 파일은 Xcode의 색상 자산 파일에 대한 표준 구조와 메타데이터를 따르고 있습니다.이 추가 사항은 애플리케이션 전체에서 사용할 수 있는 특정 색상 정의를 제공함으로써 디자인 시스템을 향상시키고, 시각적 디자인의 일관성을 보장합니다.
Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/DarkBlue.colorset/Contents.json (1)
1-20
: 잘 정의된 색상 리소스 파일입니다!이 파일은 "DarkBlue"라는 이름의 새로운 색상 리소스를 올바른 JSON 형식으로 정의하고 있습니다. display-p3 색상 공간을 사용하여 현대적인 디자인 시스템에 적합한 색상을 지정했으며, RGBA 컴포넌트 값도 유효합니다. 또한 이 색상을 "universal"로 지정하여 모든 디바이스에서 사용할 수 있도록 했습니다. 파일의 출처와 버전에 대한 메타데이터도 포함되어 있어 유용한 정보를 제공합니다.
Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/Background.colorset/Contents.json (1)
1-20
: 잘 정의된 색상 세트입니다!이 파일은 애플리케이션의 디자인 시스템에 표준화된 배경색을 제공하는 색상 세트를 올바르게 정의합니다. 색상 공간, 구성 요소 및 관용구가 올바르게 지정되었으며 메타데이터는 파일의 출처와 버전에 대한 유용한 정보를 제공합니다. "universal" 관용구는 서로 다른 장치에서 일관된 모양을 보장합니다.
이 색상 세트 정의 파일의 추가를 승인합니다.
Projects/DesignSystem/DesignCore/Resources/Colors/Colors.xcassets/GradientA0.colorset/Contents.json (1)
1-20
: 잘 작성된 색상 정의입니다!이 파일은 디자인 시스템에 새로운 색상을 추가하는 데 필요한 모든 요소를 포함하고 있습니다:
- display-P3 색상 공간을 사용하여 더 넓은 색상 범위를 제공합니다.
- 알파 값이 1.000이고 특정 RGB 구성 요소를 가진 색상을 정의합니다.
- "universal" idiom을 사용하여 다양한 기기에서 사용할 수 있도록 합니다.
- 파일의 작성자와 버전에 대한 메타데이터를 포함합니다.
이 색상 정의는 디자인 시스템에서 일관되게 사용될 수 있는 그라데이션 색상을 제공하여 전반적인 디자인을 향상시킵니다.
Projects/DesignSystem/DesignSystemKit/Resources/Colors/Colors.xcassets/GradientA0.colorset/Contents.json (1)
1-20
: 잘 작성된 색상 정의입니다!이 JSON 파일은
GradientA0
이라는 새로운 색상 세트를 정의하고 있습니다. 색상은display-p3
색상 공간에서 정의되어 있으며, 완전한 불투명도와 RGB 구성 요소를 가지고 있습니다. 또한 "universal" idiom으로 설정되어 모든 기기 유형에서 사용할 수 있습니다.메타데이터에는 저작 도구로 Xcode가 사용되었으며 버전이 1임을 나타내고 있습니다. 이는 색상 세트 정의에 유용한 정보를 제공합니다.
전반적으로 이 색상 정의는 잘 구성되어 있으며, 디자인 시스템에 새로운 그라데이션 색상 옵션을 제공합니다.
Projects/DesignSystem/DesignCore/Sources/LinearGradient+Ext.swift (1)
11-17
: 잘 작성된 코드입니다!
LinearGradient
를 확장하여gradientA
라는 재사용 가능한 그라디언트를 제공하는 것은 좋은 아이디어입니다. 이렇게 하면 앱 전체에서 일관된 디자인을 유지하면서 그라디언트 생성 로직을 추상화할 수 있습니다.코드는 올바른 구문과 명명 규칙을 따르고 있으며, 주석도 잘 작성되어 있습니다. 전반적으로 잘 작성된 코드라고 생각합니다.
Projects/DesignSystem/DesignSystemKit/Sources/LinearGradient+Ext.swift (1)
11-17
: 잘 작성된 코드입니다!
LinearGradient
클래스를 확장하여gradientA
라는 정적 속성을 추가한 것은 매우 유용해 보입니다. 이 속성은DesignSystemKit
에서 정의된 색상을 사용하여 선형 그라데이션을 생성하므로, 코드 재사용성과 일관성을 높일 수 있습니다. 또한public
접근 제어자를 사용하여 다른 모듈에서도 이 확장을 사용할 수 있도록 한 점도 좋습니다.Projects/DesignSystem/DesignCore/Sources/Color+Ext.swift (1)
11-19
: 좋은 확장 기능입니다!이 확장 기능은 16진수 값에서
Color
객체를 쉽게 생성할 수 있는 편리한 이니셜라이저를 추가합니다. 주요 장점은 다음과 같습니다:
- 16진수에서 RGB 구성 요소를 추출하는 비트 연산을 추상화합니다.
- RGB 값을 [0, 1] 범위로 변환하는 로직을 캡슐화합니다.
- 대부분의 사용 사례에 적합한 기본 불투명도 값 1.0을 제공합니다.
- SwiftUI의
Color
구조체를 자연스럽게 확장합니다.이 확장 기능은 코드 가독성을 향상시키고 16진수 색상 값 사용을 단순화합니다. 전반적으로 매우 유용한 추가 기능입니다!
Projects/DesignSystem/Project.swift (3)
8-9
: 타겟 이름 변경 및 리소스 사용 설정 확인타겟 이름을
.designSystemKit
에서.DesignCore
로 변경한 것은 프로젝트 구조를 리팩토링하거나 재구성했음을 나타냅니다. 또한useResource: true
를 설정하여.DesignCore
타겟에서 리소스를 활용할 수 있게 되었네요.변경 사항 자체는 문제없어 보입니다. 다만 이 타겟을 참조하는 다른 부분이 있다면 함께 업데이트 되어야 할 것 같아요.
14-19
:.DesignCore
에 대한 단위 테스트 타겟 추가 확인
.DesignCore
에 대한 새로운 단위 테스트 타겟을 추가한 것은 매우 좋은 결정이에요. 이를 통해 핵심 디자인 기능을 테스트하고 프로젝트의 견고성과 신뢰성을 높일 수 있을 거예요.단위 테스트 타겟이
.DesignCore
에 의존하도록 설정한 것도 관련 코드에 접근하고 테스트할 수 있도록 하는 데 도움이 될 거예요. 잘 하셨습니다!
23-23
:.componentsKit
타겟의 의존성 업데이트 확인
.componentsKit
타겟이 이제 이전의.designSystemKit
대신.DesignCore
에 의존하도록 변경된 것을 확인했어요.이 변경은 컴포넌트와 핵심 디자인 요소 간의 적절한 관계를 유지하는 데 도움이 될 거예요. 또한 이전 타겟 이름을 참조함으로써 발생할 수 있는 잠재적인 빌드 오류나 런타임 이슈를 방지할 수 있을 거예요. 좋은 변경이에요!
Projects/App/Sources/ContentView.swift (3)
5-5
: 좋아 보입니다!
DesignCore
모듈을 가져오는 것은 이 파일에서 디자인 시스템 관련 기능을 사용하기 위해 필요해 보입니다.
12-12
: 좋아 보입니다!
VStack
의spacing
파라미터를 20으로 설정하는 것은 자식 뷰 사이의 수직 간격을 적절하게 조정할 것으로 보입니다.
15-16
: 의도한 폰트 스타일링인지 확인이 필요합니다.
.pretendard(weight: ._300, size: 20)
과.robotoSlab(size: 12)
메서드를 동시에 적용하는 것은 일반적이지 않습니다. 의도한 대로 폰트 스타일이 적용되는지 확인해 주세요.Projects/DesignSystem/DesignCore/Sources/Font+Ext.swift (2)
12-16
: 잘 구현되었습니다!
Font
확장을 통해UIFont
에서Font
로의 변환을 쉽게 할 수 있게 되었네요. 이는 UIKit과 SwiftUI 간의 폰트 상호 운용성을 향상시킵니다.
18-31
: 훌륭한 기능 추가입니다!
DesignCoreFontConvertible
확장은 사용자 정의 폰트를 UIKit과 SwiftUI 폰트 표현 사이에서 원활하게 전환할 수 있도록 해줍니다. 또한 폰트 초기화 실패 시 명확한 오류 메시지를 제공하는 것도 좋습니다.Tuist/ProjectDescriptionHelpers/TargetConfiguration.swift (2)
16-16
: 열거형 케이스 이름 변경이 적절해 보입니다.
designSystemKit
케이스를DesignCore
로 변경한 것은 다른 케이스들과의 이름 규칙 일관성을 높이고, 더 명확한 의미를 전달하는 것 같습니다. 열거형의 기능에는 영향을 주지 않는 단순한 이름 변경이므로 문제없어 보입니다.
28-28
:DesignCore
케이스를.designSystem
프로젝트 경로에 매핑한 것이 적절해 보입니다.
DesignCore
타겟을 디자인 시스템 프로젝트로 분류하기 위해projectPath
계산 속성을 업데이트한 것은 열거형 케이스 이름 변경과 일관성이 있고, 타겟을 올바른 프로젝트에 배치하는데 도움이 될 것 같습니다.Projects/DesignSystem/DesignCore/Sources/RobotoSlab.swift (3)
12-16
: 좋아 보입니다!
Font
확장은 크기를 지정하여 Roboto Slab 폰트를 쉽게 가져올 수 있는 편리한 방법을 제공합니다. 구현이 깔끔하고 정확해 보입니다.
18-22
: 좋아 보입니다!
UIFont
확장은 크기를 지정하여 UIKit에서 Roboto Slab 폰트를 쉽게 가져올 수 있는 편리한 방법을 제공합니다. 구현이 깔끔하고 정확해 보입니다.
42-54
:View
확장의 구현이 좋아 보입니다.
View
확장은 크기와 선택적 줄 높이를 지정하여 SwiftUI 뷰에 Roboto Slab 폰트를 쉽게 적용할 수 있는 편리한 방법을 제공합니다. 이는 애플리케이션 전체에서 Roboto Slab 폰트로 텍스트 스타일을 지정하는 깨끗하고 재사용 가능한 방법입니다.Projects/DesignSystem/DesignCore/UnitTest/DesignCoreTest.swift (3)
12-46
: 클래스 구조가 올바릅니다!
DesignCoreTest
클래스는XCTestCase
를 상속받아 테스트 클래스로 올바르게 구성되어 있습니다.setUpWithError
와tearDownWithError
메서드는 현재 비어 있지만, 필요한 경우 설정 및 정리를 위해 사용될 수 있습니다.
22-27
: 폰트 가져오기 테스트가 잘 작성되었습니다!
testFontImport
함수는 Pretendard와 Roboto Slab 폰트의 가져오기를 검증합니다. 사용자 정의 폰트 메서드를 사용하여 폰트 인스턴스를 생성하고, 생성된 폰트 인스턴스의 패밀리 이름이 예상 값과 일치하는지 확인합니다. 테스트 로직이 올바르며 사용자 정의 폰트 메서드가 예상대로 작동하는지 확인합니다.
29-45
: 타이포그래피 테스트가 잘 작성되었습니다!
testTypography
함수는 타이포그래피 동작을 검증합니다. 먼저 영어 타이포그래피에pretendardWeight
가 없는지 테스트합니다. 그런 다음 다른 모든 타이포그래피 케이스에pretendardWeight
가 있는지 테스트합니다. 테스트 로직이 올바르며 타이포그래피 동작이 예상대로 작동하는지 확인합니다.Workspace.swift (1)
52-57
: 디자인 시스템의 테스트 범위 확장디자인 시스템의 코어 기능에 대한 새로운 테스트 타겟을 추가한 것은 매우 좋은 변경사항입니다. 이를 통해 디자인 시스템의 품질과 안정성을 향상시킬 수 있습니다. 사용자 인터페이스의 일관성과 신뢰성을 유지하는 데 큰 도움이 될 것입니다.
Projects/DesignSystem/DesignCore/Sources/Pretendard.swift (3)
12-45
: 잘 구현되었습니다!
PretendardWeight
열거형은 Pretendard 폰트의 다양한 굵기를 깔끔하게 분류하고 접근할 수 있는 방법을 제공합니다.font
계산 속성은 각 굵기에 해당하는 폰트를 잘 캡슐화하고 있습니다.
47-51
: 잘 구현되었습니다!
UIFont
확장은PretendardWeight
열거형을 활용하여 Pretendard 폰트의UIFont
인스턴스를 편리하게 생성할 수 있는 방법을 제공합니다. 폰트 매핑을 잘 활용하고 있습니다.
72-86
: 잘 구현되었습니다!
View
확장은PretendardModifier
를 사용하여 모든 SwiftUI 뷰에 Pretendard 폰트를 쉽게 적용할 수 있는 편리한 방법을 제공합니다. 폰트 적용과 선 높이 조정을 잘 처리하고 있습니다.Projects/DesignSystem/DesignCore/Sources/Typography.swift (4)
11-31
: 잘 구성된 Typography 열거형입니다!Typography 열거형의 구조와 명명 규칙이 일관되고 설명적입니다. 글꼴 스타일에 따라 잘 분류되어 있으며,
public
접근 제어자와CaseIterable
프로토콜 채택으로 모듈 외부에서 쉽게 접근할 수 있습니다.
34-49
: fontSize 계산 속성이 잘 구현되었습니다.
switch
문을 사용하여 각 typography 케이스를 해당 글꼴 크기에 매핑하는 것이 명확하고 간결합니다. 글꼴 크기는CGFloat
값으로 하드코딩되어 있으며, 논리나 구문에는 문제가 없어 보입니다.
61-76
: pretendardWeight 계산 속성이 잘 구현되었습니다.
switch
문을 사용하여 각 typography 케이스를 해당PretendardWeight
값에 매핑하는 것이 명확하고 간결합니다. 영어 미디엄 케이스에 대해nil
을 반환하는 것은 Pretendard 글꼴을 사용하지 않으므로 적절해 보입니다. 논리나 구문에는 문제가 없어 보입니다.
78-106
: TypographyViewModifier와 typography 뷰 확장이 잘 구현되었습니다.
TypographyViewModifier
구조체는ViewModifier
프로토콜을 구현하여 SwiftUI 뷰에 typography 스타일을 적용합니다.body
메서드는 typography 케이스에 따라 다른 글꼴 스타일을 적용하며, 영어 미디엄 케이스에는robotoSlab
글꼴을, 다른 케이스에는pretendard
글꼴을 사용합니다.
typography
뷰 확장은TypographyViewModifier
의 인스턴스를 생성하고 이를 뷰에 적용하여 편리하게 typography 스타일을 적용할 수 있도록 합니다. 논리나 구문에는 문제가 없어 보입니다.Tuist/ProjectDescriptionHelpers/Target+extensions.swift (1)
74-74
: 리소스 포함 여부를 제어할 수 있는useResource
매개변수 추가를 승인합니다.
make
함수에useResource
매개변수를 추가하여Target
인스턴스 생성 시 리소스 포함 여부를 제어할 수 있게 되었습니다. 이 변경은 함수의 유연성을 향상시키며, 기존 호출자에게 영향을 주지 않습니다.useResource
의 기본값이false
이므로 이 매개변수를 명시적으로 전달하지 않으면 이전과 동일하게 동작할 것입니다.이 변경은 하위 호환성을 유지하며 기존 코드를 손상시키지 않습니다. 따라서 변경 사항을 승인합니다.
Also applies to: 82-82
Projects/App/Sources/DesignPreviewView.swift (5)
12-44
: 잘 구현되었습니다!
DesignPreviewView
구조체와 색상 속성들이DesignCore
모듈의 색상들을 사용하여 올바르게 정의되었습니다.colorGroups
계산 속성은 뷰에서 쉽게 접근할 수 있도록 색상 배열들을 잘 구성하고 있습니다.
46-65
: 잘 구현되었습니다!
body
속성은NavigationStack
과ScrollView
를 사용하여 스크롤 가능한 뷰를 제공하고 있습니다. 색상 견본들은RoundedRectangle
과HStack
을 사용하여 반복문으로 잘 표시되고 있으며, 그라디언트도LinearGradient
와RoundedRectangle
을 사용하여 올바르게 표시되고 있습니다.
68-103
: 잘 구현되었습니다!다양한 텍스트 요소들이
typography
수정자를 사용하여 서로 다른 타이포그래피 스타일로 잘 표시되고 있습니다. 텍스트 색상은foregroundStyle
수정자를 사용하여DesignCore
색상 또는 사용자 정의Color
인스턴스로 올바르게 설정되고 있습니다.
107-108
: 잘 구현되었습니다!
navigationTitle
수정자를 사용하여 내비게이션 바의 제목을 설정하고,toolbarTitleDisplayMode
수정자를 사용하여 내비게이션 바 제목의 표시 모드를 인라인으로 설정하는 것이 올바르게 구현되었습니다.
113-115
: 잘 구현되었습니다!
#Preview
코드 블록은DesignPreviewView
의 미리보기를 제공하기 위해 사용되었습니다. 이는 Xcode에서 뷰를 미리 볼 수 있는 SwiftUI 기능으로, 미리보기 목적으로DesignPreviewView
의 인스턴스를 생성하는 것이 올바르게 구현되었습니다.Tuist/ResourceSynthesizers/Assets.stencil (6)
23-80
: 자산 카탈로그 매크로의 구현이 잘 되었습니다!자산 유형별로 코드를 생성하기 위한 매크로가 잘 구조화되어 있으며, Jinja 템플릿을 사용하여 제공된 자산 카탈로그를 기반으로 동적 생성을 가능하게 합니다.
94-122
: AR 리소스 그룹 구조체와 확장의 구현이 잘 되었습니다!AR 리소스 그룹에 대해 생성된 코드가 잘 구조화되어 있으며, AR 관련 자산에 편리하게 액세스할 수 있습니다.
ARReferenceImage
및ARReferenceObject
에 대한 확장은 자산 로딩 프로세스를 단순화하여 사용성을 향상시킵니다.
124-149
: 데이터 자산 구조체와 확장의 구현이 잘 되었습니다!데이터 자산에 대해 생성된 코드는 간단명료하며
NSDataAsset
객체에 편리하게 액세스하고 초기화할 수 있는 방법을 제공합니다.NSDataAsset
에 대한 확장은 자산 초기화 프로세스를 단순화합니다.
152-201
: 이미지 자산 구조체와 편의 이니셜라이저의 구현이 잘 되었습니다!이미지 자산에 대해 생성된 코드는 포괄적이며 이미지 자산에 액세스하고 활용할 수 있는 다양한 방법을 제공합니다. 구조체는
UIImage
와SwiftUI.Image
모두에 대한 속성을 제공하여 다양한 사용 사례에 유연하게 대응할 수 있습니다. 편의 이니셜라이저는ImageAsset
구조체에서UIImage
객체를 쉽게 생성할 수 있도록 해줍니다.
205-213
:BundleToken
클래스의 구현이 잘 되었습니다!
BundleToken
클래스는 자산에 액세스하기 위해 올바른 번들을 사용하도록 보장하는 간단한 유틸리티입니다. Swift Package Manager 및 일반 빌드와 같은 다양한 빌드 환경을 처리하여 적절한 번들을 반환합니다.
1-221
:Assets.stencil
파일의 전반적인 구현이 매우 우수합니다!이 파일은 iOS 애플리케이션에서 다양한 자산 유형을 관리하기 위한 Swift 코드 생성을 위한 잘 구조화되고 포괄적인 템플릿을 제공합니다. Jinja 템플레이팅 언어를 활용하여 제공된 자산 카탈로그를 기반으로 동적으로 코드를 생성합니다.
파일은 자산 유형별로 코드 생성을 처리하기 위한 매크로를 정의하며, 생성된 코드에는 액세스 제어자, 자산을 구성하기 위한 열거형, AR 리소스 검색, 데이터 자산 및 이미지 자산에 대한 기능이 포함됩니다.
전반적으로 이 파일은 자산 관리를 위한 유연하고 확장 가능한 솔루션을 제공하며, 코드 생성 프로세스를 간소화하고 자동화합니다. 구현은 깨끗하고 유지 관리가 용이한 방식으로 이루어졌습니다.
구현사항
#6 #7
스크린샷
Summary by CodeRabbit
릴리스 노트
새로운 기능
DesignPreviewView
를 추가하여 다양한 색상 팔레트와 타이포그래피 스타일을 미리 볼 수 있는 기능 제공.MainView
의 시각적 스타일을 개선하여 고정된 빨간색 텍스트와 배경 그라디언트를 적용.버그 수정
ContentView
에서 SMS 인증 요청 로직 제거로 인해 사용자 인증 흐름에 영향을 줄 수 있는 문제 해결.문서화
리팩토링
DesignCore
로 타겟 이름 변경 및 리소스 관리 개선.