import 'package:flutter/material.dart';
import 'package:bahla_front/app/app.bottomsheets.dart';
import 'package:bahla_front/app/app.dialogs.dart';
import 'package:bahla_front/app/app.locator.dart';
import 'package:bahla_front/app/app.router.dart';
import 'package:stacked_services/stacked_services.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await setupLocator();
  setupDialogUi();
  setupBottomSheetUi();
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: Routes.startupView,
      onGenerateRoute: StackedRouter().onGenerateRoute,
      navigatorKey: StackedService.navigatorKey,
      navigatorObservers: [
        StackedService.routeObserver,
      ],
      theme: ThemeData(
          useMaterial3: true,
          colorScheme: ColorScheme.fromSeed(
            seedColor: Colors.blueAccent,
            brightness: Brightness.dark,
            primary: const Color.fromARGB(255, 64, 175, 255),
            secondary: const Color.fromARGB(255, 255, 139, 6),
            background: const Color.fromARGB(255, 15, 14, 23),
            onPrimary: Colors.white,
            onSecondary: Colors.white,
            onBackground: Colors.white,
            onSurface: Colors.black,
            onPrimaryContainer: Colors.black,
            onSecondaryContainer: Colors.black,
            onTertiaryContainer: Colors.black,
            surfaceBright: Colors.black,
            tertiary: Colors.black,
          ),
          iconTheme: const IconThemeData(
            color: Colors.white,
          ),
          textTheme: TextTheme(
            displayLarge: GoogleFonts.firaSans(
                fontSize: 96,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            displayMedium: GoogleFonts.firaSans(
                fontSize: 60,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            displaySmall: GoogleFonts.firaSans(
                fontSize: 48,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            headlineLarge: GoogleFonts.firaSans(
                fontSize: 40,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            headlineMedium: GoogleFonts.firaSans(
                fontSize: 34,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            headlineSmall: GoogleFonts.firaSans(
                fontSize: 24,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            titleLarge: GoogleFonts.firaSans(
                fontSize: 20,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            titleMedium: GoogleFonts.firaSans(
                fontSize: 16,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            titleSmall: GoogleFonts.firaSans(
                fontSize: 14,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            bodyLarge: GoogleFonts.firaSans(
                fontSize: 20,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            bodyMedium: GoogleFonts.firaSans(
                fontSize: 16,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            bodySmall: GoogleFonts.firaSans(
                fontSize: 14,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            labelLarge: GoogleFonts.firaSans(
                fontSize: 14,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            labelMedium: GoogleFonts.firaSans(
                fontSize: 12,
                fontWeight: FontWeight.normal,
                color: Colors.white),
            labelSmall: GoogleFonts.firaSans(
                fontSize: 10,
                fontWeight: FontWeight.normal,
                color: Colors.white),
          )),
      localizationsDelegates: const [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en'),
        Locale('fr'),
        Locale('ch'),
      ],
    );
  }
}
