WalletColors.swift (3688B)
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 scheme: ColorScheme, 37 contrast: ColorSchemeContrast, 38 prominent: Bool = false) -> Color { 39 disabled ? gray2 40 : !prominent ? talerColor 41 : scheme == .dark ? primary(contrast) 42 : pressed ? gray6 : Color.white 43 } 44 45 func buttonBackColor(pressed: Bool, 46 disabled: Bool, 47 prominent: Bool = false) -> Color { 48 disabled ? gray7 49 : prominent ? talerColor 50 : pressed ? gray4 : gray5 51 } 52 53 func primary(_ contrast: ColorSchemeContrast = .standard) -> Color { 54 return contrast == .increased ? .primary 55 : Color("Primary") 56 } 57 58 func secondary(_ scheme: ColorScheme, _ contrast: ColorSchemeContrast = .standard) -> Color { 59 return contrast == .increased ? .primary // WCAG AAA for any scheme 60 : minimalistic ? .secondary // not enough contrast 61 : scheme == .dark ? .secondary // WCAG AA for dark scheme 62 : Color(.darkGray) // WCAG AA for light scheme 63 } 64 65 var labelColor: Color { 66 Color(UIColor.label) 67 } 68 69 var backgroundColor: Color { 70 grouped ? Color(.systemGroupedBackground) 71 : Color(.systemBackground) 72 } 73 74 var secondaryBackground: Color { 75 Color(.secondarySystemGroupedBackground) 76 } 77 78 var sideBackground: Color { 79 gray6 80 } 81 82 func pickerSelected(_ scheme: ColorScheme, _ contrast: ColorSchemeContrast) -> Color { 83 return contrast == .increased ? (scheme == .dark ? gray3 : gray4) 84 : (scheme == .dark ? gray4 : gray5) 85 } 86 87 var pickerBackground: Color { 88 gray7 89 } 90 91 var fieldForeground: Color { // text color 92 Color.primary 93 } 94 95 var fieldBackground: Color { 96 gray8 97 } 98 99 var uncompletedColor: Color { 100 // used in TransactionRowView 101 gray1 102 } 103 104 var errorColor: Color { 105 Color("Error") 106 } 107 108 var talerColor: Color { 109 Color("Taler") 110 } 111 112 func pendingColor(_ incoming: Bool) -> Color { 113 incoming ? Color("PendingIncoming") 114 : Color("PendingOutgoing") 115 } 116 117 func transactionColor(_ incoming: Bool) -> Color { 118 incoming ? Color("Incoming") 119 : Color("Outgoing") 120 } 121 }