Skip to content

[Feat] [토닥이] Todak Header 컴포넌트 추가 (#47) - #46

Open
MoonGoon72 wants to merge 9 commits into
mainfrom
feature/27-todak-header
Open

[Feat] [토닥이] Todak Header 컴포넌트 추가 (#47)#46
MoonGoon72 wants to merge 9 commits into
mainfrom
feature/27-todak-header

Conversation

@MoonGoon72

@MoonGoon72 MoonGoon72 commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

변경 내용

  • AI 채팅 화면에서 사용하는 DSTodakHeader 컴포넌트를 추가했습니다.
    • 고정 타이틀 토닥이
    • 오늘 무료 채팅 n/3 형태의 잔여 횟수 표시
    • 좌측 삭제 버튼과 배열 기반 우측 액션 버튼 지원
  • 헤더 액션 버튼 모델을 DSHeaderActionItem으로 공통화했습니다.
    • Header 계열 컴포넌트에서 같은 액션 모델을 재사용할 수 있도록 Components/Common으로 승격했습니다.
  • 잔여 횟수 문구의 타이포그래피와 색상을 구간별로 적용했습니다.
    • 안내 문구: body3Regular, gray500
    • 잔여 횟수: body3Medium, gray800
    • 전체 횟수: body3Medium, gray500
  • Todak Header에 필요한 coolGray975, chatAdd, deleteLine, notes 리소스와 타입 세이프 접근 API를 추가했습니다.
  • DesignSystemExample에 버튼 동작과 무료 채팅 횟수 0~3 상태를 확인할 수 있는 Playground를 추가했습니다.
  • 컴포넌트 명세 문서와 Specification 매핑 테스트를 추가했습니다.

고민한 내용

  • Figma의 헤더 높이에는 상태 표시 영역이 포함되어 있지만, DSTodakHeader가 safe area까지 직접 소유하면 화면 컨테이너와 책임이 겹칠 수 있습니다. 따라서 컴포넌트는 48pt 높이의 실제 콘텐츠만 제공하고, 노치와 Dynamic Island 대응은 사용하는 화면의 safe area 배치에 맡겼습니다.
  • remainingFreeChatCount는 서버 응답을 바탕으로 Feature 상태가 관리하는 값입니다. DesignSystem 내부에서 0...3 범위로 보정하면 실제 상태와 표시값이 달라질 수 있어, 별도의 clamp나 Binding 없이 전달받은 값을 그대로 표시하도록 구성했습니다.
  • 우측 버튼은 현재 디자인상 chatAdd, notes 두 개가 기본 구성이지만, 컴포넌트에서 개수나 종류를 강제하지 않고 rightItems 배열로 받도록 했습니다. 버튼의 아이콘과 action은 사용하는 화면이 결정하고, 크기·간격·색상·pressed 스타일은 DesignSystem이 일관되게 관리합니다.
  • 우측 액션 모델의 타입명에 위치 개념을 넣으면 추후 일반 Header 계열과 공유하기 어렵기 때문에, DSHeaderActionItem이라는 공통 모델로 분리하고 배치 위치는 각 컴포넌트 API가 표현하도록 했습니다.
  • 하나의 문구 안에서 구간별 폰트와 색상을 다르게 적용하기 위해 여러 Text를 결합했습니다. 화면에서는 하나의 텍스트처럼 배치되면서 각 구간의 명세를 독립적으로 유지할 수 있습니다.

스크린샷

Before After
해당 없음 image

테스트

  • mise exec -- swiftlint --config .swiftlint.yml
  • ./scripts/validate-design-system-assets.sh
  • DesignSystem 단위 테스트
  • DesignSystemExample 빌드
  • ./scripts/sync-and-validate.sh

PR Preflight Review

  • Status: 완료
  • Mode: Quick
  • Roles: Architecture Guard, Test Coverage & Regression, Build/Tooling & CI
  • Rounds: 1
  • Accepted findings: Markdown 이미지 경로의 공백 인코딩 누락을 수정하고, 리뷰에 불필요한 Figma API 작업 과정 설명을 제거했습니다.
  • Rejected findings: 렌더링 문자열·스타일·액션 테스트 추가 의견은 현재 프로젝트에 View inspection/snapshot 인프라가 없고 기존 DesignSystem의 Specification 테스트 패턴을 벗어나므로 기각했습니다.
  • Verification: git diff --check, ./scripts/validate-architecture.sh, pre-push SwiftLint 및 아키텍처 검증 통과
  • Residual risk: 실제 기기 폭에서 중앙 타이틀과 액션 영역의 겹침, 터치 영역, SVG 광학 정렬은 DesignSystemExample에서 수동 확인이 필요합니다.

참고 사항

  • 디자인상 우측 액션의 기본 기대 구성은 chatAdd, notes 두 개입니다.
  • 무료 채팅 잔여 횟수의 갱신과 유효성 관리는 사용하는 Feature에서 담당합니다.

체크리스트

  • 로컬에서 정상 동작을 확인했습니다.
  • 필요한 테스트를 실행했습니다.
  • PR Preflight Review를 수행했거나, 생략 사유를 작성했습니다.
  • UI 변경이 있는 경우 스크린샷을 첨부했습니다.
  • 문서나 설정 변경이 필요한지 확인했습니다.

Closes #47

Summary by CodeRabbit

  • 새 기능

    • Todak Header 컴포넌트를 추가했습니다.
    • 닫기 버튼, 우측 액션, 타이틀 및 무료 채팅 잔여 횟수를 지원합니다.
    • 새 채팅·삭제·노트 아이콘과 CoolGray 975 색상을 추가했습니다.
    • 디자인 시스템 카탈로그에서 헤더를 확인하고 상호작용을 테스트할 수 있습니다.
  • 문서

    • Figma 기반 레이아웃, 콘텐츠, 상호작용 사양과 사용 예시를 문서화했습니다.
  • 테스트

    • 헤더 사양과 아이콘 에셋 구성을 검증하는 테스트를 추가했습니다.

- Figma 기준 Todak Header 상세 명세와 참조 이미지를 추가했습니다.

- DesignSystem Figma 명세 인덱스에 Todak Header 링크와 썸네일을 연결했습니다.
- Todak Header에서 사용하는 chatAdd, deleteLine, notes 아이콘 에셋을 추가했습니다.

- coolGray975 컬러를 DesignSystem 색상 API와 카탈로그에 연결했습니다.

- DSIconAsset 매핑 테스트에 신규 아이콘을 반영했습니다.
- AI 채팅 화면 전용 DSTodakHeader를 추가하고 무료 채팅 잔여 횟수를 표시하도록 구현했습니다.

- 우측 액션은 rightItems 배열로 주입받고 버튼 크기와 색상, pressed 스타일은 컴포넌트가 관리하도록 구성했습니다.

- DesignSystemExample Playground와 Specification 매핑 테스트를 추가했습니다.
@MoonGoon72 MoonGoon72 self-assigned this Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@MoonGoon72, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 16 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 0386a3ce-e752-4214-84d7-926f9ace7574

📥 Commits

Reviewing files that changed from the base of the PR and between be6dfb5 and 3b1e90c.

📒 Files selected for processing (6)
  • Projects/Core/DesignSystem/Docs/Figma_Specification.md
  • Projects/Core/DesignSystem/Example/Sources/Catalogs/ComponentsCatalogView.swift
  • Projects/Core/DesignSystem/Sources/Components/Common/DSHeaderActionButton.swift
  • Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift
  • Projects/Core/DesignSystem/Sources/DesignSystemIcon.swift
  • Projects/Core/DesignSystem/Tests/DSIconAssetTests.swift

Walkthrough

Todak Header SwiftUI 컴포넌트와 공개 스펙, 관련 아이콘·색상 자산, DesignSystemExample 플레이그라운드, Figma 명세 및 테스트가 추가되었습니다.

Changes

Todak Header 컴포넌트

Layer / File(s) Summary
아이콘·색상 자산과 매핑 계약
Projects/Core/DesignSystem/Resources/Assets.xcassets/..., Projects/Core/DesignSystem/Sources/DesignSystemColor.swift, Projects/Core/DesignSystem/Sources/DesignSystemIcon.swift, Projects/Core/DesignSystem/Tests/DSIconAssetTests.swift
coolGray975, chatAdd, deleteLine, notes 자산과 DesignSystem 매핑, 아이콘 이름 검증이 추가되었습니다.
DSTodakHeader 구현
Projects/Core/DesignSystem/Sources/Components/Common/DSHeaderActionItem.swift, Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift, Projects/Core/DesignSystem/Tests/DSTodakHeaderSpecificationTests.swift
DSHeaderActionItemSpecification 공개 타입, 헤더 레이아웃, 타이틀, 좌측 닫기 및 우측 액션 버튼 렌더링이 추가되었습니다. 스펙 값을 테스트합니다.
예제 카탈로그와 인터랙티브 플레이그라운드
Projects/Core/DesignSystem/Example/Sources/Catalogs/*, Projects/Core/DesignSystem/Example/Sources/Playgrounds/TodakHeaderPlaygroundView.swift
컴포넌트 목록에서 플레이그라운드로 이동합니다. 무료 채팅 잔여 수, 버튼 액션 및 스펙 값을 확인하는 UI를 제공합니다.
Figma 및 컴포넌트 명세 문서
Projects/Core/DesignSystem/Docs/Components/Todak_Header.md, Projects/Core/DesignSystem/Docs/Figma_Specification.md
Todak Header의 레이아웃·콘텐츠·인터랙션 계약, 자산 매핑, Figma 링크와 미리보기 정보가 문서화되었습니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Playground as TodakHeaderPlaygroundView
  participant Header as DSTodakHeader
  participant Action as DSHeaderActionItem.action
  Playground->>Header: remainingFreeChatCount와 rightItems 전달
  Header-->>Playground: 헤더 타이틀 및 버튼 렌더링
  Playground->>Header: 우측 버튼 탭
  Header->>Action: 주입된 action 호출
Loading

Possibly related PRs

Suggested labels: documentation

Suggested reviewers: seungwone

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

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.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed [ #47 ]의 컴포넌트 구현, 사양 분리, Playground 등록, 매핑 테스트 목표를 모두 변경 사항에서 확인할 수 있습니다.
Out of Scope Changes check ✅ Passed 색상·아이콘 자산, 문서, 예제, 테스트 변경이 Todak Header 구현 목표와 직접 관련되어 범위 내에 있습니다.
Title check ✅ Passed 제목이 Todak Header 컴포넌트 추가라는 주요 변경 사항을 명확하고 간결하게 설명합니다.
Description check ✅ Passed 필수 섹션과 구현 내용, 테스트, 스크린샷, 사전 검토 결과, 잔여 위험 및 체크리스트를 충실히 작성했습니다.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
⚔️ Resolve merge conflicts 💡
  • Resolve merge conflict in branch feature/27-todak-header
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/27-todak-header

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.

@github-actions github-actions Bot added the enhancement 기능 개발, 리팩토링, 설정 변경 등 전반적인 작업 label Jul 30, 2026
- Markdown에서 공백이 포함된 이미지 경로를 인코딩해 렌더링 안정성을 확보합니다.

- 리뷰에 불필요한 Figma API 작업 과정 설명을 제거합니다.

@MoonGoon72 MoonGoon72 left a comment

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.

AI 1차 셀프 코드 리뷰 및 주요 설계 결정 설명입니다. Quick Preflight Review에서 확인한 책임 경계와 수동 QA 지점을 중심으로 남겼습니다.

Spacer()

HStack(spacing: spec.rightIconGap) {
ForEach(rightItems, id: \.identifier) { item in

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.

우측 액션은 디자인상 chatAdd, notes 두 개가 기본 구성이지만 컴포넌트가 개수나 종류를 강제하지 않도록 배열로 열어두었습니다. 호출부가 아이콘과 action을 결정하고, 헤더는 20x20 크기·12pt 간격·tint·pressed 스타일만 일관되게 소유합니다. identifierForEach의 안정적인 identity이므로 한 배열 안에서 중복되지 않아야 합니다.

.padding(.horizontal, spec.horizontalPadding)
}
.frame(maxWidth: .infinity)
.frame(height: spec.contentHeight)

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.

Figma의 100pt 프레임에는 상태 표시 영역 52pt가 포함되어 있어, 이 View는 실제 헤더 콘텐츠 48pt만 제공합니다. safe area까지 여기서 소유하면 화면 컨테이너와 책임이 겹치므로 노치/Dynamic Island 아래 배치는 사용하는 화면의 SwiftUI safe-area 레이아웃에 맡겼습니다.

Comment on lines +121 to +130
(
Text("오늘 무료 채팅 ")
.font(.ds.font(spec.subtitleFontStyle))
.foregroundColor(spec.subtitleTextAsset.swiftUIColor)
+ Text("\(remainingFreeChatCount)")
.font(.ds.font(spec.remainingCountFontStyle))
.foregroundColor(spec.remainingCountTextAsset.swiftUIColor)
+ Text("/\(spec.freeChatLimit)")
.font(.ds.font(spec.remainingCountFontStyle))
.foregroundColor(spec.subtitleTextAsset.swiftUIColor)

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.

여러 Text를 결합해 한 문구의 레이아웃은 유지하면서 구간별 명세를 적용했습니다. prefix는 body3Regular/gray500, 잔여 횟수만 body3Medium/gray800, /3body3Medium/gray500입니다. remainingFreeChatCount는 Feature가 소유하는 서버 상태이므로 DesignSystem에서는 clamp하지 않고 전달값을 그대로 표시합니다.

@MoonGoon72
MoonGoon72 marked this pull request as ready for review July 30, 2026 15:22
@MoonGoon72
MoonGoon72 requested a review from seungwone as a code owner July 30, 2026 15:22
@coderabbitai coderabbitai Bot added the documentation 문서 개선 및 추가 label Jul 30, 2026

@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 `@Projects/Core/DesignSystem/Docs/Components/Todak_Header.md`:
- Line 36: 문서의 해당 Markdown 코드 스팬에서 백틱 내부의 선행·후행 공백을 제거하여 MD038 경고를 해결하세요. `오늘 무료
채팅`과 `body3Regular`, `n/3`, `body3Medium` 코드 스팬이 공백 없이 정확한 텍스트만 포함하도록 정리하세요.

In
`@Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift`:
- Around line 94-103: Update DSTodakHeader’s layout around rightItems and the
centered title to define a maximum visible right-action count or an explicit
overflow policy. Replace the fixed ZStack positioning with measurement-based
layout that reserves separate leading, title, and trailing regions, ensuring
right actions never overlap the title on narrow screens.
- Around line 139-148: Update the subtitle typography geometry call in
DSTodakHeader to build the debug name inline with string interpolation using
spec.subtitleFontStyle and spec.remainingCountFontStyle. Remove the
subtitleDebugTypographyName helper and ensure the inline expression is passed
directly to dsDebugTypographyGeometry so `@autoclosure` can avoid evaluating it in
Release builds.
- Line 110: Update DSTodakHeader’s Specification contract to add a
backgroundAsset and use it for the view’s background instead of directly
referencing DesignSystemAsset.Colors.white.swiftUIColor. Expose and map
backgroundAsset consistently with the other specification values, and extend
DSTodakHeaderSpecificationTests to verify its mapping.
🪄 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: ASSERTIVE

Plan: Pro Plus

Run ID: 2ed2066f-84b0-4e9e-9877-1ac609739703

📥 Commits

Reviewing files that changed from the base of the PR and between bb87ff9 and 5de0769.

⛔ Files ignored due to path filters (4)
  • Projects/Core/DesignSystem/Docs/Images/Todak Header.png is excluded by !**/*.png
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Icons/chat_add.imageset/chat_add.svg is excluded by !**/*.svg
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Icons/delete_line.imageset/delete_line.svg is excluded by !**/*.svg
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Icons/notes.imageset/notes.svg is excluded by !**/*.svg
📒 Files selected for processing (14)
  • Projects/Core/DesignSystem/Docs/Components/Todak_Header.md
  • Projects/Core/DesignSystem/Docs/Figma_Specification.md
  • Projects/Core/DesignSystem/Example/Sources/Catalogs/ColorCatalogView.swift
  • Projects/Core/DesignSystem/Example/Sources/Catalogs/ComponentsCatalogView.swift
  • Projects/Core/DesignSystem/Example/Sources/Playgrounds/TodakHeaderPlaygroundView.swift
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Colors/coolGray975.colorset/Contents.json
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Icons/chat_add.imageset/Contents.json
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Icons/delete_line.imageset/Contents.json
  • Projects/Core/DesignSystem/Resources/Assets.xcassets/Icons/notes.imageset/Contents.json
  • Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift
  • Projects/Core/DesignSystem/Sources/DesignSystemColor.swift
  • Projects/Core/DesignSystem/Sources/DesignSystemIcon.swift
  • Projects/Core/DesignSystem/Tests/DSIconAssetTests.swift
  • Projects/Core/DesignSystem/Tests/DSTodakHeaderSpecificationTests.swift

Comment thread Projects/Core/DesignSystem/Docs/Components/Todak_Header.md Outdated
Comment thread Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift Outdated
Comment thread Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift Outdated
- 배경색을 Specification과 Example, 매핑 테스트에 연결합니다.

- Release에서 디버그 타이포그래피 이름을 불필요하게 계산하지 않도록 호출부에서 직접 구성합니다.

- Todak Header 명세의 Markdown code span 경고를 해소합니다.

@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.

♻️ Duplicate comments (1)
Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift (1)

81-109: ⚠️ Potential issue | 🟠 Major

중앙 타이틀과 우측 액션의 겹침 정책을 정의해야 합니다.

ZStack에서 중앙 titleGroup과 trailing 액션 영역이 독립적으로 배치되고 rightItems 개수도 제한되지 않아, 좁은 화면이나 3개 이상의 액션에서 버튼이 타이틀을 덮을 수 있습니다. 최대 개수/overflow 정책을 공개 계약으로 정하고, 측정 기반 레이아웃으로 leading·title·trailing 영역을 분리해 주세요. 정책을 변경하면 Projects/Core/DesignSystem/Docs/Components/Todak_Header.md의 Layout Contract도 함께 갱신해야 합니다.

최대 2개가 실제 계약이라면 최소한 초기화 시 명시적으로 검증할 수 있습니다.

수정 예시
 public init(
     remainingFreeChatCount: Int,
     rightItems: [RightItem],
     onClose: `@escaping` () -> Void
 ) {
+    precondition(rightItems.count <= 2, "DSTodakHeader supports at most two right actions")
     self.remainingFreeChatCount = remainingFreeChatCount

As per coding guidelines, 작은 화면과 긴 텍스트에서도 UI가 겹치지 않는 레이아웃을 보장해야 합니다.

🤖 Prompt for 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.

In
`@Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift`
around lines 81 - 109, Define and enforce the public overlap policy for
DSTodakHeader: constrain rightItems according to the intended maximum or
implement an explicit overflow behavior, and replace the independent ZStack
placement with measured leading, title, and trailing regions that prevent
overlap on narrow screens and with long titles. If the contract is a maximum of
two actions, validate that requirement during initialization. Update the Todak
Header Layout Contract documentation whenever the policy changes.

Source: Coding guidelines

🤖 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.

Duplicate comments:
In
`@Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift`:
- Around line 81-109: Define and enforce the public overlap policy for
DSTodakHeader: constrain rightItems according to the intended maximum or
implement an explicit overflow behavior, and replace the independent ZStack
placement with measured leading, title, and trailing regions that prevent
overlap on narrow screens and with long titles. If the contract is a maximum of
two actions, validate that requirement during initialization. Update the Todak
Header Layout Contract documentation whenever the policy changes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 80e0226b-6528-46fe-8afa-6fa206eae450

📥 Commits

Reviewing files that changed from the base of the PR and between 5de0769 and 0bc1f53.

📒 Files selected for processing (4)
  • Projects/Core/DesignSystem/Docs/Components/Todak_Header.md
  • Projects/Core/DesignSystem/Example/Sources/Playgrounds/TodakHeaderPlaygroundView.swift
  • Projects/Core/DesignSystem/Sources/Components/TodakHeader/DSTodakHeader.swift
  • Projects/Core/DesignSystem/Tests/DSTodakHeaderSpecificationTests.swift

- WheelPicker PR #42 변경사항을 Todak Header 작업 브랜치에 통합합니다.

- DesignSystem 문서와 컴포넌트 카탈로그의 양쪽 등록을 함께 유지합니다.

# Conflicts:
#	Projects/Core/DesignSystem/Example/Sources/Catalogs/ComponentsCatalogView.swift
@MoonGoon72 MoonGoon72 changed the title [Feat] [토닥이] Todak Header 컴포넌트 추가 (#27) [Feat] [토닥이] Todak Header 컴포넌트 추가 (#47) Aug 1, 2026
- DSTodakHeader.RightItem을 제거하고 DSHeaderActionItem 공통 모델로 승격했습니다.

- Todak Header 예제와 명세의 우측 액션 전달 타입을 공통 모델 기준으로 갱신했습니다.
# Conflicts:
#	Projects/Core/DesignSystem/Example/Sources/Catalogs/ComponentsCatalogView.swift
#	Projects/Core/DesignSystem/Sources/DesignSystemIcon.swift
#	Projects/Core/DesignSystem/Tests/DSIconAssetTests.swift
- 헤더 액션 입력 모델과 SwiftUI 렌더링 책임을 분리했습니다.
- Todak Header의 고정·주입 액션이 공통 렌더러를 사용하도록 정리했습니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation 문서 개선 및 추가 enhancement 기능 개발, 리팩토링, 설정 변경 등 전반적인 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS] [Feat] [Core] Todak Header 컴포넌트 구현

1 participant