// Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
import 'package:wyatt_ui_components_example/component_theme.dart';

void main() {
  runApp(const MyApp());
}

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) => ComponentTheme(
      componentThemeWidget: AppThemeComponent.components,
      child: MaterialApp(
        title: 'Wyatt Ui Components Example',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: const Scaffold(
          body: Home(),
        ),
      ),
    );
}

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

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: PreferredSize(
          preferredSize: const Size.fromHeight(60),
          child: context.components.appBar?.copyWith.title('Example title') ??
              const SizedBox.shrink(),
        ),
        body: Column(
          children: [
            Expanded(
              child: context.components.errorWidget
                      ?.copyWith(error: 'Example erreur') ??
                  const SizedBox.shrink(),
            ),
            const SizedBox(
              height: 10,
            ),
            Expanded(
              child: context.components.loadingWidget
                      ?.copyWith(color: Colors.green) ??
                  const SizedBox.shrink(),
            ),
          ],
        ),
        bottomNavigationBar: context.components.bottomNavigationBar,
      );
}
