Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
d75fd6a
themes initial version
n13 Feb 10, 2026
1516704
cleanup
n13 Feb 10, 2026
14f363f
add home screen
n13 Feb 10, 2026
83ebd25
send flow 1
n13 Feb 10, 2026
fb03734
minor updates
n13 Feb 10, 2026
36382aa
all transactions
n13 Feb 10, 2026
b37056d
remove network fee if unknown
n13 Feb 10, 2026
1cfa26a
pin code screen added
n13 Feb 10, 2026
61ead71
background gradients and ellipse shine
n13 Feb 10, 2026
b486528
fix back buttons and activity screen
n13 Feb 10, 2026
e6de8b1
glossy front page buttons
n13 Feb 11, 2026
3346df3
glassy buttons
n13 Feb 11, 2026
925d584
swap screens
n13 Feb 11, 2026
69c1203
token symbol quan
n13 Feb 11, 2026
0a50f88
glass buttons
n13 Feb 11, 2026
8a9c7b0
adding new glass button package
n13 Feb 11, 2026
7d10e9f
testnet flag added
n13 Feb 11, 2026
a93e6a4
recovery phrase screen added
n13 Feb 11, 2026
9506d4f
formatting
n13 Feb 11, 2026
2aadeb9
glass borders
n13 Feb 11, 2026
4ca5055
format
n13 Feb 11, 2026
f5fcc55
fixed size word chips, border radius, fill
n13 Feb 11, 2026
595308c
welcome screen
n13 Feb 11, 2026
b8cab60
precise radial
n13 Feb 11, 2026
9ff7a64
welcome screen and gradient bg
n13 Feb 11, 2026
5e27951
format
n13 Feb 11, 2026
c52591c
create wallet and no transactions views
n13 Feb 11, 2026
847b409
format
n13 Feb 11, 2026
2a5de52
fix warning
n13 Feb 12, 2026
6ed873e
add import wallet screen
n13 Feb 12, 2026
a2a83e1
better retry
n13 Feb 12, 2026
c843359
formatting
n13 Feb 12, 2026
caa50b0
bottom sheet refactor
n13 Feb 12, 2026
f777b89
format
n13 Feb 12, 2026
8ab9060
Version 1.2.0 build 68
n13 Feb 12, 2026
4724ebb
improve recovery screen
n13 Feb 13, 2026
7829d83
adding glass button pngs
n13 Feb 13, 2026
1837e0f
more buttons
n13 Feb 13, 2026
e31a2ac
format
n13 Feb 13, 2026
0f2ed72
remove padding - not needed
n13 Feb 13, 2026
d9309ce
glassy send
n13 Feb 13, 2026
0cd1988
fix logo
n13 Feb 13, 2026
ce40b1f
more buttons
n13 Feb 13, 2026
09059ad
format
n13 Feb 13, 2026
6aaa045
Build 69
n13 Feb 13, 2026
c072cc6
remove insets
n13 Feb 13, 2026
b0e2053
some stretching magic to make our png glass images stretch
n13 Feb 13, 2026
ac1d751
small button
n13 Feb 14, 2026
e22d004
make deposit screen safe
n13 Feb 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,449 changes: 1,449 additions & 0 deletions mobile-app/assets/fonts/Inter-Bold.ttf

Large diffs are not rendered by default.

1,449 changes: 1,449 additions & 0 deletions mobile-app/assets/fonts/Inter-Light.ttf

Large diffs are not rendered by default.

1,449 changes: 1,449 additions & 0 deletions mobile-app/assets/fonts/Inter-Medium.ttf

Large diffs are not rendered by default.

1,449 changes: 1,449 additions & 0 deletions mobile-app/assets/fonts/Inter-Regular.ttf

Large diffs are not rendered by default.

