From 7daaf45658e286a65973f54b152ce99a155aba6b Mon Sep 17 00:00:00 2001 From: jihun Date: Thu, 12 Mar 2026 21:42:28 +0900 Subject: [PATCH 1/9] =?UTF-8?q?fix:=20goal-0016=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=ED=99=94=EB=A9=B4=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EC=84=B8=EB=B6=80=20=EB=B3=80=EA=B2=BD=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Feature/MakeGoal/Sources/MakeGoalView.swift | 11 +++++++---- .../TXRoundedRectangleButton+Configuration.swift | 5 +++-- .../Sources/Components/Tab/Group/TXTabGroup.swift | 3 ++- .../Sources/Components/TextField/TXTextField.swift | 13 +++++++------ 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift index 93fe2afc..90c41b44 100644 --- a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift +++ b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift @@ -100,8 +100,8 @@ private extension MakeGoalView { var emojiCircle: some View { store.selectedEmoji.image .resizable() - .frame(width: 56, height: 56) - .padding(26) + .frame(width: 64, height: 64) + .padding(22) .background(Color.Gray.gray50, in: .circle) .insideBorder( Color.Gray.gray500, @@ -195,7 +195,8 @@ private extension MakeGoalView { valueText(store.startDateText) dropDownButton { store.send(.startDateTapped) } } - .padding(.vertical, 21.5) + .frame(height: 32) + .padding(.vertical, 16) } var endDateToggleRow: some View { @@ -206,7 +207,8 @@ private extension MakeGoalView { TXToggleSwitch(isOn: $store.isEndDateOn) } - .padding(.vertical, 17) + .frame(height: 32) + .padding(.vertical, 16) } var endDateRow: some View { @@ -237,6 +239,7 @@ private extension MakeGoalView { Color.Gray.gray500 .frame(height: 1) .padding(.horizontal, -16) + .padding(.vertical, -1) } func dropDownButton(_ action: @escaping () -> Void) -> some View { diff --git a/Projects/Shared/DesignSystem/Sources/Components/Button/RoundedRectangle/Single/TXRoundedRectangleButton+Configuration.swift b/Projects/Shared/DesignSystem/Sources/Components/Button/RoundedRectangle/Single/TXRoundedRectangleButton+Configuration.swift index 7896015c..9e0f8b08 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Button/RoundedRectangle/Single/TXRoundedRectangleButton+Configuration.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Button/RoundedRectangle/Single/TXRoundedRectangleButton+Configuration.swift @@ -10,11 +10,12 @@ import SwiftUI public extension TXRoundedRectangleButton.Configuration { static func small( text: String, - colorStyle: ColorStyle + colorStyle: ColorStyle, + font: TypographyToken = .b1_14b ) -> Self { .init( text: text, - font: .b1_14b, + font: font, colorStyle: colorStyle, fixedFrame: false, radius: Radius.xs, diff --git a/Projects/Shared/DesignSystem/Sources/Components/Tab/Group/TXTabGroup.swift b/Projects/Shared/DesignSystem/Sources/Components/Tab/Group/TXTabGroup.swift index 54af398f..b7524808 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Tab/Group/TXTabGroup.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Tab/Group/TXTabGroup.swift @@ -69,7 +69,8 @@ private extension TXTabGroup { text: item, colorStyle: selectedItem == item ? config.selectedColorStyle - : config.unselectedColorStyle + : config.unselectedColorStyle, + font: .b2_14r ) ) { selectedItem = item diff --git a/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift b/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift index a1f2b5ba..9c9cf286 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift @@ -69,13 +69,14 @@ public struct TXTextField: View { } public var body: some View { - VStack(alignment: .leading, spacing: subText != nil ? Spacing.spacing5 : 0) { - container - - if let subText { - subTextView(config: subText) + container + .overlay(alignment: .topLeading) { + if let subText { + subTextView(config: subText) + .padding(.top, 52 + Spacing.spacing5) + .allowsHitTesting(false) + } } - } } } From bbed00bec8154063e1f3d60fb1e20adba51c218e Mon Sep 17 00:00:00 2001 From: jihun Date: Thu, 12 Mar 2026 22:56:18 +0900 Subject: [PATCH 2/9] =?UTF-8?q?fix:=20goal-0017=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=EB=AF=B8=EC=9E=85=EB=A0=A5=EC=8B=9C=20=ED=86=A0=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=88=84=EB=9D=BD=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/Feature/MakeGoal/Sources/MakeGoalReducer+Impl.swift | 4 ++++ Projects/Feature/MakeGoal/Sources/MakeGoalView.swift | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Projects/Feature/MakeGoal/Sources/MakeGoalReducer+Impl.swift b/Projects/Feature/MakeGoal/Sources/MakeGoalReducer+Impl.swift index b1c21309..0cfa6d8f 100644 --- a/Projects/Feature/MakeGoal/Sources/MakeGoalReducer+Impl.swift +++ b/Projects/Feature/MakeGoal/Sources/MakeGoalReducer+Impl.swift @@ -191,6 +191,10 @@ extension MakeGoalReducer { case .completeButtonTapped: guard !state.isLoading else { return .none } + guard !state.completeButtonDisabled else { + return .send(.showToast(.warning(message: "목표 이름은 14글자 이내로 입력해 주세요!"))) + } + state.isLoading = true let endDateString: String? = state.isEndDateOn ? TXCalendarUtil.apiDateString(for: state.endDate) diff --git a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift index 90c41b44..d856c4fd 100644 --- a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift +++ b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift @@ -80,7 +80,7 @@ public struct MakeGoalView: View { } } ) - .txToast(item: $store.toast) + .txToast(item: $store.toast, customPadding: 70) } } @@ -232,7 +232,6 @@ private extension MakeGoalView { ) { store.send(.completeButtonTapped) } - .disabled(store.completeButtonDisabled) } var divider: some View { From 6bea58d07a234e1ad4948ed3e72c7f9a879e1141 Mon Sep 17 00:00:00 2001 From: jihun Date: Thu, 12 Mar 2026 23:07:36 +0900 Subject: [PATCH 3/9] =?UTF-8?q?fix:=20goal-0018=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EC=83=81=ED=83=9C=20=EC=88=98=EC=A0=95=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Components/TextField/TXTextField.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift b/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift index 9c9cf286..7642331a 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift @@ -71,7 +71,7 @@ public struct TXTextField: View { public var body: some View { container .overlay(alignment: .topLeading) { - if let subText { + if let subText, isFocused?.wrappedValue == true { subTextView(config: subText) .padding(.top, 52 + Spacing.spacing5) .allowsHitTesting(false) @@ -88,7 +88,7 @@ private extension TXTextField { Spacer() - if !text.isEmpty { + if !text.isEmpty && isFocused?.wrappedValue == true { clearButton } } @@ -109,11 +109,13 @@ private extension TXTextField { if let isFocused { TextField("", text: $text) + .typography(.t2_16b) .focused(isFocused) .submitLabel(submitLabel) .tint(tintColor) } else { TextField("", text: $text) + .typography(.t2_16b) .submitLabel(submitLabel) .tint(tintColor) } From cb3f020e6b121756ec7f587bf053a3f961911a60 Mon Sep 17 00:00:00 2001 From: jihun Date: Fri, 13 Mar 2026 11:23:58 +0900 Subject: [PATCH 4/9] =?UTF-8?q?refactor:=20TxBottomSheet=20Indicator=20?= =?UTF-8?q?=EC=98=81=EC=97=AD=20overlay=20->=20VStack=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Home/Sources/Goal/AddGoalListView.swift | 1 - .../Connect/OnboardingConnectView.swift | 1 - .../BottomSheet/TXCalendarBottomSheet.swift | 1 - .../Modifiers/View+TxBottomSheet.swift | 47 ++++++++++--------- 4 files changed, 24 insertions(+), 26 deletions(-) diff --git a/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift b/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift index 05484ae2..3160aac7 100644 --- a/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift +++ b/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift @@ -27,7 +27,6 @@ struct AddGoalListView: View { .padding(.horizontal, 20) categoryListView } - .padding(.top, 28) } } diff --git a/Projects/Feature/Onboarding/Sources/Connect/OnboardingConnectView.swift b/Projects/Feature/Onboarding/Sources/Connect/OnboardingConnectView.swift index 6cc31234..9c6efc9d 100644 --- a/Projects/Feature/Onboarding/Sources/Connect/OnboardingConnectView.swift +++ b/Projects/Feature/Onboarding/Sources/Connect/OnboardingConnectView.swift @@ -241,7 +241,6 @@ private extension OnboardingConnectView { .clipShape(RoundedRectangle(cornerRadius: Radius.s)) .padding(.horizontal, 30) } - .padding(.top, 28) .padding(.bottom, Spacing.spacing7) } diff --git a/Projects/Shared/DesignSystem/Sources/Components/Calendar/BottomSheet/TXCalendarBottomSheet.swift b/Projects/Shared/DesignSystem/Sources/Components/Calendar/BottomSheet/TXCalendarBottomSheet.swift index cb32f2a9..e3d14e0b 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Calendar/BottomSheet/TXCalendarBottomSheet.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Calendar/BottomSheet/TXCalendarBottomSheet.swift @@ -106,7 +106,6 @@ public struct TXCalendarBottomSheet: View { } } } - .padding(.top, Spacing.spacing10) .padding(.bottom, 40) // 버튼 영역 diff --git a/Projects/Shared/DesignSystem/Sources/Modifiers/View+TxBottomSheet.swift b/Projects/Shared/DesignSystem/Sources/Modifiers/View+TxBottomSheet.swift index 30e8b056..5d91cb73 100644 --- a/Projects/Shared/DesignSystem/Sources/Modifiers/View+TxBottomSheet.swift +++ b/Projects/Shared/DesignSystem/Sources/Modifiers/View+TxBottomSheet.swift @@ -51,6 +51,7 @@ private struct TXBottomSheetModifier: ViewModifier { @State private var dimmedOpacity: CGFloat = 0 @State private var contentHeight: CGFloat = 0 private let animationDuration: TimeInterval = 0.2 + private let dragAreaHeight: CGFloat = 28 func body(content: Content) -> some View { content @@ -82,35 +83,35 @@ private struct TXBottomSheetModifier: ViewModifier { // MARK: - SubViews { private extension TXBottomSheetModifier { var sheetView: some View { - sheetContent() - .padding(.bottom, TXSafeArea.inset(.bottom)) - .frame(maxWidth: .infinity, alignment: .bottom) - .background(Color.Common.white) - .clipShape( - UnevenRoundedRectangle(cornerRadii: .init(topLeading: Radius.m, topTrailing: Radius.m)) - ) - .background { - GeometryReader { proxy in - Color.clear - .onAppear { - updateContentHeight(proxy.size.height) - } - .onChange(of: proxy.size.height) { - updateContentHeight(proxy.size.height) - } - } - } - .overlay(alignment: .top) { - dragContainer + VStack(spacing: 0) { + dragContainer + sheetContent() + } + .padding(.bottom, TXSafeArea.inset(.bottom)) + .frame(maxWidth: .infinity, alignment: .bottom) + .background(Color.Common.white) + .clipShape( + UnevenRoundedRectangle(cornerRadii: .init(topLeading: Radius.m, topTrailing: Radius.m)) + ) + .background { + GeometryReader { proxy in + Color.clear + .onAppear { + updateContentHeight(proxy.size.height) + } + .onChange(of: proxy.size.height) { + updateContentHeight(proxy.size.height) + } } - .offset(y: sheetOffset) - .toolbar(.hidden, for: .tabBar) + } + .offset(y: sheetOffset) + .toolbar(.hidden, for: .tabBar) } var dragContainer: some View { ZStack { Color.clear - .frame(maxWidth: .infinity, maxHeight: 28) + .frame(maxWidth: .infinity, minHeight: dragAreaHeight, maxHeight: dragAreaHeight) .contentShape(.rect) if showDragIndicator { From 0b09d8084efb6a973edaf109b7cb4cf5c1c8ce46 Mon Sep 17 00:00:00 2001 From: jihun Date: Fri, 13 Mar 2026 11:24:18 +0900 Subject: [PATCH 5/9] =?UTF-8?q?fix:=20goal-0020=20btSheet=5Fstepper=20?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=ED=95=84=EB=93=9C=20fix=EB=A1=9C=20?= =?UTF-8?q?=EA=B3=A0=EC=A0=95=20=EB=B0=8F=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=84=B8=EB=B6=80=20=EC=88=98=EC=A0=95=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Feature/MakeGoal/Sources/MakeGoalView.swift | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift index d856c4fd..67321671 100644 --- a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift +++ b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift @@ -270,12 +270,11 @@ private extension MakeGoalView { TXRoundedRectangleButton(config: .long(text: "완료", colorStyle: .black)) { store.send(.periodSheetCompleteTapped) } - .padding(.top, 40) - .padding(.horizontal, 20) .padding(.vertical, 8) + .padding(.top, 32) + .padding(.horizontal, 20) } - .padding(.top, 36) - .padding(.bottom, 16) + .padding(.top, 8) } var periodTabButtons: some View { @@ -283,7 +282,8 @@ private extension MakeGoalView { TXRoundedRectangleButton( config: .small( text: store.weeklyPeriodText, - colorStyle: store.selectedPeriod == .weekly ? .black : .white + colorStyle: store.selectedPeriod == .weekly ? .black : .white, + font: .b2_14r ) ) { store.send(.periodSheetWeeklyTapped) @@ -335,12 +335,16 @@ private extension MakeGoalView { Text("\(store.periodCount)") .typography(.h2_24r) .foregroundStyle(Color.Gray.gray500) + .frame(width: 33) + .padding(.leading, 22) Text("번") .typography(.t2_16b) .foregroundStyle(Color.Gray.gray300) + .padding(.trailing, 17) } - .frame(width: 96, height: 58) + .padding(.vertical, 12) + .frame(width: 96) .insideBorder( Color.Gray.gray300, shape: RoundedRectangle(cornerRadius: 12), From 6b03fb2df7d563b658ab7661affeb6d58c32d90b Mon Sep 17 00:00:00 2001 From: jihun Date: Fri, 13 Mar 2026 13:08:38 +0900 Subject: [PATCH 6/9] =?UTF-8?q?fix:=20goal-0021=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=ED=84=B0=EC=B9=98=EC=98=81=EC=97=AD=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/Feature/MakeGoal/Sources/MakeGoalView.swift | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift index 67321671..263b8d4d 100644 --- a/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift +++ b/Projects/Feature/MakeGoal/Sources/MakeGoalView.swift @@ -108,6 +108,7 @@ private extension MakeGoalView { shape: .circle, lineWidth: LineWidth.m ) + .onTapGesture { store.send(.emojiButtonTapped) } .overlay(alignment: .bottomTrailing) { TXCircleButton( config: .init( @@ -115,10 +116,7 @@ private extension MakeGoalView { frameSize: .init(width: 28, height: 28), imageSize: .init(width: 16, height: 16), colorStyle: .white - ), - action: { - store.send(.emojiButtonTapped) - } + ), action: { } ) .insideBorder( Color.Gray.gray500, From ffb39fe915fff8434eba48f2524bece5713cd9e4 Mon Sep 17 00:00:00 2001 From: jihun Date: Fri, 13 Mar 2026 13:28:23 +0900 Subject: [PATCH 7/9] =?UTF-8?q?fix:=20goal-0022=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=5F=EC=95=84=EC=9D=B4=EC=BD=98=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EB=AA=A8=EB=8B=AC=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=84=B8=EB=B6=80=20=EC=88=98=EC=A0=95=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Modal/Content/TXSelectIconModalContent.swift | 2 +- .../DesignSystem/Sources/Components/Modal/TXModalView.swift | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Projects/Shared/DesignSystem/Sources/Components/Modal/Content/TXSelectIconModalContent.swift b/Projects/Shared/DesignSystem/Sources/Components/Modal/Content/TXSelectIconModalContent.swift index eabcbebe..263d6cf1 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Modal/Content/TXSelectIconModalContent.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Modal/Content/TXSelectIconModalContent.swift @@ -72,7 +72,7 @@ public struct TXGridButtonModalContent: View { VStack(spacing: 0) { Text(config.title) .typography(.t1_18eb) - .padding(.top, Spacing.spacing9) + .padding(.top, Spacing.spacing10) LazyVGrid( columns: Array( diff --git a/Projects/Shared/DesignSystem/Sources/Components/Modal/TXModalView.swift b/Projects/Shared/DesignSystem/Sources/Components/Modal/TXModalView.swift index 99b4f706..e408d5d8 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Modal/TXModalView.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Modal/TXModalView.swift @@ -81,7 +81,7 @@ private extension TXModalView { onAction(.confirm) } ) - .padding(.vertical, Spacing.spacing5) + .padding(.top, Spacing.spacing6) case let .gridButton(config): TXRoundedRectangleButton( @@ -92,11 +92,10 @@ private extension TXModalView { ) { onAction(.confirm) } - .padding(.horizontal, Spacing.spacing8) + .padding([.horizontal, .top], Spacing.spacing8) .padding(.vertical, Spacing.spacing5) } } - .padding(.top, Spacing.spacing9) .padding(.bottom, Spacing.spacing6) } } From 4d4583839894dc5c50adb3a8f46341a766939a63 Mon Sep 17 00:00:00 2001 From: jihun Date: Fri, 13 Mar 2026 14:00:19 +0900 Subject: [PATCH 8/9] =?UTF-8?q?fix:=20goal-0023=20=EB=AA=A9=ED=91=9C=20?= =?UTF-8?q?=ED=8E=B8=EC=A7=91=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=84=B8?= =?UTF-8?q?=EB=B6=80=20=EC=88=98=EC=A0=95=20-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Goal/GoalEditCardView+Configuration.swift | 2 +- .../Card/Goal/GoalEditCardView.swift | 9 ++++---- .../Components/Dropdown/TXDropdown.swift | 21 ++++++++++++------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView+Configuration.swift b/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView+Configuration.swift index f76c0152..b0705b46 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView+Configuration.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView+Configuration.swift @@ -38,7 +38,7 @@ extension GoalEditCardView.Configuration { rowContentSpacing: 28, titleWidth: 48, contentPadding: 16, - cardCornerRadius: 16, + cardCornerRadius: 12, contentBackgroundColor: Color.Gray.gray50, borderColor: Color.Gray.gray500, borderWidth: LineWidth.m, diff --git a/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView.swift b/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView.swift index 85f9ba37..a84bca72 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalEditCardView.swift @@ -82,10 +82,11 @@ public struct GoalEditCardView: View { CardHeaderView( config: config.headerConfig ) - - Color.Gray.gray500 - .frame(height: 1) - .frame(maxWidth: .infinity) + .insideRectEdgeBorder( + width: LineWidth.m, + edges: [.bottom], + color: Color.Gray.gray500 + ) VStack(alignment: .leading, spacing: config.rowSpacing) { rowView(title: "반복 주기", value: config.item.repeatCycle) diff --git a/Projects/Shared/DesignSystem/Sources/Components/Dropdown/TXDropdown.swift b/Projects/Shared/DesignSystem/Sources/Components/Dropdown/TXDropdown.swift index dde7168d..b9fd3de2 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Dropdown/TXDropdown.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Dropdown/TXDropdown.swift @@ -70,13 +70,10 @@ public struct TXDropdown: View { Button { onSelect(item) } label: { - dropdownItem(item) - } - - if index != config.items.indices.last { - Rectangle() - .frame(height: config.borderWidth) - .foregroundStyle(config.dividerColor) + dropdownItem( + item, + showsBottomDivider: index != config.items.indices.last + ) } } } @@ -101,12 +98,20 @@ public struct TXDropdown: View { // MARK: - SubViews private extension TXDropdown { - func dropdownItem(_ item: TXDropdownItem) -> some View { + func dropdownItem( + _ item: TXDropdownItem, + showsBottomDivider: Bool + ) -> some View { Text(item.title) .typography(config.textTypography) .foregroundStyle(config.textColor) .frame(maxWidth: .infinity, maxHeight: config.itemHeight, alignment: .leading) .padding(.leading, config.leadingPadding) + .insideRectEdgeBorder( + width: config.borderWidth, + edges: showsBottomDivider ? [.bottom] : [], + color: config.dividerColor + ) } } From ee10227af865827df480d472a2001aedb0c3707e Mon Sep 17 00:00:00 2001 From: jihun Date: Fri, 13 Mar 2026 14:20:59 +0900 Subject: [PATCH 9/9] =?UTF-8?q?fix:=20goal-0024=20btSheet=5FgoalAdd=20?= =?UTF-8?q?=ED=84=B0=EC=B9=98=20=EC=98=81=EC=97=AD=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?-=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Home/Sources/Goal/AddGoalListView.swift | 1 - .../Header/CardHeaderView+Configuration.swift | 3 ++- .../Card/Header/CardHeaderView.swift | 19 ++++++++++--------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift b/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift index 3160aac7..84c76c50 100644 --- a/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift +++ b/Projects/Feature/Home/Sources/Goal/AddGoalListView.swift @@ -70,6 +70,5 @@ private extension AddGoalListView { action: { action(item) } ) ) - .onTapGesture { action(item) } } } diff --git a/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView+Configuration.swift b/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView+Configuration.swift index 0e6cacd9..95645af0 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView+Configuration.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView+Configuration.swift @@ -160,7 +160,8 @@ extension CardHeaderView.Configuration { radius: Radius.s, borderColor: Color.Gray.gray500, borderWidth: LineWidth.m, - titleTypography: .t2_16b + titleTypography: .t2_16b, + onHeaderTapped: action ) } diff --git a/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView.swift b/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView.swift index 4a09c525..4a2e2c17 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView.swift @@ -78,14 +78,14 @@ private extension CardHeaderView { .typography(config.titleTypography) } .frame(maxWidth: .infinity, alignment: .leading) - .onTapGesture { - config.onHeaderTapped?() - } - + rightContent } .padding(config.padding) .background(Color.Common.white) + .onTapGesture { + config.onHeaderTapped?() + } .insideRectEdgeBorder( width: config.borderWidth, edges: config.insideBorderEdges, @@ -103,11 +103,12 @@ private extension CardHeaderView { action: action ) - case let .goalAdd(action): - TXCircleButton(config: .rightArrow()) { - action() - } - + case .goalAdd: + TXCircleButton( + config: .rightArrow(), + action: { config.onHeaderTapped?() } + ) + case let .goalEdit(action): Button(action: action) { Image.Icon.Symbol.meatball