WalletColors.swift (3342B)
1 /* 2 * This file is part of GNU Taler, ©2022-25 Taler Systems S.A. 3 * See LICENSE.md 4 */ 5 /** 6 * @author Marc Stibane 7 */ 8 import SwiftUI 9 10 fileprivate let grouped = true 11 12 public struct WalletColors { 13 @AppStorage("minimalistic") var minimalistic: Bool = false 14 15 // let tint = Color(.tintColor) 16 let gray1 = Color(.systemGray) // uncompleted 17 let gray2 = Color(.systemGray2) // disabled Fore 18 let gray3 = Color(.systemGray3) 19 let gray4 = Color(.systemGray4) 20 let gray5 = Color(.systemGray5) 21 let gray6 = Color(.systemGray6) 22 let gray7 = grouped ? Color(.tertiarySystemGroupedBackground) 23 : Color(.tertiarySystemBackground) // enabled Back 24 let gray8 = grouped ? Color(.secondarySystemGroupedBackground) 25 : Color(.secondarySystemBackground) // disabled Back 26 27 let attention = Color.red // TODO: WalletColors().errorColor 28 let confirm = Color.yellow // TODO: WalletColors().warningColor 29 30 // TODO: In Japan, negative is blue, and positive is red 31 let positive = Color.green 32 let negative = Color.red 33 34 func buttonForeColor(pressed: Bool, 35 disabled: Bool, 36 prominent: Bool = false) -> Color { 37 disabled ? gray2 38 : !prominent ? talerColor 39 : pressed ? gray6 : Color.white 40 } 41 42 func buttonBackColor(pressed: Bool, 43 disabled: Bool, 44 prominent: Bool = false) -> Color { 45 disabled ? gray7 46 : prominent ? talerColor 47 : pressed ? gray4 : gray5 48 } 49 50 func secondary(_ scheme: ColorScheme, _ contrast: ColorSchemeContrast) -> Color { 51 return contrast == .increased ? .primary // WCAG AAA for any scheme 52 : minimalistic ? .secondary // not enough contrast 53 : scheme == .dark ? .secondary // WCAG AA for dark scheme 54 : Color(.darkGray) // WCAG AA for light scheme 55 } 56 57 var labelColor: Color { 58 Color(UIColor.label) 59 } 60 61 var backgroundColor: Color { 62 grouped ? Color(.systemGroupedBackground) 63 : Color(.systemBackground) 64 } 65 66 var secondaryBackground: Color { 67 Color(.secondarySystemGroupedBackground) 68 } 69 70 var sideBackground: Color { 71 gray6 72 } 73 74 func pickerSelected(_ scheme: ColorScheme, _ contrast: ColorSchemeContrast) -> Color { 75 return contrast == .increased ? (scheme == .dark ? gray3 : gray4) 76 : (scheme == .dark ? gray4 : gray5) 77 } 78 79 var pickerBackground: Color { 80 gray7 81 } 82 83 var fieldForeground: Color { // text color 84 Color.primary 85 } 86 87 var fieldBackground: Color { 88 gray8 89 } 90 91 var uncompletedColor: Color { 92 // used in TransactionRowView 93 gray1 94 } 95 96 var errorColor: Color { 97 Color("Error") 98 } 99 100 var talerColor: Color { 101 Color("Taler") 102 } 103 104 func pendingColor(_ incoming: Bool) -> Color { 105 incoming ? Color("PendingIncoming") 106 : Color("PendingOutgoing") 107 } 108 109 func transactionColor(_ incoming: Bool) -> Color { 110 incoming ? Color("Incoming") 111 : Color("Outgoing") 112 } 113 }