1,449 changes: 1,449 additions & 0 deletions mobile-app/assets/fonts/Inter-SemiBold.ttf

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions mobile-app/assets/v2/action_receive.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions mobile-app/assets/v2/action_send.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions mobile-app/assets/v2/action_swap.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions mobile-app/assets/v2/caret_left.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_104_x_80.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_40.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_border_bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_button_wide_340_bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_medium_button_bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_medium_clear.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/glass_medium_clear_small.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/green_checkmark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/pending_send_box_arrow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/pin_number_background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions mobile-app/assets/v2/pin_number_background.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/quantus_white_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/receive_button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/send_button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions mobile-app/assets/v2/swap_arrows_down_up.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mobile-app/assets/v2/swap_button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions mobile-app/assets/v2/swap_clock_counter_clockwise.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions mobile-app/assets/v2/swap_qr_code.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions mobile-app/lib/features/main/screens/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:resonance_network_wallet/features/main/screens/authentication_wrapper.dart';
import 'package:resonance_network_wallet/features/main/screens/wallet_initializer.dart';
import 'package:resonance_network_wallet/features/styles/app_theme.dart';
import 'package:resonance_network_wallet/v2/theme/app_theme.dart';
import 'package:resonance_network_wallet/services/local_notifications_service.dart';
import 'package:resonance_network_wallet/services/notification_integration_service.dart';
import 'package:resonance_network_wallet/services/referral_service.dart';
Expand Down Expand Up @@ -55,7 +55,7 @@ class _ResonanceWalletAppState extends ConsumerState<ResonanceWalletApp> {
'/account': (context) => const WalletInitializer(),
'/transactions': (context) => const WalletInitializer(),
},
theme: AppTheme.lightTheme(context),
theme: AppTheme.darkTheme(context),
darkTheme: AppTheme.darkTheme(context),
themeMode: ThemeMode.dark,
builder: (context, child) {
Expand Down
4 changes: 2 additions & 2 deletions mobile-app/lib/features/main/screens/navbar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import 'package:resonance_network_wallet/features/components/referral_action_she
import 'package:resonance_network_wallet/features/main/screens/quests/quests_screen.dart';
import 'package:resonance_network_wallet/features/main/screens/settings_screen.dart';
import 'package:resonance_network_wallet/features/main/screens/transactions_screen.dart';
import 'package:resonance_network_wallet/features/main/screens/wallet_main/wallet_main.dart';
import 'package:resonance_network_wallet/v2/screens/home/home_screen.dart';
import 'package:resonance_network_wallet/features/styles/app_colors_theme.dart';
import 'package:resonance_network_wallet/features/styles/app_size_theme.dart';
import 'package:resonance_network_wallet/services/referral_service.dart';
Expand Down Expand Up @@ -214,7 +214,7 @@ class _NavbarState extends ConsumerState<Navbar> {
return IndexedStack(
index: _selectedIndex,
children: [
const WalletMain(),
const HomeScreen(),
const TransactionsScreen(),
const SettingsScreen(),
QuestsScreen(key: _questsScreenKey),
Expand Down
20 changes: 8 additions & 12 deletions mobile-app/lib/features/main/screens/wallet_initializer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:quantus_sdk/quantus_sdk.dart';
import 'package:resonance_network_wallet/features/components/migration_dialog.dart';
import 'package:resonance_network_wallet/features/main/screens/navbar.dart';
import 'package:resonance_network_wallet/features/main/screens/welcome_screen.dart';
// import 'package:resonance_network_wallet/v2/screens/dev/button_test_screen.dart';
import 'package:resonance_network_wallet/v2/screens/home/home_screen.dart';
import 'package:resonance_network_wallet/v2/screens/welcome/welcome_screen.dart';
import 'package:resonance_network_wallet/providers/account_providers.dart';
import 'package:resonance_network_wallet/providers/route_intent_providers.dart';
import 'package:resonance_network_wallet/services/telemetry_service.dart';
import 'package:resonance_network_wallet/utils/env_utils.dart';

Expand Down Expand Up @@ -160,25 +160,21 @@ class WalletInitializerState extends ConsumerState<WalletInitializer> {

@override
Widget build(BuildContext context) {
final hasTxIntent = ref.read(transactionIntentProvider) != null;
// If we have value of tx that means we got arguments from notification tap,
// so we wanted to display the transactions history screen instead which is index 1.
final initialIndex = hasTxIntent ? 1 : 0;

if (_loading) {
return const Scaffold(body: Center(child: CircularProgressIndicator()));
}

// If migration is needed, render a neutral background (no spinner) while
// the bottom sheet is presented, to avoid a loading indicator behind it.
if (_needsMigration) {
return const Scaffold(body: SizedBox.shrink());
}

// for testing buttons
// return const ButtonTestScreen();

if (_walletExists) {
return Navbar(initialIndex: initialIndex);
return const HomeScreen();
} else {
return const WelcomeScreen();
return const WelcomeScreenV2();
}
}
}
22 changes: 22 additions & 0 deletions mobile-app/lib/v2/components/back_button.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:resonance_network_wallet/v2/theme/app_colors.dart';

class AppBackButton extends StatelessWidget {
final VoidCallback? onTap;

const AppBackButton({super.key, this.onTap});

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap ?? () => Navigator.pop(context),
child: SvgPicture.asset(
'assets/v2/caret_left.svg',
width: 24,
height: 24,
colorFilter: ColorFilter.mode(context.colors.textPrimary, BlendMode.srcIn),
),
);
}
}
57 changes: 57 additions & 0 deletions mobile-app/lib/v2/components/bottom_sheet_container.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:resonance_network_wallet/v2/theme/app_colors.dart';
import 'package:resonance_network_wallet/v2/theme/app_text_styles.dart';

class BottomSheetContainer extends StatelessWidget {
final String title;
final Widget child;

const BottomSheetContainer({super.key, required this.title, required this.child});

@override
Widget build(BuildContext context) {
final colors = context.colors;
final text = context.themeText;

return Container(
padding: const EdgeInsets.fromLTRB(24, 40, 24, 40),
decoration: BoxDecoration(
color: const Color(0xFF1A1A1A),
border: Border.all(color: const Color(0xFF3D3D3D)),
borderRadius: BorderRadius.circular(24),
),
child: SafeArea(
top: false,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(title, style: text.smallTitle?.copyWith(color: colors.textPrimary, fontSize: 20)),
GestureDetector(
onTap: () => Navigator.pop(context),
child: Icon(Icons.close, color: colors.textPrimary, size: 20),
),
],
),
const SizedBox(height: 32),
child,
],
),
),
);
}

