enum PageIcon: String, CaseIterable { // MARK: General case calendar case clockFill = "clock-fill" case file case globe case location case poster case video // MARK: Statistics case statisticsTime = "time" case statisticsElevationUp = "elevation-up" case statisticsElevationDown = "elevation-down" case statisticsDistance = "distance" case statisticsEnergy = "energy" // MARK: Buttons case buttonDownload = "download" case buttonExternalLink = "external" case buttonGitLink = "git" case buttonPlay = "play-circle" // MARK: Audio player case audioPlayerPlaylist = "playlist" case audioPlayerClose = "close" case audioPlayerPlay = "play" case audioPlayerPause = "pause" case audioPlayerPrevious = "previous" case audioPlayerNext = "next" // MARK: Image compare case leftRightArrow = "left-right-arrow" var icon: ContentIcon.Type { switch self { case .statisticsTime: return Icon.Statistics.Time.self case .statisticsElevationUp: return Icon.Statistics.ElevationUp.self case .statisticsElevationDown: return Icon.Statistics.ElevationDown.self case .statisticsDistance: return Icon.Statistics.Distance.self case .statisticsEnergy: return Icon.Statistics.Energy.self case .buttonDownload: return Icon.ArrowDown.self case .buttonExternalLink: return Icon.ArrowRight.self case .buttonGitLink: return Icon.Git.self case .buttonPlay: return Icon.Play.self case .audioPlayerPlaylist: return Icon.AudioPlayer.Playlist.self case .audioPlayerClose: return Icon.AudioPlayer.Close.self case .audioPlayerPlay: return Icon.AudioPlayer.Play.self case .audioPlayerPause: return Icon.AudioPlayer.Pause.self case .audioPlayerPrevious: return Icon.AudioPlayer.Previous.self case .audioPlayerNext: return Icon.AudioPlayer.Next.self case .calendar: return Icon.Calendar.self case .clockFill: return Icon.ClockFill.self case .file: return Icon.File.self case .globe: return Icon.Globe.self case .location: return Icon.Location.self case .poster: return Icon.Poster.self case .video: return Icon.Video.self case .leftRightArrow:return Icon.LeftRightArrow.self } } var name: String { switch self { case .calendar: "Calendar" case .clockFill: "ClockFill" case .file: "File" case .globe: "Globe" case .location: "Location" case .poster: "Poster" case .video: "Video" case .leftRightArrow: "LeftRightArrow" case .buttonExternalLink: "Button: External Link" case .buttonGitLink: "Button: Git Link" case .buttonPlay: "Button: Play" case .audioPlayerPlaylist: "Audio Player: Playlist" case .audioPlayerClose: "Audio Player: Close" case .audioPlayerPlay: "Audio Player: Play" case .audioPlayerPause: "Audio Player: Pause" case .audioPlayerPrevious: "Audio Player: Previous" case .audioPlayerNext: "Audio Player: Next" case .buttonDownload: "Button: Download" case .statisticsTime: "Time" case .statisticsElevationUp: "Elevation Up" case .statisticsElevationDown: "Elevation Down" case .statisticsDistance: "Distance" case .statisticsEnergy: "Energy / Calories" } } var svgString: String { icon.svgString } var id: String { icon.id } var usageString: String { icon.usageString } } extension PageIcon: Hashable { }