From 2be6727d0dae09addf6d20a5b2167fb130ac41e7 Mon Sep 17 00:00:00 2001 From: minneee Date: Mon, 11 Aug 2025 17:46:31 +0900 Subject: [PATCH 01/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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/16] =?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() + } + } +}