import Foundation
import SwiftUI

public extension Image {
    enum RenderingAsset {
        public static let watermarkStillV1: CIImage = .loadFromBundle("watermark_still_v1")!
    }

    enum Assets {
        public static let audioIcons = Image(.audioIcons)
        public static let createTabIconBackground = Image(.createTabIconBackground)
        public static let createTabIconBackgroundV4 = Image(.createTabIconBackgroundV4)
        public static let createButtonBackgroundBlue = Image(.createButtonBackgroundBlue)
        public static let defaultBlue = Image(.defaultBlue)
        public static let defaultOrange = Image(.defaultOrange)
        public static let defaultPink = Image(.defaultPink)
        public static let launchScreen = Image(.launchScreen)
        public static let launchScreenStaff = Image("launchScreen-Staff", bundle: .module)
        public static let likedSongsV2 = Image(.likedSongsV2)
        public static let mySongs = Image(.mySongs)
        public static let noise = Image(.noise)
        public static let omniplayerBackground = Image(.omniplayerBackground)
        public static let playlists = Image(.playlists)
        public static let rateBackground = Image(.rateBackground)
        public static let inviteFriendsBannerBackground = Image(.inviteFriendsBannerBackground)
        public static let contactSyncBannerBackground = Image(.contactSyncBannerBackground)
        public static let shutterButton = Image(.shutterButton)
        public static let inviteShareCardBackground = Image(.inviteShareCardBackground)
        public static let noMediaPermissionIcon = Image(.noMediaPermissionIcon)
        public static let partyPeople1 = Image(.partyPeople1)
        public static let partyPeople2 = Image(.partyPeople2)
        public static let partyPeople3 = Image(.partyPeople3)
        public static let gestureDownArrowUp = Image(.gestureDownArrowUp)
        public static let gestureDownArrowDown = Image(.gestureDownArrowDown)
        public static let gestureDownHand = Image(.gestureDownHand)
        public static let gradient = Image(.gradient)
        public static let songsEmptyState = Image(.songsEmptyState)
        public static let songsEmptyState2 = Image(.songsEmptyState2)
        public static let timbalandAvatar = Image(.timbalandAvatar)
        public static let timbalandAnnouncement = Image(.timbalandAnnouncement)
        public static let timelineBackground = Image(.timelineBackground)
        public static let featuredArtistBannerBackground = Image(.featuredArtistBannerBackground)
        public static let createFirstSongDj = Image(.createFirstSongDj)
        public static let createFirstSongSing = Image(.createFirstSongSing)
        public static let createFirstSongPhone = Image(.createFirstSongPhone)
        public static let logoCircle = Image(.logoCircle)
        public static let onboardingNotificationIcon = Image(.onboardingNotificationIcon)
        public static let madlibsOnboardingNotificationIcon = Image(.madlibsOnboardingNotificationIcon)
        public static let v3Dot5Large = Image(.v3Dot5Large)
        public static let v4IsHere = Image(.v4IsHere)
        public static let v4CreateWith = Image(.v4CreateWith)
        public static let v4HitYourLimit = Image(.v4HitYourLimit)
        public static let v4Logo = Image(.v4Logo)
        public static let v4RemakeYourSongs = Image(.v4RemakeYourSongs)
        public static let v4StarDot = Image(.v4StarDot)
        public static let newFeatureBackground = Image(.newFeatureBackground)
        public static let discountPercentage = Image(.discountPercentage)
        public static let shareAssetMaskOverlay = Image(.shareAssetMaskOverlay)
        public static let blank = Image(.blank)
        public static let hooksFeedOnboardingVideoThumbnail = Image(.hooksFeedOnboardingVideoThumbnail)

        public static func named(_ name: String) -> Image { Image(name, bundle: .module) }
    }
}

