Skip to content

SharedDesignSystem 토큰/컴포넌트 기반 추가 - #10

Merged
gnoes-ios merged 12 commits into
devfrom
feat/shared-design-system
Aug 4, 2026
Merged

SharedDesignSystem 토큰/컴포넌트 기반 추가#10
gnoes-ios merged 12 commits into
devfrom
feat/shared-design-system

Conversation

@gnoes-ios

Copy link
Copy Markdown
Contributor

📌 변경 요약

  • SharedDesignSystem 토큰 계층과 public 접근 API 추가
  • DesignText/DesignButton/SocialLoginButton 공통 컴포넌트 추가
  • Pretendard 등록, social 아이콘, DesignSystem Gallery 및 검증/문서 반영

📌 변경 내용

SharedDesignSystem Tokens

  • Primitive/Semantic Color·Number 토큰 계층 추가
  • Typography/TextStyle 토큰 추가
  • Feature public surface로 Color.ds / Font.ds / CGFloat.ds / TextStyle.ds 추가
  • social 색 토큰(Color.ds.social.*) 정리

SharedDesignSystem Components

  • DesignText 공통 텍스트 컴포넌트 추가
  • DesignButton variant/size/state 골격 추가
  • SocialLoginButton 및 Kakao/Apple provider 추가
  • social 아이콘 asset(icon_social_kakao, icon_social_apple) 추가

Font / App

  • Pretendard Regular/Medium/SemiBold/Bold 리소스 추가
  • DesignSystemFontRegistration 및 App bootstrap 1회 등록 경로 추가

Preview / Test / Docs

  • DEBUG List-Detail DesignSystemGallery 추가
  • 토큰/버튼/소셜/폰트 등록 unit test 추가
  • docs/ARCHITECTURE.md, docs/CONVENTIONS.md DesignSystem 사용 규칙 반영

@gnoes-ios gnoes-ios added the feat 새로운 기능 label Aug 4, 2026
@gnoes-ios gnoes-ios self-assigned this Aug 4, 2026
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: b1c474a6-f1bd-4187-b457-8101efe491c4

📥 Commits

Reviewing files that changed from the base of the PR and between 1e085b6 and 3d75846.

⛔ Files ignored due to path filters (10)
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_apple.imageset/Apple.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_apple.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_kakao.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_kakao.imageset/Kakao.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-Bold.otf is excluded by !**/*.otf
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-Medium.otf is excluded by !**/*.otf
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-Regular.otf is excluded by !**/*.otf
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-SemiBold.otf is excluded by !**/*.otf
📒 Files selected for processing (33)
  • .swiftlint.yml
  • Projects/App/Sources/DI/AppBootstrap.swift
  • Projects/Shared/DesignSystem/Project.swift
  • Projects/Shared/DesignSystem/Sources/Access/CGFloat+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Access/Color+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Access/Font+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButton.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonSize.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonStyle.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonVariant.swift
  • Projects/Shared/DesignSystem/Sources/Components/Social/SocialLoginButton.swift
  • Projects/Shared/DesignSystem/Sources/Components/Social/SocialLoginProvider.swift
  • Projects/Shared/DesignSystem/Sources/Components/Text/DesignText.swift
  • Projects/Shared/DesignSystem/Sources/Foundation/Color+Hex.swift
  • Projects/Shared/DesignSystem/Sources/Foundation/FontRegistration.swift
  • Projects/Shared/DesignSystem/Sources/Placeholder.swift
  • Projects/Shared/DesignSystem/Sources/Preview/DesignSystemGallery.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Primitive/PrimitiveColor.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Primitive/PrimitiveNumber.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Semantic/SemanticColor.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Semantic/SemanticNumber.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Typography/TextStyle.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Typography/Typography.swift
  • Projects/Shared/DesignSystem/Tests/Components/DesignButtonMetricsTests.swift
  • Projects/Shared/DesignSystem/Tests/Components/SocialLoginProviderTests.swift
  • Projects/Shared/DesignSystem/Tests/Foundation/FontRegistrationTests.swift
  • Projects/Shared/DesignSystem/Tests/Smoke/SharedDesignSystemSmokeTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/PrimitiveColorTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/SemanticColorTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/SemanticNumberTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/TypographyTests.swift
  • docs/ARCHITECTURE.md
  • docs/CONVENTIONS.md
