feat: introduce Apple TV-style color palette and mobile IPTV settings tab

This commit is contained in:
Michael committed 2025-12-11 23:23:42 +01:00
1 parent 426e763742
commit c791631b09
4 files changed
+25 -25

No files matched your search

+2 -2
View File
@@ -41,8 +41,8 @@ class AppColors {
center: Alignment.center,
radius: 1.5,
colors: [
Color(0xFF2A2A2C), // Medium Gray center (visible)
Color(0xFF0A0A0A), // Near Black edge
Color(0xFF151515), // Deep Dark Grey center (barely visible)
Color(0xFF000000), // Pure Black edge
],
stops: [0.0, 1.0],
);
@@ -96,7 +96,7 @@ class _MobileSettingsTabState extends ConsumerState<MobileSettingsTab> {
),
),
Text(
'Version 1.2.4',
'Version 1.2.5',
style: GoogleFonts.inter(
fontSize: 13,
color: AppColors.textSecondary,
+20 -20
View File
@@ -26,40 +26,40 @@ class MobileTheme {
return baseTheme.copyWith(
colorScheme: AppColors.darkColorScheme,
scaffoldBackgroundColor: AppColors.background,
scaffoldBackgroundColor: Colors.black, // Enforce Pure Black
// Typography: Scaled down for mobile
textTheme: TextTheme(
displayLarge: GoogleFonts.inter(fontSize: 32, fontWeight: FontWeight.w700, letterSpacing: -1.0, color: AppColors.textPrimary),
displayMedium: GoogleFonts.inter(fontSize: 28, fontWeight: FontWeight.w700, letterSpacing: -0.5, color: AppColors.textPrimary),
displaySmall: GoogleFonts.inter(fontSize: 24, fontWeight: FontWeight.w600, color: AppColors.textPrimary),
headlineMedium: GoogleFonts.inter(fontSize: 20, fontWeight: FontWeight.w600, color: AppColors.textPrimary),
titleLarge: GoogleFonts.inter(fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.textPrimary),
titleMedium: GoogleFonts.inter(fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.textPrimary),
bodyLarge: GoogleFonts.inter(fontSize: 14, fontWeight: FontWeight.w400, color: AppColors.textSecondary),
bodyMedium: GoogleFonts.inter(fontSize: 12, fontWeight: FontWeight.w400, color: AppColors.textSecondary),
labelLarge: GoogleFonts.inter(fontSize: 12, fontWeight: FontWeight.w600, color: AppColors.textPrimary),
displayLarge: GoogleFonts.inter(fontSize: 32, fontWeight: FontWeight.w700, letterSpacing: -1.0, color: Colors.white),
displayMedium: GoogleFonts.inter(fontSize: 28, fontWeight: FontWeight.w700, letterSpacing: -0.5, color: Colors.white),
displaySmall: GoogleFonts.inter(fontSize: 24, fontWeight: FontWeight.w600, color: Colors.white),
headlineMedium: GoogleFonts.inter(fontSize: 20, fontWeight: FontWeight.w600, color: Colors.white),
titleLarge: GoogleFonts.inter(fontSize: 18, fontWeight: FontWeight.w600, color: Colors.white),
titleMedium: GoogleFonts.inter(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white),
bodyLarge: GoogleFonts.inter(fontSize: 14, fontWeight: FontWeight.w400, color: const Color(0xFF9E9E9E)),
bodyMedium: GoogleFonts.inter(fontSize: 12, fontWeight: FontWeight.w400, color: const Color(0xFF9E9E9E)),
labelLarge: GoogleFonts.inter(fontSize: 12, fontWeight: FontWeight.w600, color: Colors.white),
),
// AppBar: Transparent / Glass
appBarTheme: AppBarTheme(
backgroundColor: AppColors.surface.withOpacity(0.8), // Slight background for mobile
foregroundColor: AppColors.textPrimary,
backgroundColor: Colors.transparent, // Fully transparent for gradient overlay
foregroundColor: Colors.white,
elevation: 0,
centerTitle: true,
scrolledUnderElevation: 0,
titleTextStyle: GoogleFonts.inter(
fontSize: 16,
fontWeight: FontWeight.w600,
color: AppColors.textPrimary,
color: Colors.white,
),
),
// Bottom Navigation Bar
bottomNavigationBarTheme: BottomNavigationBarThemeData(
backgroundColor: AppColors.surface.withOpacity(0.9),
selectedItemColor: AppColors.primary,
unselectedItemColor: AppColors.textSecondary,
backgroundColor: const Color(0xFF1C1C1E).withOpacity(0.95), // Darker surface
selectedItemColor: Colors.white,
unselectedItemColor: const Color(0xFF9E9E9E),
selectedLabelStyle: GoogleFonts.inter(fontSize: 10, fontWeight: FontWeight.w600),
unselectedLabelStyle: GoogleFonts.inter(fontSize: 10, fontWeight: FontWeight.w500),
type: BottomNavigationBarType.fixed,
@@ -69,7 +69,7 @@ class MobileTheme {
// Inputs
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: AppColors.surface,
fillColor: const Color(0xFF1C1C1E), // Dark Grey Surface
contentPadding: const EdgeInsets.symmetric(horizontal: spacing16, vertical: spacing12),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(radiusMd),
@@ -81,15 +81,15 @@ class MobileTheme {
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(radiusMd),
borderSide: const BorderSide(color: AppColors.focusColor, width: 2),
borderSide: const BorderSide(color: Colors.white, width: 1), // White border focus
),
hintStyle: GoogleFonts.inter(color: AppColors.textTertiary, fontSize: 14),
hintStyle: GoogleFonts.inter(color: const Color(0xFF616161), fontSize: 14),
),
// Buttons
filledButtonTheme: FilledButtonThemeData(
style: FilledButton.styleFrom(
backgroundColor: AppColors.focusColor,
backgroundColor: Colors.white, // White buttons
foregroundColor: Colors.black,
elevation: 0,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
+2 -2
View File
@@ -39,9 +39,9 @@ class MobileScaffold extends ConsumerWidget {
child: Container(
height: 50,
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.1),
color: Colors.white.withOpacity(0.15),
borderRadius: BorderRadius.circular(30),
border: Border.all(color: Colors.white.withOpacity(0.05)),
border: Border.all(color: Colors.white.withOpacity(0.15)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,