From 057447f81bd4c8d6d94403a0799750750fc5b1b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 16:51:20 +0900 Subject: [PATCH 01/12] =?UTF-8?q?[feat]=20mission=20view=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets.xcassets/Images/Contents.json | 6 ++++ .../MissionLogo.imageset/Background.svg | 12 +++++++ .../Images/MissionLogo.imageset/Contents.json | 16 +++++++++ .../View/Components/MissionView.swift | 33 +++++++++++++++++++ .../Components/TeamIntroductionRowView.swift | 18 ++++++++++ 5 files changed, 85 insertions(+) create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/Contents.json create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Background.svg create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Contents.json create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/Contents.json b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Background.svg b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Background.svg new file mode 100644 index 0000000..3dd1231 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Background.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Contents.json b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Contents.json new file mode 100644 index 0000000..6182ee5 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/MissionLogo.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "Background.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift new file mode 100644 index 0000000..1ea9fc5 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift @@ -0,0 +1,33 @@ +// +// MissionView.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +struct MissionView: View { + var body: some View { + VStack(alignment: .center, spacing: 12) { + Image("MissionLogo") + .renderingMode(.original) + + Text("우리의 미션") + .pretendardFont(family: .Bold, size: 14) + .foregroundStyle(.textPrimary) + + Text("혁신적인 기술로 사용자의 삶을 더 편리하고 풍요롭게 만드는 것") + .pretendardFont(family: .Regular, size: 12) + .foregroundStyle(.textSecondary) + } + .padding(16) + .background(Color(hex: "E9EBEF")) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .shadow(radius: 1, x: 2, y: 2) + } +} + +#Preview { + MissionView() +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift new file mode 100644 index 0000000..d5274cc --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift @@ -0,0 +1,18 @@ +// +// TeamIntroductionRowView.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +struct TeamIntroductionRowView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + TeamIntroductionRowView() +} From 93d03b3af2c49c983e1027967e926f9f8b1a0e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 16:51:42 +0900 Subject: [PATCH 02/12] =?UTF-8?q?[chor]=20text=20primary,=20text=20seconda?= =?UTF-8?q?ry=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/DesignSytstem/Color/Extension+ShapeStyle.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift index 5841e07..15cfe68 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Color/Extension+ShapeStyle.swift @@ -16,8 +16,8 @@ extension ShapeStyle where Self == Color { // MARK: - Static Text - static var textPrimary: Color { .init(hex: "FFFFFF") } - static var textSecondary: Color { .init(hex: "EAEAEA") } + static var textPrimary: Color { .init(hex: "0A0A0A") } + static var textSecondary: Color { .init(hex: "717182") } static var textSecondary100: Color { .init(hex: "525252") } static var textInactive: Color { .init(hex: "70737C47").opacity(0.28) } From 9ca72979260b24c5952fc4111880c7c7e7f75bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 17:46:57 +0900 Subject: [PATCH 03/12] =?UTF-8?q?feat.=20mbti=20=EB=9D=BC=EB=B2=A8=20?= =?UTF-8?q?=EB=B7=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/MBTILabel.swift | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift new file mode 100644 index 0000000..bb0beee --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift @@ -0,0 +1,70 @@ +// +// MBTILabel.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +public enum MBTI: String, CaseIterable { + case enfp = "ENFP" + case estp = "ESTP" + case infj = "INFJ" + case intj = "INTJ" + case isfj = "ISFJ" + case enfj = "ENFJ" + case infp = "INFP" + case intp = "INTP" + case isfp = "ISFP" +} + +struct MBTILabel: View { + + private let mbti: MBTI + + private var backgroundColor: Color { + switch mbti { + case .enfp: return Color(hex: "FF6B6B") + case .estp: return Color(hex: "E17055") + case .infj: return Color(hex: "4ECDC4") + case .intj: return Color(hex: "6C5CE7") + case .isfj: return Color(hex: "A8E6CF") + case .enfj: return Color(hex: "FFD93D") + case .infp: return Color(hex: "DDA0DD") + case .intp: return Color(hex: "74B9FF") + case .isfp: return Color(hex: "FDCB6E") + } + } + + private var textColor: Color { + switch mbti { + case .enfp, .estp, .infj, .intj, .intp: + return .white + case .isfj, .enfj, .infp, .isfp: + return Color(hex: "2D3436") + } + } + + init(mbti: MBTI) { + self.mbti = mbti + } + + var body: some View { + Text(mbti.rawValue) + .pretendardFont(family: .Regular, size: 10) + .foregroundStyle(textColor) + .padding(.horizontal, 7) + .padding(.vertical, 5) + .background(backgroundColor) + .clipShape(RoundedRectangle(cornerRadius: 8)) + } +} + +#Preview { + VStack { + MBTILabel(mbti: .enfj) + MBTILabel(mbti: .estp) + MBTILabel(mbti: .intp) + } +} From b4ceda3c2e77e3ec1254af525d3ebbd40e1c39c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 17:47:13 +0900 Subject: [PATCH 04/12] =?UTF-8?q?feat.=20=ED=8C=80=EC=9B=90=20=EB=9D=BC?= =?UTF-8?q?=EB=B2=A8=20ui=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Images/ArrowRight.imageset/Contents.json | 16 ++++++++++++ .../ArrowRight.imageset/arrow_right.svg | 3 +++ .../Components/TeamIntroductionRowView.swift | 25 ++++++++++++++++++- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/Contents.json create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/arrow_right.svg diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/Contents.json b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/Contents.json new file mode 100644 index 0000000..2859e21 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "arrow_right.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/arrow_right.svg b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/arrow_right.svg new file mode 100644 index 0000000..b9d4778 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/ArrowRight.imageset/arrow_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift index d5274cc..8fe480f 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift @@ -9,7 +9,30 @@ import SwiftUI struct TeamIntroductionRowView: View { var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + HStack { + Circle() + .frame(width: 42, height: 42) + VStack(alignment: .leading, spacing: 4) { + Text("김철수") + .pretendardFont(family: .SemiBold, size: 14) + .foregroundStyle(.textPrimary) + + Text("iOS 개발자") + .pretendardFont(family: .Regular, size: 12) + .foregroundStyle(.textSecondary) + + MBTILabel(mbti: .enfj) + } + + Spacer() + + Image("ArrowRight") + .foregroundStyle(Color(hex: "717182")) + } + .padding(16) + .background(Color.staticWhite) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .shadow(radius: 1) } } From e39b8b9837a46d74c2c74bd5d30c08a304eeea94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 19:47:02 +0900 Subject: [PATCH 05/12] =?UTF-8?q?feat.=20=ED=8C=80=EC=9B=90=20row=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IntroductionRowModel.swift | 62 +++++++++++++++++++ .../IntroductionRow/IntroductionRowView.swift | 55 ++++++++++++++++ .../View/Components/MissionView.swift | 1 + .../Components/TeamIntroductionRowView.swift | 41 ------------ 4 files changed, 118 insertions(+), 41 deletions(-) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowModel.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift delete mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowModel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowModel.swift new file mode 100644 index 0000000..4a6a9b5 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowModel.swift @@ -0,0 +1,62 @@ +// +// IntroductionRowModel.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import Foundation + +struct IntroductionRowModel: Identifiable, Hashable { + let id = UUID() + let name: String + let role: String // subTitle 대신 role로 더 명확하게 + let imageName: String + let mbti: MBTI + let introduction: String? // 간단한 소개글 추가 + let isLeader: Bool + + init( + name: String, + role: String, + imageName: String, + mbti: MBTI, + introduction: String? = nil, + isLeader: Bool = false + ) { + self.name = name + self.role = role + self.imageName = imageName + self.mbti = mbti + self.introduction = introduction + self.isLeader = isLeader + } +} + +// MARK: - Mock Data +extension IntroductionRowModel { + static let mockData: [IntroductionRowModel] = [ + IntroductionRowModel( + name: "김민희", + role: "iOS Developer", + imageName: "profile_kim", + mbti: .estp, + introduction: "서버 아키텍처에 관심이 많습니다", + isLeader: true + ), + IntroductionRowModel( + name: "서원지", + role: "iOS Developer", + imageName: "profile_lee", + mbti: .intp, + introduction: "사용자 경험을 최우선으로 생각합니다" + ), + IntroductionRowModel( + name: "홍석현", + role: "iOS Developer", + imageName: "profile_hong", + mbti: .enfj, + introduction: "SwiftUI와 iOS 개발을 좋아합니다" + ) + ] +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift new file mode 100644 index 0000000..db1f47f --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift @@ -0,0 +1,55 @@ +// +// IntroductionRowView.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +struct IntroductionRowView: View { + private let model: IntroductionRowModel + + init(model: IntroductionRowModel) { + self.model = model + } + + var body: some View { + HStack { + Circle() + .frame(width: 42, height: 42) + VStack(alignment: .leading, spacing: 4) { + HStack(spacing: 4) { + Text(model.name) + .pretendardFont(family: .SemiBold, size: 14) + .foregroundStyle(.textPrimary) + + if model.isLeader { + Image(systemName: "crown.fill") + .foregroundStyle(Color.yellow) + .font(.system(size: 12)) + } + } + + Text(model.role) + .pretendardFont(family: .Regular, size: 12) + .foregroundStyle(.textSecondary) + + MBTILabel(mbti: model.mbti) + } + + Spacer() + + Image("ArrowRight") + .foregroundStyle(Color(hex: "717182")) + } + .padding(16) + .background(Color.staticWhite) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .shadow(radius: 1) + } +} + +#Preview { + IntroductionRowView(model: IntroductionRowModel.mockData[0]) +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift index 1ea9fc5..f1e5421 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift @@ -21,6 +21,7 @@ struct MissionView: View { .pretendardFont(family: .Regular, size: 12) .foregroundStyle(.textSecondary) } + .frame(maxWidth: .infinity) .padding(16) .background(Color(hex: "E9EBEF")) .clipShape(RoundedRectangle(cornerRadius: 12)) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift deleted file mode 100644 index 8fe480f..0000000 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamIntroductionRowView.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// TeamIntroductionRowView.swift -// TeamIntroduce -// -// Created by 홍석현 on 8/11/25. -// - -import SwiftUI - -struct TeamIntroductionRowView: View { - var body: some View { - HStack { - Circle() - .frame(width: 42, height: 42) - VStack(alignment: .leading, spacing: 4) { - Text("김철수") - .pretendardFont(family: .SemiBold, size: 14) - .foregroundStyle(.textPrimary) - - Text("iOS 개발자") - .pretendardFont(family: .Regular, size: 12) - .foregroundStyle(.textSecondary) - - MBTILabel(mbti: .enfj) - } - - Spacer() - - Image("ArrowRight") - .foregroundStyle(Color(hex: "717182")) - } - .padding(16) - .background(Color.staticWhite) - .clipShape(RoundedRectangle(cornerRadius: 12)) - .shadow(radius: 1) - } -} - -#Preview { - TeamIntroductionRowView() -} From 1e466976e48354452221b2e0a07975adb4029237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 19:47:23 +0900 Subject: [PATCH 06/12] =?UTF-8?q?feat.=20main=20view=20=ED=8C=80=EC=9B=90?= =?UTF-8?q?=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=83=9D=EC=84=B1=20=EB=B0=8F?= =?UTF-8?q?=20viewmodel=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/IntroductionMainView.swift | 44 +++++++++++++++ .../View/IntroductionViewModel.swift | 53 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift new file mode 100644 index 0000000..07abb2b --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift @@ -0,0 +1,44 @@ +// +// IntroductionMainView.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +struct IntroductionMainView: View { + @ObservedObject var viewModel: IntroductionViewModel + + init(viewModel: IntroductionViewModel) { + self.viewModel = viewModel + } + + var body: some View { + ScrollView { + VStack(spacing: 16) { + MissionView() + + VStack { + Text("팀원 소개") + .pretendardFont(family: .Bold, size: 14) + .foregroundStyle(.textPrimary) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.horizontal, 8) + + ForEach(viewModel.introductions) { model in + IntroductionRowView(model: model) + } + } + } + .padding(.horizontal, 16) + .onAppear { + viewModel.onAppear() + } + } + } +} + +#Preview { + IntroductionMainView(viewModel: IntroductionViewModel()) +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift new file mode 100644 index 0000000..55e6859 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift @@ -0,0 +1,53 @@ +// +// IntroductionViewModel.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import Foundation +import SwiftUI + +@MainActor +class IntroductionViewModel: ObservableObject { + + // MARK: - Published Properties + @Published private(set) var introductions: [IntroductionRowModel] = [] + @Published private(set) var isLoading = false + + // MARK: - Public Methods + + /// onAppear 시 호출되는 데이터 페치 메서드 + func onAppear() { + Task { + await fetchIntroductions() + } + } + + /// 데이터를 새로고침하는 메서드 + func refresh() { + Task { + await fetchIntroductions() + } + } + + // MARK: - Private Methods + + /// 팀원 소개 데이터를 가져오는 메서드 + private func fetchIntroductions() async { + isLoading = true + + do { + // 실제 API 호출 시뮬레이션 (2초 딜레이) + try await Task.sleep(nanoseconds: 2_000_000_000) + + // Mock 데이터 로드 + introductions = IntroductionRowModel.mockData + + } catch { + introductions = [] + } + + isLoading = false + } +} From e06af8f2c08335fa1d9cb13c21cec152145b87c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 19:58:16 +0900 Subject: [PATCH 07/12] =?UTF-8?q?feat.=20=EB=8D=94=20=EC=95=8C=EC=95=84?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EC=84=B9=EC=85=98=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/TeamExploreRowView.swift | 80 +++++++++++++++++++ .../View/IntroductionMainView.swift | 12 +++ 2 files changed, 92 insertions(+) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift new file mode 100644 index 0000000..58b0349 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift @@ -0,0 +1,80 @@ +// +// TeamExploreRowView.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +enum TeamExploreItem: CaseIterable, Identifiable { + case introduction + case agreement + case blog + + var id: Self { self } +} + +struct TeamExploreRowView: View { + + private let item: TeamExploreItem + + private var title: String { + switch item { + case .introduction: + return "팀 소개" + case .agreement: + return "팀 약속" + case .blog: + return "팀 블로그" + } + } + + private var subtitle: String { + switch item { + case .introduction: + return "우리 팀의 특징과 목표" + case .agreement: + return "함께 지켜나갈 소중한 약속들" + case .blog: + return "팀원들의 블로그 모음" + } + } + + init(item: TeamExploreItem) { + self.item = item + } + + var body: some View { + HStack { + Circle() + .frame(width: 42, height: 42) + VStack(alignment: .leading, spacing: 4) { + Text(title) + .pretendardFont(family: .SemiBold, size: 14) + .foregroundStyle(.textPrimary) + + Text(subtitle) + .pretendardFont(family: .Regular, size: 12) + .foregroundStyle(.textSecondary) + } + + Spacer() + + Image("ArrowRight") + .foregroundStyle(Color(hex: "717182")) + } + .padding(16) + .background(Color.staticWhite) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .shadow(radius: 1) + } +} + +#Preview { + VStack { + TeamExploreRowView(item: .introduction) + TeamExploreRowView(item: .agreement) + TeamExploreRowView(item: .blog) + } +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift index 07abb2b..c98f2ba 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift @@ -30,6 +30,18 @@ struct IntroductionMainView: View { IntroductionRowView(model: model) } } + + VStack { + Text("더 알아보기") + .pretendardFont(family: .Bold, size: 14) + .foregroundStyle(.textPrimary) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.horizontal, 8) + + ForEach(TeamExploreItem.allCases) { item in + TeamExploreRowView(item: item) + } + } } .padding(.horizontal, 16) .onAppear { From 74cc37a78b89aba8fbef98d1527d3b1b9e2bd525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Mon, 11 Aug 2025 20:05:07 +0900 Subject: [PATCH 08/12] =?UTF-8?q?feat.=20skeleton=20view=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=B0=8F=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/SkeletonRowView.swift | 58 +++++++++++++++++++ .../View/IntroductionMainView.swift | 11 +++- 2 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/SkeletonRowView.swift diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/SkeletonRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/SkeletonRowView.swift new file mode 100644 index 0000000..efa7ce5 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/SkeletonRowView.swift @@ -0,0 +1,58 @@ +// +// SkeletonRowView.swift +// TeamIntroduce +// +// Created by 홍석현 on 8/11/25. +// + +import SwiftUI + +struct SkeletonRowView: View { + @State private var isAnimating = false + + var body: some View { + HStack { + Circle() + .frame(width: 42, height: 42) + .foregroundColor(.gray.opacity(0.3)) + + VStack(alignment: .leading, spacing: 4) { + RoundedRectangle(cornerRadius: 4) + .frame(width: 80, height: 16) + .foregroundColor(.gray.opacity(0.3)) + + RoundedRectangle(cornerRadius: 4) + .frame(width: 120, height: 12) + .foregroundColor(.gray.opacity(0.2)) + + RoundedRectangle(cornerRadius: 8) + .frame(width: 50, height: 20) + .foregroundColor(.gray.opacity(0.2)) + } + + Spacer() + + RoundedRectangle(cornerRadius: 4) + .frame(width: 16, height: 16) + .foregroundColor(.gray.opacity(0.2)) + } + .padding(16) + .background(Color.staticWhite) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .shadow(radius: 1) + .opacity(isAnimating ? 0.5 : 1.0) + .animation(.easeInOut(duration: 1.0).repeatForever(autoreverses: true), value: isAnimating) + .onAppear { + isAnimating = true + } + } +} + +#Preview { + VStack { + SkeletonRowView() + SkeletonRowView() + SkeletonRowView() + } + .padding() +} diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift index c98f2ba..9bafe4d 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift @@ -25,9 +25,14 @@ struct IntroductionMainView: View { .foregroundStyle(.textPrimary) .frame(maxWidth: .infinity, alignment: .leading) .padding(.horizontal, 8) - - ForEach(viewModel.introductions) { model in - IntroductionRowView(model: model) + if viewModel.isLoading { + ForEach(0..<3, id: \.self) { _ in + SkeletonRowView() + } + } else { + ForEach(viewModel.introductions) { model in + IntroductionRowView(model: model) + } } } From e3c032e3d0b59d6a21858fb1f7bc9dc157af49a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Tue, 12 Aug 2025 09:05:57 +0900 Subject: [PATCH 09/12] =?UTF-8?q?chor.=20=EC=9D=B4=EB=A6=84=20=EB=8C=80?= =?UTF-8?q?=EC=86=8C=EB=AC=B8=EC=9E=90=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Font/PretendardFontFamily.swift | 36 +++++++++---------- .../IntroductionRow/IntroductionRowView.swift | 4 +-- .../View/Components/MBTILabel.swift | 2 +- .../View/Components/MissionView.swift | 4 +-- .../View/Components/TeamExploreRowView.swift | 4 +-- .../View/IntroductionMainView.swift | 4 +-- 6 files changed, 27 insertions(+), 27 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Font/PretendardFontFamily.swift b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Font/PretendardFontFamily.swift index 5471098..215384a 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Font/PretendardFontFamily.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/DesignSytstem/Font/PretendardFontFamily.swift @@ -8,35 +8,35 @@ import Foundation enum PretendardFontFamily: CustomStringConvertible { - case Black - case Bold - case ExtraBold - case ExtraLight - case Light - case Medium - case Regular - case SemiBold - case Thin + case black + case bold + case extraBold + case extraLight + case light + case medium + case regular + case semiBold + case thin public var description: String { switch self { - case .Black: + case .black: return "Black" - case .Bold: + case .bold: return "Bold" - case .ExtraBold: + case .extraBold: return "ExtraBold" - case .ExtraLight: + case .extraLight: return "ExtraLight" - case .Light: + case .light: return "Light" - case .Medium: + case .medium: return "Medium" - case .Regular: + case .regular: return "Regular" - case .SemiBold: + case .semiBold: return "SemiBold" - case .Thin: + case .thin: return "Thin" } } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift index db1f47f..80652e8 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/IntroductionRow/IntroductionRowView.swift @@ -21,7 +21,7 @@ struct IntroductionRowView: View { VStack(alignment: .leading, spacing: 4) { HStack(spacing: 4) { Text(model.name) - .pretendardFont(family: .SemiBold, size: 14) + .pretendardFont(family: .semiBold, size: 14) .foregroundStyle(.textPrimary) if model.isLeader { @@ -32,7 +32,7 @@ struct IntroductionRowView: View { } Text(model.role) - .pretendardFont(family: .Regular, size: 12) + .pretendardFont(family: .regular, size: 12) .foregroundStyle(.textSecondary) MBTILabel(mbti: model.mbti) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift index bb0beee..65c1055 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MBTILabel.swift @@ -52,7 +52,7 @@ struct MBTILabel: View { var body: some View { Text(mbti.rawValue) - .pretendardFont(family: .Regular, size: 10) + .pretendardFont(family: .regular, size: 10) .foregroundStyle(textColor) .padding(.horizontal, 7) .padding(.vertical, 5) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift index f1e5421..81bbc47 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/MissionView.swift @@ -14,11 +14,11 @@ struct MissionView: View { .renderingMode(.original) Text("우리의 미션") - .pretendardFont(family: .Bold, size: 14) + .pretendardFont(family: .bold, size: 14) .foregroundStyle(.textPrimary) Text("혁신적인 기술로 사용자의 삶을 더 편리하고 풍요롭게 만드는 것") - .pretendardFont(family: .Regular, size: 12) + .pretendardFont(family: .regular, size: 12) .foregroundStyle(.textSecondary) } .frame(maxWidth: .infinity) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift index 58b0349..49130a5 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift @@ -51,11 +51,11 @@ struct TeamExploreRowView: View { .frame(width: 42, height: 42) VStack(alignment: .leading, spacing: 4) { Text(title) - .pretendardFont(family: .SemiBold, size: 14) + .pretendardFont(family: .semiBold, size: 14) .foregroundStyle(.textPrimary) Text(subtitle) - .pretendardFont(family: .Regular, size: 12) + .pretendardFont(family: .regular, size: 12) .foregroundStyle(.textSecondary) } diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift index 9bafe4d..af42da3 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionMainView.swift @@ -21,7 +21,7 @@ struct IntroductionMainView: View { VStack { Text("팀원 소개") - .pretendardFont(family: .Bold, size: 14) + .pretendardFont(family: .bold, size: 14) .foregroundStyle(.textPrimary) .frame(maxWidth: .infinity, alignment: .leading) .padding(.horizontal, 8) @@ -38,7 +38,7 @@ struct IntroductionMainView: View { VStack { Text("더 알아보기") - .pretendardFont(family: .Bold, size: 14) + .pretendardFont(family: .bold, size: 14) .foregroundStyle(.textPrimary) .frame(maxWidth: .infinity, alignment: .leading) .padding(.horizontal, 8) From afb29ef8d6e2c4d428af890fdea897cfcedb38a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Tue, 12 Aug 2025 09:11:44 +0900 Subject: [PATCH 10/12] chor. --- .../Presnetaion/IntroduceMain/View/IntroductionViewModel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift index 55e6859..4fbf61a 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/IntroductionViewModel.swift @@ -9,7 +9,7 @@ import Foundation import SwiftUI @MainActor -class IntroductionViewModel: ObservableObject { +final class IntroductionViewModel: ObservableObject { // MARK: - Published Properties @Published private(set) var introductions: [IntroductionRowModel] = [] From 9d4c58970a92a388e56ddd580e6388442963f4bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Tue, 12 Aug 2025 11:25:18 +0900 Subject: [PATCH 11/12] =?UTF-8?q?chor.=20=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Components/TeamExploreRowView.swift | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift index 49130a5..31b731f 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift @@ -13,14 +13,10 @@ enum TeamExploreItem: CaseIterable, Identifiable { case blog var id: Self { self } -} - -struct TeamExploreRowView: View { - private let item: TeamExploreItem - private var title: String { - switch item { + var title: String { + switch self { case .introduction: return "팀 소개" case .agreement: @@ -30,8 +26,8 @@ struct TeamExploreRowView: View { } } - private var subtitle: String { - switch item { + var subtitle: String { + switch self { case .introduction: return "우리 팀의 특징과 목표" case .agreement: @@ -40,6 +36,11 @@ struct TeamExploreRowView: View { return "팀원들의 블로그 모음" } } +} + +struct TeamExploreRowView: View { + + private let item: TeamExploreItem init(item: TeamExploreItem) { self.item = item @@ -50,11 +51,11 @@ struct TeamExploreRowView: View { Circle() .frame(width: 42, height: 42) VStack(alignment: .leading, spacing: 4) { - Text(title) + Text(item.title) .pretendardFont(family: .semiBold, size: 14) .foregroundStyle(.textPrimary) - Text(subtitle) + Text(item.subtitle) .pretendardFont(family: .regular, size: 12) .foregroundStyle(.textSecondary) } From 1ca573359750411883dcd870408ac4355612ef23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=92=E1=85=A9=E1=86=BC=E1=84=89=E1=85=A5=E1=86=A8?= =?UTF-8?q?=E1=84=92=E1=85=A7=E1=86=AB?= Date: Tue, 12 Aug 2025 11:30:59 +0900 Subject: [PATCH 12/12] =?UTF-8?q?feat.=20=ED=8C=80=20=EB=8D=94=20=EC=95=8C?= =?UTF-8?q?=EC=95=84=EB=B3=B4=EA=B8=B0=20=EB=A1=9C=EA=B3=A0=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TeamAgreementLogo.imageset/Contents.json | 16 ++++++++++++++++ .../team_agreement_logo.svg | 5 +++++ .../Images/TeamBlogLogo.imageset/Contents.json | 16 ++++++++++++++++ .../TeamBlogLogo.imageset/team_blog_logo.svg | 6 ++++++ .../TeamIntroductionLogo.imageset/Contents.json | 16 ++++++++++++++++ .../team_introduction_logo.svg | 7 +++++++ .../View/Components/TeamExploreRowView.swift | 13 ++++++++++++- 7 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/Contents.json create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/team_agreement_logo.svg create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/Contents.json create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/team_blog_logo.svg create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/Contents.json create mode 100644 TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/team_introduction_logo.svg diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/Contents.json b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/Contents.json new file mode 100644 index 0000000..5e1282e --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "team_agreement_logo.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "original" + } +} diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/team_agreement_logo.svg b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/team_agreement_logo.svg new file mode 100644 index 0000000..5641c87 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamAgreementLogo.imageset/team_agreement_logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/Contents.json b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/Contents.json new file mode 100644 index 0000000..0aab595 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "team_blog_logo.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "original" + } +} diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/team_blog_logo.svg b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/team_blog_logo.svg new file mode 100644 index 0000000..ce017f3 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamBlogLogo.imageset/team_blog_logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/Contents.json b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/Contents.json new file mode 100644 index 0000000..d73e4e2 --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "team_introduction_logo.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "original" + } +} diff --git a/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/team_introduction_logo.svg b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/team_introduction_logo.svg new file mode 100644 index 0000000..3ebaabf --- /dev/null +++ b/TeamIntroduce/TeamIntroduce/Resources/Assets.xcassets/Images/TeamIntroductionLogo.imageset/team_introduction_logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift index 31b731f..fa7649c 100644 --- a/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift +++ b/TeamIntroduce/TeamIntroduce/Sources/Presnetaion/IntroduceMain/View/Components/TeamExploreRowView.swift @@ -36,6 +36,17 @@ enum TeamExploreItem: CaseIterable, Identifiable { return "팀원들의 블로그 모음" } } + + var imageName: String { + switch self { + case .introduction: + return "TeamIntroductionLogo" + case .agreement: + return "TeamAgreementLogo" + case .blog: + return "TeamBlogLogo" + } + } } struct TeamExploreRowView: View { @@ -48,7 +59,7 @@ struct TeamExploreRowView: View { var body: some View { HStack { - Circle() + Image(item.imageName) .frame(width: 42, height: 42) VStack(alignment: .leading, spacing: 4) { Text(item.title)