From 2be6727d0dae09addf6d20a5b2167fb130ac41e7 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 17:46:31 +0900 Subject: [PATCH 01/35] =?UTF-8?q?[feat]=20CardStyleView=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Color/Extension+ShapeStyle.swift | 5 +- .../MemberDetail/MemberDetailView.swift | 59 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift index 5841e07..7c2fa4e 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift @@ -28,7 +28,7 @@ extension ShapeStyle where Self == Color { // MARK: - Static Border - static var borderInactive: Color { .init(hex: "C6C6C6") } + static var borderInactive: Color { .init(hex: "000000").opacity(0.05) } static var borderDisabled: Color { .init(hex: "323537") } static var borderInverse: Color { .init(hex: "202325") } @@ -59,6 +59,9 @@ extension ShapeStyle where Self == Color { static var surfaceEnable: Color { .init(hex: "0099FF") } static var surfaceError: Color { .init(hex: "FF5050").opacity(0.2) } + //MARK: -Shadow + static var shadowDefault: Color { .init(hex: "000000").opacity(0.1) } + // MARK: - TextIcon static var onBackground: Color { .init(hex: "FFFFFF") } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift new file mode 100644 index 0000000..39a03d8 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -0,0 +1,59 @@ +// +// MemberDetailView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/11/25. +// + +import SwiftUI + +struct MemberProfile { + var image: String + var name: String + var role: String + var mbti: String + var introduction: String + var strengths: [String] + var collabStyle: String + var blogURL: String? +} + +struct MemberDetailView: View { + let profile: MemberProfile + + var body: some View { + VStack { + + } + + } +} + +struct CardStyle: ViewModifier { + func body(content: Content) -> some View { + content + .padding(10) + .frame(maxWidth: .infinity, alignment: .leading) + .background( + RoundedRectangle(cornerRadius: 16) + .fill(.staticWhite) + ) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(.borderInactive, lineWidth: 0.5) + ) + .shadow(color: .shadowDefault, radius: 3, x: 0, y: 1) + } +} + +extension View { + public func cardStyle() -> some View { + modifier(CardStyle()) + } +} + +struct MemberDetailView_Previews: PreviewProvider { + static var previews: some View { + MemberDetailView(profile: .init(image: "", name: "", role: "", mbti: "", introduction: "", strengths: [], collabStyle: "")) + } +} From 150e526549c2ba11f8ce827961d9008eb5227f60 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 19:43:02 +0900 Subject: [PATCH 02/35] =?UTF-8?q?[feat]=20=ED=8C=80=EC=9B=90=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EB=B7=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/MemberDetailView.swift | 51 +++++++++++++++---- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 39a03d8..de52d08 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -8,24 +8,53 @@ import SwiftUI struct MemberProfile { - var image: String - var name: String - var role: String - var mbti: String - var introduction: String - var strengths: [String] - var collabStyle: String - var blogURL: String? + var image: String = "person.crop.circle" + var name: String = "김철수" + var role: String = "프론트엔드개발자" + var mbti: String = "ENFP" + var introduction: String = "사용자경험을최우선으로생각하는프론트엔드개발자입니다.새로운기술을배우는것을좋아하고,팀원들과아이디어를 공유하며함께성장하는것을즐깁니다." + var strengths: [String] = ["창의적인문제해결능력", "새로운기술에대한빠른학습력", "사용자중심적사고", "긍정적이고적극적인커뮤니케이션"] + var collabStyle: String = "아이디어클자유롭게공유하고,다양한관점에서문제를바라보는것을 선호합니다.팀원들의의견을경청하고,함께더나은해결책을찾아가는협업을추구합니다." + var blogURL: String? = "https: //chulsoo.dev" } struct MemberDetailView: View { + var body: some View { + VStack { + MemberProfileView(profile: MemberProfile()) + .cardStyle() + } + .padding(.horizontal, 14) + + } +} + +struct MemberProfileView: View { let profile: MemberProfile var body: some View { - VStack { + HStack { + Spacer() - } + VStack(spacing: 7) { + Image(systemName: MemberProfile().image) + .font(.system(size: 40)) + + Text(MemberProfile().name) + + Text(MemberProfile().role) + + Text(MemberProfile().mbti) + .font(.footnote.weight(.semibold)) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(Capsule().fill(.backGroundPrimary.opacity(0.15))) + } + .padding(.vertical, 10) + + Spacer() + } } } @@ -54,6 +83,6 @@ extension View { struct MemberDetailView_Previews: PreviewProvider { static var previews: some View { - MemberDetailView(profile: .init(image: "", name: "", role: "", mbti: "", introduction: "", strengths: [], collabStyle: "")) + MemberDetailView() } } From 7c88f1b73bcd9c500ac0b5167879ee0fb2059bfa Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 20:01:05 +0900 Subject: [PATCH 03/35] =?UTF-8?q?=ED=8C=80=EC=9B=90=20=EC=9E=90=EA=B8=B0?= =?UTF-8?q?=EC=86=8C=EA=B0=9C=20=EB=B7=B0=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EB=B7=B0=EC=9D=98=20=ED=8F=B0?= =?UTF-8?q?=ED=8A=B8,=20=EC=82=AC=EC=9D=B4=EC=A6=88,=20=EC=83=89=20?= =?UTF-8?q?=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Color/Extension+ShapeStyle.swift | 1 + .../MemberDetail/MemberDetailView.swift | 30 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift index 7c2fa4e..1383dde 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift @@ -44,6 +44,7 @@ extension ShapeStyle where Self == Color { static var gray80: Color { .init(hex: "323537") } static var gray60: Color { .init(hex: "6F6F6F") } static var gray40: Color { .init(hex: "A8A8A8") } + static var gray20: Color { .init(hex: "ededed") } static var gray90: Color { .init(hex: "202325") } static var grayError: Color { .init(hex: "FF5050") } static var grayWhite: Color { .init(hex: "FFFFFF") } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index de52d08..dfcee45 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -20,12 +20,12 @@ struct MemberProfile { struct MemberDetailView: View { var body: some View { - VStack { + VStack(spacing: 20) { MemberProfileView(profile: MemberProfile()) - .cardStyle() + + introductionView(profile: MemberProfile()) } .padding(.horizontal, 14) - } } @@ -41,20 +41,40 @@ struct MemberProfileView: View { .font(.system(size: 40)) Text(MemberProfile().name) + .pretendardFont(family: .Regular, size: 13) Text(MemberProfile().role) + .pretendardFont(family: .Regular, size: 13) Text(MemberProfile().mbti) - .font(.footnote.weight(.semibold)) + .pretendardFont(family: .Regular, size: 13) .padding(.horizontal, 12) .padding(.vertical, 6) - .background(Capsule().fill(.backGroundPrimary.opacity(0.15))) + .background(Capsule().fill(.gray20)) } .padding(.vertical, 10) Spacer() } + .cardStyle() + } +} + +struct introductionView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("자기소개") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + Text(MemberProfile().introduction) + .pretendardFont(family: .Regular, size: 13) + .lineSpacing(3) + } + .cardStyle() + } } } From 43a202c4595e0180c13c807ced7a7f77e16647b8 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 20:11:30 +0900 Subject: [PATCH 04/35] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Presnetaion/MemberDetail/MemberDetailView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index dfcee45..9c98c60 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -23,7 +23,7 @@ struct MemberDetailView: View { VStack(spacing: 20) { MemberProfileView(profile: MemberProfile()) - introductionView(profile: MemberProfile()) + IntroductionView(profile: MemberProfile()) } .padding(.horizontal, 14) } @@ -61,7 +61,7 @@ struct MemberProfileView: View { } } -struct introductionView: View { +struct IntroductionView: View { let profile: MemberProfile var body: some View { From 1460145a0dc14ab7196cd12e42d50f227ac45087 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 20:39:45 +0900 Subject: [PATCH 05/35] =?UTF-8?q?=EC=A3=BC=EC=9A=94=EC=9E=A5=EC=A0=90=20?= =?UTF-8?q?=EB=B7=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/MemberDetailView.swift | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 9c98c60..d190fd9 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -24,6 +24,8 @@ struct MemberDetailView: View { MemberProfileView(profile: MemberProfile()) IntroductionView(profile: MemberProfile()) + + StrengthsView(profile: MemberProfile()) } .padding(.horizontal, 14) } @@ -37,17 +39,17 @@ struct MemberProfileView: View { Spacer() VStack(spacing: 7) { - Image(systemName: MemberProfile().image) + Image(systemName: profile.image) .font(.system(size: 40)) - Text(MemberProfile().name) + Text(profile.name) .pretendardFont(family: .Regular, size: 13) - Text(MemberProfile().role) + Text(profile.role) .pretendardFont(family: .Regular, size: 13) - Text(MemberProfile().mbti) + Text(profile.mbti) .pretendardFont(family: .Regular, size: 13) .padding(.horizontal, 12) .padding(.vertical, 6) @@ -69,10 +71,35 @@ struct IntroductionView: View { Text("자기소개") .pretendardFont(family: .SemiBold, size: 14) VStack { - Text(MemberProfile().introduction) + Text(profile.introduction) .pretendardFont(family: .Regular, size: 13) .lineSpacing(3) } + .padding(.all, 5) + .cardStyle() + } + } +} + +struct StrengthsView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("주요장점") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + ForEach(profile.strengths, id: \.self) { item in + HStack(alignment: .firstTextBaseline, spacing: 8) { + Circle().frame(width: 5, height: 5) + Text(item) + .pretendardFont(family: .Regular, size: 13) + .fixedSize(horizontal: false, vertical: true) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .padding(.all, 5) .cardStyle() } } From 81056d5f3e42bd5b95d897315a6c412ba5eb13a0 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 20:01:05 +0900 Subject: [PATCH 06/35] =?UTF-8?q?[feat]=ED=8C=80=EC=9B=90=20=EC=9E=90?= =?UTF-8?q?=EA=B8=B0=EC=86=8C=EA=B0=9C=20=EB=B7=B0=20=EC=B6=94=EA=B0=80,?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=ED=95=84=20=EB=B7=B0=EC=9D=98=20=ED=8F=B0?= =?UTF-8?q?=ED=8A=B8,=20=EC=82=AC=EC=9D=B4=EC=A6=88,=20=EC=83=89=20?= =?UTF-8?q?=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Color/Extension+ShapeStyle.swift | 1 + .../MemberDetail/MemberDetailView.swift | 30 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift index 7c2fa4e..1383dde 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift @@ -44,6 +44,7 @@ extension ShapeStyle where Self == Color { static var gray80: Color { .init(hex: "323537") } static var gray60: Color { .init(hex: "6F6F6F") } static var gray40: Color { .init(hex: "A8A8A8") } + static var gray20: Color { .init(hex: "ededed") } static var gray90: Color { .init(hex: "202325") } static var grayError: Color { .init(hex: "FF5050") } static var grayWhite: Color { .init(hex: "FFFFFF") } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index de52d08..dfcee45 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -20,12 +20,12 @@ struct MemberProfile { struct MemberDetailView: View { var body: some View { - VStack { + VStack(spacing: 20) { MemberProfileView(profile: MemberProfile()) - .cardStyle() + + introductionView(profile: MemberProfile()) } .padding(.horizontal, 14) - } } @@ -41,20 +41,40 @@ struct MemberProfileView: View { .font(.system(size: 40)) Text(MemberProfile().name) + .pretendardFont(family: .Regular, size: 13) Text(MemberProfile().role) + .pretendardFont(family: .Regular, size: 13) Text(MemberProfile().mbti) - .font(.footnote.weight(.semibold)) + .pretendardFont(family: .Regular, size: 13) .padding(.horizontal, 12) .padding(.vertical, 6) - .background(Capsule().fill(.backGroundPrimary.opacity(0.15))) + .background(Capsule().fill(.gray20)) } .padding(.vertical, 10) Spacer() } + .cardStyle() + } +} + +struct introductionView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("자기소개") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + Text(MemberProfile().introduction) + .pretendardFont(family: .Regular, size: 13) + .lineSpacing(3) + } + .cardStyle() + } } } From 4fc924a4d5b598c80a73ee23e3c97b70509d0e94 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 20:11:30 +0900 Subject: [PATCH 07/35] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Presnetaion/MemberDetail/MemberDetailView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index dfcee45..9c98c60 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -23,7 +23,7 @@ struct MemberDetailView: View { VStack(spacing: 20) { MemberProfileView(profile: MemberProfile()) - introductionView(profile: MemberProfile()) + IntroductionView(profile: MemberProfile()) } .padding(.horizontal, 14) } @@ -61,7 +61,7 @@ struct MemberProfileView: View { } } -struct introductionView: View { +struct IntroductionView: View { let profile: MemberProfile var body: some View { From 19f1760621e67070f458ad3f69fc7299890bc35c Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 20:39:45 +0900 Subject: [PATCH 08/35] =?UTF-8?q?[feat]=EC=A3=BC=EC=9A=94=EC=9E=A5?= =?UTF-8?q?=EC=A0=90=20=EB=B7=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/MemberDetailView.swift | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 9c98c60..d190fd9 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -24,6 +24,8 @@ struct MemberDetailView: View { MemberProfileView(profile: MemberProfile()) IntroductionView(profile: MemberProfile()) + + StrengthsView(profile: MemberProfile()) } .padding(.horizontal, 14) } @@ -37,17 +39,17 @@ struct MemberProfileView: View { Spacer() VStack(spacing: 7) { - Image(systemName: MemberProfile().image) + Image(systemName: profile.image) .font(.system(size: 40)) - Text(MemberProfile().name) + Text(profile.name) .pretendardFont(family: .Regular, size: 13) - Text(MemberProfile().role) + Text(profile.role) .pretendardFont(family: .Regular, size: 13) - Text(MemberProfile().mbti) + Text(profile.mbti) .pretendardFont(family: .Regular, size: 13) .padding(.horizontal, 12) .padding(.vertical, 6) @@ -69,10 +71,35 @@ struct IntroductionView: View { Text("자기소개") .pretendardFont(family: .SemiBold, size: 14) VStack { - Text(MemberProfile().introduction) + Text(profile.introduction) .pretendardFont(family: .Regular, size: 13) .lineSpacing(3) } + .padding(.all, 5) + .cardStyle() + } + } +} + +struct StrengthsView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("주요장점") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + ForEach(profile.strengths, id: \.self) { item in + HStack(alignment: .firstTextBaseline, spacing: 8) { + Circle().frame(width: 5, height: 5) + Text(item) + .pretendardFont(family: .Regular, size: 13) + .fixedSize(horizontal: false, vertical: true) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .padding(.all, 5) .cardStyle() } } From a76f26694e35a9dcc6cce655f8ca85a52fdbaa66 Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 10:49:10 +0900 Subject: [PATCH 09/35] =?UTF-8?q?[feat]=20=ED=98=91=EC=97=85=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC,=20=EB=B8=94=EB=A1=9C=EA=B7=B8=20=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=20=EB=B7=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/MemberDetailView.swift | 52 ++++++++++++++++--- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index d190fd9..33972e8 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -14,8 +14,8 @@ struct MemberProfile { var mbti: String = "ENFP" var introduction: String = "사용자경험을최우선으로생각하는프론트엔드개발자입니다.새로운기술을배우는것을좋아하고,팀원들과아이디어를 공유하며함께성장하는것을즐깁니다." var strengths: [String] = ["창의적인문제해결능력", "새로운기술에대한빠른학습력", "사용자중심적사고", "긍정적이고적극적인커뮤니케이션"] - var collabStyle: String = "아이디어클자유롭게공유하고,다양한관점에서문제를바라보는것을 선호합니다.팀원들의의견을경청하고,함께더나은해결책을찾아가는협업을추구합니다." - var blogURL: String? = "https: //chulsoo.dev" + var collabStyle: String = "아이디어를 자유롭게공유하고,다양한관점에서문제를바라보는것을 선호합니다.팀원들의의견을경청하고,함께더나은해결책을찾아가는협업을추구합니다." + var blogURL: String = "https: //chulsoo.dev" } struct MemberDetailView: View { @@ -26,6 +26,10 @@ struct MemberDetailView: View { IntroductionView(profile: MemberProfile()) StrengthsView(profile: MemberProfile()) + + CollabStyleView(profile: MemberProfile()) + + blogView(profile: MemberProfile()) } .padding(.horizontal, 14) } @@ -47,6 +51,7 @@ struct MemberProfileView: View { Text(profile.role) .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) Text(profile.mbti) @@ -55,7 +60,6 @@ struct MemberProfileView: View { .padding(.vertical, 6) .background(Capsule().fill(.gray20)) } - .padding(.vertical, 10) Spacer() } @@ -73,9 +77,9 @@ struct IntroductionView: View { VStack { Text(profile.introduction) .pretendardFont(family: .Regular, size: 13) - .lineSpacing(3) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) } - .padding(.all, 5) .cardStyle() } } @@ -94,12 +98,46 @@ struct StrengthsView: View { Circle().frame(width: 5, height: 5) Text(item) .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) .fixedSize(horizontal: false, vertical: true) } .frame(maxWidth: .infinity, alignment: .leading) } } - .padding(.all, 5) + .cardStyle() + } + } +} + +struct CollabStyleView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("협업스타일") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + Text(profile.collabStyle) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + } + .cardStyle() + } + } +} + +struct blogView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("블로그") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + Text(profile.blogURL) + .pretendardFont(family: .Regular, size: 13) + } .cardStyle() } } @@ -108,7 +146,7 @@ struct StrengthsView: View { struct CardStyle: ViewModifier { func body(content: Content) -> some View { content - .padding(10) + .padding(15) .frame(maxWidth: .infinity, alignment: .leading) .background( RoundedRectangle(cornerRadius: 16) From 4f99e4c7498d1bc5a1562bb193c82016ab072172 Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 10:56:27 +0900 Subject: [PATCH 10/35] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Presnetaion/MemberDetail/MemberDetailView.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 33972e8..bdceee6 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -127,7 +127,7 @@ struct CollabStyleView: View { } } -struct blogView: View { +struct BlogView: View { let profile: MemberProfile var body: some View { @@ -143,6 +143,7 @@ struct blogView: View { } } + struct CardStyle: ViewModifier { func body(content: Content) -> some View { content From 07a37ce849cbf1086017f972864cb57d79dbd4b8 Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 11:18:20 +0900 Subject: [PATCH 11/35] =?UTF-8?q?[feat]=20=EC=8A=A4=ED=81=AC=EB=A1=A4=20?= =?UTF-8?q?=EB=B7=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/MemberDetailView.swift | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index bdceee6..21b9bf4 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -20,18 +20,22 @@ struct MemberProfile { struct MemberDetailView: View { var body: some View { - VStack(spacing: 20) { - MemberProfileView(profile: MemberProfile()) + ScrollView { + VStack(spacing: 20) { + MemberProfileView(profile: MemberProfile()) - IntroductionView(profile: MemberProfile()) + IntroductionView(profile: MemberProfile()) - StrengthsView(profile: MemberProfile()) + StrengthsView(profile: MemberProfile()) - CollabStyleView(profile: MemberProfile()) + CollabStyleView(profile: MemberProfile()) - blogView(profile: MemberProfile()) + BlogView(profile: MemberProfile()) + + editButton() + } + .padding(.horizontal, 14) } - .padding(.horizontal, 14) } } @@ -143,6 +147,19 @@ struct BlogView: View { } } +struct editButton: View { + var body: some View { + Button(action: {}) { + Text("수정") + .foregroundColor(.white) + } + .frame(maxWidth: .infinity) + .frame(height: 48) + .background(.backGroundPrimary) + .clipShape(RoundedRectangle(cornerRadius: 16)) + } +} + struct CardStyle: ViewModifier { func body(content: Content) -> some View { From e7d3e3d23bdbbddbdd77fe229b38e5ffb142b539 Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 14:41:22 +0900 Subject: [PATCH 12/35] =?UTF-8?q?[feat]=EB=AA=A8=EB=8D=B8=20=ED=95=9C?= =?UTF-8?q?=EB=B2=88=EB=A7=8C=20=EC=83=9D=EC=84=B1=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presnetaion/MemberDetail/MemberDetailView.swift | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 21b9bf4..39d13aa 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -19,18 +19,20 @@ struct MemberProfile { } struct MemberDetailView: View { + private let profile = MemberProfile() + var body: some View { ScrollView { VStack(spacing: 20) { - MemberProfileView(profile: MemberProfile()) + MemberProfileView(profile: profile) - IntroductionView(profile: MemberProfile()) + IntroductionView(profile: profile) - StrengthsView(profile: MemberProfile()) + StrengthsView(profile: profile) - CollabStyleView(profile: MemberProfile()) + CollabStyleView(profile: profile) - BlogView(profile: MemberProfile()) + BlogView(profile: profile) editButton() } From fbaa8a65fba263357009d7189b1e24e922876e5a Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 14:47:19 +0900 Subject: [PATCH 13/35] =?UTF-8?q?[feat]=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20VStack=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/MemberDetailView.swift | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 39d13aa..61fecda 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -80,13 +80,11 @@ struct IntroductionView: View { VStack(alignment: .leading, spacing: 14) { Text("자기소개") .pretendardFont(family: .SemiBold, size: 14) - VStack { - Text(profile.introduction) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - } - .cardStyle() + Text(profile.introduction) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() } } } @@ -122,13 +120,11 @@ struct CollabStyleView: View { VStack(alignment: .leading, spacing: 14) { Text("협업스타일") .pretendardFont(family: .SemiBold, size: 14) - VStack { - Text(profile.collabStyle) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - } - .cardStyle() + Text(profile.collabStyle) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() } } } @@ -140,11 +136,11 @@ struct BlogView: View { VStack(alignment: .leading, spacing: 14) { Text("블로그") .pretendardFont(family: .SemiBold, size: 14) - VStack { - Text(profile.blogURL) - .pretendardFont(family: .Regular, size: 13) - } - .cardStyle() + + Text(profile.blogURL) + .pretendardFont(family: .Regular, size: 13) + .cardStyle() + } } } From 86d0bcf0abb27e46ad563030297a2c355d9c3de2 Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 14:47:47 +0900 Subject: [PATCH 14/35] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Presnetaion/MemberDetail/MemberDetailView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index 61fecda..c187006 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -34,7 +34,7 @@ struct MemberDetailView: View { BlogView(profile: profile) - editButton() + EditButton() } .padding(.horizontal, 14) } @@ -145,7 +145,7 @@ struct BlogView: View { } } -struct editButton: View { +struct EditButton: View { var body: some View { Button(action: {}) { Text("수정") From a93254a4807ae07889e1bc5eedc1f1dbf727b5da Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 15:47:28 +0900 Subject: [PATCH 15/35] =?UTF-8?q?[chore]CardStyle=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignSytstem/Modifier/CardStyle.swift | 31 +++++++++++++++++++ .../MemberDetail/MemberDetailView.swift | 24 -------------- 2 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Modifier/CardStyle.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Modifier/CardStyle.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Modifier/CardStyle.swift new file mode 100644 index 0000000..66ebc17 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Modifier/CardStyle.swift @@ -0,0 +1,31 @@ +// +// CardStyle.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// + +import SwiftUI + +struct CardStyle: ViewModifier { + func body(content: Content) -> some View { + content + .padding(15) + .frame(maxWidth: .infinity, alignment: .leading) + .background( + RoundedRectangle(cornerRadius: 16) + .fill(.staticWhite) + ) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(.borderInactive, lineWidth: 0.5) + ) + .shadow(color: .shadowDefault, radius: 3, x: 0, y: 1) + } +} + +extension View { + public func cardStyle() -> some View { + modifier(CardStyle()) + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index c187006..b279664 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -158,30 +158,6 @@ struct EditButton: View { } } - -struct CardStyle: ViewModifier { - func body(content: Content) -> some View { - content - .padding(15) - .frame(maxWidth: .infinity, alignment: .leading) - .background( - RoundedRectangle(cornerRadius: 16) - .fill(.staticWhite) - ) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(.borderInactive, lineWidth: 0.5) - ) - .shadow(color: .shadowDefault, radius: 3, x: 0, y: 1) - } -} - -extension View { - public func cardStyle() -> some View { - modifier(CardStyle()) - } -} - struct MemberDetailView_Previews: PreviewProvider { static var previews: some View { MemberDetailView() From bb8511a096f48b7fe3c4dc08a977ed24cd00c554 Mon Sep 17 00:00:00 2001 From: minneee Date: Tue, 12 Aug 2025 15:50:24 +0900 Subject: [PATCH 16/35] =?UTF-8?q?[chore]=20=EB=B7=B0=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presnetaion/MemberDetail/BlogView.swift | 23 ++++ .../MemberDetail/CollabStyleView.swift | 23 ++++ .../Presnetaion/MemberDetail/EditButton.swift | 20 +++ .../MemberDetail/IntroductionView.swift | 23 ++++ .../MemberDetail/MemberDetailView.swift | 117 ------------------ .../MemberDetail/MemberProfileView.swift | 39 ++++++ .../MemberDetail/StrengthsView.swift | 31 +++++ 7 files changed, 159 insertions(+), 117 deletions(-) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift new file mode 100644 index 0000000..a58fdbb --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift @@ -0,0 +1,23 @@ +// +// BlogView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct BlogView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("블로그") + .pretendardFont(family: .SemiBold, size: 14) + + Text(profile.blogURL) + .pretendardFont(family: .Regular, size: 13) + .cardStyle() + + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift new file mode 100644 index 0000000..194be4b --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift @@ -0,0 +1,23 @@ +// +// CollabStyleView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct CollabStyleView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("협업스타일") + .pretendardFont(family: .SemiBold, size: 14) + Text(profile.collabStyle) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift new file mode 100644 index 0000000..763dda9 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift @@ -0,0 +1,20 @@ +// +// EditButton.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct EditButton: View { + var body: some View { + Button(action: {}) { + Text("수정") + .foregroundColor(.white) + } + .frame(maxWidth: .infinity) + .frame(height: 48) + .background(.backGroundPrimary) + .clipShape(RoundedRectangle(cornerRadius: 16)) + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift new file mode 100644 index 0000000..4186644 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift @@ -0,0 +1,23 @@ +// +// IntroductionView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct IntroductionView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("자기소개") + .pretendardFont(family: .SemiBold, size: 14) + Text(profile.introduction) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index b279664..5c5b4ab 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -41,123 +41,6 @@ struct MemberDetailView: View { } } -struct MemberProfileView: View { - let profile: MemberProfile - - var body: some View { - HStack { - Spacer() - - VStack(spacing: 7) { - Image(systemName: profile.image) - .font(.system(size: 40)) - - Text(profile.name) - .pretendardFont(family: .Regular, size: 13) - - Text(profile.role) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - - - Text(profile.mbti) - .pretendardFont(family: .Regular, size: 13) - .padding(.horizontal, 12) - .padding(.vertical, 6) - .background(Capsule().fill(.gray20)) - } - - Spacer() - } - .cardStyle() - } -} - -struct IntroductionView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("자기소개") - .pretendardFont(family: .SemiBold, size: 14) - Text(profile.introduction) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() - } - } -} - -struct StrengthsView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("주요장점") - .pretendardFont(family: .SemiBold, size: 14) - VStack { - ForEach(profile.strengths, id: \.self) { item in - HStack(alignment: .firstTextBaseline, spacing: 8) { - Circle().frame(width: 5, height: 5) - Text(item) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .fixedSize(horizontal: false, vertical: true) - } - .frame(maxWidth: .infinity, alignment: .leading) - } - } - .cardStyle() - } - } -} - -struct CollabStyleView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("협업스타일") - .pretendardFont(family: .SemiBold, size: 14) - Text(profile.collabStyle) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() - } - } -} - -struct BlogView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("블로그") - .pretendardFont(family: .SemiBold, size: 14) - - Text(profile.blogURL) - .pretendardFont(family: .Regular, size: 13) - .cardStyle() - - } - } -} - -struct EditButton: View { - var body: some View { - Button(action: {}) { - Text("수정") - .foregroundColor(.white) - } - .frame(maxWidth: .infinity) - .frame(height: 48) - .background(.backGroundPrimary) - .clipShape(RoundedRectangle(cornerRadius: 16)) - } -} - struct MemberDetailView_Previews: PreviewProvider { static var previews: some View { MemberDetailView() diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift new file mode 100644 index 0000000..f2f5f70 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift @@ -0,0 +1,39 @@ +// +// MemberProfileView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct MemberProfileView: View { + let profile: MemberProfile + + var body: some View { + HStack { + Spacer() + + VStack(spacing: 7) { + Image(systemName: profile.image) + .font(.system(size: 40)) + + Text(profile.name) + .pretendardFont(family: .Regular, size: 13) + + Text(profile.role) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + + + Text(profile.mbti) + .pretendardFont(family: .Regular, size: 13) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(Capsule().fill(.gray20)) + } + + Spacer() + } + .cardStyle() + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift new file mode 100644 index 0000000..65698fd --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift @@ -0,0 +1,31 @@ +// +// StrengthsView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct StrengthsView: View { + let profile: MemberProfile + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("주요장점") + .pretendardFont(family: .SemiBold, size: 14) + VStack { + ForEach(profile.strengths, id: \.self) { item in + HStack(alignment: .firstTextBaseline, spacing: 8) { + Circle().frame(width: 5, height: 5) + Text(item) + .pretendardFont(family: .Regular, size: 13) + .foregroundStyle(.textSecondary100) + .fixedSize(horizontal: false, vertical: true) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .cardStyle() + } + } +} From ca57bdf0adff7058018ab27df7de46bc5b17af30 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 11:23:35 +0900 Subject: [PATCH 17/35] =?UTF-8?q?[chore]=20=EC=A2=8C=EC=9A=B0=20padding=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Presnetaion/MemberDetail/MemberDetailView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index dbe15dd..fef5fdf 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -44,7 +44,7 @@ struct MemberDetailView: View { EditButton() } - .padding(.horizontal, 14) + .padding(.horizontal, 16) } } } From 98be2ea1371e82b20ede510716909167f92f059d Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 11:52:43 +0900 Subject: [PATCH 18/35] =?UTF-8?q?[chore]=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Componet/Navigation/CustomNavigationBackBar.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Componet/Navigation/CustomNavigationBackBar.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Componet/Navigation/CustomNavigationBackBar.swift index 42f7c2a..5c1ff72 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Componet/Navigation/CustomNavigationBackBar.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Componet/Navigation/CustomNavigationBackBar.swift @@ -14,7 +14,7 @@ import SwiftUI init( text: String = "", - buttonAction: @escaping () -> Void, + buttonAction: @escaping () -> Void ) { self.buttonAction = buttonAction self.text = text From 172082d6c60b4f9393296294a25a8e9ad186c5f2 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 11:53:38 +0900 Subject: [PATCH 19/35] =?UTF-8?q?[chore]=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EB=B0=94=EC=99=80=20=EC=BB=A8=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20=EA=B0=84=EA=B2=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Presnetaion/MemberDetail/MemberDetailView.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift index fef5fdf..9bba57b 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift @@ -31,6 +31,8 @@ struct MemberDetailView: View { coordinator.goBack() } + Spacer().frame(height: 20) + VStack(spacing: 20) { MemberProfileView(profile: profile) From 5f482a0acfd2956bf9a9523a30e022904927365d Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 11:55:04 +0900 Subject: [PATCH 20/35] =?UTF-8?q?[chore]=20components=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presnetaion/MemberDetail/{ => Components}/BlogView.swift | 0 .../MemberDetail/{ => Components}/CollabStyleView.swift | 0 .../Presnetaion/MemberDetail/{ => Components}/EditButton.swift | 0 .../MemberDetail/{ => Components}/IntroductionView.swift | 0 .../MemberDetail/{ => Components}/MemberProfileView.swift | 0 .../Presnetaion/MemberDetail/{ => Components}/StrengthsView.swift | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => Components}/BlogView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => Components}/CollabStyleView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => Components}/EditButton.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => Components}/IntroductionView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => Components}/MemberProfileView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => Components}/StrengthsView.swift (100%) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/BlogView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/BlogView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/CollabStyleView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/CollabStyleView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/EditButton.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/EditButton.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/IntroductionView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/IntroductionView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/MemberProfileView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/MemberProfileView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/StrengthsView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/StrengthsView.swift From cfd59ef8028dde0622f26df16915d66a2be8d979 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 12:15:13 +0900 Subject: [PATCH 21/35] =?UTF-8?q?[feat]=20=EB=B2=84=ED=8A=BC=20=ED=95=98?= =?UTF-8?q?=EB=8B=A8=20=EA=B3=A0=EC=A0=95,=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => View}/Components/BlogView.swift | 0 .../Components/CollabStyleView.swift | 0 .../{ => View}/Components/EditButton.swift | 0 .../Components/IntroductionView.swift | 0 .../Components/MemberProfileView.swift | 0 .../{ => View}/Components/StrengthsView.swift | 0 .../{ => View}/MemberDetailView.swift | 37 ++++++++++++------- .../ViewModel/MemberDetailViewModel.swift | 12 ++++++ 8 files changed, 35 insertions(+), 14 deletions(-) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/Components/BlogView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/Components/CollabStyleView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/Components/EditButton.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/Components/IntroductionView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/Components/MemberProfileView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/Components/StrengthsView.swift (100%) rename TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/{ => View}/MemberDetailView.swift (68%) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/BlogView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/BlogView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/CollabStyleView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/CollabStyleView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/EditButton.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/IntroductionView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/MemberProfileView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/MemberProfileView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/MemberProfileView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/MemberProfileView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/StrengthsView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift similarity index 100% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/Components/StrengthsView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift similarity index 68% rename from TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift rename to TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index 9bba57b..2cd0c80 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -23,30 +23,39 @@ struct MemberDetailView: View { @ObservedObject var coordinator: IntroduceCoordinator var body: some View { - ScrollView { - Spacer() - .frame(height: 14) + ZStack { + ScrollView { + Spacer() + .frame(height: 14) - CustomNavigationBackBar { - coordinator.goBack() - } + CustomNavigationBackBar { + coordinator.goBack() + } + + Spacer().frame(height: 20) - Spacer().frame(height: 20) + VStack(spacing: 20) { + MemberProfileView(profile: profile) - VStack(spacing: 20) { - MemberProfileView(profile: profile) + IntroductionView(profile: profile) - IntroductionView(profile: profile) + StrengthsView(profile: profile) - StrengthsView(profile: profile) + CollabStyleView(profile: profile) - CollabStyleView(profile: profile) + BlogView(profile: profile) + } + .padding(.horizontal, 16) + .padding(.bottom, 80) + } + .scrollIndicators(.hidden) - BlogView(profile: profile) + VStack { + Spacer() EditButton() + .padding(.horizontal, 16) } - .padding(.horizontal, 16) } } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift new file mode 100644 index 0000000..1efed52 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift @@ -0,0 +1,12 @@ +// +// MemberDetailViewModel.swift +// TeamIntroduce +// +// Created by 김민희 on 8/13/25. +// + +import SwiftUI + +class MemberDetailViewModel: ObservableObject { + +} From 9ce0efeea9157d9c3b9ac1a318a37299f5b93e4c Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 15:29:06 +0900 Subject: [PATCH 22/35] =?UTF-8?q?[feat]=20=EB=B7=B0=EC=99=80=20=EB=B7=B0?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/View/MemberDetailView.swift | 12 +++++------ .../ViewModel/MemberDetailViewModel.swift | 20 ++++++++++++++++++- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index 2cd0c80..cd5dd69 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -19,8 +19,8 @@ struct MemberProfile { } struct MemberDetailView: View { - private let profile = MemberProfile() @ObservedObject var coordinator: IntroduceCoordinator + @StateObject var viewModel = MemberDetailViewModel() var body: some View { ZStack { @@ -35,15 +35,15 @@ struct MemberDetailView: View { Spacer().frame(height: 20) VStack(spacing: 20) { - MemberProfileView(profile: profile) + MemberProfileView(profile: viewModel.profile) - IntroductionView(profile: profile) + IntroductionView(profile: viewModel.profile) - StrengthsView(profile: profile) + StrengthsView(profile: viewModel.profile) - CollabStyleView(profile: profile) + CollabStyleView(profile: viewModel.profile) - BlogView(profile: profile) + BlogView(profile: viewModel.profile) } .padding(.horizontal, 16) .padding(.bottom, 80) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift index 1efed52..4cb0b60 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift @@ -8,5 +8,23 @@ import SwiftUI class MemberDetailViewModel: ObservableObject { - + @Published var isEditing: Bool = false + @Published var profile: MemberProfile + + init() { + self.profile = MemberProfile() + } + + func startEditing() { + isEditing = true + } + + func cancelEditing() { + isEditing = false + } + + func saveEditing() { + isEditing = false + } + } From bd18fe67b5e6971fdf7ddf23968777d4f84e790d Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 16:19:16 +0900 Subject: [PATCH 23/35] =?UTF-8?q?[feat]=20=EB=B2=84=ED=8A=BC=EC=9D=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20/=20=EC=A0=80=EC=9E=A5=20=EB=AA=A8?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/EditButton.swift | 21 +++++++++++-------- .../MemberDetail/View/MemberDetailView.swift | 13 ++++++++++-- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift index 763dda9..f3ef463 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift @@ -7,14 +7,17 @@ import SwiftUI struct EditButton: View { - var body: some View { - Button(action: {}) { - Text("수정") - .foregroundColor(.white) - } - .frame(maxWidth: .infinity) - .frame(height: 48) - .background(.backGroundPrimary) - .clipShape(RoundedRectangle(cornerRadius: 16)) + var text: String + var action: () -> Void + + var body: some View { + Button(action: { action()}) { + Text(text) + .foregroundColor(.white) } + .frame(maxWidth: .infinity) + .frame(height: 48) + .background(.backGroundPrimary) + .clipShape(RoundedRectangle(cornerRadius: 16)) + } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index cd5dd69..5c684ce 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -53,8 +53,17 @@ struct MemberDetailView: View { VStack { Spacer() - EditButton() - .padding(.horizontal, 16) + if viewModel.isEditing { + EditButton(text: "저장") { + viewModel.saveEditing() + } + .padding(.horizontal, 16) + } else { + EditButton(text: "수정") { + viewModel.startEditing() + } + .padding(.horizontal, 16) + } } } } From 7094e443178677cb1411863f2d630fad8d6a66bf Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 16:19:37 +0900 Subject: [PATCH 24/35] =?UTF-8?q?[feat]=20=EC=86=8C=EA=B0=9C=20=EB=B7=B0?= =?UTF-8?q?=EC=9D=98=20=EC=88=98=EC=A0=95=EB=AA=A8=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/IntroductionView.swift | 25 +++++++++++++------ .../MemberDetail/View/MemberDetailView.swift | 5 +++- .../ViewModel/MemberDetailViewModel.swift | 3 +++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift index b499cc2..d01de65 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift @@ -7,17 +7,28 @@ import SwiftUI struct IntroductionView: View { - let profile: MemberProfile - + var isEditing: Bool + @Binding var introduction: String + var body: some View { VStack(alignment: .leading, spacing: 14) { Text("자기소개") .pretendardFont(family: .semiBold, size: 14) - Text(profile.introduction) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() + + if isEditing { + TextField("", text: $introduction, axis: .vertical) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .lineLimit(1...10) + .cardStyle() + } else { + Text(introduction) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() + } } } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index 5c684ce..ec5a74b 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -37,7 +37,10 @@ struct MemberDetailView: View { VStack(spacing: 20) { MemberProfileView(profile: viewModel.profile) - IntroductionView(profile: viewModel.profile) + IntroductionView(isEditing: viewModel.isEditing, + introduction: viewModel.isEditing ? + $viewModel.editingProfile.introduction : + .constant(viewModel.profile.introduction)) StrengthsView(profile: viewModel.profile) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift index 4cb0b60..f0d65a4 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/ViewModel/MemberDetailViewModel.swift @@ -10,9 +10,11 @@ import SwiftUI class MemberDetailViewModel: ObservableObject { @Published var isEditing: Bool = false @Published var profile: MemberProfile + @Published var editingProfile: MemberProfile init() { self.profile = MemberProfile() + self.editingProfile = MemberProfile() } func startEditing() { @@ -24,6 +26,7 @@ class MemberDetailViewModel: ObservableObject { } func saveEditing() { + profile = editingProfile isEditing = false } From 42cd3ebff4be656fc02228e6525284d1b031134c Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 16:49:24 +0900 Subject: [PATCH 25/35] =?UTF-8?q?[feat]=20=EC=A3=BC=EC=9A=94=20=EC=9E=A5?= =?UTF-8?q?=EC=A0=90=20=EB=B7=B0=20=EC=88=98=EC=A0=95=EB=AA=A8=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/EditButton.swift | 4 +- .../View/Components/StrengthsView.swift | 59 +++++++++++++++---- .../MemberDetail/View/MemberDetailView.swift | 7 ++- 3 files changed, 55 insertions(+), 15 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift index f3ef463..bd06970 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift @@ -11,7 +11,9 @@ struct EditButton: View { var action: () -> Void var body: some View { - Button(action: { action()}) { + Button { + action() + } label: { Text(text) .foregroundColor(.white) } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift index 16de036..f26024e 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift @@ -7,25 +7,60 @@ import SwiftUI struct StrengthsView: View { - let profile: MemberProfile - + var isEditing: Bool + @Binding var strengths: [String] + var body: some View { VStack(alignment: .leading, spacing: 14) { Text("주요장점") .pretendardFont(family: .semiBold, size: 14) - VStack { - ForEach(profile.strengths, id: \.self) { item in - HStack(alignment: .firstTextBaseline, spacing: 8) { - Circle().frame(width: 5, height: 5) - Text(item) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .fixedSize(horizontal: false, vertical: true) + + if isEditing { + VStack { + ForEach(strengths.indices, id: \.self) { index in + HStack { + Button { + strengths.remove(at: index) + } label: { + Image(systemName: "minus.circle.fill") + .foregroundStyle(.red) + } + + TextField("", text: $strengths[index]) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineLimit(1...5) + } + } + + Button { + strengths.append("") + } label: { + HStack { + Image(systemName: "plus.circle.fill") + Text("장점 추가하기") + .pretendardFont(family: .regular, size: 13) + } + } + .padding(.top, 10) + } + .cardStyle() + + } else { + VStack { + ForEach(strengths, id: \.self) { item in + HStack(alignment: .firstTextBaseline, spacing: 8) { + Circle().frame(width: 5, height: 5) + Text(item) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .fixedSize(horizontal: false, vertical: true) + } + .frame(maxWidth: .infinity, alignment: .leading) } - .frame(maxWidth: .infinity, alignment: .leading) } + .cardStyle() } - .cardStyle() } } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index ec5a74b..729bc1e 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -40,9 +40,12 @@ struct MemberDetailView: View { IntroductionView(isEditing: viewModel.isEditing, introduction: viewModel.isEditing ? $viewModel.editingProfile.introduction : - .constant(viewModel.profile.introduction)) + .constant(viewModel.profile.introduction)) - StrengthsView(profile: viewModel.profile) + StrengthsView(isEditing: viewModel.isEditing, + strengths: viewModel.isEditing ? + $viewModel.editingProfile.strengths : + .constant(viewModel.profile.strengths)) CollabStyleView(profile: viewModel.profile) From 41b8cd7ef790f82a76f746051b50605773aa26d2 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 16:50:48 +0900 Subject: [PATCH 26/35] =?UTF-8?q?[chore]=20=EC=88=98=EC=A0=95=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EA=B0=80=EB=8A=A5=20=EC=98=81?= =?UTF-8?q?=EC=97=AD=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/View/Components/EditButton.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift index bd06970..2e38ab6 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditButton.swift @@ -16,10 +16,10 @@ struct EditButton: View { } label: { Text(text) .foregroundColor(.white) + .frame(maxWidth: .infinity) + .frame(height: 48) + .background(.backGroundPrimary) + .clipShape(RoundedRectangle(cornerRadius: 16)) } - .frame(maxWidth: .infinity) - .frame(height: 48) - .background(.backGroundPrimary) - .clipShape(RoundedRectangle(cornerRadius: 16)) } } From 460618342db42840458a5527b5ba6e60713ecff2 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 17:00:18 +0900 Subject: [PATCH 27/35] =?UTF-8?q?[feat]=20=ED=98=91=EC=97=85=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EB=B7=B0=20=EC=88=98=EC=A0=95=EB=AA=A8?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/CollabStyleView.swift | 24 ++++++++++++++----- .../MemberDetail/View/MemberDetailView.swift | 5 +++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift index f22bca0..b6eda4c 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift @@ -7,17 +7,29 @@ import SwiftUI struct CollabStyleView: View { - let profile: MemberProfile + var isEditing: Bool + @Binding var collabStyle: String + var body: some View { VStack(alignment: .leading, spacing: 14) { Text("협업스타일") .pretendardFont(family: .semiBold, size: 14) - Text(profile.collabStyle) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() + + if isEditing { + TextField("협업스타일", text: $collabStyle, axis: .vertical) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .lineLimit(1...10) + .cardStyle() + } else { + Text(collabStyle) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() + } } } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index 729bc1e..266c1e7 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -47,7 +47,10 @@ struct MemberDetailView: View { $viewModel.editingProfile.strengths : .constant(viewModel.profile.strengths)) - CollabStyleView(profile: viewModel.profile) + CollabStyleView(isEditing: viewModel.isEditing, + collabStyle: viewModel.isEditing ? + $viewModel.editingProfile.collabStyle : + .constant(viewModel.profile.collabStyle)) BlogView(profile: viewModel.profile) } From 88ba56142d941267bd8415551703f65a2034eb40 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 17:00:50 +0900 Subject: [PATCH 28/35] =?UTF-8?q?[feat]=20=EB=B8=94=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=A3=BC=EC=86=8C=20=EB=B7=B0=20=EC=88=98=EC=A0=95=EB=AA=A8?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/BlogView.swift | 20 ++++++++++++------- .../MemberDetail/View/MemberDetailView.swift | 5 ++++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift index 5d82632..919de58 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift @@ -7,17 +7,23 @@ import SwiftUI struct BlogView: View { - let profile: MemberProfile - + var isEditing: Bool + @Binding var blogURL: String + var body: some View { VStack(alignment: .leading, spacing: 14) { Text("블로그") .pretendardFont(family: .semiBold, size: 14) - - Text(profile.blogURL) - .pretendardFont(family: .regular, size: 13) - .cardStyle() - + + if isEditing { + TextField("블로그 URL", text: $blogURL) + .pretendardFont(family: .regular, size: 13) + .cardStyle() + } else { + Text(blogURL) + .pretendardFont(family: .regular, size: 13) + .cardStyle() + } } } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index 266c1e7..dd5aa01 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -52,7 +52,10 @@ struct MemberDetailView: View { $viewModel.editingProfile.collabStyle : .constant(viewModel.profile.collabStyle)) - BlogView(profile: viewModel.profile) + BlogView(isEditing: viewModel.isEditing, + blogURL: viewModel.isEditing ? + $viewModel.editingProfile.blogURL : + .constant(viewModel.profile.blogURL)) } .padding(.horizontal, 16) .padding(.bottom, 80) From 87addd1c17e8304ff7337bde981586e7fda59a55 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 17:01:52 +0900 Subject: [PATCH 29/35] =?UTF-8?q?[chore]=20=EC=9E=90=EA=B8=B0=EC=86=8C?= =?UTF-8?q?=EA=B0=9C=20TextField=20titleKey=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberDetail/View/Components/IntroductionView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift index d01de65..aea234e 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift @@ -16,7 +16,7 @@ struct IntroductionView: View { .pretendardFont(family: .semiBold, size: 14) if isEditing { - TextField("", text: $introduction, axis: .vertical) + TextField("자기소개", text: $introduction, axis: .vertical) .pretendardFont(family: .regular, size: 13) .foregroundStyle(.textSecondary100) .lineSpacing(5) From d1313bb4b7d1041e3213af7d779e1835dbe86f36 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 17:36:44 +0900 Subject: [PATCH 30/35] =?UTF-8?q?[feat]=20padding=20=EC=84=A0=EC=96=B8=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presnetaion/MemberDetail/View/MemberDetailView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index dd5aa01..f5d44cf 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -69,14 +69,14 @@ struct MemberDetailView: View { EditButton(text: "저장") { viewModel.saveEditing() } - .padding(.horizontal, 16) } else { EditButton(text: "수정") { viewModel.startEditing() } - .padding(.horizontal, 16) + } } + .padding(.horizontal, 16) } } } From 301c2505aa1bc179c24a30e50754aabfffea8806 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 17:57:02 +0900 Subject: [PATCH 31/35] =?UTF-8?q?Revert=20"[feat]=20padding=20=EC=84=A0?= =?UTF-8?q?=EC=96=B8=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit d1313bb4b7d1041e3213af7d779e1835dbe86f36. --- .../Presnetaion/MemberDetail/View/MemberDetailView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index f5d44cf..dd5aa01 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -69,14 +69,14 @@ struct MemberDetailView: View { EditButton(text: "저장") { viewModel.saveEditing() } + .padding(.horizontal, 16) } else { EditButton(text: "수정") { viewModel.startEditing() } - + .padding(.horizontal, 16) } } - .padding(.horizontal, 16) } } } From 5ce0bef3cb1d99c6b56e402d616e35e2695f596a Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 17:59:00 +0900 Subject: [PATCH 32/35] =?UTF-8?q?Revert=20"[chore]=20=EC=9E=90=EA=B8=B0?= =?UTF-8?q?=EC=86=8C=EA=B0=9C=20TextField=20titleKey=20=EC=88=98=EC=A0=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 87addd1c17e8304ff7337bde981586e7fda59a55. --- .../MemberDetail/View/Components/IntroductionView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift index aea234e..d01de65 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift @@ -16,7 +16,7 @@ struct IntroductionView: View { .pretendardFont(family: .semiBold, size: 14) if isEditing { - TextField("자기소개", text: $introduction, axis: .vertical) + TextField("", text: $introduction, axis: .vertical) .pretendardFont(family: .regular, size: 13) .foregroundStyle(.textSecondary100) .lineSpacing(5) From 37fa2bfc8795fc10774fa2f1c29cc189f2e5bf88 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 18:01:05 +0900 Subject: [PATCH 33/35] =?UTF-8?q?[chore]=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presnetaion/MemberDetail/BlogView.swift | 23 --------- .../MemberDetail/CollabStyleView.swift | 23 --------- .../Presnetaion/MemberDetail/EditButton.swift | 20 -------- .../MemberDetail/IntroductionView.swift | 23 --------- .../MemberDetail/MemberDetailView.swift | 48 ------------------- .../MemberDetail/MemberProfileView.swift | 39 --------------- .../MemberDetail/StrengthsView.swift | 31 ------------ 7 files changed, 207 deletions(-) delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift deleted file mode 100644 index a58fdbb..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/BlogView.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// BlogView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct BlogView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("블로그") - .pretendardFont(family: .SemiBold, size: 14) - - Text(profile.blogURL) - .pretendardFont(family: .Regular, size: 13) - .cardStyle() - - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift deleted file mode 100644 index 194be4b..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/CollabStyleView.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// CollabStyleView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct CollabStyleView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("협업스타일") - .pretendardFont(family: .SemiBold, size: 14) - Text(profile.collabStyle) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift deleted file mode 100644 index 763dda9..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/EditButton.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// EditButton.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct EditButton: View { - var body: some View { - Button(action: {}) { - Text("수정") - .foregroundColor(.white) - } - .frame(maxWidth: .infinity) - .frame(height: 48) - .background(.backGroundPrimary) - .clipShape(RoundedRectangle(cornerRadius: 16)) - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift deleted file mode 100644 index 4186644..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/IntroductionView.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// IntroductionView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct IntroductionView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("자기소개") - .pretendardFont(family: .SemiBold, size: 14) - Text(profile.introduction) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift deleted file mode 100644 index 5c5b4ab..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberDetailView.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// MemberDetailView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/11/25. -// - -import SwiftUI - -struct MemberProfile { - var image: String = "person.crop.circle" - var name: String = "김철수" - var role: String = "프론트엔드개발자" - var mbti: String = "ENFP" - var introduction: String = "사용자경험을최우선으로생각하는프론트엔드개발자입니다.새로운기술을배우는것을좋아하고,팀원들과아이디어를 공유하며함께성장하는것을즐깁니다." - var strengths: [String] = ["창의적인문제해결능력", "새로운기술에대한빠른학습력", "사용자중심적사고", "긍정적이고적극적인커뮤니케이션"] - var collabStyle: String = "아이디어를 자유롭게공유하고,다양한관점에서문제를바라보는것을 선호합니다.팀원들의의견을경청하고,함께더나은해결책을찾아가는협업을추구합니다." - var blogURL: String = "https: //chulsoo.dev" -} - -struct MemberDetailView: View { - private let profile = MemberProfile() - - var body: some View { - ScrollView { - VStack(spacing: 20) { - MemberProfileView(profile: profile) - - IntroductionView(profile: profile) - - StrengthsView(profile: profile) - - CollabStyleView(profile: profile) - - BlogView(profile: profile) - - EditButton() - } - .padding(.horizontal, 14) - } - } -} - -struct MemberDetailView_Previews: PreviewProvider { - static var previews: some View { - MemberDetailView() - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift deleted file mode 100644 index f2f5f70..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/MemberProfileView.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// MemberProfileView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct MemberProfileView: View { - let profile: MemberProfile - - var body: some View { - HStack { - Spacer() - - VStack(spacing: 7) { - Image(systemName: profile.image) - .font(.system(size: 40)) - - Text(profile.name) - .pretendardFont(family: .Regular, size: 13) - - Text(profile.role) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - - - Text(profile.mbti) - .pretendardFont(family: .Regular, size: 13) - .padding(.horizontal, 12) - .padding(.vertical, 6) - .background(Capsule().fill(.gray20)) - } - - Spacer() - } - .cardStyle() - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift deleted file mode 100644 index 65698fd..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/StrengthsView.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// StrengthsView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct StrengthsView: View { - let profile: MemberProfile - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("주요장점") - .pretendardFont(family: .SemiBold, size: 14) - VStack { - ForEach(profile.strengths, id: \.self) { item in - HStack(alignment: .firstTextBaseline, spacing: 8) { - Circle().frame(width: 5, height: 5) - Text(item) - .pretendardFont(family: .Regular, size: 13) - .foregroundStyle(.textSecondary100) - .fixedSize(horizontal: false, vertical: true) - } - .frame(maxWidth: .infinity, alignment: .leading) - } - } - .cardStyle() - } - } -} From 369aed16b2c5e0e9c5b98013a5e933a47d9ae8a7 Mon Sep 17 00:00:00 2001 From: minneee Date: Wed, 13 Aug 2025 18:02:03 +0900 Subject: [PATCH 34/35] =?UTF-8?q?[chore]=20padding=20=EC=84=A0=EC=96=B8=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presnetaion/MemberDetail/View/MemberDetailView.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index dd5aa01..28bafbe 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -69,14 +69,13 @@ struct MemberDetailView: View { EditButton(text: "저장") { viewModel.saveEditing() } - .padding(.horizontal, 16) } else { EditButton(text: "수정") { viewModel.startEditing() } - .padding(.horizontal, 16) } } + .padding(.horizontal, 16) } } } From 8075ddf04555a9ef381a10a617bb9bc18a068ff3 Mon Sep 17 00:00:00 2001 From: minneee Date: Thu, 14 Aug 2025 10:56:31 +0900 Subject: [PATCH 35/35] =?UTF-8?q?[feat]=20=EC=88=98=EC=A0=95=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EB=A1=9C=EC=A7=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/BlogView.swift | 29 -------- .../View/Components/CollabStyleView.swift | 35 ---------- .../DisplayView/BlogDisplayView.swift | 22 +++++++ .../DisplayView/CollabStyleDisplayView.swift | 25 +++++++ .../DisplayView/IntroductionDisplayView.swift | 24 +++++++ .../DisplayView/StrengthsDisplayView.swift | 32 +++++++++ .../Components/EditView/BlogEditView.swift | 22 +++++++ .../EditView/CollabStyleEditView.swift | 26 ++++++++ .../EditView/IntroductionEditView.swift | 25 +++++++ .../EditView/StrengthsEditView.swift | 48 ++++++++++++++ .../View/Components/IntroductionView.swift | 34 ---------- .../View/Components/StrengthsView.swift | 66 ------------------- .../MemberDetail/View/MemberDetailView.swift | 36 +++++----- 13 files changed, 241 insertions(+), 183 deletions(-) delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/BlogDisplayView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/CollabStyleDisplayView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/IntroductionDisplayView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/StrengthsDisplayView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/BlogEditView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/CollabStyleEditView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/IntroductionEditView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/StrengthsEditView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift deleted file mode 100644 index 919de58..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/BlogView.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// BlogView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct BlogView: View { - var isEditing: Bool - @Binding var blogURL: String - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("블로그") - .pretendardFont(family: .semiBold, size: 14) - - if isEditing { - TextField("블로그 URL", text: $blogURL) - .pretendardFont(family: .regular, size: 13) - .cardStyle() - } else { - Text(blogURL) - .pretendardFont(family: .regular, size: 13) - .cardStyle() - } - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift deleted file mode 100644 index b6eda4c..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/CollabStyleView.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// CollabStyleView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct CollabStyleView: View { - var isEditing: Bool - @Binding var collabStyle: String - - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("협업스타일") - .pretendardFont(family: .semiBold, size: 14) - - if isEditing { - TextField("협업스타일", text: $collabStyle, axis: .vertical) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .lineLimit(1...10) - .cardStyle() - } else { - Text(collabStyle) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() - } - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/BlogDisplayView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/BlogDisplayView.swift new file mode 100644 index 0000000..24102e8 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/BlogDisplayView.swift @@ -0,0 +1,22 @@ +// +// BlogDisplayView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct BlogDisplayView: View { + var blogURL: String + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("블로그") + .pretendardFont(family: .semiBold, size: 14) + + Text(blogURL) + .pretendardFont(family: .regular, size: 13) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/CollabStyleDisplayView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/CollabStyleDisplayView.swift new file mode 100644 index 0000000..fb72b72 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/CollabStyleDisplayView.swift @@ -0,0 +1,25 @@ +// +// CollabStyleDisplayView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct CollabStyleDisplayView: View { + var collabStyle: String + + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("협업스타일") + .pretendardFont(family: .semiBold, size: 14) + + Text(collabStyle) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/IntroductionDisplayView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/IntroductionDisplayView.swift new file mode 100644 index 0000000..3350b7a --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/IntroductionDisplayView.swift @@ -0,0 +1,24 @@ +// +// IntroductionDisplayView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct IntroductionDisplayView: View { + var introduction: String + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("자기소개") + .pretendardFont(family: .semiBold, size: 14) + + Text(introduction) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/StrengthsDisplayView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/StrengthsDisplayView.swift new file mode 100644 index 0000000..cae130a --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/DisplayView/StrengthsDisplayView.swift @@ -0,0 +1,32 @@ +// +// StrengthsDisplayView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/12/25. +// +import SwiftUI + +struct StrengthsDisplayView: View { + var strengths: [String] + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("주요장점") + .pretendardFont(family: .semiBold, size: 14) + + VStack { + ForEach(strengths, id: \.self) { item in + HStack(alignment: .firstTextBaseline, spacing: 8) { + Circle().frame(width: 5, height: 5) + Text(item) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .fixedSize(horizontal: false, vertical: true) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/BlogEditView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/BlogEditView.swift new file mode 100644 index 0000000..863c3dd --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/BlogEditView.swift @@ -0,0 +1,22 @@ +// +// BlogEditView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/14/25. +// +import SwiftUI + +struct BlogEditView: View { + @Binding var blogURL: String + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("블로그") + .pretendardFont(family: .semiBold, size: 14) + + TextField("블로그 URL", text: $blogURL) + .pretendardFont(family: .regular, size: 13) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/CollabStyleEditView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/CollabStyleEditView.swift new file mode 100644 index 0000000..dc01618 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/CollabStyleEditView.swift @@ -0,0 +1,26 @@ +// +// CollabStyleEditView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/14/25. +// +import SwiftUI + +struct CollabStyleEditView: View { + @Binding var collabStyle: String + + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("협업스타일") + .pretendardFont(family: .semiBold, size: 14) + + TextField("협업스타일", text: $collabStyle, axis: .vertical) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .lineLimit(1...10) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/IntroductionEditView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/IntroductionEditView.swift new file mode 100644 index 0000000..8f12d06 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/IntroductionEditView.swift @@ -0,0 +1,25 @@ +// +// IntroductionEditView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/14/25. +// +import SwiftUI + +struct IntroductionEditView: View { + @Binding var introduction: String + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("자기소개") + .pretendardFont(family: .semiBold, size: 14) + + TextField("", text: $introduction, axis: .vertical) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineSpacing(5) + .lineLimit(1...10) + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/StrengthsEditView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/StrengthsEditView.swift new file mode 100644 index 0000000..e93cb75 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/EditView/StrengthsEditView.swift @@ -0,0 +1,48 @@ +// +// StrengthsEditView.swift +// TeamIntroduce +// +// Created by 김민희 on 8/14/25. +// +import SwiftUI + +struct StrengthsEditView: View { + @Binding var strengths: [String] + + var body: some View { + VStack(alignment: .leading, spacing: 14) { + Text("주요장점") + .pretendardFont(family: .semiBold, size: 14) + + VStack { + ForEach(strengths.indices, id: \.self) { index in + HStack { + Button { + strengths.remove(at: index) + } label: { + Image(systemName: "minus.circle.fill") + .foregroundStyle(.red) + } + + TextField("", text: $strengths[index]) + .pretendardFont(family: .regular, size: 13) + .foregroundStyle(.textSecondary100) + .lineLimit(1...5) + } + } + + Button { + strengths.append("") + } label: { + HStack { + Image(systemName: "plus.circle.fill") + Text("장점 추가하기") + .pretendardFont(family: .regular, size: 13) + } + } + .padding(.top, 10) + } + .cardStyle() + } + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift deleted file mode 100644 index d01de65..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/IntroductionView.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// IntroductionView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct IntroductionView: View { - var isEditing: Bool - @Binding var introduction: String - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("자기소개") - .pretendardFont(family: .semiBold, size: 14) - - if isEditing { - TextField("", text: $introduction, axis: .vertical) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .lineLimit(1...10) - .cardStyle() - } else { - Text(introduction) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineSpacing(5) - .cardStyle() - } - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift deleted file mode 100644 index f26024e..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/Components/StrengthsView.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// StrengthsView.swift -// TeamIntroduce -// -// Created by 김민희 on 8/12/25. -// -import SwiftUI - -struct StrengthsView: View { - var isEditing: Bool - @Binding var strengths: [String] - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - Text("주요장점") - .pretendardFont(family: .semiBold, size: 14) - - if isEditing { - VStack { - ForEach(strengths.indices, id: \.self) { index in - HStack { - Button { - strengths.remove(at: index) - } label: { - Image(systemName: "minus.circle.fill") - .foregroundStyle(.red) - } - - TextField("", text: $strengths[index]) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .lineLimit(1...5) - } - } - - Button { - strengths.append("") - } label: { - HStack { - Image(systemName: "plus.circle.fill") - Text("장점 추가하기") - .pretendardFont(family: .regular, size: 13) - } - } - .padding(.top, 10) - } - .cardStyle() - - } else { - VStack { - ForEach(strengths, id: \.self) { item in - HStack(alignment: .firstTextBaseline, spacing: 8) { - Circle().frame(width: 5, height: 5) - Text(item) - .pretendardFont(family: .regular, size: 13) - .foregroundStyle(.textSecondary100) - .fixedSize(horizontal: false, vertical: true) - } - .frame(maxWidth: .infinity, alignment: .leading) - } - } - .cardStyle() - } - } - } -} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift index 28bafbe..c6a879e 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/MemberDetail/View/MemberDetailView.swift @@ -37,25 +37,23 @@ struct MemberDetailView: View { VStack(spacing: 20) { MemberProfileView(profile: viewModel.profile) - IntroductionView(isEditing: viewModel.isEditing, - introduction: viewModel.isEditing ? - $viewModel.editingProfile.introduction : - .constant(viewModel.profile.introduction)) - - StrengthsView(isEditing: viewModel.isEditing, - strengths: viewModel.isEditing ? - $viewModel.editingProfile.strengths : - .constant(viewModel.profile.strengths)) - - CollabStyleView(isEditing: viewModel.isEditing, - collabStyle: viewModel.isEditing ? - $viewModel.editingProfile.collabStyle : - .constant(viewModel.profile.collabStyle)) - - BlogView(isEditing: viewModel.isEditing, - blogURL: viewModel.isEditing ? - $viewModel.editingProfile.blogURL : - .constant(viewModel.profile.blogURL)) + if viewModel.isEditing { + IntroductionEditView(introduction: $viewModel.editingProfile.introduction) + + StrengthsEditView(strengths: $viewModel.editingProfile.strengths) + + CollabStyleEditView(collabStyle: $viewModel.editingProfile.collabStyle) + + BlogEditView(blogURL: $viewModel.editingProfile.blogURL) + } else { + IntroductionDisplayView(introduction: viewModel.profile.introduction) + + StrengthsDisplayView(strengths: viewModel.profile.strengths) + + CollabStyleDisplayView(collabStyle: viewModel.profile.collabStyle) + + BlogDisplayView(blogURL: viewModel.profile.blogURL) + } } .padding(.horizontal, 16) .padding(.bottom, 80)