From 9001a43375d2cfe281a7799b5a66bb5af01728df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6sche?= Date: Thu, 29 Jan 2026 00:16:25 +0100 Subject: [PATCH] Refactor account settings dialog for improved clarity and layout, including updated plan descriptions and new upgrade options --- .../lib/widgets/account_settings_dialog.dart | 276 ++++++++++++++++-- 1 file changed, 246 insertions(+), 30 deletions(-) diff --git a/b0esche_cloud/lib/widgets/account_settings_dialog.dart b/b0esche_cloud/lib/widgets/account_settings_dialog.dart index 372b280..e6288be 100644 --- a/b0esche_cloud/lib/widgets/account_settings_dialog.dart +++ b/b0esche_cloud/lib/widgets/account_settings_dialog.dart @@ -557,7 +557,7 @@ class _AccountSettingsDialogState extends State { ), ), ), - const SizedBox(height: 56), // Space for logout button + const SizedBox(height: 32), // Space for logout button ], ), ), @@ -803,7 +803,7 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(height: 16), Text( - 'Free Plan', + 'Free Trial', style: TextStyle( color: AppTheme.accentColor, fontSize: 24, @@ -812,7 +812,7 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(height: 8), Text( - 'Perfect for getting started with b0esche.cloud', + '14 days free, perfect for getting started', style: TextStyle(color: AppTheme.secondaryText, fontSize: 14), ), const SizedBox(height: 16), @@ -843,25 +843,7 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(width: 8), Text( - 'File Sharing', - style: TextStyle( - color: AppTheme.primaryText, - fontSize: 14, - ), - ), - ], - ), - const SizedBox(height: 8), - Row( - children: [ - Icon( - Icons.check_circle, - color: AppTheme.accentColor, - size: 16, - ), - const SizedBox(width: 8), - Text( - 'Basic Collaboration', + 'Core Features', style: TextStyle( color: AppTheme.primaryText, fontSize: 14, @@ -885,6 +867,177 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(height: 16), + // Basic Plan Card + Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration( + color: AppTheme.primaryBackground.withValues(alpha: 0.3), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: AppTheme.secondaryText.withValues(alpha: 0.2), + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon( + Icons.cloud_queue, + color: AppTheme.accentColor, + size: 24, + ), + const SizedBox(width: 12), + Text( + 'Basic Plan', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: AppTheme.accentColor.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + '€4.99/month', + style: TextStyle( + color: AppTheme.accentColor, + fontSize: 14, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + const SizedBox(height: 16), + Text( + 'Essential features for individuals and small teams', + style: TextStyle(color: AppTheme.secondaryText, fontSize: 14), + ), + const SizedBox(height: 16), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + '10 GB Storage', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + '1 Organization', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + 'File Sharing & Viewing', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + 'Collabora Document Editing', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + 'Share Links', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 12), + Text( + 'Student discount: €3.49/month', + style: TextStyle( + color: AppTheme.secondaryText, + fontSize: 12, + fontStyle: FontStyle.italic, + ), + ), + const SizedBox(height: 16), + Center( + child: SizedBox( + width: 120, + child: ModernGlassButton( + onPressed: () { + // TODO: Implement upgrade functionality + }, + child: const Text('Upgrade'), + ), + ), + ), + ], + ), + ), + const SizedBox(height: 16), + // Pro Plan Card Container( padding: const EdgeInsets.all(20), @@ -937,7 +1090,7 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(height: 16), Text( - 'Advanced features for power users', + 'Advanced features for growing teams and businesses', style: TextStyle(color: AppTheme.secondaryText, fontSize: 14), ), const SizedBox(height: 16), @@ -968,7 +1121,43 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(width: 8), Text( - 'Advanced Sharing', + 'Unlimited Organizations', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + 'Advanced Team Features', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + 'Audit Logs', style: TextStyle( color: AppTheme.primaryText, fontSize: 14, @@ -1054,7 +1243,7 @@ class _AccountSettingsDialogState extends State { borderRadius: BorderRadius.circular(20), ), child: Text( - 'Contact Us', + '€19.99/month', style: TextStyle( color: AppTheme.accentColor, fontSize: 14, @@ -1066,9 +1255,18 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(height: 16), Text( - 'Custom solutions for organizations', + 'Complete solution for large organizations and enterprises', style: TextStyle(color: AppTheme.secondaryText, fontSize: 14), ), + const SizedBox(height: 8), + Text( + '€19.99/month for first 20 users • €9.99/month per additional user', + style: TextStyle( + color: AppTheme.secondaryText, + fontSize: 12, + fontStyle: FontStyle.italic, + ), + ), const SizedBox(height: 16), Row( children: [ @@ -1097,7 +1295,7 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(width: 8), Text( - 'Advanced Security', + 'Unlimited Organizations', style: TextStyle( color: AppTheme.primaryText, fontSize: 14, @@ -1115,7 +1313,25 @@ class _AccountSettingsDialogState extends State { ), const SizedBox(width: 8), Text( - 'Dedicated Support', + 'Premium Support', + style: TextStyle( + color: AppTheme.primaryText, + fontSize: 14, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Icon( + Icons.check_circle, + color: AppTheme.accentColor, + size: 16, + ), + const SizedBox(width: 8), + Text( + 'Custom Integrations', style: TextStyle( color: AppTheme.primaryText, fontSize: 14, @@ -1129,9 +1345,9 @@ class _AccountSettingsDialogState extends State { width: 140, child: ModernGlassButton( onPressed: () { - // TODO: Implement contact functionality + // TODO: Implement enterprise upgrade functionality }, - child: const Text('Contact Sales'), + child: const Text('Get Started'), ), ), ),