From 2f603b1a64ed3dd4d3312df5e8d263b595b81309 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 6 Jan 2023 11:40:02 -0600 Subject: [PATCH] refactored into files Signed-off-by: Matt Bruce --- VDS.xcodeproj/project.pbxproj | 8 ++++ VDS/Components/Tilet/TiletBadgeModel.swift | 37 +++++++++++++++++++ .../Tilet/TiletTypographicalStyle.swift | 32 ++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 VDS/Components/Tilet/TiletBadgeModel.swift create mode 100644 VDS/Components/Tilet/TiletTypographicalStyle.swift diff --git a/VDS.xcodeproj/project.pbxproj b/VDS.xcodeproj/project.pbxproj index 7ef890b9..77cc6883 100644 --- a/VDS.xcodeproj/project.pbxproj +++ b/VDS.xcodeproj/project.pbxproj @@ -51,6 +51,8 @@ EA89201328B568D8006B9984 /* RadioBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201228B568D8006B9984 /* RadioBox.swift */; }; EA89201528B56CF4006B9984 /* RadioBoxGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201428B56CF4006B9984 /* RadioBoxGroup.swift */; }; EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */; }; + EA985BE429688F3300F2FF2E /* TiletTypographicalStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE329688F3300F2FF2E /* TiletTypographicalStyle.swift */; }; + EA985BE629688F6A00F2FF2E /* TiletBadgeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */; }; EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */; }; EAA5EEB728ECC03A003B3210 /* ToolTipLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */; }; EAA5EEB928ECD24B003B3210 /* Icons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAA5EEB828ECD24B003B3210 /* Icons.xcassets */; }; @@ -151,6 +153,8 @@ EA89201228B568D8006B9984 /* RadioBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBox.swift; sourceTree = ""; }; EA89201428B56CF4006B9984 /* RadioBoxGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBoxGroup.swift; sourceTree = ""; }; EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyLabelAttribute.swift; sourceTree = ""; }; + EA985BE329688F3300F2FF2E /* TiletTypographicalStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletTypographicalStyle.swift; sourceTree = ""; }; + EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletBadgeModel.swift; sourceTree = ""; }; EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageLabelAttribute.swift; sourceTree = ""; }; EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolTipLabelAttribute.swift; sourceTree = ""; }; EAA5EEB828ECD24B003B3210 /* Icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Icons.xcassets; sourceTree = ""; }; @@ -465,6 +469,8 @@ isa = PBXGroup; children = ( EA5E3057295105A40082B959 /* Tilet.swift */, + EA985BE329688F3300F2FF2E /* TiletTypographicalStyle.swift */, + EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */, ); path = Tilet; sourceTree = ""; @@ -724,6 +730,7 @@ EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */, EAF7F13328A2A16500B287F5 /* AttachmentLabelAttributeModel.swift in Sources */, EA0FC2C62914222900DF80B4 /* ButtonGroup.swift in Sources */, + EA985BE429688F3300F2FF2E /* TiletTypographicalStyle.swift in Sources */, EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */, EAD8D2C128BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift in Sources */, EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */, @@ -742,6 +749,7 @@ EA89200228AECF2A006B9984 /* UIButton+Publisher.swift in Sources */, EAF7F0AB289B13FD00B287F5 /* TypographicalStyleLabelAttribute.swift in Sources */, EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */, + EA985BE629688F6A00F2FF2E /* TiletBadgeModel.swift in Sources */, EA336171288B19200071C351 /* VDS.docc in Sources */, EA5E30532950DDA60082B959 /* TitleLockup.swift in Sources */, EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */, diff --git a/VDS/Components/Tilet/TiletBadgeModel.swift b/VDS/Components/Tilet/TiletBadgeModel.swift new file mode 100644 index 00000000..61e68f4c --- /dev/null +++ b/VDS/Components/Tilet/TiletBadgeModel.swift @@ -0,0 +1,37 @@ +// +// TiletBadgeModel.swift +// VDS +// +// Created by Matt Bruce on 1/6/23. +// + +import Foundation + +public struct TiletBadgeModel { + public var text: String = "" + public var fillColor: BadgeFillColor + public var surface: Surface + public var numberOfLines: Int + public var maxWidth: CGFloat? + public init(text: String, fillColor: BadgeFillColor = .red, surface: Surface = .light, numberOfLines: Int = 0, maxWidth: CGFloat? = nil) { + self.text = text + self.fillColor = fillColor + self.surface = surface + self.numberOfLines = numberOfLines + self.maxWidth = maxWidth + } +} + +extension Badge { + public func set(with model: TiletBadgeModel?) { + if let model, !model.text.isEmpty { + text = model.text + fillColor = model.fillColor + numberOfLines = model.numberOfLines + surface = model.surface + maxWidth = model.maxWidth + } else { + reset() + } + } +} diff --git a/VDS/Components/Tilet/TiletTypographicalStyle.swift b/VDS/Components/Tilet/TiletTypographicalStyle.swift new file mode 100644 index 00000000..331f5538 --- /dev/null +++ b/VDS/Components/Tilet/TiletTypographicalStyle.swift @@ -0,0 +1,32 @@ +// +// TiletTypographicalStyle.swift +// VDS +// +// Created by Matt Bruce on 1/6/23. +// + +import Foundation + +public enum TiletTitleTypographicalStyle: String, Codable, EnumSubset { + case TitleXLarge + case BoldTitleXLarge + case TitleLarge + case BoldTitleLarge + case TitleMedium + case BoldTitleMedium + case TitleSmall + case BoldTitleSmall + + public var defaultValue: TitleLockupTitleTypographicalStyle { .BoldTitleSmall } +} + +public enum TiletOtherTypographicalStyle: String, Codable, EnumSubset { + case BodyLarge + case BoldBodyLarge + case BodyMedium + case BoldBodyMedium + case BodySmall + case BoldBodySmall + + public var defaultValue: TitleLockupOtherTypographicalStyle { .BodySmall } +}