import 'package:flutter/material.dart'; import 'package:playmaker/Controllers/login_controller.dart'; import 'package:playmaker/pages/RegisterPage.dart'; class BasketTrackHeader extends StatelessWidget { const BasketTrackHeader({super.key}); @override Widget build(BuildContext context) { final screenWidth = MediaQuery.of(context).size.width; // TAMANHOS AUMENTADOS para tablets final logoSize = screenWidth > 600 ? 400.0 : 300.0; // ↑ Aumentado final titleFontSize = screenWidth > 600 ? 48.0 : 36.0; // ↑ Aumentado final subtitleFontSize = screenWidth > 600 ? 22.0 : 18.0; // ↑ Aumentado return Column( children: [ Container( width: logoSize, height: logoSize, child: Image.asset( 'assets/playmaker-logo.png', fit: BoxFit.contain, ), ), SizedBox(height: screenWidth > 600 ? 1.0 : 1.0), Text( 'BasketTrack', style: TextStyle( fontSize: titleFontSize, fontWeight: FontWeight.bold, color: Colors.grey[900], ), ), SizedBox(height: screenWidth > 600 ? 1.0 : 1.0), Text( 'Gere as tuas equipas e estatísticas', style: TextStyle( fontSize: subtitleFontSize, color: Colors.grey[600], fontWeight: FontWeight.w500, // ↑ Adicionado peso da fonte ), textAlign: TextAlign.center, ), ], ); } } class LoginFormFields extends StatelessWidget { final LoginController controller; const LoginFormFields({super.key, required this.controller}); @override Widget build(BuildContext context) { final screenWidth = MediaQuery.of(context).size.width; final verticalPadding = screenWidth > 600 ? 22.0 : 16.0; return Column( children: [ TextField( controller: controller.emailController, decoration: InputDecoration( labelText: 'E-mail', prefixIcon: const Icon(Icons.email_outlined), // O erro agora vem diretamente do controller errorText: controller.emailError, border: OutlineInputBorder(borderRadius: BorderRadius.circular(12)), contentPadding: EdgeInsets.symmetric(vertical: verticalPadding, horizontal: 16), ), keyboardType: TextInputType.emailAddress, ), const SizedBox(height: 20), TextField( controller: controller.passwordController, obscureText: controller.obscurePassword, decoration: InputDecoration( labelText: 'Palavra-passe', prefixIcon: const Icon(Icons.lock_outlined), errorText: controller.passwordError, suffixIcon: IconButton( icon: Icon(controller.obscurePassword ? Icons.visibility_outlined : Icons.visibility_off_outlined), onPressed: controller.togglePasswordVisibility, ), border: OutlineInputBorder(borderRadius: BorderRadius.circular(12)), contentPadding: EdgeInsets.symmetric(vertical: verticalPadding, horizontal: 16), ), ), ], ); } } class LoginButton extends StatelessWidget { final LoginController controller; final VoidCallback onLoginSuccess; const LoginButton({ super.key, required this.controller, required this.onLoginSuccess, }); @override Widget build(BuildContext context) { final screenWidth = MediaQuery.of(context).size.width; // BOTÕES MAIORES final buttonHeight = screenWidth > 600 ? 70.0 : 58.0; // ↑ Aumentado final fontSize = screenWidth > 600 ? 22.0 : 18.0; // ↑ Aumentado return SizedBox( width: double.infinity, height: buttonHeight, child: ElevatedButton( onPressed: controller.isLoading ? null : () async { final success = await controller.login(); if (success) { onLoginSuccess(); } }, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFFE74C3C), foregroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(14), // ↑ Bordas mais arredondadas ), elevation: 3, // ↑ Sombra mais pronunciada ), child: controller.isLoading ? SizedBox( width: 28, // ↑ Aumentado height: 28, // ↑ Aumentado child: CircularProgressIndicator( strokeWidth: 3, // ↑ Aumentado valueColor: AlwaysStoppedAnimation(Colors.white), ), ) : Text( 'Entrar', style: TextStyle( fontSize: fontSize, fontWeight: FontWeight.w700, // ), ), ), ); } } class CreateAccountButton extends StatelessWidget { const CreateAccountButton({super.key}); @override Widget build(BuildContext context) { final screenWidth = MediaQuery.of(context).size.width; final buttonHeight = screenWidth > 600 ? 70.0 : 58.0; final fontSize = screenWidth > 600 ? 22.0 : 18.0; return SizedBox( width: double.infinity, height: buttonHeight, child: OutlinedButton( onPressed: () { // Navega para a página de registo que criaste Navigator.push( context, MaterialPageRoute(builder: (context) => const RegisterPage()), ); }, style: OutlinedButton.styleFrom( foregroundColor: const Color(0xFFE74C3C), side: const BorderSide(color: Color(0xFFE74C3C), width: 2), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(14), ), ), child: Text( 'Criar Conta', style: TextStyle( fontSize: fontSize, fontWeight: FontWeight.w700, ), ), ), ); } }