|
|
@@ -109,6 +109,14 @@ struct CVTemplate: Hashable {
|
|
109
|
109
|
}
|
|
110
|
110
|
}
|
|
111
|
111
|
|
|
|
112
|
+ /// Top-level gallery tab: expressive layouts for design-led roles vs. conservative ATS-friendly styles.
|
|
|
113
|
+ var galleryGroup: CVCategoryGroup {
|
|
|
114
|
+ switch family {
|
|
|
115
|
+ case .modern, .creative: return .designBased
|
|
|
116
|
+ case .minimal, .professional, .executive: return .professionBased
|
|
|
117
|
+ }
|
|
|
118
|
+ }
|
|
|
119
|
+
|
|
112
|
120
|
var themeColor: NSColor {
|
|
113
|
121
|
NSColor(srgbRed: themeRed, green: themeGreen, blue: themeBlue, alpha: 1)
|
|
114
|
122
|
}
|
|
|
@@ -718,21 +726,23 @@ final class CVMakerPageView: NSView {
|
|
718
|
726
|
|
|
719
|
727
|
for family in CVDesignFamily.allCases {
|
|
720
|
728
|
let count = templates(forGroup: selectedGroup, family: family).count
|
|
|
729
|
+ guard count > 0 else { continue }
|
|
721
|
730
|
let chip = CVChipButton(title: family.title, badgeText: "\(count)", leadingSymbol: nil, style: .pillSmall)
|
|
722
|
731
|
chip.onSelect = { [weak self] in self?.didSelectFamily(family) }
|
|
723
|
732
|
familyChipsRow.addArrangedSubview(chip)
|
|
724
|
733
|
familyChipButtons[family] = chip
|
|
725
|
734
|
}
|
|
|
735
|
+
|
|
|
736
|
+ if let f = selectedFamily, templates(forGroup: selectedGroup, family: f).isEmpty {
|
|
|
737
|
+ selectedFamily = nil
|
|
|
738
|
+ }
|
|
726
|
739
|
}
|
|
727
|
740
|
|
|
728
|
741
|
// MARK: Data filtering
|
|
729
|
742
|
|
|
730
|
743
|
private func templates(forGroup group: CVCategoryGroup, family: CVDesignFamily?) -> [CVTemplate] {
|
|
731
|
|
- // The catalog is design-driven; profession-based reuses the same templates
|
|
732
|
|
- // so the gallery is fully populated for both groups in this preview build.
|
|
733
|
|
- let base = activeCatalog
|
|
|
744
|
+ let base = activeCatalog.filter { $0.galleryGroup == group }
|
|
734
|
745
|
guard let family else { return base }
|
|
735
|
|
- _ = group
|
|
736
|
746
|
return base.filter { $0.family == family }
|
|
737
|
747
|
}
|
|
738
|
748
|
|