@@ -29,6 +29,14 @@ enum AppAppearancePreference: String, CaseIterable, Identifiable {
2929 }
3030 }
3131
32+ var detail : String {
33+ switch self {
34+ case . system: " Matches the system appearance. "
35+ case . light: " Always uses light appearance. "
36+ case . dark: " Always uses dark appearance. "
37+ }
38+ }
39+
3240 var colorScheme : ColorScheme ? {
3341 switch self {
3442 case . system: nil
@@ -47,36 +55,19 @@ enum AppAppearancePreference: String, CaseIterable, Identifiable {
4755}
4856
4957enum OpenClawBrand {
50- static let uiAccent = UIColor { traits in
51- traits. userInterfaceStyle == . dark
52- ? UIColor ( red: 198 / 255.0 , green: 62 / 255.0 , blue: 56 / 255.0 , alpha: 1 )
53- : UIColor ( red: 183 / 255.0 , green: 56 / 255.0 , blue: 51 / 255.0 , alpha: 1 )
54- }
58+ static let uiAccent = adaptiveUIColor ( light: ( 183 , 56 , 51 ) , dark: ( 198 , 62 , 56 ) )
59+ static let uiOK = adaptiveUIColor ( light: ( 19 , 122 , 62 ) , dark: ( 48 , 209 , 88 ) )
60+ static let uiWarn = adaptiveUIColor ( light: ( 154 , 87 , 0 ) , dark: ( 255 , 214 , 10 ) )
61+ static let uiInfo = adaptiveUIColor ( light: ( 0 , 91 , 196 ) , dark: ( 100 , 168 , 255 ) )
5562
5663 static let accent = Color ( uiColor: Self . uiAccent)
57- static let accentHot = Color ( uiColor: UIColor { traits in
58- traits. userInterfaceStyle == . dark
59- ? UIColor ( red: 232 / 255.0 , green: 92 / 255.0 , blue: 86 / 255.0 , alpha: 1 )
60- : UIColor ( red: 204 / 255.0 , green: 75 / 255.0 , blue: 69 / 255.0 , alpha: 1 )
61- } )
62- static let danger = Color ( uiColor: UIColor { traits in
63- traits. userInterfaceStyle == . dark
64- ? UIColor ( red: 252 / 255.0 , green: 165 / 255.0 , blue: 165 / 255.0 , alpha: 1 )
65- : UIColor ( red: 185 / 255.0 , green: 28 / 255.0 , blue: 28 / 255.0 , alpha: 1 )
66- } )
67- static let ok = Color ( red: 34 / 255.0 , green: 197 / 255.0 , blue: 94 / 255.0 )
68- static let warn = Color ( red: 245 / 255.0 , green: 158 / 255.0 , blue: 11 / 255.0 )
69- static let info = Color ( red: 0 / 255.0 , green: 122 / 255.0 , blue: 255 / 255.0 )
70- static let graphite = Color ( uiColor: UIColor { traits in
71- traits. userInterfaceStyle == . dark
72- ? UIColor ( red: 20 / 255.0 , green: 22 / 255.0 , blue: 24 / 255.0 , alpha: 1 )
73- : UIColor ( red: 246 / 255.0 , green: 247 / 255.0 , blue: 249 / 255.0 , alpha: 1 )
74- } )
75- static let graphiteElevated = Color ( uiColor: UIColor { traits in
76- traits. userInterfaceStyle == . dark
77- ? UIColor ( red: 34 / 255.0 , green: 36 / 255.0 , blue: 39 / 255.0 , alpha: 1 )
78- : UIColor . white
79- } )
64+ static let accentHot = Color ( uiColor: adaptiveUIColor ( light: ( 204 , 75 , 69 ) , dark: ( 232 , 92 , 86 ) ) )
65+ static let danger = Color ( uiColor: adaptiveUIColor ( light: ( 185 , 28 , 28 ) , dark: ( 252 , 165 , 165 ) ) )
66+ static let ok = Color ( uiColor: Self . uiOK)
67+ static let warn = Color ( uiColor: Self . uiWarn)
68+ static let info = Color ( uiColor: Self . uiInfo)
69+ static let graphite = Color ( uiColor: adaptiveUIColor ( light: ( 246 , 247 , 249 ) , dark: ( 20 , 22 , 24 ) ) )
70+ static let graphiteElevated = Color ( uiColor: adaptiveUIColor ( light: ( 255 , 255 , 255 ) , dark: ( 34 , 36 , 39 ) ) )
8071
8172 static var sheetBackground : LinearGradient {
8273 LinearGradient (
@@ -88,6 +79,20 @@ enum OpenClawBrand {
8879 startPoint: . topLeading,
8980 endPoint: . bottomTrailing)
9081 }
82+
83+ private static func adaptiveUIColor(
84+ light: ( red: CGFloat , green: CGFloat , blue: CGFloat ) ,
85+ dark: ( red: CGFloat , green: CGFloat , blue: CGFloat ) ) -> UIColor
86+ {
87+ UIColor { traits in
88+ let components = traits. userInterfaceStyle == . dark ? dark : light
89+ return UIColor (
90+ red: components. red / 255 ,
91+ green: components. green / 255 ,
92+ blue: components. blue / 255 ,
93+ alpha: 1 )
94+ }
95+ }
9196}
9297
9398extension View {
0 commit comments