public extension Image {
    enum Icon {
        public static let account = Image(.account)
        public static let alert = Image(.alert)
        public static let appearance = Image(.appearance)
        public static let apple = Image(.apple)
        public static let appIcon = Image(.appIcon)
        public static let arrowDown = Image(.arrowDown)
        public static let arrowLeft = Image(.arrowLeft)
        public static let arrowRight = Image(.arrowRight)
        public static let arrowRightV2 = Image(.arrowRightV2)
        public static let arrowUp = Image(.arrowUp)
        public static let at = Image(.at)
        public static let backButtonV1 = Image(.backButtonV1)
        public static let backCamera = Image(.backCamera)
        public static let bars = Image(.bars)
        public static let bounceArrow = Image(.bounceArrow)
        public static let camera = Image(.camera)
        public static let cancel = Image(.cancel)
        public static let caretRight = Image(.caretRight)
        public static let checkCircle = Image(.checkCircle)
        public static let checkV1 = Image(.checkV1)
        public static let chevronDown = Image(.chevronDown)
        public static let chevronLeft = Image(.chevronLeft)
        public static let circleCheck = Image(.circleCheck)
        public static let close = Image(.close)
        public static let cog = Image(.cog)
        public static let comment = Image(.comment)
        public static let commentBubble = Image(.commentBubble)
        public static let commentBubbleMore = Image(.commentBubbleMore)
        public static let copy = Image(.copy)
        public static let cover = Image(.cover)
        public static let coverCreate = Image(.coverCreate)
        public static let create = Image(.create)
        public static let createTabIcon = Image(.createTabIcon)
        public static let createTabIconV2 = Image(.createTabIconV2)
        public static let dice = Image(.dice)
        public static let discord = Image(.discord)
        public static let downloadRounded = Image(.downloadRounded)
        public static let downloadTray = Image(.downloadTray)
        public static let edit = Image(.edit)
        public static let editV2 = Image(.editV2)
        public static let editV3 = Image(.editV3)
        public static let editForm = Image(.editForm)
        public static let editSparkle = Image(.editSparkle)
        public static let exploreTabIcon = Image(.exploreTabIcon)
        public static let extend = Image(.extend)
        public static let facebookShare = Image(.facebookShare)
        public static let filter = Image(.filter)
        public static let flag = Image(.flag)
        public static let flagV2 = Image(.flagV2)
        public static let flip = Image(.flip)
        public static let flipCameraV2 = Image(.flipCameraV2)
        public static let galleryV2 = Image(.galleryV2)
        public static let follow = Image(.follow)
        public static let gallery = Image(.gallery)
        public static let genres = Image(.genres)
        public static let globe = Image(.globe)
        public static let globeSlash = Image(.globeSlash)
        public static let google = Image(.google)
        public static let handHorns = Image(.handHorns)
        public static let heart = Image(.heart)
        public static let heartFilled = Image(.heartFilled)
        public static let homeTabIcon = Image(.homeTabIcon)
        public static let homeTabIconSelected = Image(.homeTabIconSelected)
        public static let hooksTabIcon = Image(.hooksTabIcon)
        public static let images = Image(.images)
        public static let imageToSong = Image(.imageToSong)
        public static let information = Image(.information)
        public static let informationThick = Image(.informationThick)
        public static let instaShare = Image(.instaShare)
        public static let libraryTabIcon = Image(.libraryTabIcon)
        public static let lightning = Image(.lightning)
        public static let linkShare = Image(.linkShare)
        public static let lockKeyhole = Image(.lockKeyhole)
        public static let lockV1 = Image(.lockV1)
        public static let logoV1 = Image(.logoV1)
        public static let logout = Image(.logout)
        public static let madeWithSunoLogo = Image(.madeWithSunoLogo)
        public static let microphone = Image(.microphone)
        public static let microsoft = Image(.microsoft)
        public static let minus = Image(.minus)
        public static let moreHorizontal = Image(.moreHorizontal)
        public static let moreLarge = Image(.moreLarge)
        public static let moreVertical = Image(.moreVertical)
        public static let musicFolder = Image(.musicFolder)
        public static let musicNote = Image(.musicNote)
        public static let musicNoteSlash = Image(.musicNoteSlash)
        public static let nextTrack = Image(.next)
        public static let note = Image(.note)
        public static let offline = Image(.offline)
        public static let pause = Image(.pause)
        public static let penField = Image(.penField)
        public static let phone = Image(.phone)
        public static let playFilled = Image(.playFilled)
        public static let plus = Image(.plus)
        public static let previousTrack = Image(.previous)
        public static let restart = Image(.restart)
        public static let refresh = Image(.refresh)
        public static let reuse = Image(.reuse)
        public static let rewind = Image(.rewind)
        public static let playlist = Image(.playlist)
        public static let scissors = Image(.scissors)
        public static let search = Image(.search)
        public static let share = Image(.share)
        public static let shareOverlayStyleIconA = Image(.shareOverlayStyleIconA)
        public static let shareOverlayStyleIconB = Image(.shareOverlayStyleIconB)
        public static let shareOverlayStyleIconD = Image(.shareOverlayStyleIconD)
        public static let shareOverlayStyleIconE = Image(.shareOverlayStyleIconE)
        public static let shareOverlayStyleIconF = Image(.shareOverlayStyleIconF)
        public static let shareOverlayStyleIconG = Image(.shareOverlayStyleIconG)
        public static let shareOverlayStyleIconH = Image(.shareOverlayStyleIconH)
        public static let shareOverlayStyleIconI = Image(.shareOverlayStyleIconI)
        public static let skip = Image(.skip)
        public static let sliders = Image(.sliders)
        public static let success = Image(.success)
        public static let sort = Image(.sort)
        public static let thumbsDown = Image(.thumbsDown)
        public static let thumbsDown24V1 = Image(.thumbsDown24V1)
        public static let thumbtack = Image(.thumbtack)
        public static let thumbsUp24V1 = Image(.thumbsUp24V1)
        public static let thumbsUpFilled15V1 = Image(.thumbsUpFilled15V1)
        public static let thumbsUpV1 = Image(.thumbsUpV1)
        public static let thumbsUp = Image(.thumbsUp)
        public static let thumbsUpPlaylistAsset = Image(.thumbsUpPlaylistAsset)
        public static let thumbsUpV2 = Image(.thumbsUpV2)
        public static let tiktokShare = Image(.tiktokShare)
        public static let timer = Image(.timer)
        public static let timerSnooze = Image(.timerSnooze)
        public static let trashV1 = Image(.trashV1)
        public static let upload = Image(.upload)
        public static let userFilled = Image(.userFilled)
        public static let videoCamera = Image(.videoCamera)
        public static let videoCover = Image(.videoCover)
        public static let videos = Image(.videos)
        public static let videoToSong = Image(.videoToSong)
        public static let volumeMute = Image(.volumeMute)
        public static let volumeOff = Image(.volumeOff)
        public static let volumeOn = Image(.volumeOn)
        public static let warning = Image(.warning)
        public static let watch = Image(.watch)
        public static let whatsAppShare = Image(.whatsAppShare)
        public static let xShare = Image(.xShare)
        public static let notifications = Image(.notifications)
        public static let userSearch = Image(.userSearch)
        public static let addPhone = Image(.addPhone)
        public static let audioVocals = Image(.audioVocals)
        public static let audioSeconds = Image(.audioSeconds)
        public static let audioOriginal = Image(.audioOriginal)
        public static let radioButtonOutline = Image(.radioButtonOutline)
        public static let remaster = Image(.remaster)
        public static let reply = Image(.reply)
        public static let caption = Image(.caption)
        public static let textCreate = Image(.textCreate)
        public static let cameraCreate = Image(.cameraCreate)
        public static let microphoneCreate = Image(.microphoneCreate)
        public static let sparkles = Image(.sparkles)
        public static let lyrics = Image(.lyrics)
        public static let addMusic = Image(.addMusic)
        public static let excludeMusic = Image(.excludeMusic)
        public static let star = Image(.star)
        public static let eye = Image(.eye)
        public static let expand = Image(.expand)
        public static let promptStar = Image(.promptStar)
        public static let trashV2 = Image(.trashV2)
        public static let cogV2 = Image(.cogV2)
        public static let remix = Image(.remix)
        public static let unpublish = Image(.unpublish)
        public static let helpFilled = Image(.helpFilled)
        public static let linkExternal = Image(.linkExternal)
        public static let editUndo = Image(.editUndo)
        public static let lockNew = Image(.lockNew)
    }