static void show(BuildContext context, {required WidgetBuilder builder}) {
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
isScrollControlled: true,
constraints: BoxConstraints(maxWidth: MediaQuery.of(context).size.width),
builder: (ctx) => BackdropFilter(filter: ImageFilter.blur(sigmaX: 2, sigmaY: 2), child: builder(ctx)),
);
}
}
98 changes: 98 additions & 0 deletions mobile-app/lib/v2/components/glass_button.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
import 'package:flutter/material.dart';
import 'dart:ui';

class GlassButton extends StatelessWidget {
final VoidCallback? onTap;
final Widget child;
final EdgeInsetsGeometry padding;
final double radius;
final bool filled;
final double height;

const GlassButton({
super.key,
this.onTap,
required this.child,
required this.height,
this.radius = 14,
this.padding = const EdgeInsets.symmetric(horizontal: 40, vertical: 20),
this.filled = false,
});

@override
Widget build(BuildContext context) {
final borderRadius = BorderRadius.circular(radius);
final outerBorderColor = filled
? const Color(0xFFFFFFFF).withValues(alpha: 0.32)
: const Color(0xFFFFFFFF).withValues(alpha: 0.44);
final innerBorderColor = filled
? const Color(0xFFFFFFFF).withValues(alpha: 0.18)
: const Color(0xFFFFFFFF).withValues(alpha: 0.12);

return GestureDetector(
onTap: onTap,
child: SizedBox(
height: height,
width: double.infinity,
child: Stack(
fit: StackFit.expand,
children: [
ClipRRect(
borderRadius: borderRadius,
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: borderRadius,
color: filled ? const Color(0xFFFFFFFF).withValues(alpha: 0.1) : Colors.transparent,
),
),
),
),
Positioned.fill(
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: borderRadius,
border: Border.all(color: outerBorderColor, width: 0.889),
),
),
),
Positioned.fill(
child: Padding(
padding: const EdgeInsets.all(1),
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(radius - 1),
border: Border.all(color: innerBorderColor, width: 0.6),
),
),
),
),
Positioned.fill(
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: borderRadius,
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Colors.black.withValues(alpha: 0.12),
Colors.transparent,
Colors.transparent,
Colors.black.withValues(alpha: 0.16),
],
stops: const [0.0, 0.22, 0.78, 1.0],
),
),
),
),
Padding(
padding: padding,
child: Center(child: child),
),
],
),
),
);
}
}
45 changes: 45 additions & 0 deletions mobile-app/lib/v2/components/glass_circle_icon_button.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import 'package:flutter/material.dart';

class GlassCircleIconButton extends StatelessWidget {
static const _bgAsset = 'assets/v2/glass_circle_icon_button_bg.png';

final IconData icon;
final VoidCallback? onTap;
final double size;
final double iconSize;
final Color iconColor;
final bool filled;

const GlassCircleIconButton({
super.key,
required this.icon,
required this.iconColor,
this.onTap,
this.size = 48,
this.iconSize = 20,
this.filled = true,
});

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: SizedBox(
width: size,
height: size,
child: Stack(
fit: StackFit.expand,
children: [
Opacity(
opacity: filled ? 1 : 0.92,
child: Image.asset(_bgAsset, fit: BoxFit.cover),
),
Center(
child: Icon(icon, color: iconColor, size: iconSize),
),
],
),
),
);
}
}
Loading
Loading