refactored out IconColor

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-05-15 11:35:27 -05:00
parent c3aafdea48
commit 19a8d8e09a
7 changed files with 138 additions and 127 deletions

View File

@ -48,6 +48,7 @@
EA5E3058295105A40082B959 /* Tilelet.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E3057295105A40082B959 /* Tilelet.swift */; };
EA5E305A29510F8B0082B959 /* EnumSubset.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305929510F8B0082B959 /* EnumSubset.swift */; };
EA81410B2A0E8E3C004F60D2 /* ButtonIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */; };
EA8141102A127066004F60D2 /* VDSColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410F2A127066004F60D2 /* VDSColor.swift */; };
EA89200428AECF4B006B9984 /* UITextField+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */; };
EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200528B526D6006B9984 /* CheckboxGroup.swift */; };
EA89201328B568D8006B9984 /* RadioBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201228B568D8006B9984 /* RadioBox.swift */; };
@ -62,7 +63,6 @@
EA985BF22968B5BB00F2FF2E /* TitleLockupTextStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BF12968B5BB00F2FF2E /* TitleLockupTextStyle.swift */; };
EA985BF5296C60C000F2FF2E /* Icon.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BF4296C60C000F2FF2E /* Icon.swift */; };
EA985BF7296C665E00F2FF2E /* IconName.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BF6296C665E00F2FF2E /* IconName.swift */; };
EA985BF9296C710100F2FF2E /* IconColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BF8296C710100F2FF2E /* IconColor.swift */; };
EA985C1D296CD13600F2FF2E /* BundleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985C1C296CD13600F2FF2E /* BundleManager.swift */; };
EA985C23296E033A00F2FF2E /* TextArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985C22296E033A00F2FF2E /* TextArea.swift */; };
EA985C2D296F03FE00F2FF2E /* TileletIconModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985C2C296F03FE00F2FF2E /* TileletIconModels.swift */; };
@ -169,6 +169,7 @@
EA5E3057295105A40082B959 /* Tilelet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tilelet.swift; sourceTree = "<group>"; };
EA5E305929510F8B0082B959 /* EnumSubset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumSubset.swift; sourceTree = "<group>"; };
EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIcon.swift; sourceTree = "<group>"; };
EA81410F2A127066004F60D2 /* VDSColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VDSColor.swift; sourceTree = "<group>"; };
EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = "<group>"; };
EA89200528B526D6006B9984 /* CheckboxGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxGroup.swift; sourceTree = "<group>"; };
EA89201228B568D8006B9984 /* RadioBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBox.swift; sourceTree = "<group>"; };
@ -183,7 +184,6 @@
EA985BF12968B5BB00F2FF2E /* TitleLockupTextStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupTextStyle.swift; sourceTree = "<group>"; };
EA985BF4296C60C000F2FF2E /* Icon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Icon.swift; sourceTree = "<group>"; };
EA985BF6296C665E00F2FF2E /* IconName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconName.swift; sourceTree = "<group>"; };
EA985BF8296C710100F2FF2E /* IconColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconColor.swift; sourceTree = "<group>"; };
EA985C1C296CD13600F2FF2E /* BundleManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleManager.swift; sourceTree = "<group>"; };
EA985C22296E033A00F2FF2E /* TextArea.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextArea.swift; sourceTree = "<group>"; };
EA985C2C296F03FE00F2FF2E /* TileletIconModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileletIconModels.swift; sourceTree = "<group>"; };
@ -414,6 +414,7 @@
EAB5FED329267EB300998C17 /* UIView.swift */,
EAB5FF0029424ACB00998C17 /* UIControl.swift */,
EA985C662970C21600F2FF2E /* VDSLayout.swift */,
EA81410F2A127066004F60D2 /* VDSColor.swift */,
);
path = Extensions;
sourceTree = "<group>";
@ -564,7 +565,6 @@
children = (
EA81410C2A0E8E52004F60D2 /* ButtonIcon */,
EA985BF4296C60C000F2FF2E /* Icon.swift */,
EA985BF8296C710100F2FF2E /* IconColor.swift */,
EA985BF6296C665E00F2FF2E /* IconName.swift */,
EA985C682971B90B00F2FF2E /* IconSize.swift */,
);
@ -821,6 +821,7 @@
EA4DB2FD28D3D0CA00103EE3 /* AnyEquatable.swift in Sources */,
EA5E305A29510F8B0082B959 /* EnumSubset.swift in Sources */,
EA985BF7296C665E00F2FF2E /* IconName.swift in Sources */,
EA8141102A127066004F60D2 /* VDSColor.swift in Sources */,
EAF7F0AF289B144C00B287F5 /* UnderlineLabelAttribute.swift in Sources */,
EAC925842911C63100091998 /* Colorable.swift in Sources */,
EAB5FEF5292D371F00998C17 /* ButtonBase.swift in Sources */,
@ -879,7 +880,6 @@
5F21D7BF28DCEB3D003E7CD6 /* Useable.swift in Sources */,
EAF7F0B7289C12A600B287F5 /* UITapGestureRecognizer.swift in Sources */,
EAB2376629E9952D00AABE9A /* UIApplication.swift in Sources */,
EA985BF9296C710100F2FF2E /* IconColor.swift in Sources */,
EAB5FED429267EB300998C17 /* UIView.swift in Sources */,
EAB2376829E9992800AABE9A /* TooltipAlertViewController.swift in Sources */,
EA33623E2892EE950071C351 /* UIDevice.swift in Sources */,

