diff --git a/assets/images/hash_wallet/03_lockup_horizontal_dark.svg b/assets/images/hash_wallet/03_lockup_horizontal_dark.svg
new file mode 100644
index 00000000..61f28148
--- /dev/null
+++ b/assets/images/hash_wallet/03_lockup_horizontal_dark.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/images/hash_wallet/04_hash_wallet_inline_dark.svg b/assets/images/hash_wallet/04_hash_wallet_inline_dark.svg
new file mode 100644
index 00000000..8cbc2f8c
--- /dev/null
+++ b/assets/images/hash_wallet/04_hash_wallet_inline_dark.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/images/hash_wallet/05_function_lockup_dark.svg b/assets/images/hash_wallet/05_function_lockup_dark.svg
new file mode 100644
index 00000000..91159fd3
--- /dev/null
+++ b/assets/images/hash_wallet/05_function_lockup_dark.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/assets/images/hash_wallet/09_mark_outline.svg b/assets/images/hash_wallet/09_mark_outline.svg
new file mode 100644
index 00000000..59fe24f9
--- /dev/null
+++ b/assets/images/hash_wallet/09_mark_outline.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/assets/images/hash_wallet/10_wordmark_only.svg b/assets/images/hash_wallet/10_wordmark_only.svg
new file mode 100644
index 00000000..5a66d250
--- /dev/null
+++ b/assets/images/hash_wallet/10_wordmark_only.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/assets/images/hash_wallet/11_vertical_lockup.svg b/assets/images/hash_wallet/11_vertical_lockup.svg
new file mode 100644
index 00000000..2590083f
--- /dev/null
+++ b/assets/images/hash_wallet/11_vertical_lockup.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/images/hash_wallet/12_notification_mono.svg b/assets/images/hash_wallet/12_notification_mono.svg
new file mode 100644
index 00000000..9ad85dc9
--- /dev/null
+++ b/assets/images/hash_wallet/12_notification_mono.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart
index df3977d0..b3a335ee 100644
--- a/lib/entities/default_settings_migration.dart
+++ b/lib/entities/default_settings_migration.dart
@@ -563,13 +563,10 @@ Future defaultSettingsMigration(
await _backupWowneroSeeds(havenSeedStore);
break;
case 55:
- await addWalletNodeList(nodes: nodes, type: WalletType.zcash);
- await _changeDefaultNode(
- nodes: nodes,
- sharedPreferences: sharedPreferences,
- type: WalletType.zcash,
- currentNodePreferenceKey: PreferencesKey.currentZcashNodeIdKey,
- );
+ // Hash Wallet: zcash removed. The original migration here added
+ // zcash node list + set default zcash node. We no longer load
+ // zcash_node_list.yml (it was deleted), so skip the whole step.
+ break;
case 56:
await sharedPreferences.setString(
PreferencesKey.syncStatusDisplayMode, SyncStatusDisplayMode.blocksRemaining.name);
diff --git a/lib/entities/node_list.dart b/lib/entities/node_list.dart
index bf4e0586..d9c59d3b 100644
--- a/lib/entities/node_list.dart
+++ b/lib/entities/node_list.dart
@@ -115,7 +115,9 @@ Future resetToDefault(Box nodeSource) async {
final dogecoinElectrumServerList = await loadDefaultNodes(WalletType.dogecoin);
final baseNodes = await loadDefaultNodes(WalletType.base);
final arbitrumNodes = await loadDefaultNodes(WalletType.arbitrum);
- final zcashNodes = await loadDefaultNodes(WalletType.zcash);
+ // Hash Wallet: zcash node list deleted with the chain. Skip the load,
+ // skip the concat — stops the first-launch popup "Unable to load asset:
+ // assets/zcash_node_list.yml".
final bscNodes = await loadDefaultNodes(WalletType.bsc);
final nodes = moneroNodes +
@@ -133,7 +135,6 @@ Future resetToDefault(Box nodeSource) async {
dogecoinElectrumServerList +
baseNodes +
arbitrumNodes +
- zcashNodes +
bscNodes;
await nodeSource.clear();
diff --git a/lib/palette.dart b/lib/palette.dart
index eb0ff50e..474cb92e 100644
--- a/lib/palette.dart
+++ b/lib/palette.dart
@@ -4,15 +4,17 @@ class Palette {
static const Color green = Color.fromRGBO(39, 206, 80, 1.0);
static const Color red = Color.fromRGBO(255, 51, 51, 1.0);
static const Color darkRed = Color.fromRGBO(205, 0, 0, 1.0);
- static const Color blueAlice = Color.fromRGBO(229, 247, 255, 1.0);
- static const Color lightBlue = Color.fromRGBO(172, 203, 238, 1.0);
- static const Color lavender = Color.fromRGBO(237, 245, 252, 1.0);
- static const Color oceanBlue = Color.fromRGBO(30, 52, 78, 1.0);
- static const Color lightBlueGrey = Color.fromRGBO(118, 131, 169, 1.0);
- static const Color periwinkle = Color.fromRGBO(195, 210, 227, 1.0);
- static const Color blue = Color.fromRGBO(88, 143, 252, 1.0);
- static const Color darkLavender = Color.fromRGBO(229, 238, 250, 1.0);
- static const Color nightBlue = Color.fromRGBO(46, 57, 96, 1.0);
+ // Hash Wallet: Cake's blue-family accents repainted into the green-primary
+ // brand palette. Names retained so call-sites compile unchanged.
+ static const Color blueAlice = Color.fromRGBO(229, 247, 235, 1.0); // pale green tint
+ static const Color lightBlue = Color.fromRGBO(127, 202, 160, 1.0); // mint
+ static const Color lavender = Color.fromRGBO(242, 248, 244, 1.0); // very light minty
+ static const Color oceanBlue = Color.fromRGBO(11, 31, 20, 1.0); // deep brand green
+ static const Color lightBlueGrey = Color.fromRGBO(155, 181, 166, 1.0); // muted mint-gray
+ static const Color periwinkle = Color.fromRGBO(199, 229, 210, 1.0); // pale mint
+ static const Color blue = Color.fromRGBO(31, 125, 191, 1.0); // Such Software blue accent
+ static const Color darkLavender = Color.fromRGBO(234, 242, 236, 1.0); // pale green bg
+ static const Color nightBlue = Color.fromRGBO(26, 92, 56, 1.0); // brand green primary
static const Color moderateOrangeYellow = Color.fromRGBO(245, 134, 82, 1.0);
static const Color moderateOrange = Color.fromRGBO(235, 117, 63, 1.0);
static const Color moneroOrange = Color.fromRGBO(255, 102, 0, 1.0);
@@ -20,86 +22,90 @@ class Palette {
static const Color bitcoinOrange = Color.fromRGBO(242, 169, 0, 1.0);
static const Color shineGreen = Color.fromRGBO(76, 189, 87, 1.0);
static const Color moderateGreen = Color.fromRGBO(45, 158, 56, 1.0);
- static const Color cornflower = Color.fromRGBO(85, 147, 240, 1.0);
- static const Color royalBlue = Color.fromRGBO(43, 114, 221, 1.0);
+ static const Color cornflower = Color.fromRGBO(106, 183, 230, 1.0); // soft Such blue
+ static const Color royalBlue = Color.fromRGBO(31, 125, 191, 1.0); // Such blue primary
static const Color lightRed = Color.fromRGBO(227, 87, 87, 1.0);
static const Color veryLightRed = Color.fromRGBO(239, 156, 156, 1.0);
static const Color persianRed = Color.fromRGBO(206, 55, 55, 1.0);
- static const Color blueCraiola = Color.fromRGBO(69, 110, 255, 1.0);
- static const Color blueGreyCraiola = Color.fromRGBO(106, 177, 207, 1.0);
- static const Color greyBlueCraiola = Color.fromRGBO(116, 139, 219, 1.0);
- static const Color darkBlueCraiola = Color.fromRGBO(53, 86, 136, 1.0);
- static const Color pinkFlamingo = Color.fromRGBO(240, 60, 243, 1.0);
+ static const Color blueCraiola = Color.fromRGBO(26, 92, 56, 1.0); // brand green primary
+ static const Color blueGreyCraiola = Color.fromRGBO(127, 202, 160, 1.0); // mint
+ static const Color greyBlueCraiola = Color.fromRGBO(155, 181, 166, 1.0); // muted mint-gray
+ static const Color darkBlueCraiola = Color.fromRGBO(11, 31, 20, 1.0); // deep green
+ static const Color pinkFlamingo = Color.fromRGBO(184, 50, 120, 1.0); // Such Software pink
static const Color redHat = Color.fromRGBO(209, 68, 37, 1.0);
static const Color shineOrange = Color.fromRGBO(255, 184, 78, 1.0);
- static const Color paleBlue = Color.fromRGBO(225, 228, 233, 1.0);
- static const Color violetBlue = Color.fromRGBO(56, 69, 103, 1.0);
- static const Color periwinkleCraiola = Color.fromRGBO(229, 232, 242, 1.0);
- static const Color moderatePurpleBlue = Color.fromRGBO(57, 74, 95, 1.0);
- static const Color moderateLavender = Color.fromRGBO(233, 242, 252, 1.0);
- static const Color wildLavender = Color.fromRGBO(224, 230, 246, 1.0);
+ static const Color paleBlue = Color.fromRGBO(217, 230, 222, 1.0); // pale green tint
+ static const Color violetBlue = Color.fromRGBO(31, 69, 48, 1.0); // darker green container
+ static const Color periwinkleCraiola = Color.fromRGBO(234, 242, 236, 1.0);
+ static const Color moderatePurpleBlue = Color.fromRGBO(31, 69, 48, 1.0);
+ static const Color moderateLavender = Color.fromRGBO(234, 242, 236, 1.0);
+ static const Color wildLavender = Color.fromRGBO(199, 229, 210, 1.0);
static const Color gray = Color.fromRGBO(112, 147, 186, 1.0);
- static const Color wildPeriwinkle = Color.fromRGBO(219, 227, 243, 1.0);
+ static const Color wildPeriwinkle = Color.fromRGBO(214, 234, 222, 1.0);
static const Color darkGray = Color.fromRGBO(122, 147, 186, 1.0);
- static const Color shadowWhite = Color.fromRGBO(242, 245, 255, 1.0);
- static const Color niagara = Color.fromRGBO(152, 172, 201, 1.0);
+ static const Color shadowWhite = Color.fromRGBO(242, 248, 244, 1.0); // pale minty
+ static const Color niagara = Color.fromRGBO(155, 181, 166, 1.0); // mint-gray
static const Color alizarinRed = Color.fromRGBO(233, 45, 45, 1.0);
static const Color moderateSlateBlue = Color.fromRGBO(129, 93, 251, 1.0);
static const Color brightOrange = Color.fromRGBO(255, 102, 0, 1.0);
static const Color dullGray = Color.fromRGBO(98, 98, 98, 1.0);
- static const Color protectiveBlue = Color.fromRGBO(33, 148, 255, 1.0);
- static const Color darkBlue = Color.fromRGBO(109, 128, 178, 1.0);
- static const Color paleCornflowerBlue = Color.fromRGBO(185, 196, 237, 1.0);
- static const Color manatee = Color.fromRGBO(153, 161, 176, 1.0);
- static const Color stateGray = Color.fromRGBO(68, 74, 89, 1.0);
- static const Color highContrastGray = Color.fromRGBO(76, 76, 76, 1.0);
- static const Color frostySky = Color.fromRGBO(0, 184, 250, 1.0);
+ static const Color protectiveBlue = Color.fromRGBO(31, 125, 191, 1.0); // Such blue
+ static const Color darkBlue = Color.fromRGBO(20, 80, 122, 1.0); // deeper Such blue
+ static const Color paleCornflowerBlue = Color.fromRGBO(214, 234, 246, 1.0); // pale Such blue
+ static const Color manatee = Color.fromRGBO(153, 161, 176, 1.0); // neutral gray (kept)
+ static const Color stateGray = Color.fromRGBO(68, 74, 89, 1.0); // neutral (kept)
+ static const Color highContrastGray = Color.fromRGBO(76, 76, 76, 1.0); // neutral (kept)
+ static const Color frostySky = Color.fromRGBO(127, 202, 160, 1.0); // mint
}
class PaletteDark {
- static const Color lightDistantBlue = Color.fromRGBO(81, 96, 147, 1.0);
- static const Color gray = Color.fromRGBO(140, 153, 201, 1.0);
- static const Color pigeonBlue = Color.fromRGBO(91, 112, 146, 1.0);
- static const Color moderateNightBlue = Color.fromRGBO(39, 53, 96, 1.0);
- static const Color headerNightBlue = Color.fromRGBO(41, 52, 84, 1.0);
- static const Color moderatePurpleBlue = Color.fromRGBO(57, 74, 95, 1.0);
- static const Color backgroundColor = Color.fromRGBO(25, 35, 60, 1.0);
- static const Color nightBlue = Color.fromRGBO(35, 47, 79, 1.0);
- static const Color wildNightBlue = Color.fromRGBO(39, 53, 96, 1.0);
- static const Color distantNightBlue = Color.fromRGBO(46, 57, 96, 1.0);
- static const Color cyanBlue = Color.fromRGBO(99, 113, 150, 1.0);
- static const Color darkCyanBlue = Color.fromRGBO(91, 112, 146, 1.0);
- static const Color orangeYellow = Color.fromRGBO(243, 166, 50, 1.0);
- static const Color brightGreen = Color.fromRGBO(88, 243, 50, 1.0);
- static const Color oceanBlue = Color.fromRGBO(27, 39, 71, 1.0);
- static const Color lightOceanBlue = Color.fromRGBO(32, 45, 80, 1.0);
- static const Color lightNightBlue = Color.fromRGBO(39, 52, 89, 1.0);
- static const Color wildBlue = Color.fromRGBO(165, 176, 205, 1.0);
- static const Color buttonNightBlue = Color.fromRGBO(46, 57, 96, 1.0);
- static const Color lightBlueGrey = Color.fromRGBO(125, 141, 183, 1.0);
- static const Color lightVioletBlue = Color.fromRGBO(56, 71, 109, 1.0);
- static const Color darkVioletBlue = Color.fromRGBO(49, 60, 96, 1.0);
- static const Color wildVioletBlue = Color.fromRGBO(45, 60, 97, 1.0);
- static const Color darkNightBlue = Color.fromRGBO(33, 45, 76, 1.0);
- static const Color blueGrey = Color.fromRGBO(87, 98, 138, 1.0);
- static const Color moderateBlue = Color.fromRGBO(60, 73, 118, 1.0);
- static const Color deepPurpleBlue = Color.fromRGBO(19, 29, 56, 1.0);
- static const Color darkOceanBlue = Color.fromRGBO(30, 42, 73, 1.0);
- static const Color wildBlueGrey = Color.fromRGBO(125, 137, 182, 1.0);
- static const Color darkGrey = Color.fromRGBO(118, 131, 169, 1.0);
- static const Color dividerColor = Color.fromRGBO(48, 59, 95, 1.0);
- static const Color violetBlue = Color.fromRGBO(59, 72, 119, 1.0);
- static const Color distantBlue = Color.fromRGBO(72, 85, 131, 1.0);
- static const Color moderateVioletBlue = Color.fromRGBO(62, 73, 113, 1.0);
- static const Color deepVioletBlue = Color.fromRGBO(52, 66, 104, 1.0);
- static const Color lightPurpleBlue = Color.fromRGBO(120, 133, 170, 1.0);
- static const Color indicatorVioletBlue = Color.fromRGBO(59, 72, 119, 1.0);
- static const Color granite = Color.fromRGBO(48, 51, 60, 1.0);
- static const Color matrixGreen = Color.fromRGBO(18, 229, 90, 1.0);
- static const Color moneroOrange = Color.fromRGBO(255, 102, 0, 1.0);
- static const Color moneroCard = Color.fromRGBO(20, 21, 24, 1.0);
- static const Color red = Color.fromRGBO(195, 0, 0, 1.0);
- static const Color darkPurple = Color.fromRGBO(109, 14, 210, 1.0);
- static const Color cakeBlue = Color.fromRGBO(0, 184, 250, 1.0);
- static const Color darkBlue = Color.fromRGBO(0, 123, 168, 1.0);
+ // Hash Wallet: PaletteDark was almost entirely Cake's night-blue surfaces.
+ // Repainted into the deep-green dark theme. moneroCard and moneroOrange
+ // stay as chain identifiers. Original names retained — every call-site
+ // compiles unchanged.
+ static const Color lightDistantBlue = Color.fromRGBO(96, 147, 113, 1.0);
+ static const Color gray = Color.fromRGBO(155, 181, 166, 1.0);
+ static const Color pigeonBlue = Color.fromRGBO(91, 146, 112, 1.0);
+ static const Color moderateNightBlue = Color.fromRGBO(23, 53, 36, 1.0);
+ static const Color headerNightBlue = Color.fromRGBO(17, 42, 29, 1.0);
+ static const Color moderatePurpleBlue = Color.fromRGBO(31, 69, 48, 1.0);
+ static const Color backgroundColor = Color.fromRGBO(11, 31, 20, 1.0);
+ static const Color nightBlue = Color.fromRGBO(17, 42, 29, 1.0);
+ static const Color wildNightBlue = Color.fromRGBO(23, 53, 36, 1.0);
+ static const Color distantNightBlue = Color.fromRGBO(31, 69, 48, 1.0);
+ static const Color cyanBlue = Color.fromRGBO(113, 150, 128, 1.0);
+ static const Color darkCyanBlue = Color.fromRGBO(91, 146, 112, 1.0);
+ static const Color orangeYellow = Color.fromRGBO(243, 166, 50, 1.0); // neutral accent (kept)
+ static const Color brightGreen = Color.fromRGBO(88, 243, 130, 1.0); // tweaked for brand harmony
+ static const Color oceanBlue = Color.fromRGBO(11, 31, 20, 1.0);
+ static const Color lightOceanBlue = Color.fromRGBO(17, 42, 29, 1.0);
+ static const Color lightNightBlue = Color.fromRGBO(23, 53, 36, 1.0);
+ static const Color wildBlue = Color.fromRGBO(176, 205, 188, 1.0);
+ static const Color buttonNightBlue = Color.fromRGBO(31, 69, 48, 1.0);
+ static const Color lightBlueGrey = Color.fromRGBO(141, 183, 159, 1.0);
+ static const Color lightVioletBlue = Color.fromRGBO(42, 88, 64, 1.0);
+ static const Color darkVioletBlue = Color.fromRGBO(31, 69, 48, 1.0);
+ static const Color wildVioletBlue = Color.fromRGBO(35, 75, 52, 1.0);
+ static const Color darkNightBlue = Color.fromRGBO(17, 42, 29, 1.0);
+ static const Color blueGrey = Color.fromRGBO(98, 138, 113, 1.0);
+ static const Color moderateBlue = Color.fromRGBO(60, 118, 88, 1.0);
+ static const Color deepPurpleBlue = Color.fromRGBO(11, 31, 20, 1.0);
+ static const Color darkOceanBlue = Color.fromRGBO(17, 42, 29, 1.0);
+ static const Color wildBlueGrey = Color.fromRGBO(137, 182, 156, 1.0);
+ static const Color darkGrey = Color.fromRGBO(131, 169, 148, 1.0);
+ static const Color dividerColor = Color.fromRGBO(31, 69, 48, 1.0);
+ static const Color violetBlue = Color.fromRGBO(42, 88, 64, 1.0);
+ static const Color distantBlue = Color.fromRGBO(85, 131, 105, 1.0);
+ static const Color moderateVioletBlue = Color.fromRGBO(62, 113, 84, 1.0);
+ static const Color deepVioletBlue = Color.fromRGBO(52, 104, 75, 1.0);
+ static const Color lightPurpleBlue = Color.fromRGBO(133, 170, 149, 1.0);
+ static const Color indicatorVioletBlue = Color.fromRGBO(42, 88, 64, 1.0);
+ static const Color granite = Color.fromRGBO(48, 51, 60, 1.0); // neutral (kept)
+ static const Color matrixGreen = Color.fromRGBO(18, 229, 90, 1.0); // matrix accent (kept)
+ static const Color moneroOrange = Color.fromRGBO(255, 102, 0, 1.0); // chain identifier (kept)
+ static const Color moneroCard = Color.fromRGBO(20, 21, 24, 1.0); // chain card (kept)
+ static const Color red = Color.fromRGBO(195, 0, 0, 1.0); // neutral (kept)
+ static const Color darkPurple = Color.fromRGBO(184, 50, 120, 1.0); // Such Software pink
+ static const Color cakeBlue = Color.fromRGBO(106, 183, 230, 1.0); // Such Software blue
+ static const Color darkBlue = Color.fromRGBO(31, 125, 191, 1.0); // Such Software blue darker
}
diff --git a/lib/src/screens/dashboard/pages/cake_features_page.dart b/lib/src/screens/dashboard/pages/cake_features_page.dart
index b74ee87d..3259e2fa 100644
--- a/lib/src/screens/dashboard/pages/cake_features_page.dart
+++ b/lib/src/screens/dashboard/pages/cake_features_page.dart
@@ -81,107 +81,27 @@ class CakeFeaturesPage extends StatelessWidget {
);
}
- Widget _buildOldUi(BuildContext context) {
- return Column(
- children: [
- const SizedBox(height: 2),
- DashBoardRoundedCardWidget(
- shadowBlur: dashboardViewModel.getShadowBlur(),
- shadowSpread: dashboardViewModel.getShadowSpread(),
- onTap: () => _onCakePayTap(context),
- title: 'Cake Pay',
- subTitle: S.of(context).cake_pay_subtitle,
- image: Image.asset('assets/images/cakepay.png', height: 74, width: 70, fit: BoxFit.cover),
- ),
- Observer(builder: (_) {
- if (dashboardViewModel.type == WalletType.ethereum) {
- return DashBoardRoundedCardWidget(
- shadowBlur: dashboardViewModel.getShadowBlur(),
- shadowSpread: dashboardViewModel.getShadowSpread(),
- onTap: () => Navigator.of(context).pushNamed(Routes.dEuroSavings),
- title: S.of(context).deuro_savings,
- subTitle: S.of(context).deuro_savings_subtitle,
- image: Image.asset('assets/images/deuro_icon.png', height: 80, width: 80, fit: BoxFit.cover),
- );
- }
- return const SizedBox();
- }),
- DashBoardRoundedCardWidget(
- shadowBlur: dashboardViewModel.getShadowBlur(),
- shadowSpread: dashboardViewModel.getShadowSpread(),
- onTap: () => _launchUrl("cake.nano-gpt.com"),
- title: "NanoGPT",
- subTitle: S.of(context).nanogpt_subtitle,
- image: Image.asset('assets/images/nanogpt.png', height: 80, width: 80, fit: BoxFit.cover),
- ),
- const Spacer(),
- const SizedBox(height: 125),
- ],
- );
- }
+ // Hash Wallet: gutted Cake Pay, Cupcake, NanoGPT, and dEuro Savings
+ // entries — all third-party Cake-affiliate income. dEuro kept out for
+ // consistency (also has affiliate revenue, not our relationship).
+ // Re-populate this page when we have Hash Wallet / Such Software apps
+ // to feature here.
+ Widget _buildOldUi(BuildContext context) => _emptyState(context);
- Widget _buildNewUi(BuildContext context) {
- return Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Align(
- alignment: Alignment.centerLeft,
- child: Padding(
- padding: const EdgeInsets.only(left: 24, bottom: 8),
- child: CakeImageWidget(imageUrl: "assets/new-ui/by-cakelabs.svg", height: 20, color: Theme.of(context).colorScheme.onSurfaceVariant),
- ),
+ Widget _buildNewUi(BuildContext context) => _emptyState(context);
+
+ Widget _emptyState(BuildContext context) {
+ return Center(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 64),
+ child: Text(
+ 'No apps available yet.',
+ textAlign: TextAlign.center,
+ style: Theme.of(context).textTheme.bodyLarge?.copyWith(
+ color: Theme.of(context).colorScheme.onSurfaceVariant,
+ ),
),
- AppsWidget(
- isWide: true,
- isCake: true,
- onTap: () => _onCakePayTap(context),
- title: 'Cake Pay',
- subTitle: S.of(context).cake_pay_subtitle,
- image: 'assets/images/cakepay.png',
- ),
- AppsWidget(
- isWide: true,
- isLink: true,
- isCake: true,
- onTap: () => _launchUrl("cupcakewallet.com"),
- title: "Cupcake",
- subTitle: "Turn your old phone into your new hardware wallet with our new app",
- image: 'assets/images/cupcake.png',
- ),
- const SizedBox(height: 12),
- Padding(
- padding: const EdgeInsets.only(left: 24, top: 16, bottom: 8),
- child: Text(
- "Featured Apps",
- style: Theme.of(context).textTheme.headlineMedium?.copyWith(
- fontWeight: FontWeight.w500,
- color: Theme.of(context).colorScheme.onSurface,
- ),
- ),
- ),
- AppsWidget(
- isWide: true,
- isLink: true,
- onTap: () => _launchUrl("cake.nano-gpt.com"),
- title: "NanoGPT",
- subTitle: S.of(context).nanogpt_subtitle,
- image: 'assets/images/nanogpt.png',
- ),
- Observer(builder: (_) {
- if (dashboardViewModel.type == WalletType.ethereum) {
- return AppsWidget(
- isWide: true,
- onTap: () => Navigator.of(context).pushNamed(Routes.dEuroSavings),
- title: S.of(context).deuro_savings,
- subTitle: S.of(context).deuro_savings_subtitle,
- image: 'assets/images/deuro_icon.png',
- );
- }
- return const SizedBox();
- }),
- const Spacer(),
- const SizedBox(height: 125),
- ],
+ ),
);
}
diff --git a/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart b/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart
index d8975bbe..62c97273 100644
--- a/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart
+++ b/lib/themes/custom_theme_colors/dark_theme_custom_colors.dart
@@ -12,17 +12,17 @@ class DarkThemeCustomColors extends CustomThemeColors {
Color get backgroundMainColor => const Color(0xFF000000);
@override
- Color get backgroundGradientColor => const Color(0xFF0F1A36);
+ Color get backgroundGradientColor => const Color(0xFF06150C);
@override
- Color get cardGradientColorPrimary => const Color(0xFF2B3A67);
+ Color get cardGradientColorPrimary => const Color(0xFF1F4530);
@override
- Color get cardGradientColorSecondary => const Color(0xFF1C2A4F);
+ Color get cardGradientColorSecondary => const Color(0xFF112A1D);
@override
Color get toggleKnobStateColor => const Color(0xFFFFFFFF);
@override
- Color get toggleColorOffState => const Color(0xFF3A4F88);
+ Color get toggleColorOffState => const Color(0xFF2A5840);
}
diff --git a/lib/themes/custom_theme_colors/light_theme_custom_colors.dart b/lib/themes/custom_theme_colors/light_theme_custom_colors.dart
index 98fb1f15..e57b1022 100644
--- a/lib/themes/custom_theme_colors/light_theme_custom_colors.dart
+++ b/lib/themes/custom_theme_colors/light_theme_custom_colors.dart
@@ -9,20 +9,20 @@ class LightThemeCustomColors extends CustomThemeColors {
Color get warningOutlineColor => const Color(0xFF312938);
@override
- Color get backgroundMainColor => const Color(0xFF000000);
-
+ Color get backgroundMainColor => const Color(0xFF0B1F14);
+
@override
- Color get backgroundGradientColor => const Color(0xFFE7E7FD);
-
+ Color get backgroundGradientColor => const Color(0xFFDDEBE3);
+
@override
Color get cardGradientColorPrimary => const Color(0xFFFFFFFF);
-
+
@override
- Color get cardGradientColorSecondary => const Color(0xFFF3F3FF);
-
+ Color get cardGradientColorSecondary => const Color(0xFFEAF2EC);
+
@override
Color get toggleKnobStateColor => const Color(0xFFFFFFFF);
-
+
@override
- Color get toggleColorOffState => const Color(0xFFCACAE7);
+ Color get toggleColorOffState => const Color(0xFFC7E5D2);
}
diff --git a/lib/themes/theme_classes/black_theme.dart b/lib/themes/theme_classes/black_theme.dart
index ba181fc9..9285c775 100644
--- a/lib/themes/theme_classes/black_theme.dart
+++ b/lib/themes/theme_classes/black_theme.dart
@@ -4,12 +4,12 @@ import 'package:cake_wallet/themes/core/custom_theme_colors.dart';
import 'package:cake_wallet/themes/custom_theme_colors/black_theme_custom_colors.dart';
enum BlackThemeAccentColor implements ThemeAccentColor {
- cakePrimary(Color(0xFF52B6F0), 'Cake Primary'),
+ hashGreen(Color(0xFF7FCAA0), 'Hash Green'),
+ suchPink(Color(0xFFE16FA6), 'Such Pink'),
+ suchBlue(Color(0xFF6AB7E6), 'Such Blue'),
bchGreen(Color(0xFF44BA52), 'BCH Green'),
bitcoinYellow(Color(0xFFFFC107), 'Bitcoin Yellow'),
- moneroOrange(Color(0xFFFF6600), 'Monero Orange'),
- tronRed(Color(0xFFFF4242), 'Tron Red'),
- frostingPurple(Color(0xFFBABAF3), 'Frosting Purple');
+ moneroOrange(Color(0xFFFF6600), 'Monero Orange');
const BlackThemeAccentColor(this.color, this.name);
@@ -263,12 +263,12 @@ class BlackTheme extends MaterialThemeBase {
@override
int get raw {
final baseValue = switch (accentColor) {
- BlackThemeAccentColor.cakePrimary => 12,
+ BlackThemeAccentColor.hashGreen => 12,
BlackThemeAccentColor.bchGreen => 13,
BlackThemeAccentColor.bitcoinYellow => 14,
BlackThemeAccentColor.moneroOrange => 15,
- BlackThemeAccentColor.tronRed => 16,
- BlackThemeAccentColor.frostingPurple => 17,
+ BlackThemeAccentColor.suchPink => 16,
+ BlackThemeAccentColor.suchBlue => 17,
};
if (!isOled) return baseValue;
// OLED encodes as 100 + base to avoid collisions
diff --git a/lib/themes/theme_classes/dark_theme.dart b/lib/themes/theme_classes/dark_theme.dart
index 990508e3..d9b31e97 100644
--- a/lib/themes/theme_classes/dark_theme.dart
+++ b/lib/themes/theme_classes/dark_theme.dart
@@ -10,50 +10,55 @@ class DarkTheme extends MaterialThemeBase {
@override
ThemeMode get themeMode => ThemeMode.dark;
+ // Hash Wallet dark palette:
+ // - Primary: mint (#7FCAA0) — light enough to read on dark surface
+ // - Secondary: soft pink (#E16FA6)
+ // - Tertiary: soft blue (#6AB7E6)
+ // - Surface: deep green (#0B1F14)
@override
- Color get primaryColor => const Color(0xFF91B0FF);
+ Color get primaryColor => const Color(0xFF7FCAA0);
@override
- Color get secondaryColor => const Color(0xFFA1B9FF);
+ Color get secondaryColor => const Color(0xFFE16FA6);
@override
Color get errorColor => const Color(0xFFFFB4AB);
@override
- Color get surfaceColor => const Color(0xFF1B284A);
+ Color get surfaceColor => const Color(0xFF0B1F14);
@override
- Color get tertiaryColor => const Color(0xFF162028);
+ Color get tertiaryColor => const Color(0xFF6AB7E6);
@override
ColorScheme get colorScheme => ColorScheme.dark(
primary: primaryColor,
- onPrimary: const Color(0xFF002860),
- primaryContainer: const Color(0xFF004C9E),
- onPrimaryContainer: const Color(0xFFFFF3F0),
+ onPrimary: const Color(0xFF0B1F14),
+ primaryContainer: const Color(0xFF1A5C38),
+ onPrimaryContainer: const Color(0xFFC7E5D2),
secondary: secondaryColor,
- onSecondary: const Color(0xFF0C1C58),
- secondaryContainer: const Color(0xFF1A3C6C),
- onSecondaryContainer: const Color(0xFFBACBFF),
+ onSecondary: const Color(0xFF3A0F22),
+ secondaryContainer: const Color(0xFF7A1F4E),
+ onSecondaryContainer: const Color(0xFFFAD5E5),
tertiary: tertiaryColor,
- onTertiary: const Color(0xFF2B373F),
- tertiaryContainer: const Color(0xFF1F2832),
- onTertiaryContainer: const Color(0xFFA8B3C6),
+ onTertiary: const Color(0xFF0B2C46),
+ tertiaryContainer: const Color(0xFF14507A),
+ onTertiaryContainer: const Color(0xFFD6EAF6),
error: errorColor,
onError: const Color(0xFFB71919),
errorContainer: const Color(0xFFC53636),
onErrorContainer: const Color(0xFFFFDAD6),
surface: surfaceColor,
- onSurface: const Color(0xFFD7E2F7),
- surfaceDim: const Color(0xFF0F1A36),
- onSurfaceVariant: const Color(0xFF8C9FBB),
- surfaceContainerLowest: Color(0xFF171C30),
- surfaceContainerLow: Color(0xFF2D385C),
- surfaceContainer: Color(0xFF24335B),
- surfaceContainerHigh: Color(0xFF2A3E73),
- surfaceContainerHighest: Color(0xFF334C8C),
- outline: const Color(0xFF9EACC1),
- outlineVariant: const Color(0xFF2A3E73),
+ onSurface: const Color(0xFFE0F0E8),
+ surfaceDim: const Color(0xFF06150C),
+ onSurfaceVariant: const Color(0xFF9BB5A6),
+ surfaceContainerLowest: Color(0xFF06150C),
+ surfaceContainerLow: Color(0xFF112A1D),
+ surfaceContainer: Color(0xFF173524),
+ surfaceContainerHigh: Color(0xFF1F4530),
+ surfaceContainerHighest: Color(0xFF2A5840),
+ outline: const Color(0xFF8AAA98),
+ outlineVariant: const Color(0xFF1F4530),
);
static const String fontFamily = 'Wix Madefor Text';
@override
diff --git a/lib/themes/theme_classes/light_theme.dart b/lib/themes/theme_classes/light_theme.dart
index db1b6fdc..37b4b25d 100644
--- a/lib/themes/theme_classes/light_theme.dart
+++ b/lib/themes/theme_classes/light_theme.dart
@@ -10,51 +10,56 @@ class LightTheme extends MaterialThemeBase {
@override
ThemeMode get themeMode => ThemeMode.light;
+ // Hash Wallet palette:
+ // - Primary: brand green (#1A5C38)
+ // - Secondary: Such Software pink (#B83278)
+ // - Tertiary: Such Software blue (#1F7DBF)
+ // - Surface: very light minty bg (#F2F8F4)
@override
- Color get primaryColor => const Color(0xFF4EBEFF);
+ Color get primaryColor => const Color(0xFF1A5C38);
@override
- Color get secondaryColor => const Color(0xFF625C64);
+ Color get secondaryColor => const Color(0xFFB83278);
@override
- Color get tertiaryColor => const Color(0xFFBFCBDE);
+ Color get tertiaryColor => const Color(0xFF1F7DBF);
@override
Color get errorColor => const Color(0xFFBA1A1A);
@override
- Color get surfaceColor => const Color(0xFFEFEFF8);
+ Color get surfaceColor => const Color(0xFFF2F8F4);
@override
ColorScheme get colorScheme => ColorScheme.light(
primary: primaryColor,
onPrimary: const Color(0xFFFFFFFF),
- primaryContainer: const Color(0xFF403747),
- onPrimaryContainer: const Color(0xFFD5C8DC),
+ primaryContainer: const Color(0xFFC7E5D2),
+ onPrimaryContainer: const Color(0xFF0B1F14),
secondary: secondaryColor,
onSecondary: const Color(0xFFFFFFFF),
- secondaryContainer: const Color(0xFFE1E4EA),
- onSecondaryContainer: const Color(0xFF4C474E),
+ secondaryContainer: const Color(0xFFF9D6E5),
+ onSecondaryContainer: const Color(0xFF4A0E2C),
tertiary: tertiaryColor,
onTertiary: const Color(0xFFFFFFFF),
- tertiaryContainer: const Color(0xFF35404A),
- onTertiaryContainer: const Color(0xFFC5D7E5),
+ tertiaryContainer: const Color(0xFFD6EAF6),
+ onTertiaryContainer: const Color(0xFF0B2C46),
error: errorColor,
onError: const Color(0xFFFFFFFF),
errorContainer: const Color(0xFFFFBDBD),
onErrorContainer: const Color(0xFFE43D3D),
surface: surfaceColor,
- surfaceDim: const Color(0xFFE7E7FD),
- onSurface: const Color(0xFF312938),
- onSurfaceVariant: const Color(0xFF6C6772),
- surfaceContainerLowest: Color(0xFFE4E4E4),
- surfaceContainerLow: Color(0xFFECECED),
- surfaceContainer: Color(0xFFFBFBFD),
- surfaceContainerHigh: Color(0xFFFDFDFE),
+ surfaceDim: const Color(0xFFDDEBE3),
+ onSurface: const Color(0xFF0B1F14),
+ onSurfaceVariant: const Color(0xFF5A6B61),
+ surfaceContainerLowest: Color(0xFFE2EEE7),
+ surfaceContainerLow: Color(0xFFEAF2EC),
+ surfaceContainer: Color(0xFFF5FAF6),
+ surfaceContainerHigh: Color(0xFFFAFDFB),
surfaceContainerHighest: Color(0xFFFFFFFF),
onInverseSurface: Color(0xFFFAFAFA),
- outline: const Color(0xFF7B757C),
- outlineVariant: const Color(0xFFEDEDF6),
+ outline: const Color(0xFF6F857A),
+ outlineVariant: const Color(0xFFD9E6DE),
);
@override
diff --git a/linux/my_application.cc b/linux/my_application.cc
index 49f9ae13..34371144 100644
--- a/linux/my_application.cc
+++ b/linux/my_application.cc
@@ -40,11 +40,11 @@ static void my_application_activate(GApplication* application) {
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));
- gtk_header_bar_set_title(header_bar, "Cake Wallet");
+ gtk_header_bar_set_title(header_bar, "Hash Wallet");
gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else {
- gtk_window_set_title(window, "Cake Wallet");
+ gtk_window_set_title(window, "Hash Wallet");
}
if (getenv("DESKTOP_FORCE_MOBILE")) {
gtk_window_set_default_size(window, 720, 1280);