added icon / images / etc... first cut

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-01-10 13:11:33 -06:00
parent 34300a7f9c
commit 8501819658
48 changed files with 406 additions and 602 deletions

View File

@ -61,7 +61,7 @@
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 */; };
EA985BFB296C78D500F2FF2E /* IconCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BFA296C78D500F2FF2E /* IconCategory.swift */; };
EA985C1D296CD13600F2FF2E /* BundleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985C1C296CD13600F2FF2E /* BundleManager.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 */; };
@ -172,7 +172,7 @@
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>"; };
EA985BFA296C78D500F2FF2E /* IconCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconCategory.swift; sourceTree = "<group>"; };
EA985C1C296CD13600F2FF2E /* BundleManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleManager.swift; sourceTree = "<group>"; };
EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageLabelAttribute.swift; sourceTree = "<group>"; };
EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolTipLabelAttribute.swift; sourceTree = "<group>"; };
EAA5EEB828ECD24B003B3210 /* Icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Icons.xcassets; sourceTree = "<group>"; };
@ -341,10 +341,10 @@
EA0FC2BE2912D18200DF80B4 /* Buttons */,
EAF7F092289985E200B287F5 /* Checkbox */,
EA985BF3296C609E00F2FF2E /* Icon */,
EA1F265F28B945070033E859 /* RadioSwatch */,
EA3362412892EF700071C351 /* Label */,
EA89200B28B530F0006B9984 /* RadioBox */,
EAF7F11428A1470D00B287F5 /* RadioButton */,
EA1F265F28B945070033E859 /* RadioSwatch */,
EAC925852911C9DE00091998 /* TextFields */,
EA5E304A294CBDBB0082B959 /* TileContainer */,
EA5E3056295105930082B959 /* Tilet */,
@ -403,6 +403,7 @@
EA3361B4288B2A360071C351 /* Classes */ = {
isa = PBXGroup;
children = (
EA985C1C296CD13600F2FF2E /* BundleManager.swift */,
EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */,
EAF7F09D289AAEC000B287F5 /* Constants.swift */,
EA3361B5288B2A410071C351 /* Control.swift */,
@ -512,7 +513,6 @@
isa = PBXGroup;
children = (
EA985BF4296C60C000F2FF2E /* Icon.swift */,
EA985BFA296C78D500F2FF2E /* IconCategory.swift */,
EA985BF8296C710100F2FF2E /* IconColor.swift */,
EA985BF6296C665E00F2FF2E /* IconName.swift */,
);
@ -783,6 +783,7 @@
EA5E304E294CC7F00082B959 /* VDSColor.swift in Sources */,
EA89201528B56CF4006B9984 /* RadioBoxGroup.swift in Sources */,
EAF7F09E289AAEC000B287F5 /* Constants.swift in Sources */,
EA985C1D296CD13600F2FF2E /* BundleManager.swift in Sources */,
EA1F266528B945070033E859 /* RadioSwatch.swift in Sources */,
EA4DB18528CA967F00103EE3 /* SelectorGroupHandlerBase.swift in Sources */,
EA89200228AECF2A006B9984 /* UIButton+Publisher.swift in Sources */,
@ -808,7 +809,6 @@
EAF7F0AD289B142900B287F5 /* StrikeThroughLabelAttribute.swift in Sources */,
EAB5FEF12927F4AA00998C17 /* SelfSizingCollectionView.swift in Sources */,
EA3361B8288B2AAA0071C351 /* ViewProtocol.swift in Sources */,
EA985BFB296C78D500F2FF2E /* IconCategory.swift in Sources */,
EA3361BF288B2EA60071C351 /* Handlerable.swift in Sources */,
EA3361A8288B23300071C351 /* UIColor.swift in Sources */,
EAC9257D29119B5400091998 /* TextLink.swift in Sources */,

View File

@ -0,0 +1,61 @@
//
// BundleManager.swift
// VDS
//
// Created by Matt Bruce on 1/9/23.
//
import Foundation
import UIKit
public class BundleManager {
public static var shared = BundleManager()
public var bundles: [Bundle] = []
private var paths: [String] = []
private init(){
bundles.append(Bundle(for: Self.self))
}
private func updateBundles() {
bundles.removeAll()
bundles.append(Bundle(for: Self.self))
paths.forEach({ path in
if let bundle = Bundle(path: path) {
bundles.append(bundle)
}
})
}
public static func register(_ path: String) {
if !shared.paths.contains(where: {$0 == path}) {
if let bundle = Bundle(path: path) {
shared.paths.append(path)
shared.bundles.append(bundle)
}
}
}
}
extension BundleManager {
public func image(for name: String) -> UIImage? {
var foundImage: UIImage?
if let image = UIImage(named: name) {
foundImage = image
} else {
for bundle in bundles {
if let image = UIImage(named: name, in: bundle, with: nil) {
foundImage = image
break
}
}
}
return foundImage
}
}

View File

@ -61,10 +61,6 @@ public class Icon: View {
open var size: IconSize = .medium { didSet { didChange() }}
open var name: IconName? { didSet { didChange() }}
//reserverd for internal components only
internal var restrictedName: RestrictedIconName? { didSet { didChange() }}
internal var isBold: Bool = false { didSet { didChange() }}
//functions
//--------------------------------------------------
// MARK: - Lifecycle
@ -95,7 +91,6 @@ public class Icon: View {
//--------------------------------------------------
open override func updateView() {
super.updateView()
//get the color for the image
var imageColor = color.value
@ -113,10 +108,7 @@ public class Icon: View {
//get the image name
//set the image
if let restrictedName, let image = getImage(for: restrictedName.rawValue) {
setImage(image: image, imageColor: imageColor)
} else if let name, let image = getImage(for: name.rawValue) {
if let name, let image = getImage(for: name.rawValue) {
setImage(image: image, imageColor: imageColor)
} else {
imageView.image = nil
@ -125,11 +117,6 @@ public class Icon: View {
private func getImage(for imageName: String) -> UIImage? {
//if the icon isBold (restricted internal) attach bold but
//some might not be found so then try the normal un-bold name
if isBold {
return BundleManager.shared.image(for: "\(imageName)-bold")
}
return BundleManager.shared.image(for: imageName)
}

View File

@ -1,67 +0,0 @@
//
// IconCategory.swift
// VDS
//
// Created by Matt Bruce on 1/9/23.
//
import Foundation
public enum IconCategory: String, CaseIterable {
case accessibility
case b2b
case directional
case international
case navigational
case notification_feedback
case objects_industry
case orders_pricing
case other
case plans_devices
case social
case utilities
}
extension IconCategory {
public var icons: [IconName] {
switch self {
case .accessibility:
return [.accessibility, .americanSignLanguage, .assistedListeningSystems, .audioDescription, .blind, .braille, .brightness, .closedCaptioning, .closedCaptioningFill, .cognitiveDisability, .deaf, .internationalSymbolOfAccess, .openCaptioning, .phoneVolume, .teletype, .textToSpeech]
case .b2b:
return [.assetTracking, .businessContinuity, .conditionBasedMaintenance, .conditionBasedWrench, .constructionHammer, .constructionTruck, .digitalSignageCar, .digitalSignage, .droneCamera, .educationCurriculum, .education, .electricPower, .electricUtility, .energyScience, .energyUtilities, .enterprise, .federalDefense, .financial, .fleetTracking, .fleet, .gas, .government, .group, .growth, .hackers, .healthcareCorporate, .healthcareGeneral, .healthcareWorker, .ideasSolutions, .inclusivity, .industry, .insurance, .intelligentTracking, .internetOfThings, .joinCall, .k12Education, .laptopAntivirus, .laptopControls, .laptopGpsTracking, .laptopSettings, .laptopTrends, .laptopWireless, .law, .lmr, .loyaltyRetention, .manufacturing, .mediaEntertainment, .mediumBusiness, .mobileCommandCenter, .mobileKioskInfo, .mobileKioskWireless, .mobileRetail, .mobileSearch, .mobileWorkforceManagement, .network, .networkAttachedStorage, .officePhoneSystem, .oilIndustry, .operationalTransformation, .pharmaceutical, .pharmacy, .planner, .powerUtility, .professionalServices, .qualityAssurance, .realEstate, .regulatoryCompliance, .research, .retail, .security, .securitySolution, .smarthouse, .socialMedia, .software, .solarPower, .solutions, .supplyChain, .systemIntegration, .telecommunications, .telemedicine, .telemetry, .thermodynamics, .trends, .utilityWorker, .vehicleTracking, .warehouseManagement, .waterIndustry, .wellness]
case .directional:
return [.closeAlt, .close, .downArrow, .downCaret, .evenMoreFlexibility, .flexibilityRectangles, .flexibility, .gateway, .leftArrow, .leftCaret, .minus, .moreFlexibility, .noOff, .no, .plus, .rightArrow, .rightCaret, .swipeLeft, .swipeRight, .swipe, .switch, .upArrow, .upCaret]
case .international:
return [.internationalLongDistance, .international, .travelPass, .tripPlanner]
case .navigational:
return [.advancedSettings, .agentChat, .bookmark, .chat, .filterOff, .filter, .list, .lockClosed, .lockOpen, .logout, .menu, .moreHorizontal, .myAccount, .realTimeTracking, .search, .settings, .supportDrawer, .support, .userRegistration]
case .notification_feedback:
return [.alertNotification, .checkmarkAlt, .checkmark, .clock, .error, .feedback, .loader, .notification, .notificationsOff, .notifyMe, .pushNotification, .remindMe, .reminder, .securityAlert, .securityCheck, .securityKeyhole, .securityWireless, .snooze, .speedMonitoring, .starOff, .star, .sync, .timer, .warning]
case .objects_industry:
return [.ctr, .passenger, .tvContent, .urlTransparency, .adaptiveSpeaker, .adTechStack, .agricultureLeaves, .agricultureTractor, .agricultureVineyard, .airport, .airConditioner, .audienceTargetedSearch, .award, .babyMonitor, .bestPractices, .bid, .bot, .cellTower, .cloudDocument, .coffee, .coin, .complianceDocument, .conversion, .countDown, .crossDeviceTargeting, .crossDevice, .customAudience, .digitalContent, .dining, .display, .domainTargeting, .doorbell, .driver, .euro, .expense, .faceCovering, .fineArt, .flag, .flurry, .fridge, .gaming, .geofence, .home, .identityGraph, .impressionVideo, .inferredIdentity, .irobot, .ironingBoard, .kidsStroller, .levers, .mobilePlusTv, .mobileRetargeting, .motionDetector, .multipleDocuments, .music, .nativeVideo, .native, .onGoCar, .packBackpack, .packLuggage, .packPurse, .petsCollar, .realTime, .research, .retailStore, .retargeting, .schoolNotebook, .singleDocument, .smartFamilyChildAddressBook, .smartScooter, .smokeDetector, .solarPanel, .sportsBike, .sportsSkis, .sportsSoccer, .sportsTennis, .stadiumAlt, .stadiumFlag, .thermostatTech, .ticket, .tradingDeck, .traffic, .travelKeys, .trumpet, .unification, .unification, .visibility, .weights, .yield]
case .orders_pricing:
return [.addToFavorite, .addedToFavorite, .billDown, .billUp, .camera, .creditCard, .gift, .inStorePickup, .noFee, .oneYear, .orders, .outOfStock, .reoccuringPayment, .reservations, .returns, .rewards, .shipping, .shoppingBag, .shopping, .tag, .taxes]
case .other:
return [.growthOpportunities, .noSmoking, .socialDistancing]
case .plans_devices:
return [.battery, .bonusData, .bringYourOwnDevice, .callerId, .carryoverData, .compass, .connect, .dataBoost, .deviceProtection, .devicesAddons, .embeddedSound, .findMyRemote, .giftedData, .homeInternet, .internetDevices, .largePlan, .mediumPlan, .mobileApps, .mobileHotspot, .multipleDeviceProtection, .multipleDevices, .nationWide, .phoneAlt, .purchaseData, .router, .simCard, .smallPlan, .smartAssistant, .sound, .tablet, .techLaptop, .techPhone , .totalMobileProtection, .unlimitedPlan, .uplink, .videoOnTablet, .waterResistant, .wearable]
case .social:
return [.at, .facebook, .instagram, .twitter, .youtube]
case .utilities:
return [.ThreeDAd , .ar , .addFolder , .addUser , .analytics , .announcement , .archive , .artboard , .attach , .awareness , .barcode , .bluetooth , .boxOpen , .calendar , .calibrate , .callDisconnected , .cleanSurface , .cloudAlt , .cloud , .comparison , .compose , .connectParts , .consultativeTransfer , .convergence , .crop , .cta , .customize , .data , .decrease , .deviceActivity , .directCarrierBilling , .directory , .displayUtilities , .distribution , .download , .dragAndDrop , .dropShipment , .duplicate , .edit , .email , .emergencyContact , .emoji , .externalLink , .fallDetected , .favorite , .fax , .fingerprintSensor , .fire , .fitToZone , .flipCamera , .forwardedCall , .fullscreen , .getHelp , .gridView , .history , .humidity , .incomingCall , .increase , .info , .inventory , .invitationAccepted , .invitationExpired , .invitationRejected , .landscape , .light , .link , .location , .locationPin , .mapView , .masonryView , .maximize , .mergeCalls , .microphoneAlt , .microphone , .missedCall , .moveTo , .multicast , .mute , .networkConnection , .news , .next , .nfcTag , .night , .noVideo , .onDemand , .outgoingCall , .paperFreeBilling , .pauseInternet , .pause , .peelSticker , .photo , .platform , .playAlt , .playWith , .play , .portrait , .pressure , .previous , .print , .question , .recycle , .removeItem , .replaceAPhoto , .reply , .ringing , .ringtone , .riskMonitor , .rss , .satelliteOff , .satellite , .save , .scaleAlt , .scale , .sendMessage , .setFallbackImage , .setGalleryImage , .share , .shock , .signalBroadcast , .speakerMute , .speakerPhone , .speed , .stakeholder , .steps , .stop , .stopAlt , .survey , .talking , .teamLeader , .temperature , .template , .theme , .thumbsDown , .thumbsUp , .tiles , .tilt , .tools , .trash , .turnonOff , .tv , .upload , .userSettings , .vibration , .video , .volume , .volunteer , .virtualReality , .voiceHd , .voiceMail , .weather , .whiteBlackList , .wifi , .zoomIn , .zoomOut]
}
}
}

View File

@ -9,523 +9,34 @@ import Foundation
import UIKit
import VDSColorTokens
public enum IconName: String, CaseIterable {
//accessibility
case accessibility = "accessibility"
case americanSignLanguage = "american-sign-language"
case assistedListeningSystems = "assisted-listening-systems"
case audioDescription = "audio-description"
case blind = "blind"
case braille = "braille"
case brightness = "brightness"
case closedCaptioning = "closed-captioning"
case closedCaptioningFill = "closed-captioning-fill"
case cognitiveDisability = "cognitive-disability"
case deaf = "deaf"
case internationalSymbolOfAccess = "international-symbol-of-access"
case openCaptioning = "open-captioning"
case phoneVolume = "phone-volume"
case teletype = "teletype"
case textToSpeech = "text-to-speech"
public struct IconName: RawRepresentable {
public typealias RawValue = String
public var rawValue: String
//b2b
case assetTracking = "asset-tracking"
case businessContinuity = "business-continuity"
case conditionBasedMaintenance = "condition-based-maintenance"
case conditionBasedWrench = "condition-based-wrench"
case constructionHammer = "construction-hammer"
case constructionTruck = "construction-truck"
case digitalSignageCar = "digital-signage-car"
case digitalSignage = "digital-signage"
case droneCamera = "drone-camera"
case educationCurriculum = "education-curriculum"
case education = "education"
case electricPower = "electric-power"
case electricUtility = "electric-utility"
case energyScience = "energy-science"
case energyUtilities = "energy-utilities"
case enterprise = "enterprise"
case federalDefense = "federal-defense"
case financial = "financial"
case fleetTracking = "fleet-tracking"
case fleet = "fleet"
case gas = "gas"
case government = "government"
case group = "group"
case growth = "growth"
case hackers = "hackers"
case healthcareCorporate = "healthcare-corporate"
case healthcareGeneral = "healthcare-general"
case healthcareWorker = "healthcare-worker"
case ideasSolutions = "ideas-solutions"
case inclusivity = "inclusivity"
case industry = "industry"
case insurance = "insurance"
case intelligentTracking = "intelligent-tracking"
case internetOfThings = "internet-of-things"
case joinCall = "join-call"
case k12Education = "k12-education"
case laptopAntivirus = "laptop-antivirus"
case laptopControls = "laptop-controls"
case laptopGpsTracking = "laptop-gps-tracking"
case laptopSettings = "laptop-settings"
case laptopTrends = "laptop-trends"
case laptopWireless = "laptop-wireless"
case law = "law"
case lmr = "lmr"
case loyaltyRetention = "loyalty-retention"
case manufacturing = "manufacturing"
case mediaEntertainment = "media-entertainment"
case mediumBusiness = "medium-business"
case mobileCommandCenter = "mobile-command-center"
case mobileKioskInfo = "mobile-kiosk-info"
case mobileKioskWireless = "mobile-kiosk-wireless"
case mobileRetail = "mobile-retail"
case mobileSearch = "mobile-search"
case mobileWorkforceManagement = "mobile-workforce-management"
case network = "network"
case networkAttachedStorage = "network-attached-storage"
case officePhoneSystem = "office-phone-system"
case oilIndustry = "oil-industry"
case operationalTransformation = "operational-transformation"
case pharmaceutical = "pharmaceutical"
case pharmacy = "pharmacy"
case planner = "planner"
case powerUtility = "power-utility"
case professionalServices = "professional-services"
case qualityAssurance = "quality-assurance"
case realEstate = "real-estate"
case regulatoryCompliance = "regulatory-compliance"
case retail = "retail"
case security = "security"
case securitySolution = "security-solution"
case smarthouse = "smarthouse"
case socialMedia = "social-media"
case software = "software"
case solarPower = "solar-power"
case solutions = "solutions"
case supplyChain = "supply-chain"
case systemIntegration = "system-integration"
case telecommunications = "telecommunications"
case telemedicine = "telemedicine"
case telemetry = "telemetry"
case thermodynamics = "thermodynamics"
case trends = "trends"
case utilityWorker = "utility-worker"
case vehicleTracking = "vehicle-tracking"
case warehouseManagement = "warehouse-management"
case waterIndustry = "water-industry"
case wellness = "wellness"
public init?(rawValue: String) {
self.rawValue = rawValue
}
//directional
case upCaret = "up-caret"
case closeAlt = "close-alt"
case close = "close"
case downArrow = "down-arrow"
case downCaret = "down-caret"
case evenMoreFlexibility = "even-more-flexibility"
case flexibilityRectangles = "flexibility-rectangles"
case flexibility = "flexibility"
case gateway = "gateway"
case leftArrow = "left-arrow"
case leftCaret = "left-caret"
case minus = "minus"
case moreFlexibility = "more-flexibility"
case noOff = "no-off"
case no = "no"
case plus = "plus"
case rightArrow = "right-arrow"
case rightCaret = "right-caret"
case swipeLeft = "swipe-left"
case swipeRight = "swipe-right"
case swipe = "swipe"
case `switch` = "switch"
case upArrow = "up-arrow"
public init(name: String){
self.rawValue = name
}
//international
case internationalLongDistance = "international-long-distance"
case international = "international"
case travelPass = "travel-pass"
case tripPlanner = "trip-planner"
//navigational
case advancedSettings = "advanced-settings"
case agentChat = "agent-chat"
case bookmark = "bookmark"
case chat = "chat"
case filterOff = "filter-off"
case filter = "filter"
case list = "list"
case lockClosed = "lock-closed"
case lockOpen = "lock-open"
case logout = "logout"
case menu = "menu"
case moreHorizontal = "more-horizontal"
case myAccount = "my-account"
case realTimeTracking = "real-time-tracking"
case search = "search"
case settings = "settings"
case supportDrawer = "support-drawer"
case support = "support"
case userRegistration = "user-registration"
//nofication_feedback
case alertNotification = "alert-notification"
case checkmarkAlt = "checkmark-alt"
case checkmark = "checkmark"
case clock = "clock"
case error = "error"
case feedback = "feedback"
case loader = "loader"
case notification = "notification"
case notificationsOff = "notifications-off"
case notifyMe = "notify-me"
case pushNotification = "push-notification"
case remindMe = "remind-me"
case reminder = "reminder"
case securityAlert = "security-alert"
case securityCheck = "security-check"
case securityKeyhole = "security-keyhole"
case securityWireless = "security-wireless"
case snooze = "snooze"
case speedMonitoring = "speed-monitoring"
case starOff = "star-off"
case star = "star"
case sync = "sync"
case timer = "timer"
case warning = "warning"
//objects_industry
case ctr = "ctr"
case passenger = "passenger"
case tvContent = "tv-content"
case urlTransparency = "url-transparency"
case adaptiveSpeaker = "adaptive-speaker"
case adTechStack = "ad-tech-stack"
case agricultureLeaves = "agriculture-leaves"
case agricultureTractor = "agriculture-tractor"
case agricultureVineyard = "agriculture-vineyard"
case airport = "airport"
case airConditioner = "air-conditioner"
case audienceTargetedSearch = "audience-targeted-search"
case award = "award"
case babyMonitor = "baby-monitor"
case bestPractices = "best-practices"
case bid = "bid"
case bot = "bot"
case cellTower = "cell-tower"
case cloudDocument = "cloud-document"
case coffee = "coffee"
case coin = "coin"
case complianceDocument = "compliance-document"
case conversion = "conversion"
case countDown = "count-down"
case crossDeviceTargeting = "cross-device-targeting"
case crossDevice = "cross-device"
case customAudience = "custom-audience"
case digitalContent = "digital-content"
case dining = "dining"
case display = "display"
case domainTargeting = "domain-targeting"
case doorbell = "doorbell"
case driver = "driver"
case euro = "euro"
case expense = "expense"
case faceCovering = "face-covering"
case fineArt = "fine-art"
case flag = "flag"
case flurry = "flurry"
case fridge = "fridge"
case gaming = "gaming"
case geofence = "geofence"
case home = "home"
case identityGraph = "identity-graph"
case impressionVideo = "impression-video"
case inferredIdentity = "inferred-identity"
case irobot = "irobot"
case ironingBoard = "ironing-board"
case kidsStroller = "kids-stroller"
case levers = "levers"
case mobilePlusTv = "mobile-plus-tv"
case mobileRetargeting = "mobile-retargeting"
case motionDetector = "motion-detector"
case multipleDocuments = "multiple-documents"
case music = "music"
case nativeVideo = "native-video"
case native = "native"
case onGoCar = "on-go-car"
case packBackpack = "pack-backpack"
case packLuggage = "pack-luggage"
case packPurse = "pack-purse"
case petsCollar = "pets-collar"
case realTime = "real-time"
case research = "research"
case retailStore = "retail-store"
case retargeting = "retargeting"
case schoolNotebook = "school-notebook"
case singleDocument = "single-document"
case smartFamilyChildAddressBook = "smart-family-child-address-book"
case smartScooter = "smart-scooter"
case smokeDetector = "smoke-detector"
case solarPanel = "solar-panel"
case sportsBike = "sports-bike"
case sportsSkis = "sports-skis"
case sportsSoccer = "sports-soccer"
case sportsTennis = "sports-tennis"
case stadiumAlt = "stadium-alt"
case stadiumFlag = "stadium-flag"
case thermostatTech = "thermostat-tech"
case ticket = "ticket"
case tradingDeck = "trading-deck"
case traffic = "traffic"
case travelKeys = "travel-keys"
case trumpet = "trumpet"
case unification = "unification"
case visibility = "visibility"
case weights = "weights"
case yield = "yield"
//orders_pricing
case addToFavorite = "add-to-favorite"
case addedToFavorite = "added-to-favorite"
case billDown = "bill-down"
case billUp = "bill-up"
case camera = "camera"
case creditCard = "credit-card"
case gift = "gift"
case inStorePickup = "in-store-pickup"
case noFee = "no-fee"
case oneYear = "one-year"
case orders = "orders"
case outOfStock = "out-of-stock"
case reoccuringPayment = "reoccuring-payment"
case reservations = "reservations"
case returns = "returns"
case rewards = "rewards"
case shipping = "shipping"
case shoppingBag = "shopping-bag"
case shopping = "shopping"
case tag = "tag"
case taxes = "taxes"
//other
case growthOpportunities = "growth-opportunities"
case noSmoking = "no-smoking"
case socialDistancing = "social-distancing"
//plans_other
case battery = "battery"
case bonusData = "bonus-data"
case bringYourOwnDevice = "bring-your-own-device"
case callerId = "caller-id"
case carryoverData = "carryover-data"
case compass = "compass"
case connect = "connect"
case dataBoost = "data-boost"
case deviceProtection = "device-protection"
case devicesAddons = "devices-addons"
case embeddedSound = "embedded-sound"
case findMyRemote = "find-my-remote"
case giftedData = "gifted-data"
case homeInternet = "home-internet"
case internetDevices = "internet-devices"
case largePlan = "large-plan"
case mediumPlan = "medium-plan"
case mobileApps = "mobile-apps"
case mobileHotspot = "mobile-hotspot"
case multipleDeviceProtection = "multiple-device-protection"
case multipleDevices = "multiple-devices"
case nationWide = "nation-wide"
case phoneAlt = "phone-alt"
case purchaseData = "purchase-data"
case router = "router"
case simCard = "sim-card"
case smallPlan = "small-plan"
case smartAssistant = "smart-assistant"
case sound = "sound"
case tablet = "tablet"
case techLaptop = "tech-laptop"
case techPhone = "tech-phone"
case totalMobileProtection = "total-mobile-protection"
case unlimitedPlan = "unlimited-plan"
case uplink = "uplink"
case videoOnTablet = "video-on-tablet"
case waterResistant = "water-resistant"
case wearable = "wearable"
//social
case at = "at"
case facebook = "facebook"
case instagram = "instagram"
case twitter = "twitter"
case youtube = "youtube"
//utilities
case ThreeDAd = "3d-ad"
case ar = "ar"
case addFolder = "add-folder"
case addUser = "add-user"
case analytics = "analytics"
case announcement = "announcement"
case archive = "archive"
case artboard = "artboard"
case attach = "attach"
case awareness = "awareness"
case barcode = "barcode"
case bluetooth = "bluetooth"
case boxOpen = "box-open"
case calendar = "calendar"
case calibrate = "calibrate"
case callDisconnected = "call-disconnected"
case cleanSurface = "clean-surface"
case cloudAlt = "cloud-alt"
case cloud = "cloud"
case comparison = "comparison"
case compose = "compose"
case connectParts = "connect-parts"
case consultativeTransfer = "consultative-transfer"
case convergence = "convergence"
case crop = "crop"
case cta = "cta"
case customize = "customize"
case data = "data"
case decrease = "decrease"
case deviceActivity = "device-activity"
case directCarrierBilling = "direct-carrier-billing"
case directory = "directory"
case displayUtilities = "display-utilities"
case distribution = "distribution"
case download = "download"
case dragAndDrop = "drag-and-drop"
case dropShipment = "drop-shipment"
case duplicate = "duplicate"
case edit = "edit"
case email = "email"
case emergencyContact = "emergency-contact"
case emoji = "emoji"
case externalLink = "external-link"
case fallDetected = "fall-detected"
case favorite = "favorite"
case fax = "fax"
case fingerprintSensor = "fingerprint-sensor"
case fire = "fire"
case fitToZone = "fit-to-zone"
case flipCamera = "flip-camera"
case forwardedCall = "forwarded-call"
case fullscreen = "fullscreen"
case getHelp = "get-help"
case gridView = "grid-view"
case history = "history"
case humidity = "humidity"
case incomingCall = "incoming-call"
case increase = "increase"
case info = "info"
case inventory = "inventory"
case invitationAccepted = "invitation-accepted"
case invitationExpired = "invitation-expired"
case invitationRejected = "invitation-rejected"
case landscape = "landscape"
case light = "light"
case link = "link"
case location = "location"
case locationPin = "location-pin"
case mapView = "map-view"
case masonryView = "masonry-view"
case maximize = "maximize"
case mergeCalls = "merge-calls"
case microphoneAlt = "microphone-alt"
case microphone = "microphone"
case missedCall = "missed-call"
case moveTo = "move-to"
case multicast = "multicast"
case mute = "mute"
case networkConnection = "network-connection"
case news = "news"
case next = "next"
case nfcTag = "nfc-tag"
case night = "night"
case noVideo = "no-video"
case onDemand = "on-demand"
case outgoingCall = "outgoing-call"
case paperFreeBilling = "paper-free-billing"
case pauseInternet = "pause-internet"
case pause = "pause"
case peelSticker = "peel-sticker"
case photo = "photo"
case platform = "platform"
case playAlt = "play-alt"
case playWith = "play-with"
case play = "play"
case portrait = "portrait"
case pressure = "pressure"
case previous = "previous"
case print = "print"
case question = "question"
case recycle = "recycle"
case removeItem = "remove-item"
case replaceAPhoto = "replace-a-photo"
case reply = "reply"
case ringing = "ringing"
case ringtone = "ringtone"
case riskMonitor = "risk-monitor"
case rss = "rss"
case satelliteOff = "satellite-off"
case satellite = "satellite"
case save = "save"
case scaleAlt = "scale-alt"
case scale = "scale"
case sendMessage = "send-message"
case setFallbackImage = "set-fallback-image"
case setGalleryImage = "set-gallery-image"
case share = "share"
case shock = "shock"
case signalBroadcast = "signal-broadcast"
case speakerMute = "speaker-mute"
case speakerPhone = "speaker-phone"
case speed = "speed"
case stakeholder = "stakeholder"
case steps = "steps"
case stop = "stop"
case stopAlt = "stop-alt"
case survey = "survey"
case talking = "talking"
case teamLeader = "team-leader"
case temperature = "temperature"
case template = "template"
case theme = "theme"
case thumbsDown = "thumbs-down"
case thumbsUp = "thumbs-up"
case tiles = "tiles"
case tilt = "tilt"
case tools = "tools"
case trash = "trash"
case turnonOff = "turnon-off"
case tv = "tv"
case upload = "upload"
case userSettings = "user-settings"
case vibration = "vibration"
case video = "video"
case volume = "volume"
case volunteer = "volunteer"
case virtualReality = "virtual-reality"
case voiceHd = "voice-hd"
case voiceMail = "voice-mail"
case weather = "weather"
case whiteBlackList = "white-black-list"
case wifi = "wifi"
case zoomIn = "zoom-in"
case zoomOut = "zoom-out"
}
internal enum RestrictedIconName: String, CaseIterable {
case paginationLeftArrow = "pagination-left-arrow"
case paginationRightArrow = "pagination-right-arrow"
case checkmark = "checkmark"
case checkmarkAlt = "checkmark-alt"
case close = "close"
case error = "error"
case info = "info"
case leftCaret = "left-caret"
case rightCaret = "right-caret"
case warning = "warning"
internal static let paginationLeftArrow = IconName(name: "pagination-left-arrow")
internal static let paginationRightArrow = IconName(name: "pagination-right-arrow")
public static let checkmark = IconName(name: "checkmark")
internal static let checkmarkBold = IconName(name: "checkmark-bold")
public static let checkmarkAlt = IconName(name: "checkmark-alt")
internal static let checkmarkAltBold = IconName(name: "checkmark-alt-bold")
public static let close = IconName(name: "close")
internal static let closeBold = IconName(name: "close-bold")
public static let error = IconName(name: "error")
internal static let errorBold = IconName(name: "error-bold")
public static let info = IconName(name: "info")
internal static let infoBold = IconName(name: "info-bold")
public static let leftCaret = IconName(name: "left-caret")
internal static let leftCaretBold = IconName(name: "left-caret-bold")
public static let rightCaret = IconName(name: "right-caret")
internal static let rightCaretBold = IconName(name: "right-caret-bold")
public static let warning = IconName(name: "warning")
internal static let warningBold = IconName(name: "warning-bold")
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "checkmark-alt-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<path d="M10.8,20.2c-5.2,0-9.4-4.2-9.4-9.4c0-5.2,4.2-9.4,9.4-9.4c5.2,0,9.4,4.2,9.4,9.4c0,0,0,0,0,0C20.2,16,16,20.2,10.8,20.2z
M10.8,3.4c-4.1,0-7.4,3.3-7.4,7.4s3.3,7.4,7.4,7.4c4.1,0,7.4-3.3,7.4-7.4c0,0,0,0,0,0C18.2,6.7,14.9,3.4,10.8,3.4z M15.1,9.1
l-1.4-1.4l-4,4l-1.7-1.7l-1.4,1.4l3.1,3.1L15.1,9.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 664 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "checkmark-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<path d="M8,19.1l-7-7l2.5-2.5L8,14L18.1,3.8l2.5,2.5L8,19.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 423 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "checkmark.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1 @@
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6"><path d="M19.74,5.29,7.88,17.15,1.74,11l.84-.84,5.3,5.31,11-11Z"/></svg>

After

Width:  |  Height:  |  Size: 169 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "close-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<path d="M12.2,10.8l6.8,6.8L17.6,19l-6.8-6.8L4,19l-1.4-1.4l6.8-6.8L2.6,4L4,2.6l6.8,6.8l6.8-6.8L19,4L12.2,10.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 474 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "close.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6"><path d="M11.59,10.8l7.11,7.1-.8.8-7.1-7.11L3.7,18.7l-.8-.8L10,10.8,2.9,3.7l.8-.8L10.8,10,17.9,2.9l.8.8Z"/></svg>

After

Width:  |  Height:  |  Size: 210 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "down-caret-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
<g id="Layer_62" data-name="Layer 62">
<polygon points="6 9.687 0.518 4.206 1.932 2.791 6 6.859 10.067 2.791 11.481 4.206 6 9.687"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 214 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "down-caret.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,3 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<polygon points="10.8 15.71 1.8 6.71 2.62 5.89 10.8 14.07 18.98 5.89 19.8 6.71 10.8 15.71"/>
</svg>

After

Width:  |  Height:  |  Size: 200 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "error-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<style type="text/css">
.st0{fill:#010101;}
</style>
<path class="st0" d="M19.4,8.8l-6.6-6.6c-1.1-1.1-2.9-1.1-4,0L2.2,8.8c-1.1,1.1-1.1,2.9,0,4l6.6,6.6c1.1,1.1,2.9,1.1,4,0
c0,0,0,0,0,0l6.6-6.6C20.5,11.7,20.5,9.9,19.4,8.8z M18,11.4L11.4,18c-0.3,0.3-0.9,0.3-1.2,0l-6.6-6.6c-0.3-0.3-0.3-0.9,0-1.2
l6.6-6.6c0.3-0.3,0.9-0.3,1.2,0l6.6,6.6C18.3,10.5,18.3,11.1,18,11.4z M9.9,13.4h1.7v1.7H9.9V13.4z M9.9,6.5h1.7V9l-0.6,2.6h-0.6
L9.9,9V6.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 797 B

View File

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 628 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "info-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,10 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<defs>
<style>
.cls-1 {
fill: #010101;
}
</style>
</defs>
<path class="cls-1" d="M10.80011,1.36129a9.43848,9.43848,0,1,0,9.43848,9.43848A9.43847,9.43847,0,0,0,10.80011,1.36129Zm0,16.877a7.43848,7.43848,0,1,1,7.43848-7.43848A7.43849,7.43849,0,0,1,10.80011,18.23825ZM11.625,7.45849H9.95V5.78344h1.675ZM9.95834,9.11663H11.65v6.69989H9.95834Z"/>
</svg>

After

Width:  |  Height:  |  Size: 481 B

View File

Before

Width:  |  Height:  |  Size: 390 B

After

Width:  |  Height:  |  Size: 390 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "left-caret-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<path d="M14.1,20.7l-9.9-9.9l9.9-9.9l2.5,2.5l-7.3,7.3l7.3,7.3L14.1,20.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 436 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "left-caret.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,3 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<polygon points="14.89 19.8 5.89 10.799 14.89 1.8 15.71 2.619 7.53 10.799 15.71 18.981 14.89 19.8"/>
</svg>

After

Width:  |  Height:  |  Size: 208 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "pagination-left-arrow.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<path d="M19.8,11.7h-15l7.1,7.1L10.7,20l-9.3-9.2l9.3-9.2l1.3,1.3L4.8,9.9h15L19.8,11.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 450 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "pagination-left-caret.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_39" data-name="Layer 39" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<polygon points="14.74336 20.10078 5.44258 10.8 14.74336 1.49922 16.15742 2.91328 8.2707 10.8 16.15742 18.68672 14.74336 20.10078"/>
</svg>

After

Width:  |  Height:  |  Size: 280 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "pagination-right-arrow.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,3 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<path d="M20.26723,10.80317,10.94378,20.044,9.6764,18.7643l7.12223-7.05674H1.8014v-1.8H16.808L9.68256,2.84378l1.26738-1.278Z"/>
</svg>

After

Width:  |  Height:  |  Size: 235 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "pagination-right-caret.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_39" data-name="Layer 39" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<polygon points="6.85664 20.10127 5.44258 18.68721 13.3293 10.79951 5.44258 2.91279 6.85664 1.49873 16.15742 10.79951 6.85664 20.10127"/>
</svg>

After

Width:  |  Height:  |  Size: 285 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "right-caret-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 21.6 21.6" style="enable-background:new 0 0 21.6 21.6;" xml:space="preserve">
<path d="M7.6,20.7L5,18.1l7.3-7.3L5,3.5l2.5-2.5l9.9,9.9L7.6,20.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 429 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "warning-bold.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,3 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<path d="M19.90265,15.566l-6.936-12.03357a2.50126,2.50126,0,0,0-4.34088-.001L1.69659,15.566a2.51054,2.51054,0,0,0,2.17432,3.75989H17.7312A2.50926,2.50926,0,0,0,19.90265,15.566Zm-1.734,1.5055a.51007.51007,0,0,1-.43933.25482H3.87286a.51076.51076,0,0,1-.44323-.76251L10.3598,4.52633a.50217.50217,0,0,1,.87183,0l6.938,12.03552A.51553.51553,0,0,1,18.16864,17.0715ZM9.95,14.367h1.7V16.05H9.95Zm0-6.817h1.7v2.49048l-.56951,2.635H10.511L9.95,10.04049Z"/>
</svg>

After

Width:  |  Height:  |  Size: 554 B

View File

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "warning.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,3 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21.6 21.6">
<path d="M19.52557,15.78473,12.588,3.74951a2.0643,2.0643,0,0,0-3.584-.001L2.0733,15.78668a2.07277,2.07277,0,0,0,1.79688,3.10358H17.73157a2.07289,2.07289,0,0,0,1.794-3.10553ZM18.548,17.2926a.9494.9494,0,0,1-.81738.47266H3.87115a.94838.94838,0,0,1-.82226-1.419L9.97961,4.30811a.9396.9396,0,0,1,1.63184,0L18.551,16.34625A.95147.95147,0,0,1,18.548,17.2926ZM9.95,14.367h1.7V16.05H9.95Zm0-6.817h1.7v2.49048l-.56951,2.635H10.511l-.561-2.635Z"/>
</svg>

After

Width:  |  Height:  |  Size: 545 B