View File

@ -28,7 +28,14 @@ open class Icon: View {
$0.clipsToBounds = true
}
open var color: Color = .black { didSet { setNeedsUpdate() }}
open var color: UIColor = VDSColor.paletteBlack {
didSet {
if let hex = color.hexString, !UIColor.isVDSColor(color: color) {
print("icon.color is not a VDSColor. Hex: \(hex) is not a supported color")
}
setNeedsUpdate()
}
}
open var size: Size = .medium { didSet { setNeedsUpdate() }}
open var name: Name? { didSet { setNeedsUpdate() }}
open var customSize: Int? { didSet { setNeedsUpdate() }}
@ -57,7 +64,7 @@ open class Icon: View {
open override func reset() {
super.reset()
color = .black
color = VDSColor.paletteBlack
imageView.image = nil
}
@ -67,12 +74,12 @@ open class Icon: View {
open override func updateView() {
super.updateView()
//get the color for the image
var imageColor = color.value
var imageColor = color
//ensure the correct color for white/black colors
if surface == .dark && color == Color.black {
if surface == .dark && color == VDSColor.paletteBlack {
imageColor = VDSColor.elementsPrimaryOndark
} else if surface == .light && color == Color.black {
} else if surface == .light && color == VDSColor.paletteBlack {
imageColor = VDSColor.elementsPrimaryOnlight
}

View File

@ -1,115 +0,0 @@
//
// IconColor.swift
// VDS
//
// Created by Matt Bruce on 1/9/23.
//
import Foundation
import VDSColorTokens
import UIKit
extension Icon {
public enum Color: String, CaseIterable {
case black
case white
case red
case gray95
case gray85
case gray65
case gray44
case gray20
case gray11
case orange94
case orange83
case orange71
case orange58
case orange41
case orange24
case orange17
case yellow94
case yellow87
case yellow74
case yellow53
case yellow39
case yellow20
case yellow15
case blue94
case blue82
case blue62
case blue46
case blue38
case blue21
case blue15
case green91
case green77
case green61
case green36
case green26
case green15
case green10
case pink87
case pink76
case pink62
case pink46
case pink25
case purple85
case purple75
case purple60
case purple39
case purple20
// Map each color name to its corresponding UIColor object.
public var value: UIColor {
switch self {
case .black: return VDSColor.paletteBlack
case .white: return VDSColor.paletteWhite
case .red: return VDSColor.paletteRed
case .gray95: return VDSColor.paletteGray95
case .gray85: return VDSColor.paletteGray85
case .gray65: return VDSColor.paletteGray65
case .gray44: return VDSColor.paletteGray44
case .gray20: return VDSColor.paletteGray20
case .gray11: return VDSColor.paletteGray11
case .orange94: return VDSColor.paletteOrange94
case .orange83: return VDSColor.paletteOrange83
case .orange71: return VDSColor.paletteOrange71
case .orange58: return VDSColor.paletteOrange58
case .orange41: return VDSColor.paletteOrange41
case .orange24: return VDSColor.paletteOrange24
case .orange17: return VDSColor.paletteOrange17
case .yellow94: return VDSColor.paletteYellow94
case .yellow87: return VDSColor.paletteYellow87
case .yellow74: return VDSColor.paletteYellow74
case .yellow53: return VDSColor.paletteYellow53
case .yellow39: return VDSColor.paletteYellow39
case .yellow20: return VDSColor.paletteYellow20
case .yellow15: return VDSColor.paletteYellow15
case .blue94: return VDSColor.paletteBlue94
case .blue82: return VDSColor.paletteBlue82
case .blue62: return VDSColor.paletteBlue62
case .blue46: return VDSColor.paletteBlue46
case .blue38: return VDSColor.paletteBlue38
case .blue21: return VDSColor.paletteBlue21
case .blue15: return VDSColor.paletteBlue15
case .green91: return VDSColor.paletteGreen91
case .green77: return VDSColor.paletteGreen77
case .green61: return VDSColor.paletteGreen61
case .green36: return VDSColor.paletteGreen36
case .green26: return VDSColor.paletteGreen26
case .green15: return VDSColor.paletteGreen15
case .green10: return VDSColor.paletteGreen10
case .pink87: return VDSColor.palettePink87
case .pink76: return VDSColor.palettePink76
case .pink62: return VDSColor.palettePink62
case .pink46: return VDSColor.palettePink46
case .pink25: return VDSColor.palettePink25
case .purple85: return VDSColor.palettePurple85
case .purple75: return VDSColor.palettePurple75
case .purple60: return VDSColor.palettePurple60
case .purple39: return VDSColor.palettePurple39
case .purple20: return VDSColor.palettePurple20
}
}
}
}

View File

@ -274,7 +274,7 @@ open class Notification: View {
}
private func updateIcons() {
let iconColor = surface == .dark ? Icon.Color.white : Icon.Color.black
let iconColor = surface == .dark ? VDSColor.paletteWhite : VDSColor.paletteBlack
typeIcon.name = type.styleIconName()
typeIcon.color = iconColor
closeButton.color = iconColor

View File

@ -311,7 +311,7 @@ open class EntryField: Control, Changeable {
errorLabel.disabled = disabled
errorLabel.isHidden = false
icon.name = .error
icon.color = .black
icon.color = VDSColor.paletteBlack
icon.surface = surface
icon.isHidden = disabled
} else {

View File

@ -177,7 +177,7 @@ open class InputField: EntryField, UITextFieldDelegate {
successLabel.isHidden = false
errorLabel.isHidden = true
icon.name = .checkmarkAlt
icon.color = .black
icon.color = VDSColor.paletteBlack
icon.surface = surface
icon.isHidden = disabled
} else {

View File

@ -0,0 +1,119 @@
//
// VDSColor.swift
// VDS
//
// Created by Matt Bruce on 5/15/23.
//
import Foundation
import VDSColorTokens
extension VDSColor {
public enum Color: String, CaseIterable {
case paletteBlack
case paletteWhite
case paletteRed
case paletteGray95
case paletteGray85
case paletteGray65
case paletteGray44
case paletteGray20
case paletteGray11
case paletteOrange94
case paletteOrange83
case paletteOrange71
case paletteOrange58
case paletteOrange41
case paletteOrange24
case paletteOrange17
case paletteYellow94
case paletteYellow87
case paletteYellow74
case paletteYellow53
case paletteYellow39
case paletteYellow20
case paletteYellow15
case paletteBlue94
case paletteBlue82
case paletteBlue62
case paletteBlue46
case paletteBlue38
case paletteBlue21
case paletteBlue15
case paletteGreen91
case paletteGreen77
case paletteGreen61
case paletteGreen36
case paletteGreen26
case paletteGreen15
case paletteGreen10
case palettePink87
case palettePink76
case palettePink62
case palettePink46
case palettePink25
case palettePurple85
case palettePurple75
case palettePurple60
case palettePurple39
case palettePurple20
case backgroundPrimaryLight
case backgroundPrimaryDark
case backgroundSecondaryLight
case backgroundSecondaryDark
case backgroundBrandhighlight
case feedbackErrorOnlight
case feedbackErrorOndark
case feedbackErrorBackgroundOnlight
case feedbackErrorBackgroundOndark
case feedbackWarningOnlight
case feedbackWarningOndark
case feedbackWarningBackgroundOnlight
case feedbackWarningBackgroundOndark
case feedbackInformationOnlight
case feedbackInformationOndark
case feedbackInformationBackgroundOnlight
case feedbackInformationBackgroundOndark
case feedbackSuccessOnlight
case feedbackSuccessOndark
case feedbackSuccessBackgroundOnlight
case feedbackSuccessBackgroundOndark
case interactiveActiveOnlight
case interactiveActiveOndark
case interactiveDisabledOnlight
case interactiveDisabledOndark
case interactiveScrollthumbOnlight
case interactiveScrollthumbOndark
case interactiveScrollthumbHoverOnlight
case interactiveScrollthumbHoverOndark
case interactiveScrolltrackOnlight
case interactiveScrolltrackOndark
case elementsPrimaryOnlight
case elementsPrimaryOndark
case elementsSecondaryOnlight
case elementsSecondaryOndark
case elementsBrandhighlight
case elementsLowcontrastOnlight
case elementsLowcontrastOndark
// Map each color name to its corresponding UIColor object.
public var uiColor: UIColor {
do {
let color = try VDSColor.getTokenByString(tokenName: "VDSColor.\(rawValue)")
return color
} catch {
print(error)
return VDSColor.paletteBlack
}
}
}
}
extension UIColor {
public static func isVDSColor(color: UIColor) -> Bool {
guard let hex = color.hexString else { return false }
let found = VDSColor.Color.allCases.first{ $0.uiColor.hexString == hex }
guard let _ = found else { return false}
return true
}
}