// // TiletSubTitleModel.swift // VDS // // Created by Matt Bruce on 1/6/23. // import Foundation extension Tilelet { public struct SubTitleModel: Codable { //-------------------------------------------------- // MARK: - Enums //-------------------------------------------------- public enum TextStyle: String, Codable, EnumSubset { case bodyLarge case boldBodyLarge case bodyMedium case boldBodyMedium case bodySmall case boldBodySmall public var defaultValue: TitleLockup.OtherTextStyle { .bodySmall } } //-------------------------------------------------- // MARK: - Public Properties //-------------------------------------------------- public var text: String = "" public var textStyle: TextStyle = .bodySmall public var textColor: Use = .primary //-------------------------------------------------- // MARK: - Initializers //-------------------------------------------------- public init(text: String, textColor: Use = .primary, textAttributes: [any LabelAttributeModel]? = nil, textStyle: TextStyle = .bodySmall) { self.text = text self.textColor = textColor self.textStyle = textStyle } //-------------------------------------------------- // MARK: - Public Functions //-------------------------------------------------- public func toTitleLockupSubTitleModel() -> TitleLockup.SubTitleModel { TitleLockup.SubTitleModel(text: text, textColor: textColor, textAttributes: nil) } public init(from decoder: Decoder) throws { let container: KeyedDecodingContainer = try decoder.container(keyedBy: Tilelet.SubTitleModel.CodingKeys.self) self.text = try container.decode(String.self, forKey: Tilelet.SubTitleModel.CodingKeys.text) self.textStyle = try container.decodeIfPresent(Tilelet.SubTitleModel.TextStyle.self, forKey: Tilelet.SubTitleModel.CodingKeys.textStyle) ?? .bodySmall self.textColor = try container.decodeIfPresent(Use.self, forKey: Tilelet.SubTitleModel.CodingKeys.textColor) ?? .primary } } }