💤 Files with no reviewable changes (1)
  • Projects/Shared/DesignSystem/Sources/Placeholder.swift
🚧 Files skipped from review as they are similar to previous changes (26)
  • Projects/Shared/DesignSystem/Tests/Components/SocialLoginProviderTests.swift
  • Projects/Shared/DesignSystem/Tests/Smoke/SharedDesignSystemSmokeTests.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Semantic/SemanticNumber.swift
  • docs/CONVENTIONS.md
  • Projects/Shared/DesignSystem/Sources/Components/Text/DesignText.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonVariant.swift
  • Projects/Shared/DesignSystem/Tests/Foundation/FontRegistrationTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/SemanticNumberTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/PrimitiveColorTests.swift
  • docs/ARCHITECTURE.md
  • Projects/Shared/DesignSystem/Sources/Tokens/Primitive/PrimitiveColor.swift
  • Projects/Shared/DesignSystem/Project.swift
  • Projects/Shared/DesignSystem/Sources/Components/Social/SocialLoginButton.swift
  • Projects/Shared/DesignSystem/Sources/Foundation/FontRegistration.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/SemanticColorTests.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonSize.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Semantic/SemanticColor.swift
  • Projects/Shared/DesignSystem/Sources/Access/CGFloat+DesignSystem.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/TypographyTests.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonStyle.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Typography/TextStyle.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Typography/Typography.swift
  • Projects/Shared/DesignSystem/Sources/Access/Font+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Primitive/PrimitiveNumber.swift
  • Projects/App/Sources/DI/AppBootstrap.swift
  • Projects/Shared/DesignSystem/Sources/Access/Color+DesignSystem.swift

📝 Walkthrough

Summary by CodeRabbit

  • 새 기능

    • 일관된 색상, 간격, 모서리, 타이포그래피 디자인 시스템을 제공합니다.
    • 기본·보조·외곽선·텍스트 버튼과 크기 및 상태별 스타일을 추가했습니다.
    • 카카오·Apple 소셜 로그인 버튼과 공통 텍스트 컴포넌트를 지원합니다.
    • HEX 색상, Pretendard 폰트 등록 및 앱 시작 시 폰트 적용을 제공합니다.
    • DEBUG 환경에서 디자인 요소를 확인할 수 있는 갤러리를 추가했습니다.
  • 문서

    • 디자인 시스템 사용 규칙과 구성, 폰트 및 텍스트 동작을 문서화했습니다.
  • 테스트

    • 색상, 숫자 토큰, 타이포그래피, 버튼, 소셜 로그인 및 폰트 등록 검증을 추가했습니다.

Walkthrough

SharedDesignSystem에 색상·숫자·타이포그래피 토큰, 공개 접근 API, 버튼·텍스트·소셜 로그인 컴포넌트, 폰트 등록, 테스트와 DEBUG 갤러리를 추가했습니다.

Changes

디자인 시스템 기반

