From a9b74cd0788af8232e8be5d2d92cb9c5bb88b3e6 Mon Sep 17 00:00:00 2001 From: Jini Date: Fri, 13 Feb 2026 00:39:34 +0900 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=EB=A1=9C=ED=8B=B0=EC=9A=A9=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lottieIcon.imageset/Contents.json | 12 ++++++++++++ .../lottieIcon.imageset/lottieIcon.pdf | Bin 0 -> 5026 bytes 2 files changed, 12 insertions(+) create mode 100644 Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/Contents.json create mode 100644 Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/lottieIcon.pdf diff --git a/Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/Contents.json b/Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/Contents.json new file mode 100644 index 00000000..f98dd73f --- /dev/null +++ b/Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "lottieIcon.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/lottieIcon.pdf b/Keychy/Keychy/Resources/Assets.xcassets/02. WorkShop/lottieIcon.imageset/lottieIcon.pdf new file mode 100644 index 0000000000000000000000000000000000000000..372961b5c50b8ebc8b07fad97f5d01f30f5c6ffb GIT binary patch literal 5026 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 Date: Fri, 13 Feb 2026 00:51:37 +0900 Subject: [PATCH 2/6] =?UTF-8?q?style:=20=EB=A1=9C=ED=8B=B0=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=ED=85=9C=20=EC=95=84=EC=9D=B4=EC=BD=98=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/Items/ItemDetailInfoSection.swift | 15 +++++++++++---- .../Workshop/ViewModels/WorkshopViewModel.swift | 5 +++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift b/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift index 4b57e34d..777e23ac 100644 --- a/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift +++ b/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift @@ -80,10 +80,17 @@ extension ItemDetailInfoSection { } private var itemName: some View { - Text(item.name) - .typography(.suit24B) - .lineLimit(nil) - .fixedSize(horizontal: false, vertical: true) + HStack(spacing: 7) { + if item.isLottie { + Image(.lottieIcon) + } + + Text(item.name) + .typography(.suit24B) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + } + } private var itemDescription: some View { diff --git a/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift b/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift index ee1b9ceb..b194d912 100644 --- a/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift +++ b/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift @@ -60,9 +60,14 @@ protocol WorkshopItem: Identifiable, Decodable { var downloadCount: Int { get } var useCount: Int { get } var createdAt: Date { get } + var isLottie: Bool { get } // 로티 여부 (기본값 false) } // MARK: - Extensions +// 모든 아이템 기본적으로 isLottie false +extension WorkshopItem { + var isLottie: Bool { false } +} extension KeyringTemplate: WorkshopItem { var name: String { templateName } From aed1d06b06be3b1c367083cf3588c6cd74b6860d Mon Sep 17 00:00:00 2001 From: Jini Date: Fri, 13 Feb 2026 01:20:06 +0900 Subject: [PATCH 3/6] =?UTF-8?q?chore:=20=EC=B6=94=EC=B2=9C=20=EC=A1=B0?= =?UTF-8?q?=ED=95=A9=20=EB=B3=80=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Keychy/Keychy/CommonModels/KeyringBundle/Background.swift | 3 +++ Keychy/Keychy/CommonModels/KeyringBundle/Carabiner.swift | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Keychy/Keychy/CommonModels/KeyringBundle/Background.swift b/Keychy/Keychy/CommonModels/KeyringBundle/Background.swift index 8da019f7..5e1da7e8 100644 --- a/Keychy/Keychy/CommonModels/KeyringBundle/Background.swift +++ b/Keychy/Keychy/CommonModels/KeyringBundle/Background.swift @@ -29,6 +29,9 @@ struct Background: Identifiable, Codable, Equatable, Hashable { /// 배경 분류 태그 (ex. ["귀여움", "#키워드"]) let tags: [String] + /// 추천 조합 + let recommendedCombinations: String? + /// 구매 시 필요한 코인 (0이면 무료) let price: Int diff --git a/Keychy/Keychy/CommonModels/KeyringBundle/Carabiner.swift b/Keychy/Keychy/CommonModels/KeyringBundle/Carabiner.swift index 5801ea75..05cffa2c 100644 --- a/Keychy/Keychy/CommonModels/KeyringBundle/Carabiner.swift +++ b/Keychy/Keychy/CommonModels/KeyringBundle/Carabiner.swift @@ -43,6 +43,9 @@ struct Carabiner: Identifiable, Codable, Equatable, Hashable { /// 카라비너 분류 태그 (ex. ["귀여움", "#키워드"]) let tags: [String] + /// 추천 조합 + let recommendedCombinations: String? + /// 구매 시 필요한 코인 (0이면 무료) let price: Int From dc5e828f8e24a17c4711df0c034901855c26c858 Mon Sep 17 00:00:00 2001 From: Jini Date: Fri, 13 Feb 2026 01:20:31 +0900 Subject: [PATCH 4/6] =?UTF-8?q?style:=20=EC=B6=94=EC=B2=9C=20=EC=A1=B0?= =?UTF-8?q?=ED=95=A9=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/Items/ItemDetailInfoSection.swift | 49 ++++++++++++++++++- .../ViewModels/WorkshopViewModel.swift | 2 +- .../Views/Components/WorkshopItemCard.swift | 4 +- 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift b/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift index 777e23ac..44a8aad6 100644 --- a/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift +++ b/Keychy/Keychy/Core/Components/View/Items/ItemDetailInfoSection.swift @@ -20,7 +20,7 @@ struct ItemDetailInfoSection: View { Image(.myCoinMini) .resizable() .scaledToFit() - .frame(width: 21) + .frame(width: 27) } /// 이펙트 타입 표시 (사운드/파티클) @@ -36,10 +36,17 @@ struct ItemDetailInfoSection: View { /// item 이름 itemName - .padding(.bottom, 12) + .padding(.bottom, 8) /// item 설명 itemDescription + .padding(.bottom, hasRecommendedCombinations ? 8 : 10) + + /// 추천 조합 (있을 경우에만 표시) + if hasRecommendedCombinations { + recommendedCombinations + .padding(.bottom, 10) + } } } @@ -48,6 +55,16 @@ struct ItemDetailInfoSection: View { // MARK: - Components extension ItemDetailInfoSection { + /// 추천 조합 존재 여부 + private var hasRecommendedCombinations: Bool { + if let background = item as? Background { + return background.recommendedCombinations != nil && !(background.recommendedCombinations?.isEmpty ?? true) + } else if let carabiner = item as? Carabiner { + return carabiner.recommendedCombinations != nil && !(carabiner.recommendedCombinations?.isEmpty ?? true) + } + return false + } + /// 이펙트 타입 태그 (사운드/파티클) private var effectTypeTag: EffectFilterType? { if item is Sound { @@ -100,6 +117,34 @@ extension ItemDetailInfoSection { .lineLimit(nil) .fixedSize(horizontal: false, vertical: true) } + + private var recommendedCombinations: some View { + HStack(spacing: 5) { + Text("추천 조합") + .typography(.suit12M) + .foregroundStyle(.main500) + .padding(.horizontal, 4) + .padding(.vertical, 1) + .background(.mainOpacity15) + .fixedSize() + + if let background = item as? Background, + let combinations = background.recommendedCombinations { + Text(combinations) + .typography(.suit12M) + .foregroundStyle(.black30) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + } else if let carabiner = item as? Carabiner, + let combinations = carabiner.recommendedCombinations { + Text(combinations) + .typography(.suit12M) + .foregroundStyle(.black30) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + } + } + } } #Preview(traits: .sizeThatFitsLayout) { diff --git a/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift b/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift index b194d912..e7e2a570 100644 --- a/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift +++ b/Keychy/Keychy/Presentation/Workshop/ViewModels/WorkshopViewModel.swift @@ -60,7 +60,7 @@ protocol WorkshopItem: Identifiable, Decodable { var downloadCount: Int { get } var useCount: Int { get } var createdAt: Date { get } - var isLottie: Bool { get } // 로티 여부 (기본값 false) + var isLottie: Bool { get } // 로티 여부 } // MARK: - Extensions diff --git a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift index 5120659f..88b2f40c 100644 --- a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift +++ b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift @@ -184,9 +184,7 @@ struct WorkshopPriceOverlay: View { .typography(.nanum16EB) .foregroundStyle(.white100) .padding(.vertical, 4) - .padding(.horizontal, 8) - .padding(.top, 3) - .padding(.leading, -1) + .padding(.horizontal, 10) .background( RoundedRectangle(cornerRadius: 20) .fill(.mainOpacity80) From 1a822bb96221f1de013b8dbec76b27c16057f567 Mon Sep 17 00:00:00 2001 From: Jini Date: Fri, 13 Feb 2026 01:26:32 +0900 Subject: [PATCH 5/6] =?UTF-8?q?style:=20=EA=B3=B5=EB=B0=A9=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=ED=85=9C=20=EA=B7=B8=EB=A6=AC=EB=93=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EC=98=86=20=EB=A1=9C=ED=8B=B0=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/Components/WorkshopItemCard.swift | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift index 88b2f40c..3b178687 100644 --- a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift +++ b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift @@ -30,9 +30,17 @@ struct WorkshopItemCard: View { // 썸네일 이미지 thumbnailImage - // 아이템 이름 - Text(item.name) - .typography(.suit14SB18) + HStack(spacing: 4) { + if item.isLottie { + Image(.lottieIcon) + .resizable() + .frame(width: 15, height: 15) + } + + // 아이템 이름 + Text(item.name) + .typography(.notosans14M) + } } } .buttonStyle(.plain) From 396a21a95745b9a78d641c0f2b8b6ee92382285c Mon Sep 17 00:00:00 2001 From: Jini Date: Fri, 13 Feb 2026 01:44:12 +0900 Subject: [PATCH 6/6] =?UTF-8?q?style:=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=20=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Components/View/Popup/InvenExpandPopup.swift | 2 ++ .../Keychy/Core/Components/View/Popup/PurchasePopup.swift | 2 ++ .../Keychy/Presentation/Workshop/Coin/CoinChargeView.swift | 2 ++ .../Views/Components/WorkshopItemActionButton.swift | 2 ++ .../Workshop/Views/Components/WorkshopItemCard.swift | 7 +++++++ 5 files changed, 15 insertions(+) diff --git a/Keychy/Keychy/Core/Components/View/Popup/InvenExpandPopup.swift b/Keychy/Keychy/Core/Components/View/Popup/InvenExpandPopup.swift index d14a81cd..136a65df 100644 --- a/Keychy/Keychy/Core/Components/View/Popup/InvenExpandPopup.swift +++ b/Keychy/Keychy/Core/Components/View/Popup/InvenExpandPopup.swift @@ -64,6 +64,8 @@ struct InvenExpandPopup: View { Button(action: onConfirm) { HStack(spacing: 4) { Image(.myCoinMini) + .resizable() + .frame(width: 22, height: 22) Text("\(price)") .typography(.nanum18EB) diff --git a/Keychy/Keychy/Core/Components/View/Popup/PurchasePopup.swift b/Keychy/Keychy/Core/Components/View/Popup/PurchasePopup.swift index ea73ac73..26950117 100644 --- a/Keychy/Keychy/Core/Components/View/Popup/PurchasePopup.swift +++ b/Keychy/Keychy/Core/Components/View/Popup/PurchasePopup.swift @@ -43,6 +43,8 @@ struct PurchasePopup: View { Button(action: onConfirm) { HStack(spacing: 4) { Image(.myCoinMini) + .resizable() + .frame(width: 22, height: 22) Text("\(price)") .typography(.nanum18EB) diff --git a/Keychy/Keychy/Presentation/Workshop/Coin/CoinChargeView.swift b/Keychy/Keychy/Presentation/Workshop/Coin/CoinChargeView.swift index 3ceb0dab..74f64a6d 100644 --- a/Keychy/Keychy/Presentation/Workshop/Coin/CoinChargeView.swift +++ b/Keychy/Keychy/Presentation/Workshop/Coin/CoinChargeView.swift @@ -329,6 +329,8 @@ extension CoinChargeView { } label: { HStack(spacing: 5) { Image(.myCoinMini) + .resizable() + .frame(width: 22, height: 22) Text("\(selectedItem?.price ?? 0)") .typography(.nanum18EB12) diff --git a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemActionButton.swift b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemActionButton.swift index 286c3518..b087865b 100644 --- a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemActionButton.swift +++ b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemActionButton.swift @@ -82,6 +82,8 @@ struct WorkshopItemActionButton: View { } label: { HStack(spacing: 5) { Image(.myCoinMini) + .resizable() + .frame(width: 22, height: 22) Text("\(item.workshopPrice)") .typography(.nanum18EB) diff --git a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift index 3b178687..f13932ed 100644 --- a/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift +++ b/Keychy/Keychy/Presentation/Workshop/Views/Components/WorkshopItemCard.swift @@ -174,7 +174,14 @@ struct WorkshopPriceOverlay: View { // 유료: 오른쪽 상단에 가격 또는 보유 표시 VStack { HStack { + if price != 0 { + Image(.myCoinMini) + .resizable() + .frame(width: 24, height: 24) + } + Spacer() + if isOwned { // 보유 Text("보유")