Rebrand to iiEasy: naming, logo, l10n, docs, assets
Some checks failed
L10n / l10n (push) Has been cancelled
Some checks failed
L10n / l10n (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -405,12 +405,7 @@ class _AuthenticationPageState extends ConsumerState<AuthenticationPage> {
|
||||
Widget _buildWelcomeSection() {
|
||||
return Column(
|
||||
children: [
|
||||
BrandService.createBrandIcon(
|
||||
size: 48,
|
||||
useGradient: false,
|
||||
addShadow: false,
|
||||
context: context,
|
||||
),
|
||||
BrandService.createLogoImage(size: 48, context: context),
|
||||
const SizedBox(height: Spacing.lg),
|
||||
Text(
|
||||
AppLocalizations.of(context)!.signIn,
|
||||
|
||||
@@ -604,12 +604,7 @@ class _ServerConnectionPageState extends ConsumerState<ServerConnectionPage> {
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
// Brand logo
|
||||
BrandService.createBrandIcon(
|
||||
size: 56,
|
||||
useGradient: false,
|
||||
addShadow: false,
|
||||
context: context,
|
||||
),
|
||||
BrandService.createLogoImage(size: 56, context: context),
|
||||
// Reviewer mode badge
|
||||
if (reviewerMode)
|
||||
Positioned(
|
||||
|
||||
@@ -1,25 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../../../shared/theme/theme_extensions.dart';
|
||||
import '../../../shared/widgets/ii_easy_loading_logo.dart';
|
||||
|
||||
class SplashLauncherPage extends StatelessWidget {
|
||||
const SplashLauncherPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final isDark = context.conduitTheme.isDark;
|
||||
return Scaffold(
|
||||
backgroundColor: context.conduitTheme.surfaceBackground,
|
||||
body: Center(
|
||||
child: SizedBox(
|
||||
width: 28,
|
||||
height: 28,
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2.5,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(
|
||||
context.conduitTheme.loadingIndicator,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
backgroundColor: isDark
|
||||
? const Color(0xFF0A0A0A)
|
||||
: Colors.white,
|
||||
body: IiEasyLoadingLogo(isDark: isDark),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,9 +35,6 @@ import '../../../shared/widgets/model_avatar.dart';
|
||||
/// Profile page (You tab) showing user info and main actions
|
||||
/// Enhanced with production-grade design tokens for better cohesion
|
||||
class ProfilePage extends ConsumerWidget {
|
||||
static const _githubSponsorsUrl = 'https://github.com/sponsors/cogwheel0';
|
||||
static const _buyMeACoffeeUrl = 'https://www.buymeacoffee.com/cogwheel0';
|
||||
|
||||
const ProfilePage({super.key});
|
||||
|
||||
@override
|
||||
@@ -117,113 +114,10 @@ class ProfilePage extends ConsumerWidget {
|
||||
_buildProfileHeader(context, userData, api),
|
||||
const SizedBox(height: Spacing.xl),
|
||||
_buildAccountSection(context, ref),
|
||||
const SizedBox(height: Spacing.xl),
|
||||
_buildSupportSection(context),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildSupportSection(BuildContext context) {
|
||||
final theme = context.conduitTheme;
|
||||
final textTheme =
|
||||
theme.bodySmall?.copyWith(
|
||||
color: theme.sidebarForeground.withValues(alpha: 0.75),
|
||||
) ??
|
||||
TextStyle(color: theme.sidebarForeground.withValues(alpha: 0.75));
|
||||
|
||||
final supportTiles = [
|
||||
_buildSupportOption(
|
||||
context,
|
||||
icon: UiUtils.platformIcon(
|
||||
ios: CupertinoIcons.gift,
|
||||
android: Icons.coffee,
|
||||
),
|
||||
title: AppLocalizations.of(context)!.buyMeACoffeeTitle,
|
||||
subtitle: AppLocalizations.of(context)!.buyMeACoffeeSubtitle,
|
||||
url: _buyMeACoffeeUrl,
|
||||
color: theme.warning,
|
||||
),
|
||||
_buildSupportOption(
|
||||
context,
|
||||
icon: UiUtils.platformIcon(
|
||||
ios: CupertinoIcons.heart,
|
||||
android: Icons.favorite_border,
|
||||
),
|
||||
title: AppLocalizations.of(context)!.githubSponsorsTitle,
|
||||
subtitle: AppLocalizations.of(context)!.githubSponsorsSubtitle,
|
||||
url: _githubSponsorsUrl,
|
||||
color: theme.success,
|
||||
),
|
||||
];
|
||||
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
AppLocalizations.of(context)!.supportConduit,
|
||||
style: theme.headingSmall?.copyWith(color: theme.sidebarForeground),
|
||||
),
|
||||
const SizedBox(height: Spacing.xs),
|
||||
Text(
|
||||
AppLocalizations.of(context)!.supportConduitSubtitle,
|
||||
style: textTheme,
|
||||
),
|
||||
const SizedBox(height: Spacing.sm),
|
||||
for (var i = 0; i < supportTiles.length; i++) ...[
|
||||
supportTiles[i],
|
||||
if (i != supportTiles.length - 1) const SizedBox(height: Spacing.md),
|
||||
],
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildSupportOption(
|
||||
BuildContext context, {
|
||||
required IconData icon,
|
||||
required String title,
|
||||
required String subtitle,
|
||||
required String url,
|
||||
required Color color,
|
||||
}) {
|
||||
final theme = context.conduitTheme;
|
||||
return _ProfileSettingTile(
|
||||
onTap: () => _openExternalLink(context, url),
|
||||
leading: _buildIconBadge(context, icon, color: color),
|
||||
title: title,
|
||||
subtitle: subtitle,
|
||||
trailing: Icon(
|
||||
UiUtils.platformIcon(
|
||||
ios: CupertinoIcons.arrow_up_right,
|
||||
android: Icons.open_in_new,
|
||||
),
|
||||
color: theme.iconSecondary,
|
||||
size: IconSize.small,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _openExternalLink(BuildContext context, String url) async {
|
||||
try {
|
||||
final launched = await launchUrlString(
|
||||
url,
|
||||
mode: LaunchMode.externalApplication,
|
||||
);
|
||||
|
||||
if (!launched && context.mounted) {
|
||||
UiUtils.showMessage(
|
||||
context,
|
||||
AppLocalizations.of(context)!.errorMessage,
|
||||
);
|
||||
}
|
||||
} on PlatformException catch (_) {
|
||||
if (!context.mounted) return;
|
||||
UiUtils.showMessage(context, AppLocalizations.of(context)!.errorMessage);
|
||||
} catch (_) {
|
||||
if (!context.mounted) return;
|
||||
UiUtils.showMessage(context, AppLocalizations.of(context)!.errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildProfileHeader(
|
||||
BuildContext context,
|
||||
dynamic user,
|
||||
@@ -551,8 +445,8 @@ class ProfilePage extends ConsumerWidget {
|
||||
try {
|
||||
final info = await PackageInfo.fromPlatform();
|
||||
// Update dialog with dynamic version each time
|
||||
// GitHub repo URL source of truth
|
||||
const githubUrl = 'https://github.com/cogwheel0/conduit';
|
||||
// Developer / app info URL
|
||||
const githubUrl = 'https://iiEasy.ru';
|
||||
|
||||
if (!context.mounted) return;
|
||||
await showDialog<void>(
|
||||
@@ -606,6 +500,13 @@ class ProfilePage extends ConsumerWidget {
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(height: Spacing.sm),
|
||||
Text(
|
||||
'Based on Conduit',
|
||||
style: ctx.conduitTheme.bodySmall?.copyWith(
|
||||
color: ctx.sidebarTheme.foreground.withValues(alpha: 0.6),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
|
||||
Reference in New Issue
Block a user