    enum ShareIcon {
        public static let facebook = Image(.facebook)
        public static let instagram = Image(.instagram)
        public static let messages = Image(.messages)
        public static let tiktok = Image(.tikTok)
        public static let whatsApp = Image(.whatsApp)
        public static let x = Image(.X)
        public static let playIcon = Image(.playIcon)
    }

    enum Omniplayer {
        public static let play = Image(.omniplayerPlay)
        public static let pause = Image(.omniplayerPause)
        public static let comment = Image(.omniplayerComment)
        public static let share = Image(.omniplayerShare)
        public static let more = Image(.omniplayerMore)
        public static let thumbsUp = Image(.omniplayerThumbsUp)
        public static let chevron = Image(.omniplayerChevron)
        public static let playCircleCutout = Image(.omniplayerPlayCircleCutout)
        public static let pauseCircleCutout = Image(.omniplayerPauseCircleCutout)
        public static let previousTrack = Image(.omniplayerPreviousTrack)
        public static let nextTrack = Image(.omniplayerNextTrack)
        public static let arrowRight = Image(.omniplayerArrowRight)
    }

    enum Library {
        public static let likedSongs = Image(.likedLibraryCover)
        public static let hooks = Image(.hooksLibraryCover)
        public static let playlists = Image(.playlistsLibraryCover)
    }
}

public extension UIImage {
    enum Icon {
        public static let notificationsTabIcon = UIImage(resource: .notificationsTabIcon)
        public static let notificationsTabIconSelected = UIImage(resource: .notificationsTabIconSelected)
    }
}