Layer / File(s) Summary
토큰 및 스타일 계약
Projects/Shared/DesignSystem/Sources/Tokens/..., Projects/Shared/DesignSystem/Sources/Foundation/Color+Hex.swift, Projects/Shared/DesignSystem/Tests/Tokens/*
Primitive 및 Semantic 색상·숫자 토큰과 Pretendard 타이포그래피 스타일을 추가했습니다. 토큰 값과 파생 자간·줄 간격을 테스트합니다.
공개 토큰 접근 API
Projects/Shared/DesignSystem/Sources/Access/*
Color.ds, Font.ds, CGFloat.ds 접근 경로를 추가했습니다. 색상, 폰트, 메트릭 그룹을 공개합니다.
폰트 등록 및 모듈 연결
Projects/Shared/DesignSystem/Sources/Foundation/FontRegistration.swift, Projects/App/Sources/DI/AppBootstrap.swift, Projects/Shared/DesignSystem/Project.swift, Projects/Shared/DesignSystem/Tests/Foundation/*, Projects/Shared/DesignSystem/Tests/Smoke/*
Pretendard 폰트 등록을 구현했습니다. 앱 시작 전에 등록하고 등록 결과를 캐시합니다. 프레임워크 테스트 포함 설정과 등록·모듈 테스트를 추가했습니다.
DesignButton 구성
Projects/Shared/DesignSystem/Sources/Components/Button/*, Projects/Shared/DesignSystem/Tests/Components/DesignButtonMetricsTests.swift
버튼 변형과 크기, default·pressed·disabled 상태별 색상 및 테두리 해석을 추가했습니다. DesignButton이 해당 스타일을 렌더링합니다.
텍스트 및 소셜 로그인 컴포넌트
Projects/Shared/DesignSystem/Sources/Components/Text/*, Projects/Shared/DesignSystem/Sources/Components/Social/*, Projects/Shared/DesignSystem/Tests/Components/SocialLoginProviderTests.swift
DesignText와 Kakao 및 Apple용 SocialLoginButton을 추가했습니다. 제공자별 제목, 색상, 테두리와 크기를 정의합니다.
갤러리 및 사용 규칙
Projects/Shared/DesignSystem/Sources/Preview/DesignSystemGallery.swift, docs/ARCHITECTURE.md, docs/CONVENTIONS.md, .swiftlint.yml
색상, 타이포그래피, 버튼, 소셜 로그인 샘플을 제공하는 DEBUG 갤러리를 추가했습니다. 공개 API와 Primitive 토큰 사용 규칙을 문서화하고 SwiftLint 설정을 갱신했습니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AppBootstrap
  participant DesignSystemFontRegistration
  participant SharedDesignSystem
  AppBootstrap->>DesignSystemFontRegistration: registerIfNeeded()
  DesignSystemFontRegistration->>SharedDesignSystem: Pretendard 리소스 검색 및 등록
  SharedDesignSystem-->>DesignSystemFontRegistration: 등록 성공 여부
  DesignSystemFontRegistration-->>AppBootstrap: Bool 반환
Loading

Possibly related PRs

  • TeamMozi/mozi-iOS#1: AppBootstrap.swift의 초기화 흐름과 공유 모듈 구조가 연결됩니다.
  • TeamMozi/mozi-iOS#6: 공유 프레임워크 테스트 대상의 includesTests: true 설정과 연결됩니다.
  • TeamMozi/mozi-iOS#7: AppBootstrap.swift의 시작 시 초기화와 공유 모듈 import 변경이 연결됩니다.
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 SharedDesignSystem의 토큰과 컴포넌트 기반 추가라는 주요 변경을 명확하게 요약합니다.
Description check ✅ Passed 변경 요약과 상세 변경 내용이 템플릿 구조에 맞고, 구현·테스트·문서 범위를 충분히 설명합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

@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: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/ARCHITECTURE.md`:
- Around line 64-65: docs/ARCHITECTURE.md의 두 shared design system 링크가 존재하지 않는
문서를 가리키고 있습니다. 실제 문서를 유효한 경로에 추가하고 링크를 그 경로로 갱신하거나, 문서가 필요하지 않다면 해당 링크 항목을 삭제해
깨진 참조가 남지 않도록 하세요.

In
`@Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonSize.swift`:
- Around line 19-48: Define button-specific numeric tokens in SemanticNumber for
the horizontal padding and icon sizes, then update
DesignButtonSize.horizontalPadding and iconSize to use those tokens instead of
literal values. Preserve the existing size-specific values and leave
cornerRadius unchanged.

In
`@Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonStyle.swift`:
- Around line 147-188: Update DesignButtonChromeStyle to read
`@Environment`(\.isEnabled) and have resolvedState use that environment value, so
ancestor .disabled(true) selects the disabled tokens. In DesignButton, stop
passing isEnabled into the style while preserving .disabled(!isEnabled); add a
regression test covering an ancestor .disabled(true) state.

In `@Projects/Shared/DesignSystem/Sources/Preview/DesignSystemGallery.swift`:
- Around line 35-37: Remove the DesignSystemFontRegistration.registerIfNeeded()
call from the DesignSystemGallery onAppear handler, keeping font registration
exclusively in the App bootstrap flow. If Preview font registration is required,
move it to a Preview-only host rather than performing bootstrap work from the
shared view.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3b4e5042-927e-4e8d-a65c-4eea959f8277

📥 Commits

Reviewing files that changed from the base of the PR and between d07ba36 and 1e085b6.

⛔ Files ignored due to path filters (10)
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_apple.imageset/Apple.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_apple.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_kakao.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Assets.xcassets/Icon/Social/icon_social_kakao.imageset/Kakao.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-Bold.otf is excluded by !**/*.otf
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-Medium.otf is excluded by !**/*.otf
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-Regular.otf is excluded by !**/*.otf
  • Projects/Shared/DesignSystem/Resources/Fonts/Pretendard-SemiBold.otf is excluded by !**/*.otf
📒 Files selected for processing (32)
  • Projects/App/Sources/DI/AppBootstrap.swift
  • Projects/Shared/DesignSystem/Project.swift
  • Projects/Shared/DesignSystem/Sources/Access/CGFloat+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Access/Color+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Access/Font+DesignSystem.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButton.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonSize.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonStyle.swift
  • Projects/Shared/DesignSystem/Sources/Components/Button/DesignButtonVariant.swift
  • Projects/Shared/DesignSystem/Sources/Components/Social/SocialLoginButton.swift
  • Projects/Shared/DesignSystem/Sources/Components/Social/SocialLoginProvider.swift
  • Projects/Shared/DesignSystem/Sources/Components/Text/DesignText.swift
  • Projects/Shared/DesignSystem/Sources/Foundation/Color+Hex.swift
  • Projects/Shared/DesignSystem/Sources/Foundation/FontRegistration.swift
  • Projects/Shared/DesignSystem/Sources/Placeholder.swift
  • Projects/Shared/DesignSystem/Sources/Preview/DesignSystemGallery.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Primitive/PrimitiveColor.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Primitive/PrimitiveNumber.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Semantic/SemanticColor.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Semantic/SemanticNumber.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Typography/TextStyle.swift
  • Projects/Shared/DesignSystem/Sources/Tokens/Typography/Typography.swift
  • Projects/Shared/DesignSystem/Tests/Components/DesignButtonMetricsTests.swift
  • Projects/Shared/DesignSystem/Tests/Components/SocialLoginProviderTests.swift
  • Projects/Shared/DesignSystem/Tests/Foundation/FontRegistrationTests.swift
  • Projects/Shared/DesignSystem/Tests/Smoke/SharedDesignSystemSmokeTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/PrimitiveColorTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/SemanticColorTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/SemanticNumberTests.swift
  • Projects/Shared/DesignSystem/Tests/Tokens/TypographyTests.swift
  • docs/ARCHITECTURE.md
  • docs/CONVENTIONS.md
💤 Files with no reviewable changes (1)
  • Projects/Shared/DesignSystem/Sources/Placeholder.swift

Comment thread docs/ARCHITECTURE.md Outdated
Comment thread Projects/Shared/DesignSystem/Sources/Preview/DesignSystemGallery.swift Outdated
@gnoes-ios
gnoes-ios force-pushed the feat/shared-design-system branch from ef20eb5 to 6c030c8 Compare August 4, 2026 07:04
@gnoes-ios
gnoes-ios force-pushed the feat/shared-design-system branch from 6c030c8 to 3d75846 Compare August 4, 2026 07:36
@gnoes-ios
gnoes-ios merged commit 52ca0f7 into dev Aug 4, 2026
3 checks passed
@gnoes-ios
gnoes-ios deleted the feat/shared-design-system branch August 4, 2026 07:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 새로운 기능

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant