1
+import 'package:cake_wallet/themes/extensions/account_list_theme.dart';
2
+import 'package:cake_wallet/themes/extensions/address_theme.dart';
3
+import 'package:cake_wallet/themes/extensions/alert_theme.dart';
4
+import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
5
+import 'package:cake_wallet/themes/extensions/cake_scrollbar_theme.dart';
6
+import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
7
+import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
8
+import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
9
+import 'package:cake_wallet/themes/extensions/filter_theme.dart';
10
+import 'package:cake_wallet/themes/extensions/indicator_dot_theme.dart';
11
+import 'package:cake_wallet/themes/extensions/info_theme.dart';
12
+import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
13
+import 'package:cake_wallet/themes/extensions/menu_theme.dart';
14
+import 'package:cake_wallet/themes/extensions/new_wallet_theme.dart';
15
+import 'package:cake_wallet/themes/extensions/order_theme.dart';
16
+import 'package:cake_wallet/themes/extensions/picker_theme.dart';
17
+import 'package:cake_wallet/themes/extensions/pin_code_theme.dart';
18
+import 'package:cake_wallet/themes/extensions/placeholder_theme.dart';
19
+import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
20
+import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
21
+import 'package:cake_wallet/themes/extensions/seed_widget_theme.dart';
22
+import 'package:cake_wallet/themes/extensions/send_page_theme.dart';
23
+import 'package:cake_wallet/themes/extensions/support_page_theme.dart';
24
+import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
25
+import 'package:cake_wallet/themes/extensions/transaction_trade_theme.dart';
26
+import 'package:cake_wallet/themes/extensions/wallet_list_theme.dart';
27
import 'package:cake_wallet/themes/theme_base.dart';
28
import 'package:cake_wallet/generated/i18n.dart';
29
import 'package:cake_wallet/palette.dart';
34
35
@override
36
String get title => S.current.light_theme;
11
-
37
@override
38
ThemeType get type => ThemeType.light;
39
+ @override
40
+ Brightness get brightness => Brightness.light;
41
+ @override
42
+ Color get backgroundColor => Colors.white;
43
+ @override
44
+ Color get primaryColor => Palette.protectiveBlue;
45
+ @override
46
+ Color get primaryTextColor => Palette.darkBlueCraiola;
47
+ @override
48
+ Color get containerColor => Palette.blueAlice;
49
+ @override
50
+ Color get dialogBackgroundColor => Colors.white;
51
15
- ThemeData theme = ThemeData(
16
- fontFamily: 'Lato',
17
- brightness: Brightness.light,
18
- scaffoldBackgroundColor: Colors.white, // second gradient color
19
- primaryColor: Colors.white, // third gradient color
20
- indicatorColor:
21
- PaletteDark.darkCyanBlue.withOpacity(0.67), // page indicator
22
- hoverColor: Palette.darkBlueCraiola, // amount hint text (receive page)
23
- dividerColor: Palette.paleBlue,
24
- hintColor: Palette.gray,
25
- textTheme: TextTheme(
26
- // title -> titleLarge
27
- titleLarge: TextStyle(
28
- color: Palette.darkBlueCraiola, // sync_indicator text
29
- backgroundColor: Palette.blueAlice, // synced sync_indicator
30
- decorationColor: Palette.blueAlice.withOpacity(0.75), // not synced sync_indicator
31
- ),
32
- bodySmall: TextStyle(
33
- color: Palette.shineOrange, // not synced light
34
- decorationColor: PaletteDark.wildBlue, // filter icon
35
- ),
36
- labelSmall: TextStyle(
37
- color: Palette.blueAlice, // filter button
38
- backgroundColor: PaletteDark.darkCyanBlue, // date section row
39
- decorationColor:
40
- Palette.blueAlice // icons (transaction and trade rows)
41
- ),
42
- // subhead -> titleMedium
43
- titleMedium: TextStyle(
44
- color: Palette.blueAlice, // address button border
45
- decorationColor: PaletteDark.lightBlueGrey, // copy button (qr widget)
46
- ),
47
- // headline -> headlineSmall
48
- headlineSmall: TextStyle(
49
- color: Colors.white, // qr code
50
- decorationColor: Palette.darkBlueCraiola, // bottom border of amount (receive page)
51
- ),
52
- // display1 -> headlineMedium
53
- headlineMedium: TextStyle(
54
- color: PaletteDark.lightBlueGrey, // icons color (receive page)
55
- decorationColor: Palette.moderateLavender, // icons background (receive page)
56
- ),
57
- // display2 -> headldisplaySmalline3
58
- displaySmall: TextStyle(
59
- color:
60
- Palette.darkBlueCraiola, // text color of tiles (receive page)
61
- decorationColor:
62
- Palette.blueAlice // background of tiles (receive page)
63
- ),
64
- // display3 -> displayMedium
65
- displayMedium: TextStyle(
66
- color: Colors.white, // text color of current tile (receive page),
67
- //decorationColor: Palette.blueCraiola // background of current tile (receive page)
68
- decorationColor: Palette
69
- .blueCraiola // background of current tile (receive page)
70
- ),
71
- // display4 -> displayLarge
72
- displayLarge: TextStyle(
73
- color: Palette.violetBlue, // text color of tiles (account list)
74
- decorationColor:
75
- Colors.white // background of tiles (account list)
76
- ),
77
- // subtitle -> titleSmall
78
- titleSmall: TextStyle(
79
- color: Palette
80
- .protectiveBlue, // text color of current tile (account list)
81
- decorationColor:
82
- Colors.white // background of current tile (account list)
83
- ),
84
- // body -> bodyMedium
85
- bodyMedium: TextStyle(
86
- color: Palette.moderatePurpleBlue, // scrollbar thumb
87
- decorationColor: Palette.periwinkleCraiola // scrollbar background
88
- ),
89
- // body2 -> bodyLarge
90
- bodyLarge: TextStyle(
91
- color: Palette.moderateLavender, // menu header
92
- decorationColor: Colors.white, // menu background
93
- )
94
- ),
95
- scrollbarTheme: ScrollbarThemeData(
96
- thumbColor: MaterialStateProperty.all(Palette.moderatePurpleBlue),
97
- trackColor: MaterialStateProperty.all(Palette.periwinkleCraiola),
98
- radius: Radius.circular(3),
99
- thickness: MaterialStateProperty.all(6),
100
- thumbVisibility: MaterialStateProperty.all(true),
101
- crossAxisMargin: 6,
102
- ),
103
- primaryTextTheme: TextTheme(
104
- // title -> titleLarge
105
- titleLarge: TextStyle(
106
- color: Palette.darkBlueCraiola, // title color
107
- backgroundColor: Palette.wildPeriwinkle // textfield underline
108
- ),
109
- bodySmall: TextStyle(
110
- color: PaletteDark.pigeonBlue, // secondary text
111
- decorationColor: Palette.wildLavender // menu divider
112
- ),
113
- labelSmall: TextStyle(
114
- color: Palette.darkGray, // transaction/trade details titles
115
- decorationColor: PaletteDark.darkCyanBlue, // placeholder
116
- ),
117
- // subhead -> titleMedium
118
- titleMedium: TextStyle(
119
- color: Palette.blueCraiola, // first gradient color (send page)
120
- decorationColor:
121
- Palette.blueGreyCraiola // second gradient color (send page)
122
- ),
123
- // headline -> headlineSmall
124
- headlineSmall: TextStyle(
125
- color: Colors.white
126
- .withOpacity(0.5), // text field border color (send page)
127
- decorationColor: Colors.white
128
- .withOpacity(0.5), // text field hint color (send page)
129
- ),
130
- // display1 -> headlineMedium
131
- headlineMedium: TextStyle(
132
- color: Colors.white
133
- .withOpacity(0.2), // text field button color (send page)
134
- decorationColor:
135
- Colors.white // text field button icon color (send page)
136
- ),
137
- // display2 -> displaySmall
138
- displaySmall: TextStyle(
139
- color: Colors.white.withOpacity(0.5), // estimated fee (send page)
140
- backgroundColor: PaletteDark.darkCyanBlue
141
- .withOpacity(0.67), // dot color for indicator on send page
142
- decorationColor:
143
- Palette.moderateLavender // template dotted border (send page)
144
- ),
145
- // display3 -> displayMedium
146
- displayMedium: TextStyle(
147
- color: Palette.darkBlueCraiola, // template new text (send page)
148
- backgroundColor: PaletteDark
149
- .darkNightBlue, // active dot color for indicator on send page
150
- decorationColor:
151
- Palette.blueAlice // template background color (send page)
152
- ),
153
- // display4 -> displayLarge
154
- displayLarge: TextStyle(
155
- color: Palette.darkBlueCraiola, // template title (send page)
156
- backgroundColor:
157
- Colors.black, // icon color on order row (moonpay)
158
- decorationColor:
159
- Palette.niagara // receive amount text (exchange page)
160
- ),
161
- // subtitle -> titleSmall
162
- titleSmall: TextStyle(
163
- color: Palette
164
- .blueCraiola, // first gradient color top panel (exchange page)
165
- decorationColor: Palette
166
- .blueGreyCraiola // second gradient color top panel (exchange page)
167
- ),
168
- // body -> bodyMedium
169
- bodyMedium: TextStyle(
170
- color: Palette.blueCraiola.withOpacity(
171
- 0.7), // first gradient color bottom panel (exchange page)
172
- decorationColor: Palette.blueGreyCraiola.withOpacity(
173
- 0.7), // second gradient color bottom panel (exchange page)
174
- backgroundColor: Palette.protectiveBlue // alert right button text
175
- ),
176
- // body2 -> bodyLarge
177
- bodyLarge: TextStyle(
178
- color: Colors.white.withOpacity(
179
- 0.5), // text field border on top panel (exchange page)
180
- decorationColor: Colors.white.withOpacity(
181
- 0.5), // text field border on bottom panel (exchange page)
182
- backgroundColor: Palette.brightOrange // alert left button text
183
- )
184
- ),
185
- focusColor: Colors.white.withOpacity(0.2), // text field button (exchange page)
186
- accentTextTheme: TextTheme(
187
- // title -> headlititleLargene6
188
- titleLarge: TextStyle(
189
- color: Colors.white, // picker background
190
- backgroundColor: Palette.periwinkleCraiola, // picker divider
191
- decorationColor: Colors.white // dialog background
192
- ),
193
- bodySmall: TextStyle(
194
- color: Palette.blueAlice, // container (confirm exchange)
195
- backgroundColor: Palette.blueAlice, // button background (confirm exchange)
196
- decorationColor: Palette.darkBlueCraiola, // text color (information page)
197
- ),
198
- // subtitle -> titleSmall
199
- titleSmall: TextStyle(
200
- color: Palette.darkBlueCraiola, // QR code (exchange trade page)
201
- backgroundColor:
202
- Palette.wildPeriwinkle, // divider (exchange trade page)
203
- decorationColor: Palette
204
- .protectiveBlue // crete new wallet button background (wallet list page)
205
- ),
206
- // headline -> headlineSmall
207
- headlineSmall: TextStyle(
208
- color: Palette
209
- .moderateLavender, // first gradient color of wallet action buttons (wallet list page)
210
- backgroundColor: Palette
211
- .moderateLavender, // second gradient color of wallet action buttons (wallet list page)
212
- decorationColor: Colors
213
- .white // restore wallet button text color (wallet list page)
214
- ),
215
- // subhead -> titleMedium
216
- titleMedium: TextStyle(
217
- color: Palette.darkGray, // titles color (filter widget)
218
- backgroundColor: Palette.periwinkle, // divider color (filter widget)
219
- decorationColor: Colors.white // checkbox background (filter widget)
220
- ),
221
- labelSmall: TextStyle(
222
- color: Palette.wildPeriwinkle, // checkbox bounds (filter widget)
223
- decorationColor: Colors.white, // menu subname
224
- ),
225
- // display1 -> headlineMedium
226
- headlineMedium: TextStyle(
227
- color: Palette.blueCraiola, // first gradient color (menu header)
228
- decorationColor: Palette.blueGreyCraiola, // second gradient color(menu header)
229
- backgroundColor: PaletteDark.darkNightBlue // active dot color
230
- ),
231
- // display2 -> displaySmall
232
- displaySmall: TextStyle(
233
- color:
234
- Palette.shadowWhite, // action button color (address text field)
235
- decorationColor: Palette.darkGray, // hint text (seed widget)
236
- backgroundColor: Palette.darkBlueCraiola
237
- .withOpacity(0.67) // text on balance page
238
- ),
239
- // display3 -> displayMedium
240
- displayMedium: TextStyle(
241
- color: Palette.darkGray, // hint text (new wallet page)
242
- decorationColor:
243
- Palette.periwinkleCraiola, // underline (new wallet page)
244
- backgroundColor:
245
- Palette.darkBlueCraiola // menu, icons, balance (dashboard page)
246
- ),
247
- // display4 -> displayLarge
248
- displayLarge: TextStyle(
249
- color: Palette.darkGray, // switch background (settings page)
250
- backgroundColor:
251
- Colors.black, // icon color on support page (moonpay, github)
252
- decorationColor:
253
- Colors.white.withOpacity(0.4) // hint text (exchange page)
254
- ),
255
- // body -> bodyMedium
256
- bodyMedium: TextStyle(
257
- color: Palette.darkGray, // indicators (PIN code)
258
- decorationColor: Palette.darkGray, // switch (PIN code)
259
- backgroundColor: Colors.white // alert right button
260
- ),
261
- // body2 -> bodyLarge
262
- bodyLarge: TextStyle(
263
- color: Palette.protectiveBlue, // primary buttons
264
- decorationColor: Colors.white, // alert left button,
265
- backgroundColor: Palette.dullGray // keyboard bar color
266
- ),
267
- ),
268
- cardColor: Palette.protectiveBlue // bottom button (action list)
269
- );
52
+ @override
53
+ CakeScrollbarTheme get scrollbarTheme => CakeScrollbarTheme(
54
+ thumbColor: Palette.moderatePurpleBlue,
55
+ trackColor: Palette.periwinkleCraiola);
56
+
57
+ @override
58
+ SyncIndicatorTheme get syncIndicatorStyle => SyncIndicatorTheme(
59
+ textColor: Palette.darkBlueCraiola,
60
+ syncedBackgroundColor: Palette.blueAlice,
61
+ notSyncedIconColor: Palette.shineOrange,
62
+ notSyncedBackgroundColor: Palette.blueAlice.withOpacity(0.75));
63
+
64
+ @override
65
+ KeyboardTheme get keyboardTheme =>
66
+ KeyboardTheme(keyboardBarColor: Palette.dullGray);
67
+
68
+ @override
69
+ PinCodeTheme get pinCodeTheme => PinCodeTheme(
70
+ indicatorsColor: Palette.darkGray, switchColor: Palette.darkGray);
71
+
72
+ @override
73
+ SupportPageTheme get supportPageTheme =>
74
+ SupportPageTheme(iconColor: Colors.black);
75
+
76
+ @override
77
+ ExchangePageTheme get exchangePageTheme => ExchangePageTheme(
78
+ hintTextColor: Colors.white.withOpacity(0.4),
79
+ dividerCodeColor: Palette.wildPeriwinkle,
80
+ qrCodeColor: primaryTextColor,
81
+ buttonBackgroundColor: containerColor,
82
+ textFieldButtonColor: Colors.white.withOpacity(0.2),
83
+ textFieldBorderBottomPanelColor: Colors.white.withOpacity(0.5),
84
+ textFieldBorderTopPanelColor: Colors.white.withOpacity(0.5),
85
+ secondGradientBottomPanelColor: Palette.blueGreyCraiola.withOpacity(0.7),
86
+ firstGradientBottomPanelColor: Palette.blueCraiola.withOpacity(0.7),
87
+ secondGradientTopPanelColor: Palette.blueGreyCraiola,
88
+ firstGradientTopPanelColor: Palette.blueCraiola,
89
+ receiveAmountColor: Palette.niagara);
90
+
91
+ @override
92
+ NewWalletTheme get newWalletTheme => NewWalletTheme(
93
+ hintTextColor: Palette.darkGray,
94
+ underlineColor: Palette.periwinkleCraiola);
95
+
96
+ @override
97
+ AddressTheme get addressTheme =>
98
+ AddressTheme(actionButtonColor: Palette.shadowWhite);
99
+
100
+ @override
101
+ DashboardPageTheme get dashboardPageTheme =>
102
+ super.dashboardPageTheme.copyWith(
103
+ cardTextColor: super.dashboardPageTheme.textColor,
104
+ indicatorDotTheme: IndicatorDotTheme(
105
+ indicatorColor: PaletteDark.darkCyanBlue.withOpacity(0.67),
106
+ activeIndicatorColor: PaletteDark.darkNightBlue));
107
+
108
+ @override
109
+ BalancePageTheme get balancePageTheme => BalancePageTheme(
110
+ textColor: dashboardPageTheme.textColor,
111
+ labelTextColor: Palette.darkBlueCraiola.withOpacity(0.67));
112
+
113
+ @override
114
+ CakeMenuTheme get menuTheme => CakeMenuTheme(
115
+ headerFirstGradientColor: Palette.blueCraiola,
116
+ headerSecondGradientColor: Palette.blueGreyCraiola,
117
+ backgroundColor: Colors.white,
118
+ subnameTextColor: Colors.white,
119
+ dividerColor: Palette.wildLavender,
120
+ iconColor: Colors.white,
121
+ settingTitleColor: receivePageTheme.tilesTextColor,
122
+ settingActionsIconColor: Palette.gray);
123
124
@override
272
- ThemeData get themeData => theme.copyWith(
273
- colorScheme: theme.colorScheme
274
- .copyWith(background: Colors.white, secondary: Colors.white));
125
+ FilterTheme get filterTheme => FilterTheme(
126
+ checkboxFirstGradientColor: Palette.blueCraiola,
127
+ checkboxSecondGradientColor: Palette.blueGreyCraiola,
128
+ checkboxBoundsColor: Palette.wildPeriwinkle,
129
+ checkboxBackgroundColor: Colors.white,
130
+ titlesColor: Palette.darkGray,
131
+ buttonColor: Palette.blueAlice,
132
+ iconColor: PaletteDark.wildBlue);
133
+
134
+ @override
135
+ WalletListTheme get walletListTheme => WalletListTheme(
136
+ restoreWalletButtonTextColor: Colors.white,
137
+ createNewWalletButtonBackgroundColor: Palette.protectiveBlue);
138
+
139
+ @override
140
+ InfoTheme get infoTheme => InfoTheme(textColor: Palette.darkBlueCraiola);
141
+
142
+ @override
143
+ PickerTheme get pickerTheme => PickerTheme(
144
+ dividerColor: Palette.periwinkleCraiola,
145
+ searchTextColor: cakeTextTheme.textfieldUnderlineColor,
146
+ searchBackgroundFillColor: addressTheme.actionButtonColor);
147
+
148
+ @override
149
+ AlertTheme get alertTheme => AlertTheme(
150
+ backdropColor: PaletteDark.darkNightBlue.withOpacity(0.75),
151
+ leftButtonTextColor: Palette.brightOrange);
152
+
153
+ @override
154
+ OrderTheme get orderTheme => OrderTheme(iconColor: Colors.black);
155
+
156
+ @override
157
+ SendPageTheme get sendPageTheme => SendPageTheme(
158
+ templateTitleColor: Palette.darkBlueCraiola,
159
+ templateBackgroundColor: Palette.blueAlice,
160
+ templateNewTextColor: Palette.darkBlueCraiola,
161
+ templateDottedBorderColor: Palette.moderateLavender,
162
+ templateSelectedCurrencyBackgroundColor: Colors.white,
163
+ templateSelectedCurrencyTitleColor: primaryColor,
164
+ estimatedFeeColor: Colors.white.withOpacity(0.5),
165
+ textFieldButtonIconColor: Colors.white,
166
+ textFieldButtonColor: Colors.white.withOpacity(0.2),
167
+ textFieldHintColor: Colors.white.withOpacity(0.5),
168
+ textFieldBorderColor: Colors.white.withOpacity(0.5),
169
+ secondGradientColor: Palette.blueGreyCraiola,
170
+ firstGradientColor: Palette.blueCraiola,
171
+ indicatorDotColor: PaletteDark.darkCyanBlue.withOpacity(0.67));
172
+
173
+ @override
174
+ SeedWidgetTheme get seedWidgetTheme =>
175
+ SeedWidgetTheme(hintTextColor: Palette.darkGray);
176
+
177
+ @override
178
+ PlaceholderTheme get placeholderTheme =>
179
+ PlaceholderTheme(color: PaletteDark.darkCyanBlue);
180
+
181
+ @override
182
+ TransactionTradeTheme get transactionTradeTheme => TransactionTradeTheme(
183
+ detailsTitlesColor: Palette.darkGray, rowsColor: Palette.blueAlice);
184
+
185
+ @override
186
+ CakeTextTheme get cakeTextTheme => CakeTextTheme(
187
+ secondaryTextColor: PaletteDark.pigeonBlue,
188
+ textfieldUnderlineColor: Palette.wildPeriwinkle,
189
+ titleColor: Palette.violetBlue,
190
+ addressButtonBorderColor: Palette.blueAlice,
191
+ dateSectionRowColor: PaletteDark.darkCyanBlue);
192
+
193
+ @override
194
+ AccountListTheme get accountListTheme => AccountListTheme(
195
+ currentAccountBackgroundColor: dialogBackgroundColor,
196
+ currentAccountTextColor: primaryColor,
197
+ currentAccountAmountColor: receivePageTheme.iconsColor,
198
+ tilesBackgroundColor: Colors.white,
199
+ tilesAmountColor: receivePageTheme.iconsColor,
200
+ tilesTextColor: Palette.violetBlue);
201
+
202
+ @override
203
+ ReceivePageTheme get receivePageTheme => ReceivePageTheme(
204
+ currentTileBackgroundColor: Palette.blueCraiola,
205
+ currentTileTextColor: Colors.white,
206
+ tilesBackgroundColor: Palette.blueAlice,
207
+ tilesTextColor: Palette.darkBlueCraiola,
208
+ iconsBackgroundColor: Palette.moderateLavender,
209
+ iconsColor: PaletteDark.lightBlueGrey,
210
+ amountBottomBorderColor: Palette.darkBlueCraiola,
211
+ amountHintTextColor: Palette.darkBlueCraiola);
212
+
213
+ @override
214
+ QRCodeTheme get qrCodeTheme => QRCodeTheme(
215
+ qrCodeColor: Colors.white,
216
+ qrWidgetCopyButtonColor: PaletteDark.lightBlueGrey);
217
+
218
+ @override
219
+ ThemeData get themeData => super.themeData.copyWith(
220
+ dividerColor: Palette.paleBlue,
221
+ hintColor: Palette.gray,
222
+ disabledColor: Palette.darkGray,
223
+ dialogTheme:
224
+ super.themeData.dialogTheme.copyWith(backgroundColor: Colors.white));
225
}