@@ -75,8 +75,13 @@ private extension SettingsView {
7575 let icon : Icon ?
7676
7777 struct Icon : Hashable {
78+ enum IconResource : Equatable , Hashable {
79+ case system( _ name: String )
80+ case asset( _ name: String )
81+ }
82+
7883 let baseColor : Color
79- let icon : String
84+ let icon : IconResource
8085 }
8186
8287 enum Name : String {
@@ -110,27 +115,27 @@ private extension SettingsView {
110115 }
111116 private static let pages : [ Page ] = [
112117 . init( . userSection, children: [
113- . init( . account, icon: . init( baseColor: . blue, icon: " person.fill " ) ) ,
114- . init( . profile, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
115- . init( . privacy, icon: . init( baseColor: . red, icon: " shield.lefthalf.filled " ) )
118+ . init( . account, icon: . init( baseColor: . blue, icon: . system ( " person.fill " ) ) ) ,
119+ . init( . profile, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
120+ . init( . privacy, icon: . init( baseColor: . red, icon: . system ( " shield.lefthalf.filled " ) ) )
116121 ] ) ,
117122 . init( . paymentSection, children: [
118- . init( . nitro, icon: . init( baseColor: . accentColor , icon: " person.crop.circle " ) ) ,
119- . init( . boost, icon: . init( baseColor: . green, icon: " person.crop.circle " ) ) ,
120- . init( . subscriptions, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
121- . init( . gift, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
122- . init( . billing, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) )
123+ . init( . nitro, icon: . init( baseColor: . gray , icon: . asset ( " NitroSubscriber " ) ) ) ,
124+ . init( . boost, icon: . init( baseColor: . green, icon: . system ( " person.crop.circle " ) ) ) ,
125+ . init( . subscriptions, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
126+ . init( . gift, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
127+ . init( . billing, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) )
123128 ] ) ,
124129 . init( . appSection, children: [
125- . init( . appearance, icon: . init( baseColor: . black, icon: " person.crop.circle " ) ) ,
126- . init( . accessibility, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
127- . init( . voiceVideo, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
128- . init( . textImages, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
129- . init( . notifs, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
130- . init( . keybinds, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
131- . init( . lang, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
132- . init( . streamer, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) ) ,
133- . init( . advanced, icon: . init( baseColor: . blue, icon: " person.crop.circle " ) )
130+ . init( . appearance, icon: . init( baseColor: . black, icon: . system ( " person.crop.circle " ) ) ) ,
131+ . init( . accessibility, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
132+ . init( . voiceVideo, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
133+ . init( . textImages, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
134+ . init( . notifs, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
135+ . init( . keybinds, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
136+ . init( . lang, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
137+ . init( . streamer, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) ) ,
138+ . init( . advanced, icon: . init( baseColor: . blue, icon: . system ( " person.crop.circle " ) ) )
134139 ] )
135140 ]
136141
@@ -156,10 +161,17 @@ private extension SettingsView {
156161 Text ( item. nameString)
157162 } icon: {
158163 if let icon = item. icon {
159- Image ( systemName: icon. icon)
160- . foregroundColor ( . primary)
161- . frame ( width: 20 , height: 20 )
162- . background ( RoundedRectangle ( cornerRadius: 5 , style: . continuous) . fill ( icon. baseColor. gradient) )
164+ Group {
165+ switch icon. icon {
166+ case . system( let name) :
167+ Image ( systemName: name)
168+ case . asset( let name) :
169+ Image ( name) . resizable ( ) . padding ( 2 )
170+ }
171+ }
172+ . foregroundColor ( . primary)
173+ . frame ( width: 20 , height: 20 )
174+ . background ( RoundedRectangle ( cornerRadius: 5 , style: . continuous) . fill ( icon. baseColor. gradient) )
163175 } else {
164176 EmptyView ( )
165177 }
0 commit comments