diff --git a/mobile/apps/auth/assets/2.0x/lock_screen_icon.png b/mobile/apps/auth/assets/2.0x/lock_screen_icon.png new file mode 100644 index 00000000000..89ef8898159 Binary files /dev/null and b/mobile/apps/auth/assets/2.0x/lock_screen_icon.png differ diff --git a/mobile/apps/auth/assets/2.0x/upload_file.png b/mobile/apps/auth/assets/2.0x/upload_file.png new file mode 100644 index 00000000000..12a92132296 Binary files /dev/null and b/mobile/apps/auth/assets/2.0x/upload_file.png differ diff --git a/mobile/apps/auth/assets/2.0x/warning-grey.png b/mobile/apps/auth/assets/2.0x/warning-grey.png new file mode 100644 index 00000000000..aac9fdf2ac5 Binary files /dev/null and b/mobile/apps/auth/assets/2.0x/warning-grey.png differ diff --git a/mobile/apps/auth/assets/3.0x/lock_screen_icon.png b/mobile/apps/auth/assets/3.0x/lock_screen_icon.png new file mode 100644 index 00000000000..1497653e9ca Binary files /dev/null and b/mobile/apps/auth/assets/3.0x/lock_screen_icon.png differ diff --git a/mobile/apps/auth/assets/3.0x/upload_file.png b/mobile/apps/auth/assets/3.0x/upload_file.png new file mode 100644 index 00000000000..dd49cfd45d0 Binary files /dev/null and b/mobile/apps/auth/assets/3.0x/upload_file.png differ diff --git a/mobile/apps/auth/assets/3.0x/warning-grey.png b/mobile/apps/auth/assets/3.0x/warning-grey.png new file mode 100644 index 00000000000..e8b788289c9 Binary files /dev/null and b/mobile/apps/auth/assets/3.0x/warning-grey.png differ diff --git a/mobile/apps/auth/assets/lock_screen_icon.png b/mobile/apps/auth/assets/lock_screen_icon.png new file mode 100644 index 00000000000..d7e64586fbe Binary files /dev/null and b/mobile/apps/auth/assets/lock_screen_icon.png differ diff --git a/mobile/apps/auth/assets/svg/auth-logo.svg b/mobile/apps/auth/assets/svg/app-logo.svg similarity index 100% rename from mobile/apps/auth/assets/svg/auth-logo.svg rename to mobile/apps/auth/assets/svg/app-logo.svg diff --git a/mobile/apps/auth/assets/upload_file.png b/mobile/apps/auth/assets/upload_file.png new file mode 100644 index 00000000000..3340b77241e Binary files /dev/null and b/mobile/apps/auth/assets/upload_file.png differ diff --git a/mobile/apps/auth/assets/warning-grey.png b/mobile/apps/auth/assets/warning-grey.png new file mode 100644 index 00000000000..bf6720c4533 Binary files /dev/null and b/mobile/apps/auth/assets/warning-grey.png differ diff --git a/mobile/apps/auth/lib/ente_theme_data.dart b/mobile/apps/auth/lib/ente_theme_data.dart index 82fbf3d3134..79d3df27697 100644 --- a/mobile/apps/auth/lib/ente_theme_data.dart +++ b/mobile/apps/auth/lib/ente_theme_data.dart @@ -165,13 +165,6 @@ final darkThemeData = ThemeData( ), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), - inputDecorationTheme: const InputDecorationTheme().copyWith( - focusedBorder: const UnderlineInputBorder( - borderSide: BorderSide( - color: Color.fromARGB(255, 152, 77, 244), - ), - ), - ), checkboxTheme: CheckboxThemeData( side: const BorderSide( color: Colors.grey, diff --git a/mobile/apps/auth/lib/onboarding/view/onboarding_page.dart b/mobile/apps/auth/lib/onboarding/view/onboarding_page.dart index ba4442dc560..4ff93f92f19 100644 --- a/mobile/apps/auth/lib/onboarding/view/onboarding_page.dart +++ b/mobile/apps/auth/lib/onboarding/view/onboarding_page.dart @@ -85,7 +85,7 @@ class _OnboardingPageState extends State { backgroundColor: accentColor, appBar: AppBar( leading: const SizedBox(), - title: SvgPicture.asset("assets/svg/auth-logo.svg"), + title: SvgPicture.asset("assets/svg/app-logo.svg"), backgroundColor: accentColor, elevation: 0, scrolledUnderElevation: 0, diff --git a/mobile/apps/auth/lib/ui/components/auth_qr_dialog.dart b/mobile/apps/auth/lib/ui/components/auth_qr_dialog.dart index 51d6aa785c0..2a975f60ad0 100644 --- a/mobile/apps/auth/lib/ui/components/auth_qr_dialog.dart +++ b/mobile/apps/auth/lib/ui/components/auth_qr_dialog.dart @@ -241,7 +241,7 @@ class _AuthQrDialogState extends State { Align( alignment: Alignment.centerRight, child: SvgPicture.asset( - 'assets/svg/auth-logo.svg', + 'assets/svg/app-logo.svg', height: 16, colorFilter: const ColorFilter.mode( accentColor, diff --git a/mobile/apps/auth/lib/ui/home/widgets/auth_logo_widget.dart b/mobile/apps/auth/lib/ui/home/widgets/auth_logo_widget.dart index 922ee95fff3..c128cb87523 100644 --- a/mobile/apps/auth/lib/ui/home/widgets/auth_logo_widget.dart +++ b/mobile/apps/auth/lib/ui/home/widgets/auth_logo_widget.dart @@ -18,7 +18,7 @@ class AuthLogoWidget extends StatelessWidget { final logoColor = color ?? colorScheme.textBase; return SvgPicture.asset( - 'assets/svg/auth-logo.svg', + 'assets/svg/app-logo.svg', height: height, colorFilter: ColorFilter.mode(logoColor, BlendMode.srcIn), ); diff --git a/mobile/apps/auth/pubspec.yaml b/mobile/apps/auth/pubspec.yaml index d26934cf8cd..0c173447292 100644 --- a/mobile/apps/auth/pubspec.yaml +++ b/mobile/apps/auth/pubspec.yaml @@ -1,6 +1,6 @@ name: ente_auth description: ente two-factor authenticator -version: 4.4.16+600 +version: 4.4.16+672 publish_to: none environment: diff --git a/mobile/packages/lock_screen/assets/2.0x/locker_pin.png b/mobile/apps/locker/assets/2.0x/lock_screen_icon.png similarity index 100% rename from mobile/packages/lock_screen/assets/2.0x/locker_pin.png rename to mobile/apps/locker/assets/2.0x/lock_screen_icon.png diff --git a/mobile/apps/locker/assets/2.0x/locker-logo-blue.png b/mobile/apps/locker/assets/2.0x/locker-logo-blue.png deleted file mode 100644 index 9004f897a39..00000000000 Binary files a/mobile/apps/locker/assets/2.0x/locker-logo-blue.png and /dev/null differ diff --git a/mobile/packages/lock_screen/assets/3.0x/locker_pin.png b/mobile/apps/locker/assets/3.0x/lock_screen_icon.png similarity index 100% rename from mobile/packages/lock_screen/assets/3.0x/locker_pin.png rename to mobile/apps/locker/assets/3.0x/lock_screen_icon.png diff --git a/mobile/apps/locker/assets/3.0x/locker-logo-blue.png b/mobile/apps/locker/assets/3.0x/locker-logo-blue.png deleted file mode 100644 index 98565e59ab5..00000000000 Binary files a/mobile/apps/locker/assets/3.0x/locker-logo-blue.png and /dev/null differ diff --git a/mobile/packages/lock_screen/assets/locker_pin.png b/mobile/apps/locker/assets/lock_screen_icon.png similarity index 100% rename from mobile/packages/lock_screen/assets/locker_pin.png rename to mobile/apps/locker/assets/lock_screen_icon.png diff --git a/mobile/apps/locker/assets/locker-logo-blue.png b/mobile/apps/locker/assets/locker-logo-blue.png deleted file mode 100644 index 06b2434ace9..00000000000 Binary files a/mobile/apps/locker/assets/locker-logo-blue.png and /dev/null differ diff --git a/mobile/apps/locker/assets/svg/app-logo.svg b/mobile/apps/locker/assets/svg/app-logo.svg new file mode 100644 index 00000000000..04b77d04f94 --- /dev/null +++ b/mobile/apps/locker/assets/svg/app-logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/mobile/packages/accounts/lib/pages/email_entry_page.dart b/mobile/packages/accounts/lib/pages/email_entry_page.dart index 8623107137b..a5268654603 100644 --- a/mobile/packages/accounts/lib/pages/email_entry_page.dart +++ b/mobile/packages/accounts/lib/pages/email_entry_page.dart @@ -8,6 +8,7 @@ import 'package:ente_ui/theme/ente_theme.dart'; import 'package:ente_utils/platform_util.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:password_strength/password_strength.dart'; import "package:styled_text/styled_text.dart"; @@ -86,7 +87,14 @@ class _EmailEntryPageState extends State { scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset('assets/locker-logo-blue.png', height: 24), + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', + height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), + ), leading: IconButton( icon: const Icon(Icons.arrow_back), color: colorScheme.primary700, diff --git a/mobile/packages/accounts/lib/pages/login_page.dart b/mobile/packages/accounts/lib/pages/login_page.dart index c657a50117e..3a8e9ff6193 100644 --- a/mobile/packages/accounts/lib/pages/login_page.dart +++ b/mobile/packages/accounts/lib/pages/login_page.dart @@ -7,6 +7,7 @@ import 'package:ente_ui/components/buttons/dynamic_fab.dart'; import 'package:ente_ui/theme/ente_theme.dart'; import 'package:ente_utils/platform_util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:logging/logging.dart'; import "package:styled_text/tags/styled_text_tag_action.dart"; import "package:styled_text/widgets/styled_text.dart"; @@ -85,11 +86,16 @@ class _LoginPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/lib/pages/login_pwd_verification_page.dart b/mobile/packages/accounts/lib/pages/login_pwd_verification_page.dart index 6429d56e8a7..49538533e42 100644 --- a/mobile/packages/accounts/lib/pages/login_pwd_verification_page.dart +++ b/mobile/packages/accounts/lib/pages/login_pwd_verification_page.dart @@ -10,6 +10,7 @@ import "package:ente_ui/theme/ente_theme.dart"; import "package:ente_ui/utils/dialog_util.dart"; import "package:ente_utils/email_util.dart"; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import "package:logging/logging.dart"; // LoginPasswordVerificationPage is a page that allows the user to enter their password to verify their identity. @@ -74,11 +75,16 @@ class _LoginPasswordVerificationPageState backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/lib/pages/ott_verification_page.dart b/mobile/packages/accounts/lib/pages/ott_verification_page.dart index d85e1719d4c..d6fa05bb449 100644 --- a/mobile/packages/accounts/lib/pages/ott_verification_page.dart +++ b/mobile/packages/accounts/lib/pages/ott_verification_page.dart @@ -4,6 +4,7 @@ import 'package:ente_strings/ente_strings.dart'; import 'package:ente_ui/components/buttons/dynamic_fab.dart'; import 'package:ente_ui/theme/ente_theme.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:pinput/pinput.dart'; class OTTVerificationPage extends StatefulWidget { @@ -68,11 +69,16 @@ class _OTTVerificationPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/lib/pages/passkey_page.dart b/mobile/packages/accounts/lib/pages/passkey_page.dart index 3372ddfced5..76acf7f3931 100644 --- a/mobile/packages/accounts/lib/pages/passkey_page.dart +++ b/mobile/packages/accounts/lib/pages/passkey_page.dart @@ -12,6 +12,7 @@ import 'package:ente_ui/utils/dialog_util.dart'; import 'package:ente_ui/utils/toast_util.dart'; import 'package:ente_utils/navigation_util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:logging/logging.dart'; import 'package:url_launcher/url_launcher_string.dart'; @@ -148,11 +149,16 @@ class _PasskeyPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/lib/pages/password_entry_page.dart b/mobile/packages/accounts/lib/pages/password_entry_page.dart index 30f87f7be13..db697491134 100644 --- a/mobile/packages/accounts/lib/pages/password_entry_page.dart +++ b/mobile/packages/accounts/lib/pages/password_entry_page.dart @@ -13,6 +13,7 @@ import 'package:ente_utils/navigation_util.dart'; import 'package:ente_utils/platform_util.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:logging/logging.dart'; import 'package:password_strength/password_strength.dart'; import 'package:styled_text/styled_text.dart'; @@ -113,11 +114,17 @@ class _PasswordEntryPageState extends State { resizeToAvoidBottomInset: isKeypadOpen, backgroundColor: colorScheme.backgroundBase, appBar: AppBar( + elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: widget.mode == PasswordEntryMode.reset ? Container() @@ -128,7 +135,6 @@ class _PasswordEntryPageState extends State { Navigator.of(context).pop(); }, ), - elevation: 0, ), body: _getBody(title), floatingActionButton: DynamicFAB( diff --git a/mobile/packages/accounts/lib/pages/password_reentry_page.dart b/mobile/packages/accounts/lib/pages/password_reentry_page.dart index 11aa46ea80c..12ca4a9875c 100644 --- a/mobile/packages/accounts/lib/pages/password_reentry_page.dart +++ b/mobile/packages/accounts/lib/pages/password_reentry_page.dart @@ -14,6 +14,7 @@ import 'package:ente_ui/theme/ente_theme.dart'; import 'package:ente_ui/utils/dialog_util.dart'; import 'package:ente_utils/email_util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:logging/logging.dart'; class PasswordReentryPage extends StatefulWidget { @@ -69,11 +70,16 @@ class _PasswordReentryPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/lib/pages/recovery_key_page.dart b/mobile/packages/accounts/lib/pages/recovery_key_page.dart index 2f69fd8665b..c3d812c30c7 100644 --- a/mobile/packages/accounts/lib/pages/recovery_key_page.dart +++ b/mobile/packages/accounts/lib/pages/recovery_key_page.dart @@ -14,6 +14,7 @@ import 'package:ente_utils/share_utils.dart'; import 'package:file_saver/file_saver.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:share_plus/share_plus.dart'; class RecoveryKeyPage extends StatefulWidget { @@ -88,9 +89,17 @@ class _RecoveryKeyPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset('assets/locker-logo-blue.png', height: 24), + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', + height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), + ), leading: widget.showAppBar == false ? const SizedBox.shrink() : IconButton( diff --git a/mobile/packages/accounts/lib/pages/recovery_page.dart b/mobile/packages/accounts/lib/pages/recovery_page.dart index 9080441eccb..8533150bbee 100644 --- a/mobile/packages/accounts/lib/pages/recovery_page.dart +++ b/mobile/packages/accounts/lib/pages/recovery_page.dart @@ -10,6 +10,7 @@ import 'package:ente_ui/utils/dialog_util.dart'; import 'package:ente_ui/utils/toast_util.dart'; import "package:ente_utils/email_util.dart"; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class RecoveryPage extends StatefulWidget { final BaseConfiguration config; @@ -80,11 +81,16 @@ class _RecoveryPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/lib/pages/two_factor_authentication_page.dart b/mobile/packages/accounts/lib/pages/two_factor_authentication_page.dart index bb96e0e5aea..2c8e18e2879 100644 --- a/mobile/packages/accounts/lib/pages/two_factor_authentication_page.dart +++ b/mobile/packages/accounts/lib/pages/two_factor_authentication_page.dart @@ -5,6 +5,7 @@ import 'package:ente_ui/lifecycle_event_handler.dart'; import 'package:ente_ui/theme/ente_theme.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:pinput/pinput.dart'; class TwoFactorAuthenticationPage extends StatefulWidget { @@ -64,11 +65,16 @@ class _TwoFactorAuthenticationPageState backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), @@ -143,8 +149,9 @@ class _TwoFactorAuthenticationPageState children: [ const SizedBox(height: 24), Image.asset( - 'packages/ente_lock_screen/assets/locker_pin.png', - height: 120, + 'assets/lock_screen_icon.png', + width: 129, + height: 95, ), const SizedBox(height: 24), Text( diff --git a/mobile/packages/accounts/lib/pages/two_factor_recovery_page.dart b/mobile/packages/accounts/lib/pages/two_factor_recovery_page.dart index e6ccdafcf38..15101eecf69 100644 --- a/mobile/packages/accounts/lib/pages/two_factor_recovery_page.dart +++ b/mobile/packages/accounts/lib/pages/two_factor_recovery_page.dart @@ -4,6 +4,7 @@ import 'package:ente_ui/components/buttons/dynamic_fab.dart'; import 'package:ente_ui/theme/ente_theme.dart'; import 'package:ente_utils/email_util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class TwoFactorRecoveryPage extends StatefulWidget { final String sessionID; @@ -55,11 +56,16 @@ class _TwoFactorRecoveryPageState extends State { backgroundColor: colorScheme.backgroundBase, appBar: AppBar( elevation: 0, + scrolledUnderElevation: 0, backgroundColor: colorScheme.backgroundBase, centerTitle: true, - title: Image.asset( - 'assets/locker-logo-blue.png', + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', height: 24, + colorFilter: ColorFilter.mode( + colorScheme.primary700, + BlendMode.srcIn, + ), ), leading: IconButton( icon: const Icon(Icons.arrow_back), diff --git a/mobile/packages/accounts/pubspec.lock b/mobile/packages/accounts/pubspec.lock index f70d27abfcc..77c51c60b40 100644 --- a/mobile/packages/accounts/pubspec.lock +++ b/mobile/packages/accounts/pubspec.lock @@ -501,7 +501,7 @@ packages: source: hosted version: "0.1.3" flutter_svg: - dependency: transitive + dependency: "direct main" description: name: flutter_svg sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 diff --git a/mobile/packages/accounts/pubspec.yaml b/mobile/packages/accounts/pubspec.yaml index 0d8f3c8fce8..3ae81ac6a89 100644 --- a/mobile/packages/accounts/pubspec.yaml +++ b/mobile/packages/accounts/pubspec.yaml @@ -36,6 +36,7 @@ dependencies: file_saver: ^0.3.0 flutter: sdk: flutter + flutter_svg: ^2.0.10+1 hugeicons: ^1.1.1 logging: ^1.2.0 password_strength: ^0.2.0 diff --git a/mobile/packages/lock_screen/lib/lock_screen_config.dart b/mobile/packages/lock_screen/lib/lock_screen_config.dart deleted file mode 100644 index 3ac27f61c55..00000000000 --- a/mobile/packages/lock_screen/lib/lock_screen_config.dart +++ /dev/null @@ -1,175 +0,0 @@ -import "package:ente_ui/theme/colors.dart"; -import "package:ente_ui/theme/ente_theme.dart"; -import "package:ente_ui/theme/theme_config.dart"; -import "package:flutter/material.dart"; - -/// Configuration for lock screen UI -class LockScreenConfig { - final Widget titleWidget; - final Widget Function(BuildContext, TextEditingController?) iconBuilder; - final double pinBoxHeight; - final double pinBoxWidth; - final EdgeInsets? pinBoxPadding; - final double pinBoxBorderRadius; - final Color? pinBoxBorderColor; - final Color? pinBoxBackgroundColor; - final bool useDynamicColors; - - const LockScreenConfig({ - required this.titleWidget, - required this.iconBuilder, - required this.pinBoxHeight, - required this.pinBoxWidth, - this.pinBoxPadding, - required this.pinBoxBorderRadius, - this.pinBoxBorderColor, - this.pinBoxBackgroundColor, - this.useDynamicColors = false, - }); - - /// Default configuration for Auth app - static const LockScreenConfig auth = LockScreenConfig( - titleWidget: SizedBox.shrink(), - iconBuilder: _buildAuthIcon, - pinBoxHeight: 48, - pinBoxWidth: 48, - pinBoxPadding: EdgeInsets.only(top: 6.0), - pinBoxBorderRadius: 15.0, - pinBoxBorderColor: Color.fromRGBO(45, 194, 98, 1.0), - pinBoxBackgroundColor: null, - useDynamicColors: false, - ); - - /// Configuration for Locker app - static LockScreenConfig locker = LockScreenConfig( - titleWidget: _buildLockerTitle(), - iconBuilder: _buildLockerIcon, - pinBoxHeight: 48, - pinBoxWidth: 48, - pinBoxPadding: const EdgeInsets.only(top: 6.0), - pinBoxBorderRadius: 15.0, - pinBoxBorderColor: null, - pinBoxBackgroundColor: null, - useDynamicColors: true, - ); - - /// Get current configuration based on AppThemeConfig - static LockScreenConfig get current { - switch (AppThemeConfig.currentApp) { - case EnteApp.locker: - return locker; - case EnteApp.auth: - return auth; - } - } - - /// Check if title should be shown (not a SizedBox.shrink) - bool get showTitle => titleWidget is! SizedBox; - - /// Get border color based on config and theme - Color getBorderColor(EnteColorScheme colorTheme) { - if (useDynamicColors) { - return colorTheme.fillMuted; - } - return pinBoxBorderColor ?? colorTheme.fillMuted; - } - - /// Get background color based on config and theme - Color? getBackgroundColor(EnteColorScheme colorTheme) { - if (useDynamicColors) { - return colorTheme.backgroundBase; - } - return pinBoxBackgroundColor; - } - - // Helper methods for building title - static Widget _buildLockerTitle() { - return Image.asset( - 'assets/locker-logo-blue.png', - height: 24, - ); - } - - // Helper methods for building icons - static Widget _buildAuthIcon( - BuildContext context, - TextEditingController? controller, - ) { - final colorTheme = getEnteColorScheme(context); - return SizedBox( - height: 120, - width: 120, - child: Stack( - alignment: Alignment.center, - children: [ - Container( - width: 82, - height: 82, - decoration: BoxDecoration( - shape: BoxShape.circle, - gradient: LinearGradient( - colors: [ - Colors.grey.shade500.withValues(alpha: 0.2), - Colors.grey.shade50.withValues(alpha: 0.1), - Colors.grey.shade400.withValues(alpha: 0.2), - Colors.grey.shade300.withValues(alpha: 0.4), - ], - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - ), - ), - child: Padding( - padding: const EdgeInsets.all(1.0), - child: Container( - decoration: BoxDecoration( - shape: BoxShape.circle, - color: colorTheme.backgroundBase, - ), - ), - ), - ), - if (controller != null) - SizedBox( - height: 75, - width: 75, - child: ValueListenableBuilder( - valueListenable: controller, - builder: (context, value, child) { - return TweenAnimationBuilder( - tween: Tween( - begin: 0, - end: controller.text.length / 4, - ), - curve: Curves.ease, - duration: const Duration(milliseconds: 250), - builder: (context, value, _) => CircularProgressIndicator( - backgroundColor: colorTheme.fillFaintPressed, - value: value, - color: colorTheme.primary400, - strokeWidth: 1.5, - ), - ); - }, - ), - ), - Icon( - Icons.lock, - color: colorTheme.textBase, - size: 30, - ), - ], - ), - ); - } - - static Widget _buildLockerIcon( - BuildContext context, - TextEditingController? controller, - ) { - return Image.asset( - 'packages/ente_lock_screen/assets/locker_pin.png', - width: 129, - height: 95, - ); - } -} diff --git a/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_password.dart b/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_password.dart index dc8e52b2275..cac0d99965e 100644 --- a/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_password.dart +++ b/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_password.dart @@ -1,4 +1,3 @@ -import "package:ente_lock_screen/lock_screen_config.dart"; import "package:ente_lock_screen/lock_screen_settings.dart"; import "package:ente_strings/ente_strings.dart"; import "package:ente_ui/components/buttons/dynamic_fab.dart"; @@ -6,6 +5,7 @@ import "package:ente_ui/components/text_input_widget.dart"; import "package:ente_ui/theme/ente_theme.dart"; import "package:flutter/material.dart"; import "package:flutter/services.dart"; +import "package:flutter_svg/flutter_svg.dart"; class LockScreenConfirmPassword extends StatefulWidget { const LockScreenConfirmPassword({ @@ -58,7 +58,6 @@ class _LockScreenConfirmPasswordState extends State { Widget build(BuildContext context) { final colorTheme = getEnteColorScheme(context); final textTheme = getEnteTextTheme(context); - final config = LockScreenConfig.current; final isKeypadOpen = MediaQuery.viewInsetsOf(context).bottom > 100; FloatingActionButtonLocation? fabLocation() { @@ -70,11 +69,12 @@ class _LockScreenConfirmPasswordState extends State { } return Scaffold( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, resizeToAvoidBottomInset: isKeypadOpen, appBar: AppBar( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, elevation: 0, + scrolledUnderElevation: 0, leading: IconButton( onPressed: () { FocusScope.of(context).unfocus(); @@ -85,8 +85,15 @@ class _LockScreenConfirmPasswordState extends State { color: colorTheme.textBase, ), ), - centerTitle: config.showTitle, - title: config.titleWidget, + centerTitle: true, + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', + height: 24, + colorFilter: ColorFilter.mode( + colorTheme.primary700, + BlendMode.srcIn, + ), + ), ), floatingActionButton: ValueListenableBuilder( valueListenable: _isFormValid, @@ -106,15 +113,17 @@ class _LockScreenConfirmPasswordState extends State { body: SingleChildScrollView( child: Center( child: Padding( - padding: EdgeInsets.symmetric( - horizontal: config.showTitle ? 16.0 : 0, - ), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox(height: config.showTitle ? 40 : 0), - config.iconBuilder(context, null), - SizedBox(height: config.showTitle ? 24 : 0), + const SizedBox(height: 40), + Image.asset( + 'assets/lock_screen_icon.png', + width: 129, + height: 95, + ), + const SizedBox(height: 24), Text( context.strings.reEnterPassword, textAlign: TextAlign.center, diff --git a/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_pin.dart b/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_pin.dart index 3353d45cb2d..258f755db23 100644 --- a/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_pin.dart +++ b/mobile/packages/lock_screen/lib/ui/lock_screen_confirm_pin.dart @@ -1,12 +1,14 @@ import "dart:io"; -import "package:ente_lock_screen/lock_screen_config.dart"; import "package:ente_lock_screen/lock_screen_settings.dart"; import "package:ente_lock_screen/ui/custom_pin_keypad.dart"; import "package:ente_strings/ente_strings.dart"; +import "package:ente_ui/theme/colors.dart"; import "package:ente_ui/theme/ente_theme.dart"; +import "package:ente_ui/theme/text_style.dart"; import "package:flutter/material.dart"; import "package:flutter/services.dart"; +import "package:flutter_svg/flutter_svg.dart"; import "package:pinput/pinput.dart"; class LockScreenConfirmPin extends StatefulWidget { @@ -58,13 +60,13 @@ class _LockScreenConfirmPinState extends State { Widget build(BuildContext context) { final colorTheme = getEnteColorScheme(context); final textTheme = getEnteTextTheme(context); - final config = LockScreenConfig.current; return Scaffold( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, appBar: AppBar( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, elevation: 0, + scrolledUnderElevation: 0, leading: IconButton( onPressed: () { Navigator.of(context).pop(false); @@ -74,43 +76,54 @@ class _LockScreenConfirmPinState extends State { color: colorTheme.textBase, ), ), - centerTitle: config.showTitle, - title: config.titleWidget, + centerTitle: true, + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', + height: 24, + colorFilter: ColorFilter.mode( + colorTheme.primary700, + BlendMode.srcIn, + ), + ), ), floatingActionButton: isPlatformDesktop ? null : CustomPinKeypad(controller: _confirmPinController), floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, body: SingleChildScrollView( - child: _getBody(colorTheme, textTheme, config), + child: _getBody(colorTheme, textTheme), ), ); } - Widget _getBody(colorTheme, textTheme, LockScreenConfig config) { + Widget _getBody(EnteColorScheme colorTheme, EnteTextTheme textTheme) { final pinPutDecoration = PinTheme( - height: config.pinBoxHeight, - width: config.pinBoxWidth, - padding: config.pinBoxPadding, + height: 48, + width: 48, + padding: const EdgeInsets.only(top: 6.0), decoration: BoxDecoration( - color: config.getBackgroundColor(colorTheme), + color: colorTheme.backgroundBase, border: Border.all( - color: config.getBorderColor(colorTheme), + color: colorTheme.fillMuted, width: 1, ), - borderRadius: BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), ), ); return Center( child: Padding( - padding: EdgeInsets.symmetric(horizontal: config.showTitle ? 24.0 : 0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox(height: config.showTitle ? 40 : 0), - config.iconBuilder(context, _confirmPinController), - SizedBox(height: config.showTitle ? 24 : 0), + const SizedBox(height: 40), + Image.asset( + 'assets/lock_screen_icon.png', + width: 129, + height: 95, + ), + const SizedBox(height: 24), Text( context.strings.reEnterPin, style: textTheme.bodyBold, @@ -125,51 +138,42 @@ class _LockScreenConfirmPinState extends State { defaultPinTheme: pinPutDecoration.copyWith( textStyle: textTheme.h3Bold, decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.getBorderColor(colorTheme), + color: colorTheme.fillMuted, ), ), ), submittedPinTheme: pinPutDecoration.copyWith( textStyle: textTheme.h3Bold.copyWith( - color: config.showTitle ? colorTheme.primary700 : null, + color: colorTheme.primary700, ), decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.showTitle - ? colorTheme.primary700 - : colorTheme.fillBase, + color: colorTheme.primary700, ), ), ), followingPinTheme: pinPutDecoration.copyWith( decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.getBorderColor(colorTheme), + color: colorTheme.fillMuted, ), ), ), focusedPinTheme: pinPutDecoration.copyWith( decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.showTitle - ? colorTheme.fillBase - : config.getBorderColor(colorTheme), + color: colorTheme.fillBase, ), ), ), errorPinTheme: pinPutDecoration.copyWith( decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( color: colorTheme.warning400, ), diff --git a/mobile/packages/lock_screen/lib/ui/lock_screen_password.dart b/mobile/packages/lock_screen/lib/ui/lock_screen_password.dart index 06b4a930b9b..f795806b894 100644 --- a/mobile/packages/lock_screen/lib/ui/lock_screen_password.dart +++ b/mobile/packages/lock_screen/lib/ui/lock_screen_password.dart @@ -1,7 +1,6 @@ import "dart:convert"; import "package:ente_crypto_dart/ente_crypto_dart.dart"; -import "package:ente_lock_screen/lock_screen_config.dart"; import "package:ente_lock_screen/lock_screen_settings.dart"; import "package:ente_lock_screen/ui/lock_screen_confirm_password.dart"; import "package:ente_lock_screen/ui/lock_screen_options.dart"; @@ -11,6 +10,7 @@ import "package:ente_ui/components/text_input_widget.dart"; import "package:ente_ui/theme/ente_theme.dart"; import "package:flutter/material.dart"; import "package:flutter/services.dart"; +import "package:flutter_svg/flutter_svg.dart"; /// [isChangingLockScreenSettings] Authentication required for changing lock screen settings. /// Set to true when the app requires the user to authenticate before allowing @@ -69,7 +69,6 @@ class _LockScreenPasswordState extends State { Widget build(BuildContext context) { final colorTheme = getEnteColorScheme(context); final textTheme = getEnteTextTheme(context); - final config = LockScreenConfig.current; final isKeypadOpen = MediaQuery.viewInsetsOf(context).bottom > 100; FloatingActionButtonLocation? fabLocation() { @@ -81,11 +80,12 @@ class _LockScreenPasswordState extends State { } return Scaffold( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, resizeToAvoidBottomInset: isKeypadOpen, appBar: AppBar( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, elevation: 0, + scrolledUnderElevation: 0, leading: IconButton( onPressed: () { FocusScope.of(context).unfocus(); @@ -96,8 +96,15 @@ class _LockScreenPasswordState extends State { color: colorTheme.textBase, ), ), - centerTitle: config.showTitle, - title: config.titleWidget, + centerTitle: true, + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', + height: 24, + colorFilter: ColorFilter.mode( + colorTheme.primary700, + BlendMode.srcIn, + ), + ), ), floatingActionButton: ValueListenableBuilder( valueListenable: _isFormValid, @@ -117,15 +124,17 @@ class _LockScreenPasswordState extends State { body: SingleChildScrollView( child: Center( child: Padding( - padding: EdgeInsets.symmetric( - horizontal: config.showTitle ? 16.0 : 0, - ), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox(height: config.showTitle ? 40 : 0), - config.iconBuilder(context, null), - SizedBox(height: config.showTitle ? 24 : 0), + const SizedBox(height: 40), + Image.asset( + 'assets/lock_screen_icon.png', + width: 129, + height: 95, + ), + const SizedBox(height: 24), Text( widget.isChangingLockScreenSettings ? context.strings.enterAppLockPassword diff --git a/mobile/packages/lock_screen/lib/ui/lock_screen_pin.dart b/mobile/packages/lock_screen/lib/ui/lock_screen_pin.dart index ee8b6f7ff6a..c95592ec383 100644 --- a/mobile/packages/lock_screen/lib/ui/lock_screen_pin.dart +++ b/mobile/packages/lock_screen/lib/ui/lock_screen_pin.dart @@ -2,7 +2,6 @@ import "dart:convert"; import "dart:io"; import "package:ente_crypto_dart/ente_crypto_dart.dart"; -import "package:ente_lock_screen/lock_screen_config.dart"; import "package:ente_lock_screen/lock_screen_settings.dart"; import "package:ente_lock_screen/ui/custom_pin_keypad.dart"; import "package:ente_lock_screen/ui/lock_screen_confirm_pin.dart"; @@ -13,6 +12,7 @@ import "package:ente_ui/theme/ente_theme.dart"; import "package:ente_ui/theme/text_style.dart"; import "package:flutter/material.dart"; import "package:flutter/services.dart"; +import "package:flutter_svg/flutter_svg.dart"; import 'package:pinput/pinput.dart'; /// [isChangingLockScreenSettings] Authentication required for changing lock screen settings. @@ -49,6 +49,7 @@ class _LockScreenPinState extends State { bool isPinValid = false; int invalidAttemptsCount = 0; bool isPlatformDesktop = false; + @override void initState() { super.initState(); @@ -125,26 +126,26 @@ class _LockScreenPinState extends State { Widget build(BuildContext context) { final colorTheme = getEnteColorScheme(context); final textTheme = getEnteTextTheme(context); - final config = LockScreenConfig.current; final pinPutDecoration = PinTheme( - height: config.pinBoxHeight, - width: config.pinBoxWidth, - padding: config.pinBoxPadding, + height: 48, + width: 48, + padding: const EdgeInsets.only(top: 6.0), decoration: BoxDecoration( - color: config.getBackgroundColor(colorTheme), + color: colorTheme.backgroundBase, border: Border.all( - color: config.getBorderColor(colorTheme), + color: colorTheme.fillMuted, width: 1, ), - borderRadius: BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), ), ); return Scaffold( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, appBar: AppBar( - backgroundColor: config.getBackgroundColor(colorTheme), + backgroundColor: colorTheme.backgroundBase, elevation: 0, + scrolledUnderElevation: 0, leading: IconButton( onPressed: () { Navigator.of(context).pop(false); @@ -154,15 +155,22 @@ class _LockScreenPinState extends State { color: colorTheme.textBase, ), ), - centerTitle: config.showTitle, - title: config.titleWidget, + centerTitle: true, + title: SvgPicture.asset( + 'assets/svg/app-logo.svg', + height: 24, + colorFilter: ColorFilter.mode( + colorTheme.primary700, + BlendMode.srcIn, + ), + ), ), floatingActionButton: isPlatformDesktop ? null : CustomPinKeypad(controller: _pinController), floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, body: SingleChildScrollView( - child: _getBody(colorTheme, textTheme, pinPutDecoration, config), + child: _getBody(colorTheme, textTheme, pinPutDecoration), ), ); } @@ -171,17 +179,20 @@ class _LockScreenPinState extends State { EnteColorScheme colorTheme, EnteTextTheme textTheme, PinTheme pinPutDecoration, - LockScreenConfig config, ) { return Center( child: Padding( - padding: EdgeInsets.symmetric(horizontal: config.showTitle ? 24.0 : 0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox(height: config.showTitle ? 40 : 0), - config.iconBuilder(context, _pinController), - SizedBox(height: config.showTitle ? 24 : 0), + const SizedBox(height: 40), + Image.asset( + 'assets/lock_screen_icon.png', + width: 129, + height: 95, + ), + const SizedBox(height: 24), Text( widget.isChangingLockScreenSettings ? context.strings.enterAppLockPin @@ -198,51 +209,42 @@ class _LockScreenPinState extends State { defaultPinTheme: pinPutDecoration.copyWith( textStyle: textTheme.h3Bold, decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.getBorderColor(colorTheme), + color: colorTheme.fillMuted, ), ), ), submittedPinTheme: pinPutDecoration.copyWith( textStyle: textTheme.h3Bold.copyWith( - color: config.showTitle ? colorTheme.primary700 : null, + color: colorTheme.primary700, ), decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.showTitle - ? colorTheme.primary700 - : colorTheme.fillBase, + color: colorTheme.primary700, ), ), ), followingPinTheme: pinPutDecoration.copyWith( decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.getBorderColor(colorTheme), + color: colorTheme.fillMuted, ), ), ), focusedPinTheme: pinPutDecoration.copyWith( decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: config.showTitle - ? colorTheme.fillBase - : config.getBorderColor(colorTheme), + color: colorTheme.fillBase, ), ), ), errorPinTheme: pinPutDecoration.copyWith( decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(config.pinBoxBorderRadius), + borderRadius: BorderRadius.circular(15.0), border: Border.all( color: colorTheme.warning400, ), diff --git a/mobile/packages/lock_screen/pubspec.lock b/mobile/packages/lock_screen/pubspec.lock index 11c65010e21..2175439fbbf 100644 --- a/mobile/packages/lock_screen/pubspec.lock +++ b/mobile/packages/lock_screen/pubspec.lock @@ -501,7 +501,7 @@ packages: source: hosted version: "0.1.3" flutter_svg: - dependency: transitive + dependency: "direct main" description: name: flutter_svg sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 diff --git a/mobile/packages/lock_screen/pubspec.yaml b/mobile/packages/lock_screen/pubspec.yaml index 1775f0e8beb..eba6176095b 100644 --- a/mobile/packages/lock_screen/pubspec.yaml +++ b/mobile/packages/lock_screen/pubspec.yaml @@ -26,6 +26,7 @@ dependencies: flutter: sdk: flutter flutter_animate: ^4.1.0 + flutter_svg: ^2.0.10+1 flutter_local_authentication: git: url: https://github.com/eaceto/flutter_local_authentication @@ -49,5 +50,3 @@ dev_dependencies: sdk: flutter flutter: - assets: - - assets/