Compare commits
	
		
			No commits in common. "873a3b426dad387a74b5fac1f40737785e103624" and "80135a611df7e47e239cf59baef6cef8e8bde815" have entirely different histories.
		
	
	
		
			873a3b426d
			...
			80135a611d
		
	
		
@ -1,41 +0,0 @@
 | 
				
			|||||||
// 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:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// {@template authentication_mock_cache_data_source_impl}
 | 
					 | 
				
			||||||
/// A data source that manages the cache strategy.
 | 
					 | 
				
			||||||
/// This implementation is mocked.
 | 
					 | 
				
			||||||
/// {@endtemplate}
 | 
					 | 
				
			||||||
class AuthenticationMockCacheDataSourceImpl<Data>
 | 
					 | 
				
			||||||
    extends AuthenticationCacheDataSource<Data> {
 | 
					 | 
				
			||||||
  /// {@macro authentication_mock_cache_data_source_impl}
 | 
					 | 
				
			||||||
  AuthenticationMockCacheDataSourceImpl();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  Future<void> cacheAccount(Account account) => Future.value();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Always returns null.
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  Future<Account?> getCachedAccount() async {
 | 
					 | 
				
			||||||
    await Future<void>.delayed(const Duration(milliseconds: 200));
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
return null;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  Future<void> removeCachedAccount() => Future.value();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -15,6 +15,5 @@
 | 
				
			|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export 'authentication_firebase_cache_data_source_impl.dart';
 | 
					export 'authentication_firebase_cache_data_source_impl.dart';
 | 
				
			||||||
export 'authentication_mock_cache_data_source_impl.dart';
 | 
					 | 
				
			||||||
export 'authentication_secure_storage_cache_data_source_impl.dart';
 | 
					export 'authentication_secure_storage_cache_data_source_impl.dart';
 | 
				
			||||||
export 'authentication_session_data_source_impl.dart';
 | 
					export 'authentication_session_data_source_impl.dart';
 | 
				
			||||||
 | 
				
			|||||||
@ -1,23 +0,0 @@
 | 
				
			|||||||
// Copyright (C) 2022 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_bloc/flutter_bloc.dart' as bloc_base;
 | 
					 | 
				
			||||||
import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
abstract class CubitConsumerBase<Cubit extends bloc_base.Cubit<State>,
 | 
					 | 
				
			||||||
    State extends Object> extends CubitConsumerScreen<Cubit, State> {
 | 
					 | 
				
			||||||
  const CubitConsumerBase({super.key});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,31 +0,0 @@
 | 
				
			|||||||
// Copyright (C) 2022 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:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
					 | 
				
			||||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
					 | 
				
			||||||
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
abstract class CubitConsumerCrudBase<Cubit extends bloc_base.Cubit<CrudState>,
 | 
					 | 
				
			||||||
        CrudSuccessState extends CrudSuccess>
 | 
					 | 
				
			||||||
    extends CubitConsumerBase<Cubit, CrudState>
 | 
					 | 
				
			||||||
    with CrudMixin<Cubit, CrudSuccessState> {
 | 
					 | 
				
			||||||
  const CubitConsumerCrudBase({super.key});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
					 | 
				
			||||||
      crudBuilder(context, state);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
// Copyright (C) 2022 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_bloc/flutter_bloc.dart' as bloc_base;
 | 
					 | 
				
			||||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
					 | 
				
			||||||
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
abstract class CubitConsumerCrudItemBase<
 | 
					 | 
				
			||||||
    Cubit extends bloc_base.Cubit<CrudState>,
 | 
					 | 
				
			||||||
    T extends Object?> extends CubitConsumerCrudBase<Cubit, CrudLoaded<T>> {
 | 
					 | 
				
			||||||
  const CubitConsumerCrudItemBase({super.key});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
// Copyright (C) 2022 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_bloc/flutter_bloc.dart' as bloc_base;
 | 
					 | 
				
			||||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
					 | 
				
			||||||
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
abstract class CubitConsumerCrudListBase<
 | 
					 | 
				
			||||||
    Cubit extends bloc_base.Cubit<CrudState>,
 | 
					 | 
				
			||||||
    T extends Object?> extends CubitConsumerCrudBase<Cubit, CrudListLoaded<T>> {
 | 
					 | 
				
			||||||
  const CubitConsumerCrudListBase({super.key});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -26,7 +26,6 @@ abstract class FrameLayoutGridCubitScreenCrudList<
 | 
				
			|||||||
    super.customAppBar,
 | 
					    super.customAppBar,
 | 
				
			||||||
    super.customBottomNavBar,
 | 
					    super.customBottomNavBar,
 | 
				
			||||||
    super.height = 60,
 | 
					    super.height = 60,
 | 
				
			||||||
    super.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,6 @@ abstract class FrameLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
 | 
				
			|||||||
  const FrameLayoutCubitScreen({
 | 
					  const FrameLayoutCubitScreen({
 | 
				
			||||||
    this.customAppBar,
 | 
					    this.customAppBar,
 | 
				
			||||||
    this.customBottomNavBar,
 | 
					    this.customBottomNavBar,
 | 
				
			||||||
    this.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    this.height = 60,
 | 
					    this.height = 60,
 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
@ -35,14 +34,12 @@ abstract class FrameLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
 | 
				
			|||||||
  final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
 | 
					  final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
 | 
				
			||||||
      customBottomNavBar;
 | 
					      customBottomNavBar;
 | 
				
			||||||
  final double height;
 | 
					  final double height;
 | 
				
			||||||
  final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget parent(BuildContext context, Widget child) => FrameLayout(
 | 
					  Widget parent(BuildContext context, Widget child) => FrameLayout(
 | 
				
			||||||
        customAppBar: customAppBar,
 | 
					        customAppBar: customAppBar,
 | 
				
			||||||
        customBottomNavBar: customBottomNavBar,
 | 
					        customBottomNavBar: customBottomNavBar,
 | 
				
			||||||
        height: height,
 | 
					        height: height,
 | 
				
			||||||
        scaffoldFieldsWrapper: scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
        body: child,
 | 
					        body: child,
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -29,7 +29,6 @@ abstract class FrameLayoutCubitScreenCrud<
 | 
				
			|||||||
    super.customBottomNavBar,
 | 
					    super.customBottomNavBar,
 | 
				
			||||||
    super.height,
 | 
					    super.height,
 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
    super.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,6 @@ abstract class FrameLayoutCubitScreenCrudItem<
 | 
				
			|||||||
    super.customAppBar,
 | 
					    super.customAppBar,
 | 
				
			||||||
    super.customBottomNavBar,
 | 
					    super.customBottomNavBar,
 | 
				
			||||||
    super.height = 60,
 | 
					    super.height = 60,
 | 
				
			||||||
    super.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,6 @@ abstract class FrameLayoutCubitScreenCrudList<
 | 
				
			|||||||
    super.customAppBar,
 | 
					    super.customAppBar,
 | 
				
			||||||
    super.customBottomNavBar,
 | 
					    super.customBottomNavBar,
 | 
				
			||||||
    super.height = 60,
 | 
					    super.height = 60,
 | 
				
			||||||
    super.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -15,10 +15,6 @@
 | 
				
			|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export './bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart';
 | 
					export './bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart';
 | 
				
			||||||
export './cubit_consumer_base.dart';
 | 
					 | 
				
			||||||
export './cubit_consumer_crud_base.dart';
 | 
					 | 
				
			||||||
export './cubit_consumer_crud_item_base.dart';
 | 
					 | 
				
			||||||
export './cubit_consumer_crud_list_base.dart';
 | 
					 | 
				
			||||||
export './cubit_screen_base.dart';
 | 
					export './cubit_screen_base.dart';
 | 
				
			||||||
export './cubit_screen_crud_base.dart';
 | 
					export './cubit_screen_crud_base.dart';
 | 
				
			||||||
export './cubit_screen_crud_item_base.dart';
 | 
					export './cubit_screen_crud_item_base.dart';
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,7 @@ dependencies:
 | 
				
			|||||||
  flutter_bloc: ^8.1.2
 | 
					  flutter_bloc: ^8.1.2
 | 
				
			||||||
  flutter_localizations: { sdk: flutter }
 | 
					  flutter_localizations: { sdk: flutter }
 | 
				
			||||||
  http: ^0.13.5
 | 
					  http: ^0.13.5
 | 
				
			||||||
  intl: ^0.18.0
 | 
					  intl: ^0.17.0
 | 
				
			||||||
  path: ^1.8.0
 | 
					  path: ^1.8.0
 | 
				
			||||||
  petitparser: ^5.1.0
 | 
					  petitparser: ^5.1.0
 | 
				
			||||||
  wyatt_architecture:
 | 
					  wyatt_architecture:
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,6 @@ export './buttons/buttons.dart';
 | 
				
			|||||||
export './cards/cards.dart';
 | 
					export './cards/cards.dart';
 | 
				
			||||||
export './component.dart';
 | 
					export './component.dart';
 | 
				
			||||||
export './error/error.dart';
 | 
					export './error/error.dart';
 | 
				
			||||||
export './floating_buttons/floating_buttons.dart';
 | 
					 | 
				
			||||||
export './gradients/gradients.dart';
 | 
					export './gradients/gradients.dart';
 | 
				
			||||||
export './loader/loader.dart';
 | 
					export './loader/loader.dart';
 | 
				
			||||||
export './rich_text_builder/rich_text_builder.dart';
 | 
					export './rich_text_builder/rich_text_builder.dart';
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
// 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/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export './floating_action_button_component.dart';
 | 
					 | 
				
			||||||
@ -28,17 +28,6 @@ abstract class RichTextBuilderComponent extends Component
 | 
				
			|||||||
    this.parser,
 | 
					    this.parser,
 | 
				
			||||||
    this.defaultStyle,
 | 
					    this.defaultStyle,
 | 
				
			||||||
    this.styles,
 | 
					    this.styles,
 | 
				
			||||||
    this.strutStyle,
 | 
					 | 
				
			||||||
    this.textAlign,
 | 
					 | 
				
			||||||
    this.textDirection,
 | 
					 | 
				
			||||||
    this.locale,
 | 
					 | 
				
			||||||
    this.softWrap,
 | 
					 | 
				
			||||||
    this.overflow,
 | 
					 | 
				
			||||||
    this.textScaleFactor,
 | 
					 | 
				
			||||||
    this.maxLines,
 | 
					 | 
				
			||||||
    this.semanticsLabel,
 | 
					 | 
				
			||||||
    this.textWidthBasis,
 | 
					 | 
				
			||||||
    this.selectionColor,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -63,83 +52,4 @@ abstract class RichTextBuilderComponent extends Component
 | 
				
			|||||||
  /// ```
 | 
					  /// ```
 | 
				
			||||||
  /// in "This text `is red`."
 | 
					  /// in "This text `is red`."
 | 
				
			||||||
  final Map<String, TextStyle>? styles;
 | 
					  final Map<String, TextStyle>? styles;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  final StrutStyle? strutStyle;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// How the text should be aligned horizontally.
 | 
					 | 
				
			||||||
  final TextAlign? textAlign;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The directionality of the text.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// This decides how [textAlign] values like [TextAlign.start] and
 | 
					 | 
				
			||||||
  /// [TextAlign.end] are interpreted.
 | 
					 | 
				
			||||||
  final TextDirection? textDirection;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Used to select a font when the same Unicode character can
 | 
					 | 
				
			||||||
  /// be rendered differently, depending on the locale.
 | 
					 | 
				
			||||||
  final Locale? locale;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Whether the text should break at soft line breaks.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If false, the glyphs in the text will be positioned as if there
 | 
					 | 
				
			||||||
  /// was unlimited horizontal space.
 | 
					 | 
				
			||||||
  final bool? softWrap;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// How visual overflow should be handled.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If this is null [TextStyle.overflow] will be used, otherwise the value
 | 
					 | 
				
			||||||
  /// from the nearest [DefaultTextStyle] ancestor will be used.
 | 
					 | 
				
			||||||
  final TextOverflow? overflow;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The number of font pixels for each logical pixel.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// For example, if the text scale factor is 1.5, text will be 50% larger than
 | 
					 | 
				
			||||||
  /// the specified font size.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// The value given to the constructor as textScaleFactor. If null, will
 | 
					 | 
				
			||||||
  /// use the [MediaQueryData.textScaleFactor] obtained from the ambient
 | 
					 | 
				
			||||||
  /// [MediaQuery], or 1.0 if there is no [MediaQuery] in scope.
 | 
					 | 
				
			||||||
  final double? textScaleFactor;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// An optional maximum number of lines for the text to span, wrapping if
 | 
					 | 
				
			||||||
  /// necessary.
 | 
					 | 
				
			||||||
  /// If the text exceeds the given number of lines, it will be truncated
 | 
					 | 
				
			||||||
  /// according to [overflow].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If this is 1, text will not wrap. Otherwise, text will be wrapped at the
 | 
					 | 
				
			||||||
  /// edge of the box.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If this is null, but there is an ambient [DefaultTextStyle] that specifies
 | 
					 | 
				
			||||||
  /// an explicit number for its [DefaultTextStyle.maxLines], then the
 | 
					 | 
				
			||||||
  /// [DefaultTextStyle] value will take precedence. You can use a [RichText]
 | 
					 | 
				
			||||||
  /// widget directly to entirely override the [DefaultTextStyle].
 | 
					 | 
				
			||||||
  final int? maxLines;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// {@template flutter.widgets.Text.semanticsLabel}
 | 
					 | 
				
			||||||
  /// An alternative semantics label for this text.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If present, the semantics of this widget will contain this value instead
 | 
					 | 
				
			||||||
  /// of the actual text. This will overwrite any of the semantics labels
 | 
					 | 
				
			||||||
  /// applied directly to the [TextSpan]s.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// This is useful for replacing abbreviations or shorthands with the full
 | 
					 | 
				
			||||||
  /// text value:
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// ```dart
 | 
					 | 
				
			||||||
  /// const Text(r'$$', semanticsLabel: 'Double dollars')
 | 
					 | 
				
			||||||
  /// ```
 | 
					 | 
				
			||||||
  /// {@endtemplate}
 | 
					 | 
				
			||||||
  final String? semanticsLabel;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final TextWidthBasis? textWidthBasis;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The color to use when painting the selection.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// This is ignored if [SelectionContainer.maybeOf] returns null
 | 
					 | 
				
			||||||
  /// in the [BuildContext] of the [Text] widget.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If null, the ambient [DefaultSelectionStyle] is used (if any); failing
 | 
					 | 
				
			||||||
  /// that, the selection color defaults to [DefaultSelectionStyle.defaultColor]
 | 
					 | 
				
			||||||
  /// (semi-transparent grey).
 | 
					 | 
				
			||||||
  final Color? selectionColor;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -11,34 +11,12 @@ abstract class $RichTextBuilderComponentCWProxy {
 | 
				
			|||||||
  RichTextBuilderComponent parser(RichTextParser? parser);
 | 
					  RichTextBuilderComponent parser(RichTextParser? parser);
 | 
				
			||||||
  RichTextBuilderComponent defaultStyle(TextStyle? defaultStyle);
 | 
					  RichTextBuilderComponent defaultStyle(TextStyle? defaultStyle);
 | 
				
			||||||
  RichTextBuilderComponent styles(Map<String, TextStyle>? styles);
 | 
					  RichTextBuilderComponent styles(Map<String, TextStyle>? styles);
 | 
				
			||||||
  RichTextBuilderComponent strutStyle(StrutStyle? strutStyle);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent textAlign(TextAlign? textAlign);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent textDirection(TextDirection? textDirection);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent locale(Locale? locale);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent softWrap(bool? softWrap);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent overflow(TextOverflow? overflow);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent textScaleFactor(double? textScaleFactor);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent maxLines(int? maxLines);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent semanticsLabel(String? semanticsLabel);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent textWidthBasis(TextWidthBasis? textWidthBasis);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent selectionColor(Color? selectionColor);
 | 
					 | 
				
			||||||
  RichTextBuilderComponent key(Key? key);
 | 
					  RichTextBuilderComponent key(Key? key);
 | 
				
			||||||
  RichTextBuilderComponent call({
 | 
					  RichTextBuilderComponent call({
 | 
				
			||||||
    String? text,
 | 
					    String? text,
 | 
				
			||||||
    RichTextParser? parser,
 | 
					    RichTextParser? parser,
 | 
				
			||||||
    TextStyle? defaultStyle,
 | 
					    TextStyle? defaultStyle,
 | 
				
			||||||
    Map<String, TextStyle>? styles,
 | 
					    Map<String, TextStyle>? styles,
 | 
				
			||||||
    StrutStyle? strutStyle,
 | 
					 | 
				
			||||||
    TextAlign? textAlign,
 | 
					 | 
				
			||||||
    TextDirection? textDirection,
 | 
					 | 
				
			||||||
    Locale? locale,
 | 
					 | 
				
			||||||
    bool? softWrap,
 | 
					 | 
				
			||||||
    TextOverflow? overflow,
 | 
					 | 
				
			||||||
    double? textScaleFactor,
 | 
					 | 
				
			||||||
    int? maxLines,
 | 
					 | 
				
			||||||
    String? semanticsLabel,
 | 
					 | 
				
			||||||
    TextWidthBasis? textWidthBasis,
 | 
					 | 
				
			||||||
    Color? selectionColor,
 | 
					 | 
				
			||||||
    Key? key,
 | 
					    Key? key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,7 @@
 | 
				
			|||||||
import 'package:copy_with_extension/copy_with_extension.dart';
 | 
					import 'package:copy_with_extension/copy_with_extension.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
 | 
					import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
 | 
				
			||||||
 | 
					import 'package:wyatt_ui_components/src/domain/entities/floating_buttons/floating_action_button_component.dart';
 | 
				
			||||||
part 'component_theme_data.g.dart';
 | 
					part 'component_theme_data.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// {@template component_theme_data}
 | 
					/// {@template component_theme_data}
 | 
				
			||||||
@ -41,7 +42,6 @@ class ComponentThemeData {
 | 
				
			|||||||
    PortfolioCardComponent? portfolioCard,
 | 
					    PortfolioCardComponent? portfolioCard,
 | 
				
			||||||
    QuoteCardComponent? quoteCard,
 | 
					    QuoteCardComponent? quoteCard,
 | 
				
			||||||
    SkillCardComponent? skillCard,
 | 
					    SkillCardComponent? skillCard,
 | 
				
			||||||
    PricingCardComponent? pricingCard,
 | 
					 | 
				
			||||||
    FloatingActionButtonComponent? floatingActionButton,
 | 
					    FloatingActionButtonComponent? floatingActionButton,
 | 
				
			||||||
  }) =>
 | 
					  }) =>
 | 
				
			||||||
      ComponentThemeData.raw(
 | 
					      ComponentThemeData.raw(
 | 
				
			||||||
@ -60,7 +60,6 @@ class ComponentThemeData {
 | 
				
			|||||||
        portfolioCard: portfolioCard,
 | 
					        portfolioCard: portfolioCard,
 | 
				
			||||||
        quoteCard: quoteCard,
 | 
					        quoteCard: quoteCard,
 | 
				
			||||||
        skillCard: skillCard,
 | 
					        skillCard: skillCard,
 | 
				
			||||||
        pricingCard: pricingCard,
 | 
					 | 
				
			||||||
        floatingActionButton: floatingActionButton,
 | 
					        floatingActionButton: floatingActionButton,
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -82,7 +81,6 @@ class ComponentThemeData {
 | 
				
			|||||||
        portfolioCard: other.portfolioCard,
 | 
					        portfolioCard: other.portfolioCard,
 | 
				
			||||||
        quoteCard: other.quoteCard,
 | 
					        quoteCard: other.quoteCard,
 | 
				
			||||||
        skillCard: other.skillCard,
 | 
					        skillCard: other.skillCard,
 | 
				
			||||||
        pricingCard: other.pricingCard,
 | 
					 | 
				
			||||||
        floatingActionButton: other.floatingActionButton,
 | 
					        floatingActionButton: other.floatingActionButton,
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -108,7 +106,6 @@ class ComponentThemeData {
 | 
				
			|||||||
    this.portfolioCard,
 | 
					    this.portfolioCard,
 | 
				
			||||||
    this.quoteCard,
 | 
					    this.quoteCard,
 | 
				
			||||||
    this.skillCard,
 | 
					    this.skillCard,
 | 
				
			||||||
    this.pricingCard,
 | 
					 | 
				
			||||||
    this.floatingActionButton,
 | 
					    this.floatingActionButton,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -157,9 +154,6 @@ class ComponentThemeData {
 | 
				
			|||||||
  final SkillCardComponent? skillCard;
 | 
					  final SkillCardComponent? skillCard;
 | 
				
			||||||
  $SkillCardComponentCWProxy get skillCardComponent =>
 | 
					  $SkillCardComponentCWProxy get skillCardComponent =>
 | 
				
			||||||
      _get(skillCard, skillCard?.copyWith);
 | 
					      _get(skillCard, skillCard?.copyWith);
 | 
				
			||||||
  final PricingCardComponent? pricingCard;
 | 
					 | 
				
			||||||
  $PricingCardComponentCWProxy get pricingCardComponent =>
 | 
					 | 
				
			||||||
      _get(pricingCard, pricingCard?.copyWith);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Rich Text
 | 
					  // Rich Text
 | 
				
			||||||
  final RichTextBuilderComponent? richTextBuilder;
 | 
					  final RichTextBuilderComponent? richTextBuilder;
 | 
				
			||||||
 | 
				
			|||||||
@ -41,8 +41,6 @@ abstract class _$ComponentThemeDataCWProxy {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ComponentThemeData skillCard(SkillCardComponent? skillCard);
 | 
					  ComponentThemeData skillCard(SkillCardComponent? skillCard);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ComponentThemeData pricingCard(PricingCardComponent? pricingCard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ComponentThemeData floatingActionButton(
 | 
					  ComponentThemeData floatingActionButton(
 | 
				
			||||||
      FloatingActionButtonComponent? floatingActionButton);
 | 
					      FloatingActionButtonComponent? floatingActionButton);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -68,7 +66,6 @@ abstract class _$ComponentThemeDataCWProxy {
 | 
				
			|||||||
    PortfolioCardComponent? portfolioCard,
 | 
					    PortfolioCardComponent? portfolioCard,
 | 
				
			||||||
    QuoteCardComponent? quoteCard,
 | 
					    QuoteCardComponent? quoteCard,
 | 
				
			||||||
    SkillCardComponent? skillCard,
 | 
					    SkillCardComponent? skillCard,
 | 
				
			||||||
    PricingCardComponent? pricingCard,
 | 
					 | 
				
			||||||
    FloatingActionButtonComponent? floatingActionButton,
 | 
					    FloatingActionButtonComponent? floatingActionButton,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -143,10 +140,6 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
 | 
				
			|||||||
  ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
 | 
					  ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
 | 
				
			||||||
      this(skillCard: skillCard);
 | 
					      this(skillCard: skillCard);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  ComponentThemeData pricingCard(PricingCardComponent? pricingCard) =>
 | 
					 | 
				
			||||||
      this(pricingCard: pricingCard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  ComponentThemeData floatingActionButton(
 | 
					  ComponentThemeData floatingActionButton(
 | 
				
			||||||
          FloatingActionButtonComponent? floatingActionButton) =>
 | 
					          FloatingActionButtonComponent? floatingActionButton) =>
 | 
				
			||||||
@ -176,7 +169,6 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
 | 
				
			|||||||
    Object? portfolioCard = const $CopyWithPlaceholder(),
 | 
					    Object? portfolioCard = const $CopyWithPlaceholder(),
 | 
				
			||||||
    Object? quoteCard = const $CopyWithPlaceholder(),
 | 
					    Object? quoteCard = const $CopyWithPlaceholder(),
 | 
				
			||||||
    Object? skillCard = const $CopyWithPlaceholder(),
 | 
					    Object? skillCard = const $CopyWithPlaceholder(),
 | 
				
			||||||
    Object? pricingCard = const $CopyWithPlaceholder(),
 | 
					 | 
				
			||||||
    Object? floatingActionButton = const $CopyWithPlaceholder(),
 | 
					    Object? floatingActionButton = const $CopyWithPlaceholder(),
 | 
				
			||||||
  }) {
 | 
					  }) {
 | 
				
			||||||
    return ComponentThemeData(
 | 
					    return ComponentThemeData(
 | 
				
			||||||
@ -240,10 +232,6 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
 | 
				
			|||||||
          ? _value.skillCard
 | 
					          ? _value.skillCard
 | 
				
			||||||
          // ignore: cast_nullable_to_non_nullable
 | 
					          // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
          : skillCard as SkillCardComponent?,
 | 
					          : skillCard as SkillCardComponent?,
 | 
				
			||||||
      pricingCard: pricingCard == const $CopyWithPlaceholder()
 | 
					 | 
				
			||||||
          ? _value.pricingCard
 | 
					 | 
				
			||||||
          // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
          : pricingCard as PricingCardComponent?,
 | 
					 | 
				
			||||||
      floatingActionButton: floatingActionButton == const $CopyWithPlaceholder()
 | 
					      floatingActionButton: floatingActionButton == const $CopyWithPlaceholder()
 | 
				
			||||||
          ? _value.floatingActionButton
 | 
					          ? _value.floatingActionButton
 | 
				
			||||||
          // ignore: cast_nullable_to_non_nullable
 | 
					          // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@ version: 0.2.1
 | 
				
			|||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
 | 
					publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
  sdk: ">=2.19.0 <3.0.0"
 | 
					  sdk: ">=2.17.0 <3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies:
 | 
					dependencies:
 | 
				
			||||||
  flutter: { sdk: flutter }
 | 
					  flutter: { sdk: flutter }
 | 
				
			||||||
 | 
				
			|||||||
@ -40,10 +40,10 @@ class Buttons extends DemoPage {
 | 
				
			|||||||
            ),
 | 
					            ),
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          const Gap(20),
 | 
					          const Gap(20),
 | 
				
			||||||
          const Row(
 | 
					          Row(
 | 
				
			||||||
            mainAxisAlignment: MainAxisAlignment.center,
 | 
					            mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
            crossAxisAlignment: CrossAxisAlignment.start,
 | 
					            crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
            children: [
 | 
					            children: const [
 | 
				
			||||||
              FlatButtons(),
 | 
					              FlatButtons(),
 | 
				
			||||||
              Gap(20),
 | 
					              Gap(20),
 | 
				
			||||||
              SymbolButtons(),
 | 
					              SymbolButtons(),
 | 
				
			||||||
 | 
				
			|||||||
@ -30,10 +30,10 @@ class QuoteCards extends StatelessWidget {
 | 
				
			|||||||
            style: Theme.of(context).textTheme.titleMedium,
 | 
					            style: Theme.of(context).textTheme.titleMedium,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          const Gap(20),
 | 
					          const Gap(20),
 | 
				
			||||||
          const Row(
 | 
					          Row(
 | 
				
			||||||
            crossAxisAlignment: CrossAxisAlignment.start,
 | 
					            crossAxisAlignment: CrossAxisAlignment.start,
 | 
				
			||||||
            mainAxisAlignment: MainAxisAlignment.center,
 | 
					            mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
            children: [
 | 
					            children: const [
 | 
				
			||||||
              QuoteCard(
 | 
					              QuoteCard(
 | 
				
			||||||
                quote:
 | 
					                quote:
 | 
				
			||||||
                    TextWrapper('Cupidatat reprehenderit aliqua eiusmod Lorem. '
 | 
					                    TextWrapper('Cupidatat reprehenderit aliqua eiusmod Lorem. '
 | 
				
			||||||
 | 
				
			|||||||
@ -43,9 +43,9 @@ class Loaders extends DemoPage {
 | 
				
			|||||||
            radius: 57,
 | 
					            radius: 57,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          const Gap(20),
 | 
					          const Gap(20),
 | 
				
			||||||
          const Row(
 | 
					          Row(
 | 
				
			||||||
            mainAxisAlignment: MainAxisAlignment.center,
 | 
					            mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
            children: [
 | 
					            children: const [
 | 
				
			||||||
              Loader(
 | 
					              Loader(
 | 
				
			||||||
                stroke: 5,
 | 
					                stroke: 5,
 | 
				
			||||||
              ),
 | 
					              ),
 | 
				
			||||||
 | 
				
			|||||||
@ -43,8 +43,7 @@ class App extends StatelessWidget {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    final brightness =
 | 
					    final brightness = WidgetsBinding.instance.window.platformBrightness;
 | 
				
			||||||
        WidgetsBinding.instance.platformDispatcher.platformBrightness;
 | 
					 | 
				
			||||||
    return BlocProvider(
 | 
					    return BlocProvider(
 | 
				
			||||||
      create: (context) => AppModeCubit(
 | 
					      create: (context) => AppModeCubit(
 | 
				
			||||||
        theme: defaultTheme,
 | 
					        theme: defaultTheme,
 | 
				
			||||||
 | 
				
			|||||||
@ -117,9 +117,9 @@ class PricingCardTitles extends StatelessWidget {
 | 
				
			|||||||
                WidgetSpan(
 | 
					                WidgetSpan(
 | 
				
			||||||
                  child: Transform.translate(
 | 
					                  child: Transform.translate(
 | 
				
			||||||
                    offset: const Offset(5, -15),
 | 
					                    offset: const Offset(5, -15),
 | 
				
			||||||
                    child: Text(
 | 
					                    child: const Text(
 | 
				
			||||||
                      '*  ',
 | 
					                      '*  ',
 | 
				
			||||||
                      style: titleStyle?.copyWith(fontSize: 18),
 | 
					                      style: TextStyle(fontSize: 18),
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
 | 
				
			|||||||
@ -29,17 +29,6 @@ class RichTextBuilder extends RichTextBuilderComponent
 | 
				
			|||||||
    super.parser,
 | 
					    super.parser,
 | 
				
			||||||
    super.defaultStyle,
 | 
					    super.defaultStyle,
 | 
				
			||||||
    super.styles,
 | 
					    super.styles,
 | 
				
			||||||
    super.strutStyle,
 | 
					 | 
				
			||||||
    super.textAlign,
 | 
					 | 
				
			||||||
    super.textDirection,
 | 
					 | 
				
			||||||
    super.locale,
 | 
					 | 
				
			||||||
    super.softWrap,
 | 
					 | 
				
			||||||
    super.overflow,
 | 
					 | 
				
			||||||
    super.textScaleFactor,
 | 
					 | 
				
			||||||
    super.maxLines,
 | 
					 | 
				
			||||||
    super.semanticsLabel,
 | 
					 | 
				
			||||||
    super.textWidthBasis,
 | 
					 | 
				
			||||||
    super.selectionColor,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -102,17 +91,6 @@ class RichTextBuilder extends RichTextBuilderComponent
 | 
				
			|||||||
      TextSpan(children: [root.toInlineSpan(customParser)]),
 | 
					      TextSpan(children: [root.toInlineSpan(customParser)]),
 | 
				
			||||||
      textHeightBehavior:
 | 
					      textHeightBehavior:
 | 
				
			||||||
          const TextHeightBehavior(applyHeightToLastDescent: false),
 | 
					          const TextHeightBehavior(applyHeightToLastDescent: false),
 | 
				
			||||||
      strutStyle: super.strutStyle,
 | 
					 | 
				
			||||||
      textAlign: super.textAlign,
 | 
					 | 
				
			||||||
      textDirection: super.textDirection,
 | 
					 | 
				
			||||||
      locale: super.locale,
 | 
					 | 
				
			||||||
      softWrap: super.softWrap,
 | 
					 | 
				
			||||||
      overflow: super.overflow,
 | 
					 | 
				
			||||||
      textScaleFactor: super.textScaleFactor,
 | 
					 | 
				
			||||||
      maxLines: super.maxLines,
 | 
					 | 
				
			||||||
      semanticsLabel: super.semanticsLabel,
 | 
					 | 
				
			||||||
      textWidthBasis: super.textWidthBasis,
 | 
					 | 
				
			||||||
      selectionColor: super.selectionColor,
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -20,34 +20,6 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
 | 
				
			|||||||
  RichTextBuilder styles(Map<String, TextStyle>? styles) =>
 | 
					  RichTextBuilder styles(Map<String, TextStyle>? styles) =>
 | 
				
			||||||
      this(styles: styles);
 | 
					      this(styles: styles);
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  RichTextBuilder strutStyle(StrutStyle? strutStyle) =>
 | 
					 | 
				
			||||||
      this(strutStyle: strutStyle);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder textAlign(TextAlign? textAlign) => this(textAlign: textAlign);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder textDirection(TextDirection? textDirection) =>
 | 
					 | 
				
			||||||
      this(textDirection: textDirection);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder locale(Locale? locale) => this(locale: locale);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder softWrap(bool? softWrap) => this(softWrap: softWrap);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder overflow(TextOverflow? overflow) => this(overflow: overflow);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder textScaleFactor(double? textScaleFactor) =>
 | 
					 | 
				
			||||||
      this(textScaleFactor: textScaleFactor);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder maxLines(int? maxLines) => this(maxLines: maxLines);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder semanticsLabel(String? semanticsLabel) =>
 | 
					 | 
				
			||||||
      this(semanticsLabel: semanticsLabel);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder textWidthBasis(TextWidthBasis? textWidthBasis) =>
 | 
					 | 
				
			||||||
      this(textWidthBasis: textWidthBasis);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder selectionColor(Color? selectionColor) =>
 | 
					 | 
				
			||||||
      this(selectionColor: selectionColor);
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  RichTextBuilder key(Key? key) => this(key: key);
 | 
					  RichTextBuilder key(Key? key) => this(key: key);
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  RichTextBuilder call({
 | 
					  RichTextBuilder call({
 | 
				
			||||||
@ -55,17 +27,6 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
 | 
				
			|||||||
    RichTextParser? parser,
 | 
					    RichTextParser? parser,
 | 
				
			||||||
    TextStyle? defaultStyle,
 | 
					    TextStyle? defaultStyle,
 | 
				
			||||||
    Map<String, TextStyle>? styles,
 | 
					    Map<String, TextStyle>? styles,
 | 
				
			||||||
    StrutStyle? strutStyle,
 | 
					 | 
				
			||||||
    TextAlign? textAlign,
 | 
					 | 
				
			||||||
    TextDirection? textDirection,
 | 
					 | 
				
			||||||
    Locale? locale,
 | 
					 | 
				
			||||||
    bool? softWrap,
 | 
					 | 
				
			||||||
    TextOverflow? overflow,
 | 
					 | 
				
			||||||
    double? textScaleFactor,
 | 
					 | 
				
			||||||
    int? maxLines,
 | 
					 | 
				
			||||||
    String? semanticsLabel,
 | 
					 | 
				
			||||||
    TextWidthBasis? textWidthBasis,
 | 
					 | 
				
			||||||
    Color? selectionColor,
 | 
					 | 
				
			||||||
    Key? key,
 | 
					    Key? key,
 | 
				
			||||||
  }) =>
 | 
					  }) =>
 | 
				
			||||||
      RichTextBuilder(
 | 
					      RichTextBuilder(
 | 
				
			||||||
@ -73,17 +34,6 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
 | 
				
			|||||||
        parser: parser ?? _value.parser,
 | 
					        parser: parser ?? _value.parser,
 | 
				
			||||||
        defaultStyle: defaultStyle ?? _value.defaultStyle,
 | 
					        defaultStyle: defaultStyle ?? _value.defaultStyle,
 | 
				
			||||||
        styles: styles ?? _value.styles,
 | 
					        styles: styles ?? _value.styles,
 | 
				
			||||||
        strutStyle: strutStyle ?? _value.strutStyle,
 | 
					 | 
				
			||||||
        textAlign: textAlign ?? _value.textAlign,
 | 
					 | 
				
			||||||
        textDirection: textDirection ?? _value.textDirection,
 | 
					 | 
				
			||||||
        locale: locale ?? _value.locale,
 | 
					 | 
				
			||||||
        softWrap: softWrap ?? _value.softWrap,
 | 
					 | 
				
			||||||
        overflow: overflow ?? _value.overflow,
 | 
					 | 
				
			||||||
        textScaleFactor: textScaleFactor ?? _value.textScaleFactor,
 | 
					 | 
				
			||||||
        maxLines: maxLines ?? _value.maxLines,
 | 
					 | 
				
			||||||
        semanticsLabel: semanticsLabel ?? _value.semanticsLabel,
 | 
					 | 
				
			||||||
        textWidthBasis: textWidthBasis ?? _value.textWidthBasis,
 | 
					 | 
				
			||||||
        selectionColor: selectionColor ?? _value.selectionColor,
 | 
					 | 
				
			||||||
        key: key ?? _value.key,
 | 
					        key: key ?? _value.key,
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,7 @@ class CardThemeExtensionImpl extends CardThemeExtension {
 | 
				
			|||||||
      radius: const BorderRadius.all(Radius.circular(12)),
 | 
					      radius: const BorderRadius.all(Radius.circular(12)),
 | 
				
			||||||
      padding: const EdgeInsets.all(25),
 | 
					      padding: const EdgeInsets.all(25),
 | 
				
			||||||
      stroke: 1,
 | 
					      stroke: 1,
 | 
				
			||||||
      backgroundColors: MultiColor.single(WyattColors.light.withOpacity(0.04)),
 | 
					      backgroundColors: WyattColors.grayBgOpacityGradient,
 | 
				
			||||||
      borderColors: WyattColors.grayGradient,
 | 
					      borderColors: WyattColors.grayGradient,
 | 
				
			||||||
      titleStyle: theme.textTheme.titleLarge?.copyWith(
 | 
					      titleStyle: theme.textTheme.titleLarge?.copyWith(
 | 
				
			||||||
        fontSize: 26,
 | 
					        fontSize: 26,
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,6 @@
 | 
				
			|||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
					import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
				
			||||||
import 'package:wyatt_ui_kit/src/components/gradients/gradient_text_style.dart';
 | 
					import 'package:wyatt_ui_kit/src/components/gradients/gradient_text_style.dart';
 | 
				
			||||||
import 'package:wyatt_ui_kit/src/core/design_system/colors.dart';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RichTextBuilderThemeExtensionImpl extends RichTextBuilderThemeExtension {
 | 
					class RichTextBuilderThemeExtensionImpl extends RichTextBuilderThemeExtension {
 | 
				
			||||||
  const RichTextBuilderThemeExtensionImpl({
 | 
					  const RichTextBuilderThemeExtensionImpl({
 | 
				
			||||||
@ -53,131 +52,54 @@ class RichTextBuilderThemeExtensionImpl extends RichTextBuilderThemeExtension {
 | 
				
			|||||||
            fontWeight: FontWeight.w600,
 | 
					            fontWeight: FontWeight.w600,
 | 
				
			||||||
            height: 1.8,
 | 
					            height: 1.8,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          WyattColors.blueGradient,
 | 
					          const MultiColor([
 | 
				
			||||||
        ),
 | 
					            Color(0xFF3C97FB),
 | 
				
			||||||
        'gradient-dark-blue': GradientTextStyle.from(
 | 
					            Color(0xFF436EF4),
 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					          ]),
 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
            height: 1.8,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          WyattColors.darkBlueGradient,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        'gradient-gray': GradientTextStyle.from(
 | 
					 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
            height: 1.8,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          WyattColors.grayGradient,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        'gradient-light-gray': GradientTextStyle.from(
 | 
					 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
            height: 1.8,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          WyattColors.lightGrayGradient,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        'gradient-light': GradientTextStyle.from(
 | 
					 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
            height: 1.8,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          WyattColors.lightGradient,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        'gradient-purple': GradientTextStyle.from(
 | 
					 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
            height: 1.8,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          WyattColors.purpleGradient,
 | 
					 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        'gradient-red': GradientTextStyle.from(
 | 
					        'gradient-red': GradientTextStyle.from(
 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					          theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					            fontWeight: FontWeight.w600,
 | 
				
			||||||
            height: 1.8,
 | 
					            height: 1.8,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          WyattColors.redGradient,
 | 
					          const MultiColor([
 | 
				
			||||||
        ),
 | 
					            Color(0xFFF44464),
 | 
				
			||||||
        'gradient-yellow': GradientTextStyle.from(
 | 
					            Color(0xFFF44464),
 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					          ]),
 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
            height: 1.8,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          WyattColors.yellowGradient,
 | 
					 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        'gradient-green': GradientTextStyle.from(
 | 
					        'gradient-green': GradientTextStyle.from(
 | 
				
			||||||
          theme.textTheme.bodyMedium?.copyWith(
 | 
					          theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
            fontWeight: FontWeight.w600,
 | 
					            fontWeight: FontWeight.w600,
 | 
				
			||||||
            height: 1.8,
 | 
					            height: 1.8,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
          WyattColors.greenGradient,
 | 
					          const MultiColor([
 | 
				
			||||||
 | 
					            Color(0xFF00D16C),
 | 
				
			||||||
 | 
					            Color(0xFF00D16C),
 | 
				
			||||||
 | 
					          ]),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        'blue': theme.textTheme.bodyMedium?.copyWith(
 | 
					        'blue': theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					              fontWeight: FontWeight.w600,
 | 
				
			||||||
              color: WyattColors.blue1,
 | 
					              color: const Color(0xFF3C97FB),
 | 
				
			||||||
              height: 1.8,
 | 
					              height: 1.8,
 | 
				
			||||||
            ) ??
 | 
					            ) ??
 | 
				
			||||||
            const TextStyle(
 | 
					            const TextStyle(
 | 
				
			||||||
              color: WyattColors.blue1,
 | 
					              color: Color(0xFF3C97FB),
 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        'dark-blue': theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
              color: WyattColors.darkBlue1,
 | 
					 | 
				
			||||||
              height: 1.8,
 | 
					 | 
				
			||||||
            ) ??
 | 
					 | 
				
			||||||
            const TextStyle(
 | 
					 | 
				
			||||||
              color: WyattColors.darkBlue1,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        'gray': theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
              color: WyattColors.gray1,
 | 
					 | 
				
			||||||
              height: 1.8,
 | 
					 | 
				
			||||||
            ) ??
 | 
					 | 
				
			||||||
            const TextStyle(
 | 
					 | 
				
			||||||
              color: WyattColors.gray1,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        'green': theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
              color: WyattColors.green1,
 | 
					 | 
				
			||||||
              height: 1.8,
 | 
					 | 
				
			||||||
            ) ??
 | 
					 | 
				
			||||||
            const TextStyle(
 | 
					 | 
				
			||||||
              color: WyattColors.green1,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        'light': theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
              color: WyattColors.light,
 | 
					 | 
				
			||||||
              height: 1.8,
 | 
					 | 
				
			||||||
            ) ??
 | 
					 | 
				
			||||||
            const TextStyle(
 | 
					 | 
				
			||||||
              color: WyattColors.light,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        'light-gray': theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
              color: WyattColors.lightGray1,
 | 
					 | 
				
			||||||
              height: 1.8,
 | 
					 | 
				
			||||||
            ) ??
 | 
					 | 
				
			||||||
            const TextStyle(
 | 
					 | 
				
			||||||
              color: WyattColors.lightGray1,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        'purple': theme.textTheme.bodyMedium?.copyWith(
 | 
					 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					 | 
				
			||||||
              color: WyattColors.purple1,
 | 
					 | 
				
			||||||
              height: 1.8,
 | 
					 | 
				
			||||||
            ) ??
 | 
					 | 
				
			||||||
            const TextStyle(
 | 
					 | 
				
			||||||
              color: WyattColors.purple1,
 | 
					 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
        'red': theme.textTheme.bodyMedium?.copyWith(
 | 
					        'red': theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					              fontWeight: FontWeight.w600,
 | 
				
			||||||
              color: WyattColors.red1,
 | 
					              color: const Color(0xFFF44464),
 | 
				
			||||||
              height: 1.8,
 | 
					              height: 1.8,
 | 
				
			||||||
            ) ??
 | 
					            ) ??
 | 
				
			||||||
            const TextStyle(color: WyattColors.red1),
 | 
					            const TextStyle(
 | 
				
			||||||
        'yellow': theme.textTheme.bodyMedium?.copyWith(
 | 
					              color: Color(0xFFF44464),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        'green': theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
              fontWeight: FontWeight.w600,
 | 
					              fontWeight: FontWeight.w600,
 | 
				
			||||||
              color: WyattColors.yellow1,
 | 
					              color: const Color(0xFF00D16C),
 | 
				
			||||||
              height: 1.8,
 | 
					              height: 1.8,
 | 
				
			||||||
            ) ??
 | 
					            ) ??
 | 
				
			||||||
            const TextStyle(color: WyattColors.yellow1),
 | 
					            const TextStyle(
 | 
				
			||||||
 | 
					              color: Color(0xFF00D16C),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      normalStyle: TextInputStyle(
 | 
					      normalStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(221, 224, 227, 1),
 | 
					        borderColors: const Color.fromRGBO(221, 224, 227, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(55, 65, 81, 1),
 | 
					          color: const Color.fromRGBO(55, 65, 81, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -45,7 +45,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      focusedStyle: TextInputStyle(
 | 
					      focusedStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(60, 125, 251, 1),
 | 
					        borderColors: const Color.fromRGBO(60, 125, 251, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(55, 65, 81, 1),
 | 
					          color: const Color.fromRGBO(55, 65, 81, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -55,7 +55,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      invalidStyle: TextInputStyle(
 | 
					      invalidStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(244, 68, 100, 1),
 | 
					        borderColors: const Color.fromRGBO(244, 68, 100, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(244, 68, 100, 1),
 | 
					          color: const Color.fromRGBO(244, 68, 100, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -65,7 +65,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      disabledStyle: TextInputStyle(
 | 
					      disabledStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(229, 231, 235, 1),
 | 
					        borderColors: const Color.fromRGBO(229, 231, 235, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(156, 163, 175, 1),
 | 
					          color: const Color.fromRGBO(156, 163, 175, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -81,7 +81,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      normalStyle: TextInputStyle(
 | 
					      normalStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(96, 101, 106, 1),
 | 
					        borderColors: const Color.fromRGBO(96, 101, 106, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(204, 204, 204, 1),
 | 
					          color: const Color.fromRGBO(204, 204, 204, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -91,7 +91,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      focusedStyle: TextInputStyle(
 | 
					      focusedStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(60, 125, 251, 1),
 | 
					        borderColors: const Color.fromRGBO(60, 125, 251, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(204, 204, 204, 1),
 | 
					          color: const Color.fromRGBO(204, 204, 204, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -101,7 +101,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      invalidStyle: TextInputStyle(
 | 
					      invalidStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(244, 68, 100, 1),
 | 
					        borderColors: const Color.fromRGBO(244, 68, 100, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(244, 68, 100, 1),
 | 
					          color: const Color.fromRGBO(244, 68, 100, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
@ -111,7 +111,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
 | 
				
			|||||||
      disabledStyle: TextInputStyle(
 | 
					      disabledStyle: TextInputStyle(
 | 
				
			||||||
        radius: BorderRadius.circular(12),
 | 
					        radius: BorderRadius.circular(12),
 | 
				
			||||||
        borderColors: const Color.fromRGBO(96, 101, 106, 1),
 | 
					        borderColors: const Color.fromRGBO(96, 101, 106, 1),
 | 
				
			||||||
        labelStyle: theme.textTheme.labelMedium?.copyWith(
 | 
					        labelStyle: theme.textTheme.labelLarge?.copyWith(
 | 
				
			||||||
          color: const Color.fromRGBO(96, 101, 106, 1),
 | 
					          color: const Color.fromRGBO(96, 101, 106, 1),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
					        inputStyle: theme.textTheme.bodyMedium?.copyWith(
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,5 @@ abstract class WyattComponentThemeData {
 | 
				
			|||||||
    portfolioCard: PortfolioCard(),
 | 
					    portfolioCard: PortfolioCard(),
 | 
				
			||||||
    quoteCard: QuoteCard(),
 | 
					    quoteCard: QuoteCard(),
 | 
				
			||||||
    skillCard: SkillCard(),
 | 
					    skillCard: SkillCard(),
 | 
				
			||||||
    pricingCard: PricingCard(),
 | 
					 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
// 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/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export './scaffold_fields_wrapper.dart';
 | 
					 | 
				
			||||||
@ -1,244 +0,0 @@
 | 
				
			|||||||
// 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/gestures.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ScaffoldFieldsWrapper {
 | 
					 | 
				
			||||||
  ScaffoldFieldsWrapper({
 | 
					 | 
				
			||||||
    this.extendBody,
 | 
					 | 
				
			||||||
    this.extendBodyBehindAppBar,
 | 
					 | 
				
			||||||
    this.floatingActionButtonLocation,
 | 
					 | 
				
			||||||
    this.floatingActionButtonAnimator,
 | 
					 | 
				
			||||||
    this.persistentFooterButtons,
 | 
					 | 
				
			||||||
    this.persistentFooterAlignment,
 | 
					 | 
				
			||||||
    this.drawer,
 | 
					 | 
				
			||||||
    this.onDrawerChanged,
 | 
					 | 
				
			||||||
    this.endDrawer,
 | 
					 | 
				
			||||||
    this.onEndDrawerChanged,
 | 
					 | 
				
			||||||
    this.drawerScrimColor,
 | 
					 | 
				
			||||||
    this.backgroundColor,
 | 
					 | 
				
			||||||
    this.bottomSheet,
 | 
					 | 
				
			||||||
    this.resizeToAvoidBottomInset,
 | 
					 | 
				
			||||||
    this.primary,
 | 
					 | 
				
			||||||
    this.drawerDragStartBehavior,
 | 
					 | 
				
			||||||
    this.drawerEdgeDragWidth,
 | 
					 | 
				
			||||||
    this.drawerEnableOpenDragGesture,
 | 
					 | 
				
			||||||
    this.endDrawerEnableOpenDragGesture,
 | 
					 | 
				
			||||||
    this.restorationId,
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final bool? extendBody;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// If true, and an appBar is specified, then the height of the body is
 | 
					 | 
				
			||||||
  /// extended to include the height of the app bar and the top of the body
 | 
					 | 
				
			||||||
  /// is aligned with the top of the app bar.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// This is useful if the app bar's [AppBar.backgroundColor] is not
 | 
					 | 
				
			||||||
  /// completely opaque.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// This property is false by default. It must not be null.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// See also:
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  ///  * [extendBody], which extends the height of the body to the bottom
 | 
					 | 
				
			||||||
  ///    of the scaffold.
 | 
					 | 
				
			||||||
  final bool? extendBodyBehindAppBar;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Responsible for determining where the floatingActionButton should go.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If null, the [ScaffoldState] will use
 | 
					 | 
				
			||||||
  /// the default location, [FloatingActionButtonLocation.endFloat].
 | 
					 | 
				
			||||||
  final FloatingActionButtonLocation? floatingActionButtonLocation;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Animator to move the floatingActionButton to a
 | 
					 | 
				
			||||||
  /// new [floatingActionButtonLocation].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If null, the [ScaffoldState] will use the default animator,
 | 
					 | 
				
			||||||
  /// [FloatingActionButtonAnimator.scaling].
 | 
					 | 
				
			||||||
  final FloatingActionButtonAnimator? floatingActionButtonAnimator;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// A set of buttons that are displayed at the bottom of the scaffold.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// Typically this is a list of [TextButton] widgets. These buttons are
 | 
					 | 
				
			||||||
  /// persistently visible, even if the body of the scaffold scrolls.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// These widgets will be wrapped in an [OverflowBar].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// The [persistentFooterButtons] are rendered above the
 | 
					 | 
				
			||||||
  /// bottomNavigationBar but below the body.
 | 
					 | 
				
			||||||
  final List<Widget>? persistentFooterButtons;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The alignment of the [persistentFooterButtons] inside the [OverflowBar].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// Defaults to [AlignmentDirectional.centerEnd].
 | 
					 | 
				
			||||||
  final AlignmentDirectional? persistentFooterAlignment;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// A panel displayed to the side of the body, often hidden on mobile
 | 
					 | 
				
			||||||
  /// devices. Swipes in from either left-to-right ([TextDirection.ltr]) or
 | 
					 | 
				
			||||||
  /// right-to-left ([TextDirection.rtl])
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// Typically a [Drawer].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// To open the drawer, use the [ScaffoldState.openDrawer] function.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// To close the drawer, use either [ScaffoldState.closeDrawer],
 | 
					 | 
				
			||||||
  /// [Navigator.pop] or press the escape key on the keyboard.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// {@tool dartpad}
 | 
					 | 
				
			||||||
  /// To disable the drawer edge swipe on mobile, set the
 | 
					 | 
				
			||||||
  /// [Scaffold.drawerEnableOpenDragGesture] to false. Then, use
 | 
					 | 
				
			||||||
  /// [ScaffoldState.openDrawer] to open the drawer and [Navigator.pop] to close
 | 
					 | 
				
			||||||
  /// it.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// ** See code in examples/api/lib/material/scaffold/scaffold.drawer.0.dart **
 | 
					 | 
				
			||||||
  /// {@end-tool}
 | 
					 | 
				
			||||||
  final Widget? drawer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Optional callback that is called when the [Scaffold.drawer]
 | 
					 | 
				
			||||||
  /// is opened or closed.
 | 
					 | 
				
			||||||
  final DrawerCallback? onDrawerChanged;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// A panel displayed to the side of the body, often hidden on mobile
 | 
					 | 
				
			||||||
  /// devices. Swipes in from right-to-left ([TextDirection.ltr]) or
 | 
					 | 
				
			||||||
  /// left-to-right ([TextDirection.rtl])
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// Typically a [Drawer].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// To open the drawer, use the [ScaffoldState.openEndDrawer] function.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// To close the drawer, use either [ScaffoldState.closeEndDrawer],
 | 
					 | 
				
			||||||
  /// [Navigator.pop]
 | 
					 | 
				
			||||||
  /// or press the escape key on the keyboard.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// {@tool dartpad}
 | 
					 | 
				
			||||||
  /// To disable the drawer edge swipe, set the
 | 
					 | 
				
			||||||
  /// [Scaffold.endDrawerEnableOpenDragGesture] to false. Then, use
 | 
					 | 
				
			||||||
  /// [ScaffoldState.openEndDrawer] to open the drawer and [Navigator.pop] to
 | 
					 | 
				
			||||||
  /// close it.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// ** See code in examples/api/lib/material/scaffold/scaffold.end_drawer.0.dart **
 | 
					 | 
				
			||||||
  /// {@end-tool}
 | 
					 | 
				
			||||||
  final Widget? endDrawer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Optional callback that is called when the [Scaffold.endDrawer]
 | 
					 | 
				
			||||||
  /// is opened or closed.
 | 
					 | 
				
			||||||
  final DrawerCallback? onEndDrawerChanged;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The color to use for the scrim that obscures primary content while
 | 
					 | 
				
			||||||
  /// a drawer is open.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If this is null, then [DrawerThemeData.scrimColor] is used. If that
 | 
					 | 
				
			||||||
  /// is also null, then it defaults to [Colors.black54].
 | 
					 | 
				
			||||||
  final Color? drawerScrimColor;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The color of the [Material] widget that underlies the entire Scaffold.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// The theme's [ThemeData.scaffoldBackgroundColor] by default.
 | 
					 | 
				
			||||||
  final Color? backgroundColor;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The persistent bottom sheet to display.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// A persistent bottom sheet shows information that supplements the primary
 | 
					 | 
				
			||||||
  /// content of the app. A persistent bottom sheet remains visible even when
 | 
					 | 
				
			||||||
  /// the user interacts with other parts of the app.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// A closely related widget is a modal bottom sheet, which is an alternative
 | 
					 | 
				
			||||||
  /// to a menu or a dialog and prevents the user from interacting with the rest
 | 
					 | 
				
			||||||
  /// of the app. Modal bottom sheets can be created and displayed with the
 | 
					 | 
				
			||||||
  /// [showModalBottomSheet] function.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// Unlike the persistent bottom sheet displayed by [showBottomSheet]
 | 
					 | 
				
			||||||
  /// this bottom sheet is not a [LocalHistoryEntry] and cannot be dismissed
 | 
					 | 
				
			||||||
  /// with the scaffold appbar's back button.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If a persistent bottom sheet created with [showBottomSheet] is already
 | 
					 | 
				
			||||||
  /// visible, it must be closed before building the Scaffold with a new
 | 
					 | 
				
			||||||
  /// [bottomSheet].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// The value of [bottomSheet] can be any widget at all. It's unlikely to
 | 
					 | 
				
			||||||
  /// actually be a [BottomSheet], which is used by the implementations of
 | 
					 | 
				
			||||||
  /// [showBottomSheet] and [showModalBottomSheet]. Typically it's a widget
 | 
					 | 
				
			||||||
  /// that includes [Material].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// See also:
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  ///  * [showBottomSheet], which displays a bottom sheet as a route that can
 | 
					 | 
				
			||||||
  ///    be dismissed with the scaffold's back button.
 | 
					 | 
				
			||||||
  ///  * [showModalBottomSheet], which displays a modal bottom sheet.
 | 
					 | 
				
			||||||
  ///  * [BottomSheetThemeData], which can be used to customize the default
 | 
					 | 
				
			||||||
  ///    bottom sheet property values when using a [BottomSheet].
 | 
					 | 
				
			||||||
  final Widget? bottomSheet;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// If true the body and the scaffold's floating widgets should size
 | 
					 | 
				
			||||||
  /// themselves to avoid the onscreen keyboard whose height is defined by the
 | 
					 | 
				
			||||||
  /// ambient [MediaQuery]'s [MediaQueryData.viewInsets] `bottom` property.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// For example, if there is an onscreen keyboard displayed above the
 | 
					 | 
				
			||||||
  /// scaffold, the body can be resized to avoid overlapping the keyboard, which
 | 
					 | 
				
			||||||
  /// prevents widgets inside the body from being obscured by the keyboard.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// Defaults to true.
 | 
					 | 
				
			||||||
  final bool? resizeToAvoidBottomInset;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Whether this scaffold is being displayed at the top of the screen.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If true then the height of the appBar will be extended by the height
 | 
					 | 
				
			||||||
  /// of the screen's status bar, i.e. the top padding for [MediaQuery].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// The default value of this property, like the default value of
 | 
					 | 
				
			||||||
  /// [AppBar.primary], is true.
 | 
					 | 
				
			||||||
  final bool? primary;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// {@macro flutter.material.DrawerController.dragStartBehavior}
 | 
					 | 
				
			||||||
  final DragStartBehavior? drawerDragStartBehavior;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The width of the area within which a horizontal swipe will open the
 | 
					 | 
				
			||||||
  /// drawer.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// By default, the value used is 20.0 added to the padding edge of
 | 
					 | 
				
			||||||
  /// `MediaQuery.of(context).padding` that corresponds to the surrounding
 | 
					 | 
				
			||||||
  /// [TextDirection]. This ensures that the drag area for notched devices is
 | 
					 | 
				
			||||||
  /// not obscured. For example, if `TextDirection.of(context)` is set to
 | 
					 | 
				
			||||||
  /// [TextDirection.ltr], 20.0 will be added to
 | 
					 | 
				
			||||||
  /// `MediaQuery.of(context).padding.left`.
 | 
					 | 
				
			||||||
  final double? drawerEdgeDragWidth;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Determines if the [Scaffold.drawer] can be opened with a drag
 | 
					 | 
				
			||||||
  /// gesture on mobile.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// On desktop platforms, the drawer is not draggable.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// By default, the drag gesture is enabled on mobile.
 | 
					 | 
				
			||||||
  final bool? drawerEnableOpenDragGesture;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Determines if the [Scaffold.endDrawer] can be opened with a
 | 
					 | 
				
			||||||
  /// gesture on mobile.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// On desktop platforms, the drawer is not draggable.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// By default, the drag gesture is enabled on mobile.
 | 
					 | 
				
			||||||
  final bool? endDrawerEnableOpenDragGesture;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Restoration ID to save and restore the state of the [Scaffold].
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// If it is non-null, the scaffold will persist and restore whether the
 | 
					 | 
				
			||||||
  /// [drawer] and [endDrawer] was open or closed.
 | 
					 | 
				
			||||||
  ///
 | 
					 | 
				
			||||||
  /// The state of this widget is persisted in a [RestorationBucket] claimed
 | 
					 | 
				
			||||||
  /// from the surrounding [RestorationScope] using the provided restoration ID.
 | 
					 | 
				
			||||||
  final String? restorationId;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -14,10 +14,8 @@
 | 
				
			|||||||
// You should have received a copy of the GNU General Public License
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:flutter/gestures.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
					import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
				
			||||||
import 'package:wyatt_ui_layout/src/core/scaffold_fields_wrapper.dart';
 | 
					 | 
				
			||||||
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
 | 
					import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// {@template bottom_navigation_bar_layout}
 | 
					/// {@template bottom_navigation_bar_layout}
 | 
				
			||||||
@ -29,7 +27,6 @@ class BottomNavigationBarLayout extends StructuralLayout {
 | 
				
			|||||||
  const BottomNavigationBarLayout({
 | 
					  const BottomNavigationBarLayout({
 | 
				
			||||||
    required this.body,
 | 
					    required this.body,
 | 
				
			||||||
    this.custom,
 | 
					    this.custom,
 | 
				
			||||||
    this.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -41,8 +38,6 @@ class BottomNavigationBarLayout extends StructuralLayout {
 | 
				
			|||||||
  final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
 | 
					  final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
 | 
				
			||||||
      custom;
 | 
					      custom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) => Scaffold(
 | 
					  Widget build(BuildContext context) => Scaffold(
 | 
				
			||||||
        body: body,
 | 
					        body: body,
 | 
				
			||||||
@ -50,35 +45,5 @@ class BottomNavigationBarLayout extends StructuralLayout {
 | 
				
			|||||||
              context.components.bottomNavigationBar,
 | 
					              context.components.bottomNavigationBar,
 | 
				
			||||||
            ) ??
 | 
					            ) ??
 | 
				
			||||||
            context.components.bottomNavigationBar,
 | 
					            context.components.bottomNavigationBar,
 | 
				
			||||||
        floatingActionButtonLocation:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.floatingActionButtonLocation,
 | 
					 | 
				
			||||||
        floatingActionButtonAnimator:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.floatingActionButtonAnimator,
 | 
					 | 
				
			||||||
        persistentFooterButtons: scaffoldFieldsWrapper?.persistentFooterButtons,
 | 
					 | 
				
			||||||
        persistentFooterAlignment:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.persistentFooterAlignment ??
 | 
					 | 
				
			||||||
                AlignmentDirectional.centerEnd,
 | 
					 | 
				
			||||||
        drawer: scaffoldFieldsWrapper?.drawer,
 | 
					 | 
				
			||||||
        onDrawerChanged: scaffoldFieldsWrapper?.onDrawerChanged,
 | 
					 | 
				
			||||||
        endDrawer: scaffoldFieldsWrapper?.endDrawer,
 | 
					 | 
				
			||||||
        onEndDrawerChanged: scaffoldFieldsWrapper?.onEndDrawerChanged,
 | 
					 | 
				
			||||||
        bottomSheet: scaffoldFieldsWrapper?.bottomSheet,
 | 
					 | 
				
			||||||
        backgroundColor: scaffoldFieldsWrapper?.backgroundColor,
 | 
					 | 
				
			||||||
        resizeToAvoidBottomInset:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.resizeToAvoidBottomInset,
 | 
					 | 
				
			||||||
        primary: scaffoldFieldsWrapper?.primary ?? true,
 | 
					 | 
				
			||||||
        drawerDragStartBehavior:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.drawerDragStartBehavior ??
 | 
					 | 
				
			||||||
                DragStartBehavior.start,
 | 
					 | 
				
			||||||
        extendBody: scaffoldFieldsWrapper?.extendBody ?? false,
 | 
					 | 
				
			||||||
        extendBodyBehindAppBar:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.extendBodyBehindAppBar ?? false,
 | 
					 | 
				
			||||||
        drawerScrimColor: scaffoldFieldsWrapper?.drawerScrimColor,
 | 
					 | 
				
			||||||
        drawerEdgeDragWidth: scaffoldFieldsWrapper?.drawerEdgeDragWidth,
 | 
					 | 
				
			||||||
        drawerEnableOpenDragGesture:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.drawerEnableOpenDragGesture ?? true,
 | 
					 | 
				
			||||||
        endDrawerEnableOpenDragGesture:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.endDrawerEnableOpenDragGesture ?? true,
 | 
					 | 
				
			||||||
        restorationId: scaffoldFieldsWrapper?.restorationId,
 | 
					 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,10 +14,8 @@
 | 
				
			|||||||
// You should have received a copy of the GNU General Public License
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:flutter/gestures.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
					import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
				
			||||||
import 'package:wyatt_ui_layout/src/core/scaffold_fields_wrapper.dart';
 | 
					 | 
				
			||||||
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
 | 
					import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// {@template frame_layout}
 | 
					/// {@template frame_layout}
 | 
				
			||||||
@ -35,9 +33,7 @@ class FrameLayout extends StructuralLayout {
 | 
				
			|||||||
    required this.body,
 | 
					    required this.body,
 | 
				
			||||||
    this.customAppBar,
 | 
					    this.customAppBar,
 | 
				
			||||||
    this.customBottomNavBar,
 | 
					    this.customBottomNavBar,
 | 
				
			||||||
    this.customFloatingActionButton,
 | 
					 | 
				
			||||||
    this.height = 60,
 | 
					    this.height = 60,
 | 
				
			||||||
    this.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -48,19 +44,12 @@ class FrameLayout extends StructuralLayout {
 | 
				
			|||||||
  final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
 | 
					  final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
 | 
				
			||||||
      customBottomNavBar;
 | 
					      customBottomNavBar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// An optional function that can be used to customize the
 | 
					 | 
				
			||||||
  /// floating action button
 | 
					 | 
				
			||||||
  final FloatingActionButtonComponent? Function(FloatingActionButtonComponent?)?
 | 
					 | 
				
			||||||
      customFloatingActionButton;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The main content of the layout.
 | 
					  /// The main content of the layout.
 | 
				
			||||||
  final Widget body;
 | 
					  final Widget body;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// The height of the top app bar.
 | 
					  /// The height of the top app bar.
 | 
				
			||||||
  final double height;
 | 
					  final double height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) => Scaffold(
 | 
					  Widget build(BuildContext context) => Scaffold(
 | 
				
			||||||
        appBar: (customAppBar?.call(context.components.topAppBar) != null ||
 | 
					        appBar: (customAppBar?.call(context.components.topAppBar) != null ||
 | 
				
			||||||
@ -71,42 +60,9 @@ class FrameLayout extends StructuralLayout {
 | 
				
			|||||||
                    context.components.topAppBar!,
 | 
					                    context.components.topAppBar!,
 | 
				
			||||||
              )
 | 
					              )
 | 
				
			||||||
            : null,
 | 
					            : null,
 | 
				
			||||||
        floatingActionButton: customFloatingActionButton
 | 
					        body: body,
 | 
				
			||||||
                ?.call(context.components.floatingActionButton) ??
 | 
					 | 
				
			||||||
            context.components.floatingActionButton,
 | 
					 | 
				
			||||||
        bottomNavigationBar:
 | 
					        bottomNavigationBar:
 | 
				
			||||||
            customBottomNavBar?.call(context.components.bottomNavigationBar) ??
 | 
					            customBottomNavBar?.call(context.components.bottomNavigationBar) ??
 | 
				
			||||||
                context.components.bottomNavigationBar,
 | 
					                context.components.bottomNavigationBar,
 | 
				
			||||||
        body: body,
 | 
					 | 
				
			||||||
        floatingActionButtonLocation:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.floatingActionButtonLocation,
 | 
					 | 
				
			||||||
        floatingActionButtonAnimator:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.floatingActionButtonAnimator,
 | 
					 | 
				
			||||||
        persistentFooterButtons: scaffoldFieldsWrapper?.persistentFooterButtons,
 | 
					 | 
				
			||||||
        persistentFooterAlignment:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.persistentFooterAlignment ??
 | 
					 | 
				
			||||||
                AlignmentDirectional.centerEnd,
 | 
					 | 
				
			||||||
        drawer: scaffoldFieldsWrapper?.drawer,
 | 
					 | 
				
			||||||
        onDrawerChanged: scaffoldFieldsWrapper?.onDrawerChanged,
 | 
					 | 
				
			||||||
        endDrawer: scaffoldFieldsWrapper?.endDrawer,
 | 
					 | 
				
			||||||
        onEndDrawerChanged: scaffoldFieldsWrapper?.onEndDrawerChanged,
 | 
					 | 
				
			||||||
        bottomSheet: scaffoldFieldsWrapper?.bottomSheet,
 | 
					 | 
				
			||||||
        backgroundColor: scaffoldFieldsWrapper?.backgroundColor,
 | 
					 | 
				
			||||||
        resizeToAvoidBottomInset:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.resizeToAvoidBottomInset,
 | 
					 | 
				
			||||||
        primary: scaffoldFieldsWrapper?.primary ?? true,
 | 
					 | 
				
			||||||
        drawerDragStartBehavior:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.drawerDragStartBehavior ??
 | 
					 | 
				
			||||||
                DragStartBehavior.start,
 | 
					 | 
				
			||||||
        extendBody: scaffoldFieldsWrapper?.extendBody ?? false,
 | 
					 | 
				
			||||||
        extendBodyBehindAppBar:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.extendBodyBehindAppBar ?? false,
 | 
					 | 
				
			||||||
        drawerScrimColor: scaffoldFieldsWrapper?.drawerScrimColor,
 | 
					 | 
				
			||||||
        drawerEdgeDragWidth: scaffoldFieldsWrapper?.drawerEdgeDragWidth,
 | 
					 | 
				
			||||||
        drawerEnableOpenDragGesture:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.drawerEnableOpenDragGesture ?? true,
 | 
					 | 
				
			||||||
        endDrawerEnableOpenDragGesture:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.endDrawerEnableOpenDragGesture ?? true,
 | 
					 | 
				
			||||||
        restorationId: scaffoldFieldsWrapper?.restorationId,
 | 
					 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,10 +14,8 @@
 | 
				
			|||||||
// You should have received a copy of the GNU General Public License
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:flutter/gestures.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
					import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
				
			||||||
import 'package:wyatt_ui_layout/src/core/scaffold_fields_wrapper.dart';
 | 
					 | 
				
			||||||
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
 | 
					import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// {@template top_bar_layout}
 | 
					/// {@template top_bar_layout}
 | 
				
			||||||
@ -39,7 +37,6 @@ abstract class TopBarLayout<T extends TopBarComponent>
 | 
				
			|||||||
    required this.body,
 | 
					    required this.body,
 | 
				
			||||||
    this.custom,
 | 
					    this.custom,
 | 
				
			||||||
    this.height = 60,
 | 
					    this.height = 60,
 | 
				
			||||||
    this.scaffoldFieldsWrapper,
 | 
					 | 
				
			||||||
    super.key,
 | 
					    super.key,
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -57,8 +54,6 @@ abstract class TopBarLayout<T extends TopBarComponent>
 | 
				
			|||||||
  /// Returns the top bar component for the given [BuildContext].
 | 
					  /// Returns the top bar component for the given [BuildContext].
 | 
				
			||||||
  T? child(BuildContext context);
 | 
					  T? child(BuildContext context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) => Scaffold(
 | 
					  Widget build(BuildContext context) => Scaffold(
 | 
				
			||||||
        appBar: (custom?.call(child(context)) != null || child(context) != null)
 | 
					        appBar: (custom?.call(child(context)) != null || child(context) != null)
 | 
				
			||||||
@ -68,36 +63,6 @@ abstract class TopBarLayout<T extends TopBarComponent>
 | 
				
			|||||||
              )
 | 
					              )
 | 
				
			||||||
            : null,
 | 
					            : null,
 | 
				
			||||||
        body: body,
 | 
					        body: body,
 | 
				
			||||||
        floatingActionButtonLocation:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.floatingActionButtonLocation,
 | 
					 | 
				
			||||||
        floatingActionButtonAnimator:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.floatingActionButtonAnimator,
 | 
					 | 
				
			||||||
        persistentFooterButtons: scaffoldFieldsWrapper?.persistentFooterButtons,
 | 
					 | 
				
			||||||
        persistentFooterAlignment:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.persistentFooterAlignment ??
 | 
					 | 
				
			||||||
                AlignmentDirectional.centerEnd,
 | 
					 | 
				
			||||||
        drawer: scaffoldFieldsWrapper?.drawer,
 | 
					 | 
				
			||||||
        onDrawerChanged: scaffoldFieldsWrapper?.onDrawerChanged,
 | 
					 | 
				
			||||||
        endDrawer: scaffoldFieldsWrapper?.endDrawer,
 | 
					 | 
				
			||||||
        onEndDrawerChanged: scaffoldFieldsWrapper?.onEndDrawerChanged,
 | 
					 | 
				
			||||||
        bottomSheet: scaffoldFieldsWrapper?.bottomSheet,
 | 
					 | 
				
			||||||
        backgroundColor: scaffoldFieldsWrapper?.backgroundColor,
 | 
					 | 
				
			||||||
        resizeToAvoidBottomInset:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.resizeToAvoidBottomInset,
 | 
					 | 
				
			||||||
        primary: scaffoldFieldsWrapper?.primary ?? true,
 | 
					 | 
				
			||||||
        drawerDragStartBehavior:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.drawerDragStartBehavior ??
 | 
					 | 
				
			||||||
                DragStartBehavior.start,
 | 
					 | 
				
			||||||
        extendBody: scaffoldFieldsWrapper?.extendBody ?? false,
 | 
					 | 
				
			||||||
        extendBodyBehindAppBar:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.extendBodyBehindAppBar ?? false,
 | 
					 | 
				
			||||||
        drawerScrimColor: scaffoldFieldsWrapper?.drawerScrimColor,
 | 
					 | 
				
			||||||
        drawerEdgeDragWidth: scaffoldFieldsWrapper?.drawerEdgeDragWidth,
 | 
					 | 
				
			||||||
        drawerEnableOpenDragGesture:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.drawerEnableOpenDragGesture ?? true,
 | 
					 | 
				
			||||||
        endDrawerEnableOpenDragGesture:
 | 
					 | 
				
			||||||
            scaffoldFieldsWrapper?.endDrawerEnableOpenDragGesture ?? true,
 | 
					 | 
				
			||||||
        restorationId: scaffoldFieldsWrapper?.restorationId,
 | 
					 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -14,5 +14,4 @@
 | 
				
			|||||||
// You should have received a copy of the GNU General Public License
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
					// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export './core/core.dart';
 | 
					export 'presentation/presentation.dart';
 | 
				
			||||||
export './presentation/presentation.dart';
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user